From db332553c96152302223e6c8c5df61832fab7a08 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Wed, 25 Sep 2024 21:54:28 +0200 Subject: [PATCH 001/550] Rename "Data export" menu item (#32099) --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 625f53f2e5..9c3bab6baa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1693,7 +1693,7 @@ en: delete: Account deletion development: Development edit_profile: Edit profile - export: Data export + export: Export featured_tags: Featured hashtags import: Import import_and_export: Import and export From 886baa5e3543a983b82a9efd15b9e41f7f38227d Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 26 Sep 2024 09:40:59 +0200 Subject: [PATCH 002/550] Fix typo causing incorrect error being raised in blurhash processing failure (#32104) --- lib/paperclip/blurhash_transcoder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/paperclip/blurhash_transcoder.rb b/lib/paperclip/blurhash_transcoder.rb index 150275bc9e..b4ff4a12a0 100644 --- a/lib/paperclip/blurhash_transcoder.rb +++ b/lib/paperclip/blurhash_transcoder.rb @@ -7,7 +7,7 @@ module Paperclip width, height, data = blurhash_params # Guard against segfaults if data has unexpected size - raise RangeError("Invalid image data size (expected #{width * height * 3}, got #{data.size})") if data.size != width * height * 3 # TODO: should probably be another exception type + raise RangeError, "Invalid image data size (expected #{width * height * 3}, got #{data.size})" if data.size != width * height * 3 # TODO: should probably be another exception type attachment.instance.blurhash = Blurhash.encode(width, height, data, **(options[:blurhash] || {})) From 278a075b22204b72e7acb43266388c81aedfc402 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 10:47:38 +0200 Subject: [PATCH 003/550] New Crowdin Translations (automated) (#32103) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/be.json | 1 - app/javascript/mastodon/locales/bg.json | 1 - app/javascript/mastodon/locales/ca.json | 2 +- app/javascript/mastodon/locales/cs.json | 1 - app/javascript/mastodon/locales/cy.json | 4 ++- app/javascript/mastodon/locales/da.json | 2 +- app/javascript/mastodon/locales/de.json | 2 +- app/javascript/mastodon/locales/el.json | 1 - app/javascript/mastodon/locales/en-GB.json | 1 - app/javascript/mastodon/locales/eo.json | 2 +- app/javascript/mastodon/locales/es-AR.json | 2 +- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/et.json | 1 - app/javascript/mastodon/locales/eu.json | 1 - app/javascript/mastodon/locales/fa.json | 1 - app/javascript/mastodon/locales/fi.json | 1 - app/javascript/mastodon/locales/fil.json | 1 - app/javascript/mastodon/locales/fo.json | 2 +- app/javascript/mastodon/locales/fr-CA.json | 1 - app/javascript/mastodon/locales/fr.json | 1 - app/javascript/mastodon/locales/fy.json | 1 - app/javascript/mastodon/locales/ga.json | 1 - app/javascript/mastodon/locales/gd.json | 1 - app/javascript/mastodon/locales/gl.json | 4 +-- app/javascript/mastodon/locales/he.json | 1 - app/javascript/mastodon/locales/hu.json | 1 - app/javascript/mastodon/locales/ia.json | 1 - app/javascript/mastodon/locales/id.json | 1 - app/javascript/mastodon/locales/ie.json | 1 - app/javascript/mastodon/locales/is.json | 1 - app/javascript/mastodon/locales/it.json | 1 - app/javascript/mastodon/locales/ja.json | 1 - app/javascript/mastodon/locales/ko.json | 1 - app/javascript/mastodon/locales/la.json | 1 - app/javascript/mastodon/locales/lad.json | 1 - app/javascript/mastodon/locales/lt.json | 1 - app/javascript/mastodon/locales/lv.json | 1 - app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/nn.json | 1 - app/javascript/mastodon/locales/no.json | 1 - app/javascript/mastodon/locales/pl.json | 2 +- app/javascript/mastodon/locales/pt-BR.json | 1 - app/javascript/mastodon/locales/pt-PT.json | 1 - app/javascript/mastodon/locales/ru.json | 1 - app/javascript/mastodon/locales/sk.json | 5 +++- app/javascript/mastodon/locales/sl.json | 1 - app/javascript/mastodon/locales/sq.json | 4 ++- app/javascript/mastodon/locales/sr-Latn.json | 1 - app/javascript/mastodon/locales/sr.json | 1 - app/javascript/mastodon/locales/sv.json | 1 - app/javascript/mastodon/locales/th.json | 1 - app/javascript/mastodon/locales/tok.json | 1 - app/javascript/mastodon/locales/tr.json | 2 +- app/javascript/mastodon/locales/uk.json | 1 - app/javascript/mastodon/locales/vi.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 1 - app/javascript/mastodon/locales/zh-HK.json | 1 - app/javascript/mastodon/locales/zh-TW.json | 2 +- config/locales/activerecord.sk.yml | 5 ++++ config/locales/an.yml | 1 - config/locales/ar.yml | 1 - config/locales/ast.yml | 1 - config/locales/be.yml | 1 - config/locales/bg.yml | 1 - config/locales/ca.yml | 2 +- config/locales/ckb.yml | 1 - config/locales/co.yml | 1 - config/locales/cs.yml | 1 - config/locales/cy.yml | 1 - config/locales/da.yml | 2 +- config/locales/de.yml | 1 - config/locales/doorkeeper.cy.yml | 1 + config/locales/doorkeeper.sq.yml | 1 + config/locales/el.yml | 1 - config/locales/en-GB.yml | 1 - config/locales/eo.yml | 29 +++++++++++++++++++- config/locales/es-AR.yml | 1 - config/locales/es-MX.yml | 1 - config/locales/es.yml | 1 - config/locales/et.yml | 1 - config/locales/eu.yml | 1 - config/locales/fa.yml | 1 - config/locales/fi.yml | 1 - config/locales/fo.yml | 1 - config/locales/fr-CA.yml | 1 - config/locales/fr.yml | 1 - config/locales/fy.yml | 1 - config/locales/ga.yml | 1 - config/locales/gd.yml | 1 - config/locales/gl.yml | 2 +- config/locales/he.yml | 1 - config/locales/hr.yml | 1 - config/locales/hu.yml | 1 - config/locales/hy.yml | 1 - config/locales/ia.yml | 1 - config/locales/id.yml | 1 - config/locales/ie.yml | 1 - config/locales/io.yml | 1 - config/locales/is.yml | 1 - config/locales/it.yml | 1 - config/locales/ja.yml | 1 - config/locales/ka.yml | 1 - config/locales/kab.yml | 1 - config/locales/kk.yml | 1 - config/locales/ko.yml | 2 +- config/locales/ku.yml | 1 - config/locales/lad.yml | 1 - config/locales/lt.yml | 1 - config/locales/lv.yml | 9 +++++- config/locales/ms.yml | 1 - config/locales/my.yml | 1 - config/locales/nn.yml | 1 - config/locales/no.yml | 1 - config/locales/oc.yml | 1 - config/locales/pl.yml | 1 - config/locales/pt-BR.yml | 1 - config/locales/pt-PT.yml | 1 - config/locales/ru.yml | 1 - config/locales/sc.yml | 1 - config/locales/sco.yml | 1 - config/locales/si.yml | 1 - config/locales/simple_form.es-MX.yml | 8 +++--- config/locales/simple_form.lv.yml | 1 + config/locales/simple_form.sk.yml | 2 +- config/locales/sk.yml | 7 +++-- config/locales/sl.yml | 1 - config/locales/sq.yml | 3 +- config/locales/sr-Latn.yml | 1 - config/locales/sr.yml | 1 - config/locales/sv.yml | 2 +- config/locales/th.yml | 1 - config/locales/tr.yml | 1 - config/locales/uk.yml | 1 - config/locales/vi.yml | 2 +- config/locales/zh-CN.yml | 1 - config/locales/zh-HK.yml | 1 - 138 files changed, 86 insertions(+), 140 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 17b288723b..18830708db 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -220,7 +220,6 @@ "domain_block_modal.they_cant_follow": "لا أحد من هذا الخادم يمكنه متابعتك.", "domain_block_modal.they_wont_know": "لن يَعرف أنه قد تم حظره.", "domain_block_modal.title": "أتريد حظر النطاق؟", - "domain_block_modal.you_will_lose_followers": "سيتم إزالة جميع متابعيك من هذا الخادم.", "domain_block_modal.you_wont_see_posts": "لن ترى منشورات أو إشعارات من المستخدمين على هذا الخادم.", "domain_pill.activitypub_lets_connect": "يتيح لك التواصل والتفاعل مع الناس ليس فقط على ماستدون، ولكن عبر تطبيقات اجتماعية مختلفة أيضا.", "domain_pill.activitypub_like_language": "إنّ ActivityPub مثل لغة ماستدون التي يتحدث بها مع شبكات اجتماعية أخرى.", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 098c7a7e9d..797d8cc22e 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -219,7 +219,6 @@ "domain_block_modal.they_cant_follow": "Ніхто з гэтага сервера не зможа падпісацца на вас.", "domain_block_modal.they_wont_know": "Карыстальнік не будзе ведаць пра блакіроўку.", "domain_block_modal.title": "Заблакіраваць дамен?", - "domain_block_modal.you_will_lose_followers": "Усе падпісчыкі з гэтага сервера будуць выдаленыя.", "domain_block_modal.you_wont_see_posts": "Вы не ўбачыце допісаў і апавяшчэнняў ад карыстальнікаў з гэтага сервера.", "domain_pill.activitypub_lets_connect": "Ён дазваляе вам узаемадзейнічаць не толькі з карыстальнікамі Mastodon, але і розных іншых сацыяльных платформ.", "domain_pill.activitypub_like_language": "ActivityPub — гэта мова, на якой Mastodon размаўляе з іншымі сацыяльнымі сеткамі.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index c8f8474e91..bf0b656f93 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -220,7 +220,6 @@ "domain_block_modal.they_cant_follow": "Никого от този сървър не може да ви последва.", "domain_block_modal.they_wont_know": "Няма да узнаят, че са били блокирани.", "domain_block_modal.title": "Блокирате ли домейн?", - "domain_block_modal.you_will_lose_followers": "Всичките ви последователи от този сървър ще се премахнат.", "domain_block_modal.you_wont_see_posts": "Няма да виждате публикации или известия от потребителите на този сървър.", "domain_pill.activitypub_lets_connect": "Позволява ви да се свързвате и взаимодействате с хора не само в Mastodon, но и през различни социални приложения.", "domain_pill.activitypub_like_language": "ActivityPub е като език на Mastodon, говорещ с други социални мрежи.", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 710ac594f5..2c6dcba469 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Ningú d'aquest servidor us pot seguir.", "domain_block_modal.they_wont_know": "No sabran que són blocats.", "domain_block_modal.title": "Bloquem el domini?", - "domain_block_modal.you_will_lose_followers": "S'eliminaran tots els vostres seguidors d'aquest servidor.", + "domain_block_modal.you_will_lose_num_followers": "Perdreu {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidors}} i {followingCount, plural, one {{followingCountDisplay} persona} other {{followingCountDisplay} persones}} que seguiu.", "domain_block_modal.you_wont_see_posts": "No veureu ni les publicacions ni les notificacions dels usuaris d'aquest servidor.", "domain_pill.activitypub_lets_connect": "Us permet connectar i interactuar amb persones a Mastodon i també a d'altres apps socials.", "domain_pill.activitypub_like_language": "ActivityPub és el llenguatge que Mastodon parla amb altres xarxes socials.", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index b70ff3ee2b..1f2804daa5 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -220,7 +220,6 @@ "domain_block_modal.they_cant_follow": "Nikdo z tohoto serveru vás nemůže sledovat.", "domain_block_modal.they_wont_know": "Nebude vědět, že je zablokován*a.", "domain_block_modal.title": "Blokovat doménu?", - "domain_block_modal.you_will_lose_followers": "Všichni vaši sledující z tohoto serveru budou odstraněni.", "domain_block_modal.you_wont_see_posts": "Neuvidíte příspěvky ani upozornění od uživatelů z tohoto serveru.", "domain_pill.activitypub_lets_connect": "Umožňuje vám spojit se a komunikovat s lidmi nejen na Mastodonu, ale i s dalšími sociálními aplikacemi.", "domain_pill.activitypub_like_language": "ActivityPub je jako jazyk, kterým Mastodon mluví s jinými sociálními sítěmi.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index ec93a5b11b..f2d0708882 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.", "domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.", "domain_block_modal.title": "Blocio parth?", - "domain_block_modal.you_will_lose_followers": "Bydd eich holl ddilynwyr o'r gweinydd hwn yn cael eu tynnu.", "domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.", "domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.", "domain_pill.activitypub_like_language": "Mae ActivityPub fel yr iaith y mae Mastodon yn ei siarad â rhwydweithiau cymdeithasol eraill.", @@ -434,6 +433,8 @@ "lightbox.close": "Cau", "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", + "lightbox.zoom_in": "Chwyddo i faint gwirioneddol", + "lightbox.zoom_out": "Chwyddo i ffitio", "limited_account_hint.action": "Dangos y proffil beth bynnag", "limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan gymedrolwyr {domain}.", "link_preview.author": "Gan {name}", @@ -785,6 +786,7 @@ "status.edit": "Golygu", "status.edited": "Golygwyd ddiwethaf {date}", "status.edited_x_times": "Golygwyd {count, plural, one {count} two {count} other {{count} gwaith}}", + "status.embed": "Cael y cod mewnblannu", "status.favourite": "Ffafrio", "status.favourites": "{count, plural, one {ffefryn} other {ffefryn}}", "status.filter": "Hidlo'r postiad hwn", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 76752802b0..e7d2bcaf80 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Ingen fra denne server kan følge dig.", "domain_block_modal.they_wont_know": "Vedkommende ser ikke den aktive blokering.", "domain_block_modal.title": "Blokér domæne?", - "domain_block_modal.you_will_lose_followers": "Alle følgerne fra denne server fjernes.", + "domain_block_modal.you_will_lose_num_followers": "Man vil miste {followersCount, plural, one {{followersCountDisplay} følger} other {{followersCountDisplay} følgere}} og {followingCount, plural, one {{followingCountDisplay} person, man følger} other {{followingCountDisplay} personer, man følger}}.", "domain_block_modal.you_wont_see_posts": "Indlæg eller notifikationer fra brugere på denne server vises ikke.", "domain_pill.activitypub_lets_connect": "Det muliggør at komme i forbindelse og interagere med folk ikke kun på Mastodon, men også på tværs af forskellige sociale apps.", "domain_pill.activitypub_like_language": "ActivityPub er \"sproget\", Mastodon taler med andre sociale netværk.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 1931ce23f1..2f8c89961a 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Niemand von diesem Server wird dir folgen können.", "domain_block_modal.they_wont_know": "Es wird nicht erkennbar sein, dass diese Domain blockiert wurde.", "domain_block_modal.title": "Domain blockieren?", - "domain_block_modal.you_will_lose_followers": "Alle Follower von diesem Server werden entfernt.", + "domain_block_modal.you_will_lose_num_followers": "Du wirst {followersCount, plural, one {{followersCountDisplay} Follower} other {{followersCountDisplay} Follower}} verlieren und {followingCount, plural, one {{followingCountDisplay} Profil} other {{followingCountDisplay} Profilen}} entfolgen.", "domain_block_modal.you_wont_see_posts": "Du wirst keine Beiträge oder Benachrichtigungen von Profilen auf diesem Server sehen.", "domain_pill.activitypub_lets_connect": "Somit kannst du dich nicht nur auf Mastodon mit Leuten verbinden und mit ihnen interagieren, sondern über alle sozialen Apps hinweg.", "domain_pill.activitypub_like_language": "ActivityPub ist sozusagen die Sprache, die Mastodon mit anderen sozialen Netzwerken spricht.", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 83f0227a0a..85f893c63d 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Κανείς από αυτόν τον διακομιστή δεν μπορεί να σε ακολουθήσει.", "domain_block_modal.they_wont_know": "Δεν θα ξέρουν ότι έχουν αποκλειστεί.", "domain_block_modal.title": "Αποκλεισμός τομέα;", - "domain_block_modal.you_will_lose_followers": "Οι ακόλουθοί σου από αυτόν τον διακομιστή θα αφαιρεθούν.", "domain_block_modal.you_wont_see_posts": "Δεν θα βλέπεις αναρτήσεις ή ειδοποιήσεις από χρήστες σε αυτόν το διακομιστή.", "domain_pill.activitypub_lets_connect": "Σού επιτρέπει να συνδεθείς και να αλληλεπιδράσεις με τους ανθρώπους όχι μόνο στο Mastodon, αλλά και σε διαφορετικές κοινωνικές εφαρμογές.", "domain_pill.activitypub_like_language": "Το ActivityPub είναι σαν τη γλώσσα Mastodon μιλάει με άλλα κοινωνικά δίκτυα.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index c0335dd6b2..ee38b77554 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Nobody from this server can follow you.", "domain_block_modal.they_wont_know": "They won't know they've been blocked.", "domain_block_modal.title": "Block domain?", - "domain_block_modal.you_will_lose_followers": "All your followers from this server will be removed.", "domain_block_modal.you_wont_see_posts": "You won't see posts or notifications from users on this server.", "domain_pill.activitypub_lets_connect": "It lets you connect and interact with people not just on Mastodon, but across different social apps too.", "domain_pill.activitypub_like_language": "ActivityPub is like the language Mastodon speaks with other social networks.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index fbf74e9efa..8139e8c76d 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Neniu el ĉi tiu servilo povas sekvi vin.", "domain_block_modal.they_wont_know": "Ili ne scios, ke ili estas blokitaj.", "domain_block_modal.title": "Ĉu bloki la domajnon?", - "domain_block_modal.you_will_lose_followers": "Ĉiuj viaj sekvantoj de ĉi tiu servilo estos forigitaj.", + "domain_block_modal.you_will_lose_num_followers": "Vi perdos {followersCount, plural, one {{followersCountDisplay} sekvanton} other {{followersCountDisplay} sekvantojn}} kaj {followingCount, plural, one {{followingCountDisplay} homon, kiu vi sekvas} other {{followingCountDisplay} homojn, kiuj vi sekvas}}.", "domain_block_modal.you_wont_see_posts": "Vi ne vidos afiŝojn aŭ sciigojn de uzantoj sur ĉi tiu servilo.", "domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj apoj.", "domain_pill.activitypub_like_language": "ActivityPub estas kiel la lingvo kiun Mastodon parolas kun aliaj sociaj retoj.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 8a37a33df2..26a37e76b3 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que fueron bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", - "domain_block_modal.you_will_lose_followers": "Se eliminarán todos tus seguidores de este servidor.", + "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", "domain_block_modal.you_wont_see_posts": "No verás mensajes ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con cuentas no solo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 52ebf0ae18..dd3188c146 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que han sido bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", - "domain_block_modal.you_will_lose_followers": "Todos tus seguidores de este servidor serán eliminados.", + "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", "domain_block_modal.you_wont_see_posts": "No verás publicaciones ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con personas no sólo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 5915c333c4..aa282b4c5b 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que han sido bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", - "domain_block_modal.you_will_lose_followers": "Se eliminarán todos tus seguidores de este servidor.", + "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", "domain_block_modal.you_wont_see_posts": "No verás mensajes ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con personas no sólo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 287ffb9852..69df3c4140 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Sellest serverist ei saa keegi sind jälgida.", "domain_block_modal.they_wont_know": "Nad ei tea, et nad on blokeeritud.", "domain_block_modal.title": "Blokeerida domeen?", - "domain_block_modal.you_will_lose_followers": "Kõik sinu sellest serverist pärit jälgijad eemaldatakse.", "domain_block_modal.you_wont_see_posts": "Sa ei näe selle serveri kasutajate postitusi ega teavitusi.", "domain_pill.activitypub_lets_connect": "See võimaldab sul ühenduda inimestega ja nendega suhelda mitte ainult Mastodonis, vaid ka teistes suhtlusrakendustes.", "domain_pill.activitypub_like_language": "ActivityPub on nagu keel, mida Mastodon räägib teiste suhtlusvõrgustikega.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index b3137bc21a..35b869486b 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Zerbitzari honetako inork ezin zaitu jarraitu.", "domain_block_modal.they_wont_know": "Ez dute jakingo blokeatuak izan direnik.", "domain_block_modal.title": "Domeinua blokeatu nahi duzu?", - "domain_block_modal.you_will_lose_followers": "Zerbitzari honetako jarraitzaile guztiak kenduko dira.", "domain_block_modal.you_wont_see_posts": "Ez dituzu zerbitzari honetako erabiltzaileen argitalpenik edota jakinarazpenik ikusiko.", "domain_pill.activitypub_lets_connect": "Mastodon-en ez ezik, beste sare sozialen aplikazioetako jendearekin konektatzea eta harremanetan jartzea uzten dizu.", "domain_pill.activitypub_like_language": "ActivityPub, Mastodon-ek beste sare sozialekin hitz egiteko erabiltzen duen hizkuntza bezalakoxea da.", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index fbc65ec207..583fd4ec5a 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -220,7 +220,6 @@ "domain_block_modal.they_cant_follow": "هیچ‌کسی از این کارساز نمی‌تواند پیتان بگیرد.", "domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شده‌اند.", "domain_block_modal.title": "انسداد دامنه؟", - "domain_block_modal.you_will_lose_followers": "همهٔ پی‌گیرندگانتان از این کارساز برداشته خواهند شد.", "domain_block_modal.you_wont_see_posts": "فرسته‌ها یا آگاهی‌ها از کاربران روی این کارساز را نخواهید دید.", "domain_pill.server": "کارساز", "domain_pill.their_handle": "شناسه‌اش:", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index d4adef40f2..4caec3159f 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Kukaan tältä palvelimelta ei voi seurata sinua.", "domain_block_modal.they_wont_know": "Hän ei saa tietää tulleensa estetyksi.", "domain_block_modal.title": "Estetäänkö verkkotunnus?", - "domain_block_modal.you_will_lose_followers": "Kaikki seuraajasi tältä palvelimelta poistetaan.", "domain_block_modal.you_wont_see_posts": "Et enää näe julkaisuja etkä ilmoituksia tämän palvelimen käyttäjiltä.", "domain_pill.activitypub_lets_connect": "Sen avulla voit muodostaa yhteyden ja olla vuorovaikutuksessa ihmisten kanssa, ei vain Mastodonissa vaan myös muissa sosiaalisissa sovelluksissa.", "domain_pill.activitypub_like_language": "ActivityPub on kuin kieli, jota Mastodon puhuu muiden sosiaalisten verkostojen kanssa.", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 3100456091..952bc60882 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -134,7 +134,6 @@ "dismissable_banner.public_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong nasa social web na sinusundan ng mga tao sa {domain}.", "domain_block_modal.block": "Harangan ang serbiro", "domain_block_modal.title": "Harangan ang domain?", - "domain_block_modal.you_will_lose_followers": "Mabubura ang iyong mga tagasunod mula sa serbirong ito.", "domain_pill.server": "Serbiro", "embed.instructions": "I-embed ang post na ito sa iyong pook-sapot sa pamamagitan ng pagsipi ng kodigo sa ilalim.", "embed.preview": "Ito ang magiging itsura:", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 9b87f5c8d9..3165c10153 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Eingin frá hesum ambætara kann fylgja tær.", "domain_block_modal.they_wont_know": "Tey vita ikki, at tey eru bannað.", "domain_block_modal.title": "Banna økisnavni?", - "domain_block_modal.you_will_lose_followers": "Allir tínir fylgjarar á hesum ambætara hvørva.", + "domain_block_modal.you_will_lose_num_followers": "Tú missir {followersCount, plural, one {{followersCountDisplay} fylgjara} other {{followersCountDisplay} fylgjarar}} og {followingCount, plural, one {{followingCountDisplay} persón, sum tú fylgir} other {{followingCountDisplay} persónar, sum tú fylgir}}.", "domain_block_modal.you_wont_see_posts": "Tú sært ongar postar ella boð frá brúkarum á hesum ambætara.", "domain_pill.activitypub_lets_connect": "Tað letur teg fáa samband og samvirka við fólki ikki bara á Mastodon, men á øðrum sosialum appum eisini.", "domain_pill.activitypub_like_language": "ActivityPub er málið, sum Mastodon tosar við onnur sosial netverk.", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index ead016dec2..a92cd50c67 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -221,7 +221,6 @@ "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.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9375eccc6f..a2bf4d5363 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -221,7 +221,6 @@ "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.", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index e7723c9533..1d71ef36c6 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Net ien op dizze server kin jo folgje.", "domain_block_modal.they_wont_know": "Se krije net te witten dat se blokkearre wurde.", "domain_block_modal.title": "Domein blokkearje?", - "domain_block_modal.you_will_lose_followers": "Al jo folgers fan dizze server wurde ûntfolge.", "domain_block_modal.you_wont_see_posts": "Jo sjogge gjin berjochten of meldingen mear fan brûkers op dizze server.", "domain_pill.activitypub_lets_connect": "It soarget derfoar dat jo net allinnich mar ferbine en kommunisearje kinne mei minsken op Mastodon, mar ek mei oare sosjale apps.", "domain_pill.activitypub_like_language": "ActivityPub is de taal dy’t Mastodon mei oare sosjale netwurken sprekt.", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index e05adc2732..2161591dcd 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ní féidir le duine ar bith ón bhfreastalaí seo tú a leanúint.", "domain_block_modal.they_wont_know": "Ní bheidh a fhios acu go bhfuil bac orthu.", "domain_block_modal.title": "Blocáil fearann?", - "domain_block_modal.you_will_lose_followers": "Bainfear do leantóirí go léir ón bhfreastalaí seo.", "domain_block_modal.you_wont_see_posts": "Ní fheicfidh tú postálacha nó fógraí ó úsáideoirí ar an bhfreastalaí seo.", "domain_pill.activitypub_lets_connect": "Ligeann sé duit ceangal agus idirghníomhú le daoine, ní hamháin ar Mastodon, ach thar aipeanna sóisialta éagsúla freisin.", "domain_pill.activitypub_like_language": "Tá GníomhaíochtPub cosúil leis an teanga a labhraíonn Mastodon le líonraí sóisialta eile.", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 8f51d43ef8..ecbc11f3a2 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Chan urrainn do neach sam bith a th’ air an fhrithealaiche seo do leantainn.", "domain_block_modal.they_wont_know": "Cha bhi fios aca gun deach am bacadh.", "domain_block_modal.title": "A bheil thu airson an àrainn a bhacadh?", - "domain_block_modal.you_will_lose_followers": "Thèid a h-uile neach-leantainn agad a th’ air an fhrithealaiche seo a thoirt air falbh.", "domain_block_modal.you_wont_see_posts": "Chan fhaic thu postaichean no brathan o chleachdaichean a th’ air an fhrithealaiche seo.", "domain_pill.activitypub_lets_connect": "Leigidh e leat ceangal a dhèanamh ri daoine chan ann air Mastodon a-mhàin ach air feadh aplacaidean sòisealta eile cuideachd agus conaltradh leotha.", "domain_pill.activitypub_like_language": "Tha ActivityPub coltach ri cànan a bhruidhneas Mastodon ri lìonraidhean sòisealta eile.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index f2ea6ee900..aa3a78fce8 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Ninguén deste servidor pode seguirte.", "domain_block_modal.they_wont_know": "Non saberá que a bloqueaches.", "domain_block_modal.title": "Bloquear dominio?", - "domain_block_modal.you_will_lose_followers": "Vanse eliminar todas as túas seguidoras deste servidor.", + "domain_block_modal.you_will_lose_num_followers": "Vas perder {followersCount, plural, one {{followersCountDisplay} seguidora} other {{followersCountDisplay} seguidoras}} e {followingCount, plural, one {{followingCountDisplay} persoa que segues} other {{followingCountDisplay} persoas que segues}}.", "domain_block_modal.you_wont_see_posts": "Non verás publicacións ou notificacións das usuarias deste servidor.", "domain_pill.activitypub_lets_connect": "Permíteche conectar e interactuar con persoas non só de Mastodon, se non tamén con outras sociais.", "domain_pill.activitypub_like_language": "ActivityPub é algo así como o idioma que Mastodon fala con outras redes sociais.", @@ -527,7 +527,7 @@ "notification.poll": "Rematou a enquisa na que votaches", "notification.reblog": "{name} compartiu a túa publicación", "notification.reblog.name_and_others_with_link": "{name} e {count, plural, one {# máis} other {# máis}} promoveron a túa publicación", - "notification.relationships_severance_event": "Perdeuse a conexión con {name}", + "notification.relationships_severance_event": "Relacións perdidas con {name}", "notification.relationships_severance_event.account_suspension": "A administración de {from} suspendeu a {target}, o que significa que xa non vas recibir actualizacións de esa conta ou interactuar con ela.", "notification.relationships_severance_event.domain_block": "A administración de {from} bloqueou a {target}, que inclúe a {followersCount} das túas seguidoras e a {followingCount, plural, one {# conta} other {# contas}} que sigues.", "notification.relationships_severance_event.learn_more": "Saber máis", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 6503d870e5..4ce0d41620 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "משתמש משרת זה לא יכול לעקוב אחריך.", "domain_block_modal.they_wont_know": "הם לא ידעו כי נחסמו.", "domain_block_modal.title": "לחסום שרת?", - "domain_block_modal.you_will_lose_followers": "כל עוקביך משרת זה יוסרו.", "domain_block_modal.you_wont_see_posts": "לא תוכלו לראות הודעות ממשתמשים על שרת זה.", "domain_pill.activitypub_lets_connect": "מאפשר לך להתחבר ולהתרועע עם אחרים לא רק במסטודון, אלא גם ביישומים חברתיים שונים אחרים.", "domain_pill.activitypub_like_language": "אקטיביטיפאב היא למעשה השפה בה מסטודון מדבר עם רשתות חברתיות אחרות.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cb3517e3a3..2e48cb626d 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Erről a kiszolgálóról senki sem követhet.", "domain_block_modal.they_wont_know": "Nem fogja tudni, hogy letiltották.", "domain_block_modal.title": "Letiltsuk a domaint?", - "domain_block_modal.you_will_lose_followers": "Az ezen a kiszolgálón lévő összes követődet törölni fogjuk.", "domain_block_modal.you_wont_see_posts": "Nem látsz majd bejegyzéseket vagy értesítéseket ennek a kiszolgálónak a felhasználóitól.", "domain_pill.activitypub_lets_connect": "Lehetővé teszi, hogy kapcsolatba lépj nem csak a Mastodonon, hanem a más közösségi alkalmazásokon lévő emberekkel is.", "domain_pill.activitypub_like_language": "Az ActivityPub olyan mint egy nyelv, amelyet a Mastodon a más közösségi hálózatokkal való kommunikációra használ.", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 93bee9ec79..35482297f0 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Necuno de iste servitor pote sequer te.", "domain_block_modal.they_wont_know": "Ille non sapera que ille ha essite blocate.", "domain_block_modal.title": "Blocar dominio?", - "domain_block_modal.you_will_lose_followers": "Tote tu sequitores de iste servitor essera removite.", "domain_block_modal.you_wont_see_posts": "Tu non videra messages e notificationes de usatores sur iste servitor.", "domain_pill.activitypub_lets_connect": "Illo te permitte connecter e interager con personas non solmente sur Mastodon, ma tamben sur altere applicationes social.", "domain_pill.activitypub_like_language": "ActivityPub es como le linguage commun que Mastodon parla con altere retes social.", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index b6d01ec996..f5c71d4a36 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -219,7 +219,6 @@ "domain_block_modal.they_cant_follow": "Tidak ada seorangpun dari server ini yang dapat mengikuti anda.", "domain_block_modal.they_wont_know": "Mereka tidak akan tahu bahwa mereka diblokir.", "domain_block_modal.title": "Blokir domain?", - "domain_block_modal.you_will_lose_followers": "Semua pengikut anda dari server ini akan dihapus.", "domain_block_modal.you_wont_see_posts": "Anda tidak akan melihat postingan atau notifikasi dari pengguna di server ini.", "domain_pill.activitypub_lets_connect": "Ini memungkinkan anda terhubung dan berinteraksi dengan orang-orang tidak hanya di Mastodon, tetapi juga di berbagai aplikasi sosial.", "domain_pill.activitypub_like_language": "ActivityPub seperti bahasa yang digunakan Mastodon dengan jejaring sosial lainnya.", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index 1439b851d3..d91c49e83f 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -206,7 +206,6 @@ "domain_block_modal.they_cant_follow": "Nequi de ti-ci servitor posse sequer te.", "domain_block_modal.they_wont_know": "Ne va esser conscient pri li bloccada.", "domain_block_modal.title": "Bloccar dominia?", - "domain_block_modal.you_will_lose_followers": "Omni tui sequitores de ti-ci servitor va esser efaciat.", "domain_block_modal.you_wont_see_posts": "Tu ne va vider postas ni notificationes de usatores sur ti-ci servitor.", "domain_pill.activitypub_lets_connect": "It possibilisa tui conexiones e interactiones con persones ne solmen sur Mastodon, ma anc tra diferent social aplis.", "domain_pill.activitypub_like_language": "ActivityPub es li lingue usat de Mastodon por parlar con altri social retages.", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 5f32b438dd..c78c5d7842 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Enginn frá þessum netþjóni getur fylgst með þér.", "domain_block_modal.they_wont_know": "Viðkomandi mun ekki vita að hann hafi verið útilokaður.", "domain_block_modal.title": "Útiloka lén?", - "domain_block_modal.you_will_lose_followers": "Allir fylgjendur þínir af þessum netþjóni verða fjarlægðir.", "domain_block_modal.you_wont_see_posts": "Þú munt ekki sjá neinar færslur eða tilkynningar frá notendum á þessum netþjóni.", "domain_pill.activitypub_lets_connect": "Það gerir þér kleift að tengjast og eiga í samskiptum við fólk, ekki bara á Mastodon, heldur einnig á mörgum öðrum mismunandi samfélagsmiðlum.", "domain_pill.activitypub_like_language": "ActivityPub er eins og tungumál sem Mastodon notar til að tala við önnur samfélagsnet.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ec26d80be6..fdb56f542e 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -221,7 +221,6 @@ "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.", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index c3ddeed880..f5e7cc9c04 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "このサーバーのユーザーはあなたをフォローできなくなります。", "domain_block_modal.they_wont_know": "ドメインブロックは相手からはわかりません。", "domain_block_modal.title": "ドメインをブロックしますか?", - "domain_block_modal.you_will_lose_followers": "このサーバーのフォロワーはすべてフォロー解除されます。", "domain_block_modal.you_wont_see_posts": "このサーバーのユーザーからの投稿や通知が閲覧できなくなります。", "domain_pill.activitypub_lets_connect": "Mastodonからほかのソーシャルアプリのユーザーへ、そのまた別のアプリのユーザーへと、それぞれが互いにつながり関わり合うことをこのActivityPubの仕組みが実現しています。", "domain_pill.activitypub_like_language": "ActivityPubとは、Mastodonがほかのサーバーと会話をするときにしゃべる「言葉」のようなものです。", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index af1599572b..87ea3cfabf 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "이 서버의 누구도 나를 팔로우 할 수 없습니다.", "domain_block_modal.they_wont_know": "내가 차단했다는 사실을 모를 것입니다.", "domain_block_modal.title": "도메인을 차단할까요?", - "domain_block_modal.you_will_lose_followers": "이 서버에 있는 팔로워들이 모두 제거될 것입니다.", "domain_block_modal.you_wont_see_posts": "이 서버 사용자의 게시물이나 알림을 보지 않게 됩니다.", "domain_pill.activitypub_lets_connect": "이것은 마스토돈 뿐만이 아니라 다른 소셜 앱들을 넘나들며 사람들을 연결하고 상호작용 할 수 있게 합니다.", "domain_pill.activitypub_like_language": "액티비티펍은 마스토돈이 다른 소셜 네트워크와 대화할 때 쓰는 언어 같은 것입니다.", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index d894cc01c6..ac95b590e3 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -58,7 +58,6 @@ "disabled_account_banner.text": "Ratio tua {disabledAccount} debilitata est.", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "domain_block_modal.you_will_lose_followers": "Omnes sectatores tuī ex hoc servō removēbuntur.", "domain_block_modal.you_wont_see_posts": "Nuntios aut notificātiōnēs ab usoribus in hōc servō nōn vidēbis.", "domain_pill.activitypub_like_language": "ActivityPub est velut lingua quam Mastodon cum aliīs sociālibus rētibus loquitur.", "domain_pill.your_handle": "Tuus nominulus:", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 43da2ea16f..c5026fa33b 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -215,7 +215,6 @@ "domain_block_modal.they_cant_follow": "Dingun de este sirvidor puede segirte.", "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:", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 632c33129a..7dcc346802 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Niekas iš šio serverio negali tavęs sekti.", "domain_block_modal.they_wont_know": "Jie nežinos, kad buvo užblokuoti.", "domain_block_modal.title": "Blokuoti serverį?", - "domain_block_modal.you_will_lose_followers": "Visi tavo sekėjai iš šio serverio bus pašalinti.", "domain_block_modal.you_wont_see_posts": "Nematysi naudotojų įrašų ar pranešimų šiame serveryje.", "domain_pill.activitypub_lets_connect": "Tai leidžia tau prisijungti ir bendrauti su žmonėmis ne tik „Mastodon“ platformoje, bet ir įvairiose socialinėse programėlėse.", "domain_pill.activitypub_like_language": "„ActivityPub“ – tai tarsi kalba, kuria „Mastodon“ kalba su kitais socialiniais tinklais.", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 43fa8369f4..1e973ffd3e 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -215,7 +215,6 @@ "domain_block_modal.they_cant_follow": "Neviens šajā serverī nevar Tev sekot.", "domain_block_modal.they_wont_know": "Viņi nezinās, ka tikuši bloķēti.", "domain_block_modal.title": "Bloķēt domēnu?", - "domain_block_modal.you_will_lose_followers": "Tiks noņemti visi tavi sekotāji no šī servera.", "domain_pill.server": "Serveris", "domain_pill.username": "Lietotājvārds", "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzamo kodu.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f5f4a0a137..f8e98e865b 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Niemand op deze server kan jou volgen.", "domain_block_modal.they_wont_know": "Ze krijgen niet te weten dat ze worden geblokkeerd.", "domain_block_modal.title": "Server blokkeren?", - "domain_block_modal.you_will_lose_followers": "Al jouw volgers van deze server worden ontvolgd.", + "domain_block_modal.you_will_lose_num_followers": "Je verliest {followersCount, plural, one {{followersCountDisplay} volger} other {{followersCountDisplay} volgers}} en {followingCount, plural, one {{followingCountDisplay} persoon die jij volgt} other {{followingCountDisplay} personen die jij volgt}}.", "domain_block_modal.you_wont_see_posts": "Je ziet geen berichten of meldingen meer van gebruikers op deze server.", "domain_pill.activitypub_lets_connect": "Het zorgt ervoor dat je niet alleen maar kunt verbinden en communiceren met mensen op Mastodon, maar ook met andere sociale apps.", "domain_pill.activitypub_like_language": "ActivityPub is de taal die Mastodon met andere sociale netwerken spreekt.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 702154927d..9524dfd558 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ingen på denne tenaren kan fylgja deg.", "domain_block_modal.they_wont_know": "Dei veit ikkje at dei er blokkerte.", "domain_block_modal.title": "Blokker domenet?", - "domain_block_modal.you_will_lose_followers": "Alle fylgjarane dine frå denne tenaren blir fjerna.", "domain_block_modal.you_wont_see_posts": "Du vil ikkje sjå innlegg eller varslingar frå brukarar på denne tenaren.", "domain_pill.activitypub_lets_connect": "Den lar deg kople til og samhandle med folk ikkje berre på Mastodon, men òg på tvers av forskjellige sosiale appar.", "domain_pill.activitypub_like_language": "ActivityPub er som språket Mastodon snakkar med andre sosiale nettverk.", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 1d0294cd7c..8cd3387eaf 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ingen fra denne serveren kan følge deg.", "domain_block_modal.they_wont_know": "De kommer ikke til å få vite at du har valgt å blokkere dem.", "domain_block_modal.title": "Blokker domenet?", - "domain_block_modal.you_will_lose_followers": "Alle dine følgere fra denne serveren vil bli fjernet.", "domain_block_modal.you_wont_see_posts": "Du vil ikke se innlegg eller få varsler fra brukere på denne serveren.", "domain_pill.activitypub_lets_connect": "Den lar deg koble til og samhandle med folk ikke bare på Mastodon, men også på tvers av forskjellige sosiale apper.", "domain_pill.activitypub_like_language": "ActivityPub er liksom språket Mastodon snakker med andre sosiale nettverk.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index a4ee25250a..4528940797 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Nikt z tego serwera nie może Cię obserwować.", "domain_block_modal.they_wont_know": "Użytkownik nie dowie się, że został zablokowany.", "domain_block_modal.title": "Zablokować domenę?", - "domain_block_modal.you_will_lose_followers": "Wszyscy twoi obserwujący z tego serwera zostaną usunięci.", + "domain_block_modal.you_will_lose_num_followers": "Utracisz {followersCount, plural, one {jednego obserwującego} other {{followersCountDisplay} obserwujących}} i {followingCount, plural, one {jedną osobę którą obserwujesz} few {{followingCountDisplay} osoby które obserwujesz} other {{followingCountDisplay} osób które obserwujesz}}.", "domain_block_modal.you_wont_see_posts": "Nie zobaczysz postów ani powiadomień od użytkowników na tym serwerze.", "domain_pill.activitypub_lets_connect": "Pozwala połączyć się z ludźmi na Mastodonie, jak i na innych serwisach społecznościowych.", "domain_pill.activitypub_like_language": "ActivityPub jest językiem używanym przez Mastodon do wymiany danych z innymi serwisami społecznościowymi.", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 1eca63ac15..402c0b38b5 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ninguém deste servidor pode lhe seguir.", "domain_block_modal.they_wont_know": "Eles não saberão que foram bloqueados.", "domain_block_modal.title": "Dominio do bloco", - "domain_block_modal.you_will_lose_followers": "Todos os seus seguidores deste servidor serão removidos.", "domain_block_modal.you_wont_see_posts": "Você não verá postagens ou notificações de usuários neste servidor.", "domain_pill.activitypub_lets_connect": "Ele permite que você se conecte e interaja com pessoas não apenas no Mastodon, mas também em diferentes aplicativos sociais.", "domain_pill.activitypub_like_language": "ActivityPub é como a linguagem que o Mastodon fala com outras redes sociais.", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 80f5f9f138..6be7e03b39 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ninguém deste servidor pode segui-lo.", "domain_block_modal.they_wont_know": "Eles não saberão que foram bloqueados.", "domain_block_modal.title": "Bloquear domínio?", - "domain_block_modal.you_will_lose_followers": "Todos os seus seguidores deste servidor serão removidos.", "domain_block_modal.you_wont_see_posts": "Não verá publicações ou notificações de utilizadores neste servidor.", "domain_pill.activitypub_lets_connect": "Permite-lhe conectar e interagir com pessoas não só no Mastodon, mas também em diferentes aplicações sociais.", "domain_pill.activitypub_like_language": "O ActivityPub é como a linguagem que o Mastodon fala com outras redes sociais.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 1366114929..9bd2ed5b4e 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -220,7 +220,6 @@ "domain_block_modal.they_cant_follow": "Никто из этого сервера не может подписываться на вас.", "domain_block_modal.they_wont_know": "Он не будет знать, что его заблокировали.", "domain_block_modal.title": "Заблокировать домен?", - "domain_block_modal.you_will_lose_followers": "Все ваши подписчики с этого сервера будут удалены.", "domain_block_modal.you_wont_see_posts": "Вы не будете видеть записи или уведомления от пользователей на этом сервере.", "domain_pill.activitypub_lets_connect": "Это позволяет вам общаться и взаимодействовать с людьми не только на Mastodon, но и в различных социальных приложениях.", "domain_pill.activitypub_like_language": "ActivityPub как язык Mastodon говорит с другими социальными сетями.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index c989a7314c..ddf341584c 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -34,7 +34,9 @@ "account.follow_back": "Sledovať späť", "account.followers": "Sledovatelia", "account.followers.empty": "Tento účet ešte nikto nesleduje.", + "account.followers_counter": "{count, plural, one {{counter} sledujúci} other {{counter} sledujúci}}", "account.following": "Sledovaný účet", + "account.following_counter": "{count, plural, one {{counter} sledovaných} other {{counter} sledovaných}}", "account.follows.empty": "Tento účet ešte nikoho nesleduje.", "account.go_to_profile": "Prejsť na profil", "account.hide_reblogs": "Skryť zdieľania od @{name}", @@ -60,6 +62,7 @@ "account.requested_follow": "{name} vás chce sledovať", "account.share": "Zdieľaj profil @{name}", "account.show_reblogs": "Zobrazovať zdieľania od @{name}", + "account.statuses_counter": "{count, plural, one {{counter} príspevok} other {{counter} príspevkov}}", "account.unblock": "Odblokovať @{name}", "account.unblock_domain": "Odblokovať doménu {domain}", "account.unblock_short": "Odblokovať", @@ -215,7 +218,6 @@ "domain_block_modal.they_cant_follow": "Nikto z tohoto servera ťa nemôže nasledovať.", "domain_block_modal.they_wont_know": "Nebude vedieť, že bol/a zablokovaný/á.", "domain_block_modal.title": "Blokovať doménu?", - "domain_block_modal.you_will_lose_followers": "Všetci tvoji nasledovatelia z tohto servera budú odstránení.", "domain_block_modal.you_wont_see_posts": "Neuvidíš príspevky, ani oboznámenia od užívateľov na tomto serveri.", "domain_pill.activitypub_like_language": "ActivityPub je ako jazyk, ktorým Mastodon hovorí s ostatnými sociálnymi sieťami.", "domain_pill.server": "Server", @@ -418,6 +420,7 @@ "lists.subheading": "Vaše zoznamy", "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položiek} other {# nových položiek}}", "loading_indicator.label": "Načítavanie…", + "media_gallery.hide": "Skryť", "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálne deaktivovaný, pretože ste sa presunuli na {movedToAccount}.", "mute_modal.hide_from_notifications": "Ukryť z upozornení", "mute_modal.hide_options": "Skryť možnosti", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 43042ca998..71bee6822b 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -217,7 +217,6 @@ "domain_block_modal.they_cant_follow": "Nihče s tega strežnika vam ne more slediti.", "domain_block_modal.they_wont_know": "Ne bodo vedeli, da so blokirani.", "domain_block_modal.title": "Blokiraj domeno?", - "domain_block_modal.you_will_lose_followers": "Vsi vaši sledilci s tega strežnika bodo odstranjeni.", "domain_block_modal.you_wont_see_posts": "Objav ali obvestil uporabnikov s tega strežnika ne boste videli.", "domain_pill.activitypub_lets_connect": "Omogoča vam povezovanje in interakcijo z ljudmi, ki niso samo na Mastodonu, ampak tudi na drugih družabnih platformah.", "domain_pill.activitypub_like_language": "Protokol ActivityPub je kot jezik, s katerim se Mastodon pogovarja z drugimi družabnimi omrežji.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index c5e42aae77..2195e6bf9a 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "S’mund t’ju ndjekë askush nga ky shërbyes.", "domain_block_modal.they_wont_know": "S’do ta dinë se janë bllokuar.", "domain_block_modal.title": "Të bllokohet përkatësia?", - "domain_block_modal.you_will_lose_followers": "Krejt ndjekësit tuaj nga ky shërbyes do të hiqen.", + "domain_block_modal.you_will_lose_num_followers": "Do të humbni {followersCount, plural, one {{followersCountDisplay} ndjekës} other {{followersCountDisplay} ndjekës}} dhe {followingCount, plural, one {{followingCountDisplay} person që ndiqni} other {{followingCountDisplay} vetë që ndiqni}}.", "domain_block_modal.you_wont_see_posts": "S’do të shihni postime, apo njoftime nga përdorues në këtë shërbyes.", "domain_pill.activitypub_lets_connect": "Ju lejon të lidheni dhe ndërveproni me persona jo thjesht në Mastodon, por edhe nëpër aplikacione të ndryshme shoqërore.", "domain_pill.activitypub_like_language": "ActivityPub është si gjuha me të cilën Mastodon-i komunikon me rrjete të tjerë shoqërorë.", @@ -434,6 +434,8 @@ "lightbox.close": "Mbylle", "lightbox.next": "Pasuesja", "lightbox.previous": "E mëparshmja", + "lightbox.zoom_in": "Ktheje në madhësinë origjinale", + "lightbox.zoom_out": "Zmadhoje të përshtatet", "limited_account_hint.action": "Shfaqe profilin sido qoftë", "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e {domain}.", "link_preview.author": "Nga {name}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index e701da6078..1053d581c3 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -209,7 +209,6 @@ "domain_block_modal.they_cant_follow": "Niko sa ovog servera ne može da vas prati.", "domain_block_modal.they_wont_know": "Neće znati da su blokirani.", "domain_block_modal.title": "Blokirati domen?", - "domain_block_modal.you_will_lose_followers": "Svi vaši pratioci sa ovog servera će biti uklonjeni.", "domain_block_modal.you_wont_see_posts": "Nećete videti objave ili obaveštenja korisnika na ovom serveru.", "domain_pill.activitypub_lets_connect": "Omogućuje vam da se povežete i komunicirate sa ljudima ne samo na Mastodon-u, već i u različitim društvenim aplikacijama.", "domain_pill.activitypub_like_language": "ActivityPub je kao jezik kojim Mastodon govori sa drugim društvenim mrežama.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index fd13c4ee5c..9529c41fe3 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -209,7 +209,6 @@ "domain_block_modal.they_cant_follow": "Нико са овог сервера не може да вас прати.", "domain_block_modal.they_wont_know": "Неће знати да су блокирани.", "domain_block_modal.title": "Блокирати домен?", - "domain_block_modal.you_will_lose_followers": "Сви ваши пратиоци са овог сервера ће бити уклоњени.", "domain_block_modal.you_wont_see_posts": "Нећете видети објаве или обавештења корисника на овом серверу.", "domain_pill.activitypub_lets_connect": "Омогућује вам да се повежете и комуницирате са људима не само на Mastodon-у, већ и у различитим друштвеним апликацијама.", "domain_pill.activitypub_like_language": "ActivityPub је као језик којим Mastodon говори са другим друштвеним мрежама.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 6bb0b1424a..b1e5a95edf 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -219,7 +219,6 @@ "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.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index d446cacb92..68b64ca548 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "ไม่มีใครจากเซิร์ฟเวอร์นี้สามารถติดตามคุณ", "domain_block_modal.they_wont_know": "เขาจะไม่ทราบว่ามีการปิดกั้นเขา", "domain_block_modal.title": "ปิดกั้นโดเมน?", - "domain_block_modal.you_will_lose_followers": "จะเอาผู้ติดตามทั้งหมดของคุณจากเซิร์ฟเวอร์นี้ออก", "domain_block_modal.you_wont_see_posts": "คุณจะไม่เห็นโพสต์หรือการแจ้งเตือนจากผู้ใช้ในเซิร์ฟเวอร์นี้", "domain_pill.activitypub_lets_connect": "โปรโตคอลช่วยให้คุณเชื่อมต่อและโต้ตอบกับผู้คนไม่ใช่แค่ใน Mastodon แต่ทั่วทั้งแอปสังคมต่าง ๆ เช่นกัน", "domain_pill.activitypub_like_language": "ActivityPub เป็นเหมือนภาษาที่ Mastodon พูดกับเครือข่ายสังคมอื่น ๆ", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index 9f20388182..ba5395b7bd 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -163,7 +163,6 @@ "dismissable_banner.explore_tags": "suni ni la jan mute li lukin e toki pi toki ni. jan mute li kepeken toki la toki ni li lon sewi.", "dismissable_banner.public_timeline": "toki ni li sin. jan li pali e toki ni la jan ante mute pi ma {domain} li kute e jan ni.", "domain_block_modal.block": "o weka e ma", - "domain_block_modal.you_will_lose_followers": "ma ni la jan alasa ale sina li weka", "domain_block_modal.you_wont_see_posts": "sina ken ala lukin e toki tan jan pi ma ni", "domain_pill.server": "ma", "domain_pill.username": "nimi jan", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bdb2de0ef1..509dbc7a21 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Bu sunucudan hiç kimse sizi takip edemez.", "domain_block_modal.they_wont_know": "Engellendiklerini bilmeyecekler.", "domain_block_modal.title": "Alan adını engelle?", - "domain_block_modal.you_will_lose_followers": "Bu sunucudaki tüm takipçileriniz kaldırılacaktır.", + "domain_block_modal.you_will_lose_num_followers": "{followersCount, plural, one {{followersCountDisplay} takipçi} other {{followersCountDisplay} takipçi}} ve {followingCount, plural, one {{followingCountDisplay} takip ettiğiniz kişi} other {{followingCountDisplay} takip ettiğiniz kişi}} kaybedeceksiniz.", "domain_block_modal.you_wont_see_posts": "Bu sunucudaki kullanıcılardan gelen gönderileri veya bildirimleri göremezsiniz.", "domain_pill.activitypub_lets_connect": "Sadece Mastodon üzerindeki değil, diğer sosyal uygulamalardaki kişilerle de bağlantı kurmanıza ve etkileşmenize olanak sağlar.", "domain_pill.activitypub_like_language": "ActivityPub, Mastodon'un diğer sosyal ağlarla konuşmak için kullandığı dil gibidir.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 3bf8d00248..1b5dbb4c9b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "Ніхто з цього сервера не може слідкувати за вами.", "domain_block_modal.they_wont_know": "Вони не знають, що їх заблоковано.", "domain_block_modal.title": "Заблокувати домен?", - "domain_block_modal.you_will_lose_followers": "Усіх ваших підписників з цього сервера буде вилучено.", "domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.", "domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних застосунках.", "domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Mastodon розмовляє з іншими соціальними мережами.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 04b73e78fa..9c5c9ae1e4 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "Không ai trên máy chủ này có thể theo dõi bạn.", "domain_block_modal.they_wont_know": "Họ sẽ không biết đã bị bạn chặn.", "domain_block_modal.title": "Chặn máy chủ?", - "domain_block_modal.you_will_lose_followers": "Những người theo dõi bạn ở máy chủ này sẽ bị xóa.", + "domain_block_modal.you_will_lose_num_followers": "Bạn sẽ mất {followersCount, plural, other {{followersCountDisplay} người theo dõi}} và {followingCount, plural, other {{followingCountDisplay} người bạn theo dõi}}.", "domain_block_modal.you_wont_see_posts": "Bạn sẽ không thấy tút hoặc thông báo từ thành viên máy chủ này.", "domain_pill.activitypub_lets_connect": "Nó cho phép bạn kết nối và tương tác với mọi người không chỉ trên Mastodon mà còn trên các ứng dụng xã hội khác.", "domain_pill.activitypub_like_language": "ActivityPub giống như ngôn ngữ Mastodon giao tiếp với các mạng xã hội khác.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index a7cd089948..1f539727f9 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -221,7 +221,6 @@ "domain_block_modal.they_cant_follow": "此服务器上没有人可以关注你。", "domain_block_modal.they_wont_know": "他们不会知道自己被屏蔽。", "domain_block_modal.title": "屏蔽该域名?", - "domain_block_modal.you_will_lose_followers": "该服务器上你的所有关注者都会被删除。", "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", "domain_pill.activitypub_lets_connect": "它让你不仅能与Mastodon上的人交流互动,还能与其它不同社交应用上的人联系。", "domain_pill.activitypub_like_language": "ActivityPub就像Mastodon与其它社交网络交流时使用的语言。", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 22f51a8413..a081e55897 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -208,7 +208,6 @@ "domain_block_modal.they_cant_follow": "此伺服器的人無法追蹤你。", "domain_block_modal.they_wont_know": "對方不會知道自己被封鎖。", "domain_block_modal.title": "封鎖網域?", - "domain_block_modal.you_will_lose_followers": "你在此伺服器的所有追蹤者都將會被移除。", "domain_block_modal.you_wont_see_posts": "你將看不到此伺服器使用者的帖文和通知。", "domain_pill.activitypub_lets_connect": "這讓你不僅能在 Mastodon 上,也能在其他社交應用程式中與人交流互動。", "domain_pill.activitypub_like_language": "ActivityPub 就像 Mastodon 與其他社交網絡溝通所用的語言。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 7f2caeaf4b..c585f98b6e 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -221,7 +221,7 @@ "domain_block_modal.they_cant_follow": "來自此伺服器之使用者將無法跟隨您。", "domain_block_modal.they_wont_know": "他們不會知道他們已被封鎖。", "domain_block_modal.title": "是否封鎖該網域?", - "domain_block_modal.you_will_lose_followers": "所有您來自此伺服器之跟隨者將被移除。", + "domain_block_modal.you_will_lose_num_followers": "您將會失去 {followersCount, plural, other {{followersCountDisplay} 個跟隨者}} 與 {followingCount, plural, other {{followingCountDisplay} 個您跟隨之帳號}}.", "domain_block_modal.you_wont_see_posts": "您不會見到來自此伺服器使用者之任何嘟文或推播通知。", "domain_pill.activitypub_lets_connect": "它使您能於 Mastodon 及其他不同的社群應用程式與人連結及互動。", "domain_pill.activitypub_like_language": "ActivityPub 像是 Mastodon 與其他社群網路溝通時所用的語言。", diff --git a/config/locales/activerecord.sk.yml b/config/locales/activerecord.sk.yml index 809d006471..68a9e447b9 100644 --- a/config/locales/activerecord.sk.yml +++ b/config/locales/activerecord.sk.yml @@ -15,6 +15,11 @@ sk: user/invite_request: text: Dôvod errors: + attributes: + domain: + invalid: nie je platný tvar domény + messages: + invalid_domain_on_line: "%{value} nie je platný tvar domény" models: account: attributes: diff --git a/config/locales/an.yml b/config/locales/an.yml index 2f181e0757..2db042f1b1 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -1375,7 +1375,6 @@ an: delete: Borrar cuenta development: Desembolique edit_profile: Editar perfil - export: Exportar información featured_tags: Hashtags destacaus import: Importar import_and_export: Importar y exportar diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 81705acba0..829855776d 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1719,7 +1719,6 @@ ar: delete: حذف الحسابات development: التطوير edit_profile: تعديل الصفحة التعريفية - export: تصدير البيانات featured_tags: الوسوم الشائعة import: استيراد import_and_export: استيراد وتصدير diff --git a/config/locales/ast.yml b/config/locales/ast.yml index a7d4a9917e..72c5d9d752 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -774,7 +774,6 @@ ast: back: Volver a Mastodon development: Desendolcu edit_profile: Edición del perfil - export: Esportación de datos featured_tags: Etiquetes destacaes import: Importación import_and_export: Importación y esportación diff --git a/config/locales/be.yml b/config/locales/be.yml index d45f443b75..d1d3e17679 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1722,7 +1722,6 @@ be: delete: Выдаленне ўліковага запісу development: Распрацоўка edit_profile: Рэдагаваць профіль - export: Экспарт даных featured_tags: Выбраныя хэштэгі import: Імпарт import_and_export: Імпарт і экспарт diff --git a/config/locales/bg.yml b/config/locales/bg.yml index e2c246827a..00b3a41167 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1617,7 +1617,6 @@ bg: delete: Изтриване на акаунта development: Разработка edit_profile: Редактирай профила си - export: Експортиране на данни featured_tags: Актуални хаштагове import: Импортиране import_and_export: Импортиране и експортиране diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 33a1d4e88f..e0a68f7b46 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1686,7 +1686,7 @@ ca: delete: Eliminació del compte development: Desenvolupament edit_profile: Edita el perfil - export: Exportació de dades + export: Exporta featured_tags: Etiquetes destacades import: Importació import_and_export: Importació i exportació diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index bc668d2ce4..88dadff014 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -907,7 +907,6 @@ ckb: delete: سڕینەوەی هەژمارە development: گەشەپێدان edit_profile: دەستکاری پرۆفایل - export: ناردن زانیاری featured_tags: هاشتاگی تایبەت import: هاوردن import_and_export: هاوردەکردن و ناردن diff --git a/config/locales/co.yml b/config/locales/co.yml index 58ddd7d01b..dad3e08ffd 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -891,7 +891,6 @@ co: delete: Suppressione di u contu development: Sviluppu edit_profile: Mudificà u prufile - export: Spurtazione d’infurmazione featured_tags: Hashtag in vista import: Impurtazione import_and_export: Impurtazione è spurtazione diff --git a/config/locales/cs.yml b/config/locales/cs.yml index b7fc8ab1b0..91fa517944 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1666,7 +1666,6 @@ cs: delete: Smazání účtu development: Vývoj edit_profile: Upravit profil - export: Export dat featured_tags: Zvýrazněné hashtagy import: Import import_and_export: Import a export diff --git a/config/locales/cy.yml b/config/locales/cy.yml index c2c193d943..1ae6aa08ff 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1796,7 +1796,6 @@ cy: delete: Dileu cyfrif development: Datblygu edit_profile: Golygu proffil - export: Allforio data featured_tags: Prif hashnodau import: Mewnforio import_and_export: Mewnforio ac allforio diff --git a/config/locales/da.yml b/config/locales/da.yml index a177b97de7..96b27c91b3 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1692,7 +1692,7 @@ da: delete: Kontosletning development: Udvikling edit_profile: Redigér profil - export: Dataeksport + export: Eksport featured_tags: Udvalgte hashtags import: Import import_and_export: Import og eksport diff --git a/config/locales/de.yml b/config/locales/de.yml index 85e24c230e..5af77c431d 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1692,7 +1692,6 @@ de: delete: Kontolöschung development: Entwicklung edit_profile: Profil bearbeiten - export: Exportieren featured_tags: Vorgestellte Hashtags import: Importieren import_and_export: Importieren und exportieren diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml index 80cc022a0b..32f5055b6c 100644 --- a/config/locales/doorkeeper.cy.yml +++ b/config/locales/doorkeeper.cy.yml @@ -60,6 +60,7 @@ cy: error: title: Mae rhywbeth wedi mynd o'i le new: + prompt_html: Hoffai %{client_name} gael caniatâd i gael mynediad i'ch cyfrif. Dim ond os ydych chi'n adnabod ac yn ymddiried yn y ffynhonnell hon y dylech gymeradwyo'r cais hwn. review_permissions: Adolygu caniatâd title: Angen awdurdodi show: diff --git a/config/locales/doorkeeper.sq.yml b/config/locales/doorkeeper.sq.yml index 1fd9000aa2..f98cf88c63 100644 --- a/config/locales/doorkeeper.sq.yml +++ b/config/locales/doorkeeper.sq.yml @@ -60,6 +60,7 @@ sq: error: title: Ndodhi një gabim new: + prompt_html: "%{client_name} do të donte leje të hyjë në llogarinë tuaj. Miratojeni këtë kërkesë vetëm nëse e njihni dhe e besoni këtë burim." review_permissions: Shqyrtoni leje title: Lypset autorizim show: diff --git a/config/locales/el.yml b/config/locales/el.yml index c119beec17..610ae40265 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1604,7 +1604,6 @@ el: delete: Διαγραφή λογαριασμού development: Ανάπτυξη edit_profile: Επεξεργασία προφίλ - export: Εξαγωγή δεδομένων featured_tags: Παρεχόμενες ετικέτες import: Εισαγωγή import_and_export: Εισαγωγή και εξαγωγή diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 577978ce88..21afcd990f 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1692,7 +1692,6 @@ en-GB: delete: Account deletion development: Development edit_profile: Edit profile - export: Data export featured_tags: Featured hashtags import: Import import_and_export: Import and export diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 2d03ce08a7..7d0f66a0c0 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -275,6 +275,7 @@ eo: filter_by_action: Filtri per ago filter_by_user: Filtri per uzanto title: Ĵurnalo de revizo + unavailable_instance: "(domajna nomo nedisponebla)" announcements: destroyed_msg: Anonco sukcese forigita! edit: @@ -412,6 +413,7 @@ eo: attempts_over_week: one: "%{count} provo ekde lasta semajno" other: "%{count} registroprovoj ekde lasta semajno" + created_msg: Sukcese blokita retpoŝta domajno delete: Forigi dns: types: @@ -420,6 +422,7 @@ eo: new: create: Aldoni domajnon resolve: Solvi domajnon + title: Bloki novan retpoŝtan domajnon not_permitted: Ne permesita resolved_through_html: Solvis tra %{domain} export_domain_allows: @@ -572,6 +575,7 @@ eo: silence_description_html: La konto estos videbla al nur personoj kiu jam sekvis ĝin au permane serĉo ĝin, ege limigante ĝian atingon. Malfermi ciujn raportojn kontra ĉi tiun konton. suspend_description_html: La konto kaj ciuj ĝiaj enhavoj estos neatingebla kaj poŝte forigitas, kaj interagi per ĝi estos neebla. Malfermi ciujn raportojn kontra ĉi tiu konto. actions_description_remote_html: Decidu kiun klopodon por solvi ĉi tiun raporton. Ĉi tiu efikas kiel nur via servilo komuniki per ĉi tiu fora konto kaj trakti ĝian enhavon. + actions_no_posts: Ĉi tiu raporto havas neniujn rilatajn afiŝojn por forigi add_to_report: Aldoni pli al raporto are_you_sure: Ĉu vi certas? assign_to_self: Asigni al mi @@ -608,6 +612,7 @@ eo: report: 'Signalo #%{id}' reported_account: Signalita konto reported_by: Signalita de + reported_with_application: Raportita per aplikaĵo resolved: Solvitaj resolved_msg: Signalo sukcese solvita! skip_to_actions: Salti al agoj @@ -804,6 +809,8 @@ eo: message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite elasticsearch_preset: action: Legi dokumentaron + elasticsearch_preset_single_node: + action: Vidi dokumentadon elasticsearch_running_check: message_html: Ne eblas konekti Elasticsearch. Bonvolu kontroli ke ĝi funkcias, aǔ malŝaltu plentekstan serĉon elasticsearch_version_check: @@ -814,6 +821,8 @@ eo: message_html: Vi ne difinis iujn servilajn regulojn. sidekiq_process_check: message_html: Neniu Sidekiq-procezo por la %{value} vico + software_version_critical_check: + action: Vidi disponeblajn ĝisdatigojn upload_check_privacy_error: action: Klaku ĉi tie por pliaj informoj message_html: "Via retservilo estas misagordita. La privateco de viaj uzantoj estas en risko." @@ -975,7 +984,9 @@ eo: guide_link_text: Ĉiu povas kontribui. sensitive_content: Tikla enhavo application_mailer: + notification_preferences: Ŝanĝi retpoŝtajn preferojn salutation: "%{name}," + settings: 'Ŝanĝi retpoŝtajn preferojn: %{link}' unsubscribe: Malabonu view: 'Vidi:' view_profile: Vidi profilon @@ -994,8 +1005,11 @@ eo: help_html: Se vi havas problemojn solvi la CAPTCHA, vi povas kontakti nin per %{email} kaj ni povas helpi vin. title: Sekureckontrolo confirmations: + clicking_this_link: alklakante ĉi tiun ligilon login_link: ensaluti + registration_complete: Via registriĝo sur %{domain} nun finiĝis! welcome_title: Bonvenon, %{name}! + wrong_email_hint: Se tiu retadreso ne estas ĝusta, vi povas ŝanĝi ĝin en kontagordoj. delete_account: Forigi konton delete_account_html: Se vi deziras forigi vian konton, vi povas fari tion ĉi tie. Vi bezonos konfirmi vian peton. description: @@ -1016,6 +1030,7 @@ eo: or_log_in_with: Aŭ saluti per privacy_policy_agreement_html: Mi legis kaj konsentis pri privatpolitiko progress: + confirm: Konfirmi retadreson details: Viaj detaloj review: Niaj recenzoj rules: Akcepti regulojn @@ -1053,8 +1068,10 @@ eo: too_fast: Formularo sendita tro rapide, klopodu denove. use_security_key: Uzi sekurecan ŝlosilon author_attribution: + example_title: Ekzempla teksto more_from_html: Pli de %{name} s_blog: Blogo de %{name} + title: Atribuo de aŭtoro challenge: confirm: Daŭrigi hint_html: "Konsileto: Ni ne demandos pri via pasvorto ĝis 1 horo." @@ -1250,8 +1267,10 @@ eo: overwrite: Anstataŭigi overwrite_long: Anstataŭigi la nunajn registrojn per la novaj preface: Vi povas importi datumojn, kiujn vi eksportis el alia servilo, kiel liston de homoj, kiujn vi sekvas aŭ blokas. + recent_imports: Lastatempaj importoj states: finished: Finita + in_progress: Farata unconfirmed: Nekonfirmita status: Stato success: Viaj datumoj estis sukcese alŝutitaj kaj estos traktitaj kiel planite @@ -1541,7 +1560,6 @@ eo: delete: Konta forigo development: Evoluigado edit_profile: Redakti profilon - export: Eksporti datumojn featured_tags: Elstarigitaj kradvortoj import: Enporti import_and_export: Importi kaj eksporti @@ -1553,6 +1571,9 @@ eo: strikes: Kontroladmonoj two_factor_authentication: Dufaktora aŭtentigo webauthn_authentication: Sekurecaj ŝlosiloj + severed_relationships: + lost_followers: Perditaj sekvantoj + type: Evento statuses: attached: audio: @@ -1719,6 +1740,12 @@ eo: explanation: Jen kelkaj konsiloj por helpi vin komenci feature_action: Lerni pli follow_action: Sekvi + hashtags_title: Popularaj kradvortoj + hashtags_view_more: Vidi pli da popularaj kradvortoj + post_step: Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj. + post_title: Faru vian unuan afiŝon + share_step: Sciigu viajn amikojn kiel trovi vin sur Mastodon. + sign_in_action: Ensaluti subject: Bonvenon en Mastodon title: Bonvenon, %{name}! users: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 9f1dc46c9d..01685f99fe 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1692,7 +1692,6 @@ es-AR: delete: Eliminación de la cuenta development: Desarrollo edit_profile: Editar perfil - export: Exportación de datos featured_tags: Etiquetas destacadas import: Importar import_and_export: Importación y exportación diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 0325757dca..a8ff5c6938 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1692,7 +1692,6 @@ es-MX: delete: Borrar cuenta development: Desarrollo edit_profile: Editar perfil - export: Exportar información featured_tags: Hashtags destacados import: Importar import_and_export: Importar y exportar diff --git a/config/locales/es.yml b/config/locales/es.yml index 2815ada779..ab7fd3bc54 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1692,7 +1692,6 @@ es: delete: Borrar cuenta development: Desarrollo edit_profile: Editar perfil - export: Exportar información featured_tags: Hashtags destacados import: Importar import_and_export: Importar y exportar diff --git a/config/locales/et.yml b/config/locales/et.yml index 60f98a471e..b71e3ccb68 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1692,7 +1692,6 @@ et: delete: Konto kustutamine development: Arendus edit_profile: Muuda profiili - export: Andmete eksportimine featured_tags: Esile toodud sildid import: Impordi import_and_export: Import / eksport diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 7c7f995a71..e80207d46f 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1592,7 +1592,6 @@ eu: delete: Kontuaren ezabaketa development: Garapena edit_profile: Editatu profila - export: Datuen esportazioa featured_tags: Nabarmendutako traolak import: Inportazioa import_and_export: Inportatu eta esportatu diff --git a/config/locales/fa.yml b/config/locales/fa.yml index c2c22af4c4..e7d932de11 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1438,7 +1438,6 @@ fa: delete: پاک‌کردن حساب development: فرابری edit_profile: ویرایش نمایه - export: برون‌سپاری داده‌ها featured_tags: برچسب‌های برگزیده import: درون‌ریزی import_and_export: درون‌ریزی و برون‌بری diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 5df82bff9f..9bd0f12241 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1692,7 +1692,6 @@ fi: delete: Tilin poisto development: Kehitys edit_profile: Muokkaa profiilia - export: Vie tietoja featured_tags: Suositellut aihetunnisteet import: Tuo tietoja import_and_export: Tuonti ja vienti diff --git a/config/locales/fo.yml b/config/locales/fo.yml index ce21aa3be7..50b4802bc7 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1692,7 +1692,6 @@ fo: delete: Striking av kontu development: Menning edit_profile: Rætta vanga - export: Útflyt dátur featured_tags: Varpaði frámerki import: Innflyt import_and_export: Innflyt og útflyt diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 3f9252ffab..6ab0ee6660 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -1692,7 +1692,6 @@ fr-CA: delete: Suppression du compte development: Développement edit_profile: Modifier le profil - export: Export de données featured_tags: Hashtags mis en avant import: Import de données import_and_export: Import et export diff --git a/config/locales/fr.yml b/config/locales/fr.yml index cb76ae2243..6e13466bfe 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1692,7 +1692,6 @@ fr: delete: Suppression du compte development: Développement edit_profile: Modifier le profil - export: Export de données featured_tags: Hashtags mis en avant import: Import de données import_and_export: Import et export diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 8b854494d4..0379af34e9 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1682,7 +1682,6 @@ fy: delete: Account fuortsmite development: Untwikkelers edit_profile: Profyl bewurkje - export: Eksportearje featured_tags: Utljochte hashtags import: Ymportearje import_and_export: Ymportearje en eksportearje diff --git a/config/locales/ga.yml b/config/locales/ga.yml index a6369354cd..9513623932 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1770,7 +1770,6 @@ ga: delete: Scriosadh cuntais development: Forbairt edit_profile: Cuir an phróifíl in eagar - export: Easpórtáil sonraí featured_tags: Haischlib faoi thrácht import: Iompórtáil import_and_export: Iompórtáil agus easpórtáil diff --git a/config/locales/gd.yml b/config/locales/gd.yml index b5cbc4a73e..90d03c74e1 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1744,7 +1744,6 @@ gd: delete: Sguabadh às cunntais development: Leasachadh edit_profile: Deasaich a’ phròifil - export: Às-phortadh dàta featured_tags: Tagaichean hais brosnaichte import: Ion-phortadh import_and_export: Ion-phortadh ⁊ às-phortadh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 9813514a7b..2eadb2ba6b 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1692,7 +1692,7 @@ gl: delete: Eliminación da conta development: Desenvolvemento edit_profile: Editar perfil - export: Exportar datos + export: Exportar featured_tags: Cancelos destacados import: Importar import_and_export: Importar e exportar diff --git a/config/locales/he.yml b/config/locales/he.yml index 13a1f6f05d..c7af22660f 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1744,7 +1744,6 @@ he: delete: מחיקת חשבון development: פיתוח edit_profile: עריכת פרופיל - export: יצוא מידע featured_tags: תגיות נבחרות import: יבוא import_and_export: יבוא ויצוא diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 7dacf20077..908cbf51c4 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -205,7 +205,6 @@ hr: delete: Brisanje računa development: Razvijanje edit_profile: Uredi profil - export: Izvoz podataka featured_tags: Istaknuti hashtagovi import: Uvezi import_and_export: Uvezi i izvezi diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 9767c48834..2f6a4c5778 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1692,7 +1692,6 @@ hu: delete: Fiók törlése development: Fejlesztőknek edit_profile: Profil szerkesztése - export: Adatok exportálása featured_tags: Kiemelt hashtagek import: Importálás import_and_export: Import és export diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 1fda020c07..201922d102 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -757,7 +757,6 @@ hy: delete: Հաշուի ջնջում development: Ծրագրավորում edit_profile: Խմբագրել պրոֆիլը - export: Տվյալների արտահանում featured_tags: Ընտրուած հէշթեգեր import: Ներմուծել import_and_export: Ներմուծել և արտահանել diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 6632af061e..a8bc48b306 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -1675,7 +1675,6 @@ ia: delete: Deletion de conto development: Disveloppamento edit_profile: Modificar profilo - export: Exportation de datos featured_tags: Hashtags in evidentia import: Importar import_and_export: Importar e exportar diff --git a/config/locales/id.yml b/config/locales/id.yml index 96a5022a7c..6a005fddaa 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -1347,7 +1347,6 @@ id: delete: Penghapusan akun development: Pengembangan edit_profile: Ubah profil - export: Expor data featured_tags: Tagar unggulan import: Impor import_and_export: Impor dan ekspor diff --git a/config/locales/ie.yml b/config/locales/ie.yml index 513a8eda7e..7e8140a374 100644 --- a/config/locales/ie.yml +++ b/config/locales/ie.yml @@ -1590,7 +1590,6 @@ ie: delete: Deletion de conto development: Developation edit_profile: Modificar profil - export: Exportation de data featured_tags: Recomandat hashtags import: Importar import_and_export: Importation e exportation diff --git a/config/locales/io.yml b/config/locales/io.yml index 97cc417df0..dfb583450a 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1555,7 +1555,6 @@ io: delete: Kontoefaco development: Developo edit_profile: Redaktar la profilo - export: Exportacar datumi featured_tags: Estelata hashtagi import: Importacar import_and_export: Importaco e exportaco diff --git a/config/locales/is.yml b/config/locales/is.yml index 590805ad30..4af26eea0b 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1696,7 +1696,6 @@ is: delete: Eyðing notandaaðgangs development: Þróun edit_profile: Breyta notandasniði - export: Útflutningur gagna featured_tags: Myllumerki með aukið vægi import: Flytja inn import_and_export: Inn- og útflutningur diff --git a/config/locales/it.yml b/config/locales/it.yml index fe6fec17d7..9fdeede8bf 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1694,7 +1694,6 @@ it: delete: Cancellazione account development: Sviluppo edit_profile: Modifica profilo - export: Esportazione dati featured_tags: Hashtag in evidenza import: Importa import_and_export: Importa ed esporta diff --git a/config/locales/ja.yml b/config/locales/ja.yml index cdc1fd18a8..41f93397da 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1659,7 +1659,6 @@ ja: delete: アカウントの削除 development: 開発 edit_profile: プロフィールを編集 - export: データのエクスポート featured_tags: 注目のハッシュタグ import: データのインポート import_and_export: インポート・エクスポート diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 5769375078..2a0365fbf5 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -410,7 +410,6 @@ ka: delete: ანგარიშის გაუქმება development: დეველოპმენტი edit_profile: პროფილის ცვლილება - export: მონაცემის ექსპორტი import: იმპორტი migrate: ანგარიშის მიგრაცია preferences: პრეფერენციები diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 88193f8434..12bda84d46 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -776,7 +776,6 @@ kab: delete: Tukksa n umiḍan development: Taneflit edit_profile: Ẓreg amaɣnu - export: Taktert n yisefka import: Kter import_and_export: Taktert d usifeḍ migrate: Tunigin n umiḍan diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 67969d4d69..537104ba51 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -623,7 +623,6 @@ kk: delete: Аккаунт өшіру development: Жасаушы топ edit_profile: Профиль өңдеу - export: Экспорт уақыты featured_tags: Таңдаулы хэштегтер import: Импорт import_and_export: Импорт/экспорт diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 216e468762..ba43310e02 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1668,7 +1668,7 @@ ko: delete: 계정 삭제 development: 개발 edit_profile: 프로필 편집 - export: 데이터 내보내기 + export: 내보내기 featured_tags: 추천 해시태그 import: 데이터 가져오기 import_and_export: 가져오기 & 내보내기 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 08843f645e..ddd214441c 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1369,7 +1369,6 @@ ku: delete: Jêbirina ajimêr development: Pêşdebir edit_profile: Profîlê serrast bike - export: Derxistinê daneyan featured_tags: Hashtagên bijarte import: Têxistin import_and_export: Têxistin û derxistin diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 4136877ede..275bdab861 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -1652,7 +1652,6 @@ lad: delete: Efasa kuento development: Dezvelopamiento edit_profile: Edita profil - export: Eksporta enformasyon featured_tags: Etiketas avaliadas import: Importo import_and_export: Importo i eksporto diff --git a/config/locales/lt.yml b/config/locales/lt.yml index fa07eb6f59..ef13817028 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -1090,7 +1090,6 @@ lt: delete: Paskyros trynimas development: Kūrimas edit_profile: Redaguoti profilį - export: Duomenų eksportas featured_tags: Rodomi saitažodžiai import: Importuoti import_and_export: Importas ir eksportas diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 4aeec5ceca..16844a95c2 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1130,6 +1130,8 @@ lv: too_fast: Veidlapa ir iesniegta pārāk ātri, mēģini vēlreiz. use_security_key: Lietot drošības atslēgu author_attribution: + example_title: Parauga teksts + more_from_html: Vairāk no %{name} s_blog: "%{name} emuāri" title: Autora attiecinājums challenge: @@ -1650,20 +1652,23 @@ lv: delete: Konta dzēšana development: Izstrāde edit_profile: Labot profilu - export: Datu eksports featured_tags: Piedāvātie tēmturi import: Imports import_and_export: Imports un eksports migrate: Konta migrācija + notifications: E-pasta paziņojumi preferences: Iestatījumi profile: Profils relationships: Sekojamie un sekotāji + severed_relationships: Pārtrauktās attiecības statuses_cleanup: Automātiska ziņu dzēšana strikes: Moderācijas aizrādījumi two_factor_authentication: Divpakāpju autentifikācija webauthn_authentication: Drošības atslēgas severed_relationships: download: Lejupielādēt (%{count}) + lost_followers: Zaudētie sekotāji + lost_follows: Zaudētie sekojumi type: Notikums statuses: attached: @@ -1829,6 +1834,8 @@ lv: suspend: Konts apturēts welcome: apps_android_action: Iegūt to Google Play + apps_ios_action: Lejupielādēt no App Store + apps_step: Lejupielādēt mūsu oficiālās lietotnes. apps_title: Mastodon lietotnes edit_profile_action: Pielāgot edit_profile_title: Pielāgo savu profilu diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 0c0ffb69bf..9994a34bb5 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -1529,7 +1529,6 @@ ms: delete: Pemadaman akaun development: Pembangunan edit_profile: Sunting profil - export: Eksport data featured_tags: Tanda pagar terpilih import: Import import_and_export: Import dan eksport diff --git a/config/locales/my.yml b/config/locales/my.yml index 6acaa34cdc..598915fad9 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -1529,7 +1529,6 @@ my: delete: အကောင့်ဖျက်သိမ်းခြင်း development: Development edit_profile: ပရိုဖိုင်ပြင်ဆင်ရန် - export: အချက်အလက်ထုတ်ယူခြင်း featured_tags: အသားပေးဖော်ပြထားသည့် ဟက်ရှ်တဂျ်များ import: ထည့်သွင်းခြင်း import_and_export: ထည့်သွင်းခြင်းနှင့် ထုတ်ယူခြင်း diff --git a/config/locales/nn.yml b/config/locales/nn.yml index dcf571a792..98f62e123a 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1692,7 +1692,6 @@ nn: delete: Kontosletting development: Utvikling edit_profile: Endr profil - export: Dataeksport featured_tags: Utvalgte emneknagger import: Hent inn import_and_export: Importer og eksporter diff --git a/config/locales/no.yml b/config/locales/no.yml index 1f0b6bacce..ec0b14d5a3 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1584,7 +1584,6 @@ delete: Kontosletting development: Utvikling edit_profile: Endre profil - export: Dataeksport featured_tags: Utvalgte emneknagger import: Importér import_and_export: Importer og eksporter diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 5cdd9240b0..a30126c44b 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -813,7 +813,6 @@ oc: delete: Supression de compte development: Desvolopament edit_profile: Modificar lo perfil - export: Exportar de donadas featured_tags: Etiquetas en avant import: Importar de donadas import_and_export: Import e export diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 314adf885f..e68ea2b16a 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1744,7 +1744,6 @@ pl: delete: Usuń konto development: Tworzenie aplikacji edit_profile: Edytuj profil - export: Eksportowanie danych featured_tags: Wyróżnione hashtagi import: Importowanie danych import_and_export: Import i eksport diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 7742a80569..ba21dd1b3b 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1692,7 +1692,6 @@ pt-BR: delete: Exclusão de conta development: Desenvolvimento edit_profile: Editar perfil - export: Exportar dados featured_tags: Hashtags em destaque import: Importar import_and_export: Importar e exportar diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index d6c5c4a6ff..6b48e8de26 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1679,7 +1679,6 @@ pt-PT: delete: Eliminação da conta development: Desenvolvimento edit_profile: Editar perfil - export: Exportar dados featured_tags: Etiquetas destacadas import: Importar import_and_export: Importar e exportar diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 3877727490..c61c7f459f 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1741,7 +1741,6 @@ ru: delete: Удаление учётной записи development: Разработчикам edit_profile: Изменить профиль - export: Экспорт данных featured_tags: Избранные хэштеги import: Импорт import_and_export: Импорт и экспорт diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 780270ddf1..306e670b71 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -1080,7 +1080,6 @@ sc: delete: Eliminatzione de su contu development: Isvilupu edit_profile: Modìfica profilu - export: Esportatzione de datos featured_tags: Etichetas in evidèntzia import: Importatzione import_and_export: Importatzione e esportatzione diff --git a/config/locales/sco.yml b/config/locales/sco.yml index 97eaa21ed6..8cc733a4ac 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -1359,7 +1359,6 @@ sco: delete: Accoont deletion development: Development edit_profile: Edit profile - export: Data export featured_tags: Featured hashtags import: Import import_and_export: Import an export diff --git a/config/locales/si.yml b/config/locales/si.yml index 8460de01da..270e0ae3fc 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -1234,7 +1234,6 @@ si: delete: ගිණුම මැකීම development: සංවර්ධනය edit_profile: පැතිකඩ සංස්කරණය - export: දත්ත නිර්යාතය featured_tags: විශේෂාංගගත හැෂ් ටැග් import: ආයාතය import_and_export: ආයාත හා නිර්යාත diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index f2108828d5..8c84e35a4d 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -79,14 +79,14 @@ es-MX: form_admin_settings: activity_api_enabled: Conteo de publicaciones publicadas localmente, usuarios activos, y nuevos registros en periodos semanales app_icon: WEBP, PNG, GIF o JPG. Reemplaza el icono de aplicación predeterminado en dispositivos móviles con un icono personalizado. - backups_retention_period: Los usuarios tienen la capacidad de generar archivos de sus mensajes para descargar más adelante. Cuando se establece un valor positivo, estos archivos se eliminarán automáticamente del almacenamiento después del número de días especificado. + backups_retention_period: Los usuarios tienen la posibilidad de generar archivos de sus mensajes para descargarlos más adelante. Cuando se establece en un valor positivo, estos archivos se eliminarán automáticamente del almacenamiento después del número especificado de días. bootstrap_timeline_accounts: Estas cuentas aparecerán en la parte superior de las recomendaciones de los nuevos usuarios. closed_registrations_message: Mostrado cuando los registros están cerrados - content_cache_retention_period: Todas las publicaciones de otros servidores (incluso impulsos y respuestas) se eliminarán después del número de días especificado, sin tener en cuenta la interacción del usuario local con esos mensajes. Esto incluye mensajes donde un usuario local los ha marcado como marcadores o favoritos. Las menciones privadas entre usuarios de diferentes instancias también se perderán sin posibilidad de recuperación. El uso de esta configuración está destinado a instancias de propósito especial, y rompe muchas expectativas de los usuarios cuando se implementa para un uso de propósito general. + content_cache_retention_period: Todas las publicaciones de otros servidores (incluyendo impuestos y respuestas) serán borrados después del número de días especificado, sin tener en cuenta cualquier interacción del usuario local con esas publicaciones. Esto incluye los mensajes que un usuario local haya marcado como favoritos. Las menciones privadas entre usuarios de diferentes instancias también se perderán y será imposible restaurarlas. El uso de esta configuración está pensado para instancias de propósito especial y rompe muchas expectativas de los usuarios cuando se implementa para uso general. custom_css: Puedes aplicar estilos personalizados a la versión web de Mastodon. favicon: WEBP, PNG, GIF o JPG. Reemplaza el icono predeterminado de Mastodon con un icono personalizado. mascot: Reemplaza la ilustración en la interfaz web avanzada. - media_cache_retention_period: Los archivos multimedia de las publicaciones creadas por usuarios remotos se almacenan en caché en tu servidor. Cuando se establece un valor positivo, estos archivos se eliminarán después del número especificado de días. Si los datos multimedia se solicitan después de eliminarse, se volverán a descargar, si el contenido fuente todavía está disponible. Debido a restricciones en la frecuencia con la que las tarjetas de previsualización de enlaces realizan peticiones a sitios de terceros, se recomienda establecer este valor a al menos 14 días, o las tarjetas de previsualización de enlaces no se actualizarán bajo demanda antes de ese momento. + media_cache_retention_period: Los archivos multimedia de las publicaciones realizadas por usuarios remotos se almacenan en caché en su servidor. Si se establece en un valor positivo, los archivos multimedia se eliminarán tras el número de días especificado. Si los datos multimedia se solicitan después de haber sido eliminados, se volverán a descargar, si el contenido de origen sigue estando disponible. Debido a las restricciones sobre la frecuencia con la que las tarjetas de previsualización de enlaces sondean sitios de terceros, se recomienda establecer este valor en al menos 14 días, o las tarjetas de previsualización de enlaces no se actualizarán bajo demanda antes de ese tiempo. peers_api_enabled: Una lista de nombres de dominio que este servidor ha encontrado en el fediverso. Aquí no se incluye ningún dato sobre si usted federa con un servidor determinado, sólo que su servidor lo sabe. Esto es utilizado por los servicios que recopilan estadísticas sobre la federación en un sentido general. profile_directory: El directorio de perfiles lista a todos los usuarios que han optado por que su cuenta pueda ser descubierta. require_invite_text: Cuando los registros requieren aprobación manual, hace obligatoria la entrada de texto "¿Por qué quieres unirte?" en lugar de opcional @@ -249,7 +249,7 @@ es-MX: backups_retention_period: Período de retención del archivo de usuario bootstrap_timeline_accounts: Recomendar siempre estas cuentas a nuevos usuarios closed_registrations_message: Mensaje personalizado cuando los registros no están disponibles - content_cache_retention_period: Período de retención de contenido remoto + content_cache_retention_period: Periodo de conservación de contenidos remotos custom_css: CSS personalizado favicon: Favicon mascot: Mascota personalizada (legado) diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index ed27e08bc3..9cc32457f7 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -82,6 +82,7 @@ lv: backups_retention_period: Lietotājiem ir iespēja izveidot savu ierakstu arhīvu lejupielādēšanai vēlāk. Kad iestatīta pozitīva vērtība, šie arhīvi tiks automātiski izdzēsti no krātuves pēc norādītā dienu skaita. bootstrap_timeline_accounts: Šie konti tiks piesprausti jauno lietotāju ieteikumu augšdaļā. closed_registrations_message: Tiek rādīts, kad reģistrēšanās ir slēgta + content_cache_retention_period: Visi ieraksti no citiem serveriem (tajā skaitā pastiprinājumi un atbildes) tiks izdzēsti pēc norādītā dienu skaita, neņemot vērā vietēja lietotāja mijiedarbību ar šādiem ierakstiem. Tas ietver ierakstus, kurus vietējs lietotājs ir atzīmējis kā grāmatzīmi vai pievienojis izlasē. Tiks zaudēti arī privāti pieminējumi starp lietotājiem no dažādiem serveriem, un tos nebūs iespējams atgūt. Šī iestatījuma izmantošana ir paredzēta īpašam nolūkam paredzētiem serveriem un neatbilst tam, ko sagaida vairums lietotāju, kad pielietots vispārējas izmantošanas serveros. custom_css: Vari lietot pielāgotus stilus Mastodon tīmekļa versijā. favicon: WEBP, PNG, GIF vai JPG. Aizstāj noklusējuma Mastodon favikonu ar pielāgotu. mascot: Ignorē ilustrāciju uzlabotajā tīmekļa saskarnē. diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 9d3845e7a7..aa8dbe7693 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -126,7 +126,7 @@ sk: setting_system_font_ui: Použi základné systémové písmo setting_theme: Vzhľad webu setting_trends: Ukáž dnešné trendy - setting_unfollow_modal: Vyžaduj potvrdenie pred skončením sledovania iného užívateľa + setting_unfollow_modal: Vyžaduj potvrdenie pred tým, než niekoho prestaneš sledovať setting_use_blurhash: Ukáž farebné prechody pre skryté médiá setting_use_pending_items: Pomalý režim severity: Závažnosť diff --git a/config/locales/sk.yml b/config/locales/sk.yml index d7eacb6850..8076682ed4 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -394,6 +394,7 @@ sk: resolve: Preveď doménu not_permitted: Nepovolená resolved_through_html: Prevedená cez %{domain} + title: Blokované e-mailové domény export_domain_allows: new: title: Nahraj povolené domény @@ -401,6 +402,7 @@ sk: export_domain_blocks: import: existing_relationships_warning: Existujúce vzťahy nasledovania + private_comment_template: 'Importované z: %{source} dňa %{date}' title: Nahraj zákazy domén new: title: Nahraj zákazy domén @@ -1097,7 +1099,7 @@ sk: subject: "%{name} si obľúbil/a tvoj príspevok" title: Novo obľúbené follow: - body: "%{name} ťa teraz následuje!" + body: "%{name} ťa teraz nasleduje!" subject: "%{name} ťa teraz nasleduje" title: Nový sledovateľ follow_request: @@ -1166,7 +1168,7 @@ sk: follow_failure: Nemožno nasledovať niektoré z vybraných účtov. follow_selected_followers: Následuj označených sledovatelov followers: Následovatelia - following: Následovaní + following: Nasledovaní invited: Pozvaný/á last_active: Naposledy aktívny most_recent: Najnovšie @@ -1226,7 +1228,6 @@ sk: delete: Vymazanie účtu development: Vývoj edit_profile: Uprav profil - export: Exportuj dáta featured_tags: Zvýraznené haštagy import: Importuj import_and_export: Import a export diff --git a/config/locales/sl.yml b/config/locales/sl.yml index c8e806bf35..286bece877 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1729,7 +1729,6 @@ sl: delete: Brisanje računa development: Razvoj edit_profile: Uredi profil - export: Izvoz podatkov featured_tags: Vključeni ključniki import: Uvozi import_and_export: Uvoz in izvoz diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 294c8a888f..c1ed91cf96 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -296,6 +296,7 @@ sq: filter_by_action: Filtroji sipas veprimit filter_by_user: Filtroji sipas përdoruesit title: Regjistër auditimesh + unavailable_instance: "(emër përkatësie jo i passhëm)" announcements: destroyed_msg: Lajmërimi u fshi me sukses! edit: @@ -1684,7 +1685,7 @@ sq: delete: Fshirje llogarie development: Zhvillim edit_profile: Përpunoni profilin - export: Eksportim të dhënash + export: Eksportim featured_tags: Hashtag-ë të zgjedhur import: Importo import_and_export: Importim dhe eksportim diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index bfb52c275b..ad14d9d131 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1619,7 +1619,6 @@ sr-Latn: delete: Brisanje naloga development: Razvoj edit_profile: Uređivanje profila - export: Izvoz podataka featured_tags: Istaknute heš oznake import: Uvoz import_and_export: Uvoz i izvoz diff --git a/config/locales/sr.yml b/config/locales/sr.yml index af7e7ab8d6..fc92b98176 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1649,7 +1649,6 @@ sr: delete: Брисање налога development: Развој edit_profile: Уређивање профила - export: Извоз података featured_tags: Истакнуте хеш ознаке import: Увоз import_and_export: Увоз и извоз diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 6146cfc8d7..ab54500537 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1645,7 +1645,7 @@ sv: delete: Konto radering development: Utveckling edit_profile: Redigera profil - export: Exportera data + export: Export featured_tags: Utvalda hashtaggar import: Importera import_and_export: Import och export diff --git a/config/locales/th.yml b/config/locales/th.yml index d56385f261..fa04b6030a 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1666,7 +1666,6 @@ th: delete: การลบบัญชี development: การพัฒนา edit_profile: แก้ไขโปรไฟล์ - export: การส่งออกข้อมูล featured_tags: แฮชแท็กที่น่าสนใจ import: การนำเข้า import_and_export: การนำเข้าและการส่งออก diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 16dd4c899d..d2cf412cc9 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1692,7 +1692,6 @@ tr: delete: Hesap silme development: Geliştirme edit_profile: Profili düzenle - export: Veriyi dışa aktar featured_tags: Öne çıkan etiketler import: İçe aktar import_and_export: İçe ve dışa aktar diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0ef08a1555..d0164d846a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1744,7 +1744,6 @@ uk: delete: Видалення облікового запису development: Розробка edit_profile: Редагувати профіль - export: Експорт даних featured_tags: Рекомендовані хештеґи import: Імпорт import_and_export: Імпорт та експорт diff --git a/config/locales/vi.yml b/config/locales/vi.yml index d969ad7d4f..21fc4a3bf1 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1666,7 +1666,7 @@ vi: delete: Xóa tài khoản development: Lập trình edit_profile: Sửa hồ sơ - export: Xuất dữ liệu + export: Xuất featured_tags: Hashtag thường dùng import: Nhập dữ liệu import_and_export: Dữ liệu diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 8b34da076a..ade35ceb62 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1666,7 +1666,6 @@ zh-CN: delete: 删除账户 development: 开发 edit_profile: 更改个人资料 - export: 导出 featured_tags: 精选的话题标签 import: 导入 import_and_export: 导入和导出 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 598c65d049..c0726fc2f7 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1564,7 +1564,6 @@ zh-HK: delete: 刪除帳戶 development: 開發 edit_profile: 修改個人資料 - export: 匯出 featured_tags: 推薦的標籤 import: 匯入 import_and_export: 匯入及匯出 From db57fe80c8a4fcac2b0fb857c7eb959cbf82a2e0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 26 Sep 2024 04:54:01 -0400 Subject: [PATCH 004/550] Remove `page_json` var from ap/replies spec (#32000) --- .../activitypub/replies_controller_spec.rb | 82 ++++++++++++++----- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb index 27821b0d4e..d7c2c2d3b0 100644 --- a/spec/controllers/activitypub/replies_controller_spec.rb +++ b/spec/controllers/activitypub/replies_controller_spec.rb @@ -66,7 +66,6 @@ RSpec.describe ActivityPub::RepliesController do context 'when status is public' do let(:parent_visibility) { :public } - let(:page_json) { response.parsed_body[:first] } it 'returns http success and correct media type' do expect(response) @@ -78,16 +77,28 @@ RSpec.describe ActivityPub::RepliesController do context 'without only_other_accounts' do it "returns items with thread author's replies" do - expect(page_json).to be_a Hash - expect(page_json[:items]).to be_an Array - expect(page_json[:items].size).to eq 1 - expect(page_json[:items].all? { |item| targets_public_collection?(item) }).to be true + expect(response.parsed_body) + .to include( + first: be_a(Hash).and( + include( + items: be_an(Array) + .and(have_attributes(size: 1)) + .and(all(satisfy { |item| targets_public_collection?(item) })) + ) + ) + ) end context 'when there are few self-replies' do it 'points next to replies from other people' do - expect(page_json).to be_a Hash - expect(parsed_uri_query_values(page_json[:next])).to include('only_other_accounts=true', 'page=true') + expect(response.parsed_body) + .to include( + first: be_a(Hash).and( + include( + next: satisfy { |value| (parsed_uri_query_values(value) & %w(only_other_accounts=true page=true)).any? } + ) + ) + ) end end @@ -97,8 +108,14 @@ RSpec.describe ActivityPub::RepliesController do end it 'points next to other self-replies' do - expect(page_json).to be_a Hash - expect(parsed_uri_query_values(page_json[:next])).to include('only_other_accounts=false', 'page=true') + expect(response.parsed_body) + .to include( + first: be_a(Hash).and( + include( + next: satisfy { |value| (parsed_uri_query_values(value) & %w(only_other_accounts=false page=true)).any? } + ) + ) + ) end end end @@ -107,26 +124,31 @@ RSpec.describe ActivityPub::RepliesController do let(:only_other_accounts) { 'true' } it 'returns items with other public or unlisted replies' do - expect(page_json).to be_a Hash - expect(page_json[:items]).to be_an Array - expect(page_json[:items].size).to eq 3 + expect(response.parsed_body) + .to include( + first: be_a(Hash).and( + include(items: be_an(Array).and(have_attributes(size: 3))) + ) + ) end it 'only inlines items that are local and public or unlisted replies' do - inlined_replies = page_json[:items].select { |x| x.is_a?(Hash) } - expect(inlined_replies.all? { |item| targets_public_collection?(item) }).to be true - expect(inlined_replies.all? { |item| ActivityPub::TagManager.instance.local_uri?(item[:id]) }).to be true + expect(inlined_replies) + .to all(satisfy { |item| targets_public_collection?(item) }) + .and all(satisfy { |item| ActivityPub::TagManager.instance.local_uri?(item[:id]) }) end it 'uses ids for remote toots' do - remote_replies = page_json[:items].reject { |x| x.is_a?(Hash) } - expect(remote_replies.all? { |item| item.is_a?(String) && !ActivityPub::TagManager.instance.local_uri?(item) }).to be true + expect(remote_replies) + .to all(satisfy { |item| item.is_a?(String) && !ActivityPub::TagManager.instance.local_uri?(item) }) end context 'when there are few replies' do it 'does not have a next page' do - expect(page_json).to be_a Hash - expect(page_json[:next]).to be_nil + expect(response.parsed_body) + .to include( + first: be_a(Hash).and(not_include(next: be_present)) + ) end end @@ -136,8 +158,14 @@ RSpec.describe ActivityPub::RepliesController do end it 'points next to other replies' do - expect(page_json).to be_a Hash - expect(parsed_uri_query_values(page_json[:next])).to include('only_other_accounts=true', 'page=true') + expect(response.parsed_body) + .to include( + first: be_a(Hash).and( + include( + next: satisfy { |value| (parsed_uri_query_values(value) & %w(only_other_accounts=true page=true)).any? } + ) + ) + ) end end end @@ -193,6 +221,18 @@ RSpec.describe ActivityPub::RepliesController do private + def inlined_replies + response + .parsed_body[:first][:items] + .select { |x| x.is_a?(Hash) } + end + + def remote_replies + response + .parsed_body[:first][:items] + .reject { |x| x.is_a?(Hash) } + end + def parsed_uri_query_values(uri) Addressable::URI .parse(uri) From 00aaf77e04ce3aeadd976b4e1726c49794b3ea89 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Thu, 26 Sep 2024 13:48:01 +0200 Subject: [PATCH 005/550] Use same styling for statuses in email as on web (#32073) --- app/javascript/styles/mailer.scss | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss index e5d0c05f81..2c1b443cb5 100644 --- a/app/javascript/styles/mailer.scss +++ b/app/javascript/styles/mailer.scss @@ -168,6 +168,7 @@ table + p { // Utility classes .email-w-full { + table-layout: fixed; width: 100%; } @@ -587,7 +588,10 @@ table + p { p { font-size: 14px; line-height: 20px; + margin-bottom: 20px; color: #17063b; + white-space: pre-wrap; + unicode-bidi: plaintext; } a { @@ -598,6 +602,21 @@ table + p { color: #563acc !important; } } + + .invisible { + font-size: 0; + line-height: 0; + display: inline-block; + width: 0; + height: 0; + position: absolute; + } + + .ellipsis { + &::after { + content: '…'; + } + } } .email-status-media { From 89df27a06c69818d38621c1147c6724d76beefde Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 Sep 2024 14:31:32 +0200 Subject: [PATCH 006/550] Change design of media tab on profiles in web UI (#31967) --- .../mastodon/components/media_gallery.jsx | 13 +- app/javascript/mastodon/components/status.jsx | 38 ++-- .../account_gallery/components/media_item.jsx | 158 -------------- .../account_gallery/components/media_item.tsx | 197 ++++++++++++++++++ .../features/account_gallery/index.jsx | 2 +- .../status/components/detailed_status.tsx | 33 +-- app/javascript/mastodon/models/status.ts | 2 + .../material-icons/400-20px/mood-fill.svg | 2 +- .../material-icons/400-20px/mood.svg | 2 +- .../material-icons/400-20px/warning-fill.svg | 2 +- .../material-icons/400-20px/warning.svg | 2 +- .../400-24px/add_photo_alternate-fill.svg | 2 +- .../400-24px/add_photo_alternate.svg | 2 +- .../400-24px/bookmarks-fill.svg | 2 +- .../material-icons/400-24px/bookmarks.svg | 2 +- .../400-24px/headphones-fill.svg | 1 + .../material-icons/400-24px/headphones.svg | 1 + .../400-24px/manufacturing-fill.svg | 1 + .../material-icons/400-24px/manufacturing.svg | 2 +- .../material-icons/400-24px/movie-fill.svg | 1 + .../material-icons/400-24px/movie.svg | 1 + .../400-24px/quiet_time-fill.svg | 2 +- .../material-icons/400-24px/quiet_time.svg | 2 +- .../material-icons/400-24px/share-fill.svg | 2 +- .../material-icons/400-24px/share.svg | 2 +- .../styles/mastodon/components.scss | 99 +++++---- app/javascript/styles/mastodon/variables.scss | 2 + 27 files changed, 330 insertions(+), 245 deletions(-) delete mode 100644 app/javascript/mastodon/features/account_gallery/components/media_item.jsx create mode 100644 app/javascript/mastodon/features/account_gallery/components/media_item.tsx create mode 100644 app/javascript/material-icons/400-24px/headphones-fill.svg create mode 100644 app/javascript/material-icons/400-24px/headphones.svg create mode 100644 app/javascript/material-icons/400-24px/manufacturing-fill.svg create mode 100644 app/javascript/material-icons/400-24px/movie-fill.svg create mode 100644 app/javascript/material-icons/400-24px/movie.svg diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index ba54b7f903..35924008b5 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -11,6 +11,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { debounce } from 'lodash'; import { Blurhash } from 'mastodon/components/blurhash'; +import { formatTime } from 'mastodon/features/video'; import { autoPlayGif, displayMedia, useBlurhash } from '../initial_state'; @@ -57,7 +58,7 @@ class Item extends PureComponent { hoverToPlay () { const { attachment } = this.props; - return !this.getAutoPlay() && attachment.get('type') === 'gifv'; + return !this.getAutoPlay() && ['gifv', 'video'].includes(attachment.get('type')); } handleClick = (e) => { @@ -150,10 +151,15 @@ class Item extends PureComponent { /> ); - } else if (attachment.get('type') === 'gifv') { + } else if (['gifv', 'video'].includes(attachment.get('type'))) { const autoPlay = this.getAutoPlay(); + const duration = attachment.getIn(['meta', 'original', 'duration']); - badges.push(GIF); + if (attachment.get('type') === 'gifv') { + badges.push(GIF); + } else { + badges.push({formatTime(Math.floor(duration))}); + } thumbnail = (
@@ -167,6 +173,7 @@ class Item extends PureComponent { onClick={this.handleClick} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} + onLoadedData={this.handleImageLoad} autoPlay={autoPlay} playsInline loop diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 6c32fd245d..46926b4aae 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -449,7 +449,25 @@ class Status extends ImmutablePureComponent { } else if (status.get('media_attachments').size > 0) { const language = status.getIn(['translation', 'language']) || status.get('language'); - if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { + if (['image', 'gifv'].includes(status.getIn(['media_attachments', 0, 'type'])) || status.get('media_attachments').size > 1) { + media = ( + + {Component => ( + + )} + + ); + } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { const attachment = status.getIn(['media_attachments', 0]); const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); @@ -501,24 +519,6 @@ class Status extends ImmutablePureComponent { )} ); - } else { - media = ( - - {Component => ( - - )} - - ); } } else if (status.get('spoiler_text').length === 0 && status.get('card')) { media = ( diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx b/app/javascript/mastodon/features/account_gallery/components/media_item.jsx deleted file mode 100644 index 087e775753..0000000000 --- a/app/javascript/mastodon/features/account_gallery/components/media_item.jsx +++ /dev/null @@ -1,158 +0,0 @@ -import PropTypes from 'prop-types'; - -import classNames from 'classnames'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; - -import AudiotrackIcon from '@/material-icons/400-24px/music_note.svg?react'; -import PlayArrowIcon from '@/material-icons/400-24px/play_arrow.svg?react'; -import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; -import { Blurhash } from 'mastodon/components/blurhash'; -import { Icon } from 'mastodon/components/icon'; -import { autoPlayGif, displayMedia, useBlurhash } from 'mastodon/initial_state'; - -export default class MediaItem extends ImmutablePureComponent { - - static propTypes = { - attachment: ImmutablePropTypes.map.isRequired, - displayWidth: PropTypes.number.isRequired, - onOpenMedia: PropTypes.func.isRequired, - }; - - state = { - visible: displayMedia !== 'hide_all' && !this.props.attachment.getIn(['status', 'sensitive']) || displayMedia === 'show_all', - loaded: false, - }; - - handleImageLoad = () => { - this.setState({ loaded: true }); - }; - - handleMouseEnter = e => { - if (this.hoverToPlay()) { - e.target.play(); - } - }; - - handleMouseLeave = e => { - if (this.hoverToPlay()) { - e.target.pause(); - e.target.currentTime = 0; - } - }; - - hoverToPlay () { - return !autoPlayGif && ['gifv', 'video'].indexOf(this.props.attachment.get('type')) !== -1; - } - - handleClick = e => { - if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { - e.preventDefault(); - - if (this.state.visible) { - this.props.onOpenMedia(this.props.attachment); - } else { - this.setState({ visible: true }); - } - } - }; - - render () { - const { attachment, displayWidth } = this.props; - const { visible, loaded } = this.state; - - const width = `${Math.floor((displayWidth - 4) / 3) - 4}px`; - const height = width; - const status = attachment.get('status'); - const title = status.get('spoiler_text') || attachment.get('description'); - - let thumbnail, label, icon, content; - - if (!visible) { - icon = ( - - - - ); - } else { - if (['audio', 'video'].includes(attachment.get('type'))) { - content = ( - {attachment.get('description')} - ); - - if (attachment.get('type') === 'audio') { - label = ; - } else { - label = ; - } - } else if (attachment.get('type') === 'image') { - const focusX = attachment.getIn(['meta', 'focus', 'x']) || 0; - const focusY = attachment.getIn(['meta', 'focus', 'y']) || 0; - const x = ((focusX / 2) + .5) * 100; - const y = ((focusY / -2) + .5) * 100; - - content = ( - {attachment.get('description')} - ); - } else if (attachment.get('type') === 'gifv') { - content = ( -
- {preview && preview.followers_count + preview.following_count > 0 && ( + {preview && + preview !== 'error' && + preview.followers_count + preview.following_count > 0 && ( +
+
+ +
+
+ + + ), + followingCount: preview.following_count, + followingCountDisplay: ( + + ), + }} + /> + +
+
+ )} + + {preview === 'error' && (
@@ -97,18 +126,8 @@ export const DomainBlockModal: React.FC<{
- ), - followingCount: preview.following_count, - followingCountDisplay: ( - - ), - }} + id='domain_block_modal.you_will_lose_relationships' + defaultMessage='You will lose all followers and people you follow from this server.' />
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 0dc4ccee80..b20934388c 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -222,6 +222,7 @@ "domain_block_modal.they_wont_know": "They won't know they've been blocked.", "domain_block_modal.title": "Block domain?", "domain_block_modal.you_will_lose_num_followers": "You will lose {followersCount, plural, one {{followersCountDisplay} follower} other {{followersCountDisplay} followers}} and {followingCount, plural, one {{followingCountDisplay} person you follow} other {{followingCountDisplay} people you follow}}.", + "domain_block_modal.you_will_lose_relationships": "You will lose all followers and people you follow from this server.", "domain_block_modal.you_wont_see_posts": "You won't see posts or notifications from users on this server.", "domain_pill.activitypub_lets_connect": "It lets you connect and interact with people not just on Mastodon, but across different social apps too.", "domain_pill.activitypub_like_language": "ActivityPub is like the language Mastodon speaks with other social networks.", From a04433f995099854c06fbc7d02245a7d2a3677c0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 Sep 2024 15:26:49 +0200 Subject: [PATCH 008/550] Add ability to view alt text by clicking the ALT badge in web UI (#32058) --- .../mastodon/components/alt_text_badge.tsx | 67 +++++++++++++++++++ .../mastodon/components/media_gallery.jsx | 7 +- .../account_gallery/components/media_item.tsx | 17 +++-- app/javascript/mastodon/locales/en.json | 1 + .../styles/mastodon/components.scss | 45 +++++++++++-- 5 files changed, 121 insertions(+), 16 deletions(-) create mode 100644 app/javascript/mastodon/components/alt_text_badge.tsx diff --git a/app/javascript/mastodon/components/alt_text_badge.tsx b/app/javascript/mastodon/components/alt_text_badge.tsx new file mode 100644 index 0000000000..99bec1ee51 --- /dev/null +++ b/app/javascript/mastodon/components/alt_text_badge.tsx @@ -0,0 +1,67 @@ +import { useState, useCallback, useRef } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import Overlay from 'react-overlays/Overlay'; +import type { + OffsetValue, + UsePopperOptions, +} from 'react-overlays/esm/usePopper'; + +const offset = [0, 4] as OffsetValue; +const popperConfig = { strategy: 'fixed' } as UsePopperOptions; + +export const AltTextBadge: React.FC<{ + description: string; +}> = ({ description }) => { + const anchorRef = useRef(null); + const [open, setOpen] = useState(false); + + const handleClick = useCallback(() => { + setOpen((v) => !v); + }, [setOpen]); + + const handleClose = useCallback(() => { + setOpen(false); + }, [setOpen]); + + return ( + <> + + + + {({ props }) => ( +
+
+

+ +

+

{description}

+
+
+ )} +
+ + ); +}; diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 35924008b5..84cb4e04dc 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -10,6 +10,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import { debounce } from 'lodash'; +import { AltTextBadge } from 'mastodon/components/alt_text_badge'; import { Blurhash } from 'mastodon/components/blurhash'; import { formatTime } from 'mastodon/features/video'; @@ -97,7 +98,7 @@ class Item extends PureComponent { } if (attachment.get('description')?.length > 0) { - badges.push(ALT); + badges.push(); } const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); @@ -156,9 +157,9 @@ class Item extends PureComponent { const duration = attachment.getIn(['meta', 'original', 'duration']); if (attachment.get('type') === 'gifv') { - badges.push(GIF); + badges.push(GIF); } else { - badges.push({formatTime(Math.floor(duration))}); + badges.push({formatTime(Math.floor(duration))}); } thumbnail = ( diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.tsx b/app/javascript/mastodon/features/account_gallery/components/media_item.tsx index 1a294a74a0..729e40a993 100644 --- a/app/javascript/mastodon/features/account_gallery/components/media_item.tsx +++ b/app/javascript/mastodon/features/account_gallery/components/media_item.tsx @@ -5,6 +5,7 @@ import classNames from 'classnames'; import HeadphonesIcon from '@/material-icons/400-24px/headphones-fill.svg?react'; import MovieIcon from '@/material-icons/400-24px/movie-fill.svg?react'; import VisibilityOffIcon from '@/material-icons/400-24px/visibility_off.svg?react'; +import { AltTextBadge } from 'mastodon/components/alt_text_badge'; import { Blurhash } from 'mastodon/components/blurhash'; import { Icon } from 'mastodon/components/icon'; import { formatTime } from 'mastodon/features/video'; @@ -77,11 +78,7 @@ export const MediaItem: React.FC<{ const badges = []; if (description && description.length > 0) { - badges.push( - - ALT - , - ); + badges.push(); } if (!visible) { @@ -156,13 +153,19 @@ export const MediaItem: React.FC<{ if (type === 'gifv') { badges.push( - + GIF , ); } else { badges.push( - + {formatTime(Math.floor(duration))} , ); diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index b20934388c..e86e300bcb 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", + "alt_text_badge.title": "Alt text", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f3464c83b7..8cb63e42e6 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6971,14 +6971,14 @@ a.status-card { inset-inline-end: 8px; display: flex; gap: 2px; + pointer-events: none; } -.media-gallery__alt__label, -.media-gallery__gifv__label { - display: flex; - align-items: center; - justify-content: center; +.media-gallery__alt__label { + display: block; + text-align: center; color: $white; + border: 0; background: rgba($black, 0.65); backdrop-filter: blur(10px) saturate(180%) contrast(75%) brightness(70%); padding: 3px 8px; @@ -6986,8 +6986,41 @@ a.status-card { font-size: 12px; font-weight: 700; z-index: 1; - pointer-events: none; line-height: 20px; + cursor: pointer; + pointer-events: auto; + + &--non-interactive { + pointer-events: none; + } +} + +.media-gallery__alt__popover { + background: rgba($black, 0.65); + backdrop-filter: blur(10px) saturate(180%) contrast(75%) brightness(70%); + border-radius: 4px; + box-shadow: var(--dropdown-shadow); + padding: 16px; + min-width: 16em; + min-height: 2em; + max-width: 22em; + max-height: 30em; + overflow-y: auto; + + h4 { + font-size: 15px; + line-height: 20px; + font-weight: 500; + color: $white; + margin-bottom: 8px; + } + + p { + font-size: 15px; + line-height: 20px; + color: rgba($white, 0.85); + white-space: pre-line; + } } .attachment-list { From 89c39e7826bee92ebc537babfc4061bd4d98c8ba Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 26 Sep 2024 16:26:04 +0200 Subject: [PATCH 009/550] Fix scrollbar width (#32091) --- app/javascript/styles/mastodon/reset.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/app/javascript/styles/mastodon/reset.scss b/app/javascript/styles/mastodon/reset.scss index 5a4152826d..fc0305baf3 100644 --- a/app/javascript/styles/mastodon/reset.scss +++ b/app/javascript/styles/mastodon/reset.scss @@ -56,7 +56,6 @@ table { @supports not selector(::-webkit-scrollbar) { html { scrollbar-color: $action-button-color var(--background-border-color); - scrollbar-width: thin; } } From 106b22bd2dc2fca8561d36f849c80dd4a918ca2e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 26 Sep 2024 15:26:40 -0400 Subject: [PATCH 010/550] Use 1 column layout for form `ul` on narrow widths (#32112) --- app/javascript/styles/mastodon/forms.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 56f7b893f3..957a283522 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -312,6 +312,10 @@ code { ul { columns: 2; + + @media screen and (max-width: $mobile-breakpoint) { + columns: 1; + } } } From ee2d966080b4e293d07acedf9385786a939432c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 21:27:13 +0200 Subject: [PATCH 011/550] Update dependency blurhash to v0.1.8 (#32114) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ed217ca146..e1ea677dfd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -134,7 +134,7 @@ GEM bindata (2.5.0) binding_of_caller (1.0.1) debug_inspector (>= 1.2.0) - blurhash (0.1.7) + blurhash (0.1.8) bootsnap (1.18.4) msgpack (~> 1.2) brakeman (6.2.1) From 513f187dafd8ff441479a6de12c61f8bb8d4c5bf Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 26 Sep 2024 21:27:57 +0200 Subject: [PATCH 012/550] =?UTF-8?q?Add=20=E2=80=9CA=20Mastodon=20update=20?= =?UTF-8?q?is=20available.=E2=80=9D=20message=20on=20admin=20dashboard=20f?= =?UTF-8?q?or=20non-bugfix=20updates=20(#32106)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/lib/admin/system_check/software_version_check.rb | 6 ++++-- config/locales/en.yml | 3 +++ spec/lib/admin/system_check/software_version_check_spec.rb | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/lib/admin/system_check/software_version_check.rb b/app/lib/admin/system_check/software_version_check.rb index e142feddf0..e5cacfe354 100644 --- a/app/lib/admin/system_check/software_version_check.rb +++ b/app/lib/admin/system_check/software_version_check.rb @@ -14,14 +14,16 @@ class Admin::SystemCheck::SoftwareVersionCheck < Admin::SystemCheck::BaseCheck def message if software_updates.any?(&:urgent?) Admin::SystemCheck::Message.new(:software_version_critical_check, nil, admin_software_updates_path, true) - else + elsif software_updates.any?(&:patch_type?) Admin::SystemCheck::Message.new(:software_version_patch_check, nil, admin_software_updates_path) + else + Admin::SystemCheck::Message.new(:software_version_check, nil, admin_software_updates_path) end end private def software_updates - @software_updates ||= SoftwareUpdate.pending_to_a.filter { |update| update.urgent? || update.patch_type? } + @software_updates ||= SoftwareUpdate.pending_to_a end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 9c3bab6baa..bf45dff33a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -875,6 +875,9 @@ en: message_html: You haven't defined any server rules. sidekiq_process_check: message_html: No Sidekiq process running for the %{value} queue(s). Please review your Sidekiq configuration + software_version_check: + action: See available updates + message_html: A Mastodon update is available. software_version_critical_check: action: See available updates message_html: A critical Mastodon update is available, please update as quickly as possible. diff --git a/spec/lib/admin/system_check/software_version_check_spec.rb b/spec/lib/admin/system_check/software_version_check_spec.rb index 1affaa3a96..8460d90668 100644 --- a/spec/lib/admin/system_check/software_version_check_spec.rb +++ b/spec/lib/admin/system_check/software_version_check_spec.rb @@ -51,8 +51,8 @@ RSpec.describe Admin::SystemCheck::SoftwareVersionCheck do Fabricate(:software_update, version: '99.99.99', type: 'major', urgent: false) end - it 'returns true' do - expect(check.pass?).to be true + it 'returns false' do + expect(check.pass?).to be false end end From c9b069996456fb79d41dd37d986673a07cef5187 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:34:46 +0200 Subject: [PATCH 013/550] New Crowdin Translations (automated) (#32121) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ca.json | 2 + app/javascript/mastodon/locales/da.json | 2 + app/javascript/mastodon/locales/de.json | 2 + app/javascript/mastodon/locales/en-GB.json | 3 + app/javascript/mastodon/locales/eo.json | 2 + app/javascript/mastodon/locales/es-AR.json | 2 + app/javascript/mastodon/locales/es-MX.json | 4 +- app/javascript/mastodon/locales/es.json | 2 + app/javascript/mastodon/locales/eu.json | 1 + app/javascript/mastodon/locales/fa.json | 5 + app/javascript/mastodon/locales/fi.json | 3 + app/javascript/mastodon/locales/fo.json | 2 + app/javascript/mastodon/locales/ga.json | 1 + app/javascript/mastodon/locales/gl.json | 2 + app/javascript/mastodon/locales/hu.json | 2 + app/javascript/mastodon/locales/io.json | 206 +++++++++++++++++++++ app/javascript/mastodon/locales/it.json | 3 + app/javascript/mastodon/locales/lt.json | 7 +- app/javascript/mastodon/locales/nl.json | 4 +- app/javascript/mastodon/locales/pl.json | 2 + app/javascript/mastodon/locales/pt-BR.json | 3 + app/javascript/mastodon/locales/sq.json | 2 + app/javascript/mastodon/locales/tr.json | 2 + app/javascript/mastodon/locales/uk.json | 3 + app/javascript/mastodon/locales/vi.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 3 + app/javascript/mastodon/locales/zh-TW.json | 2 + config/locales/activerecord.io.yml | 6 + config/locales/ca.yml | 3 + config/locales/da.yml | 3 + config/locales/de.yml | 4 + config/locales/devise.io.yml | 10 + config/locales/doorkeeper.ga.yml | 1 + config/locales/doorkeeper.pt-BR.yml | 1 + config/locales/en-GB.yml | 1 + config/locales/es-AR.yml | 1 + config/locales/es-MX.yml | 1 + config/locales/es.yml | 1 + config/locales/fi.yml | 1 + config/locales/fo.yml | 1 + config/locales/ga.yml | 1 + config/locales/gl.yml | 7 +- config/locales/hu.yml | 1 + config/locales/it.yml | 4 + config/locales/lt.yml | 4 + config/locales/nl.yml | 3 + config/locales/nn.yml | 3 + config/locales/pl.yml | 4 + config/locales/pt-BR.yml | 1 + config/locales/simple_form.io.yml | 20 ++ config/locales/sq.yml | 3 + config/locales/tr.yml | 1 + config/locales/uk.yml | 4 + config/locales/zh-CN.yml | 4 + config/locales/zh-TW.yml | 3 + 55 files changed, 364 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 2c6dcba469..1cd643842c 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Límit de freqüència", "alert.unexpected.message": "S'ha produït un error inesperat.", "alert.unexpected.title": "Vaja!", + "alt_text_badge.title": "Text alternatiu", "announcement.announcement": "Anunci", "attachments_list.unprocessed": "(sense processar)", "audio.hide": "Amaga l'àudio", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "No sabran que són blocats.", "domain_block_modal.title": "Bloquem el domini?", "domain_block_modal.you_will_lose_num_followers": "Perdreu {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidors}} i {followingCount, plural, one {{followingCountDisplay} persona} other {{followingCountDisplay} persones}} que seguiu.", + "domain_block_modal.you_will_lose_relationships": "Perdreu seguidors i gent a qui seguiu d'aquest servidor.", "domain_block_modal.you_wont_see_posts": "No veureu ni les publicacions ni les notificacions dels usuaris d'aquest servidor.", "domain_pill.activitypub_lets_connect": "Us permet connectar i interactuar amb persones a Mastodon i també a d'altres apps socials.", "domain_pill.activitypub_like_language": "ActivityPub és el llenguatge que Mastodon parla amb altres xarxes socials.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e7d2bcaf80..8223177ab9 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Hastighedsbegrænset", "alert.unexpected.message": "En uventet fejl opstod.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Alt text", "announcement.announcement": "Bekendtgørelse", "attachments_list.unprocessed": "(ubehandlet)", "audio.hide": "Skjul lyd", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Vedkommende ser ikke den aktive blokering.", "domain_block_modal.title": "Blokér domæne?", "domain_block_modal.you_will_lose_num_followers": "Man vil miste {followersCount, plural, one {{followersCountDisplay} følger} other {{followersCountDisplay} følgere}} og {followingCount, plural, one {{followingCountDisplay} person, man følger} other {{followingCountDisplay} personer, man følger}}.", + "domain_block_modal.you_will_lose_relationships": "Alle følgere og personer som følges på denne server mistes.", "domain_block_modal.you_wont_see_posts": "Indlæg eller notifikationer fra brugere på denne server vises ikke.", "domain_pill.activitypub_lets_connect": "Det muliggør at komme i forbindelse og interagere med folk ikke kun på Mastodon, men også på tværs af forskellige sociale apps.", "domain_pill.activitypub_like_language": "ActivityPub er \"sproget\", Mastodon taler med andre sociale netværk.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 2f8c89961a..30a55df05b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Anfragelimit überschritten", "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.", "alert.unexpected.title": "Oha!", + "alt_text_badge.title": "Bildbeschreibung", "announcement.announcement": "Ankündigung", "attachments_list.unprocessed": "(ausstehend)", "audio.hide": "Audio ausblenden", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Es wird nicht erkennbar sein, dass diese Domain blockiert wurde.", "domain_block_modal.title": "Domain blockieren?", "domain_block_modal.you_will_lose_num_followers": "Du wirst {followersCount, plural, one {{followersCountDisplay} Follower} other {{followersCountDisplay} Follower}} verlieren und {followingCount, plural, one {{followingCountDisplay} Profil} other {{followingCountDisplay} Profilen}} entfolgen.", + "domain_block_modal.you_will_lose_relationships": "Du wirst von diesem Server alle Follower und Profile, denen du dort folgst, verlieren.", "domain_block_modal.you_wont_see_posts": "Du wirst keine Beiträge oder Benachrichtigungen von Profilen auf diesem Server sehen.", "domain_pill.activitypub_lets_connect": "Somit kannst du dich nicht nur auf Mastodon mit Leuten verbinden und mit ihnen interagieren, sondern über alle sozialen Apps hinweg.", "domain_pill.activitypub_like_language": "ActivityPub ist sozusagen die Sprache, die Mastodon mit anderen sozialen Netzwerken spricht.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index ee38b77554..b1d61ddd3d 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "An unexpected error occurred.", "alert.unexpected.title": "Oops!", + "alt_text_badge.title": "Alt text", "announcement.announcement": "Announcement", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Nobody from this server can follow you.", "domain_block_modal.they_wont_know": "They won't know they've been blocked.", "domain_block_modal.title": "Block domain?", + "domain_block_modal.you_will_lose_num_followers": "You will lose {followersCount, plural, one {{followersCountDisplay} follower} other {{followersCountDisplay} followers}} and {followingCount, plural, one {{followingCountDisplay} person you follow} other {{followingCountDisplay} people you follow}}.", + "domain_block_modal.you_will_lose_relationships": "You will lose all followers and people you follow from this server.", "domain_block_modal.you_wont_see_posts": "You won't see posts or notifications from users on this server.", "domain_pill.activitypub_lets_connect": "It lets you connect and interact with people not just on Mastodon, but across different social apps too.", "domain_pill.activitypub_like_language": "ActivityPub is like the language Mastodon speaks with other social networks.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 8139e8c76d..832bf9eda0 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Mesaĝkvante limigita", "alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.title": "Aj!", + "alt_text_badge.title": "Alt-teksto", "announcement.announcement": "Anoncoj", "attachments_list.unprocessed": "(neprilaborita)", "audio.hide": "Kaŝi aŭdion", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Ili ne scios, ke ili estas blokitaj.", "domain_block_modal.title": "Ĉu bloki la domajnon?", "domain_block_modal.you_will_lose_num_followers": "Vi perdos {followersCount, plural, one {{followersCountDisplay} sekvanton} other {{followersCountDisplay} sekvantojn}} kaj {followingCount, plural, one {{followingCountDisplay} homon, kiu vi sekvas} other {{followingCountDisplay} homojn, kiuj vi sekvas}}.", + "domain_block_modal.you_will_lose_relationships": "Vi perdos ĉiujn sekvantojn kaj homojn, kiujn vi sekvas de ĉi tiu servilo.", "domain_block_modal.you_wont_see_posts": "Vi ne vidos afiŝojn aŭ sciigojn de uzantoj sur ĉi tiu servilo.", "domain_pill.activitypub_lets_connect": "Ĝi ebligas vin konekti kaj interagi kun homoj ne nur sur Mastodon, sed ankaŭ tra diversaj sociaj apoj.", "domain_pill.activitypub_like_language": "ActivityPub estas kiel la lingvo kiun Mastodon parolas kun aliaj sociaj retoj.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 26a37e76b3..e0a4f0fc92 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Acción limitada", "alert.unexpected.message": "Ocurrió un error.", "alert.unexpected.title": "¡Epa!", + "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "[sin procesar]", "audio.hide": "Ocultar audio", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "No sabrán que fueron bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", + "domain_block_modal.you_will_lose_relationships": "Perderás a todos los seguidores y gente a la que sigas de este servidor.", "domain_block_modal.you_wont_see_posts": "No verás mensajes ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con cuentas no solo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index dd3188c146..3948de6c32 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Tarifa limitada", "alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.title": "¡Ups!", + "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", @@ -221,7 +222,8 @@ "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que han sido bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", - "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", + "domain_block_modal.you_will_lose_num_followers": "Vas a perder {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigas}}.", + "domain_block_modal.you_will_lose_relationships": "Perderás todos los seguidores y las personas que sigues de este servidor.", "domain_block_modal.you_wont_see_posts": "No verás publicaciones ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con personas no sólo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index aa282b4c5b..6e7ea9c9ec 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Tráfico limitado", "alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.title": "¡Ups!", + "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "No sabrán que han sido bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", + "domain_block_modal.you_will_lose_relationships": "Perderás a todos los seguidores y gente a la que sigas de este servidor.", "domain_block_modal.you_wont_see_posts": "No verás mensajes ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con personas no sólo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 35b869486b..63449e9342 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Abiadura mugatua", "alert.unexpected.message": "Ustekabeko errore bat gertatu da.", "alert.unexpected.title": "Ene!", + "alt_text_badge.title": "Testu alternatiboa", "announcement.announcement": "Iragarpena", "attachments_list.unprocessed": "(prozesatu gabe)", "audio.hide": "Ezkutatu audioa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 583fd4ec5a..d510c2a6a4 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -85,9 +85,11 @@ "alert.rate_limited.title": "محدودیت تعداد", "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.", "alert.unexpected.title": "ای وای!", + "alt_text_badge.title": "متن جایگزین", "announcement.announcement": "اعلامیه", "attachments_list.unprocessed": "(پردازش نشده)", "audio.hide": "نهفتن صدا", + "block_modal.remote_users_caveat": "ما از کارساز {domain} خواهیم خواست که به تصمیم شما احترام بگذارد. با این حال، تضمینی برای رعایت آن وجود ندارد زیرا برخی کارسازها ممکن است بلوک‌ها را به‌طور متفاوتی مدیریت کنند. فرسته‌های عمومی ممکن است همچنان برای کاربران که وارد نشده قابل مشاهده باشند.", "block_modal.show_less": "نمایش کم‌تر", "block_modal.show_more": "نمایش بیش‌تر", "block_modal.they_cant_mention": "نمی‌توانند نامتان را برده یا پی‌تان بگیرند.", @@ -220,7 +222,10 @@ "domain_block_modal.they_cant_follow": "هیچ‌کسی از این کارساز نمی‌تواند پیتان بگیرد.", "domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شده‌اند.", "domain_block_modal.title": "انسداد دامنه؟", + "domain_block_modal.you_will_lose_relationships": "شما تمام پیگیرکنندگان و افرادی که از این کارساز پیگیری می‌کنید را از دست خواهید داد.", "domain_block_modal.you_wont_see_posts": "فرسته‌ها یا آگاهی‌ها از کاربران روی این کارساز را نخواهید دید.", + "domain_pill.activitypub_lets_connect": "این به شما اجازه می‌دهد تا نه تنها در ماستودون، بلکه در برنامه‌های اجتماعی مختلف نیز با افراد ارتباط برقرار کرده و تعامل داشته باشید.", + "domain_pill.activitypub_like_language": "ActivityPub مانند زبانی است که ماستودون با دیگر شبکه‌های اجتماعی صحبت می‌کند.", "domain_pill.server": "کارساز", "domain_pill.their_handle": "شناسه‌اش:", "domain_pill.their_server": "خانهٔ رقمیش. جایی که همهٔ فرسته‌هایش می‌زیند.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 4caec3159f..0a37a96abb 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Pyyntömäärää rajoitettu", "alert.unexpected.message": "Tapahtui odottamaton virhe.", "alert.unexpected.title": "Hups!", + "alt_text_badge.title": "Vaihtoehtoinen teksti", "announcement.announcement": "Tiedote", "attachments_list.unprocessed": "(käsittelemätön)", "audio.hide": "Piilota ääni", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Kukaan tältä palvelimelta ei voi seurata sinua.", "domain_block_modal.they_wont_know": "Hän ei saa tietää tulleensa estetyksi.", "domain_block_modal.title": "Estetäänkö verkkotunnus?", + "domain_block_modal.you_will_lose_num_followers": "Menetät {followersCount, plural, one {{followersCountDisplay} seuraajasi} other {{followersCountDisplay} seuraajaasi}} ja {followingCount, plural, one {{followingCountDisplay} seurattusi} other {{followingCountDisplay} seurattuasi}}.", + "domain_block_modal.you_will_lose_relationships": "Menetät kaikki tämän palvelimen seuraajasi ja seurattusi.", "domain_block_modal.you_wont_see_posts": "Et enää näe julkaisuja etkä ilmoituksia tämän palvelimen käyttäjiltä.", "domain_pill.activitypub_lets_connect": "Sen avulla voit muodostaa yhteyden ja olla vuorovaikutuksessa ihmisten kanssa, ei vain Mastodonissa vaan myös muissa sosiaalisissa sovelluksissa.", "domain_pill.activitypub_like_language": "ActivityPub on kuin kieli, jota Mastodon puhuu muiden sosiaalisten verkostojen kanssa.", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 3165c10153..70908c62dc 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Avmarkaður títtleiki", "alert.unexpected.message": "Ein óvæntaður feilur kom fyri.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Annar tekstur", "announcement.announcement": "Kunngerð", "attachments_list.unprocessed": "(óviðgjørt)", "audio.hide": "Fjal ljóð", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Tey vita ikki, at tey eru bannað.", "domain_block_modal.title": "Banna økisnavni?", "domain_block_modal.you_will_lose_num_followers": "Tú missir {followersCount, plural, one {{followersCountDisplay} fylgjara} other {{followersCountDisplay} fylgjarar}} og {followingCount, plural, one {{followingCountDisplay} persón, sum tú fylgir} other {{followingCountDisplay} persónar, sum tú fylgir}}.", + "domain_block_modal.you_will_lose_relationships": "Tú fer at missa allar fylgjarar og øll tey, tú fylgir á hesum ambætaranum.", "domain_block_modal.you_wont_see_posts": "Tú sært ongar postar ella boð frá brúkarum á hesum ambætara.", "domain_pill.activitypub_lets_connect": "Tað letur teg fáa samband og samvirka við fólki ikki bara á Mastodon, men á øðrum sosialum appum eisini.", "domain_pill.activitypub_like_language": "ActivityPub er málið, sum Mastodon tosar við onnur sosial netverk.", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 2161591dcd..6d64c6f712 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -221,6 +221,7 @@ "domain_block_modal.they_cant_follow": "Ní féidir le duine ar bith ón bhfreastalaí seo tú a leanúint.", "domain_block_modal.they_wont_know": "Ní bheidh a fhios acu go bhfuil bac orthu.", "domain_block_modal.title": "Blocáil fearann?", + "domain_block_modal.you_will_lose_num_followers": "Caillfidh tú {followersCount, plural, one {{followersCountDisplay} leantóir} two {{followersCountDisplay} leantóirí} few {{followersCountDisplay} leantóirí} many {{followersCountDisplay} leantóirí} other {{followersCountDisplay} leantóirí}} agus {followingCount, plural, one {{followingCountDisplay} duine atá á leanúint agat} two {{followingCountDisplay} daoine atá á leanúint agat} few {{followingCountDisplay} daoine atá á leanúint agat} many {{followingCountDisplay} daoine atá á leanúint agat} other {{followingCountDisplay} daoine atá á leanúint agat}}.", "domain_block_modal.you_wont_see_posts": "Ní fheicfidh tú postálacha nó fógraí ó úsáideoirí ar an bhfreastalaí seo.", "domain_pill.activitypub_lets_connect": "Ligeann sé duit ceangal agus idirghníomhú le daoine, ní hamháin ar Mastodon, ach thar aipeanna sóisialta éagsúla freisin.", "domain_pill.activitypub_like_language": "Tá GníomhaíochtPub cosúil leis an teanga a labhraíonn Mastodon le líonraí sóisialta eile.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index aa3a78fce8..c2b645ed0f 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Límite de intentos", "alert.unexpected.message": "Aconteceu un fallo non agardado.", "alert.unexpected.title": "Vaites!", + "alt_text_badge.title": "Texto Alt", "announcement.announcement": "Anuncio", "attachments_list.unprocessed": "(sen procesar)", "audio.hide": "Agochar audio", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Non saberá que a bloqueaches.", "domain_block_modal.title": "Bloquear dominio?", "domain_block_modal.you_will_lose_num_followers": "Vas perder {followersCount, plural, one {{followersCountDisplay} seguidora} other {{followersCountDisplay} seguidoras}} e {followingCount, plural, one {{followingCountDisplay} persoa que segues} other {{followingCountDisplay} persoas que segues}}.", + "domain_block_modal.you_will_lose_relationships": "Vas perder todas as seguidoras e seguimentos a persoas deste servidor.", "domain_block_modal.you_wont_see_posts": "Non verás publicacións ou notificacións das usuarias deste servidor.", "domain_pill.activitypub_lets_connect": "Permíteche conectar e interactuar con persoas non só de Mastodon, se non tamén con outras sociais.", "domain_pill.activitypub_like_language": "ActivityPub é algo así como o idioma que Mastodon fala con outras redes sociais.", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 2e48cb626d..34a9949afd 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -221,6 +221,8 @@ "domain_block_modal.they_cant_follow": "Erről a kiszolgálóról senki sem követhet.", "domain_block_modal.they_wont_know": "Nem fogja tudni, hogy letiltották.", "domain_block_modal.title": "Letiltsuk a domaint?", + "domain_block_modal.you_will_lose_num_followers": "El fogsz veszíteni {followersCount, plural, one {{followersCountDisplay} követőt} other {{followersCountDisplay} követőt}} és {followingCount, plural, one {{followingCountDisplay} követett személyt} other {{followingCountDisplay} követett személyt}}.", + "domain_block_modal.you_will_lose_relationships": "Minden követőt és követett személyt el fogsz veszíteni erről a kiszolgálóról.", "domain_block_modal.you_wont_see_posts": "Nem látsz majd bejegyzéseket vagy értesítéseket ennek a kiszolgálónak a felhasználóitól.", "domain_pill.activitypub_lets_connect": "Lehetővé teszi, hogy kapcsolatba lépj nem csak a Mastodonon, hanem a más közösségi alkalmazásokon lévő emberekkel is.", "domain_pill.activitypub_like_language": "Az ActivityPub olyan mint egy nyelv, amelyet a Mastodon a más közösségi hálózatokkal való kommunikációra használ.", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index aa284685e7..b47590a64c 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -1,6 +1,7 @@ { "about.blocks": "Jerata servili", "about.contact": "Kontaktajo:", + "about.disclaimer": "Mastodon esas libera, publikfonta e komercmarko di Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Expliko nedisponebla", "about.domain_blocks.preamble": "Mastodon generale permisas on vidar kontenajo e interagar kun uzanti de irga altra servilo en fediverso. Existas eceptioni quo facesis che ca partikulara servilo.", "about.domain_blocks.silenced.explanation": "On generale ne vidar profili e kontenajo de ca servilo, se on ne reale trovar o voluntale juntar per sequar.", @@ -10,6 +11,7 @@ "about.not_available": "Ca informo ne igesis che ca servilo.", "about.powered_by": "Necentraligita sociala ret quo povigesas da {mastodon}", "about.rules": "Servilreguli", + "account.account_note_header": "Personala noto", "account.add_or_remove_from_list": "Insertez o removez de listi", "account.badges.bot": "Boto", "account.badges.group": "Grupo", @@ -29,9 +31,12 @@ "account.featured_tags.last_status_never": "Nula posti", "account.featured_tags.title": "Estalita hashtagi di {name}", "account.follow": "Sequar", + "account.follow_back": "Anke sequez", "account.followers": "Sequanti", "account.followers.empty": "Nulu sequas ca uzanto til nun.", + "account.followers_counter": "{count, plural,one {{counter} sequanto} other {{counter} sequanti}}", "account.following": "Sequata", + "account.following_counter": "{count, plural,one {{counter} sequato} other {{counter} sequati}}", "account.follows.empty": "Ca uzanto ne sequa irgu til nun.", "account.go_to_profile": "Irez al profilo", "account.hide_reblogs": "Celez repeti de @{name}", @@ -47,6 +52,7 @@ "account.mute_notifications_short": "Silencigez avizi", "account.mute_short": "Silencigez", "account.muted": "Silencigata", + "account.mutual": "Mutuala", "account.no_bio": "Deskriptajo ne provizesis.", "account.open_original_page": "Apertez originala pagino", "account.posts": "Mesaji", @@ -56,6 +62,7 @@ "account.requested_follow": "{name} demandis sequar tu", "account.share": "Partigez profilo di @{name}", "account.show_reblogs": "Montrez repeti de @{name}", + "account.statuses_counter": "{count, plural,one {{counter} mesajo} other {{counter} mesaji}}", "account.unblock": "Desblokusar @{name}", "account.unblock_domain": "Desblokusar {domain}", "account.unblock_short": "Desblokusar", @@ -78,10 +85,21 @@ "alert.rate_limited.title": "Demandi limitizita", "alert.unexpected.message": "Neexpektita eroro eventis.", "alert.unexpected.title": "Problemo!", + "alt_text_badge.title": "Alternativa texto", "announcement.announcement": "Anunco", "attachments_list.unprocessed": "(neprocedita)", "audio.hide": "Celez audio", + "block_modal.remote_users_caveat": "Ni questionos {domain} di la servilo por respektar vua decido. Publika posti forsan ankore estas videbla a neenirinta uzanti.", + "block_modal.show_less": "Montrar mine", + "block_modal.show_more": "Montrar plue", + "block_modal.they_cant_mention": "Oli ne povas mencionar o sequar vu.", + "block_modal.they_cant_see_posts": "Oli ne povas vidar vua mesaji e vu ne vidos vidar olia.", + "block_modal.they_will_know": "Oli povas vidar ke oli esas blokusita.", + "block_modal.title": "Blokusar uzanto?", + "block_modal.you_wont_see_mentions": "Vu ne vidos mesaji qua mencionas oli.", "boost_modal.combo": "Vu povas pulsar {combo} por omisar co venontafoye", + "boost_modal.reblog": "Ka repetar posto?", + "boost_modal.undo_reblog": "Ka retrorepetar posto?", "bundle_column_error.copy_stacktrace": "Kopierorraporto", "bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.", "bundle_column_error.error.title": "Ach!", @@ -138,30 +156,47 @@ "compose_form.lock_disclaimer.lock": "klefagesas", "compose_form.placeholder": "Quo esas en tua spirito?", "compose_form.poll.duration": "Votpostoduro", + "compose_form.poll.multiple": "Multopla selekteso", + "compose_form.poll.option_placeholder": "Selektato {number}", + "compose_form.poll.single": "Selektez un", "compose_form.poll.switch_to_multiple": "Chanjez votposto por permisar multiselektaji", "compose_form.poll.switch_to_single": "Chanjez votposto por permisar una selektajo", + "compose_form.poll.type": "Stilo", + "compose_form.publish": "Posto", "compose_form.publish_form": "Publish", + "compose_form.reply": "Respondez", + "compose_form.save_changes": "Aktualigez", "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", + "compose_form.spoiler_placeholder": "Kontenajaverto (selektebla)", "confirmation_modal.cancel": "Anulez", "confirmations.block.confirm": "Restriktez", "confirmations.delete.confirm": "Efacez", "confirmations.delete.message": "Are you sure you want to delete this status?", + "confirmations.delete.title": "Ka efacar posto?", "confirmations.delete_list.confirm": "Efacez", "confirmations.delete_list.message": "Ka vu certe volas netempale efacar ca listo?", + "confirmations.delete_list.title": "Ka efacar listo?", "confirmations.discard_edit_media.confirm": "Efacez", "confirmations.discard_edit_media.message": "Vu havas nesparita chanji di mediodeskript o prevido, vu volas jus efacar?", "confirmations.edit.confirm": "Modifikez", "confirmations.edit.message": "Modifikar nun remplasos la mesajo quon vu nune skribas. Ka vu certe volas procedar?", + "confirmations.edit.title": "Ka remplasar posto?", "confirmations.logout.confirm": "Ekirez", "confirmations.logout.message": "Ka tu certe volas ekirar?", + "confirmations.logout.title": "Ka ekirar?", "confirmations.mute.confirm": "Silencigez", "confirmations.redraft.confirm": "Efacez e riskisez", "confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e repeti esos perdita, e respondi al posto originala esos orfanigita.", + "confirmations.redraft.title": "Ka efacar & riskisar posto?", "confirmations.reply.confirm": "Respondez", "confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?", + "confirmations.reply.title": "Ka remplasar posto?", "confirmations.unfollow.confirm": "Desequez", "confirmations.unfollow.message": "Ka vu certe volas desequar {name}?", + "confirmations.unfollow.title": "Ka retrosequar uzanto?", + "content_warning.hide": "Celez posto", + "content_warning.show": "Montrez nur", "conversation.delete": "Efacez konverso", "conversation.mark_as_read": "Markizez quale lektita", "conversation.open": "Videz konverso", @@ -181,6 +216,28 @@ "dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu repeti e favoriziti esas rangizita plu alte.", "dismissable_banner.explore_tags": "Ca hashtagi bezonas plu famoza inter personi che ca e altra servili di la necentraligita situo nun.", "dismissable_banner.public_timeline": "Yen la posti maxim recenta da personi che la reto sociala quin personi che {domain} sequas.", + "domain_block_modal.block": "Blokusez servilo", + "domain_block_modal.block_account_instead": "Blokusez @{name} vice", + "domain_block_modal.they_can_interact_with_old_posts": "Personi de ca servilo povas interagar kun vua desnova posti.", + "domain_block_modal.they_cant_follow": "Nulu de ca servilo povas sequar vu.", + "domain_block_modal.they_wont_know": "Lu ne savos ke lu blokusesis.", + "domain_block_modal.title": "Ka blokusar domeno?", + "domain_block_modal.you_will_lose_num_followers": "Vu desganos {followersCount, plural, one {{followersCountDisplay} sequanto} other {{followersCountDisplay} sequanti}} e {followingCount, plural, one {{followingCountDisplay} persono quan vu sequas} other {{followingCountDisplay} personi quan vu sequas}}.", + "domain_block_modal.you_will_lose_relationships": "Vu desganos omna sequanti e sequati de ca servilo.", + "domain_block_modal.you_wont_see_posts": "Vu ne vidos postoi o savigi de uzanti en ca servilo.", + "domain_pill.activitypub_lets_connect": "Ol povigas vu kuneskas e interagar kun personi ne nur sur Mastodon, o anke kun dessama socia softwari.", + "domain_pill.activitypub_like_language": "ActivityPub esas kam linguo quan Mastodon parolas kun altra socia reti.", + "domain_pill.server": "Servilo", + "domain_pill.their_handle": "Lua nomo:", + "domain_pill.their_server": "Lua komputala hemo, e havas omna lua posti.", + "domain_pill.their_username": "Lua unika identesilo sur lua servilo. Posible trovar uzanti kun sama uzantonomo sur dessama servili.", + "domain_pill.username": "Uzantonomo", + "domain_pill.whats_in_a_handle": "Quo esas nomo?", + "domain_pill.who_they_are": "Pro ke nomo esas deskripto di ulu, vu povas interagar kun personi tra socia interreto kun .", + "domain_pill.who_you_are": "Pro ke vua nomo esas deskripto pri vu e vua situo, personi povas interagar kun vu tra socia interreto kun .", + "domain_pill.your_handle": "Vua nomo:", + "domain_pill.your_server": "Vua komputerala hemo qua havas omna vua posti. On povas transferar a altra servili ulatempe e anke adportar vua sequanti.", + "domain_pill.your_username": "Vua unika identesilo sur lua servilo. Posible trovar uzanti kun sama uzantonomo sur dessama servili.", "embed.instructions": "Embed this status on your website by copying the code below.", "embed.preview": "Co esas quon ol semblos tale:", "emoji_button.activity": "Ago", @@ -217,6 +274,7 @@ "empty_column.list": "There is nothing in this list yet.", "empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.", "empty_column.mutes": "Vu ne silencigis irga uzanti til nun.", + "empty_column.notification_requests": "Finis. Kande vu recevas nova savigi, oli aparos hike segun vua preferaji.", "empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.", "empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.", "error.unexpected_crash.explanation": "Pro eroro en nia kodexo o vidilkonciliebloproblemo, ca pagino ne povas korekte montresar.", @@ -247,12 +305,30 @@ "filter_modal.select_filter.subtitle": "Usez disponebla grupo o kreez novajo", "filter_modal.select_filter.title": "Filtragez ca posto", "filter_modal.title.status": "Filtragez posto", + "filter_warning.matches_filter": "Sama kam filtrilo \"{title}\"", + "filtered_notifications_banner.pending_requests": "De {count, plural,=0 {nulu} one {1 persono} other {# personi}} quan vu forsan konocas", + "filtered_notifications_banner.title": "Filtrilita savigi", "firehose.all": "Omno", "firehose.local": "Ca servilo", "firehose.remote": "Altra servili", "follow_request.authorize": "Yurizar", "follow_request.reject": "Refuzar", "follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.", + "follow_suggestions.curated_suggestion": "Selektato de jeranto", + "follow_suggestions.dismiss": "Ne montrez pluse", + "follow_suggestions.featured_longer": "Selektesis da la grupo di {domain}", + "follow_suggestions.friends_of_friends_longer": "Populara inter personi quan vu sequas", + "follow_suggestions.hints.featured": "Ca profilo selektesis da la grupo di {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ca profilo esas populara inter personi quan vu sequas.", + "follow_suggestions.hints.most_followed": "Vua profilo esas un de maxim sequita sur {domain}.", + "follow_suggestions.hints.most_interactions": "Ca profilo recente populareskis sur {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Ca profilo esas simila a la profili quan vu recente sequis.", + "follow_suggestions.personalized_suggestion": "Personalita sugestato", + "follow_suggestions.popular_suggestion": "Populara sugestato", + "follow_suggestions.popular_suggestion_longer": "Populara sur {domain}", + "follow_suggestions.similar_to_recently_followed_longer": "Simila a profili quan vu recente sequis", + "follow_suggestions.view_all": "Videz omno", + "follow_suggestions.who_to_follow": "Sequindo", "followed_tags": "Hashtagi sequita", "footer.about": "Pri co", "footer.directory": "Profilcheflisto", @@ -279,6 +355,14 @@ "hashtag.follow": "Sequez hashtago", "hashtag.unfollow": "Desequez hashtago", "hashtags.and_other": "…e {count, plural, one {# plusa}other {# plusa}}", + "hints.profiles.followers_may_be_missing": "Sequanti di ca profilo forsan ne esas hike.", + "hints.profiles.follows_may_be_missing": "Sequati di ca profilo forsan ne esas hike.", + "hints.profiles.posts_may_be_missing": "Kelka posti sur ca profilo forsan ne esas hike.", + "hints.profiles.see_more_followers": "Vidar plu multa sequanti sur {domain}", + "hints.profiles.see_more_follows": "Vidar plu multa sequati sur {domain}", + "hints.profiles.see_more_posts": "Vidar plu multa posti sur {domain}", + "hints.threads.replies_may_be_missing": "Respondi de altra servili forsan ne esas hike.", + "hints.threads.see_more": "Vidar plu multa demandi sur {domain}", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", "home.hide_announcements": "Celez anunci", @@ -286,6 +370,17 @@ "home.pending_critical_update.link": "Vidar aktualigaji", "home.pending_critical_update.title": "Sekuresala aktualigajo gravega disponebla!", "home.show_announcements": "Montrez anunci", + "ignore_notifications_modal.disclaimer": "Mastodon ne povas savigar uzanti ke vu ignoris olia savigi. Ignorar savigi ne cesos ipse mesaji sendesar.", + "ignore_notifications_modal.filter_instead": "Filtrar vice", + "ignore_notifications_modal.filter_to_act_users": "Vu povos aceptar, refuzar o raportar uzanti", + "ignore_notifications_modal.filter_to_avoid_confusion": "Filtro helpas evitar posibla konfuzo", + "ignore_notifications_modal.filter_to_review_separately": "Vu povas kontrolar filtrita savigi separe", + "ignore_notifications_modal.ignore": "Ignorez savigi", + "ignore_notifications_modal.limited_accounts_title": "Ka ignorar savigi de jerita konti?", + "ignore_notifications_modal.new_accounts_title": "Ka ignorar savigi de nova konti?", + "ignore_notifications_modal.not_followers_title": "Ka ignorar savigi de personi qua ne sequas vu?", + "ignore_notifications_modal.not_following_title": "Ka ignorar savigi de personi quan vu ne sequas?", + "ignore_notifications_modal.private_mentions_title": "Ka ignorar savigi de nekonocita privata mencionii?", "interaction_modal.description.favourite": "Kun konto che Mastodon, vu povas favorizar ca posto por savigar la autoro ke vu prizas ol e sparar ol por pose.", "interaction_modal.description.follow": "Per konto che Mastodon, vu povas sequar {name} por ganar ola posti en vua hemniuzeto.", "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas repetar ca posti por dissemar lo a vua propra sequati.", @@ -341,9 +436,13 @@ "lightbox.close": "Klozar", "lightbox.next": "Nexta", "lightbox.previous": "Antea", + "lightbox.zoom_in": "Grandigez a reala grandeso", + "lightbox.zoom_out": "Grandigez por fitigar", "limited_account_hint.action": "Jus montrez profilo", "limited_account_hint.title": "Ca profilo celesas dal jereri di {domain}.", "link_preview.author": "Da {name}", + "link_preview.more_from_author": "Plua de {name}", + "link_preview.shares": "{count, plural,one {{counter} posto} other {{counter} posti}}", "lists.account.add": "Insertez a listo", "lists.account.remove": "Efacez de listo", "lists.delete": "Efacez listo", @@ -360,8 +459,19 @@ "lists.subheading": "Vua listi", "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}", "loading_indicator.label": "Kargante…", + "media_gallery.hide": "Celez", "moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.", + "mute_modal.hide_from_notifications": "Celez de savigi", + "mute_modal.hide_options": "Celez preferaji", + "mute_modal.indefinite": "Til me retrosilencigas lu", + "mute_modal.show_options": "Montrez preferaji", + "mute_modal.they_can_mention_and_follow": "Lu povas mencionar e sequar vu, ma vu ne vidos lu.", + "mute_modal.they_wont_know": "Lu ne savos ke lu silencigesis.", + "mute_modal.title": "Ka silencigar uzanto?", + "mute_modal.you_wont_see_mentions": "Vu ne vidos posti qua mencionas lu.", + "mute_modal.you_wont_see_posts": "Lu ankore povas vidar vua posti, ma vu ne vidos lua.", "navigation_bar.about": "Pri co", + "navigation_bar.administration": "Administro", "navigation_bar.advanced_interface": "Apertez per retintervizajo", "navigation_bar.blocks": "Blokusita uzeri", "navigation_bar.bookmarks": "Libromarki", @@ -378,6 +488,7 @@ "navigation_bar.follows_and_followers": "Sequati e sequanti", "navigation_bar.lists": "Listi", "navigation_bar.logout": "Ekirar", + "navigation_bar.moderation": "Jero", "navigation_bar.mutes": "Celita uzeri", "navigation_bar.opened_in_classic_interface": "Posti, konti e altra pagini specifika apertesas en la retovidilo klasika.", "navigation_bar.personal": "Personala", @@ -388,20 +499,71 @@ "navigation_bar.security": "Sekureso", "not_signed_in_indicator.not_signed_in": "Vu mustas enirar por acesar ca moyeno.", "notification.admin.report": "{name} raportizis {target}", + "notification.admin.report_account": "{name} raportis {count, plural,one {1 posto} other {# posti}} de {target} pro {category}", + "notification.admin.report_account_other": "{name} raportis {count, plural,one {1 posto} other {# posti}} de {target}", + "notification.admin.report_statuses": "{name} raportis {target} pro {category}", + "notification.admin.report_statuses_other": "{name} raportis {target}", "notification.admin.sign_up": "{name} registresis", + "notification.admin.sign_up.name_and_others": "{name} e {count, plural,one {# altru} other {#altri}} enrejistris", "notification.favourite": "{name} favorizis tua mesajo", + "notification.favourite.name_and_others_with_link": "{name} e {count, plural,one {# altru} other {# altri}} favorizis vua posto", "notification.follow": "{name} sequeskis tu", + "notification.follow.name_and_others": "{name} e {count, plural,one {# altru} other {#altri}} sequis vu", "notification.follow_request": "{name} demandas sequar vu", + "notification.follow_request.name_and_others": "{name} e {count, plural,one {# altru} other {# altri}} volas sequar vu", + "notification.label.mention": "Mencionez", + "notification.label.private_mention": "Privata menciono", + "notification.label.private_reply": "Privata respondo", + "notification.label.reply": "Respondez", + "notification.mention": "Mencionez", + "notification.moderation-warning.learn_more": "Lernez pluse", + "notification.moderation_warning": "Vu recevis jeraverto", + "notification.moderation_warning.action_delete_statuses": "Kelka vua posti efacesis.", + "notification.moderation_warning.action_disable": "Vua konto estas desaktivigita.", + "notification.moderation_warning.action_mark_statuses_as_sensitive": "Kelka vua posti markizesis quale sentoza.", + "notification.moderation_warning.action_none": "Vua konto recevis jeraverto.", + "notification.moderation_warning.action_sensitive": "Vua posti markizesos quale sentoza pos nun.", + "notification.moderation_warning.action_silence": "Vua konto limitizesis.", + "notification.moderation_warning.action_suspend": "Vua konto restriktesis.", "notification.own_poll": "Vua votposto finigis", + "notification.poll": "Votposto quan vu partoprenis finis", "notification.reblog": "{name} repetis tua mesajo", + "notification.reblog.name_and_others_with_link": "{name} e {count, plural,one {# altru} other {#altri}} repetis vua posto", + "notification.relationships_severance_event": "Desganis konekteso kun {name}", + "notification.relationships_severance_event.account_suspension": "Administranto de {from} restriktis {target}, do vu ne povas plue recevar novaji de lu o interagar kun lu.", + "notification.relationships_severance_event.domain_block": "Administranto de {from} blokusis {target}, e anke {followersCount} de vua sequanti e {followingCount, plural, one {# konto} other {# konti}} quan vu sequas.", + "notification.relationships_severance_event.learn_more": "Lernez pluse", + "notification.relationships_severance_event.user_domain_block": "Vu blokusis {target}, do efacis {followersCount} de vua sequanti e {followingCount, plural, one {# konto} other {#konti}} quan vu sequis.", "notification.status": "{name} nove postigis", "notification.update": "{name} modifikis posto", + "notification_requests.accept": "Aceptez", + "notification_requests.accept_multiple": "{count, plural, one {Aceptar # demando…} other {Aceptar # demandi…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceptar demando} other {Aceptar demandi}}", + "notification_requests.confirm_accept_multiple.message": "Vu aceptos {count, plural, one {1 savigdemando} other {# savigdemandi}}. Ka vu certe volas durar?", + "notification_requests.confirm_accept_multiple.title": "Ka aceptar savigdemandi?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorez demando} other {Ignorez demandi}}", + "notification_requests.confirm_dismiss_multiple.message": "Vu ignoros {count, plural, one {1 savigdemando} other {# savigdemandi}}. Vu ne povas facile ganar {count, plural, one {ol} other {oli}} pluse. Ka vu esas certe ke vu volas durar?", + "notification_requests.confirm_dismiss_multiple.title": "Ka ignorar savigdemandi?", + "notification_requests.dismiss": "Ignorez", + "notification_requests.dismiss_multiple": "{count, plural,one {Ignorez # demando…} other {Ignorez # demandi…}}", + "notification_requests.edit_selection": "Modifikez", + "notification_requests.exit_selection": "Finas", + "notification_requests.explainer_for_limited_account": "Savigi de ca konto filtresis pro ke la konto limitizesis da jeranto.", + "notification_requests.explainer_for_limited_remote_account": "Savigi de ca konto filtresis pro ke la konto o olua servilo limitizesis da jeranto.", + "notification_requests.maximize": "Parmontrez", + "notification_requests.minimize_banner": "Celez banero di filtrita savigi", + "notification_requests.notifications_from": "Savigi de {name}", + "notification_requests.title": "Filtrita savigi", + "notification_requests.view": "Videz savigi", "notifications.clear": "Efacar savigi", "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?", + "notifications.clear_title": "Ka efacar savigi?", "notifications.column_settings.admin.report": "Nova raporti:", "notifications.column_settings.admin.sign_up": "Nova registranti:", "notifications.column_settings.alert": "Desktopavizi", "notifications.column_settings.favourite": "Favoriziti:", + "notifications.column_settings.filter_bar.advanced": "Montrez omna kategorii", + "notifications.column_settings.filter_bar.category": "Rapidfiltrilbaro", "notifications.column_settings.follow": "Nova sequanti:", "notifications.column_settings.follow_request": "Nova sequodemandi:", "notifications.column_settings.mention": "Mencioni:", @@ -427,6 +589,23 @@ "notifications.permission_denied": "Desktopavizi esas nedisplonebla pro antea refuzita vidilpermisdemando", "notifications.permission_denied_alert": "Desktopavizi ne povas aktivigesar pro ke vidilpermiso refuzesis", "notifications.permission_required": "Desktopavizi esas nedisplonebla pro ke bezonata permiso ne donesis.", + "notifications.policy.accept": "Aceptez", + "notifications.policy.accept_hint": "Montrez en savigi", + "notifications.policy.drop": "Ignorez", + "notifications.policy.drop_hint": "Nihiligez lu", + "notifications.policy.filter": "Filtrez", + "notifications.policy.filter_hint": "Sendez a enbuxo di filtrita savigi", + "notifications.policy.filter_limited_accounts_hint": "Limitizesis da serviljeranti", + "notifications.policy.filter_limited_accounts_title": "Jerita konti", + "notifications.policy.filter_new_accounts.hint": "Kreesis depos {days, plural, one {1 dio} other {# dii}}", + "notifications.policy.filter_new_accounts_title": "Nova konti", + "notifications.policy.filter_not_followers_hint": "Inkluzanta personi qua sequas vu min kam {days, plural, one {1 dio} other {# dii}}", + "notifications.policy.filter_not_followers_title": "Nesequanti", + "notifications.policy.filter_not_following_hint": "Til vu manuale aprobas lu", + "notifications.policy.filter_not_following_title": "Nesequati", + "notifications.policy.filter_private_mentions_hint": "Filtrita se ol ne esas respondo a vua sua menciono o se vu sequas la sendanto", + "notifications.policy.filter_private_mentions_title": "Nekonocita privata mencioni", + "notifications.policy.title": "Regular savigi de…", "notifications_permission_banner.enable": "Aktivigez desktopavizi", "notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.", "notifications_permission_banner.title": "Irga kozo ne pasas vu", @@ -464,6 +643,10 @@ "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.tips.2fa": "Ka vu savas? Vu povas sekurigar vua konto per pozar 2-faktora verifiko en preferaji de vua konto. Telefonilnombro ne bezonesis!", + "onboarding.tips.accounts_from_other_servers": "Ka vu savas? Vu povas interagar kun profili sur altra servili senrupte!", + "onboarding.tips.migration": "Ka vu savas? Se vu sentas ke {domain} ne esas apta por vu en la futuro, vu povas transferar a altra servilo di Mastodon sen malganar vua sequanti!", + "onboarding.tips.verification": "Ka vu savas? Vu povas verifikar vua konto per pozi ligilo a vua profilo di Mastodon sur vua sua retsituo e adjuntar la retsituo a vua profilo. Senpage!", "password_confirmation.exceeds_maxlength": "La konfirmo dil pasvorto superesas la limito pri longeso di pasvorti", "password_confirmation.mismatching": "La konfirmo dil pasvorto ne egalesas", "picture_in_picture.restore": "Retropozez", @@ -478,7 +661,15 @@ "poll_button.add_poll": "Insertez votposto", "poll_button.remove_poll": "Efacez votposto", "privacy.change": "Aranjar privateso di mesaji", + "privacy.direct.long": "Omnu quan mencionesis en la posto", + "privacy.direct.short": "Specifika personi", + "privacy.private.long": "Nur vua sequanti", + "privacy.private.short": "Sequanti", + "privacy.public.long": "Ulu de e ne de Mastodon", "privacy.public.short": "Publike", + "privacy.unlisted.additional": "Co kondutas exakte kam publika, escepte la posto ne aparos en viva novajari o gretiketi, exploro, o sercho di Mastodon, mem se vu esas volunta totkonte.", + "privacy.unlisted.long": "Min multa algoritmoridikuli", + "privacy.unlisted.short": "Deslauta publiko", "privacy_policy.last_updated": "Antea novajo ye {date}", "privacy_policy.title": "Privatesguidilo", "recommended": "Rekomendata", @@ -496,7 +687,9 @@ "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hodie", + "reply_indicator.attachments": "{count, plural, one {# atachajo} other {# atachaji}}", "reply_indicator.cancel": "Nihiligar", + "reply_indicator.poll": "Votposto", "report.block": "Restriktez", "report.block_explanation": "Vu ne vidos olia posti. Oli ne povas vidar vua posti o sequar vu. Oli savos ke oli restriktesis.", "report.categories.legal": "Legala", @@ -539,9 +732,13 @@ "report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto pluse, desequez oli.", "report_notification.attached_statuses": "{count, plural,one {{count} posti} other {{count} posti}} adjuntesas", "report_notification.categories.legal": "Legala", + "report_notification.categories.legal_sentence": "deslegala kontenajo", "report_notification.categories.other": "Altra", + "report_notification.categories.other_sentence": "altra", "report_notification.categories.spam": "Spamo", + "report_notification.categories.spam_sentence": "sendacho", "report_notification.categories.violation": "Regulnesequo", + "report_notification.categories.violation_sentence": "regulviolaco", "report_notification.open": "Apertez raporto", "search.no_recent_searches": "Nula serchi recenta", "search.placeholder": "Serchez", @@ -569,8 +766,11 @@ "server_banner.about_active_users": "Personi quo uzas ca servilo dum antea 30 dii (monate aktiva uzanti)", "server_banner.active_users": "aktiva uzanti", "server_banner.administered_by": "Administresis da:", + "server_banner.is_one_of_many": "{domain} esas 1 de multa sendependa servili di Mastodon quan vu povas uzar por partoprenar en la fediverso.", "server_banner.server_stats": "Servilstatistiko:", "sign_in_banner.create_account": "Kreez konto", + "sign_in_banner.follow_anyone": "On povas sequar ulu sur tota fediverso e vidar omno ye kronologia ordino. Nula algoritmi, reklami o klikatrapo omnaloke.", + "sign_in_banner.mastodon_is": "Mastodon esas la maxim bona voyo por saveskar eventi.", "sign_in_banner.sign_in": "Enirez", "sign_in_banner.sso_redirect": "Enirar o krear konto", "status.admin_account": "Apertez jerintervizajo por @{name}", @@ -580,14 +780,18 @@ "status.bookmark": "Libromarko", "status.cancel_reblog_private": "Desrepetez", "status.cannot_reblog": "Ca posto ne povas repetesar", + "status.continued_thread": "Durigita postaro", "status.copy": "Copy link to status", "status.delete": "Efacar", "status.detailed_status": "Detala konversvido", "status.direct": "Private mencionez @{name}", "status.direct_indicator": "Privata menciono", "status.edit": "Modifikez", + "status.edited": "Recente modifikesis ye {date}", "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}", + "status.embed": "Ganez adherkodexo", "status.favourite": "Favorizar", + "status.favourites": "{count, plural, one {favorizo} other {favorizi}}", "status.filter": "Filtragez ca posto", "status.history.created": "{name} kreis ye {date}", "status.history.edited": "{name} modifikis ye {date}", @@ -606,9 +810,11 @@ "status.reblog": "Repetez", "status.reblog_private": "Repetez kun originala videbleso", "status.reblogged_by": "{name} repetis", + "status.reblogs": "{count, plural, one {repeto} other {repeti}}", "status.reblogs.empty": "Nulu ja repetis ca posto. Kande ulu facas lo, lu montresos hike.", "status.redraft": "Efacez e riskisigez", "status.remove_bookmark": "Efacez libromarko", + "status.replied_in_thread": "Respondesis en postaro", "status.replied_to": "Respondis a {name}", "status.reply": "Respondar", "status.replyAll": "Respondar a filo", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index fdb56f542e..ef709516c2 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Limitazione per eccesso di richieste", "alert.unexpected.message": "Si è verificato un errore imprevisto.", "alert.unexpected.title": "Oops!", + "alt_text_badge.title": "Testo alternativo", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non elaborato)", "audio.hide": "Nascondi audio", @@ -221,6 +222,8 @@ "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_num_followers": "Perderai {followersCount, plural, one {{followersCountDisplay} seguace} other {{followersCountDisplay} seguaci}} e {followingCount, plural, one {{followingCountDisplay} persona che segui} other {{followingCountDisplay} persone che segui}}.", + "domain_block_modal.you_will_lose_relationships": "Perderai tutti i seguaci e le persone che segui da questo server.", "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.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 7dcc346802..0eb3dbf5b4 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Sparta apribota.", "alert.unexpected.message": "Įvyko netikėta klaida.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Alternatyvus tekstas", "announcement.announcement": "Skelbimas", "attachments_list.unprocessed": "(neapdorotas)", "audio.hide": "Slėpti garsą", @@ -98,7 +99,7 @@ "block_modal.you_wont_see_mentions": "Nematysi įrašus, kuriuose jie paminimi.", "boost_modal.combo": "Galima paspausti {combo}, kad praleisti tai kitą kartą", "boost_modal.reblog": "Pasidalinti įrašą?", - "boost_modal.undo_reblog": "Panaikinti pasidalintą įrašą?", + "boost_modal.undo_reblog": "Nebepasidalinti įrašo?", "bundle_column_error.copy_stacktrace": "Kopijuoti klaidos ataskaitą", "bundle_column_error.error.body": "Paprašytos puslapio nepavyko atvaizduoti. Tai gali būti dėl mūsų kodo klaidos arba naršyklės suderinamumo problemos.", "bundle_column_error.error.title": "O, ne!", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Niekas iš šio serverio negali tavęs sekti.", "domain_block_modal.they_wont_know": "Jie nežinos, kad buvo užblokuoti.", "domain_block_modal.title": "Blokuoti serverį?", + "domain_block_modal.you_will_lose_num_followers": "Prarasi {followersCount, plural, one {{followersCountDisplay} sekėją} few {{followersCountDisplay} sekėjus} many {{followersCountDisplay} sekėjo} other {{followersCountDisplay} sekėjų}} ir {followingCount, plural, one {{followingCountDisplay} žmogų, kurį seki} few {{followingCountDisplay} žmones, kuriuos seki} many {{followingCountDisplay} žmonės, kuriuos seki} other {{followingCountDisplay} žmonių, kurių seki}}.", + "domain_block_modal.you_will_lose_relationships": "Prarasi visus sekėjus ir žmones, kuriuos seki iš šio serverio.", "domain_block_modal.you_wont_see_posts": "Nematysi naudotojų įrašų ar pranešimų šiame serveryje.", "domain_pill.activitypub_lets_connect": "Tai leidžia tau prisijungti ir bendrauti su žmonėmis ne tik „Mastodon“ platformoje, bet ir įvairiose socialinėse programėlėse.", "domain_pill.activitypub_like_language": "„ActivityPub“ – tai tarsi kalba, kuria „Mastodon“ kalba su kitais socialiniais tinklais.", @@ -765,7 +768,7 @@ "status.admin_status": "Atidaryti šį įrašą prižiūrėjimo sąsajoje", "status.block": "Blokuoti @{name}", "status.bookmark": "Pridėti į žymės", - "status.cancel_reblog_private": "Nebepakelti", + "status.cancel_reblog_private": "Nebepasidalinti", "status.cannot_reblog": "Šis įrašas negali būti pakeltas.", "status.continued_thread": "Tęsiama gijoje", "status.copy": "Kopijuoti nuorodą į įrašą", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f8e98e865b..282c345def 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Dataverkeer beperkt", "alert.unexpected.message": "Er deed zich een onverwachte fout voor", "alert.unexpected.title": "Oeps!", + "alt_text_badge.title": "Alt-tekst", "announcement.announcement": "Mededeling", "attachments_list.unprocessed": "(niet verwerkt)", "audio.hide": "Audio verbergen", @@ -216,12 +217,13 @@ "dismissable_banner.explore_tags": "Deze hashtags winnen aan populariteit op het sociale web (fediverse). Hashtags die door meer verschillende mensen worden gebruikt staan hoger.", "dismissable_banner.public_timeline": "Dit zijn de meest recente openbare berichten van accounts op het sociale web (fediverse) die door mensen op {domain} worden gevolgd.", "domain_block_modal.block": "Server blokkeren", - "domain_block_modal.block_account_instead": "In plaats hiervan {name} blokkeren", + "domain_block_modal.block_account_instead": "Alleen {name} blokkeren", "domain_block_modal.they_can_interact_with_old_posts": "Mensen op deze server kunnen interactie hebben met jouw oude berichten.", "domain_block_modal.they_cant_follow": "Niemand op deze server kan jou volgen.", "domain_block_modal.they_wont_know": "Ze krijgen niet te weten dat ze worden geblokkeerd.", "domain_block_modal.title": "Server blokkeren?", "domain_block_modal.you_will_lose_num_followers": "Je verliest {followersCount, plural, one {{followersCountDisplay} volger} other {{followersCountDisplay} volgers}} en {followingCount, plural, one {{followingCountDisplay} persoon die jij volgt} other {{followingCountDisplay} personen die jij volgt}}.", + "domain_block_modal.you_will_lose_relationships": "Je verliest alle volgers en mensen die je volgt van deze server.", "domain_block_modal.you_wont_see_posts": "Je ziet geen berichten of meldingen meer van gebruikers op deze server.", "domain_pill.activitypub_lets_connect": "Het zorgt ervoor dat je niet alleen maar kunt verbinden en communiceren met mensen op Mastodon, maar ook met andere sociale apps.", "domain_pill.activitypub_like_language": "ActivityPub is de taal die Mastodon met andere sociale netwerken spreekt.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 4528940797..8e9dd96baf 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Ograniczenie liczby zapytań", "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Tekst alternatywny", "announcement.announcement": "Ogłoszenie", "attachments_list.unprocessed": "(nieprzetworzone)", "audio.hide": "Ukryj dźwięk", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Użytkownik nie dowie się, że został zablokowany.", "domain_block_modal.title": "Zablokować domenę?", "domain_block_modal.you_will_lose_num_followers": "Utracisz {followersCount, plural, one {jednego obserwującego} other {{followersCountDisplay} obserwujących}} i {followingCount, plural, one {jedną osobę którą obserwujesz} few {{followingCountDisplay} osoby które obserwujesz} other {{followingCountDisplay} osób które obserwujesz}}.", + "domain_block_modal.you_will_lose_relationships": "Utracisz wszystkich obserwujących z tego serwera i wszystkie osoby które obserwujesz na tym serwerze.", "domain_block_modal.you_wont_see_posts": "Nie zobaczysz postów ani powiadomień od użytkowników na tym serwerze.", "domain_pill.activitypub_lets_connect": "Pozwala połączyć się z ludźmi na Mastodonie, jak i na innych serwisach społecznościowych.", "domain_pill.activitypub_like_language": "ActivityPub jest językiem używanym przez Mastodon do wymiany danych z innymi serwisami społecznościowymi.", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 402c0b38b5..d1a3ecdaa7 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Tentativas limitadas", "alert.unexpected.message": "Ocorreu um erro inesperado.", "alert.unexpected.title": "Eita!", + "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Comunicados", "attachments_list.unprocessed": "(não processado)", "audio.hide": "Ocultar áudio", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Ninguém deste servidor pode lhe seguir.", "domain_block_modal.they_wont_know": "Eles não saberão que foram bloqueados.", "domain_block_modal.title": "Dominio do bloco", + "domain_block_modal.you_will_lose_num_followers": "Você perderá {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} e {followingCount, plural, one {{followingCountDisplay} pessoa que você segue} other {{followingCountDisplay} pessoas que você segue}}.", + "domain_block_modal.you_will_lose_relationships": "Você irá perder todos os seguidores e pessoas que você segue neste servidor.", "domain_block_modal.you_wont_see_posts": "Você não verá postagens ou notificações de usuários neste servidor.", "domain_pill.activitypub_lets_connect": "Ele permite que você se conecte e interaja com pessoas não apenas no Mastodon, mas também em diferentes aplicativos sociais.", "domain_pill.activitypub_like_language": "ActivityPub é como a linguagem que o Mastodon fala com outras redes sociais.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 2195e6bf9a..084ac9945f 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Shpejtësi e kufizuar", "alert.unexpected.message": "Ndodhi një gabim të papritur.", "alert.unexpected.title": "Hëm!", + "alt_text_badge.title": "Tekst alternativ", "announcement.announcement": "Lajmërim", "attachments_list.unprocessed": "(e papërpunuar)", "audio.hide": "Fshihe audion", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "S’do ta dinë se janë bllokuar.", "domain_block_modal.title": "Të bllokohet përkatësia?", "domain_block_modal.you_will_lose_num_followers": "Do të humbni {followersCount, plural, one {{followersCountDisplay} ndjekës} other {{followersCountDisplay} ndjekës}} dhe {followingCount, plural, one {{followingCountDisplay} person që ndiqni} other {{followingCountDisplay} vetë që ndiqni}}.", + "domain_block_modal.you_will_lose_relationships": "Do të humbni krejt ndjekësit dhe personat që ndiqni nga ky shërbyes.", "domain_block_modal.you_wont_see_posts": "S’do të shihni postime, apo njoftime nga përdorues në këtë shërbyes.", "domain_pill.activitypub_lets_connect": "Ju lejon të lidheni dhe ndërveproni me persona jo thjesht në Mastodon, por edhe nëpër aplikacione të ndryshme shoqërore.", "domain_pill.activitypub_like_language": "ActivityPub është si gjuha me të cilën Mastodon-i komunikon me rrjete të tjerë shoqërorë.", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 509dbc7a21..6feae5d137 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Aşırı istek gönderildi", "alert.unexpected.message": "Beklenmedik bir hata oluştu.", "alert.unexpected.title": "Hay aksi!", + "alt_text_badge.title": "Alternatif metin", "announcement.announcement": "Duyuru", "attachments_list.unprocessed": "(işlenmemiş)", "audio.hide": "Sesi gizle", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Engellendiklerini bilmeyecekler.", "domain_block_modal.title": "Alan adını engelle?", "domain_block_modal.you_will_lose_num_followers": "{followersCount, plural, one {{followersCountDisplay} takipçi} other {{followersCountDisplay} takipçi}} ve {followingCount, plural, one {{followingCountDisplay} takip ettiğiniz kişi} other {{followingCountDisplay} takip ettiğiniz kişi}} kaybedeceksiniz.", + "domain_block_modal.you_will_lose_relationships": "Bu sunucudaki tüm takip edenleri ve takip ettiklerinizi kaybedeceksiniz.", "domain_block_modal.you_wont_see_posts": "Bu sunucudaki kullanıcılardan gelen gönderileri veya bildirimleri göremezsiniz.", "domain_pill.activitypub_lets_connect": "Sadece Mastodon üzerindeki değil, diğer sosyal uygulamalardaki kişilerle de bağlantı kurmanıza ve etkileşmenize olanak sağlar.", "domain_pill.activitypub_like_language": "ActivityPub, Mastodon'un diğer sosyal ağlarla konuşmak için kullandığı dil gibidir.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 1b5dbb4c9b..1753d0bebe 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Швидкість обмежена", "alert.unexpected.message": "Сталася неочікувана помилка.", "alert.unexpected.title": "Ой!", + "alt_text_badge.title": "Альтернативний текст", "announcement.announcement": "Оголошення", "attachments_list.unprocessed": "(не оброблено)", "audio.hide": "Сховати аудіо", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Ніхто з цього сервера не може слідкувати за вами.", "domain_block_modal.they_wont_know": "Вони не знають, що їх заблоковано.", "domain_block_modal.title": "Заблокувати домен?", + "domain_block_modal.you_will_lose_num_followers": "Ви втратите {followersCount, plural, one {{followersCountDisplay} підписника} few {{followersCountDisplay} підписника} many {{followersCountDisplay} підписників} other {{followersCountDisplay} підписника}} та {followingCount, plural, one {{followingCountDisplay} особу, за якою ви стежите} few {{followingCountDisplay} особи, за якими ви стежите} many {{followingCountDisplay} осіб, за якими ви стежите} other {{followingCountDisplay} особу, за якою ви стежите}}.", + "domain_block_modal.you_will_lose_relationships": "Ви втратите всіх підписників і людей, на яких ви підписані.", "domain_block_modal.you_wont_see_posts": "Ви не бачитимете дописів і сповіщень від користувачів на цьому сервері.", "domain_pill.activitypub_lets_connect": "Це дозволяє вам спілкуватися та взаємодіяти з людьми не лише на Mastodon, але й у різних соціальних застосунках.", "domain_pill.activitypub_like_language": "ActivityPub - це як мова, якою Mastodon розмовляє з іншими соціальними мережами.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 9c5c9ae1e4..12d9bd4354 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -222,6 +222,7 @@ "domain_block_modal.they_wont_know": "Họ sẽ không biết đã bị bạn chặn.", "domain_block_modal.title": "Chặn máy chủ?", "domain_block_modal.you_will_lose_num_followers": "Bạn sẽ mất {followersCount, plural, other {{followersCountDisplay} người theo dõi}} và {followingCount, plural, other {{followingCountDisplay} người bạn theo dõi}}.", + "domain_block_modal.you_will_lose_relationships": "Bạn sẽ mất tất cả người theo dõi và những người bạn theo dõi từ máy chủ này.", "domain_block_modal.you_wont_see_posts": "Bạn sẽ không thấy tút hoặc thông báo từ thành viên máy chủ này.", "domain_pill.activitypub_lets_connect": "Nó cho phép bạn kết nối và tương tác với mọi người không chỉ trên Mastodon mà còn trên các ứng dụng xã hội khác.", "domain_pill.activitypub_like_language": "ActivityPub giống như ngôn ngữ Mastodon giao tiếp với các mạng xã hội khác.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 1f539727f9..8ce888a039 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "频率受限", "alert.unexpected.message": "发生了意外错误。", "alert.unexpected.title": "哎呀!", + "alt_text_badge.title": "替代文本", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "此服务器上没有人可以关注你。", "domain_block_modal.they_wont_know": "他们不会知道自己被屏蔽。", "domain_block_modal.title": "屏蔽该域名?", + "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", + "domain_block_modal.you_will_lose_relationships": "你将失去在此实例上的所有关注和关注者。", "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", "domain_pill.activitypub_lets_connect": "它让你不仅能与Mastodon上的人交流互动,还能与其它不同社交应用上的人联系。", "domain_pill.activitypub_like_language": "ActivityPub就像Mastodon与其它社交网络交流时使用的语言。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index c585f98b6e..530202f0a5 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生非預期的錯誤。", "alert.unexpected.title": "哎呀!", + "alt_text_badge.title": "ALT 說明文字", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未經處理)", "audio.hide": "隱藏音訊", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "他們不會知道他們已被封鎖。", "domain_block_modal.title": "是否封鎖該網域?", "domain_block_modal.you_will_lose_num_followers": "您將會失去 {followersCount, plural, other {{followersCountDisplay} 個跟隨者}} 與 {followingCount, plural, other {{followingCountDisplay} 個您跟隨之帳號}}.", + "domain_block_modal.you_will_lose_relationships": "您將失去所有的跟隨者與您自此伺服器跟隨之帳號。", "domain_block_modal.you_wont_see_posts": "您不會見到來自此伺服器使用者之任何嘟文或推播通知。", "domain_pill.activitypub_lets_connect": "它使您能於 Mastodon 及其他不同的社群應用程式與人連結及互動。", "domain_pill.activitypub_like_language": "ActivityPub 像是 Mastodon 與其他社群網路溝通時所用的語言。", diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml index 6426defc55..2b0d509198 100644 --- a/config/locales/activerecord.io.yml +++ b/config/locales/activerecord.io.yml @@ -15,6 +15,12 @@ io: user/invite_request: text: Rezono errors: + attributes: + domain: + invalid: ne esas valida domennomo + messages: + invalid_domain_on_line: "%{value} ne esas valida domennomo" + too_many_lines: esas plu kam la limito qua esas %{limit} linei models: account: attributes: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index e0a68f7b46..965f354a35 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -873,6 +873,9 @@ ca: message_html: No has definit cap norma del servidor. sidekiq_process_check: message_html: No hi ha cap procés de Sidekiq executant-se per a la cua (o cues) de %{value}. Reviseu la configuració de Sidekiq + software_version_check: + action: Veure les actualitzacions disponibles + message_html: Hi ha disponible una actualització de Mastodon. software_version_critical_check: action: Veure actualitzacions disponibles message_html: Hi ha disponible una actualització crítica de Mastodon, si us plau, actualitza-la el més abans possible. diff --git a/config/locales/da.yml b/config/locales/da.yml index 96b27c91b3..0da901d4a8 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -875,6 +875,9 @@ da: message_html: Ingen serverregler defineret. sidekiq_process_check: message_html: Ingen Sidekiq-proces kører for %{value}-kø(er). Gennemgå Sidekiq-opsætningen + software_version_check: + action: Se tilgængelige opdateringer + message_html: En Mastodon-opdatering er tilgængelig. software_version_critical_check: action: Se tilgængelige opdateringer message_html: En kritisk Mastodon-opdatering er tilgængelig. Opdatér hurtigst muligt. diff --git a/config/locales/de.yml b/config/locales/de.yml index 5af77c431d..b98a96a1cd 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -875,6 +875,9 @@ de: message_html: Du hast keine Serverregeln festgelegt. sidekiq_process_check: message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration + software_version_check: + action: Verfügbare Updates ansehen + message_html: Ein Update für Mastodon ist verfügbar. software_version_critical_check: action: Verfügbare Updates ansehen message_html: Ein kritisches Mastodon-Update ist verfügbar – bitte aktualisiere so schnell wie möglich. @@ -1692,6 +1695,7 @@ de: delete: Kontolöschung development: Entwicklung edit_profile: Profil bearbeiten + export: Exportieren featured_tags: Vorgestellte Hashtags import: Importieren import_and_export: Importieren und exportieren diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml index 6bf0b52cef..49637579e4 100644 --- a/config/locales/devise.io.yml +++ b/config/locales/devise.io.yml @@ -12,6 +12,7 @@ io: last_attempt: Tu ankore povas probar unfoye ante ke tua konto esos extingita. locked: Tua konto esas extingita. not_found_in_database: Nejusta %{authentication_keys}. + omniauth_user_creation_failure: Eroro dum ke kreas konto por ca identeso. pending: Vua konti ankore kontrolesas. timeout: Vua kunsido expiris. Voluntez rienirar por avancar. unauthenticated: Tu devas enirar o membreskar por durar. @@ -47,14 +48,19 @@ io: subject: Instrucioni por chanjar la pasvorto title: Richanjo di pasvorto two_factor_disabled: + explanation: Eniro esas nun posibla per nur retpostoadreso e pasvorto. subject: 'Mastodon: 2-faktorverifiko deaktivigesis' + subtitle: 2-faktora verifiko por vua konto desaktivigesis. title: 2FA deaktivigesis two_factor_enabled: + explanation: Ficho facesis da parigita softwaro TOTP bezonesos por eniro. subject: 'Mastodon: 2-faktorverifiko aktivigesis' + subtitle: 2-faktora verifiko aktivigesis por vua konto. title: 2FA aktivigesis two_factor_recovery_codes_changed: explanation: Antea rigankodexi devalidesis e novo facesis. subject: 'Mastodon: 2-faktorrigankodexi rifacesis' + subtitle: Antea rigankodexi desvalidesis e novo facesis. title: 2FA-rigankodexi chanjesis unlock_instructions: subject: Instructioni por riacendar la konto @@ -68,9 +74,13 @@ io: subject: 'Mastodon: Sekurklefo efacesis' title: 1 de vua sekurklefi efacesis webauthn_disabled: + explanation: Verifiko per sekuresklefi desaktivigesis por vua konto. + extra: Eniro esas nun posibla per nur ficho qua facesis da parigita softwaro TOTP. subject: 'Mastodon: Verifiko per sekurklefi deaktivigesis' title: Sekurklefi deaktivigesis webauthn_enabled: + explanation: Sekuresklefoa verifiko aktivigesis por vua konto. + extra: Vua sekuresklefo povas nun uzesar por eniro. subject: 'Mastodon: Sekurklefverifiko aktivigesis' title: Sekurklefi aktivigesis omniauth_callbacks: diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index 27082028c7..b8ee3497b7 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -60,6 +60,7 @@ ga: error: title: Tharla earráid new: + prompt_html: Ba mhaith le %{client_name} cead rochtain a fháil ar do chuntas. Ní cheadaigh an t-iarratas seo ach amháin má aithníonn tú an fhoinse seo agus go bhfuil muinín agat as. review_permissions: Ceadanna a athbhreithniú title: Tá údarú ag teastáil show: diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml index f7f9dce7ea..85bf5d60c0 100644 --- a/config/locales/doorkeeper.pt-BR.yml +++ b/config/locales/doorkeeper.pt-BR.yml @@ -60,6 +60,7 @@ pt-BR: error: title: Ocorreu um erro new: + prompt_html: "%{client_name} gostaria de permissão para acessar sua conta. Aprove esta solicitação apenas se você reconhecer e confiar nesta fonte." review_permissions: Rever permissões title: Autorização necessária show: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 21afcd990f..fbd48d1c31 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1692,6 +1692,7 @@ en-GB: delete: Account deletion development: Development edit_profile: Edit profile + export: Export featured_tags: Featured hashtags import: Import import_and_export: Import and export diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 01685f99fe..292bbbff51 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1692,6 +1692,7 @@ es-AR: delete: Eliminación de la cuenta development: Desarrollo edit_profile: Editar perfil + export: Exportar featured_tags: Etiquetas destacadas import: Importar import_and_export: Importación y exportación diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index a8ff5c6938..45d8864502 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1692,6 +1692,7 @@ es-MX: delete: Borrar cuenta development: Desarrollo edit_profile: Editar perfil + export: Exportar featured_tags: Hashtags destacados import: Importar import_and_export: Importar y exportar diff --git a/config/locales/es.yml b/config/locales/es.yml index ab7fd3bc54..85bcf9065a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1692,6 +1692,7 @@ es: delete: Borrar cuenta development: Desarrollo edit_profile: Editar perfil + export: Exportar featured_tags: Hashtags destacados import: Importar import_and_export: Importar y exportar diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 9bd0f12241..258dda8cc4 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1692,6 +1692,7 @@ fi: delete: Tilin poisto development: Kehitys edit_profile: Muokkaa profiilia + export: Vie featured_tags: Suositellut aihetunnisteet import: Tuo tietoja import_and_export: Tuonti ja vienti diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 50b4802bc7..034e1f6bd2 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1692,6 +1692,7 @@ fo: delete: Striking av kontu development: Menning edit_profile: Rætta vanga + export: Flyt út featured_tags: Varpaði frámerki import: Innflyt import_and_export: Innflyt og útflyt diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 9513623932..c678e93323 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1770,6 +1770,7 @@ ga: delete: Scriosadh cuntais development: Forbairt edit_profile: Cuir an phróifíl in eagar + export: Easpórtáil featured_tags: Haischlib faoi thrácht import: Iompórtáil import_and_export: Iompórtáil agus easpórtáil diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 2eadb2ba6b..e396761f7e 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -543,7 +543,7 @@ gl: total_reported: Denuncias sobre eles total_storage: Adxuntos multimedia totals_time_period_hint_html: Os totais aquí mostrados inclúen todo o historial de datos. - unknown_instance: Actualmente non temos constancia deste rexistro no servidor. + unknown_instance: Actualmente non hai rexistro deste dominio no servidor. invites: deactivate_all: Desactivar todo filter: @@ -602,7 +602,7 @@ gl: resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardarán avisos, e pecharase a denuncia. silence_description_html: A conta será visible só para quen xa a está a seguir ou quen a buscou manualmente, limitando moito o seu alcance. Pódese cambiar. Isto pecha tódalas denuncias acerca desta conta. suspend_description_html: A conta e todo o seu contido non serán accesible e finalmente eliminaranse, será imposible interactuar con ela. A decisión é reversible durante 30 días. Isto pecha tódalas denuncias sobre esta conta. - actions_description_html: Decide a acción a tomar para resolver esta denuncia. Se tomas accións punitivas contra a conta denunciada enviaraselle un correo, excepto se está indicada a categoría Spam. + actions_description_html: Decide a acción a tomar para resolver esta denuncia. Se tomas accións punitivas contra a conta denunciada enviaráselle un correo, excepto se está indicada a categoría Spam. actions_description_remote_html: Decide a acción a tomar para resolver a denuncia. Isto só lle afecta ao xeito en que o teu servidor se comunica con esta conta remota e xestiona o seu contido. actions_no_posts: Esta denuncia non ten publicacións asociadas para eliminar add_to_report: Engadir máis á denuncia @@ -875,6 +875,9 @@ gl: message_html: Non tes definidas regras para o servidor. sidekiq_process_check: message_html: Non hai procesos Sidekiq a funcionar para a cola(s) %{value}. Revisa a túa configuración para Sidekiq + software_version_check: + action: Ver as actualizacións dispoñibles + message_html: Hai dispoñible unha actualización para Mastodon. software_version_critical_check: action: Mira as actualizacións dispoñibles message_html: Hai unha actualización crítica de Mastodon dispoñible, actualiza axiña. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 2f6a4c5778..11f2a415f2 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1692,6 +1692,7 @@ hu: delete: Fiók törlése development: Fejlesztőknek edit_profile: Profil szerkesztése + export: Exportálás featured_tags: Kiemelt hashtagek import: Importálás import_and_export: Import és export diff --git a/config/locales/it.yml b/config/locales/it.yml index 9fdeede8bf..a89fa0a53e 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -875,6 +875,9 @@ it: message_html: Non hai definito alcuna regola del server. sidekiq_process_check: message_html: Nessun processo di Sidekiq in esecuzione per le code di %{value}. Sei pregato di revisionare la tua configurazione di Sidekiq + software_version_check: + action: Visualizza gli aggiornamenti disponibili + message_html: È disponibile un aggiornamento per Mastodon. software_version_critical_check: action: Visualizza gli aggiornamenti disponibili message_html: Un aggiornamento critico di Mastodon è disponibile, ti preghiamo di aggiornare il più rapidamente possibile. @@ -1694,6 +1697,7 @@ it: delete: Cancellazione account development: Sviluppo edit_profile: Modifica profilo + export: Esporta featured_tags: Hashtag in evidenza import: Importa import_and_export: Importa ed esporta diff --git a/config/locales/lt.yml b/config/locales/lt.yml index ef13817028..3b63ba6dcf 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -608,6 +608,9 @@ lt: message_html: Tavo Elasticsearch klasteris turi tik vieną mazgą, ES_PRESET turėtų būti nustatyta į single_node_cluster. elasticsearch_running_check: message_html: Nepavyko prijungti prie Elasticsearch. Patikrink, ar ji veikia, arba išjunk viso teksto paiešką. + software_version_check: + action: Žiūrėti galimus naujinimus + message_html: Yra „Mastodon“ naujinimas. tags: moderation: not_trendable: Netendencinga @@ -1090,6 +1093,7 @@ lt: delete: Paskyros trynimas development: Kūrimas edit_profile: Redaguoti profilį + export: Eksportuoti featured_tags: Rodomi saitažodžiai import: Importuoti import_and_export: Importas ir eksportas diff --git a/config/locales/nl.yml b/config/locales/nl.yml index afc4652bf6..7681a04eae 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -875,6 +875,9 @@ nl: message_html: Je hebt voor deze server geen regels opgesteld. sidekiq_process_check: message_html: Er draait geen Sidekiqproces voor de wachtrij(en) %{value}. Controleer je Sidekiqconfiguratie + software_version_check: + action: Beschikbare updates bekijken + message_html: Er is een Mastodon-update beschikbaar. software_version_critical_check: action: Bekijk de beschikbare updates message_html: Er is een kritieke update voor Mastodon beschikbaar. Update zo snel mogelijk. diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 98f62e123a..81047d92e7 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -875,6 +875,9 @@ nn: message_html: Du har ikke definert noen serverregler. sidekiq_process_check: message_html: Ingen Sidekiq-prosess kjører for %{value} køen(e). Vennligst se gjennom Sidekiq-konfigurasjonen din + software_version_check: + action: Sjå tilgjengelege oppdateringar + message_html: Ei Mastodon-oppdatering er tilgjengeleg. software_version_critical_check: action: Sjå tilgjengelege oppdateringar message_html: Ei kritisk oppdatering til Mastodon er tilgjengeleg. Oppdater så snart som mogleg. diff --git a/config/locales/pl.yml b/config/locales/pl.yml index e68ea2b16a..3aaf7a5a57 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -903,6 +903,9 @@ pl: message_html: Nie zdefiniowano żadnych reguł serwera. sidekiq_process_check: message_html: Brak uruchomionego procesu Sidekiq dla kolejki(-ek) %{value}. Sprawdź konfigurację Sidekiq + software_version_check: + action: Pokaż dostępne aktualizacje + message_html: Dostępna aktualizacja Mastodona. software_version_critical_check: action: Pokaż dostępne aktualizacje message_html: Dostępna krytyczna aktualizacja Mastodona, zaktualizuj jak tylko będzie to możliwe. @@ -1744,6 +1747,7 @@ pl: delete: Usuń konto development: Tworzenie aplikacji edit_profile: Edytuj profil + export: Eksportowanie danych featured_tags: Wyróżnione hashtagi import: Importowanie danych import_and_export: Import i eksport diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index ba21dd1b3b..30022be93a 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1692,6 +1692,7 @@ pt-BR: delete: Exclusão de conta development: Desenvolvimento edit_profile: Editar perfil + export: Exportar featured_tags: Hashtags em destaque import: Importar import_and_export: Importar e exportar diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index fe8243b0e9..5cbbd9d06e 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -3,6 +3,7 @@ io: simple_form: hints: account: + attribution_domains_as_text: Protektas de falsa akreditaji. discoverable: Vua publika posti e profilo povas remarkesar o rekomendesar en diferanta parti di Mastodon e vua profilo povas sugestesar ad altra uzanti. display_name: Vua tota nomo o vua gaya nomo. fields: Vua retsituo, pronomi, evo, irgo quan vu volas. @@ -39,12 +40,14 @@ io: text: Vu povas nur apelar striko unafoye defaults: autofollow: Personi quo registresesas tra invito automatika sequos vu + avatar: WEBP, PNG, GIF o JPG. Maxime %{size}. Esos mikrigita a %{dimensions}px bot: Signalez a altra personi ke la konto precipue havas automatikigita agi e forsan ne surveyesas context: Situeso kande filtrilo debas aplikesar current_password: Por sekuresorezoni, pozez pasvorto di ca konto current_username: Por konfirmar, pozez uzantonomo di ca konto digest: Nur sendesas pos longa neaktiveso e nur se vu ganis irga mesaji dum ke vu esas neprezenta email: Vu sendesos konfirmretposto + header: WEBP, PNG, GIF o JPG. Maxime %{size}. Esos mikrigita a %{dimensions}px inbox_url: Kopiez URL de frontpagino de relayo quon vu volas uzar irreversible: Filtrita posti neinversigeble desaparos, mem se filtro efacesas pose locale: Linguo di uzantointervizajo, retposti e pulsavizi @@ -75,10 +78,15 @@ io: warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo form_admin_settings: activity_api_enabled: Quanto de lokale publikigita posti, aktiva uzanti e nova registri, donita semanope + app_icon: WEBP, PNG, GIF o JPG. Ol remplas la originala imajeto di softwaro sur poshaparati kun personaligita imajeto. + backups_retention_period: Uzanto povas facar arkivi di sua posti por deskargar pose. Se ol esas positiva nombro, ca arkivi automate efacesis de vua konserveyo pos la decidita quanto di dii. bootstrap_timeline_accounts: Ca konti pinglagesos a super sequorekomendi di nova uzanti. closed_registrations_message: Montresas kande registradi klozesas + content_cache_retention_period: Omna posti de altra servili efacesos (anke repeti e respondi) pos decidita quanto di dii, sen ye irga lokala uzantointerago kun ti posti. Privata mencioni inter uzanto de dessanta servili anke desganos e neposible riganesos. custom_css: Vu povas pozar kustumizita staili en retverso di Mastodon. + favicon: WEBP, PNG, GIF o JPG. Ol remplas la originala imajeto di Mastodon kun personaligita imajeto. mascot: Remplas montreso en avanca retintervizajo. + media_cache_retention_period: Medidoseri de posti quan posti da deslokala uzanti retummemoresis sur vua servilo. Se medidatumo demandesas pos ol efacesas, ol rideskargesos. peers_api_enabled: Listo di domeni quin ca servilo trovis en la fediverso. Nula informo inkluzesas hike pri ka vu federas kun partikulara servilo, nur ke vua servilo savas pri lo. Co es uzata da enti qui kolektas statistiki pri federeso generale. profile_directory: La profilcheflisto montras omna uzanti quo voluntale volas esar deskovrebla. require_invite_text: Kande registradi bezonas manuala aprobo, ol kauzigas "Por quo vu volas juntas?" textoenpozo esar obliganta @@ -111,6 +119,7 @@ io: sign_up_requires_approval: Nova registro bezonos vua aprobo severity: Selektez quo eventos kun demandi de ca IP rule: + hint: Nemusta. Ol donas plu multa detali pri la regulo text: Deskriptez regulo o bezonaj por uzanti en ca servilo. Vu debas lasar lu esar korta e simpla sessions: otp: Enter the Two-factor code from your phone or use one of your recovery codes. @@ -122,6 +131,7 @@ io: name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla user: chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei + role: La rolo donas certena permisi a la uzanto. user_role: color: Koloro quo uzesas por rolo en tota UI, quale RGB kun hexformato highlighted: Co kauzigas rolo divenar publike videbla @@ -130,9 +140,11 @@ io: position: Plu alta rolo decidas problemsolvo en kelka situeso. Kelka agi povas nur eventar a roli kun plu basa prioreso webhook: events: Selektigez eventi por sendar + template: Facez vua sua JSON per variebla interpolo. Lasez quale nulo por originala JSON. url: Ibe eventi sendesos labels: account: + attribution_domains_as_text: Nur permisas specifika retsitui discoverable: Inkluzar profilo e posti en trovado-algoritmi fields: name: Etiketo @@ -201,6 +213,7 @@ io: setting_default_privacy: Videbleso di la mesaji setting_default_sensitive: Sempre markizez medii quale sentoza setting_delete_modal: Montrez konfirmdialogo ante efacar posto + setting_disable_hover_cards: Desaktivigez profilprevido dum klikpaso setting_disable_swiping: Desaktivigez fingromovi setting_display_media: Mediomontrajo setting_display_media_default: Originalo @@ -232,10 +245,13 @@ io: warn: Celez kun averto form_admin_settings: activity_api_enabled: Publikigez rezumstatistiko pri uzantoaktiveso en API + app_icon: Softwarimajeto backups_retention_period: Uzantoarkivretendurtempo bootstrap_timeline_accounts: Sempre rekomendez ca konti a nova uzanti closed_registrations_message: Kustumizita mesajo kande registradi ne esas disponebla + content_cache_retention_period: Fora kontenajretenperiodo custom_css: Kustumizita CSS + favicon: Imajeto mascot: Kustumizita reprezentimajo (oldo) media_cache_retention_period: Mediimemorajretendurtempo peers_api_enabled: Publikigez listo di deskovrita servili en API @@ -291,6 +307,7 @@ io: patch: Notifikar pri problemosolvanta aktualigi trending_tag: Nova tendenco bezonas kontrolo rule: + hint: Plusa informo text: Regulo settings: indexable: Inkluzar profilopagino en serchili @@ -299,6 +316,7 @@ io: listable: Permisez ca hashtago aparar en trovaji e sugestaji name: Hashtago trendable: Permisez ca hashtago aparar che tendenci + usable: Permisez posti uzar ca gretiketo lokale user: role: Rolo time_zone: Klokozono @@ -310,9 +328,11 @@ io: position: Prioreso webhook: events: Aktivigita eventi + template: Pagkargshablono url: URL di finpunto 'no': Ne not_recommended: Ne rekomendesas + overridden: Remplesis recommended: Rekomendito required: mark: "*" diff --git a/config/locales/sq.yml b/config/locales/sq.yml index c1ed91cf96..2f05d7860c 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -871,6 +871,9 @@ sq: message_html: S’keni përcaktuar ndonjë rregull shërbyesi. sidekiq_process_check: message_html: S’ka proces Sidekiq në punë për %{value} radhë. Ju lutemi, shqyrtoni formësimin tuaj për Sidekiq-un + software_version_check: + action: Shihni përditësimet e gatshme + message_html: Ka gati një përditësim Mastodon-i. software_version_critical_check: action: Shihni përditësimet e gatshme message_html: Ka të gatshëm një përditësim kritik të Mastodon-it, ju lutemi, përditësojeni sa më shpejt të jetë e mundur. diff --git a/config/locales/tr.yml b/config/locales/tr.yml index d2cf412cc9..2935948a47 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1692,6 +1692,7 @@ tr: delete: Hesap silme development: Geliştirme edit_profile: Profili düzenle + export: Dışa Aktar featured_tags: Öne çıkan etiketler import: İçe aktar import_and_export: İçe ve dışa aktar diff --git a/config/locales/uk.yml b/config/locales/uk.yml index d0164d846a..de1847a745 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -903,6 +903,9 @@ uk: message_html: Ви не визначили будь-які правила сервера. sidekiq_process_check: message_html: Не працює процес Sidekiq для %{value} черги. Перегляньте конфігурації вашого Sidekiq + software_version_check: + action: Переглянути доступні оновлення + message_html: Доступне оновлення Mastodon. software_version_critical_check: action: Переглянути доступні оновлення message_html: Виявлено критичне оновлення Mastodon. Оновіться якнайшвидше. @@ -1744,6 +1747,7 @@ uk: delete: Видалення облікового запису development: Розробка edit_profile: Редагувати профіль + export: Експорт featured_tags: Рекомендовані хештеґи import: Імпорт import_and_export: Імпорт та експорт diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index ade35ceb62..a73871115b 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -861,6 +861,9 @@ zh-CN: message_html: 你没有定义任何服务器规则。 sidekiq_process_check: message_html: "%{value} 队列未运行任何 Sidekiq 进程。请检查你的 Sidekiq 配置" + software_version_check: + action: 查看可用更新 + message_html: 有一个 Mastodon 更新可用。 software_version_critical_check: action: 查看可用更新 message_html: 有一个紧急Mastodon紧急更新可用,请尽快更新。 @@ -1666,6 +1669,7 @@ zh-CN: delete: 删除账户 development: 开发 edit_profile: 更改个人资料 + export: 导出 featured_tags: 精选的话题标签 import: 导入 import_and_export: 导入和导出 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 41c4c8a534..4079f68a50 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -863,6 +863,9 @@ zh-TW: message_html: 您尚未定義任何伺服器規則。 sidekiq_process_check: message_html: 沒有佇列 %{value} 的 Sidekiq 行程,請檢查您的 Sidekiq 設定組態 + software_version_check: + action: 檢視可取得的更新 + message_html: 有可取得的 Mastodon 更新。 software_version_critical_check: action: 檢視可取得的更新 message_html: 有可取得的重要 Mastodon 更新,請立即升級。 From 675ec1a0adf9b179c9b5fe407f7926c94266dd69 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 27 Sep 2024 04:18:42 -0400 Subject: [PATCH 014/550] Only show recently used tags hint when they are present (#32120) --- app/helpers/settings_helper.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 64f2ad70a6..fd631ce92e 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -10,16 +10,17 @@ module SettingsHelper end def featured_tags_hint(recently_used_tags) - safe_join( - [ - t('simple_form.hints.featured_tag.name'), - safe_join( - links_for_featured_tags(recently_used_tags), - ', ' - ), - ], - ' ' - ) + recently_used_tags.present? && + safe_join( + [ + t('simple_form.hints.featured_tag.name'), + safe_join( + links_for_featured_tags(recently_used_tags), + ', ' + ), + ], + ' ' + ) end def session_device_icon(session) From 04dd3a9eb6f28eb6387dd480b0556e5f7aba772b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 27 Sep 2024 04:20:21 -0400 Subject: [PATCH 015/550] Wrap webhook event label with `samp` tag (#32115) --- app/views/admin/webhooks/_form.html.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/admin/webhooks/_form.html.haml b/app/views/admin/webhooks/_form.html.haml index 2b948b9a6a..bdba08a454 100644 --- a/app/views/admin/webhooks/_form.html.haml +++ b/app/views/admin/webhooks/_form.html.haml @@ -13,7 +13,8 @@ as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', - disabled: Webhook::EVENTS.filter { |event| !current_user.role.can?(Webhook.permission_for_event(event)) } + disabled: Webhook::EVENTS.filter { |event| !current_user.role.can?(Webhook.permission_for_event(event)) }, + label_method: ->(event) { tag.samp(event) } .fields-group = form.input :template, From e02e88bff4ad5f5acd017fa340f745b87f430a46 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 27 Sep 2024 04:21:27 -0400 Subject: [PATCH 016/550] Use previously extracted model constants in form `maxlength` attributes (#32113) --- app/models/form/admin_settings.rb | 4 +++- app/views/admin/settings/branding/show.html.haml | 2 +- app/views/auth/registrations/new.html.haml | 2 +- app/views/disputes/strikes/show.html.haml | 2 +- app/views/settings/profiles/show.html.haml | 8 ++++---- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 85b913cf80..515909d5cf 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -73,6 +73,8 @@ class Form::AdminSettings authorized_fetch: :authorized_fetch_mode?, }.freeze + DESCRIPTION_LIMIT = 200 + attr_accessor(*KEYS) validates :registrations_mode, inclusion: { in: %w(open approved none) }, if: -> { defined?(@registrations_mode) } @@ -82,7 +84,7 @@ class Form::AdminSettings validates :show_domain_blocks, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks) } validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) } validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) } - validates :site_short_description, length: { maximum: 200 }, if: -> { defined?(@site_short_description) } + validates :site_short_description, length: { maximum: DESCRIPTION_LIMIT }, if: -> { defined?(@site_short_description) } validates :status_page_url, url: true, allow_blank: true validate :validate_site_uploads diff --git a/app/views/admin/settings/branding/show.html.haml b/app/views/admin/settings/branding/show.html.haml index e03c16a25a..62e9c72459 100644 --- a/app/views/admin/settings/branding/show.html.haml +++ b/app/views/admin/settings/branding/show.html.haml @@ -25,7 +25,7 @@ .fields-group = f.input :site_short_description, as: :text, - input_html: { rows: 2, maxlength: 200 }, + input_html: { rows: 2, maxlength: Form::AdminSettings::DESCRIPTION_LIMIT }, wrapper: :with_block_label .fields-row diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml index 1e5aac2976..d58f1ccf4d 100644 --- a/app/views/auth/registrations/new.html.haml +++ b/app/views/auth/registrations/new.html.haml @@ -21,7 +21,7 @@ = f.simple_fields_for :account do |ff| = ff.input :username, append: "@#{site_hostname}", - input_html: { 'aria-label': t('simple_form.labels.defaults.username'), autocomplete: 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, + input_html: { 'aria-label': t('simple_form.labels.defaults.username'), autocomplete: 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: Account::USERNAME_LENGTH_LIMIT }, label: false, required: true, wrapper: :with_label diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 2bfecebbff..150dc06759 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -76,7 +76,7 @@ = simple_form_for(@appeal, url: disputes_strike_appeal_path(@strike)) do |f| .fields-group - = f.input :text, wrapper: :with_label, input_html: { maxlength: 500 } + = f.input :text, wrapper: :with_label, input_html: { maxlength: Appeal::TEXT_LENGTH_LIMIT } .actions = f.button :button, t('disputes.strikes.appeals.submit'), type: :submit diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 9790df7d05..8fb2132519 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -15,10 +15,10 @@ .fields-row .fields-row__column.fields-row__column-6 .fields-group - = f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: 30, data: { default: @account.username } } + = f.input :display_name, wrapper: :with_block_label, input_html: { maxlength: Account::DISPLAY_NAME_LENGTH_LIMIT, data: { default: @account.username } } .fields-group - = f.input :note, wrapper: :with_block_label, input_html: { maxlength: 500 } + = f.input :note, wrapper: :with_block_label, input_html: { maxlength: Account::NOTE_LENGTH_LIMIT } .fields-row__column.fields-group.fields-row__column-6 .input.with_block_label @@ -27,8 +27,8 @@ = f.simple_fields_for :fields do |fields_f| .row - = fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name'), input_html: { maxlength: 255 } - = fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value'), input_html: { maxlength: 255 } + = fields_f.input :name, placeholder: t('simple_form.labels.account.fields.name'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL } + = fields_f.input :value, placeholder: t('simple_form.labels.account.fields.value'), input_html: { maxlength: Account::Field::MAX_CHARACTERS_LOCAL } .fields-row .fields-row__column.fields-row__column-6 From cdd7526531f3b2f2fa39497ce2d89002b4f428e3 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 27 Sep 2024 04:22:40 -0400 Subject: [PATCH 017/550] Remove completed TODO note in tags request spec (#32108) --- spec/requests/tags_spec.rb | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/spec/requests/tags_spec.rb b/spec/requests/tags_spec.rb index 7974a6b152..fbd1f7d56e 100644 --- a/spec/requests/tags_spec.rb +++ b/spec/requests/tags_spec.rb @@ -7,18 +7,6 @@ RSpec.describe 'Tags' do context 'when tag exists' do let(:tag) { Fabricate :tag } - context 'with HTML format' do - # TODO: Update the have_cacheable_headers matcher to operate on capybara sessions - # Remove this example, rely on system spec (which should use matcher) - before { get tag_path(tag) } - - it 'returns http success' do - expect(response) - .to have_http_status(200) - .and have_cacheable_headers.with_vary('Accept, Accept-Language, Cookie') - end - end - context 'with JSON format' do before { get tag_path(tag, format: :json) } From 11a12e56b3480ac03921e831a7ccfcc7ade24b52 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Sep 2024 17:09:39 +0200 Subject: [PATCH 018/550] Change media reordering design in the compose form in web UI (#32093) --- .../features/compose/components/upload.jsx | 81 -------- .../features/compose/components/upload.tsx | 130 ++++++++++++ .../compose/components/upload_form.jsx | 53 ----- .../compose/components/upload_form.tsx | 185 ++++++++++++++++++ app/javascript/mastodon/locales/en.json | 5 + .../mastodon/models/media_attachment.ts | 2 + .../styles/mastodon/components.scss | 59 ++++-- package.json | 3 + yarn.lock | 59 ++++++ 9 files changed, 423 insertions(+), 154 deletions(-) delete mode 100644 app/javascript/mastodon/features/compose/components/upload.jsx create mode 100644 app/javascript/mastodon/features/compose/components/upload.tsx delete mode 100644 app/javascript/mastodon/features/compose/components/upload_form.jsx create mode 100644 app/javascript/mastodon/features/compose/components/upload_form.tsx create mode 100644 app/javascript/mastodon/models/media_attachment.ts diff --git a/app/javascript/mastodon/features/compose/components/upload.jsx b/app/javascript/mastodon/features/compose/components/upload.jsx deleted file mode 100644 index 7f6ef6cfd8..0000000000 --- a/app/javascript/mastodon/features/compose/components/upload.jsx +++ /dev/null @@ -1,81 +0,0 @@ -import PropTypes from 'prop-types'; -import { useCallback } from 'react'; - -import { FormattedMessage } from 'react-intl'; - -import classNames from 'classnames'; - -import { useDispatch, useSelector } from 'react-redux'; - -import spring from 'react-motion/lib/spring'; - -import CloseIcon from '@/material-icons/400-20px/close.svg?react'; -import EditIcon from '@/material-icons/400-24px/edit.svg?react'; -import WarningIcon from '@/material-icons/400-24px/warning.svg?react'; -import { undoUploadCompose, initMediaEditModal } from 'mastodon/actions/compose'; -import { Blurhash } from 'mastodon/components/blurhash'; -import { Icon } from 'mastodon/components/icon'; -import Motion from 'mastodon/features/ui/util/optional_motion'; - -export const Upload = ({ id, onDragStart, onDragEnter, onDragEnd }) => { - const dispatch = useDispatch(); - const media = useSelector(state => state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id)); - const sensitive = useSelector(state => state.getIn(['compose', 'spoiler'])); - - const handleUndoClick = useCallback(() => { - dispatch(undoUploadCompose(id)); - }, [dispatch, id]); - - const handleFocalPointClick = useCallback(() => { - dispatch(initMediaEditModal(id)); - }, [dispatch, id]); - - const handleDragStart = useCallback(() => { - onDragStart(id); - }, [onDragStart, id]); - - const handleDragEnter = useCallback(() => { - onDragEnter(id); - }, [onDragEnter, id]); - - if (!media) { - return null; - } - - const focusX = media.getIn(['meta', 'focus', 'x']); - const focusY = media.getIn(['meta', 'focus', 'y']); - const x = ((focusX / 2) + .5) * 100; - const y = ((focusY / -2) + .5) * 100; - const missingDescription = (media.get('description') || '').length === 0; - - return ( -
- - {({ scale }) => ( -
- {sensitive && } - -
- - -
- -
- -
-
- )} -
-
- ); -}; - -Upload.propTypes = { - id: PropTypes.string, - onDragEnter: PropTypes.func, - onDragStart: PropTypes.func, - onDragEnd: PropTypes.func, -}; diff --git a/app/javascript/mastodon/features/compose/components/upload.tsx b/app/javascript/mastodon/features/compose/components/upload.tsx new file mode 100644 index 0000000000..3a24b28291 --- /dev/null +++ b/app/javascript/mastodon/features/compose/components/upload.tsx @@ -0,0 +1,130 @@ +import { useCallback } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; + +import { useSortable } from '@dnd-kit/sortable'; +import { CSS } from '@dnd-kit/utilities'; + +import CloseIcon from '@/material-icons/400-20px/close.svg?react'; +import EditIcon from '@/material-icons/400-24px/edit.svg?react'; +import WarningIcon from '@/material-icons/400-24px/warning.svg?react'; +import { + undoUploadCompose, + initMediaEditModal, +} from 'mastodon/actions/compose'; +import { Blurhash } from 'mastodon/components/blurhash'; +import { Icon } from 'mastodon/components/icon'; +import type { MediaAttachment } from 'mastodon/models/media_attachment'; +import { useAppDispatch, useAppSelector } from 'mastodon/store'; + +export const Upload: React.FC<{ + id: string; + dragging?: boolean; + overlay?: boolean; + tall?: boolean; + wide?: boolean; +}> = ({ id, dragging, overlay, tall, wide }) => { + const dispatch = useAppDispatch(); + const media = useAppSelector( + (state) => + state.compose // eslint-disable-line @typescript-eslint/no-unsafe-call + .get('media_attachments') // eslint-disable-line @typescript-eslint/no-unsafe-member-access + .find((item: MediaAttachment) => item.get('id') === id) as // eslint-disable-line @typescript-eslint/no-unsafe-member-access + | MediaAttachment + | undefined, + ); + const sensitive = useAppSelector( + (state) => state.compose.get('spoiler') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + ); + + const handleUndoClick = useCallback(() => { + dispatch(undoUploadCompose(id)); + }, [dispatch, id]); + + const handleFocalPointClick = useCallback(() => { + dispatch(initMediaEditModal(id)); + }, [dispatch, id]); + + const { attributes, listeners, setNodeRef, transform, transition } = + useSortable({ id }); + + if (!media) { + return null; + } + + const focusX = media.getIn(['meta', 'focus', 'x']) as number; + const focusY = media.getIn(['meta', 'focus', 'y']) as number; + const x = (focusX / 2 + 0.5) * 100; + const y = (focusY / -2 + 0.5) * 100; + const missingDescription = + ((media.get('description') as string | undefined) ?? '').length === 0; + + const style = { + transform: CSS.Transform.toString(transform), + transition, + }; + + return ( +
+
+ {sensitive && ( + + )} + +
+ + +
+ +
+ +
+
+
+ ); +}; diff --git a/app/javascript/mastodon/features/compose/components/upload_form.jsx b/app/javascript/mastodon/features/compose/components/upload_form.jsx deleted file mode 100644 index adf5591382..0000000000 --- a/app/javascript/mastodon/features/compose/components/upload_form.jsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useRef, useCallback } from 'react'; - -import { useSelector, useDispatch } from 'react-redux'; - -import { changeMediaOrder } from 'mastodon/actions/compose'; - -import { Upload } from './upload'; -import { UploadProgress } from './upload_progress'; - -export const UploadForm = () => { - const dispatch = useDispatch(); - const mediaIds = useSelector(state => state.getIn(['compose', 'media_attachments']).map(item => item.get('id'))); - const active = useSelector(state => state.getIn(['compose', 'is_uploading'])); - const progress = useSelector(state => state.getIn(['compose', 'progress'])); - const isProcessing = useSelector(state => state.getIn(['compose', 'is_processing'])); - - const dragItem = useRef(); - const dragOverItem = useRef(); - - const handleDragStart = useCallback(id => { - dragItem.current = id; - }, [dragItem]); - - const handleDragEnter = useCallback(id => { - dragOverItem.current = id; - }, [dragOverItem]); - - const handleDragEnd = useCallback(() => { - dispatch(changeMediaOrder(dragItem.current, dragOverItem.current)); - dragItem.current = null; - dragOverItem.current = null; - }, [dispatch, dragItem, dragOverItem]); - - return ( - <> - - - {mediaIds.size > 0 && ( -
- {mediaIds.map(id => ( - - ))} -
- )} - - ); -}; diff --git a/app/javascript/mastodon/features/compose/components/upload_form.tsx b/app/javascript/mastodon/features/compose/components/upload_form.tsx new file mode 100644 index 0000000000..1c01c2bd9c --- /dev/null +++ b/app/javascript/mastodon/features/compose/components/upload_form.tsx @@ -0,0 +1,185 @@ +import { useState, useCallback, useMemo } from 'react'; + +import { useIntl, defineMessages } from 'react-intl'; + +import type { List } from 'immutable'; + +import type { + DragStartEvent, + DragEndEvent, + UniqueIdentifier, + Announcements, + ScreenReaderInstructions, +} from '@dnd-kit/core'; +import { + DndContext, + closestCenter, + KeyboardSensor, + PointerSensor, + useSensor, + useSensors, + DragOverlay, +} from '@dnd-kit/core'; +import { + SortableContext, + sortableKeyboardCoordinates, + rectSortingStrategy, +} from '@dnd-kit/sortable'; + +import { changeMediaOrder } from 'mastodon/actions/compose'; +import type { MediaAttachment } from 'mastodon/models/media_attachment'; +import { useAppSelector, useAppDispatch } from 'mastodon/store'; + +import { Upload } from './upload'; +import { UploadProgress } from './upload_progress'; + +const messages = defineMessages({ + screenReaderInstructions: { + id: 'upload_form.drag_and_drop.instructions', + defaultMessage: + 'To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.', + }, + onDragStart: { + id: 'upload_form.drag_and_drop.on_drag_start', + defaultMessage: 'Picked up media attachment {item}.', + }, + onDragOver: { + id: 'upload_form.drag_and_drop.on_drag_over', + defaultMessage: 'Media attachment {item} was moved.', + }, + onDragEnd: { + id: 'upload_form.drag_and_drop.on_drag_end', + defaultMessage: 'Media attachment {item} was dropped.', + }, + onDragCancel: { + id: 'upload_form.drag_and_drop.on_drag_cancel', + defaultMessage: + 'Dragging was cancelled. Media attachment {item} was dropped.', + }, +}); + +export const UploadForm: React.FC = () => { + const dispatch = useAppDispatch(); + const intl = useIntl(); + const mediaIds = useAppSelector( + (state) => + state.compose // eslint-disable-line @typescript-eslint/no-unsafe-call + .get('media_attachments') // eslint-disable-line @typescript-eslint/no-unsafe-member-access + .map((item: MediaAttachment) => item.get('id')) as List, // eslint-disable-line @typescript-eslint/no-unsafe-member-access + ); + const active = useAppSelector( + (state) => state.compose.get('is_uploading') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + ); + const progress = useAppSelector( + (state) => state.compose.get('progress') as number, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + ); + const isProcessing = useAppSelector( + (state) => state.compose.get('is_processing') as boolean, // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + ); + const [activeId, setActiveId] = useState(null); + const sensors = useSensors( + useSensor(PointerSensor, { + activationConstraint: { + distance: 5, + }, + }), + useSensor(KeyboardSensor, { + coordinateGetter: sortableKeyboardCoordinates, + }), + ); + + const handleDragStart = useCallback( + (e: DragStartEvent) => { + const { active } = e; + + setActiveId(active.id); + }, + [setActiveId], + ); + + const handleDragEnd = useCallback( + (e: DragEndEvent) => { + const { active, over } = e; + + if (over && active.id !== over.id) { + dispatch(changeMediaOrder(active.id, over.id)); + } + + setActiveId(null); + }, + [dispatch, setActiveId], + ); + + const accessibility: { + screenReaderInstructions: ScreenReaderInstructions; + announcements: Announcements; + } = useMemo( + () => ({ + screenReaderInstructions: { + draggable: intl.formatMessage(messages.screenReaderInstructions), + }, + + announcements: { + onDragStart({ active }) { + return intl.formatMessage(messages.onDragStart, { item: active.id }); + }, + + onDragOver({ active }) { + return intl.formatMessage(messages.onDragOver, { item: active.id }); + }, + + onDragEnd({ active }) { + return intl.formatMessage(messages.onDragEnd, { item: active.id }); + }, + + onDragCancel({ active }) { + return intl.formatMessage(messages.onDragCancel, { item: active.id }); + }, + }, + }), + [intl], + ); + + return ( + <> + + + {mediaIds.size > 0 && ( +
+ + + {mediaIds.map((id, idx) => ( + + ))} + + + + {activeId ? : null} + + +
+ )} + + ); +}; diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e86e300bcb..1e78745359 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -852,6 +852,11 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people who are deaf or hard of hearing", "upload_form.description": "Describe for people who are blind or have low vision", + "upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.", + "upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.", + "upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.", + "upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.", + "upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision", diff --git a/app/javascript/mastodon/models/media_attachment.ts b/app/javascript/mastodon/models/media_attachment.ts new file mode 100644 index 0000000000..0e5b9ab555 --- /dev/null +++ b/app/javascript/mastodon/models/media_attachment.ts @@ -0,0 +1,2 @@ +// Temporary until we type it correctly +export type MediaAttachment = Immutable.Map; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 8cb63e42e6..14de6e6818 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -653,19 +653,39 @@ body > [data-popper-placement] { } &__uploads { - display: flex; - gap: 8px; padding: 0 12px; - flex-wrap: wrap; - align-self: stretch; - align-items: flex-start; - align-content: flex-start; - justify-content: center; + aspect-ratio: 3/2; + } + + .media-gallery { + gap: 8px; } &__upload { - flex: 1 1 0; - min-width: calc(50% - 8px); + position: relative; + cursor: grab; + + &.dragging { + opacity: 0; + } + + &.overlay { + height: 100%; + border-radius: 8px; + pointer-events: none; + } + + &__drag-handle { + position: absolute; + top: 50%; + inset-inline-start: 0; + transform: translateY(-50%); + color: $white; + background: transparent; + border: 0; + padding: 8px 3px; + cursor: grab; + } &__actions { display: flex; @@ -686,8 +706,7 @@ body > [data-popper-placement] { &__thumbnail { width: 100%; - height: 144px; - border-radius: 6px; + height: 100%; background-position: center; background-size: cover; background-repeat: no-repeat; @@ -7098,30 +7117,30 @@ a.status-card { gap: 2px; &--layout-2 { - .media-gallery__item:nth-child(1) { + & > .media-gallery__item:nth-child(1) { border-end-end-radius: 0; border-start-end-radius: 0; } - .media-gallery__item:nth-child(2) { + & > .media-gallery__item:nth-child(2) { border-start-start-radius: 0; border-end-start-radius: 0; } } &--layout-3 { - .media-gallery__item:nth-child(1) { + & > .media-gallery__item:nth-child(1) { border-end-end-radius: 0; border-start-end-radius: 0; } - .media-gallery__item:nth-child(2) { + & > .media-gallery__item:nth-child(2) { border-start-start-radius: 0; border-end-start-radius: 0; border-end-end-radius: 0; } - .media-gallery__item:nth-child(3) { + & > .media-gallery__item:nth-child(3) { border-start-start-radius: 0; border-end-start-radius: 0; border-start-end-radius: 0; @@ -7129,26 +7148,26 @@ a.status-card { } &--layout-4 { - .media-gallery__item:nth-child(1) { + & > .media-gallery__item:nth-child(1) { border-end-end-radius: 0; border-start-end-radius: 0; border-end-start-radius: 0; } - .media-gallery__item:nth-child(2) { + & > .media-gallery__item:nth-child(2) { border-start-start-radius: 0; border-end-start-radius: 0; border-end-end-radius: 0; } - .media-gallery__item:nth-child(3) { + & > .media-gallery__item:nth-child(3) { border-start-start-radius: 0; border-start-end-radius: 0; border-end-start-radius: 0; border-end-end-radius: 0; } - .media-gallery__item:nth-child(4) { + & > .media-gallery__item:nth-child(4) { border-start-start-radius: 0; border-end-start-radius: 0; border-start-end-radius: 0; diff --git a/package.json b/package.json index 08fec76465..7a6dee1311 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,9 @@ "@babel/preset-react": "^7.22.3", "@babel/preset-typescript": "^7.21.5", "@babel/runtime": "^7.22.3", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/utilities": "^3.2.2", "@formatjs/intl-pluralrules": "^5.2.2", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index eff88f772e..62a538b42c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2010,6 +2010,55 @@ __metadata: languageName: node linkType: hard +"@dnd-kit/accessibility@npm:^3.1.0": + version: 3.1.0 + resolution: "@dnd-kit/accessibility@npm:3.1.0" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/4f9d24e801d66d4fbb551ec389ed90424dd4c5bbdf527000a618e9abb9833cbd84d9a79e362f470ccbccfbd6d00217a9212c92f3cef66e01c951c7f79625b9d7 + languageName: node + linkType: hard + +"@dnd-kit/core@npm:^6.1.0": + version: 6.1.0 + resolution: "@dnd-kit/core@npm:6.1.0" + dependencies: + "@dnd-kit/accessibility": "npm:^3.1.0" + "@dnd-kit/utilities": "npm:^3.2.2" + tslib: "npm:^2.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10c0/c793eb97cb59285ca8937ebcdfcd27cff09d750ae06722e36ca5ed07925e41abc36a38cff98f9f6056f7a07810878d76909826142a2968330e7e22060e6be584 + languageName: node + linkType: hard + +"@dnd-kit/sortable@npm:^8.0.0": + version: 8.0.0 + resolution: "@dnd-kit/sortable@npm:8.0.0" + dependencies: + "@dnd-kit/utilities": "npm:^3.2.2" + tslib: "npm:^2.0.0" + peerDependencies: + "@dnd-kit/core": ^6.1.0 + react: ">=16.8.0" + checksum: 10c0/a6066c652b892c6a11320c7d8f5c18fdf723e721e8eea37f4ab657dee1ac5e7ca710ac32ce0712a57fe968bc07c13bcea5d5599d90dfdd95619e162befd4d2fb + languageName: node + linkType: hard + +"@dnd-kit/utilities@npm:^3.2.2": + version: 3.2.2 + resolution: "@dnd-kit/utilities@npm:3.2.2" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10c0/9aa90526f3e3fd567b5acc1b625a63177b9e8d00e7e50b2bd0e08fa2bf4dba7e19529777e001fdb8f89a7ce69f30b190c8364d390212634e0afdfa8c395e85a0 + languageName: node + linkType: hard + "@dual-bundle/import-meta-resolve@npm:^4.1.0": version: 4.1.0 resolution: "@dual-bundle/import-meta-resolve@npm:4.1.0" @@ -2753,6 +2802,9 @@ __metadata: "@babel/preset-react": "npm:^7.22.3" "@babel/preset-typescript": "npm:^7.21.5" "@babel/runtime": "npm:^7.22.3" + "@dnd-kit/core": "npm:^6.1.0" + "@dnd-kit/sortable": "npm:^8.0.0" + "@dnd-kit/utilities": "npm:^3.2.2" "@formatjs/cli": "npm:^6.1.1" "@formatjs/intl-pluralrules": "npm:^5.2.2" "@gamestdio/websocket": "npm:^0.3.2" @@ -17205,6 +17257,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.0.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 + languageName: node + linkType: hard + "tslib@npm:^2.4.0, tslib@npm:^2.6.2": version: 2.6.3 resolution: "tslib@npm:2.6.3" From 24d3ce7bab2becc345152a143224924044ebe33c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 27 Sep 2024 15:38:44 -0400 Subject: [PATCH 019/550] Add `no-toolbar` state for "nothing here" batch table views (#32128) --- app/javascript/styles/mastodon/tables.scss | 4 ++++ app/views/admin/tags/index.html.haml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 2becd85bc6..af8ccf5b38 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -359,6 +359,10 @@ a.table-action-link { @media screen and (max-width: $no-gap-breakpoint) { border-top: 1px solid var(--background-border-color); } + + &--no-toolbar { + border-top: 1px solid var(--background-border-color); + } } @media screen and (width <= 870px) { diff --git a/app/views/admin/tags/index.html.haml b/app/views/admin/tags/index.html.haml index 8d76d8ffa7..be699e5ab2 100644 --- a/app/views/admin/tags/index.html.haml +++ b/app/views/admin/tags/index.html.haml @@ -32,7 +32,7 @@ .batch-table .batch-table__body - if @tags.empty? - = nothing_here 'nothing-here--under-tabs' + = nothing_here 'nothing-here--under-tabs nothing-here--no-toolbar' - else = render partial: 'tag', collection: @tags From 9d664f87a04b6a5157ddbe60ee33b5b7a960198e Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 27 Sep 2024 21:41:41 +0200 Subject: [PATCH 020/550] Mailer layout fixes (#32132) --- app/javascript/styles/mailer.scss | 2 ++ app/views/user_mailer/welcome.html.haml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/javascript/styles/mailer.scss b/app/javascript/styles/mailer.scss index 2c1b443cb5..f46160889a 100644 --- a/app/javascript/styles/mailer.scss +++ b/app/javascript/styles/mailer.scss @@ -366,6 +366,7 @@ table + p { .email-header-card-banner-td { border-radius: 12px 12px 0 0; + width: 236px; height: 80px; background-color: #f3f2f5 !important; background-position: center !important; @@ -523,6 +524,7 @@ table + p { height: 40px; text-align: center; mso-padding-alt: 0 35px; + word-break: normal; } .email-btn-a { diff --git a/app/views/user_mailer/welcome.html.haml b/app/views/user_mailer/welcome.html.haml index 0f9cbf36ff..efc6cad393 100644 --- a/app/views/user_mailer/welcome.html.haml +++ b/app/views/user_mailer/welcome.html.haml @@ -9,7 +9,7 @@ %td %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr - %td.email-header-card-banner-td{ height: 140, background: full_asset_url(instance_presenter.thumbnail&.file&.url(:'@1x') || frontend_asset_path('images/preview.png')) } + %td.email-header-card-banner-td{ background: full_asset_url(instance_presenter.thumbnail&.file&.url(:'@1x') || frontend_asset_path('images/preview.png')) } %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-header-card-body-td From c352ce6f4550a8bea554448fd48ca657bbdc50c2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 30 Sep 2024 10:20:20 +0200 Subject: [PATCH 021/550] Fix missing permission on new embeds making them unclickable (#32135) --- public/embed.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/embed.js b/public/embed.js index 3fb57469a9..53372a3890 100644 --- a/public/embed.js +++ b/public/embed.js @@ -81,7 +81,7 @@ const allowedPrefixes = (document.currentScript && document.currentScript.tagNam embeds.set(id, iframe); iframe.allow = 'fullscreen'; - iframe.sandbox = 'allow-scripts allow-same-origin'; + iframe.sandbox = 'allow-scripts allow-same-origin allow-popups'; iframe.style.border = 0; iframe.style.overflow = 'hidden'; iframe.style.display = 'block'; @@ -112,7 +112,7 @@ const allowedPrefixes = (document.currentScript && document.currentScript.tagNam iframe.width = container.clientWidth; iframe.height = 0; iframe.allow = 'fullscreen'; - iframe.sandbox = 'allow-scripts allow-same-origin'; + iframe.sandbox = 'allow-scripts allow-same-origin allow-popups'; iframe.style.border = 0; iframe.style.overflow = 'hidden'; iframe.style.display = 'block'; From 6037714f76910dbc15f99cbf3ab97e5d3d5006d7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:47:57 +0200 Subject: [PATCH 022/550] Update dependency propshaft to v1.0.1 (#32158) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e1ea677dfd..b85d97761d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -347,7 +347,7 @@ GEM activesupport (>= 3.0) nokogiri (>= 1.6) io-console (0.7.2) - irb (1.14.0) + irb (1.14.1) rdoc (>= 4.0.0) reline (>= 0.4.2) jmespath (1.6.2) @@ -601,7 +601,7 @@ GEM actionmailer (>= 3) net-smtp premailer (~> 1.7, >= 1.7.9) - propshaft (1.0.0) + propshaft (1.0.1) actionpack (>= 7.0.0) activesupport (>= 7.0.0) rack From f477dc399e9edf9b02c2033724a6a57679c7b286 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 08:53:29 +0000 Subject: [PATCH 023/550] New Crowdin Translations (automated) (#32140) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 1 + app/javascript/mastodon/locales/ca.json | 5 +++++ app/javascript/mastodon/locales/da.json | 5 +++++ app/javascript/mastodon/locales/de.json | 9 +++++++-- app/javascript/mastodon/locales/eo.json | 5 +++++ app/javascript/mastodon/locales/es-AR.json | 9 +++++++-- app/javascript/mastodon/locales/es-MX.json | 17 +++++++++++------ app/javascript/mastodon/locales/es.json | 5 +++++ app/javascript/mastodon/locales/fi.json | 7 ++++++- app/javascript/mastodon/locales/fil.json | 8 +++++++- app/javascript/mastodon/locales/fo.json | 5 +++++ app/javascript/mastodon/locales/fr-CA.json | 5 +++++ app/javascript/mastodon/locales/fr.json | 5 +++++ app/javascript/mastodon/locales/ga.json | 7 +++++++ app/javascript/mastodon/locales/gl.json | 5 +++++ app/javascript/mastodon/locales/io.json | 11 ++++++++--- app/javascript/mastodon/locales/kab.json | 1 + app/javascript/mastodon/locales/ko.json | 10 +++++++++- app/javascript/mastodon/locales/lt.json | 7 ++++++- app/javascript/mastodon/locales/nl.json | 5 +++++ app/javascript/mastodon/locales/nn.json | 8 ++++++++ app/javascript/mastodon/locales/pl.json | 5 +++++ app/javascript/mastodon/locales/th.json | 1 + app/javascript/mastodon/locales/vi.json | 14 ++++++++++---- app/javascript/mastodon/locales/zh-CN.json | 5 +++++ app/javascript/mastodon/locales/zh-TW.json | 5 +++++ config/locales/activerecord.bg.yml | 6 ++++++ config/locales/de.yml | 6 +++--- config/locales/devise.eo.yml | 2 ++ config/locales/doorkeeper.bg.yml | 1 + config/locales/doorkeeper.es-AR.yml | 2 +- config/locales/doorkeeper.es-MX.yml | 2 +- config/locales/doorkeeper.es.yml | 2 +- config/locales/doorkeeper.fr-CA.yml | 1 + config/locales/doorkeeper.fr.yml | 1 + config/locales/doorkeeper.ko.yml | 1 + config/locales/eo.yml | 4 ++++ config/locales/es-AR.yml | 3 +++ config/locales/es-MX.yml | 3 +++ config/locales/es.yml | 3 +++ config/locales/fi.yml | 3 +++ config/locales/fo.yml | 3 +++ config/locales/fr-CA.yml | 7 +++++++ config/locales/fr.yml | 9 ++++++++- config/locales/ga.yml | 3 +++ config/locales/hu.yml | 3 +++ config/locales/ko.yml | 3 +++ config/locales/nn.yml | 1 + config/locales/pt-BR.yml | 3 +++ config/locales/simple_form.bg.yml | 3 +++ config/locales/simple_form.eo.yml | 8 ++++++++ config/locales/sv.yml | 2 ++ config/locales/th.yml | 6 +++++- config/locales/tr.yml | 3 +++ config/locales/vi.yml | 5 ++++- 55 files changed, 239 insertions(+), 30 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index bf0b656f93..1e462ba752 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Скоростта е ограничена", "alert.unexpected.message": "Възникна неочаквана грешка.", "alert.unexpected.title": "Опаа!", + "alt_text_badge.title": "Алтернативен текст", "announcement.announcement": "Оповестяване", "attachments_list.unprocessed": "(необработено)", "audio.hide": "Скриване на звука", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1cd643842c..b79ac156e2 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -852,6 +852,11 @@ "upload_error.poll": "No es permet carregar fitxers a les enquestes.", "upload_form.audio_description": "Descriu-ho per a persones amb problemes d'audició", "upload_form.description": "Descriu-ho per a persones amb problemes de visió", + "upload_form.drag_and_drop.instructions": "Per a agafar un fitxer multimèdia adjunt, premeu l'espai o la tecla Enter. Mentre l'arrossegueu, utilitzeu les fletxes per a moure l'adjunt en qualsevol direcció. Premeu espai o Enter un altre cop per a deixar-lo anar a la seva nova posició, o premeu la tecla d'escapament per cancel·lar.", + "upload_form.drag_and_drop.on_drag_cancel": "S'ha cancel·lat l'arrossegament. S'ha deixat anar l'adjunt multimèdia {item}.", + "upload_form.drag_and_drop.on_drag_end": "S'ha deixat anar l'adjunt multimèdia {item}.", + "upload_form.drag_and_drop.on_drag_over": "S'ha mogut l'adjunt multimèdia {item}.", + "upload_form.drag_and_drop.on_drag_start": "S'ha agafat l'adjunt multimèdia {item}.", "upload_form.edit": "Edita", "upload_form.thumbnail": "Canvia la miniatura", "upload_form.video_description": "Descriu-ho per a persones amb problemes de visió o audició", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 8223177ab9..659f807d05 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -852,6 +852,11 @@ "upload_error.poll": "Filupload ikke tilladt for afstemninger.", "upload_form.audio_description": "Beskrivelse til hørehæmmede", "upload_form.description": "Beskrivelse til svagtseende", + "upload_form.drag_and_drop.instructions": "For at opsamle en medievedhæftning, tryk på Mellemrum eller Retur. Mens der trækkes, benyt piletasterne til at flytte medievedhæftningen i en given retning. Tryk på Mellemrum eller Retur igen for at slippe medievedhæftningen på den nye position, eller tryk på Escape for at afbryde.", + "upload_form.drag_and_drop.on_drag_cancel": "Træk blev afbrudt. Medievedhæftningen {item} blev sluppet.", + "upload_form.drag_and_drop.on_drag_end": "Medievedhæftningen {item} er sluppet.", + "upload_form.drag_and_drop.on_drag_over": "Medievedhæftningen {item} er flyttet.", + "upload_form.drag_and_drop.on_drag_start": "Opsamlede medievedhæftningen {item}.", "upload_form.edit": "Redigér", "upload_form.thumbnail": "Skift miniature", "upload_form.video_description": "Beskrivelse for hørehæmmede eller synshandicappede personer", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 30a55df05b..6f45d4fe53 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -229,14 +229,14 @@ "domain_pill.activitypub_like_language": "ActivityPub ist sozusagen die Sprache, die Mastodon mit anderen sozialen Netzwerken spricht.", "domain_pill.server": "Server", "domain_pill.their_handle": "Deren Adresse:", - "domain_pill.their_server": "Deren digitales Zuhause. Hier „leben“ alle Beiträge von diesem Profil.", + "domain_pill.their_server": "Deren digitale Heimat. Hier „leben“ alle Beiträge von diesem Profil.", "domain_pill.their_username": "Deren eindeutigen Identität auf dem betreffenden Server. Es ist möglich, Profile mit dem gleichen Profilnamen auf verschiedenen Servern zu finden.", "domain_pill.username": "Profilname", "domain_pill.whats_in_a_handle": "Was ist Teil der Adresse?", "domain_pill.who_they_are": "Adressen teilen mit, wer jemand ist und wo sich jemand aufhält. Daher kannst du mit Leuten im gesamten Social Web interagieren, wenn es eine durch ist.", "domain_pill.who_you_are": "Deine Adresse teilt mit, wer du bist und wo du dich aufhältst. Daher können andere Leute im gesamten Social Web mit dir interagieren, wenn es eine durch ist.", "domain_pill.your_handle": "Deine Adresse:", - "domain_pill.your_server": "Dein digitales Zuhause. Hier „leben“ alle Beiträge von dir. Dir gefällt es hier nicht? Du kannst jederzeit den Server wechseln und ebenso deine Follower übertragen.", + "domain_pill.your_server": "Deine digitale Heimat. Hier „leben“ alle Beiträge von dir. Falls es dir hier nicht gefällt, kannst du jederzeit den Server wechseln und ebenso deine Follower übertragen.", "domain_pill.your_username": "Deine eindeutige Identität auf diesem Server. Es ist möglich, Profile mit dem gleichen Profilnamen auf verschiedenen Servern zu finden.", "embed.instructions": "Du kannst diesen Beitrag auf deiner Website einbetten, indem du den nachfolgenden Code kopierst.", "embed.preview": "Vorschau:", @@ -852,6 +852,11 @@ "upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe für Menschen mit Hörbehinderung", "upload_form.description": "Beschreibe für Menschen mit Sehbehinderung", + "upload_form.drag_and_drop.instructions": "Drücke zum Aufnehmen eines Medienanhangs die Eingabe- oder Leertaste. Verwende beim Ziehen die Pfeiltasten, um den Medienanhang zur gewünschten Position zu bewegen. Drücke erneut die Eingabe- oder Leertaste, um den Medienanhang an der gewünschten Position abzulegen. Mit der Escape-Taste kannst du den Vorgang abbrechen.", + "upload_form.drag_and_drop.on_drag_cancel": "Das Ziehen wurde abgebrochen und der Medienanhang {item} wurde abgelegt.", + "upload_form.drag_and_drop.on_drag_end": "Der Medienanhang {item} wurde abgelegt.", + "upload_form.drag_and_drop.on_drag_over": "Der Medienanhang {item} wurde bewegt.", + "upload_form.drag_and_drop.on_drag_start": "Der Medienanhang {item} wurde aufgenommen.", "upload_form.edit": "Bearbeiten", "upload_form.thumbnail": "Vorschaubild ändern", "upload_form.video_description": "Beschreibe für Menschen mit einer Hör- oder Sehbehinderung", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 832bf9eda0..4268c38535 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -852,6 +852,11 @@ "upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.", "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi", "upload_form.description": "Priskribi por personoj, kiuj estas blindaj aŭ havas vidmalsufiĉon", + "upload_form.drag_and_drop.instructions": "Por preni amaskomunikilaron aldonaĵon, premu spacoklavon aŭ enen-klavon. Dum trenado, uzu la sagoklavojn por movi la amaskomunikilaron aldonaĵon en iu ajn direkto. Premu spacoklavon aŭ enen-klavon denove por faligi la amaskomunikilaron aldonaĵon en ĝia nova pozicio, aŭ premu eskapan klavon por nuligi.", + "upload_form.drag_and_drop.on_drag_cancel": "Trenado estis nuligita. Amaskomunikila aldonaĵo {item} estis forigita.", + "upload_form.drag_and_drop.on_drag_end": "Amaskomunikila aldonaĵo {item} estis forigita.", + "upload_form.drag_and_drop.on_drag_over": "Amaskomunikila aldonaĵo {item} estis movita.", + "upload_form.drag_and_drop.on_drag_start": "Prenis amaskomunikilan aldonaĵon {item}.", "upload_form.edit": "Redakti", "upload_form.thumbnail": "Ŝanĝi etigita bildo", "upload_form.video_description": "Priskribi por homoj kiuj malfacile aŭdi aŭ vidi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index e0a4f0fc92..609175d94f 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -222,8 +222,8 @@ "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que fueron bloqueados.", "domain_block_modal.title": "¿Bloquear dominio?", - "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigues}}.", - "domain_block_modal.you_will_lose_relationships": "Perderás a todos los seguidores y gente a la que sigas de este servidor.", + "domain_block_modal.you_will_lose_num_followers": "Perderás {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} cuenta que seguís} other {{followingCountDisplay} cuentas que seguís}}.", + "domain_block_modal.you_will_lose_relationships": "Perderás a todos los seguidores y cuentas a las que seguís de este servidor.", "domain_block_modal.you_wont_see_posts": "No verás mensajes ni notificaciones de usuarios en este servidor.", "domain_pill.activitypub_lets_connect": "Te permite conectar e interactuar con cuentas no solo en Mastodon, sino también a través de diferentes aplicaciones sociales.", "domain_pill.activitypub_like_language": "ActivityPub es como el idioma que Mastodon habla con otras redes sociales.", @@ -852,6 +852,11 @@ "upload_error.poll": "No se permite la subida de archivos en encuestas.", "upload_form.audio_description": "Agregá una descripción para personas con dificultades auditivas", "upload_form.description": "Agregá una descripción para personas con dificultades visuales", + "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsá la barra espaciadora o la tecla Enter. Mientras arrastrás, usá las teclas de flecha para mover el archivo multimedia en cualquier dirección. Volvé a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsá la tecla Escape para cancelar.", + "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", + "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", + "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.", + "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.video_description": "Agregá una descripción para personas con dificultades auditivas o visuales", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 3948de6c32..7c2e400338 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -95,7 +95,7 @@ "block_modal.they_cant_mention": "No pueden mencionarte ni seguirte.", "block_modal.they_cant_see_posts": "No pueden ver tus publicaciones y tú no verás las de ellos.", "block_modal.they_will_know": "Pueden ver que están bloqueados.", - "block_modal.title": "¿Bloquear usuario?", + "block_modal.title": "¿Deseas bloquear al usuario?", "block_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.", "boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "boost_modal.reblog": "¿Deseas impulsar la publicación?", @@ -173,9 +173,9 @@ "confirmations.block.confirm": "Bloquear", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro de que quieres borrar esta publicación?", - "confirmations.delete.title": "¿Eliminar publicación?", + "confirmations.delete.title": "¿Deseas eliminar la publicación?", "confirmations.delete_list.confirm": "Eliminar", - "confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?", + "confirmations.delete_list.message": "¿Estás seguro de que quieres eliminar esta lista de forma permanente?", "confirmations.delete_list.title": "¿Deseas eliminar la lista?", "confirmations.discard_edit_media.confirm": "Descartar", "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo, ¿deseas descartarlos de cualquier manera?", @@ -191,7 +191,7 @@ "confirmations.redraft.title": "¿Borrar y volver a redactar la publicación?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?", - "confirmations.reply.title": "¿Sobreescribir publicación?", + "confirmations.reply.title": "¿Deseas sobreescribir la publicación?", "confirmations.unfollow.confirm": "Dejar de seguir", "confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?", "confirmations.unfollow.title": "¿Dejar de seguir al usuario?", @@ -221,7 +221,7 @@ "domain_block_modal.they_can_interact_with_old_posts": "Las personas de este servidor pueden interactuar con tus publicaciones antiguas.", "domain_block_modal.they_cant_follow": "Nadie de este servidor puede seguirte.", "domain_block_modal.they_wont_know": "No sabrán que han sido bloqueados.", - "domain_block_modal.title": "¿Bloquear dominio?", + "domain_block_modal.title": "¿Deseas bloquear el dominio?", "domain_block_modal.you_will_lose_num_followers": "Vas a perder {followersCount, plural, one {{followersCountDisplay} seguidor} other {{followersCountDisplay} seguidores}} y {followingCount, plural, one {{followingCountDisplay} persona a la que sigues} other {{followingCountDisplay} personas a las que sigas}}.", "domain_block_modal.you_will_lose_relationships": "Perderás todos los seguidores y las personas que sigues de este servidor.", "domain_block_modal.you_wont_see_posts": "No verás publicaciones ni notificaciones de usuarios en este servidor.", @@ -467,7 +467,7 @@ "mute_modal.show_options": "Mostrar opciones", "mute_modal.they_can_mention_and_follow": "Pueden mencionarte y seguirte, pero no verás nada de ellos.", "mute_modal.they_wont_know": "No sabrán que han sido silenciados.", - "mute_modal.title": "¿Silenciar usuario?", + "mute_modal.title": "¿Deseas silenciar el usuario?", "mute_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las de ellos.", "navigation_bar.about": "Acerca de", @@ -852,6 +852,11 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", + "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsa la barra espaciadora o la tecla Enter. Mientras arrastras, utiliza las teclas de flecha para mover el archivo multimedia en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsa Escape para cancelar.", + "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", + "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", + "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} se ha movido.", + "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 6e7ea9c9ec..b841489338 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -852,6 +852,11 @@ "upload_error.poll": "No se permite la subida de archivos con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para personas con discapacidad visual", + "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsa la barra espaciadora o la tecla Enter. Mientras arrastras, utiliza las teclas de flecha para mover el archivo multimedia en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsa Escape para cancelar.", + "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", + "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", + "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} se ha movido.", + "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0a37a96abb..2e4cd661d5 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -797,7 +797,7 @@ "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", "status.media.open": "Avaa napsauttamalla", - "status.media.show": "Napsauta näyttääksesi", + "status.media.show": "Näytä napsauttamalla", "status.media_hidden": "Media piilotettu", "status.mention": "Mainitse @{name}", "status.more": "Enemmän", @@ -852,6 +852,11 @@ "upload_error.poll": "Tiedostojen lisääminen äänestysten oheen ei ole sallittua.", "upload_form.audio_description": "Kuvaile sisältöä kuuroille ja kuulorajoitteisille", "upload_form.description": "Kuvaile sisältöä sokeille ja näkörajoitteisille", + "upload_form.drag_and_drop.instructions": "Valitse medialiite painamalla välilyöntiä tai enteriä. Vetäessäsi käytä nuolinäppäimiä siirtääksesi medialiitettä vastaavaan suuntaan. Paina välilyöntiä tai enteriä uudelleen pudottaaksesi medialiitteen uuteen kohtaansa, tai peru siirto painamalla escape-näppäintä.", + "upload_form.drag_and_drop.on_drag_cancel": "Veto peruttiin. Medialiitettä {item} ei siirretty.", + "upload_form.drag_and_drop.on_drag_end": "Medialiite {item} pudotettiin.", + "upload_form.drag_and_drop.on_drag_over": "Medialiitettä {item} siirrettiin.", + "upload_form.drag_and_drop.on_drag_start": "Valittiin medialiite {item}.", "upload_form.edit": "Muokkaa", "upload_form.thumbnail": "Vaihda pienoiskuva", "upload_form.video_description": "Kuvaile sisältöä kuuroille, kuulorajoitteisille, sokeille tai näkörajoitteisille", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 952bc60882..40292c2691 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -3,9 +3,15 @@ "about.contact": "Kontak:", "about.disclaimer": "Ang Mastodon ay software na malaya at bukas-na-pinagmulan, at isang tatak-pangkalakal ng Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Hindi makuha ang dahilan", + "about.domain_blocks.preamble": "Sa kadalasan, hinahayaan ka ng Mastodon na makita ang mga content sa, at makipag-interact sa users ng, ibang servers sa fediverse. Narito ang exceptions na ginawa sa partikular na server na ito.", + "about.domain_blocks.silenced.explanation": "Sa kadalasan, hindi mo makikita ang profiles at content mula sa server na ito, maliban na lang kung sasadyain mo silang hanapin o piliing magawa ito sa pamamagitan ng mga sumusunod.", "about.domain_blocks.silenced.title": "Limitado", + "about.domain_blocks.suspended.explanation": "Walang data mula sa server na ito ang mapoproseso, maiimbak o maipagpapaplitan. Sa gayon. imposibleng magawa ang interaksiyon o komunikasyon sa ibang users sa server na ito.", "about.domain_blocks.suspended.title": "Suspendido", + "about.not_available": "Hindi available ang impormasyong ito.", + "about.powered_by": "Decentralisadong social media na pinapagana ng {mastodon}", "about.rules": "Mga alituntunin ng server", + "account.account_note_header": "Note na personal", "account.add_or_remove_from_list": "I-dagdag o tanggalin mula sa mga listahan", "account.badges.bot": "Pakusa", "account.badges.group": "Pangkat", @@ -216,7 +222,7 @@ "link_preview.author": "Ni/ng {name}", "lists.account.add": "Idagdag sa talaan", "lists.account.remove": "Tanggalin mula sa talaan", - "lists.delete": "Burahin ang talaan", + "lists.delete": "Burahin ang listahan", "lists.new.create": "Idagdag sa talaan", "lists.new.title_placeholder": "Bagong pangalan ng talaan", "lists.replies_policy.title": "Ipakita ang mga tugon sa:", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 70908c62dc..c7e752d378 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -852,6 +852,11 @@ "upload_error.poll": "Ikki loyvt at leggja fílur upp í spurnarkanningum.", "upload_form.audio_description": "Lýs fyri teimum, sum eru deyv ella hava ringa hoyrn", "upload_form.description": "Lýs fyri teimum, sum eru blind ella eru sjónveik", + "upload_form.drag_and_drop.instructions": "Fyri at heinta eitt miðlaviðfesti, trýst á millumrúm ella returknapp. Meðan tú dregur, brúka pílarnar fyri at flyta miðaviðfesti í einhvønn rætning. Trýst á millumrúm ella returknapp aftur fyri at sleppa miðlaviðfestinum í nýggja staðnum ella trýst á esc-knappin fyri at angra.", + "upload_form.drag_and_drop.on_drag_cancel": "Draging varð steðgað. Miðlaviðfestið {item} varð slept.", + "upload_form.drag_and_drop.on_drag_end": "Miðlaviðfestið {item} var slept.", + "upload_form.drag_and_drop.on_drag_over": "Miðlaviðfestið {item} var flutt.", + "upload_form.drag_and_drop.on_drag_start": "Heintaði miðlaviðfestið {item}.", "upload_form.edit": "Rætta", "upload_form.thumbnail": "Broyt smámynd", "upload_form.video_description": "Lýs fyri teimum, sum eru deyv, hava ringa hoyrn, eru blind ella eru sjónveik", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index a92cd50c67..bdceb9bd30 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Débit limité", "alert.unexpected.message": "Une erreur inattendue s’est produite.", "alert.unexpected.title": "Oups!", + "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", "audio.hide": "Masquer l'audio", @@ -221,6 +222,8 @@ "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_num_followers": "Vous allez perdre {followersCount, plural, one {{followersCountDisplay} abonné·e} other {{followersCountDisplay} abonné·e·s}} et {followingCount, plural, one {{followingCountDisplay} personne que vous suivez} other {{followingCountDisplay} personnes que vous suivez}}.", + "domain_block_modal.you_will_lose_relationships": "Vous allez perdre tous les abonné·e·s et les personnes que vous suivez sur ce serveur.", "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.", @@ -433,6 +436,8 @@ "lightbox.close": "Fermer", "lightbox.next": "Suivant", "lightbox.previous": "Précédent", + "lightbox.zoom_in": "Zoomer sur la taille réelle", + "lightbox.zoom_out": "Zoomer pour adapter", "limited_account_hint.action": "Afficher le profil quand même", "limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.", "link_preview.author": "Par {name}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index a2bf4d5363..2acad02093 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Nombre de requêtes limité", "alert.unexpected.message": "Une erreur inattendue s’est produite.", "alert.unexpected.title": "Oups !", + "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", "attachments_list.unprocessed": "(non traité)", "audio.hide": "Masquer l'audio", @@ -221,6 +222,8 @@ "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_num_followers": "Vous allez perdre {followersCount, plural, one {{followersCountDisplay} abonné·e} other {{followersCountDisplay} abonné·e·s}} et {followingCount, plural, one {{followingCountDisplay} personne que vous suivez} other {{followingCountDisplay} personnes que vous suivez}}.", + "domain_block_modal.you_will_lose_relationships": "Vous allez perdre tous les abonné·e·s et les personnes que vous suivez sur ce serveur.", "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.", @@ -433,6 +436,8 @@ "lightbox.close": "Fermer", "lightbox.next": "Suivant", "lightbox.previous": "Précédent", + "lightbox.zoom_in": "Zoomer sur la taille réelle", + "lightbox.zoom_out": "Zoomer pour adapter", "limited_account_hint.action": "Afficher le profil quand même", "limited_account_hint.title": "Ce profil a été masqué par la modération de {domain}.", "link_preview.author": "Par {name}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 6d64c6f712..84c76478d1 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Rátatheoranta", "alert.unexpected.message": "Tharla earráid gan choinne.", "alert.unexpected.title": "Hiúps!", + "alt_text_badge.title": "Téacs alt", "announcement.announcement": "Fógra", "attachments_list.unprocessed": "(neamhphróiseáilte)", "audio.hide": "Cuir fuaim i bhfolach", @@ -222,6 +223,7 @@ "domain_block_modal.they_wont_know": "Ní bheidh a fhios acu go bhfuil bac orthu.", "domain_block_modal.title": "Blocáil fearann?", "domain_block_modal.you_will_lose_num_followers": "Caillfidh tú {followersCount, plural, one {{followersCountDisplay} leantóir} two {{followersCountDisplay} leantóirí} few {{followersCountDisplay} leantóirí} many {{followersCountDisplay} leantóirí} other {{followersCountDisplay} leantóirí}} agus {followingCount, plural, one {{followingCountDisplay} duine atá á leanúint agat} two {{followingCountDisplay} daoine atá á leanúint agat} few {{followingCountDisplay} daoine atá á leanúint agat} many {{followingCountDisplay} daoine atá á leanúint agat} other {{followingCountDisplay} daoine atá á leanúint agat}}.", + "domain_block_modal.you_will_lose_relationships": "Caillfidh tú gach leantóir agus duine a leanann tú ón bhfreastalaí seo.", "domain_block_modal.you_wont_see_posts": "Ní fheicfidh tú postálacha nó fógraí ó úsáideoirí ar an bhfreastalaí seo.", "domain_pill.activitypub_lets_connect": "Ligeann sé duit ceangal agus idirghníomhú le daoine, ní hamháin ar Mastodon, ach thar aipeanna sóisialta éagsúla freisin.", "domain_pill.activitypub_like_language": "Tá GníomhaíochtPub cosúil leis an teanga a labhraíonn Mastodon le líonraí sóisialta eile.", @@ -850,6 +852,11 @@ "upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.", "upload_form.audio_description": "Déan cur síos ar dhaoine bodhra nó lagéisteachta", "upload_form.description": "Describe for the visually impaired", + "upload_form.drag_and_drop.instructions": "Chun ceangaltán meán a phiocadh suas, brúigh spás nó cuir isteach. Agus tú ag tarraingt, bain úsáid as na heochracha saigheada chun an ceangaltán meán a bhogadh i dtreo ar bith. Brúigh spás nó cuir isteach arís chun an ceangaltán meán a scaoileadh ina phost nua, nó brúigh éalú chun cealú.", + "upload_form.drag_and_drop.on_drag_cancel": "Cuireadh an tarraingt ar ceal. Scaoileadh ceangaltán meán {item}.", + "upload_form.drag_and_drop.on_drag_end": "Scaoileadh ceangaltán meán {item}.", + "upload_form.drag_and_drop.on_drag_over": "Bogadh ceangaltán meán {item}.", + "upload_form.drag_and_drop.on_drag_start": "Roghnaíodh ceangaltán meán {item}.", "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Athraigh mionsamhail", "upload_form.video_description": "Déan cur síos ar dhaoine atá bodhar, lagéisteachta, dall nó lagamhairc", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c2b645ed0f..3bc9e1ee59 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -852,6 +852,11 @@ "upload_error.poll": "Non se poden subir ficheiros nas enquisas.", "upload_form.audio_description": "Describir para persoas con problemas auditivos", "upload_form.description": "Describir para persoas cegas ou con problemas visuais", + "upload_form.drag_and_drop.instructions": "Preme en Espazo ou Enter para escoller un anexo multimedia. Ao arrastrar usa as teclas de frecha para mover o anexo en todas direccións.Preme Espazo ou Enter outra vez para soltalo na súa nova posición, ou preme Escape para desbotar.", + "upload_form.drag_and_drop.on_drag_cancel": "Cancelouse o movemento. O anexo {item} soltouse.", + "upload_form.drag_and_drop.on_drag_end": "Soltouse o anexo multimedia {item}.", + "upload_form.drag_and_drop.on_drag_over": "Moveuse o anexo multimedia {item}.", + "upload_form.drag_and_drop.on_drag_start": "Escolleuse o anexo multimedia {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar a miniatura", "upload_form.video_description": "Describe para persoas con problemas visuais ou auditivos", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index b47590a64c..bfc248a845 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -99,7 +99,7 @@ "block_modal.you_wont_see_mentions": "Vu ne vidos mesaji qua mencionas oli.", "boost_modal.combo": "Vu povas pulsar {combo} por omisar co venontafoye", "boost_modal.reblog": "Ka repetar posto?", - "boost_modal.undo_reblog": "Ka retrorepetar posto?", + "boost_modal.undo_reblog": "Ka desrepetar posto?", "bundle_column_error.copy_stacktrace": "Kopierorraporto", "bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.", "bundle_column_error.error.title": "Ach!", @@ -194,7 +194,7 @@ "confirmations.reply.title": "Ka remplasar posto?", "confirmations.unfollow.confirm": "Desequez", "confirmations.unfollow.message": "Ka vu certe volas desequar {name}?", - "confirmations.unfollow.title": "Ka retrosequar uzanto?", + "confirmations.unfollow.title": "Ka dessequar uzanto?", "content_warning.hide": "Celez posto", "content_warning.show": "Montrez nur", "conversation.delete": "Efacez konverso", @@ -463,7 +463,7 @@ "moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.", "mute_modal.hide_from_notifications": "Celez de savigi", "mute_modal.hide_options": "Celez preferaji", - "mute_modal.indefinite": "Til me retrosilencigas lu", + "mute_modal.indefinite": "Til me dessilencigas lu", "mute_modal.show_options": "Montrez preferaji", "mute_modal.they_can_mention_and_follow": "Lu povas mencionar e sequar vu, ma vu ne vidos lu.", "mute_modal.they_wont_know": "Lu ne savos ke lu silencigesis.", @@ -852,6 +852,11 @@ "upload_error.poll": "Failadchargo ne permisesas kun votposti.", "upload_form.audio_description": "Deskriptez por personi kun audnekapableso", "upload_form.description": "Deskriptez por personi kun vidnekapableso", + "upload_form.drag_and_drop.instructions": "Por tenar mediatachajo, presez spaco o eniro. Presez spaco o eniro itere por destenar la mediatachajo en olua nova loko, o presez eskapo por anular.", + "upload_form.drag_and_drop.on_drag_cancel": "Tiro anulesis. Mediatachajo {item} destenesis.", + "upload_form.drag_and_drop.on_drag_end": "Mediatachajo {item} destenesis.", + "upload_form.drag_and_drop.on_drag_over": "Mediatachajo {item} movigesis.", + "upload_form.drag_and_drop.on_drag_start": "Tenis mediatachajo {item}.", "upload_form.edit": "Modifikez", "upload_form.thumbnail": "Chanjez imajeto", "upload_form.video_description": "Deskriptez por personi kun audnekapableso o vidnekapableso", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 89f68ab95f..9e2c9f3af8 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -73,6 +73,7 @@ "alert.rate_limited.title": "Aktum s talast", "alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.", "alert.unexpected.title": "Ayhuh!", + "alt_text_badge.title": "Aḍris asegzan", "announcement.announcement": "Ulɣu", "audio.hide": "Ffer amesli", "block_modal.show_less": "Ssken-d drus", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 87ea3cfabf..2054dfc0ff 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -31,7 +31,7 @@ "account.featured_tags.last_status_never": "게시물 없음", "account.featured_tags.title": "{name} 님의 추천 해시태그", "account.follow": "팔로우", - "account.follow_back": "맞팔로우 하기", + "account.follow_back": "맞팔로우", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", "account.followers_counter": "{count, plural, other {팔로워 {counter}명}}", @@ -85,6 +85,7 @@ "alert.rate_limited.title": "빈도 제한됨", "alert.unexpected.message": "예상하지 못한 에러가 발생했습니다.", "alert.unexpected.title": "앗!", + "alt_text_badge.title": "대체 문구", "announcement.announcement": "공지사항", "attachments_list.unprocessed": "(처리 안 됨)", "audio.hide": "소리 숨기기", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "이 서버의 누구도 나를 팔로우 할 수 없습니다.", "domain_block_modal.they_wont_know": "내가 차단했다는 사실을 모를 것입니다.", "domain_block_modal.title": "도메인을 차단할까요?", + "domain_block_modal.you_will_lose_num_followers": "{followersCount, plural, other {{followersCountDisplay} 명의 팔로워}}와 {followingCount, plural, other {{followingCountDisplay} 명의 팔로우}}를 잃게 됩니다.", + "domain_block_modal.you_will_lose_relationships": "이 서버의 팔로워와 팔로우를 모두 잃게 됩니다.", "domain_block_modal.you_wont_see_posts": "이 서버 사용자의 게시물이나 알림을 보지 않게 됩니다.", "domain_pill.activitypub_lets_connect": "이것은 마스토돈 뿐만이 아니라 다른 소셜 앱들을 넘나들며 사람들을 연결하고 상호작용 할 수 있게 합니다.", "domain_pill.activitypub_like_language": "액티비티펍은 마스토돈이 다른 소셜 네트워크와 대화할 때 쓰는 언어 같은 것입니다.", @@ -849,6 +852,11 @@ "upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.", "upload_form.audio_description": "청각장애인이나 저청각자를 위한 설명", "upload_form.description": "시각장애인이나 저시력자를 위한 설명", + "upload_form.drag_and_drop.instructions": "미디어 첨부파일을 집으려면 스페이스나 엔터를 누르세요. 드래그 하는 동안 방향키를 이용해 원하는 방향으로 이동할 수 있습니다. 스페이스나 엔터를 다시 눌러 새 위치에 놓거나 ESC를 이용해 취소할 수 있습니다.", + "upload_form.drag_and_drop.on_drag_cancel": "드래그가 취소되었습니다. 미디어 첨부파일 {item}은 이동되지 않았습니다.", + "upload_form.drag_and_drop.on_drag_end": "미디어 첨부파일 {item}은 이동되지 않았습니다.", + "upload_form.drag_and_drop.on_drag_over": "미디어 첨부파일 {item}이 이동되었습니다.", + "upload_form.drag_and_drop.on_drag_start": "미디어 첨부파일 {item}을 집었습니다.", "upload_form.edit": "수정", "upload_form.thumbnail": "썸네일 변경", "upload_form.video_description": "청각장애인, 저청각자, 시각장애인, 저시력자를 위한 설명", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0eb3dbf5b4..043dcfb05d 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -1,7 +1,7 @@ { "about.blocks": "Prižiūrimi serveriai", "about.contact": "Kontaktai:", - "about.disclaimer": "„Mastodon“ – tai nemokama atvirojo kodo programinė įranga ir „Mastodon“ gGmbH prekės ženklas.", + "about.disclaimer": "„Mastodon“ – tai nemokama atvirojo kodo programinė įranga ir „Mastodon gGmbH“ prekės ženklas.", "about.domain_blocks.no_reason_available": "Priežastis nepateikta", "about.domain_blocks.preamble": "„Mastodon“ paprastai leidžia peržiūrėti turinį ir bendrauti su naudotojais iš bet kurio kito fediverse esančio serverio. Šios yra išimtys, kurios buvo padarytos šiame konkrečiame serveryje.", "about.domain_blocks.silenced.explanation": "Paprastai nematysi profilių ir turinio iš šio serverio, nebent jį aiškiai ieškosi arba pasirinksi jį sekant.", @@ -840,6 +840,11 @@ "upload_error.poll": "Failų įkėlimas neleidžiamas su apklausomis.", "upload_form.audio_description": "Aprašyk žmonėms, kurie yra kurtieji ar neprigirdintys.", "upload_form.description": "Aprašyk žmonėms, kurie yra aklieji arba silpnaregiai.", + "upload_form.drag_and_drop.instructions": "Kad paimtum medijos priedą, paspausk tarpo arba įvedimo klavišą. Tempant naudok rodyklių klavišus, kad perkeltum medijos priedą bet kuria kryptimi. Dar kartą paspausk tarpo arba įvedimo klavišą, kad nuleistum medijos priedą naujoje vietoje, arba paspausk grįžimo klavišą, kad atšauktum.", + "upload_form.drag_and_drop.on_drag_cancel": "Nutempimas buvo atšauktas. Medijos priedas {item} buvo nuleistas.", + "upload_form.drag_and_drop.on_drag_end": "Medijos priedas {item} buvo nuleistas.", + "upload_form.drag_and_drop.on_drag_over": "Medijos priedas {item} buvo perkeltas.", + "upload_form.drag_and_drop.on_drag_start": "Paimtas medijos priedas {item}.", "upload_form.edit": "Redaguoti", "upload_form.thumbnail": "Keisti miniatiūrą", "upload_form.video_description": "Aprašyk žmonėms, kurie yra kurtieji, neprigirdintys, aklieji ar silpnaregiai.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 282c345def..1c31574dea 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -852,6 +852,11 @@ "upload_error.poll": "Het uploaden van bestanden is bij peilingen niet toegestaan.", "upload_form.audio_description": "Omschrijf dit voor dove of slechthorende mensen", "upload_form.description": "Omschrijf dit voor blinde of slechtziende mensen", + "upload_form.drag_and_drop.instructions": "Druk op spatie of enter om een mediabijlage op te pakken. Gebruik de pijltjestoetsen om de bijlage in een bepaalde richting te verplaatsen. Druk opnieuw op de spatiebalk of enter om de mediabijlage op de nieuwe positie te plaatsen, of druk op escape om te annuleren.", + "upload_form.drag_and_drop.on_drag_cancel": "Slepen is geannuleerd. Mediabijlage {item} is niet verplaatst.", + "upload_form.drag_and_drop.on_drag_end": "Mediabijlage {item} is niet verplaatst.", + "upload_form.drag_and_drop.on_drag_over": "Mediabijlage {item} is verplaatst.", + "upload_form.drag_and_drop.on_drag_start": "Mediabijlage {item} is opgepakt.", "upload_form.edit": "Bewerken", "upload_form.thumbnail": "Miniatuurafbeelding wijzigen", "upload_form.video_description": "Omschrijf dit voor dove, slechthorende, blinde of slechtziende mensen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 9524dfd558..69883a5495 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Redusert kapasitet", "alert.unexpected.message": "Det oppstod eit uventa problem.", "alert.unexpected.title": "Oi sann!", + "alt_text_badge.title": "Alternativ tekst", "announcement.announcement": "Kunngjering", "attachments_list.unprocessed": "(ubehandla)", "audio.hide": "Gøym lyd", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Ingen på denne tenaren kan fylgja deg.", "domain_block_modal.they_wont_know": "Dei veit ikkje at dei er blokkerte.", "domain_block_modal.title": "Blokker domenet?", + "domain_block_modal.you_will_lose_num_followers": "Du vil mista {followersCount, plural, one {{followersCountDisplay} fylgjar} other {{followersCountDisplay} fylgjarar}} og {followingCount, plural, one {{followingCountDisplay} person du fylgjer} other {{followingCountDisplay} folk du fylgjer}}.", + "domain_block_modal.you_will_lose_relationships": "Du vil mista alle fylgjarar og folk du fylgjer på denne tenaren.", "domain_block_modal.you_wont_see_posts": "Du vil ikkje sjå innlegg eller varslingar frå brukarar på denne tenaren.", "domain_pill.activitypub_lets_connect": "Den lar deg kople til og samhandle med folk ikkje berre på Mastodon, men òg på tvers av forskjellige sosiale appar.", "domain_pill.activitypub_like_language": "ActivityPub er som språket Mastodon snakkar med andre sosiale nettverk.", @@ -849,6 +852,11 @@ "upload_error.poll": "Filopplasting er ikkje lov for rundspørjingar.", "upload_form.audio_description": "Skildre for dei med nedsett høyrsel", "upload_form.description": "Skildre for blinde og svaksynte", + "upload_form.drag_and_drop.instructions": "For å plukka opp eit medievedlegg, trykkjer du på mellomrom eller enter. Når du dreg, brukar du piltastane for å flytta vedlegget i den retninga du vil. Deretter trykkjer du mellomrom eller enter att for å sleppa vedlegget på den nye plassen, eller trykk escape for å avbryta.", + "upload_form.drag_and_drop.on_drag_cancel": "Du avbraut draginga. Medievedlegget {item} vart sleppt.", + "upload_form.drag_and_drop.on_drag_end": "Medeivedlegget {item} vart sleppt.", + "upload_form.drag_and_drop.on_drag_over": "Medievedlegget {item} vart flytta.", + "upload_form.drag_and_drop.on_drag_start": "Plukka opp medievedlegget {item}.", "upload_form.edit": "Rediger", "upload_form.thumbnail": "Bytt miniatyrbilete", "upload_form.video_description": "Skildre for dei med nedsett høyrsel eller redusert syn", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 8e9dd96baf..4dc74db8cb 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -852,6 +852,11 @@ "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.", "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", + "upload_form.drag_and_drop.instructions": "Naciśnij spację lub enter żeby podnieść załącznik. Podczas przeciągania, strzałki przesuwają załącznik. Naciśnięcie spacji lub entera upuści załącznik w nowym miejscu, a escape anuluje przesuwanie.", + "upload_form.drag_and_drop.on_drag_cancel": "Przesuwanie anulowane. Załącznik {item} upuszczony.", + "upload_form.drag_and_drop.on_drag_end": "Upuszczono załącznik {item}.", + "upload_form.drag_and_drop.on_drag_over": "Przesunięto załącznik {item}.", + "upload_form.drag_and_drop.on_drag_start": "Podniesiono załącznik {item}.", "upload_form.edit": "Edytuj", "upload_form.thumbnail": "Zmień miniaturę", "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 68b64ca548..160b6ec4e6 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "มีการจำกัดอัตรา", "alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด", "alert.unexpected.title": "อุปส์!", + "alt_text_badge.title": "ข้อความแสดงแทน", "announcement.announcement": "ประกาศ", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", "audio.hide": "ซ่อนเสียง", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 12d9bd4354..770dcbaef5 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Vượt giới hạn", "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.", "alert.unexpected.title": "Ốiii!", + "alt_text_badge.title": "Văn bản thay thế", "announcement.announcement": "Có gì mới?", "attachments_list.unprocessed": "(chưa xử lí)", "audio.hide": "Ẩn âm thanh", @@ -463,7 +464,7 @@ "mute_modal.hide_from_notifications": "Ẩn thông báo", "mute_modal.hide_options": "Tùy chọn ẩn", "mute_modal.indefinite": "Cho tới khi bỏ ẩn", - "mute_modal.show_options": "Hiển thị tùy chọn", + "mute_modal.show_options": "Thêm tùy chọn", "mute_modal.they_can_mention_and_follow": "Họ có thể nhắc đến và theo dõi bạn, nhưng bạn không thấy họ.", "mute_modal.they_wont_know": "Họ sẽ không biết đã bị bạn ẩn.", "mute_modal.title": "Ẩn người này?", @@ -752,7 +753,7 @@ "search_popout.language_code": "mã ngôn ngữ ISO", "search_popout.options": "Tìm nâng cao", "search_popout.quick_actions": "Thao tác nhanh", - "search_popout.recent": "Bạn đã tìm", + "search_popout.recent": "Lượt tìm gần đây", "search_popout.specific_date": "ngày cụ thể", "search_popout.user": "địa chỉ Mastodon", "search_results.accounts": "Mọi người", @@ -779,7 +780,7 @@ "status.bookmark": "Lưu", "status.cancel_reblog_private": "Hủy đăng lại", "status.cannot_reblog": "Không thể đăng lại tút này", - "status.continued_thread": "Tiếp tục trong chủ đề", + "status.continued_thread": "Tiếp tục chủ đề", "status.copy": "Sao chép URL", "status.delete": "Xóa", "status.detailed_status": "Xem chi tiết thêm", @@ -813,7 +814,7 @@ "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.", "status.redraft": "Xóa và viết lại", "status.remove_bookmark": "Bỏ lưu", - "status.replied_in_thread": "Trả lời trong chủ đề", + "status.replied_in_thread": "Trả lời thảo luận", "status.replied_to": "Trả lời {name}", "status.reply": "Trả lời", "status.replyAll": "Trả lời", @@ -851,6 +852,11 @@ "upload_error.poll": "Không cho phép đính kèm tập tin.", "upload_form.audio_description": "Mô tả cho người mất thính giác", "upload_form.description": "Mô tả cho người khiếm thị", + "upload_form.drag_and_drop.instructions": "Để chọn tập tin đính kèm, hãy nhấn phím cách hoặc phím Enter. Trong khi kéo, sử dụng các phím mũi tên để di chuyển tập tin đính kèm theo bất kỳ hướng nào. Nhấn phím cách hoặc phím Enter một lần nữa để thả tập tin đính kèm vào vị trí mới hoặc nhấn phím thoát để hủy.", + "upload_form.drag_and_drop.on_drag_cancel": "Kéo thả đã bị hủy bỏ. Tập tin đính kèm {item} bị bỏ qua.", + "upload_form.drag_and_drop.on_drag_end": "Tập tin đính kèm {item} bị bỏ qua.", + "upload_form.drag_and_drop.on_drag_over": "Tập tin đính kèm {item} đã bị dời.", + "upload_form.drag_and_drop.on_drag_start": "Đã chọn tập tin đính kèm {item}.", "upload_form.edit": "Biên tập", "upload_form.thumbnail": "Đổi ảnh thumbnail", "upload_form.video_description": "Mô tả cho người mất thị lực hoặc không thể nghe", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 8ce888a039..0a4505d4ee 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -852,6 +852,11 @@ "upload_error.poll": "投票中不允许上传文件。", "upload_form.audio_description": "为听障人士添加文字描述", "upload_form.description": "为视觉障碍人士添加文字说明", + "upload_form.drag_and_drop.instructions": "要选中某个媒体附件,请按空格键或回车键。在拖拽时,使用方向键将媒体附件移动到任何给定方向。再次按空格键或回车键可将媒体附件放置在新位置,或按 Esc 键取消。", + "upload_form.drag_and_drop.on_drag_cancel": "拖拽已终止。媒体附件 {item} 已被丢弃。", + "upload_form.drag_and_drop.on_drag_end": "媒体附件 {item} 已被丢弃。", + "upload_form.drag_and_drop.on_drag_over": "媒体附件 {item} 已被移动。", + "upload_form.drag_and_drop.on_drag_start": "已选中媒体附件 {item}。", "upload_form.edit": "编辑", "upload_form.thumbnail": "更改缩略图", "upload_form.video_description": "为听障人士和视障人士添加文字描述", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 530202f0a5..2047a69f44 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -852,6 +852,11 @@ "upload_error.poll": "不允許於投票時上傳檔案。", "upload_form.audio_description": "為聽障人士增加文字說明", "upload_form.description": "為視障人士增加文字說明", + "upload_form.drag_and_drop.instructions": "請按空白鍵或 Enter 鍵取多媒體附加檔案。使用方向鍵移動多媒體附加檔案。按下空白鍵或 Enter 鍵於新位置放置多媒體附加檔案,或按下 ESC 鍵取消。", + "upload_form.drag_and_drop.on_drag_cancel": "移動已取消。多媒體附加檔案 {item} 已被放置。", + "upload_form.drag_and_drop.on_drag_end": "多媒體附加檔案 {item} 已被放置。", + "upload_form.drag_and_drop.on_drag_over": "多媒體附加檔案 {item} 已被移動。", + "upload_form.drag_and_drop.on_drag_start": "多媒體附加檔案 {item} 已被選取。", "upload_form.edit": "編輯", "upload_form.thumbnail": "更改預覽圖", "upload_form.video_description": "為聽障或視障人士增加文字說明", diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml index 1e19d1effb..221be3f680 100644 --- a/config/locales/activerecord.bg.yml +++ b/config/locales/activerecord.bg.yml @@ -15,6 +15,12 @@ bg: user/invite_request: text: Причина errors: + attributes: + domain: + invalid: не е действително име на домейн + messages: + invalid_domain_on_line: "%{value} не е действително име на домейн" + too_many_lines: е над ограничение от %{limit} реда models: account: attributes: diff --git a/config/locales/de.yml b/config/locales/de.yml index b98a96a1cd..c82e65282f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -877,7 +877,7 @@ de: message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfe deine Sidekiq-Konfiguration software_version_check: action: Verfügbare Updates ansehen - message_html: Ein Update für Mastodon ist verfügbar. + message_html: Ein Mastodon-Update ist verfügbar. software_version_critical_check: action: Verfügbare Updates ansehen message_html: Ein kritisches Mastodon-Update ist verfügbar – bitte aktualisiere so schnell wie möglich. @@ -1425,7 +1425,7 @@ de: max_uses: one: Eine Verwendung other: "%{count} Verwendungen" - max_uses_prompt: Keine Einschränkung + max_uses_prompt: Unbegrenzt prompt: Erstelle Einladungen und teile die dazugehörigen Links, um anderen einen Zugang zu diesem Server zu gewähren table: expires_at: Läuft ab @@ -1903,7 +1903,7 @@ de: feature_action: Mehr erfahren feature_audience: Mastodon bietet dir eine einzigartige Möglichkeit, deine Reichweite ohne Mittelsperson zu verwalten. Auf deiner eigenen Infrastruktur bereitgestellt, ermöglicht Mastodon es dir, jedem anderen Mastodon-Server zu folgen und von jedem anderen Server aus gefolgt zu werden. Ebenso steht Mastodon unter deiner Kontrolle. feature_audience_title: Baue deine Reichweite mit Vertrauen auf - feature_control: Du weißt am besten, was du auf deiner Startseite sehen möchtest. Keine Algorithmen oder Werbung, die deine Zeit verschwenden. Folge Nutzer*innen von jedem Mastodon-Server von einem einzelnen Konto aus und empfange deren Beiträge in chronologischer Reihenfolge. Mache Mastodon zu deinem ganz persönlichen Fleckchen im Internet. + feature_control: Du weißt am besten, was du auf deiner Startseite sehen möchtest. Keine Algorithmen oder Werbung, die deine Zeit verschwenden. Folge Nutzer*innen auf allen Mastodon-Servern von einem einzelnen Konto aus und empfange deren Beiträge in chronologischer Reihenfolge. Mache Mastodon zu deinem ganz persönlichen Fleckchen im Internet. feature_control_title: Behalte die Kontrolle über deine eigene Timeline feature_creativity: Mastodon unterstützt Audio-, Video- und Bildbeiträge, Beschreibungen, Umfragen, Inhaltswarnungen, animierte Avatare, benutzerdefinierte Emojis, das Zuschneiden von Vorschaubildern und vieles mehr, um dir zu helfen, dich online zu entfalten. Egal, ob du deine Kunst, deine Musik oder deinen Podcast veröffentlichst – Mastodon ist für dich da. feature_creativity_title: Einzigartige Kreativität diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index f0322a60a8..9d946967e9 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -72,9 +72,11 @@ eo: subject: 'Mastodon: sekureca ŝlosilo forigita' title: Unu el viaj sekurecaj ŝlosiloj estis forigita webauthn_disabled: + explanation: Aŭtentigo per sekurecaj ŝlosiloj estas malŝaltita por via konto. subject: 'Mastodon: sekureca-ŝlosila aŭtentigo malebligita' title: Sekurecaj ŝlosiloj malaktivigitaj webauthn_enabled: + extra: Via sekureca ŝlosilo nun povas esti uzata por ensaluto. subject: 'Mastodon: sekureca-ŝlosila aŭtentigo ebligita' title: Sekurecaj ŝlosiloj aktivigitaj omniauth_callbacks: diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml index 25dce0ea08..c3977e5844 100644 --- a/config/locales/doorkeeper.bg.yml +++ b/config/locales/doorkeeper.bg.yml @@ -60,6 +60,7 @@ bg: error: title: Възникна грешка new: + prompt_html: "%{client_name} желае да има достъп до акаунта ви. Одобрявайте само тази заявка, ако я разпознавате и ако имате доворерие на източника." review_permissions: Преглед на разрешенията title: Изисква се упълномощаване show: diff --git a/config/locales/doorkeeper.es-AR.yml b/config/locales/doorkeeper.es-AR.yml index 804e4a51ed..a6e1a46b80 100644 --- a/config/locales/doorkeeper.es-AR.yml +++ b/config/locales/doorkeeper.es-AR.yml @@ -60,7 +60,7 @@ es-AR: error: title: Ocurrió un error new: - prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Solo aprueba esta solicitud si reconoces y confías en esta fuente. + prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Aprobá esta solicitud solo si reconocés y confiás en esta fuente. review_permissions: Revisar permisos title: Autorización requerida show: diff --git a/config/locales/doorkeeper.es-MX.yml b/config/locales/doorkeeper.es-MX.yml index c095777954..e119d71f4e 100644 --- a/config/locales/doorkeeper.es-MX.yml +++ b/config/locales/doorkeeper.es-MX.yml @@ -60,7 +60,7 @@ es-MX: error: title: Ha ocurrido un error new: - prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Solo aprueba esta solicitud si reconoces y confías en esta fuente. + prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Aprueba esta solicitud solo si reconoces y confías en esta fuente. review_permissions: Revisar permisos title: Se requiere autorización show: diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml index c26f11a7a1..d582460d3f 100644 --- a/config/locales/doorkeeper.es.yml +++ b/config/locales/doorkeeper.es.yml @@ -60,7 +60,7 @@ es: error: title: Ha ocurrido un error new: - prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Solo aprueba esta solicitud si reconoces y confías en esta fuente. + prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Aprueba esta solicitud solo si reconoces y confías en esta fuente. review_permissions: Revisar permisos title: Se requiere autorización show: diff --git a/config/locales/doorkeeper.fr-CA.yml b/config/locales/doorkeeper.fr-CA.yml index f3dad084b5..9279a8a26a 100644 --- a/config/locales/doorkeeper.fr-CA.yml +++ b/config/locales/doorkeeper.fr-CA.yml @@ -60,6 +60,7 @@ fr-CA: error: title: Une erreur est survenue new: + prompt_html: "%{client_name} aimerait avoir la permission d'accéder à votre compte. Approuver cette demande uniquement si vous reconnaissez et faites confiance à cette source." review_permissions: Examiner les autorisations title: Autorisation requise show: diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml index fac58460c6..71c9605d8a 100644 --- a/config/locales/doorkeeper.fr.yml +++ b/config/locales/doorkeeper.fr.yml @@ -60,6 +60,7 @@ fr: error: title: Une erreur est survenue new: + prompt_html: "%{client_name} aimerait avoir la permission d'accéder à votre compte. Approuver cette demande uniquement si vous reconnaissez et faites confiance à cette source." review_permissions: Examiner les autorisations title: Autorisation requise show: diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml index 4dabc19e43..dc1b8c08b1 100644 --- a/config/locales/doorkeeper.ko.yml +++ b/config/locales/doorkeeper.ko.yml @@ -60,6 +60,7 @@ ko: error: title: 오류가 발생하였습니다 new: + prompt_html: "%{client_name}이 계정에 접근할 권한을 요청합니다. 내가 알아볼 수 있고 신뢰할 수 있는 출처의 요청인 경우에만 승인하세요." review_permissions: 권한 검토 title: 승인 필요 show: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 7d0f66a0c0..a3f968d139 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -821,8 +821,12 @@ eo: message_html: Vi ne difinis iujn servilajn regulojn. sidekiq_process_check: message_html: Neniu Sidekiq-procezo por la %{value} vico + software_version_check: + message_html: Mastodon-ĝisdatigo disponeblas. software_version_critical_check: action: Vidi disponeblajn ĝisdatigojn + software_version_patch_check: + action: Vidi disponeblajn ĝisdatigojn upload_check_privacy_error: action: Klaku ĉi tie por pliaj informoj message_html: "Via retservilo estas misagordita. La privateco de viaj uzantoj estas en risko." diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 292bbbff51..49b8f288fa 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -875,6 +875,9 @@ es-AR: message_html: No definiste ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la/s cola/s %{value}. Por favor, revisá tu configuración de Sidekiq + software_version_check: + action: Ver actualizaciones disponibles + message_html: Hay disponible una actualización de Mastodon. software_version_critical_check: action: Ver actualizaciones disponibles message_html: Una actualización crítica de Mastodon está disponible; por favor, actualizá lo antes posible. diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 45d8864502..0f4c8452c0 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -875,6 +875,9 @@ es-MX: message_html: No ha definido ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq + software_version_check: + action: Ver actualizaciones disponibles + message_html: Hay disponible una actualización de Mastodon. software_version_critical_check: action: Ver actualizaciones disponibles message_html: Una actualización crítica de Mastodon está disponible, por favor actualice lo antes posible. diff --git a/config/locales/es.yml b/config/locales/es.yml index 85bcf9065a..aa18e7b52e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -875,6 +875,9 @@ es: message_html: No ha definido ninguna regla del servidor. sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq + software_version_check: + action: Ver actualizaciones disponibles + message_html: Hay disponible una actualización de Mastodon. software_version_critical_check: action: Ver actualizaciones disponibles message_html: Una actualización crítica de Mastodon está disponible, por favor actualiza lo antes posible. diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 258dda8cc4..22ccc71161 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -875,6 +875,9 @@ fi: message_html: Et ole määritellyt palvelimen sääntöjä lainkaan. sidekiq_process_check: message_html: Ei ole Sidekiq-prosessia käynnissä jonossa %{value}. Tarkista Sidekiq-asetukset + software_version_check: + action: Näytä saatavilla olevat päivitykset + message_html: Saatavilla on Mastodon-päivitys. software_version_critical_check: action: Näytä saatavilla olevat päivitykset message_html: Kriittinen Mastodon-päivitys on saatavilla. Tee päivitys mahdollisimman ripeästi. diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 034e1f6bd2..31eb67b3b0 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -875,6 +875,9 @@ fo: message_html: Tú hevur ikki ásett nakrar ambætarareglur. sidekiq_process_check: message_html: Eingin Sidekiq gongd koyrir fyri %{value} bíðirøðina(r). Vinarliga eftirkanna Sidekiq uppsetingina + software_version_check: + action: Sí tøkar dagføringar + message_html: Ein Mastodon-dagføring er tøk. software_version_critical_check: action: Sí tøkar dagføringar message_html: Ein kritisk Mastodon-dagføring er tøk, vinarliga dagfør sum skjótast. diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 6ab0ee6660..16cdb79317 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -262,8 +262,10 @@ fr-CA: destroy_user_role_html: "%{name} a supprimé le rôle %{target}" disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}" disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} a désactivé l'authentification par jeton de courriel pour %{target}" disable_user_html: "%{name} a désactivé la connexion de l'utilisateur·rice %{target}" enable_custom_emoji_html: "%{name} a activé l'émoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} a activé l'authentification par jeton de courriel pour %{target}" enable_user_html: "%{name} a activé la connexion de l'utilisateur·rice %{target}" memorialize_account_html: "%{name} a converti le compte de %{target} en un mémorial" promote_user_html: "%{name} a promu l'utilisateur·rice %{target}" @@ -876,6 +878,9 @@ fr-CA: message_html: Vous n'avez pas défini de règles pour le serveur. sidekiq_process_check: message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq + software_version_check: + action: Voir les mises à jour disponibles + message_html: Une mise à jour de Mastodon est disponible. software_version_critical_check: action: Voir les mises à jour disponibles message_html: Une mise à jour critique de Mastodon est disponible, veuillez mettre à jour le plus rapidement possible. @@ -1447,6 +1452,7 @@ fr-CA: unsubscribe: action: Oui, me désabonner complete: Désabonné·e + confirmation_html: Êtes-vous sûr de vouloir vous désabonner de la réception de %{type} pour Mastodon sur %{domain} à votre adresse e-mail %{email} ? Vous pouvez toujours vous réabonner à partir de vos paramètres de notification par messagerie. emails: notification_emails: favourite: e-mails de notifications de favoris @@ -1692,6 +1698,7 @@ fr-CA: delete: Suppression du compte development: Développement edit_profile: Modifier le profil + export: Exportation featured_tags: Hashtags mis en avant import: Import de données import_and_export: Import et export diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 6e13466bfe..bc57d00e65 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -262,8 +262,10 @@ fr: destroy_user_role_html: "%{name} a supprimé le rôle %{target}" disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}" disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} a désactivé l'authentification par jeton de courriel pour %{target}" disable_user_html: "%{name} a désactivé la connexion de l'utilisateur·rice %{target}" enable_custom_emoji_html: "%{name} a activé l'émoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} a activé l'authentification par jeton de courriel pour %{target}" enable_user_html: "%{name} a activé la connexion de l'utilisateur·rice %{target}" memorialize_account_html: "%{name} a converti le compte de %{target} en un mémorial" promote_user_html: "%{name} a promu l'utilisateur·rice %{target}" @@ -427,7 +429,7 @@ fr: undo: Annuler le blocage de domaine view: Afficher les blocages de domaines email_domain_blocks: - add_new: Ajouter + add_new: Ajouter un nouveau allow_registrations_with_approval: Autoriser les inscriptions avec approbation attempts_over_week: one: "%{count} tentative au cours de la dernière semaine" @@ -876,6 +878,9 @@ fr: message_html: Vous n'avez pas défini de règles pour le serveur. sidekiq_process_check: message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq + software_version_check: + action: Voir les mises à jour disponibles + message_html: Une mise à jour de Mastodon est disponible. software_version_critical_check: action: Voir les mises à jour disponibles message_html: Une mise à jour critique de Mastodon est disponible, veuillez mettre à jour le plus rapidement possible. @@ -1447,6 +1452,7 @@ fr: unsubscribe: action: Oui, se désinscrire complete: Désinscrit + confirmation_html: Êtes-vous sûr de vouloir vous désabonner de la réception de %{type} pour Mastodon sur %{domain} à votre adresse e-mail %{email} ? Vous pouvez toujours vous réabonner à partir de vos paramètres de notification par messagerie. emails: notification_emails: favourite: e-mails de notifications de favoris @@ -1692,6 +1698,7 @@ fr: delete: Suppression du compte development: Développement edit_profile: Modifier le profil + export: Exportation featured_tags: Hashtags mis en avant import: Import de données import_and_export: Import et export diff --git a/config/locales/ga.yml b/config/locales/ga.yml index c678e93323..e25865903e 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -917,6 +917,9 @@ ga: message_html: Níl aon rialacha freastalaí sainmhínithe agat. sidekiq_process_check: message_html: Níl próiseas Sidekiq ag rith don scuaine/(scuainí) %{value}. Déan athbhreithniú ar do chumraíocht Sidekiq + software_version_check: + action: Féach nuashonruithe atá ar fáil + message_html: Tá nuashonrú Mastodon ar fáil. software_version_critical_check: action: Féach nuashonruithe atá ar fáil message_html: Tá nuashonrú ríthábhachtach Mastodon ar fáil, nuashonraigh chomh tapa agus is féidir le do thoil. diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 11f2a415f2..5a00db9548 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -875,6 +875,9 @@ hu: message_html: Még nem definiáltál egy szerver szabályt sem. sidekiq_process_check: message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait + software_version_check: + action: Elérhető frissítések megtekintése + message_html: Egy Mastodon-frissítés elérhető. software_version_critical_check: action: Elérhető frissítések megtekintése message_html: Kritikus Mastodon frissítés érhető el, frissíts a lehető leggyorsabban. diff --git a/config/locales/ko.yml b/config/locales/ko.yml index ba43310e02..3f6c4b39b8 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -863,6 +863,9 @@ ko: message_html: 아직 서버 규칙을 정하지 않았습니다. sidekiq_process_check: message_html: "%{value} 큐에 대한 사이드킥 프로세스가 발견되지 않았습니다. 사이드킥 설정을 검토해주세요" + software_version_check: + action: 사용 가능한 업데이트 보기 + message_html: 마스토돈 업데이트가 있습니다. software_version_critical_check: action: 사용 가능한 업데이트 보기 message_html: 긴급 마스토돈 업데이트가 있으니, 가능한 서둘러 업데이트 해주세요. diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 81047d92e7..8f6afc2426 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1695,6 +1695,7 @@ nn: delete: Kontosletting development: Utvikling edit_profile: Endr profil + export: Eksporter featured_tags: Utvalgte emneknagger import: Hent inn import_and_export: Importer og eksporter diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 30022be93a..5e7317c5fb 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -875,6 +875,9 @@ pt-BR: message_html: Você não definiu nenhuma regra de servidor. sidekiq_process_check: message_html: Nenhum processo Sidekiq rodando para a(s) fila(s) %{value}. Por favor, revise a sua configuração para Sidekiq + software_version_check: + action: Ver atualizações disponíveis + message_html: Uma atualização do Mastodon está disponível. software_version_critical_check: action: Ver atualizações disponíveis message_html: Uma atualização crítica do Mastodon está disponível. Por favor, atualize o mais rápido possível. diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index a2cf8e4222..7b7d92995b 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,6 +3,7 @@ bg: simple_form: hints: account: + attribution_domains_as_text: Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. @@ -130,6 +131,7 @@ bg: name: Можете да смените само употребата на големи/малки букви, например, за да е по-четимо user: chosen_languages: Само публикации на отметнатите езици ще се показват в публичните часови оси + role: Ролята управлява какви позволения има потребителят. user_role: color: Цветът, използван за ролите в потребителския интерфейс, като RGB в шестнадесетичен формат highlighted: Това прави ролята обществено видима @@ -142,6 +144,7 @@ bg: url: До къде ще се изпращат събитията labels: account: + attribution_domains_as_text: Позволяване само на особени уебсайтове discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 053816ef88..cb4a9041e8 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,6 +3,7 @@ eo: simple_form: hints: account: + attribution_domains_as_text: Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -78,6 +79,7 @@ eo: bootstrap_timeline_accounts: Ĉi tiuj kontoj pinglitas al la supro de sekvorekomendoj de novaj uzantoj. closed_registrations_message: Montrita kiam registroj fermitas custom_css: Vi povas meti propajn stilojn en la retversio de Mastodon. + favicon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan Mastodon-favikono kun propra bildsimbolo. mascot: Anstatauigi la ilustraĵon en la altnivela retinterfaco. peers_api_enabled: Listo de domajnaj nomoj kiujn ĉi tiu servilo renkontis en la fediverso. Neniuj datumoj estas inkluditaj ĉi tie pri ĉu vi federacias kun donita servilo, nur ke via servilo scias pri ĝi. Ĉi tio estas uzata de servoj kiuj kolektas statistikojn pri federacio en ĝenerala signifo. profile_directory: La profilujo listigas ĉiujn uzantojn kiu volonte malkovrebli. @@ -111,6 +113,7 @@ eo: sign_up_requires_approval: Novaj registriĝoj bezonos vian aprobon severity: Elektu, kio okazos pri petoj de ĉi tiu IP-adreso rule: + hint: Laŭvola. Provizu pliajn detalojn pri la regulo text: Priskribu regulon aŭ neceson por uzantoj en ĉi tiu servilo. Provu fari ĝin mallonga kaj simpla sessions: otp: 'Enmetu la kodon de dufaktora aŭtentigo el via telefono aŭ uzu unu el viaj realiraj kodoj:' @@ -122,6 +125,7 @@ eo: name: Vi povas ŝanĝi nur la majuskladon de la literoj, ekzemple, por igi ĝin pli legebla user: chosen_languages: Kun tio markita nur mesaĝoj en elektitaj lingvoj aperos en publikaj tempolinioj + role: La rolo kontrolas kiujn permesojn la uzanto havas. user_role: color: Koloro uzita por la rolo sur la UI, kun RGB-formato highlighted: Ĉi tio igi la rolon publike videbla @@ -134,6 +138,7 @@ eo: url: Kien eventoj sendotas labels: account: + attribution_domains_as_text: Permesi nur specifajn retejojn discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo @@ -239,6 +244,7 @@ eo: bootstrap_timeline_accounts: Ĉiam rekomendi ĉi tiujn kontojn al novaj uzantoj closed_registrations_message: Kutima mesaĝo kiam registroj ne estas disponeblaj custom_css: Propa CSS + favicon: Favorikono mascot: Propa maskoto media_cache_retention_period: Audovidaĵkaŝaĵretendauro peers_api_enabled: Eldonu liston de malkovritaj serviloj en la API @@ -294,6 +300,7 @@ eo: patch: Sciigi pri cimoriparaj ĝisdatigoj trending_tag: Nova furoro bezonas kontrolon rule: + hint: Pliaj informoj text: Regulo settings: indexable: Inkludi profilan paĝon en serĉiloj @@ -302,6 +309,7 @@ eo: listable: Permesi ĉi tiun kradvorton aperi en serĉoj kaj sugestoj name: Kradvorto trendable: Permesi al ĉi tiu kradvorto aperi en furoraĵoj + usable: Permesi afiŝojn uzi ĉi tiun kradvorton loke user: role: Rolo time_zone: Horzono diff --git a/config/locales/sv.yml b/config/locales/sv.yml index ab54500537..dadd5f1600 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -860,6 +860,8 @@ sv: message_html: Du har inte definierat några serverregler. sidekiq_process_check: message_html: Ingen Sidekiq-process körs för kön/köerna %{value}. Vänligen kontrollera din Sidekiq-konfiguration + software_version_check: + message_html: En Mastodon-uppdatering är tillgänglig. software_version_critical_check: action: Se tillgängliga uppdateringar message_html: En kritisk uppdatering för Mastodon är tillgänglig. Uppdatera så snart som möjligt. diff --git a/config/locales/th.yml b/config/locales/th.yml index fa04b6030a..3cb802afe3 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -861,12 +861,15 @@ th: message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ sidekiq_process_check: message_html: ไม่มีกระบวนการ Sidekiq ที่กำลังทำงานสำหรับคิว %{value} โปรดตรวจทานการกำหนดค่า Sidekiq ของคุณ + software_version_check: + action: ดูการอัปเดตที่พร้อมใช้งาน + message_html: มีการอัปเดต Mastodon ที่พร้อมใช้งาน software_version_critical_check: action: ดูการอัปเดตที่พร้อมใช้งาน message_html: มีการอัปเดต Mastodon สำคัญพร้อมใช้งาน โปรดอัปเดตโดยเร็วที่สุดเท่าที่จะเป็นไปได้ software_version_patch_check: action: ดูการอัปเดตที่พร้อมใช้งาน - message_html: มีการอัปเดต Mastodon ที่แก้ไขข้อบกพร่องพร้อมใช้งาน + message_html: มีการอัปเดต Mastodon ที่แก้ไขข้อบกพร่องที่พร้อมใช้งาน upload_check_privacy_error: action: ตรวจสอบที่นี่สำหรับข้อมูลเพิ่มเติม message_html: "เว็บเซิร์ฟเวอร์ของคุณกำหนดค่าไม่ถูกต้อง ความเป็นส่วนตัวของผู้ใช้ของคุณตกอยู่ในความเสี่ยง" @@ -1666,6 +1669,7 @@ th: delete: การลบบัญชี development: การพัฒนา edit_profile: แก้ไขโปรไฟล์ + export: ส่งออก featured_tags: แฮชแท็กที่น่าสนใจ import: การนำเข้า import_and_export: การนำเข้าและการส่งออก diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2935948a47..7382631911 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -875,6 +875,9 @@ tr: message_html: Herhangi bir sunucu kuralı belirlemediniz. sidekiq_process_check: message_html: "%{value} kuyruk(lar)ı için herhangi bir Sidekiq süreci çalışmıyor. Lütfen Sidekiq yapılandırmanızı gözden geçirin" + software_version_check: + action: Mevcut güncellemeleri görün + message_html: Mastodon güncellemesi mevcut. software_version_critical_check: action: Mevcut güncellemeleri göster message_html: Kritik bir Mastodon güncellemesi var, lütfen en kısa sürede güncelleyin. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 21fc4a3bf1..7e44e76e44 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -91,7 +91,7 @@ vi: moderation: active: Hoạt động all: Tất cả - disabled: Đã tắt + disabled: Khóa đăng nhập pending: Chờ silenced: Hạn chế suspended: Vô hiệu hóa @@ -861,6 +861,9 @@ vi: message_html: Bạn chưa cập nhật nội quy máy chủ. sidekiq_process_check: message_html: Sidekiq không hoạt động khi truy vấn %{value}. Hãy kiểm tra lại cấu hình Sidekiq + software_version_check: + action: Bản cập nhật mới + message_html: Có bản cập nhật Mastodon mới. software_version_critical_check: action: Bản cập nhật mới message_html: Có bản cập nhật quan trọng của Mastodon, vui lòng cập nhật nhanh nhất có thể. From bf7cfba48e03bf482bbdae1d92378c8cebf0702e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 08:53:52 +0000 Subject: [PATCH 024/550] Update DefinitelyTyped types (non-major) (#32163) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 62a538b42c..f9867cc91d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3762,9 +3762,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.195": - version: 4.17.7 - resolution: "@types/lodash@npm:4.17.7" - checksum: 10c0/40c965b5ffdcf7ff5c9105307ee08b782da228c01b5c0529122c554c64f6b7168fc8f11dc79aa7bae4e67e17efafaba685dc3a47e294dbf52a65ed2b67100561 + version: 4.17.9 + resolution: "@types/lodash@npm:4.17.9" + checksum: 10c0/54de935e835508b5f835a5dfaedd2b9a299685a21d11e9c5cd2dde57331d03bc2f98b71d2424ca8460f447ecd55a673e45ccdb70e58f9f72745710f6b91abc60 languageName: node linkType: hard @@ -3983,12 +3983,12 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7": - version: 18.3.8 - resolution: "@types/react@npm:18.3.8" + version: 18.3.10 + resolution: "@types/react@npm:18.3.10" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/367312c9fe276639ecb142265e090a4dd04bb39f8d718cbab546de3f1ddcfddeff415e1147d0fc40f734badaa7420b7b109d511bd4304b2c4c9c36164612fdf8 + checksum: 10c0/f5be1de1b0331c1fdb33d577f4cf7f1b949d4bded5347b2351a537f03c51dade5be115e21b161dcf1b37061954d320f6a0bdf8d7b70e24eda51071fdd614383d languageName: node linkType: hard @@ -17257,20 +17257,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0": +"tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2": version: 2.7.0 resolution: "tslib@npm:2.7.0" checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 languageName: node linkType: hard -"tslib@npm:^2.4.0, tslib@npm:^2.6.2": - version: 2.6.3 - resolution: "tslib@npm:2.6.3" - checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a - languageName: node - linkType: hard - "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0" From 431b3825639ea4087338fcd77ac1adb342b0ef4e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 08:55:18 +0000 Subject: [PATCH 025/550] Update dependency sass to v1.79.4 (#32139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index f9867cc91d..38402229bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15520,15 +15520,15 @@ __metadata: linkType: hard "sass@npm:^1.62.1": - version: 1.79.3 - resolution: "sass@npm:1.79.3" + version: 1.79.4 + resolution: "sass@npm:1.79.4" dependencies: chokidar: "npm:^4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 10c0/ad171bbbb2d7a789cc47803a59dcf2d0ac92ede34b538bb3fd683b6391a9ac3dc3eabaac264fc9582c770c4e435b85840e011785b7adfc0ac002b51ba91179c9 + checksum: 10c0/505ff0d9267d0fb990971e617acfeabf7c060c55d4cef68fe8a4bc693e7ea88ae7d7caeca3975e4b453459ba4a707b6e5b6979fc9395a7e08f0a43ca6aed06b8 languageName: node linkType: hard From e22eff890003481977ee0bcecee12c3d40aededb Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 30 Sep 2024 11:41:06 +0200 Subject: [PATCH 026/550] Remove regexp timeout feature (#32169) --- config/initializers/regexp.rb | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 config/initializers/regexp.rb diff --git a/config/initializers/regexp.rb b/config/initializers/regexp.rb deleted file mode 100644 index 4e79dc478e..0000000000 --- a/config/initializers/regexp.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -# 2s is a fairly high default, but that should account for slow servers under load -Regexp.timeout = ENV.fetch('REGEXP_TIMEOUT', 2).to_f if Regexp.respond_to?(:timeout=) From 0c872beed4a49ca879e5899ddd96f51c69c68cb8 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 30 Sep 2024 12:25:54 +0200 Subject: [PATCH 027/550] Merge commit from fork This should not change the set of words matched by `USERNAME_RE` but does change the one matched by `MENTION_RE`. Indeed, the previous regexp allowed a domain part to start with `.` or `-`, which the new regexp does not allow. --- app/models/account.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 078d7aaa05..3b841e7c77 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -68,8 +68,8 @@ class Account < ApplicationRecord DEFAULT_FIELDS_SIZE = 4 INSTANCE_ACTOR_ID = -99 - USERNAME_RE = /[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?/i - MENTION_RE = %r{(? Date: Mon, 30 Sep 2024 12:42:59 +0200 Subject: [PATCH 028/550] Bump version to 4.3.0-rc.1 (#32124) --- CHANGELOG.md | 48 ++++++++++++++++++++++++++++++----------- docker-compose.yml | 6 +++--- lib/mastodon/version.rb | 2 +- 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d1e0bfcf7..5eef082ccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,12 +10,13 @@ The following changelog entries focus on changes visible to users, administrator - **Add confirmation interstitial instead of silently redirecting logged-out visitors to remote resources** (#27792, #28902, and #30651 by @ClearlyClaire and @Gargron)\ This fixes a longstanding open redirect in Mastodon, at the cost of added friction when local links to remote resources are shared. +- Fix ReDoS vulnerability on some Ruby versions ([GHSA-jpxp-r43f-rhvx](https://github.com/mastodon/mastodon/security/advisories/GHSA-jpxp-r43f-rhvx)) - Change `form-action` Content-Security-Policy directive to be more restrictive (#26897 by @ClearlyClaire) - Update dependencies ### Added -- **Add server-side notification grouping** (#29889, #30576, #30685, #30688, #30707, #30776, #30779, #30781, #30440, #31062, #31098, #31076, #31111, #31123, #31223, #31214, #31224, #31299, #31325, #31347, #31304, #31326, #31384, #31403, #31433, #31509, #31486, #31513, #31592, #31594, #31638, #31746, #31652, #31709, #31725, #31745, #31613, #31657, #31840, #31610 and #31929 by @ClearlyClaire, @Gargron, @mgmn, and @renchap)\ +- **Add server-side notification grouping** (#29889, #30576, #30685, #30688, #30707, #30776, #30779, #30781, #30440, #31062, #31098, #31076, #31111, #31123, #31223, #31214, #31224, #31299, #31325, #31347, #31304, #31326, #31384, #31403, #31433, #31509, #31486, #31513, #31592, #31594, #31638, #31746, #31652, #31709, #31725, #31745, #31613, #31657, #31840, #31610, #31929, #32089 and #32085 by @ClearlyClaire, @Gargron, @mgmn, and @renchap)\ Group notifications of the same type for the same target, so that your notifications no longer get cluttered by boost and favorite notifications as soon as a couple of your posts get traction.\ This is done server-side so that clients can efficiently get relevant groups without having to go through numerous pages of individual notifications.\ As part of this, the visual design of the entire notifications feature has been revamped.\ @@ -27,7 +28,7 @@ The following changelog entries focus on changes visible to users, administrator - `GET /api/v2/notifications/:group_key/accounts`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-group-accounts - `POST /api/v2/notifications/:group_key/dimsiss`: https://docs.joinmastodon.org/methods/grouped_notifications/#dismiss-group - `GET /api/v2/notifications/:unread_count`: https://docs.joinmastodon.org/methods/grouped_notifications/#unread-group-count -- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, and #31723 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\ +- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, #31723 and #32062 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\ The old “Block notifications from non-followers”, “Block notifications from people you don't follow” and “Block direct messages from people you don't follow” notification settings have been replaced by a new set of settings found directly in the notification column.\ You can now separately filter or drop notifications from people you don't follow, people who don't follow you, accounts created within the past 30 days, as well as unsolicited private mentions, and accounts limited by the moderation.\ Instead of being outright dropped, notifications that you chose to filter are put in a separate “Filtered notifications” box that you can review separately without it clogging your main notifications.\ @@ -76,7 +77,11 @@ The following changelog entries focus on changes visible to users, administrator Clicking the domain of a user in their profile will now open a tooltip with a short explanation about servers and federation. - **Add support for Redis sentinel** (#31694, #31623, #31744, #31767, and #31768 by @ThisIsMissEm and @oneiros)\ See https://docs.joinmastodon.org/admin/scaling/#redis-sentinel -- Add ability to reorder uploaded media before posting in web UI (#28456 by @Gargron) +- **Add ability to reorder uploaded media before posting in web UI** (#28456 and #32093 by @Gargron) +- Add “A Mastodon update is available.” message on admin dashboard for non-bugfix updates (#32106 by @ClearlyClaire) +- Add ability to view alt text by clicking the ALT badge in web UI (#32058 by @Gargron) +- Add preview of followers removed in domain block modal in web UI (#32032 and #32105 by @ClearlyClaire and @Gargron) +- Add reblogs and favourites counts to statuses in ActivityPub (#32007 by @Gargron) - Add moderation interface for searching hashtags (#30880 by @ThisIsMissEm) - Add ability for admins to configure instance favicon and logo (#30040, #30208, #30259, #30375, #30734, #31016, and #30205 by @ClearlyClaire, @FawazFarid, @JasonPunyon, @mgmn, and @renchap)\ This is also exposed through the REST API: https://docs.joinmastodon.org/entities/Instance/#icon @@ -122,14 +127,14 @@ The following changelog entries focus on changes visible to users, administrator - Add Interlingue and Interlingua to interface languages (#28630 and #30828 by @Dhghomon and @renchap) - Add Kashubian, Pennsylvania Dutch, Vai, Jawi Malay, Mohawk and Low German to posting languages (#26024, #26634, #27136, #29098, #27115, and #27434 by @EngineerDali, @HelgeKrueger, and @gunchleoc) - Add option to use native Ruby driver for Redis through `REDIS_DRIVER=ruby` (#30717 by @vmstan) -- Add support for libvips in addition to ImageMagick (#30090, #30590, #30597, #30632, #30857, #30869, and #30858 by @ClearlyClaire, @Gargron, and @mjankowski)\ +- Add support for libvips in addition to ImageMagick (#30090, #30590, #30597, #30632, #30857, #30869, #30858 and #32104 by @ClearlyClaire, @Gargron, and @mjankowski)\ Server admins can now use libvips as a faster and lighter alternative to ImageMagick for processing user-uploaded images.\ This requires libvips 8.13 or newer, and needs to be enabled with `MASTODON_USE_LIBVIPS=true`.\ This is enabled by default in the official Docker images, and is intended to completely replace ImageMagick in the future. - Add validations to `Web::PushSubscription` (#30540 and #30542 by @ThisIsMissEm) - Add anchors to each authorized application in `/oauth/authorized_applications` (#31677 by @fowl2) - Add active animation to header settings button (#30221, #30307, and #30388 by @daudix) -- Add OpenTelemetry instrumentation (#30130, #30322, #30353, and #30350 by @julianocosta89, @renchap, and @robbkidd)\ +- Add OpenTelemetry instrumentation (#30130, #30322, #30353, #30350 and #31998 by @julianocosta89, @renchap, @robbkidd and @timetinytim)\ See https://docs.joinmastodon.org/admin/config/#otel for documentation - Add API to get multiple accounts and statuses (#27871 and #30465 by @ClearlyClaire)\ This adds `GET /api/v1/accounts` and `GET /api/v1/statuses` to the REST API, see https://docs.joinmastodon.org/methods/accounts/#index and https://docs.joinmastodon.org/methods/statuses/#index @@ -138,7 +143,6 @@ The following changelog entries focus on changes visible to users, administrator - Add RFC8414 OAuth 2.0 server metadata (#29191 by @ThisIsMissEm) - Add loading indicator and empty result message to advanced interface search (#30085 by @ClearlyClaire) - Add `profile` OAuth 2.0 scope, allowing more limited access to user data (#29087 and #30357 by @ThisIsMissEm) -- Add global Regexp timeout (#31928 by @ClearlyClaire) - Add the role ID to the badge component (#29707 by @renchap) - Add diagnostic message for failure during CLI search deploy (#29462 by @mjankowski) - Add pagination `Link` headers on API accounts/statuses when pinned true (#29442 by @mjankowski) @@ -167,15 +171,15 @@ The following changelog entries focus on changes visible to users, administrator - **Change icons throughout the web interface** (#27385, #27539, #27555, #27579, #27700, #27817, #28519, #28709, #28064, #28775, #28780, #27924, #29294, #29395, #29537, #29569, #29610, #29612, #29649, #29844, #27780, #30974, #30963, #30962, #30961, #31362, #31363, #31359, #31371, #31360, #31512, #31511, and #31525 by @ClearlyClaire, @Gargron, @arbolitoloco1, @mjankowski, @nclm, @renchap, @ronilaukkarinen, and @zunda)\ This changes all the interface icons from FontAwesome to Material Symbols for a more modern look, consistent with the official Mastodon Android app.\ In addition, better care is given to pixel alignment, and icon variants are used to better highlight active/inactive state. -- **Change design of compose form in web UI** (#28119, #29059, #29248, #29372, #29384, #29417, #29456, #29406, #29651, #29659, and #31889 by @ClearlyClaire, @Gargron, @eai04191, @hinaloe, and @ronilaukkarinen)\ +- **Change design of compose form in web UI** (#28119, #29059, #29248, #29372, #29384, #29417, #29456, #29406, #29651, #29659, #31889 and #32033 by @ClearlyClaire, @Gargron, @eai04191, @hinaloe, and @ronilaukkarinen)\ The compose form has been completely redesigned for a more modern and consistent look, as well as spelling out the chosen privacy setting and language name at all times.\ As part of this, the “Unlisted” privacy setting has been renamed to “Quiet public”. - **Change design of modals in the web UI** (#29576, #29614, #29640, #29644, #30131, #30884, #31399, #31555, #31752, #31801, #31883, #31844, #31864, and #31943 by @ClearlyClaire, @Gargron, @tribela and @vmstan)\ The mute, block, and domain block confirmation modals have been completely redesigned to be clearer and include more detailed information on the action to be performed.\ They also have a more modern and consistent design, along with other confirmation modals in the application. -- **Change colors throughout the web UI** (#29522, #29584, #29653, #29779, #29803, #29809, #29808, #29828, #31034, #31168, #31266, #31348, #31349, #31361, and #31510 by @ClearlyClaire, @Gargron, @renchap, and @vmstan) +- **Change colors throughout the web UI** (#29522, #29584, #29653, #29779, #29803, #29809, #29808, #29828, #31034, #31168, #31266, #31348, #31349, #31361, #31510 and #32128 by @ClearlyClaire, @Gargron, @mjankowski, @renchap, and @vmstan) - **Change onboarding prompt to follow suggestions carousel in web UI** (#28878, #29272, and #31912 by @Gargron) -- **Change email templates** (#28416, #28755, #28814, #29064, #28883, #29470, #29607, #29761, #29760, and #29879 by @ClearlyClaire, @Gargron, @hteumeuleu, and @mjankowski)\ +- **Change email templates** (#28416, #28755, #28814, #29064, #28883, #29470, #29607, #29761, #29760, #29879, #32073 and #32132 by @c960657, @ClearlyClaire, @Gargron, @hteumeuleu, and @mjankowski)\ All emails to end-users have been completely redesigned with a fresh new look, providing more information while making them easier to read and keeping maximum compatibility across mail clients. - **Change follow recommendations algorithm** (#28314, #28433, #29017, #29108, #29306, #29550, #29619, and #31474 by @ClearlyClaire, @Gargron, @kernal053, @mjankowski, and @wheatear-dev)\ This replaces the “past interactions” recommendation algorithm with a “friends of friends” algorithm that suggests accounts followed by people you follow, and a “similar profiles” algorithm that suggests accounts with a profile similar to your most recent follows.\ @@ -188,10 +192,17 @@ The following changelog entries focus on changes visible to users, administrator Administrators may need to update their setup accordingly. - Change how content warnings and filters are displayed in web UI (#31365, and #31761 by @Gargron) - Change preview card processing to ignore `undefined` as canonical url (#31882 by @oneiros) -- Change embedded posts to use web UI (#31766 by @Gargron) +- Change embedded posts to use web UI (#31766 and #32135 by @Gargron) - Change inner borders in media galleries in web UI (#31852 by @Gargron) -- Change design of hide media button in web UI (#31807 by @Gargron) +- Change design of media attachments and profile media tab in web UI (#31807, #32048, and #31967 by @Gargron) - Change labels on thread indicators in web UI (#31806 by @Gargron) +- Change label of "Data export" menu item in settings interface (#32099 by @c960657) +- Change responsive break points on navigation panel in web UI (#32034 by @Gargron) +- Change cursor to `not-allowed` on disabled buttons (#32076 by @mjankowski) +- Change OAuth authorization prompt to not refer to apps as “third-party” (#32005 by @Gargron) +- Change Mastodon to issue correct HTTP signatures by default (#31994 by @ClearlyClaire) +- Change zoom icon in web UI (#29683 by @Gargron) +- Change directory page to use URL query strings for options (#31980, #31977 and #31984 by @ClearlyClaire and @renchap) - Change report action buttons to be disabled when action has already been taken (#31773, #31822, and #31899 by @ClearlyClaire and @ThisIsMissEm) - Change width of columns in advanced web UI (#31762 by @Gargron) - Change design of unread conversations in web UI (#31763 by @Gargron) @@ -254,6 +265,7 @@ The following changelog entries focus on changes visible to users, administrator ### Removed +- Remove unused E2EE messaging code and related `crypto` OAuth scope (#31193, #31945, #31963, and #31964 by @ClearlyClaire and @mjankowski) - Remove StatsD integration (replaced by OpenTelemetry) (#30240 by @mjankowski) - Remove `CacheBuster` default options (#30718 by @mjankowski) - Remove home marker updates from the Web UI (#22721 by @davbeck)\ @@ -269,9 +281,21 @@ The following changelog entries focus on changes visible to users, administrator - Fix log out from user menu not working on Safari (#31402 by @renchap) - Fix various issues when in link preview card generation (#28748, #30017, #30362, #30173, #30853, #30929, #30933, #30957, #30987, and #31144 by @adamniedzielski, @oneiros, @phocks, @timothyjrogers, and @tribela) - Fix handling of missing links in Webfinger responses (#31030 by @adamniedzielski) +- Fix error when accepting an appeal for sensitive posts deleted in the meantime (#32037 by @ClearlyClaire) +- Fix error when encountering reblog of deleted post in feed rebuild (#32001 by @ClearlyClaire) +- Fix Safari browser glitch related to horizontal scrolling (#31960 by @Gargron) +- Fix too many requests caused by relationship look-ups in web UI (#32042 by @Gargron) +- Fix links for reblogs in moderation interface (#31979 by @ClearlyClaire) +- Fix the appearance of avatars when they do not load (#31966 by @renchap) +- Fix spurious error notifications for aborted requests in web UI (#31952 by @c960657) - Fix HTTP 500 error in `/api/v1/polls/:id/votes` when required `choices` parameter is missing (#25598 by @danielmbrasil) - Fix security context sometimes not being added in LD-Signed activities (#31871 by @ClearlyClaire) - Fix cross-origin loading of `inert.css` polyfill (#30687 by @louis77) +- Fix wrapping in dashboard quick access buttons (#32043 by @renchap) +- Fix recently used tags hint being displayed in profile edition page when there is none (#32120 by @mjankowski) +- Fix checkbox lists on narrow screens in the settings interface (#32112 by @mjankowski) +- Fix the position of status action buttons being affected by interaction counters (#32084 by @renchap) +- Fix the summary of converted ActivityPub object types to be treated as HTML (#28629 by @Menrath) - Fix cutoff of instance name in sign-up form (#30598 by @oneiros) - Fix invalid date searches returning 503 errors (#31526 by @notchairmk) - Fix invalid `visibility` values in `POST /api/v1/statuses` returning 500 errors (#31571 by @c960657) @@ -285,7 +309,7 @@ The following changelog entries focus on changes visible to users, administrator - Fix “Redirect URI” field not being marked as required in “New application” form (#30311 by @ThisIsMissEm) - Fix right-to-left text in preview cards (#30930 by @ClearlyClaire) - Fix rack attack `match_type` value typo in logging config (#30514 by @mjankowski) -- Fix various cases of duplicate, missing, or inconsistent borders or scrollbar styles (#31068, #31286, #31268, #31275, #31284, #31305, #31346, #31372, #31373, #31389, #31432, #31391, and #31445 by @valtlai and @vmstan) +- Fix various cases of duplicate, missing, or inconsistent borders or scrollbar styles (#31068, #31286, #31268, #31275, #31284, #31305, #31346, #31372, #31373, #31389, #31432, #31391, #31445 and #32091 by @ClearlyClaire, @valtlai and @vmstan) - Fix race condition in `POST /api/v1/push/subscription` (#30166 by @ClearlyClaire) - Fix post deletion not being delayed when those are part of an account warning (#30163 by @ClearlyClaire) - Fix rendering error on `/start` when not logged in (#30023 by @timothyjrogers) diff --git a/docker-compose.yml b/docker-compose.yml index c4e8cb7374..41876d26f9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: web: # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # build: . - image: ghcr.io/mastodon/mastodon:v4.3.0-beta.2 + image: ghcr.io/mastodon/mastodon:v4.3.0-rc.1 restart: always env_file: .env.production command: bundle exec puma -C config/puma.rb @@ -83,7 +83,7 @@ services: # build: # dockerfile: ./streaming/Dockerfile # context: . - image: ghcr.io/mastodon/mastodon-streaming:v4.3.0-beta.2 + image: ghcr.io/mastodon/mastodon-streaming:v4.3.0-rc.1 restart: always env_file: .env.production command: node ./streaming/index.js @@ -101,7 +101,7 @@ services: sidekiq: build: . - image: ghcr.io/mastodon/mastodon:v4.3.0-beta.2 + image: ghcr.io/mastodon/mastodon:v4.3.0-rc.1 restart: always env_file: .env.production command: bundle exec sidekiq diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 9b6ea2e4e5..8ee37c683f 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def default_prerelease - 'beta.2' + 'rc.1' end def prerelease From 07cd1fd1efe0c47e4738189297a484cc2662aebf Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 30 Sep 2024 19:32:23 +0200 Subject: [PATCH 029/550] Support translation branches in Crowdin (#32174) --- .github/workflows/crowdin-download-stable.yml | 69 +++++++++++++++++++ .github/workflows/crowdin-upload.yml | 2 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/crowdin-download-stable.yml diff --git a/.github/workflows/crowdin-download-stable.yml b/.github/workflows/crowdin-download-stable.yml new file mode 100644 index 0000000000..c0b402a5b9 --- /dev/null +++ b/.github/workflows/crowdin-download-stable.yml @@ -0,0 +1,69 @@ +name: Crowdin / Download translations (stable branches) +on: + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + download-translations-stable: + runs-on: ubuntu-latest + if: github.repository == 'mastodon/mastodon' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Increase Git http.postBuffer + # This is needed due to a bug in Ubuntu's cURL version? + # See https://github.com/orgs/community/discussions/55820 + run: | + git config --global http.version HTTP/1.1 + git config --global http.postBuffer 157286400 + + # Download the translation files from Crowdin + - name: crowdin action + uses: crowdin/github-action@v2 + with: + upload_sources: false + upload_translations: false + download_translations: true + crowdin_branch_name: ${{ github.base_ref || github.ref_name }} + push_translations: false + create_pull_request: false + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + + # As the files are extracted from a Docker container, they belong to root:root + # We need to fix this before the next steps + - name: Fix file permissions + run: sudo chown -R runner:docker . + + # This is needed to run the normalize step + - name: Set up Ruby environment + uses: ./.github/actions/setup-ruby + + - name: Run i18n normalize task + run: bundle exec i18n-tasks normalize + + # Create or update the pull request + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7.0.1 + with: + commit-message: 'New Crowdin translations' + title: 'New Crowdin Translations for ${{ github.base_ref || github.ref_name }} (automated)' + author: 'GitHub Actions ' + body: | + New Crowdin translations, automated with GitHub Actions + + See `.github/workflows/crowdin-download.yml` + + This PR will be updated every day with new translations. + + Due to a limitation in GitHub Actions, checks are not running on this PR without manual action. + If you want to run the checks, then close and re-open it. + branch: i18n/crowdin/translations-${{ github.base_ref || github.ref_name }} + base: ${{ github.base_ref || github.ref_name }} + labels: i18n diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml index b7a0a2b819..62ad1150bc 100644 --- a/.github/workflows/crowdin-upload.yml +++ b/.github/workflows/crowdin-upload.yml @@ -31,7 +31,7 @@ jobs: upload_sources: true upload_translations: false download_translations: false - crowdin_branch_name: main + crowdin_branch_name: ${{ github.base_ref || github.ref_name }} env: CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} From 0b6d217b9e0c51cd4132f8e7d24c8df4b9f02f20 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 04:19:53 -0400 Subject: [PATCH 030/550] Use account display name for pretend blog example in attribution area (#32188) --- app/views/settings/verifications/show.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index 5318b0767d..af9556d004 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -50,13 +50,13 @@ = image_tag frontend_asset_url('images/preview.png'), alt: '', class: 'status-card__image-image' .status-card__content %span.status-card__host - %span= t('author_attribution.s_blog', name: @account.username) + %span= t('author_attribution.s_blog', name: display_name(@account)) · %time.time-ago{ datetime: 1.year.ago.to_date.iso8601 } %strong.status-card__title= t('author_attribution.example_title') .more-from-author = logo_as_symbol(:icon) - = t('author_attribution.more_from_html', name: link_to(root_url, class: 'story__details__shared__author-link') { image_tag(@account.avatar.url, class: 'account__avatar', width: 16, height: 16, alt: '') + content_tag(:bdi, display_name(@account)) }) + = t('author_attribution.more_from_html', name: link_to(root_url, class: 'story__details__shared__author-link') { image_tag(@account.avatar.url, class: 'account__avatar', width: 16, height: 16, alt: '') + tag.bdi(display_name(@account)) }) .actions = f.button :button, t('generic.save_changes'), type: :submit From 5839ee434ba8510f9eb50804ee4530dacf146e97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 08:21:17 +0000 Subject: [PATCH 031/550] New Crowdin Translations (automated) (#32195) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 3 +- app/javascript/mastodon/locales/el.json | 8 ++++ app/javascript/mastodon/locales/fr-CA.json | 1 + app/javascript/mastodon/locales/fr.json | 1 + app/javascript/mastodon/locales/gd.json | 10 ++++- app/javascript/mastodon/locales/hu.json | 6 +++ app/javascript/mastodon/locales/kab.json | 4 +- app/javascript/mastodon/locales/pt-BR.json | 8 +++- config/locales/doorkeeper.el.yml | 1 + config/locales/el.yml | 43 ++++++++++++++++++++++ config/locales/eo.yml | 5 +++ config/locales/gd.yml | 6 ++- config/locales/kab.yml | 9 +++++ config/locales/pt-BR.yml | 2 +- 14 files changed, 101 insertions(+), 6 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 18830708db..b11382cf03 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -84,6 +84,7 @@ "alert.rate_limited.title": "معدل الطلبات محدود", "alert.unexpected.message": "لقد طرأ خطأ غير متوقّع.", "alert.unexpected.title": "المعذرة!", + "alt_text_badge.title": "نص بديل", "announcement.announcement": "إعلان", "attachments_list.unprocessed": "(غير معالَج)", "audio.hide": "إخفاء المقطع الصوتي", @@ -758,7 +759,7 @@ "status.history.edited": "عدله {name} {date}", "status.load_more": "حمّل المزيد", "status.media.open": "اضغط للفتح", - "status.media.show": "اضغط لإظهاره", + "status.media.show": "اضغط لإظهارها", "status.media_hidden": "وسائط مخفية", "status.mention": "أذكُر @{name}", "status.more": "المزيد", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 85f893c63d..2565f5da68 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Περιορισμός συχνότητας", "alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.", "alert.unexpected.title": "Ουπς!", + "alt_text_badge.title": "Εναλλακτικό κείμενο", "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", "audio.hide": "Απόκρυψη αρχείου ήχου", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Κανείς από αυτόν τον διακομιστή δεν μπορεί να σε ακολουθήσει.", "domain_block_modal.they_wont_know": "Δεν θα ξέρουν ότι έχουν αποκλειστεί.", "domain_block_modal.title": "Αποκλεισμός τομέα;", + "domain_block_modal.you_will_lose_num_followers": "Θα χάσετε {followersCount, plural, one {{followersCountDisplay} ακόλουθο} other {{followersCountDisplay} ακόλουθους}} και {followingCount, plural, one {{followingCountDisplay} άτομο που ακολουθείτε} other {{followingCountDisplay} άτομα που ακολουθείτε}}.", + "domain_block_modal.you_will_lose_relationships": "Θα χάσετε όλους τους ακόλουθους και τα άτομα που ακολουθείτε από αυτόν τον διακομιστή.", "domain_block_modal.you_wont_see_posts": "Δεν θα βλέπεις αναρτήσεις ή ειδοποιήσεις από χρήστες σε αυτόν το διακομιστή.", "domain_pill.activitypub_lets_connect": "Σού επιτρέπει να συνδεθείς και να αλληλεπιδράσεις με τους ανθρώπους όχι μόνο στο Mastodon, αλλά και σε διαφορετικές κοινωνικές εφαρμογές.", "domain_pill.activitypub_like_language": "Το ActivityPub είναι σαν τη γλώσσα Mastodon μιλάει με άλλα κοινωνικά δίκτυα.", @@ -849,6 +852,11 @@ "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.", "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής", "upload_form.description": "Περιγραφή για άτομα με προβλήματα όρασης", + "upload_form.drag_and_drop.instructions": "Για να επιλέξετε ένα συνημμένο αρχείο πολυμέσων, πατήστε το Space ή το Enter. Ενώ το σέρνετε, χρησιμοποιήστε τα πλήκτρα βέλους για να μετακινήσετε το συνημμένο αρχείο πολυμέσων προς οποιαδήποτε κατεύθυνση. Πατήστε ξανά το Space ή το Enter για να αποθέσετε το συνημμένο αρχείο πολυμέσων στη νέα του θέση ή πατήστε το Escape για ακύρωση.", + "upload_form.drag_and_drop.on_drag_cancel": "Η μετακίνηση ακυρώθηκε. Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».", + "upload_form.drag_and_drop.on_drag_end": "Έγινε απόθεση του συνημμένου αρχείου πολυμέσων «{item}».", + "upload_form.drag_and_drop.on_drag_over": "Έγινε μετακίνηση του συνημμένου αρχείου πολυμέσων «{item}».", + "upload_form.drag_and_drop.on_drag_start": "Έγινε επιλογή του συνημμένου αρχείου πολυμέσων «{item}».", "upload_form.edit": "Επεξεργασία", "upload_form.thumbnail": "Αλλαγή μικρογραφίας", "upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index bdceb9bd30..3349be4fad 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -852,6 +852,7 @@ "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.", "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyants", + "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 2acad02093..5c4e582a87 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -852,6 +852,7 @@ "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.", "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyant·e·s", + "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index ecbc11f3a2..f6d3f172ca 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Cuingeachadh ùine", "alert.unexpected.message": "Thachair mearachd ris nach robh dùil.", "alert.unexpected.title": "Oich!", + "alt_text_badge.title": "Roghainn teacsa", "announcement.announcement": "Brath-fios", "attachments_list.unprocessed": "(gun phròiseasadh)", "audio.hide": "Falaich an fhuaim", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Chan urrainn do neach sam bith a th’ air an fhrithealaiche seo do leantainn.", "domain_block_modal.they_wont_know": "Cha bhi fios aca gun deach am bacadh.", "domain_block_modal.title": "A bheil thu airson an àrainn a bhacadh?", + "domain_block_modal.you_will_lose_num_followers": "Caillidh tu {followersCount, plural, one {{followersCountDisplay} neach-leantainn} two {{followersCountDisplay} luchd-leantainn} few {{followersCountDisplay} luchd-leantainn} other {{followersCountDisplay} luchd-leantainn}} ’s {followingCount, plural, one {{followingCountDisplay} neach a tha thu a’ leantainn} two {{followingCountDisplay} daoine a tha thu a’ leantainn} few {{followingCountDisplay} daoine a tha thu a’ leantainn} other {{followingCountDisplay} daoine a tha thu a’ leantainn}}.", + "domain_block_modal.you_will_lose_relationships": "Caillidh tu a h-uile luchd-leantainn ’s neach a leanas tu air an fhrithealaiche seo.", "domain_block_modal.you_wont_see_posts": "Chan fhaic thu postaichean no brathan o chleachdaichean a th’ air an fhrithealaiche seo.", "domain_pill.activitypub_lets_connect": "Leigidh e leat ceangal a dhèanamh ri daoine chan ann air Mastodon a-mhàin ach air feadh aplacaidean sòisealta eile cuideachd agus conaltradh leotha.", "domain_pill.activitypub_like_language": "Tha ActivityPub coltach ri cànan a bhruidhneas Mastodon ri lìonraidhean sòisealta eile.", @@ -330,7 +333,7 @@ "footer.about": "Mu dhèidhinn", "footer.directory": "Eòlaire nam pròifil", "footer.get_app": "Faigh an aplacaid", - "footer.invite": "Thoir cuireadh do dhaoine", + "footer.invite": "Thoir cuireadh", "footer.keyboard_shortcuts": "Ath-ghoiridean a’ mheur-chlàir", "footer.privacy_policy": "Poileasaidh prìobhaideachd", "footer.source_code": "Seall am bun-tùs", @@ -849,6 +852,11 @@ "upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.", "upload_form.audio_description": "Mìnich e dhan fheadhainn le èisteachd bheag", "upload_form.description": "Mìnich e dhan fheadhainn le cion-lèirsinne", + "upload_form.drag_and_drop.instructions": "Airson ceanglachan meadhain a thogail, brùth air space no enter. Fhad ’ a bhios tu ’ga shlaodadh, cleachd na h-iuchraichean-saighde airson an ceanglachan meadhain a ghluasad gu comhair sam bith. Brùth air space no enter a-rithist airson an ceanglachen meadhain a leigeil às air an ionad ùr aige no brùth air escape airson sgur dheth.", + "upload_form.drag_and_drop.on_drag_cancel": "Chaidh sgur dhen t-slaodadh. Chaidh an ceanglachan meadhain {item} a leigeil às.", + "upload_form.drag_and_drop.on_drag_end": "Chaidh an ceanglachan meadhain {item} a leigeil às.", + "upload_form.drag_and_drop.on_drag_over": "Chaidh an ceanglachan meadhain {item} a ghluasad.", + "upload_form.drag_and_drop.on_drag_start": "Chaidh an ceanglachan meadhain {item} a thogail.", "upload_form.edit": "Deasaich", "upload_form.thumbnail": "Atharraich an dealbhag", "upload_form.video_description": "Mìnich e dhan fheadhainn le èisteachd bheag no cion-lèirsinne", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 34a9949afd..8baf584b78 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Adatforgalom korlátozva", "alert.unexpected.message": "Váratlan hiba történt.", "alert.unexpected.title": "Hoppá!", + "alt_text_badge.title": "Helyettesítő szöveg", "announcement.announcement": "Közlemény", "attachments_list.unprocessed": "(feldolgozatlan)", "audio.hide": "Hang elrejtése", @@ -851,6 +852,11 @@ "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_form.audio_description": "Leírás siket vagy hallássérült emberek számára", "upload_form.description": "Leírás vak vagy gyengénlátó emberek számára", + "upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomjon Szóközt vagy Entert. Húzás közben használja a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomja meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomja meg az Esc gombot.", + "upload_form.drag_and_drop.on_drag_cancel": "Az áthúzást megszakította. A(z) {item} médiamelléklet el lett dobva.", + "upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.", + "upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.", + "upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.", "upload_form.edit": "Szerkesztés", "upload_form.thumbnail": "Bélyegkép megváltoztatása", "upload_form.video_description": "Leírás siket, hallássérült, vak vagy gyengénlátó emberek számára", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 9e2c9f3af8..ff06c9c464 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -1,5 +1,5 @@ { - "about.blocks": "Ulac agbur", + "about.blocks": "Iqeddacen yettwaɛassen", "about.contact": "Anermis:", "about.disclaimer": "Mastodon d aseɣẓan ilelli, d aseɣẓan n uɣbalu yeldin, d tnezzut n Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Ulac taɣẓint", @@ -550,6 +550,7 @@ "report_notification.attached_statuses": "{count, plural, one {{count} n tsuffeɣt} other {{count} n tsuffiɣin}} ttwaqnent", "report_notification.categories.legal": "Azerfan", "report_notification.categories.other": "Ayen nniḍen", + "report_notification.categories.other_sentence": "ayen nniḍen", "report_notification.categories.spam": "Aspam", "report_notification.categories.spam_sentence": "aspam", "report_notification.open": "Ldi aneqqis", @@ -589,6 +590,7 @@ "status.direct": "Bder-d @{name} weḥd-s", "status.direct_indicator": "Abdar uslig", "status.edit": "Ẓreg", + "status.edited": "Taẓrigt taneggarut {date}", "status.edited_x_times": "Tettwaẓreg {count, plural, one {{count} n tikkelt} other {{count} n tikkal}}", "status.embed": "Awi-d tangalt n weslaɣ", "status.favourite": "Amenyaf", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index d1a3ecdaa7..ab5701cde0 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -437,6 +437,7 @@ "lightbox.next": "Próximo", "lightbox.previous": "Anterior", "lightbox.zoom_in": "Voltar para o tamanho real", + "lightbox.zoom_out": "Zoom para ajustar", "limited_account_hint.action": "Exibir perfil mesmo assim", "limited_account_hint.title": "Este perfil foi ocultado pelos moderadores do {domain}.", "link_preview.author": "Por {name}", @@ -813,7 +814,7 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", - "status.replied_in_thread": "Respondido na discussão", + "status.replied_in_thread": "Respondido na conversa", "status.replied_to": "Em resposta a {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", @@ -851,6 +852,11 @@ "upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.", "upload_form.audio_description": "Descrever para deficientes auditivos", "upload_form.description": "Descrever para deficientes visuais", + "upload_form.drag_and_drop.instructions": "Para pegar um anexo de mídia, pressione espaço ou enter. Enquanto arrastar, use as setas do teclado para mover o anexo de mídia em qualquer direção. Pressione espaço ou insira novamente para soltar o anexo de mídia em sua nova posição, ou pressione escape para cancelar.", + "upload_form.drag_and_drop.on_drag_cancel": "O arrastamento foi cancelado. O anexo da mídia {item} foi descartado.", + "upload_form.drag_and_drop.on_drag_end": "O anexo {item} foi removido.", + "upload_form.drag_and_drop.on_drag_over": "O anexo de mídia {item} foi movido.", + "upload_form.drag_and_drop.on_drag_start": "Foi coletado o anexo de mídia {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Alterar miniatura", "upload_form.video_description": "Descrever para deficientes auditivos ou visuais", diff --git a/config/locales/doorkeeper.el.yml b/config/locales/doorkeeper.el.yml index 59877b6bd0..984eff8871 100644 --- a/config/locales/doorkeeper.el.yml +++ b/config/locales/doorkeeper.el.yml @@ -60,6 +60,7 @@ el: error: title: Εμφανίστηκε σφάλμα new: + prompt_html: Το %{client_name} επιθυμεί το δικαίωμα πρόσβασης στον λογαριασμό σας. Εγκρίνετε αυτό το αίτημα μόνο αν αναγνωρίζετε και εμπιστεύεστε αυτήν την πηγή. review_permissions: Ανασκόπηση δικαιωμάτων title: Απαιτείται έγκριση show: diff --git a/config/locales/el.yml b/config/locales/el.yml index 610ae40265..4496ec51a6 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -953,6 +953,7 @@ el: used_by_over_week: one: Χρησιμοποιήθηκε από ένα άτομο την τελευταία εβδομάδα other: Χρησιμοποιήθηκε από %{count} άτομα την τελευταία εβδομάδα + title: Προτάσεις και τάσεις trending: Τάσεις warning_presets: add_new: Πρόσθεση νέου @@ -1037,7 +1038,9 @@ el: guide_link_text: Μπορεί να συνεισφέρει ο οποιοσδήποτε. sensitive_content: Ευαίσθητο περιεχόμενο application_mailer: + notification_preferences: Αλλαγή προτιμήσεων email salutation: "%{name}," + settings: 'Αλλαγή προτιμήσεων email: %{link}' unsubscribe: Κατάργηση εγγραφής view: 'Προβολή:' view_profile: Προβολή προφίλ @@ -1084,6 +1087,7 @@ el: or_log_in_with: Ή συνδέσου με privacy_policy_agreement_html: Έχω διαβάσει και συμφωνώ με την πολιτική απορρήτου progress: + confirm: Επιβεβαίωση email details: Τα στοιχεία σας review: Η αξιολόγησή μας rules: Αποδοχή κανόνων @@ -1123,6 +1127,8 @@ el: view_strikes: Προβολή προηγούμενων ποινών εναντίον του λογαριασμού σας too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά. use_security_key: Χρήση κλειδιού ασφαλείας + author_attribution: + example_title: Δείγμα κειμένου challenge: confirm: Συνέχεια hint_html: "Συμβουλή: Δεν θα σου ζητήσουμε τον κωδικό ασφαλείας σου ξανά για την επόμενη ώρα." @@ -1342,7 +1348,10 @@ el: time_started: Ξεκίνησε στις titles: blocking: Εισαγωγή αποκλεισμένων λογαριασμών + bookmarks: Εισαγωγή σελιδοδεικτών + domain_blocking: Εισαγωγή αποκλεισμένων τομέων following: Εισαγωγή λογαριασμών που ακολουθείτε + lists: Εισαγωγή λιστών type: Τύπος εισαγωγής type_groups: destructive: Μπλοκ & σίγαση @@ -1351,6 +1360,7 @@ el: bookmarks: Σελιδοδείκτες domain_blocking: Λίστα αποκλεισμένων τομέων following: Λίστα ατόμων που ακολουθείτε + lists: Λίστες muting: Λίστα αποσιωπήσεων upload: Μεταμόρφωση invites: @@ -1365,6 +1375,7 @@ el: '86400': 1 μέρα expires_in_prompt: Ποτέ generate: Δημιουργία συνδέσμου πρόσκλησης + invalid: Αυτή η πρόσκληση δεν είναι έγκυρη invited_by: 'Σε προσκάλεσε ο/η:' max_uses: one: 1 χρήσης @@ -1388,6 +1399,11 @@ el: failed_sign_in_html: Αποτυχημένη προσπάθεια σύνδεσης με %{method} από %{ip} (%{browser}) successful_sign_in_html: Επιτυχής σύνδεση με %{method} από %{ip} (%{browser}) title: Ιστορικό ελέγχου ταυτότητας + mail_subscriptions: + unsubscribe: + action: Ναι, κατάργηση συνδρομής + complete: Η συνδρομή καταργήθηκε + title: Κατάργηση συνδρομής media_attachments: validations: images_and_video: Δεν γίνεται να προσθέσεις βίντεο σε ανάρτηση που ήδη περιέχει εικόνες @@ -1467,6 +1483,7 @@ el: update: subject: "%{name} επεξεργάστηκε μια ανάρτηση" notifications: + email_events: Συμβάντα για ειδοποιήσεις μέσω email email_events_hint: 'Επέλεξε συμβάντα για τα οποία θέλεις να λαμβάνεις ειδοποιήσεις μέσω email:' number: human: @@ -1507,12 +1524,18 @@ el: other: Άλλες posting_defaults: Προεπιλογές ανάρτησης public_timelines: Δημόσιες ροές + privacy: + privacy: Απόρρητο + search: Αναζήτηση privacy_policy: title: Πολιτική Απορρήτου reactions: errors: limit_reached: Το όριο διαφορετικών αντιδράσεων ξεπεράστηκε unrecognized_emoji: δεν είναι ένα αναγνωρισμένο emoji + redirects: + prompt: Αν εμπιστεύεστε αυτόν τον σύνδεσμο, κάντε κλικ σε αυτόν για να συνεχίσετε. + title: Αποχωρείτε από το %{instance}. relationships: activity: Δραστηριότητα λογαριασμού confirm_follow_selected_followers: Είσαι βέβαιος ότι θες να ακολουθήσεις τους επιλεγμένους ακόλουθους; @@ -1548,6 +1571,9 @@ el: over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων αναρτήσεων για εκείνη τη μέρα over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων αναρτήσεων too_soon: Η προγραμματισμένη ημερομηνία πρέπει να είναι στο μέλλον + self_destruct: + lead_html: Δυστυχώς, το %{domain} κλείνει οριστικά. Αν είχατε λογαριασμό εκεί, δεν θα μπορείτε να συνεχίσετε τη χρήση του, αλλά μπορείτε ακόμα να ζητήσετε ένα αντίγραφο ασφαλείας των δεδομένων σας. + title: Αυτός ο διακομιστής κλείνει οριστικά sessions: activity: Τελευταία δραστηριότητα browser: Φυλλομετρητής @@ -1604,10 +1630,12 @@ el: delete: Διαγραφή λογαριασμού development: Ανάπτυξη edit_profile: Επεξεργασία προφίλ + export: Εξαγωγή featured_tags: Παρεχόμενες ετικέτες import: Εισαγωγή import_and_export: Εισαγωγή και εξαγωγή migrate: Μετακόμιση λογαριασμού + notifications: Ειδοποιήσεις μέσω email preferences: Προτιμήσεις profile: Προφίλ relationships: Ακολουθείς και σε ακολουθούν @@ -1615,6 +1643,12 @@ el: strikes: Παραπτώματα από ομάδα συντονισμού two_factor_authentication: Πιστοποίηση 2 παραγόντων webauthn_authentication: Κλειδιά ασφαλείας + severed_relationships: + download: Λήψη (%{count}) + event_type: + account_suspension: Αναστολή λογαριασμού (%{target_name}) + domain_block: Αναστολή διακομιστή (%{target_name}) + type: Συμβάν statuses: attached: audio: @@ -1697,11 +1731,13 @@ el: contrast: Mastodon (Υψηλή αντίθεση) default: Mastodon (Σκοτεινό) mastodon-light: Mastodon (Ανοιχτόχρωμο) + system: Αυτόματο (θέμα συστήματος) time: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" time: "%H:%M" + with_time_zone: "%d %b %Y, %H:%M %Z" two_factor_authentication: add: Προσθήκη disable: Απενεργοποίηση 2FA @@ -1789,6 +1825,10 @@ el: feature_action: Μάθε περισσότερα feature_audience: Το Mastodon σού παρέχει μια μοναδική δυνατότητα διαχείρισης του κοινού σου χωρίς μεσάζοντες. Το Mastodon όταν αναπτύσσεται στη δική σου υποδομή σού επιτρέπει να ακολουθείς και να ακολουθείσαι από οποιονδήποτε άλλο συνδεδεμένο διακομιστή Mastodon και κανείς δεν τον ελέγχει, εκτός από σένα. feature_audience_title: Χτίσε το κοινό σου με σιγουριά + post_action: Σύνθεση + share_action: Κοινοποίηση + share_title: Μοιραστείτε το προφίλ σας στο Mastodon + sign_in_action: Σύνδεση subject: Καλώς ήρθες στο Mastodon title: Καλώς όρισες, %{name}! users: @@ -1798,7 +1838,10 @@ el: otp_lost_help_html: Αν χάσεις πρόσβαση και στα δύο, μπορείς να επικοινωνήσεις με %{email} signed_in_as: 'Έχεις συνδεθεί ως:' verification: + here_is_how: Δείτε πώς verification: Πιστοποίηση + verified_links: Οι επαληθευμένοι σύνδεσμοι σας + website_verification: Επαλήθευση ιστοτόπου webauthn_credentials: add: Προσθήκη νέου κλειδιού ασφαλείας create: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index a3f968d139..10b297f1a8 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -218,18 +218,22 @@ eo: update_custom_emoji: Ĝisdatigi proprajn emoĝiojn update_domain_block: Ĝigdatigi domajnan blokadon update_ip_block: Krei IP-regulon + update_report: Ĝisdatigo de Raporto update_status: Ĝisdatigi afiŝon update_user_role: Ĝisdatigi rolon actions: approve_appeal_html: "%{name} aprobis apelacion kontraŭ moderiga decido de %{target}" approve_user_html: "%{name} aprobis registriĝon de %{target}" assigned_to_self_report_html: "%{name} asignis signalon %{target} al si mem" + change_email_user_html: "%{name} ŝanĝis retadreson de uzanto %{target}" change_role_user_html: "%{name} ŝanĝis rolon de %{target}" + confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}" create_account_warning_html: "%{name} sendis averton al %{target}" create_announcement_html: "%{name} kreis novan anoncon %{target}" create_custom_emoji_html: "%{name} alŝutis novan emoĝion %{target}" create_domain_allow_html: "%{name} aldonis domajnon %{target} al la blanka listo" create_domain_block_html: "%{name} blokis domajnon %{target}" + create_email_domain_block_html: "%{name} blokis retpoŝtan domajnon %{target}" create_ip_block_html: "%{name} kreis regulon por IP %{target}" create_unavailable_domain_html: "%{name} ĉesis sendon al domajno %{target}" create_user_role_html: "%{name} kreis rolon de %{target}" @@ -238,6 +242,7 @@ eo: destroy_custom_emoji_html: "%{name} forigis emoĝion %{target}" destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo" destroy_domain_block_html: "%{name} malblokis domajnon %{target}" + destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" destroy_instance_html: "%{name} forigis domajnon %{target}" destroy_ip_block_html: "%{name} forigis regulon por IP %{target}" destroy_status_html: "%{name} forigis mesaĝojn de %{target}" diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 90d03c74e1..a030b0d185 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -903,6 +903,9 @@ gd: message_html: Cha do mhìnich thu riaghailtean an fhrithealaiche fhathast. sidekiq_process_check: message_html: Chan eil pròiseas Sidekiq sam bith a ruith dhan chiutha/dha na ciuthan %{value}. Thoir sùil air an rèiteachadh Sidekiq agad + software_version_check: + action: Faic na h-ùrachaidhean a tha ri fhaighinn + message_html: Tha ùrachadh Mastodon ri fhaighinn. software_version_critical_check: action: Faic na h-ùrachaidhean a tha ri fhaighinn message_html: Tha ùrachadh èiginneach air Mastodon ri fhaighinn, ùraich cho luath ’s a ghabhas. @@ -1021,7 +1024,7 @@ gd: delete: Sguab às edit_preset: Deasaich rabhadh ro-shuidhichte empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast. - title: Ro-sheataichean rabhaidhean + title: Rabhaidhean ro-shocraichte webhooks: add_new: Cuir puing-dheiridh ris delete: Sguab às @@ -1744,6 +1747,7 @@ gd: delete: Sguabadh às cunntais development: Leasachadh edit_profile: Deasaich a’ phròifil + export: Às-phortadh featured_tags: Tagaichean hais brosnaichte import: Ion-phortadh import_and_export: Ion-phortadh ⁊ às-phortadh diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 12bda84d46..993488f1fc 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -264,6 +264,8 @@ kab: domain: Taɣult new: create: Rnu taɣult + export_domain_allows: + no_file: Ula d yiwen ufaylu ma yettwafran export_domain_blocks: no_file: Ulac afaylu yettwafernen follow_recommendations: @@ -529,6 +531,10 @@ kab: account_status: Addad n umiḍan functional: Amiḍan-inek·inem yetteddu s lekmal-is. use_security_key: Seqdec tasarut n teɣlist + author_attribution: + example_title: Amedya n weḍris + more_from_html: Ugar s ɣur %{name} + s_blog: Ablug n %{name} challenge: confirm: Kemmel invalid_password: Yir awal uffir @@ -685,6 +691,9 @@ kab: subject: Yuder-ik·ikem-id %{name} reblog: subject: "%{name} yesselha addad-ik·im" + title: Azuzer amaynut + status: + subject: "%{name} akken i d-y·t·essufeɣ" number: human: decimal_units: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 5e7317c5fb..6451e7c601 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1888,7 +1888,7 @@ pt-BR: none: Aviso sensitive: Conta marcada como sensível silence: Conta silenciada - suspend: Conta banida + suspend: Conta suspensa welcome: apps_android_action: Disponível no Google Play apps_ios_action: Disponível na App Store From 1be55ce24418ea149a9ca0def237a76f4c6501af Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Tue, 1 Oct 2024 10:22:14 +0200 Subject: [PATCH 032/550] Fix follow notifications from streaming being grouped (#32179) --- .../mastodon/actions/notification_groups.ts | 4 + .../mastodon/reducers/notification_groups.ts | 79 ++++++++++--------- 2 files changed, 46 insertions(+), 37 deletions(-) diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts index b40b04f8cc..a359913e61 100644 --- a/app/javascript/mastodon/actions/notification_groups.ts +++ b/app/javascript/mastodon/actions/notification_groups.ts @@ -70,6 +70,10 @@ function dispatchAssociatedRecords( const supportedGroupedNotificationTypes = ['favourite', 'reblog']; +export function shouldGroupNotificationType(type: string) { + return supportedGroupedNotificationTypes.includes(type); +} + export const fetchNotifications = createDataLoadingThunk( 'notificationGroups/fetch', async (_params, { getState }) => diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index f3c83ccd8d..375e643876 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -21,6 +21,7 @@ import { unmountNotifications, refreshStaleNotificationGroups, pollRecentNotifications, + shouldGroupNotificationType, } from 'mastodon/actions/notification_groups'; import { disconnectTimeline, @@ -205,46 +206,50 @@ function processNewNotification( groups: NotificationGroupsState['groups'], notification: ApiNotificationJSON, ) { - const existingGroupIndex = groups.findIndex( - (group) => - group.type !== 'gap' && group.group_key === notification.group_key, - ); + if (shouldGroupNotificationType(notification.type)) { + const existingGroupIndex = groups.findIndex( + (group) => + group.type !== 'gap' && group.group_key === notification.group_key, + ); - // In any case, we are going to add a group at the top - // If there is currently a gap at the top, now is the time to update it - if (groups.length > 0 && groups[0]?.type === 'gap') { - groups[0].maxId = notification.id; - } - - if (existingGroupIndex > -1) { - const existingGroup = groups[existingGroupIndex]; - - if ( - existingGroup && - existingGroup.type !== 'gap' && - !existingGroup.sampleAccountIds.includes(notification.account.id) // This can happen for example if you like, then unlike, then like again the same post - ) { - // Update the existing group - if ( - existingGroup.sampleAccountIds.unshift(notification.account.id) > - NOTIFICATIONS_GROUP_MAX_AVATARS - ) - existingGroup.sampleAccountIds.pop(); - - existingGroup.most_recent_notification_id = notification.id; - existingGroup.page_max_id = notification.id; - existingGroup.latest_page_notification_at = notification.created_at; - existingGroup.notifications_count += 1; - - groups.splice(existingGroupIndex, 1); - mergeGapsAround(groups, existingGroupIndex); - - groups.unshift(existingGroup); + // In any case, we are going to add a group at the top + // If there is currently a gap at the top, now is the time to update it + if (groups.length > 0 && groups[0]?.type === 'gap') { + groups[0].maxId = notification.id; + } + + if (existingGroupIndex > -1) { + const existingGroup = groups[existingGroupIndex]; + + if ( + existingGroup && + existingGroup.type !== 'gap' && + !existingGroup.sampleAccountIds.includes(notification.account.id) // This can happen for example if you like, then unlike, then like again the same post + ) { + // Update the existing group + if ( + existingGroup.sampleAccountIds.unshift(notification.account.id) > + NOTIFICATIONS_GROUP_MAX_AVATARS + ) + existingGroup.sampleAccountIds.pop(); + + existingGroup.most_recent_notification_id = notification.id; + existingGroup.page_max_id = notification.id; + existingGroup.latest_page_notification_at = notification.created_at; + existingGroup.notifications_count += 1; + + groups.splice(existingGroupIndex, 1); + mergeGapsAround(groups, existingGroupIndex); + + groups.unshift(existingGroup); + + return; + } } - } else { - // Create a new group - groups.unshift(createNotificationGroupFromNotificationJSON(notification)); } + + // We have not found an existing group, create a new one + groups.unshift(createNotificationGroupFromNotificationJSON(notification)); } function trimNotifications(state: NotificationGroupsState) { From 685067efd148e28cc7c158705ac1fa1199daeeda Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 04:23:05 -0400 Subject: [PATCH 033/550] Avoid `id` duplication conflict with main navigation from settings profile link (#32181) --- app/views/settings/shared/_profile_navigation.html.haml | 4 ++-- config/navigation.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/settings/shared/_profile_navigation.html.haml b/app/views/settings/shared/_profile_navigation.html.haml index d490bd7566..2f81cb5cfd 100644 --- a/app/views/settings/shared/_profile_navigation.html.haml +++ b/app/views/settings/shared/_profile_navigation.html.haml @@ -1,7 +1,7 @@ .content__heading__tabs = render_navigation renderer: :links do |primary| :ruby - primary.item :profile, safe_join([material_symbol('person'), t('settings.edit_profile')]), settings_profile_path - primary.item :privacy, safe_join([material_symbol('lock'), t('privacy.title')]), settings_privacy_path + primary.item :edit_profile, safe_join([material_symbol('person'), t('settings.edit_profile')]), settings_profile_path + primary.item :privacy_reach, safe_join([material_symbol('lock'), t('privacy.title')]), settings_privacy_path primary.item :verification, safe_join([material_symbol('check'), t('verification.verification')]), settings_verification_path primary.item :featured_tags, safe_join([material_symbol('tag'), t('settings.featured_tags')]), settings_featured_tags_path diff --git a/config/navigation.rb b/config/navigation.rb index 33efb78b1e..c79e96835b 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -35,7 +35,7 @@ SimpleNavigation::Configuration.run do |navigation| s.item :export, safe_join([material_symbol('cloud_download'), t('settings.export')]), settings_export_path end - n.item :invites, safe_join([material_symbol('person_add'), t('invites.title')]), invites_path, if: -> { current_user.can?(:invite_users) && current_user.functional? && !self_destruct } + n.item :user_invites, safe_join([material_symbol('person_add'), t('invites.title')]), invites_path, if: -> { current_user.can?(:invite_users) && current_user.functional? && !self_destruct } n.item :development, safe_join([material_symbol('code'), t('settings.development')]), settings_applications_path, highlights_on: %r{/settings/applications}, if: -> { current_user.functional? && !self_destruct } n.item :trends, safe_join([material_symbol('trending_up'), t('admin.trends.title')]), admin_trends_statuses_path, if: -> { current_user.can?(:manage_taxonomies) && !self_destruct } do |s| From d9973f3b705d62db2305420af9b51b4a75c14332 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 08:28:50 +0000 Subject: [PATCH 034/550] Update peter-evans/create-pull-request action to v7.0.5 (#32164) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/crowdin-download-stable.yml | 2 +- .github/workflows/crowdin-download.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/crowdin-download-stable.yml b/.github/workflows/crowdin-download-stable.yml index c0b402a5b9..de21e2e58f 100644 --- a/.github/workflows/crowdin-download-stable.yml +++ b/.github/workflows/crowdin-download-stable.yml @@ -50,7 +50,7 @@ jobs: # Create or update the pull request - name: Create Pull Request - uses: peter-evans/create-pull-request@v7.0.1 + uses: peter-evans/create-pull-request@v7.0.5 with: commit-message: 'New Crowdin translations' title: 'New Crowdin Translations for ${{ github.base_ref || github.ref_name }} (automated)' diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml index f1817b3e9a..900899dd52 100644 --- a/.github/workflows/crowdin-download.yml +++ b/.github/workflows/crowdin-download.yml @@ -52,7 +52,7 @@ jobs: # Create or update the pull request - name: Create Pull Request - uses: peter-evans/create-pull-request@v7.0.1 + uses: peter-evans/create-pull-request@v7.0.5 with: commit-message: 'New Crowdin translations' title: 'New Crowdin Translations (automated)' From 497e8d00b9644bed65c3085b5cc1ca3139eebd58 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Tue, 1 Oct 2024 10:36:22 +0200 Subject: [PATCH 035/550] Bump `main` version 4.4.0-alpha.1 (#32180) --- lib/mastodon/version.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 8ee37c683f..88aa515296 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -9,7 +9,7 @@ module Mastodon end def minor - 3 + 4 end def patch @@ -17,7 +17,7 @@ module Mastodon end def default_prerelease - 'rc.1' + 'alpha.1' end def prerelease From 675d3ea5c11d78821d505b8ea8debe6355dee2df Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 04:36:41 -0400 Subject: [PATCH 036/550] Extract dashboard partial for admin instance page (#32189) --- .../admin/instances/_dashboard.html.haml | 66 ++++++++++++++++++ app/views/admin/instances/show.html.haml | 67 +------------------ 2 files changed, 67 insertions(+), 66 deletions(-) create mode 100644 app/views/admin/instances/_dashboard.html.haml diff --git a/app/views/admin/instances/_dashboard.html.haml b/app/views/admin/instances/_dashboard.html.haml new file mode 100644 index 0000000000..ef8500103b --- /dev/null +++ b/app/views/admin/instances/_dashboard.html.haml @@ -0,0 +1,66 @@ +-# locals: (instance_domain:, period_end_at:, period_start_at:) +%p + = material_symbol 'info' + = t('admin.instances.totals_time_period_hint_html') + +.dashboard + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + href: admin_accounts_path(origin: 'remote', by_domain: instance_domain), + label: t('admin.instances.dashboard.instance_accounts_measure'), + measure: 'instance_accounts', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_statuses_measure'), + measure: 'instance_statuses', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_media_attachments_measure'), + measure: 'instance_media_attachments', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_follows_measure'), + measure: 'instance_follows', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_followers_measure'), + measure: 'instance_followers', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :counter, + end_at: period_end_at, + href: admin_reports_path(by_target_domain: instance_domain), + label: t('admin.instances.dashboard.instance_reports_measure'), + measure: 'instance_reports', + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :dimension, + dimension: 'instance_accounts', + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_accounts_dimension'), + limit: 8, + params: { domain: instance_domain }, + start_at: period_start_at + .dashboard__item + = react_admin_component :dimension, + dimension: 'instance_languages', + end_at: period_end_at, + label: t('admin.instances.dashboard.instance_languages_dimension'), + limit: 8, + params: { domain: instance_domain }, + start_at: period_start_at diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index c55eb89dc9..dfedbf4cb4 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -8,72 +8,7 @@ = l(@time_period.last) - if @instance.persisted? - %p - = material_symbol 'info' - = t('admin.instances.totals_time_period_hint_html') - - .dashboard - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain), - label: t('admin.instances.dashboard.instance_accounts_measure'), - measure: 'instance_accounts', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_statuses_measure'), - measure: 'instance_statuses', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_media_attachments_measure'), - measure: 'instance_media_attachments', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_follows_measure'), - measure: 'instance_follows', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_followers_measure'), - measure: 'instance_followers', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :counter, - end_at: @time_period.last, - href: admin_reports_path(by_target_domain: @instance.domain), - label: t('admin.instances.dashboard.instance_reports_measure'), - measure: 'instance_reports', - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :dimension, - dimension: 'instance_accounts', - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_accounts_dimension'), - limit: 8, - params: { domain: @instance.domain }, - start_at: @time_period.first - .dashboard__item - = react_admin_component :dimension, - dimension: 'instance_languages', - end_at: @time_period.last, - label: t('admin.instances.dashboard.instance_languages_dimension'), - limit: 8, - params: { domain: @instance.domain }, - start_at: @time_period.first - + = render 'dashboard', instance_domain: @instance.domain, period_end_at: @time_period.last, period_start_at: @time_period.first - else %p = t('admin.instances.unknown_instance') From f811fcb2b2749d1e7a30ee7558ddff9d01e86e70 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 05:08:29 -0400 Subject: [PATCH 037/550] Improve alignment of icons on admin roles list (#32153) --- app/javascript/styles/mastodon/admin.scss | 4 ++++ app/javascript/styles/mastodon/tables.scss | 1 + 2 files changed, 5 insertions(+) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 120bad27ed..da76fa1107 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1054,6 +1054,10 @@ a.name-tag, } } + .icon { + vertical-align: middle; + } + a.announcements-list__item__title { &:hover, &:focus, diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index af8ccf5b38..0cbf5c1d55 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -137,6 +137,7 @@ a.table-action-link { padding: 0 10px; color: $darker-text-color; font-weight: 500; + white-space: nowrap; &:hover { color: $highlight-text-color; From 2829f72d1668ec2cda5f07137f0e69c7abd37274 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:13:29 +0200 Subject: [PATCH 038/550] Update dependency propshaft to v1.1.0 (#32192) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b85d97761d..a06b4407a0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -601,7 +601,7 @@ GEM actionmailer (>= 3) net-smtp premailer (~> 1.7, >= 1.7.9) - propshaft (1.0.1) + propshaft (1.1.0) actionpack (>= 7.0.0) activesupport (>= 7.0.0) rack From 3d943f03fd5264ec5f8c636f4fde18867a4e22c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:13:33 +0200 Subject: [PATCH 039/550] Update dependency webmock to v3.24.0 (#32190) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a06b4407a0..b3c37393f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -698,7 +698,7 @@ GEM responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.3.7) + rexml (3.3.8) rotp (6.3.0) rouge (4.3.0) rpam2 (4.0.2) @@ -884,7 +884,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.23.1) + webmock (3.24.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From b7ddf45924c35dc8d5ecc8f4ab3c611da9d70d94 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:29:38 +0200 Subject: [PATCH 040/550] Update docker/dockerfile Docker tag to v1.10 (#32166) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- streaming/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c7c02d9b46..0452e5d062 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.9 +# syntax=docker/dockerfile:1.10 # This file is designed for production server deployment, not local development work # For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker diff --git a/streaming/Dockerfile b/streaming/Dockerfile index 938f1655d1..bed6b63738 100644 --- a/streaming/Dockerfile +++ b/streaming/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.9 +# syntax=docker/dockerfile:1.10 # Please see https://docs.docker.com/engine/reference/builder for information about # the extended buildx capabilities used in this file. From 7a653001b42d07eb82858801b5c5b00d71fefa12 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 11:30:09 +0200 Subject: [PATCH 041/550] Update dependency haml_lint to v0.59.0 (#32146) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b3c37393f2..cd939c9eba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -301,7 +301,7 @@ GEM activesupport (>= 5.1) haml (>= 4.0.6) railties (>= 5.1) - haml_lint (0.58.0) + haml_lint (0.59.0) haml (>= 5.0) parallel (~> 1.10) rainbow @@ -862,7 +862,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.9.1) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) uri (0.13.1) validate_email (0.1.6) activemodel (>= 3.0) From f251edfc1daffecb30914d1f48e6919710c61b12 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 05:30:21 -0400 Subject: [PATCH 042/550] Add `date_range` view helper (#32187) --- app/helpers/admin/dashboard_helper.rb | 5 +++++ app/views/admin/dashboard/index.html.haml | 4 +--- app/views/admin/instances/show.html.haml | 4 +--- app/views/admin/tags/show.html.haml | 4 +--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/app/helpers/admin/dashboard_helper.rb b/app/helpers/admin/dashboard_helper.rb index 6096ff1381..4de779b79a 100644 --- a/app/helpers/admin/dashboard_helper.rb +++ b/app/helpers/admin/dashboard_helper.rb @@ -18,6 +18,11 @@ module Admin::DashboardHelper end end + def date_range(range) + [l(range.first), l(range.last)] + .join(' - ') + end + def relevant_account_timestamp(account) timestamp, exact = if account.user_current_sign_in_at && account.user_current_sign_in_at < 24.hours.ago [account.user_current_sign_in_at, true] diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 27d8f4790b..2b4d02fa67 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -2,9 +2,7 @@ = t('admin.dashboard.title') - content_for :heading_actions do - = l(@time_period.first) - = ' - ' - = l(@time_period.last) + = date_range(@time_period) - unless @system_checks.empty? .flash-message-stack diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index dfedbf4cb4..812a9c8870 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -3,9 +3,7 @@ - if current_user.can?(:view_dashboard) - content_for :heading_actions do - = l(@time_period.first) - = ' - ' - = l(@time_period.last) + = date_range(@time_period) - if @instance.persisted? = render 'dashboard', instance_domain: @instance.domain, period_end_at: @time_period.last, period_start_at: @time_period.first diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml index 93387843b2..462ca312a0 100644 --- a/app/views/admin/tags/show.html.haml +++ b/app/views/admin/tags/show.html.haml @@ -4,9 +4,7 @@ - content_for :heading_actions do - if current_user.can?(:view_dashboard) .time-period - = l(@time_period.first) - = ' - ' - = l(@time_period.last) + = date_range(@time_period) = link_to t('admin.tags.open'), tag_url(@tag), class: 'button', target: '_blank', rel: 'noopener noreferrer' From 0b89765e9a9154c5f904b602ae5aaa0966880818 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 09:30:54 +0000 Subject: [PATCH 043/550] Update RuboCop (non-major) to v1.22.1 (#31573) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cd939c9eba..334a9e30d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -748,15 +748,15 @@ GEM parser (>= 3.3.1.0) rubocop-capybara (2.21.0) rubocop (~> 1.41) - rubocop-performance (1.21.1) + rubocop-performance (1.22.1) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.25.1) + rubocop-rails (2.26.2) activesupport (>= 4.2.0) rack (>= 1.1) - rubocop (>= 1.33.0, < 2.0) + rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.0.4) + rubocop-rspec (3.0.5) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) From e6cda8388c0eae4dee82437538544563b04e7f24 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 1 Oct 2024 11:38:42 +0200 Subject: [PATCH 044/550] Move OTP secret length to configuration (#32125) --- .../otp_authentication_controller.rb | 2 +- app/models/user.rb | 3 ++- spec/controllers/auth/sessions_controller_spec.rb | 6 +++--- spec/requests/auth/sessions/security_key_options_spec.rb | 2 +- spec/system/oauth_spec.rb | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb b/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb index 0bff01ec27..ca8d46afe4 100644 --- a/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb +++ b/app/controllers/settings/two_factor_authentication/otp_authentication_controller.rb @@ -15,7 +15,7 @@ module Settings end def create - session[:new_otp_secret] = User.generate_otp_secret(32) + session[:new_otp_secret] = User.generate_otp_secret redirect_to new_settings_two_factor_authentication_confirmation_path end diff --git a/app/models/user.rb b/app/models/user.rb index fcb0eced72..c32a575edf 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -71,7 +71,8 @@ class User < ApplicationRecord ACTIVE_DURATION = ENV.fetch('USER_ACTIVE_DAYS', 7).to_i.days.freeze devise :two_factor_authenticatable, - otp_secret_encryption_key: Rails.configuration.x.otp_secret + otp_secret_encryption_key: Rails.configuration.x.otp_secret, + otp_secret_length: 32 include LegacyOtpSecret # Must be after the above `devise` line in order to override the legacy method diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb index 713ea3ff16..4a6956cb09 100644 --- a/spec/controllers/auth/sessions_controller_spec.rb +++ b/spec/controllers/auth/sessions_controller_spec.rb @@ -208,7 +208,7 @@ RSpec.describe Auth::SessionsController do context 'when using two-factor authentication' do context 'with OTP enabled as second factor' do let!(:user) do - Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) + Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret) end let!(:recovery_codes) do @@ -230,7 +230,7 @@ RSpec.describe Auth::SessionsController do context 'when using email and password after an unfinished log-in attempt to a 2FA-protected account' do let!(:other_user) do - Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) + Fabricate(:user, email: 'z@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret) end before do @@ -342,7 +342,7 @@ RSpec.describe Auth::SessionsController do context 'with WebAuthn and OTP enabled as second factor' do let!(:user) do - Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) + Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret) end let!(:webauthn_credential) do diff --git a/spec/requests/auth/sessions/security_key_options_spec.rb b/spec/requests/auth/sessions/security_key_options_spec.rb index 6246e4beb3..e53b9802b4 100644 --- a/spec/requests/auth/sessions/security_key_options_spec.rb +++ b/spec/requests/auth/sessions/security_key_options_spec.rb @@ -6,7 +6,7 @@ require 'webauthn/fake_client' RSpec.describe 'Security Key Options' do describe 'GET /auth/sessions/security_key_options' do let!(:user) do - Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) + Fabricate(:user, email: 'x@y.com', password: 'abcdefgh', otp_required_for_login: true, otp_secret: User.generate_otp_secret) end context 'with WebAuthn and OTP enabled as second factor' do diff --git a/spec/system/oauth_spec.rb b/spec/system/oauth_spec.rb index 0f96a59675..64ac75879e 100644 --- a/spec/system/oauth_spec.rb +++ b/spec/system/oauth_spec.rb @@ -179,7 +179,7 @@ RSpec.describe 'Using OAuth from an external app' do end context 'when the user has set up TOTP' do - let(:user) { Fabricate(:user, email: email, password: password, otp_required_for_login: true, otp_secret: User.generate_otp_secret(32)) } + let(:user) { Fabricate(:user, email: email, password: password, otp_required_for_login: true, otp_secret: User.generate_otp_secret) } it 'when accepting the authorization request' do params = { client_id: client_app.uid, response_type: 'code', redirect_uri: client_app.redirect_uri, scope: 'read' } From e975b55c24f420316b14d5dc02b2eab3fbba4d6e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 05:54:42 -0400 Subject: [PATCH 045/550] Remove `WebfingerHelper` module & move usage inline (#31203) --- app/helpers/webfinger_helper.rb | 7 ------- app/models/remote_follow.rb | 3 +-- app/services/activitypub/fetch_remote_actor_service.rb | 5 ++--- app/services/resolve_account_service.rb | 5 ++--- 4 files changed, 5 insertions(+), 15 deletions(-) delete mode 100644 app/helpers/webfinger_helper.rb diff --git a/app/helpers/webfinger_helper.rb b/app/helpers/webfinger_helper.rb deleted file mode 100644 index 482f4e19ea..0000000000 --- a/app/helpers/webfinger_helper.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -module WebfingerHelper - def webfinger!(uri) - Webfinger.new(uri).perform - end -end diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb index 10715ac97d..fa0586f57e 100644 --- a/app/models/remote_follow.rb +++ b/app/models/remote_follow.rb @@ -3,7 +3,6 @@ class RemoteFollow include ActiveModel::Validations include RoutingHelper - include WebfingerHelper attr_accessor :acct, :addressable_template @@ -66,7 +65,7 @@ class RemoteFollow end def acct_resource - @acct_resource ||= webfinger!("acct:#{acct}") + @acct_resource ||= Webfinger.new("acct:#{acct}").perform rescue Webfinger::Error, HTTP::ConnectionError nil end diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb index 2c372c2ec3..560cf424e1 100644 --- a/app/services/activitypub/fetch_remote_actor_service.rb +++ b/app/services/activitypub/fetch_remote_actor_service.rb @@ -3,7 +3,6 @@ class ActivityPub::FetchRemoteActorService < BaseService include JsonLdHelper include DomainControlHelper - include WebfingerHelper class Error < StandardError; end @@ -45,7 +44,7 @@ class ActivityPub::FetchRemoteActorService < BaseService private def check_webfinger! - webfinger = webfinger!("acct:#{@username}@#{@domain}") + webfinger = Webfinger.new("acct:#{@username}@#{@domain}").perform confirmed_username, confirmed_domain = split_acct(webfinger.subject) if @username.casecmp(confirmed_username).zero? && @domain.casecmp(confirmed_domain).zero? @@ -54,7 +53,7 @@ class ActivityPub::FetchRemoteActorService < BaseService return end - webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") + webfinger = Webfinger.new("acct:#{confirmed_username}@#{confirmed_domain}").perform @username, @domain = split_acct(webfinger.subject) raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{@uri} (stopped at #{@username}@#{@domain})" unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index 8a5863baba..cd96b55c74 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -2,7 +2,6 @@ class ResolveAccountService < BaseService include DomainControlHelper - include WebfingerHelper include Redisable include Lockable @@ -81,7 +80,7 @@ class ResolveAccountService < BaseService end def process_webfinger!(uri) - @webfinger = webfinger!("acct:#{uri}") + @webfinger = Webfinger.new("acct:#{uri}").perform confirmed_username, confirmed_domain = split_acct(@webfinger.subject) if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? @@ -91,7 +90,7 @@ class ResolveAccountService < BaseService end # Account doesn't match, so it may have been redirected - @webfinger = webfinger!("acct:#{confirmed_username}@#{confirmed_domain}") + @webfinger = Webfinger.new("acct:#{confirmed_username}@#{confirmed_domain}").perform @username, @domain = split_acct(@webfinger.subject) raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})" unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? From 454d21ab5ad87def97e712bc53e8e8ef50a5c678 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 1 Oct 2024 11:56:58 +0200 Subject: [PATCH 046/550] Remove OAuth Password Grant Type support (#30960) --- config/initializers/doorkeeper.rb | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index b47e76c08b..de1c75f576 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -9,16 +9,9 @@ Doorkeeper.configure do current_user || redirect_to(new_user_session_url) end - resource_owner_from_credentials do |_routes| - user = User.authenticate_with_ldap(email: request.params[:username], password: request.params[:password]) if Devise.ldap_authentication - user ||= User.authenticate_with_pam(email: request.params[:username], password: request.params[:password]) if Devise.pam_authentication - - if user.nil? - user = User.find_by(email: request.params[:username]) - user = nil unless user&.valid_password?(request.params[:password]) - end - - user unless user&.otp_required_for_login? + # Disable Resource Owner Password Credentials Grant Flow + resource_owner_from_credentials do + nil end # Doorkeeper provides some administrative interfaces for managing OAuth @@ -169,7 +162,7 @@ Doorkeeper.configure do # http://tools.ietf.org/html/rfc6819#section-4.4.3 # - grant_flows %w(authorization_code password client_credentials) + grant_flows %w(authorization_code client_credentials) # Under some circumstances you might want to have applications auto-approved, # so that the user skips the authorization step. From efd3f59627a2786b5601ef6a5c484ec96a777ae5 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 06:02:58 -0400 Subject: [PATCH 047/550] Use `module: :users` in routes/admin section (#30767) --- config/routes/admin.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 50c4c10594..3dba6fa5b8 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -144,8 +144,10 @@ namespace :admin do end resources :users, only: [] do - resource :two_factor_authentication, only: [:destroy], controller: 'users/two_factor_authentications' - resource :role, only: [:show, :update], controller: 'users/roles' + scope module: :users do + resource :two_factor_authentication, only: [:destroy] + resource :role, only: [:show, :update] + end end resources :custom_emojis, only: [:index, :new, :create] do From 8ae381fd042aa7dbcc546c13ccb158ccd8b01ff3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 10:04:12 +0000 Subject: [PATCH 048/550] Update dependency postcss-preset-env to v10.0.5 (#32019) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 38402229bd..8970981d88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1763,9 +1763,9 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.2" +"@csstools/postcss-light-dark-function@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.4" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.1" "@csstools/css-tokenizer": "npm:^3.0.1" @@ -1773,7 +1773,7 @@ __metadata: "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/f8973c435868998e5d6af1fc0c35b27bbf65fa9d0c35f5055c689b8ee2807a16802044e296f7def39a7253ae544fb49559e8273ee22eb4e21845aa980a1bc82b + checksum: 10c0/0176422ad9747953964b1ceff002df1ecb1952ebc481db6192070d68777135b582ea6fd32ae819b9c64c96cb9170bd6907c647c85b48daa4984b7ed3d7f9bccb languageName: node linkType: hard @@ -13921,8 +13921,8 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.3 - resolution: "postcss-preset-env@npm:10.0.3" + version: 10.0.5 + resolution: "postcss-preset-env@npm:10.0.5" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.0" "@csstools/postcss-color-function": "npm:^4.0.2" @@ -13936,7 +13936,7 @@ __metadata: "@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-initial": "npm:^2.0.0" "@csstools/postcss-is-pseudo-class": "npm:^5.0.0" - "@csstools/postcss-light-dark-function": "npm:^2.0.2" + "@csstools/postcss-light-dark-function": "npm:^2.0.4" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" @@ -13987,7 +13987,7 @@ __metadata: postcss-selector-not: "npm:^8.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/da42caa2aab4d825fddfde00ebe2416d338c7b9a6f79a68840297888a8384f85991991c3fa10cf2d359fb230c885375f5cebd7bd63972725cd2a596d218f8b6a + checksum: 10c0/db5eb1175cb26bed3f1a4c47acc67935ffc784520321470520e59de366ac6f91be1e609fe36056af707ed20f7910721287cff0fae416c437dd3e944de13ffd05 languageName: node linkType: hard From 7e35bef97efc5b5c107434d0157326427b79660a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 06:34:05 -0400 Subject: [PATCH 049/550] Remove explicit `put` action in settings forms (#32176) --- app/views/settings/applications/show.html.haml | 2 +- app/views/settings/preferences/appearance/show.html.haml | 2 +- app/views/settings/preferences/notifications/show.html.haml | 2 +- app/views/settings/preferences/other/show.html.haml | 2 +- app/views/settings/privacy/show.html.haml | 2 +- app/views/settings/profiles/show.html.haml | 2 +- app/views/settings/verifications/show.html.haml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/views/settings/applications/show.html.haml b/app/views/settings/applications/show.html.haml index 19630cf49b..099e0d96a8 100644 --- a/app/views/settings/applications/show.html.haml +++ b/app/views/settings/applications/show.html.haml @@ -23,7 +23,7 @@ %hr/ -= simple_form_for @application, url: settings_application_path(@application), method: :put do |form| += simple_form_for @application, url: settings_application_path(@application) do |form| = render form .actions diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index f34ce4a6aa..22f88c7cdd 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -4,7 +4,7 @@ - content_for :heading_actions do = button_tag t('generic.save_changes'), class: 'button', form: 'edit_user' -= simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| += simple_form_for current_user, url: settings_preferences_appearance_path, html: { id: :edit_user } do |f| .fields-row .fields-group.fields-row__column.fields-row__column-6 = f.input :locale, diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index de318dda54..a8e179d019 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -4,7 +4,7 @@ - content_for :heading_actions do = button_tag t('generic.save_changes'), class: 'button', form: 'edit_notification' -= simple_form_for current_user, url: settings_preferences_notifications_path, html: { method: :put, id: 'edit_notification' } do |f| += simple_form_for current_user, url: settings_preferences_notifications_path, html: { id: :edit_notification } do |f| = render 'shared/error_messages', object: current_user %h4= t 'notifications.email_events' diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index e2888f7212..92df8e5213 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -4,7 +4,7 @@ - content_for :heading_actions do = button_tag t('generic.save_changes'), class: 'button', form: 'edit_preferences' -= simple_form_for current_user, url: settings_preferences_other_path, html: { method: :put, id: 'edit_preferences' } do |f| += simple_form_for current_user, url: settings_preferences_other_path, html: { id: :edit_preferences } do |f| = render 'shared/error_messages', object: current_user = f.simple_fields_for :settings, current_user.settings do |ff| diff --git a/app/views/settings/privacy/show.html.haml b/app/views/settings/privacy/show.html.haml index 3c14382587..f7241cfb24 100644 --- a/app/views/settings/privacy/show.html.haml +++ b/app/views/settings/privacy/show.html.haml @@ -5,7 +5,7 @@ %h2= t('settings.profile') = render partial: 'settings/shared/profile_navigation' -= simple_form_for @account, url: settings_privacy_path, html: { method: :put } do |f| += simple_form_for @account, url: settings_privacy_path do |f| = render 'shared/error_messages', object: @account %p.lead= t('privacy.hint_html') diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 8fb2132519..cad5aee669 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -5,7 +5,7 @@ %h2= t('settings.profile') = render partial: 'settings/shared/profile_navigation' -= simple_form_for @account, url: settings_profile_path, html: { method: :put, id: 'edit_profile' } do |f| += simple_form_for @account, url: settings_profile_path, html: { id: :edit_profile } do |f| = render 'shared/error_messages', object: @account %p.lead= t('edit_profile.hint_html') diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index af9556d004..00491866c6 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -31,7 +31,7 @@ = material_symbol 'check', class: 'verified-badge__mark' %span= field.value -= simple_form_for @account, url: settings_verification_path, html: { method: :put, class: 'form-section' } do |f| += simple_form_for @account, url: settings_verification_path, html: { class: 'form-section' } do |f| = render 'shared/error_messages', object: @account %h3= t('author_attribution.title') From 489abb817358bd27417ce464d144bafb5ae191fb Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 06:35:40 -0400 Subject: [PATCH 050/550] Remove explicit `put` action in prefs forms (#32175) From 4b4bf82ea99a5d4f223556e92d97a04dbfa45297 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 06:48:27 -0400 Subject: [PATCH 051/550] Fix nav item active highlight for some paths (#32159) --- config/navigation.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/config/navigation.rb b/config/navigation.rb index c79e96835b..09a7b55b5e 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -25,13 +25,13 @@ SimpleNavigation::Configuration.run do |navigation| n.item :statuses_cleanup, safe_join([material_symbol('history'), t('settings.statuses_cleanup')]), statuses_cleanup_path, if: -> { current_user.functional_or_moved? && !self_destruct } n.item :security, safe_join([material_symbol('lock'), t('settings.account')]), edit_user_registration_path do |s| - s.item :password, safe_join([material_symbol('lock'), t('settings.account_settings')]), edit_user_registration_path, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} + s.item :password, safe_join([material_symbol('lock'), t('settings.account_settings')]), edit_user_registration_path, highlights_on: %r{^/auth|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} s.item :two_factor_authentication, safe_join([material_symbol('safety_check'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_path, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys} s.item :authorized_apps, safe_join([material_symbol('list_alt'), t('settings.authorized_apps')]), oauth_authorized_applications_path, if: -> { !self_destruct } end n.item :data, safe_join([material_symbol('cloud_sync'), t('settings.import_and_export')]), settings_export_path do |s| - s.item :import, safe_join([material_symbol('cloud_upload'), t('settings.import')]), settings_imports_path, if: -> { current_user.functional? && !self_destruct } + s.item :import, safe_join([material_symbol('cloud_upload'), t('settings.import')]), settings_imports_path, highlights_on: %r{/settings/imports}, if: -> { current_user.functional? && !self_destruct } s.item :export, safe_join([material_symbol('cloud_download'), t('settings.export')]), settings_export_path end @@ -51,7 +51,9 @@ SimpleNavigation::Configuration.run do |navigation| s.item :accounts, safe_join([material_symbol('groups'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|admin/account_moderation_notes|/admin/pending_accounts|/admin/users}, if: -> { current_user.can?(:manage_users) } s.item :tags, safe_join([material_symbol('tag'), t('admin.tags.title')]), admin_tags_path, highlights_on: %r{/admin/tags}, if: -> { current_user.can?(:manage_taxonomies) } s.item :invites, safe_join([material_symbol('person_add'), t('admin.invites.title')]), admin_invites_path, if: -> { current_user.can?(:manage_invites) } - s.item :instances, safe_join([material_symbol('cloud'), t('admin.instances.title')]), admin_instances_path(limited: limited_federation_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.can?(:manage_federation) } + s.item :instances, safe_join([material_symbol('cloud'), t('admin.instances.title')]), admin_instances_path(limited: limited_federation_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows|/admin/export_domain_blocks}, if: lambda { + current_user.can?(:manage_federation) + } s.item :email_domain_blocks, safe_join([material_symbol('mail'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_path, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.can?(:manage_blocks) } s.item :ip_blocks, safe_join([material_symbol('hide_source'), t('admin.ip_blocks.title')]), admin_ip_blocks_path, highlights_on: %r{/admin/ip_blocks}, if: -> { current_user.can?(:manage_blocks) } s.item :action_logs, safe_join([material_symbol('list'), t('admin.action_logs.title')]), admin_action_logs_path, if: -> { current_user.can?(:view_audit_log) } From 651846c62227917729492ff9d6fc4161ea8d86c5 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 07:03:13 -0400 Subject: [PATCH 052/550] Only show email domain blocks MX table when some found (#32155) --- app/views/admin/email_domain_blocks/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/email_domain_blocks/new.html.haml b/app/views/admin/email_domain_blocks/new.html.haml index dd4b83ee3f..2dfdca9376 100644 --- a/app/views/admin/email_domain_blocks/new.html.haml +++ b/app/views/admin/email_domain_blocks/new.html.haml @@ -16,7 +16,7 @@ label: I18n.t('admin.email_domain_blocks.allow_registrations_with_approval'), wrapper: :with_label - - if defined?(@resolved_records) + - if defined?(@resolved_records) && @resolved_records.any? %p.hint= t('admin.email_domain_blocks.resolved_dns_records_hint_html') .batch-table From c0095079128d04974a10821e04e046ec27fa6a3f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 07:14:12 -0400 Subject: [PATCH 053/550] Use `button_to` for `method: :post` links on account show page (#32154) --- app/javascript/styles/mastodon/forms.scss | 4 ++++ app/views/admin/accounts/_buttons.html.haml | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 957a283522..4f974ea585 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -19,6 +19,10 @@ code { margin-bottom: 24px; } +form.button_to { + display: inline-block; +} + .fade-out-top { position: relative; overflow: hidden; diff --git a/app/views/admin/accounts/_buttons.html.haml b/app/views/admin/accounts/_buttons.html.haml index 2aaca8962c..eb1a7c3a4f 100644 --- a/app/views/admin/accounts/_buttons.html.haml +++ b/app/views/admin/accounts/_buttons.html.haml @@ -4,8 +4,8 @@ %p.muted-hint= deletion_request.present? ? t('admin.accounts.remote_suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.remote_suspension_irreversible') - else %p.muted-hint= deletion_request.present? ? t('admin.accounts.suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.suspension_irreversible') - = link_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsuspend, account) - = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account) && account.suspension_origin_remote? + = button_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), class: :button if can?(:unsuspend, account) + = button_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), class: :button if can?(:redownload, account) && account.suspension_origin_remote? - if deletion_request.present? && can?(:destroy, account) = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } - else @@ -14,28 +14,28 @@ - if account.local? && account.user_approved? = link_to t('admin.accounts.warn'), new_admin_account_action_path(account.id, type: 'none'), class: 'button' if can?(:warn, account) - if account.user_disabled? - = link_to t('admin.accounts.enable'), enable_admin_account_path(account.id), method: :post, class: 'button' if can?(:enable, account.user) + = button_to t('admin.accounts.enable'), enable_admin_account_path(account.id), class: :button if can?(:enable, account.user) - elsif can?(:disable, account.user) = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button' - if account.sensitized? - = link_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsensitive, account) + = button_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), class: :button if can?(:unsensitive, account) - elsif !account.local? || account.user_approved? = link_to t('admin.accounts.sensitive'), new_admin_account_action_path(account.id, type: 'sensitive'), class: 'button' if can?(:sensitive, account) - if account.silenced? - = link_to t('admin.accounts.undo_silenced'), unsilence_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsilence, account) + = button_to t('admin.accounts.undo_silenced'), unsilence_admin_account_path(account.id), class: :button if can?(:unsilence, account) - elsif !account.local? || account.user_approved? = link_to t('admin.accounts.silence'), new_admin_account_action_path(account.id, type: 'silence'), class: 'button' if can?(:silence, account) - if account.local? - if account.user_pending? - = link_to t('admin.accounts.approve'), approve_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:approve, account.user) - = link_to t('admin.accounts.reject'), reject_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user) + = button_to t('admin.accounts.approve'), approve_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: :button if can?(:approve, account.user) + = button_to t('admin.accounts.reject'), reject_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user) - if !account.user_confirmed? && can?(:confirm, account.user) - = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button' + = button_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), class: :button - if (!account.local? || account.user_approved?) && can?(:suspend, account) = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button' %div - if account.local? - if !account.memorial? && account.user_approved? && can?(:memorialize, account) - = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' + = button_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' - elsif can?(:redownload, account) - = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' + = button_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), class: :button From ec16ed37c39a79ae23d5b4d759f571b0fa66506b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 07:36:25 -0400 Subject: [PATCH 054/550] Extract constants for header and avatar geometry (#32151) --- app/models/concerns/account/avatar.rb | 7 +++++-- app/models/concerns/account/header.rb | 5 ++++- app/views/settings/profiles/show.html.haml | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/models/concerns/account/avatar.rb b/app/models/concerns/account/avatar.rb index 39f599db18..5ca8fa862f 100644 --- a/app/models/concerns/account/avatar.rb +++ b/app/models/concerns/account/avatar.rb @@ -6,10 +6,13 @@ module Account::Avatar IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze LIMIT = 2.megabytes + AVATAR_DIMENSIONS = [400, 400].freeze + AVATAR_GEOMETRY = [AVATAR_DIMENSIONS.first, AVATAR_DIMENSIONS.last].join('x') + class_methods do def avatar_styles(file) - styles = { original: { geometry: '400x400#', file_geometry_parser: FastGeometryParser } } - styles[:static] = { geometry: '400x400#', format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif' + styles = { original: { geometry: "#{AVATAR_GEOMETRY}#", file_geometry_parser: FastGeometryParser } } + styles[:static] = { geometry: "#{AVATAR_GEOMETRY}#", format: 'png', convert_options: '-coalesce', file_geometry_parser: FastGeometryParser } if file.content_type == 'image/gif' styles end diff --git a/app/models/concerns/account/header.rb b/app/models/concerns/account/header.rb index 44ae774e94..2a47097fcf 100644 --- a/app/models/concerns/account/header.rb +++ b/app/models/concerns/account/header.rb @@ -5,7 +5,10 @@ module Account::Header IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze LIMIT = 2.megabytes - MAX_PIXELS = 750_000 # 1500x500px + + HEADER_DIMENSIONS = [1500, 500].freeze + HEADER_GEOMETRY = [HEADER_DIMENSIONS.first, HEADER_DIMENSIONS.last].join('x') + MAX_PIXELS = HEADER_DIMENSIONS.first * HEADER_DIMENSIONS.last class_methods do def header_styles(file) diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index cad5aee669..427a4fa95a 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -34,7 +34,7 @@ .fields-row__column.fields-row__column-6 .fields-group = f.input :avatar, - hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(Account::Avatar::LIMIT)), + hint: t('simple_form.hints.defaults.avatar', dimensions: Account::Avatar::AVATAR_GEOMETRY, size: number_to_human_size(Account::Avatar::LIMIT)), input_html: { accept: Account::Avatar::IMAGE_MIME_TYPES.join(',') }, wrapper: :with_block_label @@ -50,7 +50,7 @@ .fields-row__column.fields-row__column-6 .fields-group = f.input :header, - hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(Account::Header::LIMIT)), + hint: t('simple_form.hints.defaults.header', dimensions: Account::Header::HEADER_GEOMETRY, size: number_to_human_size(Account::Header::LIMIT)), input_html: { accept: Account::Header::IMAGE_MIME_TYPES.join(',') }, wrapper: :with_block_label From 44071fdbae14d12bcd2c64bdc0d4162aca9de486 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 08:45:58 -0400 Subject: [PATCH 055/550] Wrap datetime in `time` element with attrs (#32177) --- app/views/settings/exports/show.html.haml | 3 ++- app/views/settings/imports/index.html.haml | 5 ++++- app/views/severed_relationships/index.html.haml | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index 320bb0c7ce..273c5a4ba6 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -61,7 +61,8 @@ %tbody - @backups.each do |backup| %tr - %td= l backup.created_at + %td + %time.formatted{ datetime: backup.created_at.iso8601, title: l(backup.created_at) }= l backup.created_at - if backup.processed? %td= number_to_human_size backup.dump_file_size %td= table_link_to 'download', t('exports.archive_takeout.download'), download_backup_url(backup) diff --git a/app/views/settings/imports/index.html.haml b/app/views/settings/imports/index.html.haml index 634631b5aa..55421991e1 100644 --- a/app/views/settings/imports/index.html.haml +++ b/app/views/settings/imports/index.html.haml @@ -55,7 +55,10 @@ = t("imports.states.#{import.state}") %td #{import.imported_items} / #{import.total_items} - %td= l(import.created_at) + %td + %time.formatted{ datetime: import.created_at.iso8601, title: l(import.created_at) } + = l(import.created_at) + %td - num_failed = import.processed_items - import.imported_items - if num_failed.positive? diff --git a/app/views/severed_relationships/index.html.haml b/app/views/severed_relationships/index.html.haml index 7c599e9c0e..cc9439b468 100644 --- a/app/views/severed_relationships/index.html.haml +++ b/app/views/severed_relationships/index.html.haml @@ -15,7 +15,9 @@ %tbody - @events.each do |event| %tr - %td= l event.created_at + %td + %time.formatted{ datetime: event.created_at.iso8601, title: l(event.created_at) } + = l(event.created_at) %td= t("severed_relationships.event_type.#{event.type}", target_name: event.target_name) - if event.purged? %td{ rowspan: 2 }= t('severed_relationships.purged') From c5f0da98e43134d5922ea76dc89db292cd3531e8 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 1 Oct 2024 14:49:04 +0200 Subject: [PATCH 056/550] Add detection and download of material_symbol icons in config/navigation.rb (#31366) --- .../material-icons/400-24px/breaking_news-fill.svg | 1 + .../material-icons/400-24px/breaking_news.svg | 2 +- .../400-24px/captive_portal-fill.svg | 1 + .../material-icons/400-24px/captive_portal.svg | 2 +- .../material-icons/400-24px/chat_bubble-fill.svg | 1 + .../material-icons/400-24px/chat_bubble.svg | 2 +- .../material-icons/400-24px/cloud-fill.svg | 1 + app/javascript/material-icons/400-24px/cloud.svg | 2 +- .../400-24px/cloud_download-fill.svg | 1 + .../material-icons/400-24px/cloud_download.svg | 2 +- .../material-icons/400-24px/cloud_sync-fill.svg | 1 + .../material-icons/400-24px/cloud_sync.svg | 2 +- .../material-icons/400-24px/cloud_upload-fill.svg | 1 + .../material-icons/400-24px/cloud_upload.svg | 2 +- .../material-icons/400-24px/code-fill.svg | 1 + app/javascript/material-icons/400-24px/code.svg | 2 +- .../material-icons/400-24px/computer-fill.svg | 1 + .../material-icons/400-24px/computer.svg | 2 +- .../material-icons/400-24px/contact_mail-fill.svg | 1 + .../material-icons/400-24px/contact_mail.svg | 2 +- .../material-icons/400-24px/database-fill.svg | 1 + .../material-icons/400-24px/database.svg | 2 +- .../material-icons/400-24px/diamond-fill.svg | 1 + app/javascript/material-icons/400-24px/diamond.svg | 2 +- .../material-icons/400-24px/filter_alt-fill.svg | 1 + .../material-icons/400-24px/filter_alt.svg | 2 +- .../material-icons/400-24px/groups-fill.svg | 1 + app/javascript/material-icons/400-24px/groups.svg | 2 +- .../material-icons/400-24px/hide_source-fill.svg | 1 + .../material-icons/400-24px/hide_source.svg | 2 +- .../material-icons/400-24px/inbox-fill.svg | 1 + app/javascript/material-icons/400-24px/inbox.svg | 2 +- .../material-icons/400-24px/list-fill.svg | 1 + app/javascript/material-icons/400-24px/list.svg | 2 +- .../material-icons/400-24px/mail-fill.svg | 1 + app/javascript/material-icons/400-24px/mail.svg | 2 +- .../material-icons/400-24px/mood-fill.svg | 1 + app/javascript/material-icons/400-24px/mood.svg | 2 +- .../material-icons/400-24px/report-fill.svg | 1 + app/javascript/material-icons/400-24px/report.svg | 2 +- .../material-icons/400-24px/safety_check-fill.svg | 1 + .../material-icons/400-24px/safety_check.svg | 2 +- .../material-icons/400-24px/speed-fill.svg | 1 + app/javascript/material-icons/400-24px/speed.svg | 2 +- .../material-icons/400-24px/trending_up-fill.svg | 1 + .../material-icons/400-24px/trending_up.svg | 2 +- lib/tasks/icons.rake | 14 ++++++++++++++ 47 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 app/javascript/material-icons/400-24px/breaking_news-fill.svg create mode 100644 app/javascript/material-icons/400-24px/captive_portal-fill.svg create mode 100644 app/javascript/material-icons/400-24px/chat_bubble-fill.svg create mode 100644 app/javascript/material-icons/400-24px/cloud-fill.svg create mode 100644 app/javascript/material-icons/400-24px/cloud_download-fill.svg create mode 100644 app/javascript/material-icons/400-24px/cloud_sync-fill.svg create mode 100644 app/javascript/material-icons/400-24px/cloud_upload-fill.svg create mode 100644 app/javascript/material-icons/400-24px/code-fill.svg create mode 100644 app/javascript/material-icons/400-24px/computer-fill.svg create mode 100644 app/javascript/material-icons/400-24px/contact_mail-fill.svg create mode 100644 app/javascript/material-icons/400-24px/database-fill.svg create mode 100644 app/javascript/material-icons/400-24px/diamond-fill.svg create mode 100644 app/javascript/material-icons/400-24px/filter_alt-fill.svg create mode 100644 app/javascript/material-icons/400-24px/groups-fill.svg create mode 100644 app/javascript/material-icons/400-24px/hide_source-fill.svg create mode 100644 app/javascript/material-icons/400-24px/inbox-fill.svg create mode 100644 app/javascript/material-icons/400-24px/list-fill.svg create mode 100644 app/javascript/material-icons/400-24px/mail-fill.svg create mode 100644 app/javascript/material-icons/400-24px/mood-fill.svg create mode 100644 app/javascript/material-icons/400-24px/report-fill.svg create mode 100644 app/javascript/material-icons/400-24px/safety_check-fill.svg create mode 100644 app/javascript/material-icons/400-24px/speed-fill.svg create mode 100644 app/javascript/material-icons/400-24px/trending_up-fill.svg diff --git a/app/javascript/material-icons/400-24px/breaking_news-fill.svg b/app/javascript/material-icons/400-24px/breaking_news-fill.svg new file mode 100644 index 0000000000..633ca48d57 --- /dev/null +++ b/app/javascript/material-icons/400-24px/breaking_news-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/breaking_news.svg b/app/javascript/material-icons/400-24px/breaking_news.svg index d7dd0c12f4..c043f11a8b 100644 --- a/app/javascript/material-icons/400-24px/breaking_news.svg +++ b/app/javascript/material-icons/400-24px/breaking_news.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/captive_portal-fill.svg b/app/javascript/material-icons/400-24px/captive_portal-fill.svg new file mode 100644 index 0000000000..5c0b26fb64 --- /dev/null +++ b/app/javascript/material-icons/400-24px/captive_portal-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/captive_portal.svg b/app/javascript/material-icons/400-24px/captive_portal.svg index 1f0f09c773..5c0b26fb64 100644 --- a/app/javascript/material-icons/400-24px/captive_portal.svg +++ b/app/javascript/material-icons/400-24px/captive_portal.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chat_bubble-fill.svg b/app/javascript/material-icons/400-24px/chat_bubble-fill.svg new file mode 100644 index 0000000000..b47338a6c9 --- /dev/null +++ b/app/javascript/material-icons/400-24px/chat_bubble-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/chat_bubble.svg b/app/javascript/material-icons/400-24px/chat_bubble.svg index 7d210b4608..05d976d242 100644 --- a/app/javascript/material-icons/400-24px/chat_bubble.svg +++ b/app/javascript/material-icons/400-24px/chat_bubble.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud-fill.svg b/app/javascript/material-icons/400-24px/cloud-fill.svg new file mode 100644 index 0000000000..d049a74c01 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cloud-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud.svg b/app/javascript/material-icons/400-24px/cloud.svg index 75b4e957fc..a36bddda91 100644 --- a/app/javascript/material-icons/400-24px/cloud.svg +++ b/app/javascript/material-icons/400-24px/cloud.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_download-fill.svg b/app/javascript/material-icons/400-24px/cloud_download-fill.svg new file mode 100644 index 0000000000..c55d49f7e5 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cloud_download-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_download.svg b/app/javascript/material-icons/400-24px/cloud_download.svg index 2fc3717ff9..8e9314800c 100644 --- a/app/javascript/material-icons/400-24px/cloud_download.svg +++ b/app/javascript/material-icons/400-24px/cloud_download.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_sync-fill.svg b/app/javascript/material-icons/400-24px/cloud_sync-fill.svg new file mode 100644 index 0000000000..0c648e19e4 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cloud_sync-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_sync.svg b/app/javascript/material-icons/400-24px/cloud_sync.svg index dbf6adc000..461796e323 100644 --- a/app/javascript/material-icons/400-24px/cloud_sync.svg +++ b/app/javascript/material-icons/400-24px/cloud_sync.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_upload-fill.svg b/app/javascript/material-icons/400-24px/cloud_upload-fill.svg new file mode 100644 index 0000000000..66a7bb22d3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/cloud_upload-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/cloud_upload.svg b/app/javascript/material-icons/400-24px/cloud_upload.svg index 5e1a4b9aef..94968cb947 100644 --- a/app/javascript/material-icons/400-24px/cloud_upload.svg +++ b/app/javascript/material-icons/400-24px/cloud_upload.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/code-fill.svg b/app/javascript/material-icons/400-24px/code-fill.svg new file mode 100644 index 0000000000..8ef5c55cd4 --- /dev/null +++ b/app/javascript/material-icons/400-24px/code-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/code.svg b/app/javascript/material-icons/400-24px/code.svg index 5bdc338f7f..8ef5c55cd4 100644 --- a/app/javascript/material-icons/400-24px/code.svg +++ b/app/javascript/material-icons/400-24px/code.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/computer-fill.svg b/app/javascript/material-icons/400-24px/computer-fill.svg new file mode 100644 index 0000000000..91295d6846 --- /dev/null +++ b/app/javascript/material-icons/400-24px/computer-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/computer.svg b/app/javascript/material-icons/400-24px/computer.svg index 8c5bd9110e..b8af5d4644 100644 --- a/app/javascript/material-icons/400-24px/computer.svg +++ b/app/javascript/material-icons/400-24px/computer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/contact_mail-fill.svg b/app/javascript/material-icons/400-24px/contact_mail-fill.svg new file mode 100644 index 0000000000..c42c799955 --- /dev/null +++ b/app/javascript/material-icons/400-24px/contact_mail-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/contact_mail.svg b/app/javascript/material-icons/400-24px/contact_mail.svg index 1ae26cc4d1..4547c48ec5 100644 --- a/app/javascript/material-icons/400-24px/contact_mail.svg +++ b/app/javascript/material-icons/400-24px/contact_mail.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/database-fill.svg b/app/javascript/material-icons/400-24px/database-fill.svg new file mode 100644 index 0000000000..3520f69614 --- /dev/null +++ b/app/javascript/material-icons/400-24px/database-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/database.svg b/app/javascript/material-icons/400-24px/database.svg index 54ca2f4e56..a3bc2bfbc2 100644 --- a/app/javascript/material-icons/400-24px/database.svg +++ b/app/javascript/material-icons/400-24px/database.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/diamond-fill.svg b/app/javascript/material-icons/400-24px/diamond-fill.svg new file mode 100644 index 0000000000..474968ad6f --- /dev/null +++ b/app/javascript/material-icons/400-24px/diamond-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/diamond.svg b/app/javascript/material-icons/400-24px/diamond.svg index 26f4814b44..b604492fa8 100644 --- a/app/javascript/material-icons/400-24px/diamond.svg +++ b/app/javascript/material-icons/400-24px/diamond.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/filter_alt-fill.svg b/app/javascript/material-icons/400-24px/filter_alt-fill.svg new file mode 100644 index 0000000000..ec1d90bba6 --- /dev/null +++ b/app/javascript/material-icons/400-24px/filter_alt-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/filter_alt.svg b/app/javascript/material-icons/400-24px/filter_alt.svg index 0294cf1da5..e4af9efd5d 100644 --- a/app/javascript/material-icons/400-24px/filter_alt.svg +++ b/app/javascript/material-icons/400-24px/filter_alt.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/groups-fill.svg b/app/javascript/material-icons/400-24px/groups-fill.svg new file mode 100644 index 0000000000..754eb0946c --- /dev/null +++ b/app/javascript/material-icons/400-24px/groups-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/groups.svg b/app/javascript/material-icons/400-24px/groups.svg index 0e795eb301..998ff03729 100644 --- a/app/javascript/material-icons/400-24px/groups.svg +++ b/app/javascript/material-icons/400-24px/groups.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/hide_source-fill.svg b/app/javascript/material-icons/400-24px/hide_source-fill.svg new file mode 100644 index 0000000000..959631bc1a --- /dev/null +++ b/app/javascript/material-icons/400-24px/hide_source-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/hide_source.svg b/app/javascript/material-icons/400-24px/hide_source.svg index d103ed770a..09633cef8c 100644 --- a/app/javascript/material-icons/400-24px/hide_source.svg +++ b/app/javascript/material-icons/400-24px/hide_source.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/inbox-fill.svg b/app/javascript/material-icons/400-24px/inbox-fill.svg new file mode 100644 index 0000000000..15ae2d8f3c --- /dev/null +++ b/app/javascript/material-icons/400-24px/inbox-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/inbox.svg b/app/javascript/material-icons/400-24px/inbox.svg index 427817958c..32c727e810 100644 --- a/app/javascript/material-icons/400-24px/inbox.svg +++ b/app/javascript/material-icons/400-24px/inbox.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/list-fill.svg b/app/javascript/material-icons/400-24px/list-fill.svg new file mode 100644 index 0000000000..c9cbe35eb5 --- /dev/null +++ b/app/javascript/material-icons/400-24px/list-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/list.svg b/app/javascript/material-icons/400-24px/list.svg index 457a820ab1..c9cbe35eb5 100644 --- a/app/javascript/material-icons/400-24px/list.svg +++ b/app/javascript/material-icons/400-24px/list.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/mail-fill.svg b/app/javascript/material-icons/400-24px/mail-fill.svg new file mode 100644 index 0000000000..5e7e4a2fb2 --- /dev/null +++ b/app/javascript/material-icons/400-24px/mail-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/mail.svg b/app/javascript/material-icons/400-24px/mail.svg index a92ea7b198..15e1d12d4e 100644 --- a/app/javascript/material-icons/400-24px/mail.svg +++ b/app/javascript/material-icons/400-24px/mail.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/mood-fill.svg b/app/javascript/material-icons/400-24px/mood-fill.svg new file mode 100644 index 0000000000..9480d0fb92 --- /dev/null +++ b/app/javascript/material-icons/400-24px/mood-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/mood.svg b/app/javascript/material-icons/400-24px/mood.svg index 27b3534244..46cafa7680 100644 --- a/app/javascript/material-icons/400-24px/mood.svg +++ b/app/javascript/material-icons/400-24px/mood.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/report-fill.svg b/app/javascript/material-icons/400-24px/report-fill.svg new file mode 100644 index 0000000000..50c638869d --- /dev/null +++ b/app/javascript/material-icons/400-24px/report-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/report.svg b/app/javascript/material-icons/400-24px/report.svg index f281f0e1fa..b08b5a1c98 100644 --- a/app/javascript/material-icons/400-24px/report.svg +++ b/app/javascript/material-icons/400-24px/report.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/safety_check-fill.svg b/app/javascript/material-icons/400-24px/safety_check-fill.svg new file mode 100644 index 0000000000..b38091a8ec --- /dev/null +++ b/app/javascript/material-icons/400-24px/safety_check-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/safety_check.svg b/app/javascript/material-icons/400-24px/safety_check.svg index f4eab46fb7..87bdba21fe 100644 --- a/app/javascript/material-icons/400-24px/safety_check.svg +++ b/app/javascript/material-icons/400-24px/safety_check.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/speed-fill.svg b/app/javascript/material-icons/400-24px/speed-fill.svg new file mode 100644 index 0000000000..dca22ac521 --- /dev/null +++ b/app/javascript/material-icons/400-24px/speed-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/speed.svg b/app/javascript/material-icons/400-24px/speed.svg index ceb855c684..0837877f42 100644 --- a/app/javascript/material-icons/400-24px/speed.svg +++ b/app/javascript/material-icons/400-24px/speed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/trending_up-fill.svg b/app/javascript/material-icons/400-24px/trending_up-fill.svg new file mode 100644 index 0000000000..cd0e368964 --- /dev/null +++ b/app/javascript/material-icons/400-24px/trending_up-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/trending_up.svg b/app/javascript/material-icons/400-24px/trending_up.svg index 06f9ba2063..cd0e368964 100644 --- a/app/javascript/material-icons/400-24px/trending_up.svg +++ b/app/javascript/material-icons/400-24px/trending_up.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/lib/tasks/icons.rake b/lib/tasks/icons.rake index 96e0a14315..9a05cf3499 100644 --- a/lib/tasks/icons.rake +++ b/lib/tasks/icons.rake @@ -38,6 +38,20 @@ def find_used_icons end end + Rails.root.join('config', 'navigation.rb').open('r') do |file| + pattern = /material_symbol\('(?[^']*)'\)/ + file.each_line do |line| + match = pattern.match(line) + next if match.blank? + + # navigation.rb only uses 400x24 icons, per material_symbol() in + # app/helpers/application_helper.rb + icons_by_weight_and_size[400] ||= {} + icons_by_weight_and_size[400][24] ||= Set.new + icons_by_weight_and_size[400][24] << match['icon'] + end + end + icons_by_weight_and_size end From 7b92cf3b4771b42ff3895f247c006679e9a11ff6 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Oct 2024 14:52:13 +0200 Subject: [PATCH 057/550] Fix unneeded requests to blocked domains when receiving relayed signed activities from them (#31161) --- app/services/activitypub/process_collection_service.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index 4f049a5ae9..cadc7d2d10 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -2,6 +2,7 @@ class ActivityPub::ProcessCollectionService < BaseService include JsonLdHelper + include DomainControlHelper def call(body, actor, **options) @account = actor @@ -69,6 +70,9 @@ class ActivityPub::ProcessCollectionService < BaseService end def verify_account! + return unless @json['signature'].is_a?(Hash) + return if domain_not_allowed?(@json['signature']['creator']) + @options[:relayed_through_actor] = @account @account = ActivityPub::LinkedDataSignature.new(@json).verify_actor! @account = nil unless @account.is_a?(Account) From f73787a4b84eb23ccad9d425b52aa09e1c26e18c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 09:38:29 -0400 Subject: [PATCH 058/550] Fix broken border on applications list (#32147) --- app/views/settings/applications/index.html.haml | 4 +++- app/views/settings/applications/show.html.haml | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/settings/applications/index.html.haml b/app/views/settings/applications/index.html.haml index 80eaed5c39..e3011947a6 100644 --- a/app/views/settings/applications/index.html.haml +++ b/app/views/settings/applications/index.html.haml @@ -18,7 +18,9 @@ - @applications.each do |application| %tr %td= link_to application.name, settings_application_path(application) - %th= application.scopes + %th + - application.scopes.to_s.split.each do |scope| + = tag.samp(scope, class: 'information-badge', title: t("doorkeeper.scopes.#{scope}")) %td = table_link_to 'close', t('doorkeeper.applications.index.delete'), settings_application_path(application), method: :delete, data: { confirm: t('doorkeeper.applications.confirmations.destroy') } diff --git a/app/views/settings/applications/show.html.haml b/app/views/settings/applications/show.html.haml index 099e0d96a8..bfde27daa9 100644 --- a/app/views/settings/applications/show.html.haml +++ b/app/views/settings/applications/show.html.haml @@ -15,10 +15,11 @@ %td %code= @application.secret %tr - %th{ rowspan: 2 }= t('applications.your_token') + %th= t('applications.your_token') %td %code= current_user.token_for_app(@application).token %tr + %th %td= table_link_to 'refresh', t('applications.regenerate_token'), regenerate_settings_application_path(@application), method: :post %hr/ From f10d61bf86559bc1464b2e7972b8980ae789908d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 09:41:25 -0400 Subject: [PATCH 059/550] Adjust spacing on setting sub-nav items when below mobile size (#32137) --- app/javascript/styles/mastodon/admin.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index da76fa1107..0712a0d3f4 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -226,6 +226,10 @@ $content-width: 840px; gap: 5px; white-space: nowrap; + @media screen and (max-width: $mobile-breakpoint) { + flex: 1 0 50%; + } + &:hover, &:focus, &:active { From df98cf71e30063ece4022ae4a8a73c21dfea5f74 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 09:50:20 -0400 Subject: [PATCH 060/550] Avoid repeated icon stack in settings sidebar (#32201) --- config/navigation.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/navigation.rb b/config/navigation.rb index 09a7b55b5e..7ec7ecb7e7 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -24,7 +24,7 @@ SimpleNavigation::Configuration.run do |navigation| n.item :filters, safe_join([material_symbol('filter_alt'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}, if: -> { current_user.functional? && !self_destruct } n.item :statuses_cleanup, safe_join([material_symbol('history'), t('settings.statuses_cleanup')]), statuses_cleanup_path, if: -> { current_user.functional_or_moved? && !self_destruct } - n.item :security, safe_join([material_symbol('lock'), t('settings.account')]), edit_user_registration_path do |s| + n.item :security, safe_join([material_symbol('account_circle'), t('settings.account')]), edit_user_registration_path do |s| s.item :password, safe_join([material_symbol('lock'), t('settings.account_settings')]), edit_user_registration_path, highlights_on: %r{^/auth|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} s.item :two_factor_authentication, safe_join([material_symbol('safety_check'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_path, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys} s.item :authorized_apps, safe_join([material_symbol('list_alt'), t('settings.authorized_apps')]), oauth_authorized_applications_path, if: -> { !self_destruct } From 65508bb0c07bab4760576a9c59cacb43cf7d1301 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 1 Oct 2024 22:54:28 +0900 Subject: [PATCH 061/550] Show timestamp when the user deletes their account on admin dashboard (#25640) Co-authored-by: Claire --- app/helpers/admin/dashboard_helper.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/helpers/admin/dashboard_helper.rb b/app/helpers/admin/dashboard_helper.rb index 4de779b79a..f87fdad708 100644 --- a/app/helpers/admin/dashboard_helper.rb +++ b/app/helpers/admin/dashboard_helper.rb @@ -30,6 +30,8 @@ module Admin::DashboardHelper [account.user_current_sign_in_at, false] elsif account.user_pending? [account.user_created_at, true] + elsif account.suspended_at.present? && account.local? && account.user.nil? + [account.suspended_at, true] elsif account.last_status_at.present? [account.last_status_at, true] else From 4cae309f6a1835dcff6b85ac31b046092e2985a1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 1 Oct 2024 09:56:43 -0400 Subject: [PATCH 062/550] Fix `Rails/CreateTableWithTimestamps` cop (#30836) --- db/migrate/.rubocop.yml | 5 +++++ db/migrate/20170508230434_create_conversation_mutes.rb | 2 +- db/migrate/20170823162448_create_status_pins.rb | 2 +- db/migrate/20171116161857_create_list_accounts.rb | 2 +- db/migrate/20180929222014_create_account_conversations.rb | 2 +- db/migrate/20181007025445_create_pghero_space_stats.rb | 2 +- db/migrate/20190103124649_create_scheduled_statuses.rb | 2 +- db/migrate/20220824233535_create_status_trends.rb | 2 +- db/migrate/20221006061337_create_preview_card_trends.rb | 2 +- 9 files changed, 13 insertions(+), 8 deletions(-) diff --git a/db/migrate/.rubocop.yml b/db/migrate/.rubocop.yml index 4e23800dd1..6f8b6cc60d 100644 --- a/db/migrate/.rubocop.yml +++ b/db/migrate/.rubocop.yml @@ -2,3 +2,8 @@ inherit_from: ../../.rubocop.yml Naming/VariableNumber: CheckSymbols: false + +# Enabled here as workaround for https://docs.rubocop.org/rubocop/configuration.html#path-relativity +Rails/CreateTableWithTimestamps: + Include: + - '*.rb' diff --git a/db/migrate/20170508230434_create_conversation_mutes.rb b/db/migrate/20170508230434_create_conversation_mutes.rb index 01122c4516..4beba9dfa3 100644 --- a/db/migrate/20170508230434_create_conversation_mutes.rb +++ b/db/migrate/20170508230434_create_conversation_mutes.rb @@ -2,7 +2,7 @@ class CreateConversationMutes < ActiveRecord::Migration[5.0] def change - create_table :conversation_mutes do |t| + create_table :conversation_mutes do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.integer :account_id, null: false t.bigint :conversation_id, null: false end diff --git a/db/migrate/20170823162448_create_status_pins.rb b/db/migrate/20170823162448_create_status_pins.rb index c8d3fab3a5..2cf3a85ca9 100644 --- a/db/migrate/20170823162448_create_status_pins.rb +++ b/db/migrate/20170823162448_create_status_pins.rb @@ -2,7 +2,7 @@ class CreateStatusPins < ActiveRecord::Migration[5.1] def change - create_table :status_pins do |t| + create_table :status_pins do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.belongs_to :account, foreign_key: { on_delete: :cascade }, null: false t.belongs_to :status, foreign_key: { on_delete: :cascade }, null: false end diff --git a/db/migrate/20171116161857_create_list_accounts.rb b/db/migrate/20171116161857_create_list_accounts.rb index ff9ab3faad..b0371e4c88 100644 --- a/db/migrate/20171116161857_create_list_accounts.rb +++ b/db/migrate/20171116161857_create_list_accounts.rb @@ -2,7 +2,7 @@ class CreateListAccounts < ActiveRecord::Migration[5.2] def change - create_table :list_accounts do |t| + create_table :list_accounts do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.belongs_to :list, foreign_key: { on_delete: :cascade }, null: false t.belongs_to :account, foreign_key: { on_delete: :cascade }, null: false t.belongs_to :follow, foreign_key: { on_delete: :cascade }, null: false diff --git a/db/migrate/20180929222014_create_account_conversations.rb b/db/migrate/20180929222014_create_account_conversations.rb index 9386b86e7c..4e85e68d47 100644 --- a/db/migrate/20180929222014_create_account_conversations.rb +++ b/db/migrate/20180929222014_create_account_conversations.rb @@ -2,7 +2,7 @@ class CreateAccountConversations < ActiveRecord::Migration[5.2] def change - create_table :account_conversations do |t| + create_table :account_conversations do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.belongs_to :account, foreign_key: { on_delete: :cascade } t.belongs_to :conversation, foreign_key: { on_delete: :cascade } t.bigint :participant_account_ids, array: true, null: false, default: [] diff --git a/db/migrate/20181007025445_create_pghero_space_stats.rb b/db/migrate/20181007025445_create_pghero_space_stats.rb index ddaf4aef31..696b53d8d7 100644 --- a/db/migrate/20181007025445_create_pghero_space_stats.rb +++ b/db/migrate/20181007025445_create_pghero_space_stats.rb @@ -2,7 +2,7 @@ class CreatePgheroSpaceStats < ActiveRecord::Migration[5.2] def change - create_table :pghero_space_stats do |t| + create_table :pghero_space_stats do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.text :database t.text :schema t.text :relation diff --git a/db/migrate/20190103124649_create_scheduled_statuses.rb b/db/migrate/20190103124649_create_scheduled_statuses.rb index a66546187e..02b4916be8 100644 --- a/db/migrate/20190103124649_create_scheduled_statuses.rb +++ b/db/migrate/20190103124649_create_scheduled_statuses.rb @@ -2,7 +2,7 @@ class CreateScheduledStatuses < ActiveRecord::Migration[5.2] def change - create_table :scheduled_statuses do |t| + create_table :scheduled_statuses do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.belongs_to :account, foreign_key: { on_delete: :cascade } t.datetime :scheduled_at, index: true t.jsonb :params diff --git a/db/migrate/20220824233535_create_status_trends.rb b/db/migrate/20220824233535_create_status_trends.rb index 52dcbf8f38..e68e5b7c11 100644 --- a/db/migrate/20220824233535_create_status_trends.rb +++ b/db/migrate/20220824233535_create_status_trends.rb @@ -2,7 +2,7 @@ class CreateStatusTrends < ActiveRecord::Migration[6.1] def change - create_table :status_trends do |t| + create_table :status_trends do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.references :status, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } t.references :account, null: false, foreign_key: { on_delete: :cascade } t.float :score, null: false, default: 0 diff --git a/db/migrate/20221006061337_create_preview_card_trends.rb b/db/migrate/20221006061337_create_preview_card_trends.rb index 934a06e24d..266f644023 100644 --- a/db/migrate/20221006061337_create_preview_card_trends.rb +++ b/db/migrate/20221006061337_create_preview_card_trends.rb @@ -2,7 +2,7 @@ class CreatePreviewCardTrends < ActiveRecord::Migration[6.1] def change - create_table :preview_card_trends do |t| + create_table :preview_card_trends do |t| # rubocop:disable Rails/CreateTableWithTimestamps t.references :preview_card, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } t.float :score, null: false, default: 0 t.integer :rank, null: false, default: 0 From a2c4ba20010a1fabca65ff6353e1b0fbea3b5f6d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:10:56 +0200 Subject: [PATCH 063/550] Update dependency rubocop-rspec to v3.1.0 (#32202) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 334a9e30d1..c623f92e7d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -756,7 +756,7 @@ GEM rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.0.5) + rubocop-rspec (3.1.0) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) From f91f077985eccf9933346052ce4ee532215099c6 Mon Sep 17 00:00:00 2001 From: Nick Schonning Date: Tue, 1 Oct 2024 12:26:30 -0400 Subject: [PATCH 064/550] Enable ESLlint no-case-declarations (#30768) --- .eslintrc.js | 1 - app/javascript/mastodon/actions/streaming.js | 3 ++- app/javascript/mastodon/reducers/compose.js | 3 ++- app/javascript/mastodon/reducers/notifications.js | 3 ++- app/javascript/mastodon/reducers/search.js | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index b6e4253e61..93ff1d7b59 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -64,7 +64,6 @@ module.exports = defineConfig({ 'indent': ['error', 2], 'jsx-quotes': ['error', 'prefer-single'], 'semi': ['error', 'always'], - 'no-case-declarations': 'off', 'no-catch-shadow': 'error', 'no-console': [ 'warn', diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index b6fc31fae8..30e643363a 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -106,12 +106,13 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti dispatch(processNewNotificationForGroups(notificationJSON)); break; } - case 'notifications_merged': + case 'notifications_merged': { const state = getState(); if (state.notifications.top || !state.notifications.mounted) dispatch(expandNotifications({ forceLoad: true, maxId: undefined })); dispatch(refreshStaleNotificationGroups()); break; + } case 'conversation': // @ts-expect-error dispatch(updateConversations(JSON.parse(data.payload))); diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index 9f66c09631..e77f2ac6e6 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -407,7 +407,7 @@ export default function compose(state = initialState, action) { return item; })); - case INIT_MEDIA_EDIT_MODAL: + case INIT_MEDIA_EDIT_MODAL: { const media = state.get('media_attachments').find(item => item.get('id') === action.id); return state.set('media_modal', ImmutableMap({ id: action.id, @@ -416,6 +416,7 @@ export default function compose(state = initialState, action) { focusY: media.getIn(['meta', 'focus', 'y'], 0), dirty: false, })); + } case COMPOSE_CHANGE_MEDIA_DESCRIPTION: return state.setIn(['media_modal', 'description'], action.description).setIn(['media_modal', 'dirty'], true); case COMPOSE_CHANGE_MEDIA_FOCUS: diff --git a/app/javascript/mastodon/reducers/notifications.js b/app/javascript/mastodon/reducers/notifications.js index 622f5e8e88..c99a619b52 100644 --- a/app/javascript/mastodon/reducers/notifications.js +++ b/app/javascript/mastodon/reducers/notifications.js @@ -298,9 +298,10 @@ export default function notifications(state = initialState, action) { return action.payload.timeline === 'home' ? state.update(action.payload.usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items) : state; - case NOTIFICATIONS_MARK_AS_READ: + case NOTIFICATIONS_MARK_AS_READ: { const lastNotification = state.get('items').find(item => item !== null); return lastNotification ? recountUnread(state, lastNotification.get('id')) : state; + } case NOTIFICATIONS_SET_BROWSER_SUPPORT: return state.set('browserSupport', action.value); case NOTIFICATIONS_SET_BROWSER_PERMISSION: diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js index 7828d49eee..7de1c65c07 100644 --- a/app/javascript/mastodon/reducers/search.js +++ b/app/javascript/mastodon/reducers/search.js @@ -72,9 +72,10 @@ export default function search(state = initialState, action) { }); case SEARCH_EXPAND_REQUEST: return state.set('type', action.searchType).set('isLoading', true); - case SEARCH_EXPAND_SUCCESS: + case SEARCH_EXPAND_SUCCESS: { const results = action.searchType === 'hashtags' ? ImmutableOrderedSet(fromJS(action.results.hashtags)) : action.results[action.searchType].map(item => item.id); return state.updateIn(['results', action.searchType], list => list.union(results)).set('isLoading', false); + } case SEARCH_HISTORY_UPDATE: return state.set('recent', ImmutableOrderedSet(fromJS(action.recent))); default: From 66b2bc1c841d6ad59fe4961ff9f0075fa3e52d50 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Wed, 2 Oct 2024 17:08:02 +0900 Subject: [PATCH 065/550] Ignore error if mentioned account was not processable (#29215) Co-authored-by: Claire --- app/lib/activitypub/activity/create.rb | 10 ++++++ app/workers/mention_resolve_worker.rb | 37 +++++++++++++++++++ spec/lib/activitypub/activity/create_spec.rb | 37 +++++++++++++++++++ spec/workers/mention_resolve_worker_spec.rb | 38 ++++++++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 app/workers/mention_resolve_worker.rb create mode 100644 spec/workers/mention_resolve_worker_spec.rb diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 09a8caf1fc..928803cd64 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -42,6 +42,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity def process_status @tags = [] @mentions = [] + @unresolved_mentions = [] @silenced_account_ids = [] @params = {} @@ -55,6 +56,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end resolve_thread(@status) + resolve_unresolved_mentions(@status) fetch_replies(@status) distribute forward_for_reply @@ -197,6 +199,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return if account.nil? @mentions << Mention.new(account: account, silent: false) + rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + @unresolved_mentions << tag['href'] end def process_emoji(tag) @@ -301,6 +305,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity ThreadResolveWorker.perform_async(status.id, in_reply_to_uri, { 'request_id' => @options[:request_id] }) end + def resolve_unresolved_mentions(status) + @unresolved_mentions.uniq.each do |uri| + MentionResolveWorker.perform_in(rand(30...600).seconds, status.id, uri, { 'request_id' => @options[:request_id] }) + end + end + def fetch_replies(status) collection = @object['replies'] return if collection.blank? diff --git a/app/workers/mention_resolve_worker.rb b/app/workers/mention_resolve_worker.rb new file mode 100644 index 0000000000..72dcd9633f --- /dev/null +++ b/app/workers/mention_resolve_worker.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +class MentionResolveWorker + include Sidekiq::Worker + include ExponentialBackoff + include JsonLdHelper + + sidekiq_options queue: 'pull', retry: 7 + + def perform(status_id, uri, options = {}) + status = Status.find_by(id: status_id) + return if status.nil? + + account = account_from_uri(uri) + account = ActivityPub::FetchRemoteAccountService.new.call(uri, request_id: options[:request_id]) if account.nil? + + return if account.nil? + + status.mentions.create!(account: account, silent: false) + rescue ActiveRecord::RecordNotFound + # Do nothing + rescue Mastodon::UnexpectedResponseError => e + response = e.response + + if response_error_unsalvageable?(response) + # Give up + else + raise e + end + end + + private + + def account_from_uri(uri) + ActivityPub::TagManager.instance.uri_to_resource(uri, Account) + end +end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 0986ae1715..bdc8fd9d51 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -63,6 +63,24 @@ RSpec.describe ActivityPub::Activity::Create do } end + let(:invalid_mention_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), 'post2'].join('/'), + type: 'Note', + to: [ + 'https://www.w3.org/ns/activitystreams#Public', + ActivityPub::TagManager.instance.uri_for(follower), + ], + content: '@bob lorem ipsum', + published: 1.hour.ago.utc.iso8601, + updated: 1.hour.ago.utc.iso8601, + tag: { + type: 'Mention', + href: 'http://notexisting.dontexistingtld/actor', + }, + } + end + def activity_for_object(json) { '@context': 'https://www.w3.org/ns/activitystreams', @@ -117,6 +135,25 @@ RSpec.describe ActivityPub::Activity::Create do # Creates two notifications expect(Notification.count).to eq 2 end + + it 'ignores unprocessable mention', :aggregate_failures do + stub_request(:get, invalid_mention_json[:tag][:href]).to_raise(HTTP::ConnectionError) + # When receiving the post that contains an invalid mention… + described_class.new(activity_for_object(invalid_mention_json), sender, delivery: true).perform + + # NOTE: Refering explicitly to the workers is a bit awkward + DistributionWorker.drain + FeedInsertWorker.drain + + # …it creates a status + status = Status.find_by(uri: invalid_mention_json[:id]) + + # Check the process did not crash + expect(status.nil?).to be false + + # It has queued a mention resolve job + expect(MentionResolveWorker).to have_enqueued_sidekiq_job(status.id, invalid_mention_json[:tag][:href], anything) + end end describe '#perform' do diff --git a/spec/workers/mention_resolve_worker_spec.rb b/spec/workers/mention_resolve_worker_spec.rb new file mode 100644 index 0000000000..5e23876b4a --- /dev/null +++ b/spec/workers/mention_resolve_worker_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe MentionResolveWorker do + let(:status_id) { -42 } + let(:uri) { 'https://example.com/users/unknown' } + + describe '#perform' do + subject { described_class.new.perform(status_id, uri, {}) } + + context 'with a non-existent status' do + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'with a valid user' do + let(:status) { Fabricate(:status) } + let(:status_id) { status.id } + + let(:service_double) { instance_double(ActivityPub::FetchRemoteAccountService) } + + before do + allow(ActivityPub::FetchRemoteAccountService).to receive(:new).and_return(service_double) + + allow(service_double).to receive(:call).with(uri, anything) { Fabricate(:account, domain: 'example.com', uri: uri) } + end + + it 'resolves the account and adds a new mention', :aggregate_failures do + expect { subject } + .to change { status.reload.mentions }.from([]).to(a_collection_including(having_attributes(account: having_attributes(uri: uri), silent: false))) + + expect(service_double).to have_received(:call).once + end + end + end +end From ea72d5ec3a2eda181baa6846a67aec9b8b4b0142 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 09:05:57 +0000 Subject: [PATCH 066/550] New Crowdin Translations (automated) (#32214) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/cy.json | 7 +++ app/javascript/mastodon/locales/eo.json | 64 ++++++++++++------------ app/javascript/mastodon/locales/gl.json | 2 +- app/javascript/mastodon/locales/he.json | 8 +++ app/javascript/mastodon/locales/hu.json | 4 +- app/javascript/mastodon/locales/ja.json | 1 + app/javascript/mastodon/locales/kab.json | 2 + app/javascript/mastodon/locales/no.json | 2 + app/javascript/mastodon/locales/tr.json | 5 ++ config/locales/cy.yml | 4 ++ config/locales/doorkeeper.gl.yml | 2 +- config/locales/he.yml | 4 ++ config/locales/nn.yml | 6 +-- 13 files changed, 72 insertions(+), 39 deletions(-) diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f2d0708882..52dc6a49e2 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.", "alert.unexpected.title": "Wps!", + "alt_text_badge.title": "Testun Amgen", "announcement.announcement": "Cyhoeddiad", "attachments_list.unprocessed": "(heb eu prosesu)", "audio.hide": "Cuddio sain", @@ -221,6 +222,7 @@ "domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.", "domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.", "domain_block_modal.title": "Blocio parth?", + "domain_block_modal.you_will_lose_relationships": "Byddwch yn colli'r holl ddilynwyr a phobl rydych chi'n eu dilyn o'r gweinydd hwn.", "domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.", "domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.", "domain_pill.activitypub_like_language": "Mae ActivityPub fel yr iaith y mae Mastodon yn ei siarad â rhwydweithiau cymdeithasol eraill.", @@ -849,6 +851,11 @@ "upload_error.poll": "Nid oes modd llwytho ffeiliau â phleidleisiau.", "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", + "upload_form.drag_and_drop.instructions": "I godi atodiad cyfryngau, pwyswch y space neu enter. Wrth lusgo, defnyddiwch y bysellau saeth i symud yr atodiad cyfryngau i unrhyw gyfeiriad penodol. Pwyswch space neu enter eto i ollwng yr atodiad cyfryngau yn ei safle newydd, neu pwyswch escape i ddiddymu.", + "upload_form.drag_and_drop.on_drag_cancel": "Cafodd llusgo ei ddiddymu. Cafodd atodiad cyfryngau {item} ei ollwng.", + "upload_form.drag_and_drop.on_drag_end": "Cafodd atodiad cyfryngau {item} ei ollwng.", + "upload_form.drag_and_drop.on_drag_over": "Symudwyd atodiad cyfryngau {item}.", + "upload_form.drag_and_drop.on_drag_start": "Atodiad cyfryngau godwyd {item}.", "upload_form.edit": "Golygu", "upload_form.thumbnail": "Newid llun bach", "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 4268c38535..35c2a5c744 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -22,10 +22,10 @@ "account.cancel_follow_request": "Nuligi peton por sekvado", "account.copy": "Kopii ligilon al profilo", "account.direct": "Private mencii @{name}", - "account.disable_notifications": "Ne plu sciigi min, kiam @{name} mesaĝas", + "account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas", "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", - "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas", + "account.enable_notifications": "Sciigu min kiam @{name} afiŝos", "account.endorse": "Rekomendi ĉe via profilo", "account.featured_tags.last_status_at": "Lasta afîŝo je {date}", "account.featured_tags.last_status_never": "Neniu afiŝo", @@ -49,14 +49,14 @@ "account.mention": "Mencii @{name}", "account.moved_to": "{name} indikis, ke ria nova konto estas nun:", "account.mute": "Silentigi @{name}", - "account.mute_notifications_short": "Silentigu Sciigojn", + "account.mute_notifications_short": "Silentigu sciigojn", "account.mute_short": "Silentigu", "account.muted": "Silentigita", "account.mutual": "Reciproka", "account.no_bio": "Neniu priskribo estas provizita.", "account.open_original_page": "Malfermi la originalan paĝon", "account.posts": "Afiŝoj", - "account.posts_with_replies": "Mesaĝoj kaj respondoj", + "account.posts_with_replies": "Afiŝoj kaj respondoj", "account.report": "Raporti @{name}", "account.requested": "Atendo de aprobo. Klaku por nuligi la peton por sekvado", "account.requested_follow": "{name} petis sekvi vin", @@ -69,7 +69,7 @@ "account.unendorse": "Ne plu rekomendi ĉe la profilo", "account.unfollow": "Ĉesi sekvi", "account.unmute": "Ne plu silentigi @{name}", - "account.unmute_notifications_short": "Malsilentigu Sciigojn", + "account.unmute_notifications_short": "Malsilentigu sciigojn", "account.unmute_short": "Ne plu silentigi", "account_note.placeholder": "Alklaku por aldoni noton", "admin.dashboard.daily_retention": "Uzantoretenprocento lau tag post registro", @@ -81,7 +81,7 @@ "admin.impact_report.instance_followers": "Sekvantojn niaj uzantoj perdus", "admin.impact_report.instance_follows": "Sekvantojn ties uzantoj perdus", "admin.impact_report.title": "Influa reporto", - "alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.", + "alert.rate_limited.message": "Bonvolu reprovi poste {retry_time, time, medium}.", "alert.rate_limited.title": "Mesaĝkvante limigita", "alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.title": "Aj!", @@ -163,7 +163,7 @@ "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.poll.type": "Stilo", "compose_form.publish": "Afiŝo", - "compose_form.publish_form": "Afiŝi", + "compose_form.publish_form": "Nova afiŝo", "compose_form.reply": "Respondi", "compose_form.save_changes": "Ĝisdatigi", "compose_form.spoiler.marked": "Forigi la averton de enhavo", @@ -173,7 +173,7 @@ "confirmations.block.confirm": "Bloki", "confirmations.delete.confirm": "Forigi", "confirmations.delete.message": "Ĉu vi certas, ke vi volas forigi ĉi tiun afiŝon?", - "confirmations.delete.title": "Ĉu forigi Afiŝon?", + "confirmations.delete.title": "Ĉu forigi afiŝon?", "confirmations.delete_list.confirm": "Forigi", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", "confirmations.delete_list.title": "Ĉu forigi liston?", @@ -213,9 +213,9 @@ "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.", "dismissable_banner.dismiss": "Eksigi", "dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.", - "dismissable_banner.explore_statuses": "Ĉi tioj estas afiŝoj de socia reto kiu populariĝas hodiau.", + "dismissable_banner.explore_statuses": "Ĉi tiuj estas afiŝoj de la tuta socia reto, kiuj populariĝas hodiaŭ. Pli novaj afiŝoj kun pli da diskonigoj kaj plej ŝatataj estas rangigitaj pli alte.", "dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.", - "dismissable_banner.public_timeline": "Ĉi tioj estas plej lastaj publikaj afiŝoj de personoj ĉe socia reto kiu personoj ĉe {domain} sekvas.", + "dismissable_banner.public_timeline": "Ĉi tiuj estas la plej lastatempaj publikaj afiŝoj de homoj en la socia reto, kiujn homoj sur {domain} sekvas.", "domain_block_modal.block": "Bloki servilon", "domain_block_modal.block_account_instead": "Bloki @{name} anstataŭe", "domain_block_modal.they_can_interact_with_old_posts": "Homoj de ĉi tiu servilo povas interagi kun viaj malnovaj afiŝoj.", @@ -265,8 +265,8 @@ "empty_column.direct": "Vi ankoraŭ ne havas privatan mencion. Kiam vi sendos aŭ ricevos iun, tiu aperos ĉi tie.", "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.", "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!", - "empty_column.favourited_statuses": "Vi ankoraŭ ne havas stelumitan afiŝon.", - "empty_column.favourites": "Ankoraŭ neniu stelumis tiun afiŝon.", + "empty_column.favourited_statuses": "Vi ankoraŭ ne havas plej ŝatatajn afiŝojn. Kiam vi ŝatatas unu, ĝi aperos ĉi tie.", + "empty_column.favourites": "Neniu ankoraŭ ŝatis ĉi tiun afiŝon. Kiam iu ŝatos ĝin, ili aperos ĉi tie.", "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.", "empty_column.followed_tags": "Vi ankoraŭ ne sekvas iujn kradvortojn. Kiam vi faras, ili aperos ĉi tie.", "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", @@ -296,7 +296,7 @@ "filter_modal.added.review_and_configure": "Por kontroli kaj pli modifi ĉi tiu filtrilkategorio, iru al la {settings_link}.", "filter_modal.added.review_and_configure_title": "Filtrilopcioj", "filter_modal.added.settings_link": "opciopaĝo", - "filter_modal.added.short_explanation": "Ĉi tiu mesaĝo aldonitas al la filtrilkategorio: {title}.", + "filter_modal.added.short_explanation": "Ĉi tiu afiŝo aldonitas al la filtrilkategorio: {title}.", "filter_modal.added.title": "Filtrilo aldonita!", "filter_modal.select_filter.context_mismatch": "ne kongruas la kuntekston", "filter_modal.select_filter.expired": "eksvalidiĝinta", @@ -304,7 +304,7 @@ "filter_modal.select_filter.search": "Serĉi aŭ krei", "filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan", "filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon", - "filter_modal.title.status": "Filtri mesaĝon", + "filter_modal.title.status": "Filtri afiŝon", "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”", "filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas", "filtered_notifications_banner.title": "Filtritaj sciigoj", @@ -351,7 +351,7 @@ "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno", "hashtag.counter_by_accounts": "{count, plural,one {{counter} partoprenanto} other {{counter} partoprenantoj}}", "hashtag.counter_by_uses": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}}", - "hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiau", + "hashtag.counter_by_uses_today": "{count, plural,one {{counter} afiŝo} other {{counter} afiŝoj}} hodiaŭ", "hashtag.follow": "Sekvi la kradvorton", "hashtag.unfollow": "Ne plu sekvi la kradvorton", "hashtags.and_other": "…kaj {count, plural,other {# pli}}", @@ -382,9 +382,9 @@ "ignore_notifications_modal.not_following_title": "Ĉu ignori sciigojn de homoj, kiujn vi ne sekvas?", "ignore_notifications_modal.private_mentions_title": "Ĉu ignori sciigojn de nepetitaj privataj mencioj?", "interaction_modal.description.favourite": "Per konto ĉe Mastodon, vi povas stelumiti ĉi tiun afiŝon por sciigi la afiŝanton ke vi aprezigas ŝin kaj konservas por la estonteco.", - "interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povos sekvi {name} por vidi ties mesaĝojn en via hejmo.", + "interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povas sekvi {name} por ricevi iliajn afiŝojn en via hejma fluo.", "interaction_modal.description.reblog": "Kun konto ĉe Mastodon, vi povas diskonigi ĉi tiun afiŝon, por ke viaj propraj sekvantoj vidu ĝin.", - "interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu mesaĝo.", + "interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu afiŝo.", "interaction_modal.login.action": "Prenu min hejmen", "interaction_modal.login.prompt": "Domajno de via hejma servilo, ekz. mastodon.social", "interaction_modal.no_account_yet": "Ĉu ne estas ĉe Mastodon?", @@ -402,12 +402,12 @@ "keyboard_shortcuts.back": "reveni", "keyboard_shortcuts.blocked": "Malfermi la liston de blokitaj uzantoj", "keyboard_shortcuts.boost": "Diskonigi la mesaĝon", - "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj", + "keyboard_shortcuts.column": "Fokusi kolumnon", "keyboard_shortcuts.compose": "enfokusigi la tekstujon", "keyboard_shortcuts.description": "Priskribo", "keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj", "keyboard_shortcuts.down": "iri suben en la listo", - "keyboard_shortcuts.enter": "malfermi mesaĝon", + "keyboard_shortcuts.enter": "Malfermi afiŝon", "keyboard_shortcuts.favourite": "Stelumi afiŝon", "keyboard_shortcuts.favourites": "Malfermi la liston de la stelumoj", "keyboard_shortcuts.federated": "Malfermi la frataran templinion", @@ -421,16 +421,16 @@ "keyboard_shortcuts.my_profile": "malfermi vian profilon", "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", "keyboard_shortcuts.open_media": "Malfermi plurmedion", - "keyboard_shortcuts.pinned": "malfermi la liston de alpinglitaj mesaĝoj", + "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston", "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", - "keyboard_shortcuts.reply": "respondi", + "keyboard_shortcuts.reply": "Respondu al afiŝo", "keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado", "keyboard_shortcuts.search": "enfokusigi la serĉilon", "keyboard_shortcuts.spoilers": "Montri/kaŝi la kampon de averto de enhavo (\"CW\")", "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ la averto de enhavo (\"CW\")", "keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi plurmedion", - "keyboard_shortcuts.toot": "Krei novan mesaĝon", + "keyboard_shortcuts.toot": "Komencu novan afiŝon", "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", "keyboard_shortcuts.up": "iri supren en la listo", "lightbox.close": "Fermi", @@ -476,9 +476,9 @@ "navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.bookmarks": "Legosignoj", "navigation_bar.community_timeline": "Loka templinio", - "navigation_bar.compose": "Skribi novan mesaĝon", + "navigation_bar.compose": "Redakti novan afiŝon", "navigation_bar.direct": "Privataj mencioj", - "navigation_bar.discover": "Esplori", + "navigation_bar.discover": "Malkovri", "navigation_bar.domain_blocks": "Blokitaj domajnoj", "navigation_bar.explore": "Esplori", "navigation_bar.favourites": "Stelumoj", @@ -487,12 +487,12 @@ "navigation_bar.followed_tags": "Sekvataj kradvortoj", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", "navigation_bar.lists": "Listoj", - "navigation_bar.logout": "Adiaŭi", + "navigation_bar.logout": "Elsaluti", "navigation_bar.moderation": "Modereco", "navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.", "navigation_bar.personal": "Persone", - "navigation_bar.pins": "Alpinglitaj mesaĝoj", + "navigation_bar.pins": "Alpinglitaj afiŝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.search": "Serĉi", @@ -572,7 +572,7 @@ "notifications.column_settings.reblog": "Diskonigoj:", "notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.sound": "Eligi sonon", - "notifications.column_settings.status": "Novaj mesaĝoj:", + "notifications.column_settings.status": "Novaj afiŝoj:", "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn", "notifications.column_settings.update": "Redaktoj:", @@ -660,7 +660,7 @@ "poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}", "poll_button.add_poll": "Aldoni balotenketon", "poll_button.remove_poll": "Forigi balotenketon", - "privacy.change": "Agordi mesaĝan privatecon", + "privacy.change": "Ŝanĝu afiŝan privatecon", "privacy.direct.long": "Ĉiuj menciitaj en la afiŝo", "privacy.direct.short": "Specifaj homoj", "privacy.private.long": "Nur viaj sekvantoj", @@ -775,13 +775,13 @@ "sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi", "status.admin_account": "Malfermi fasadon de moderigado por @{name}", "status.admin_domain": "Malfermu moderigan interfacon por {domain}", - "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", + "status.admin_status": "Malfermi ĉi tiun afiŝon en la kontrola interfaco", "status.block": "Bloki @{name}", "status.bookmark": "Aldoni al la legosignoj", "status.cancel_reblog_private": "Ne plu diskonigi", "status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi", "status.continued_thread": "Daŭrigis fadenon", - "status.copy": "Kopii la ligilon al la mesaĝo", + "status.copy": "Kopii la ligilon al la afiŝo", "status.delete": "Forigi", "status.detailed_status": "Detala konversacia vido", "status.direct": "Private mencii @{name}", @@ -803,9 +803,9 @@ "status.more": "Pli", "status.mute": "Silentigi @{name}", "status.mute_conversation": "Silentigi konversacion", - "status.open": "Disvolvi la mesaĝon", + "status.open": "Pligrandigu ĉi tiun afiŝon", "status.pin": "Alpingli al la profilo", - "status.pinned": "Alpinglita mesaĝo", + "status.pinned": "Alpinglita afiŝo", "status.read_more": "Legi pli", "status.reblog": "Diskonigi", "status.reblog_private": "Diskonigi kun la sama videbleco", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3bc9e1ee59..2a31bfa463 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -193,7 +193,7 @@ "confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?", "confirmations.reply.title": "Editar a publicación?", "confirmations.unfollow.confirm": "Deixar de seguir", - "confirmations.unfollow.message": "Desexas deixar de seguir a {name}?", + "confirmations.unfollow.message": "Tes certeza de querer deixar de seguir a {name}?", "confirmations.unfollow.title": "Deixar de seguir á usuaria?", "content_warning.hide": "Agochar publicación", "content_warning.show": "Mostrar igualmente", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 4ce0d41620..16f558e543 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "חלה הגבלה על קצב התעבורה", "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.", "alert.unexpected.title": "אופס!", + "alt_text_badge.title": "כיתוב חלופי", "announcement.announcement": "הכרזה", "attachments_list.unprocessed": "(לא מעובד)", "audio.hide": "השתק", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "משתמש משרת זה לא יכול לעקוב אחריך.", "domain_block_modal.they_wont_know": "הם לא ידעו כי נחסמו.", "domain_block_modal.title": "לחסום שרת?", + "domain_block_modal.you_will_lose_num_followers": "{followersCount, plural,one {יאבד לך עוקב אחד}other {יאבדו לך {followersCountDisplay} עוקבים}} {followingCount, plural,one {ונעקב אחד}other {ו־{followingCountDisplay} נעקבים}}.", + "domain_block_modal.you_will_lose_relationships": "יאבדו לך כל העוקבים והנעקבים משרת זה.", "domain_block_modal.you_wont_see_posts": "לא תוכלו לראות הודעות ממשתמשים על שרת זה.", "domain_pill.activitypub_lets_connect": "מאפשר לך להתחבר ולהתרועע עם אחרים לא רק במסטודון, אלא גם ביישומים חברתיים שונים אחרים.", "domain_pill.activitypub_like_language": "אקטיביטיפאב היא למעשה השפה בה מסטודון מדבר עם רשתות חברתיות אחרות.", @@ -849,6 +852,11 @@ "upload_error.poll": "לא ניתן להעלות קובץ עם סקר.", "upload_form.audio_description": "תאר/י עבור לקויי שמיעה", "upload_form.description": "תיאור לכבדי ראיה", + "upload_form.drag_and_drop.instructions": "כדי לבחור קובץ מוצמד, יש ללחוץ על מקש רווח או אנטר. בעת הגרירה, השתמשו במקשי החיצים כדי להזיז את הקובץ המוצמד בכל כיוון. לחצו רווח או אנטר בשנית כדי לעזוב את הקובץ במקומו החדש, או לחצו אסקייפ לביטול.", + "upload_form.drag_and_drop.on_drag_cancel": "הגרירה בוטלה. קובץ המדיה {item} נעזב.", + "upload_form.drag_and_drop.on_drag_end": "קובץ המדיה {item} נעזב.", + "upload_form.drag_and_drop.on_drag_over": "קובץ המדיה {item} הוזז.", + "upload_form.drag_and_drop.on_drag_start": "קובץ המדיה {item} נבחר.", "upload_form.edit": "עריכה", "upload_form.thumbnail": "שנה/י תמונה ממוזערת", "upload_form.video_description": "תאר/י עבור לקויי שמיעה ולקויי ראייה", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 8baf584b78..f9f403177c 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -852,8 +852,8 @@ "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_form.audio_description": "Leírás siket vagy hallássérült emberek számára", "upload_form.description": "Leírás vak vagy gyengénlátó emberek számára", - "upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomjon Szóközt vagy Entert. Húzás közben használja a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomja meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomja meg az Esc gombot.", - "upload_form.drag_and_drop.on_drag_cancel": "Az áthúzást megszakította. A(z) {item} médiamelléklet el lett dobva.", + "upload_form.drag_and_drop.instructions": "Egy médiamelléklet kiválasztásához nyomj Szóközt vagy Entert. Húzás közben használd a nyílgombokat a médiamelléklet adott irányba történő mozgatásához. A médiamelléklet új pozícióba helyezéséhez nyomd meg a Szóközt vagy az Entert, vagy a megszakításhoz nyomd meg az Esc gombot.", + "upload_form.drag_and_drop.on_drag_cancel": "Az áthúzás megszakítva. A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_end": "A(z) {item} médiamelléklet el lett dobva.", "upload_form.drag_and_drop.on_drag_over": "A(z) {item} médiamelléklet át lett helyezve.", "upload_form.drag_and_drop.on_drag_start": "A(z) {item} médiamelléklet fel lett véve.", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index f5e7cc9c04..46444863ac 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "制限に達しました", "alert.unexpected.message": "不明なエラーが発生しました。", "alert.unexpected.title": "エラー!", + "alt_text_badge.title": "代替テキスト", "announcement.announcement": "お知らせ", "attachments_list.unprocessed": "(未処理)", "audio.hide": "音声を閉じる", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ff06c9c464..07236bb73e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -585,6 +585,7 @@ "status.bookmark": "Creḍ", "status.cancel_reblog_private": "Sefsex beṭṭu", "status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen", + "status.continued_thread": "Asentel yettkemmil", "status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.delete": "Kkes", "status.direct": "Bder-d @{name} weḥd-s", @@ -616,6 +617,7 @@ "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.", "status.redraft": "Kkes tɛiwdeḍ tira", "status.remove_bookmark": "Kkes tacreḍt", + "status.replied_in_thread": "Y·t·erra-d deg usentel", "status.replied_to": "Y·terra-yas i {name}", "status.reply": "Err", "status.replyAll": "Err i lxiḍ", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 8cd3387eaf..1dd5df32b8 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -502,6 +502,8 @@ "notification.reblog": "{name} fremhevet ditt innlegg", "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte et innlegg", + "notification_requests.minimize_banner": "Minimer banneret for filtrerte varsler", + "notification_requests.view": "Vis varsler", "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", "notifications.column_settings.admin.report": "Nye rapporter:", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 6feae5d137..2d9c7321d0 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -852,6 +852,11 @@ "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.", "upload_form.audio_description": "İşitme kaybı olan kişiler için yazı ekleyiniz", "upload_form.description": "Görme engelliler için açıklama", + "upload_form.drag_and_drop.instructions": "Bir medya eklentisini taşımak için, boşluk veya enter tuşuna basın. Sürükleme sırasında medya eklentisini herhangi bir yöne hareket ettirmek için ok tuşlarını kullanın. Medya eklentisini yeni konumuna bırakmak için tekrar boşluk veya enter tuşuna basın veya işlemi iptal etmek için escape tuşuna basın.", + "upload_form.drag_and_drop.on_drag_cancel": "Sürükleme iptal edildi. Medya eklentisi {item} bırakıldı.", + "upload_form.drag_and_drop.on_drag_end": "Medya eklentisi {item} bırakıldı.", + "upload_form.drag_and_drop.on_drag_over": "Medya eklentisi {item} hareket ettirildi.", + "upload_form.drag_and_drop.on_drag_start": "Medya eklentisi {item} tutuldu.", "upload_form.edit": "Düzenle", "upload_form.thumbnail": "Küçük resmi değiştir", "upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için açıklama ekleyiniz", diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 1ae6aa08ff..a70d08ed8e 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -931,6 +931,9 @@ cy: message_html: Nid ydych wedi diffinio unrhyw reolau gweinydd. sidekiq_process_check: message_html: Does dim proses Sidekiq yn rhedeg ar gyfer y ciw(iau) %{value}. Adolygwch eich ffurfweddiad Sidekiq + software_version_check: + action: Gweld y diweddariadau sydd ar gael + message_html: Mae diweddariad Mastodon ar gael. software_version_critical_check: action: Gweld y diweddariadau sydd ar gael message_html: Mae diweddariad hanfodol Mastodon ar gael, diweddarwch cyn gynted â phosibl. @@ -1796,6 +1799,7 @@ cy: delete: Dileu cyfrif development: Datblygu edit_profile: Golygu proffil + export: Allforio featured_tags: Prif hashnodau import: Mewnforio import_and_export: Mewnforio ac allforio diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml index adee6bd3d3..5d7148b84b 100644 --- a/config/locales/doorkeeper.gl.yml +++ b/config/locales/doorkeeper.gl.yml @@ -69,7 +69,7 @@ gl: buttons: revoke: Retirar autorización confirmations: - revoke: Estás segura? + revoke: Tes certeza? index: authorized_at: Autorizada o %{date} description_html: Estas aplicacións poden acceder á túa conta usando a API. Se ves aplicacións que non recoñeces, ou hai comportamentos non consentidos dalgunha delas, podes revogar o acceso. diff --git a/config/locales/he.yml b/config/locales/he.yml index c7af22660f..846b0d14af 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -903,6 +903,9 @@ he: message_html: לא הוגדרו שום כללי שרת. sidekiq_process_check: message_html: שום הליכי Sidekiq לא רצים עבור %{value} תור(ות). בחנו בבקשה את הגדרות Sidekiq + software_version_check: + action: ראו עדכונים זמינים + message_html: עדכון מסטודון זמין כעת. software_version_critical_check: action: ראו עדכונים זמינים message_html: יצא עדכון קריטי למסטודון, נא לעדכן את תוכנת מסטודון בהקדם האפשרי. @@ -1744,6 +1747,7 @@ he: delete: מחיקת חשבון development: פיתוח edit_profile: עריכת פרופיל + export: ייצוא featured_tags: תגיות נבחרות import: יבוא import_and_export: יבוא ויצוא diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 8f6afc2426..ca5e34ee55 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1,7 +1,7 @@ --- nn: about: - about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig idéane dine med Mastodon!' + about_mastodon_html: 'Framtidas sosiale nettverk: Ingen annonsar, ingen verksemder som overvaker deg, etisk design og desentralisering! Eig dataene dine med Mastodon!' contact_missing: Ikkje sett contact_unavailable: I/T hosted_on: "%{domain} er vert for Mastodon" @@ -39,7 +39,7 @@ nn: avatar: Bilete by_domain: Domene change_email: - changed_msg: Konto-e-posten er endra! + changed_msg: E-post for konto er endra! current_email: Noverande e-post label: Byt e-post new_email: Ny e-post @@ -62,7 +62,7 @@ nn: disable: Slå av disable_sign_in_token_auth: Slå av e-post-token-autentisering disable_two_factor_authentication: Slå av 2FA - disabled: Slege av + disabled: Inaktiv display_name: Synleg namn domain: Domene edit: Rediger From f0716368e642c4c3d21d2327009ddd59d27cec8b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 05:07:52 -0400 Subject: [PATCH 067/550] Update simplecov-html to version 0.13.1 (#32205) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c623f92e7d..3950a30d62 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -815,7 +815,7 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.12.3) + simplecov-html (0.13.1) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) stackprof (0.2.26) From 33d3ca7cf19b5ae6e90163092d63d4a49fe45d4b Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Wed, 2 Oct 2024 11:23:44 +0200 Subject: [PATCH 068/550] Support /.well-known/host-meta.json (#32206) --- .../well_known/host_meta_controller.rb | 18 ++++++++- config/routes.rb | 2 +- spec/requests/well_known/host_meta_spec.rb | 40 ++++++++++++++----- spec/routing/well_known_routes_spec.rb | 9 ++++- 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/app/controllers/well_known/host_meta_controller.rb b/app/controllers/well_known/host_meta_controller.rb index 201da9fbc3..6dee587baf 100644 --- a/app/controllers/well_known/host_meta_controller.rb +++ b/app/controllers/well_known/host_meta_controller.rb @@ -7,7 +7,23 @@ module WellKnown def show @webfinger_template = "#{webfinger_url}?resource={uri}" expires_in 3.days, public: true - render content_type: 'application/xrd+xml', formats: [:xml] + + respond_to do |format| + format.any do + render content_type: 'application/xrd+xml', formats: [:xml] + end + + format.json do + render json: { + links: [ + { + rel: 'lrdd', + template: @webfinger_template, + }, + ], + } + end + end end end end diff --git a/config/routes.rb b/config/routes.rb index 890102955c..83170fba0f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -67,7 +67,7 @@ Rails.application.routes.draw do scope path: '.well-known' do scope module: :well_known do get 'oauth-authorization-server', to: 'oauth_metadata#show', as: :oauth_metadata, defaults: { format: 'json' } - get 'host-meta', to: 'host_meta#show', as: :host_meta, defaults: { format: 'xml' } + get 'host-meta', to: 'host_meta#show', as: :host_meta get 'nodeinfo', to: 'node_info#index', as: :nodeinfo, defaults: { format: 'json' } get 'webfinger', to: 'webfinger#show', as: :webfinger end diff --git a/spec/requests/well_known/host_meta_spec.rb b/spec/requests/well_known/host_meta_spec.rb index 09f17baa89..726911dda1 100644 --- a/spec/requests/well_known/host_meta_spec.rb +++ b/spec/requests/well_known/host_meta_spec.rb @@ -9,19 +9,39 @@ RSpec.describe 'The /.well-known/host-meta request' do expect(response) .to have_http_status(200) .and have_attributes( - media_type: 'application/xrd+xml', - body: host_meta_xml_template + media_type: 'application/xrd+xml' + ) + + doc = Nokogiri::XML(response.parsed_body) + expect(doc.at_xpath('/xrd:XRD/xrd:Link[@rel="lrdd"]/@template', 'xrd' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0').value) + .to eq 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}' + end + + it 'returns http success with valid JSON response with .json extension' do + get '/.well-known/host-meta.json' + + expect(response) + .to have_http_status(200) + .and have_attributes( + media_type: 'application/json' + ) + + expect(response.parsed_body) + .to include( + links: [ + 'rel' => 'lrdd', + 'template' => 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}', + ] ) end - private + it 'returns http success with valid JSON response with Accept header' do + get '/.well-known/host-meta', headers: { 'Accept' => 'application/json' } - def host_meta_xml_template - <<~XML - - - - - XML + expect(response) + .to have_http_status(200) + .and have_attributes( + media_type: 'application/json' + ) end end diff --git a/spec/routing/well_known_routes_spec.rb b/spec/routing/well_known_routes_spec.rb index 6578e939ae..84081059bb 100644 --- a/spec/routing/well_known_routes_spec.rb +++ b/spec/routing/well_known_routes_spec.rb @@ -4,9 +4,14 @@ require 'rails_helper' RSpec.describe 'Well Known routes' do describe 'the host-meta route' do - it 'routes to correct place with xml format' do + it 'routes to correct place' do expect(get('/.well-known/host-meta')) - .to route_to('well_known/host_meta#show', format: 'xml') + .to route_to('well_known/host_meta#show') + end + + it 'routes to correct place with json format' do + expect(get('/.well-known/host-meta.json')) + .to route_to('well_known/host_meta#show', format: 'json') end end From ebab3b80c7e8abb7e29d1ab912427e52d89faa1c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 05:43:04 -0400 Subject: [PATCH 069/550] Expand coverage for `Export` utility class (#32212) --- .../account_domain_block_fabricator.rb | 2 +- spec/models/export_spec.rb | 177 ++++++++++++++---- 2 files changed, 144 insertions(+), 35 deletions(-) diff --git a/spec/fabricators/account_domain_block_fabricator.rb b/spec/fabricators/account_domain_block_fabricator.rb index 83df509da2..a211b7c666 100644 --- a/spec/fabricators/account_domain_block_fabricator.rb +++ b/spec/fabricators/account_domain_block_fabricator.rb @@ -2,5 +2,5 @@ Fabricator(:account_domain_block) do account { Fabricate.build(:account) } - domain 'example.com' + domain { sequence { |n| "host-#{n}.example" } } end diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 06bf07ed78..48e78830dd 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -3,66 +3,175 @@ require 'rails_helper' RSpec.describe Export do + subject { described_class.new(account) } + let(:account) { Fabricate(:account) } let(:target_accounts) do - [{}, { username: 'one', domain: 'local.host' }].map(&method(:Fabricate).curry(2).call(:account)) + [ + Fabricate(:account), + Fabricate(:account, username: 'one', domain: 'local.host'), + ] end - describe 'to_csv' do - it 'returns a csv of the blocked accounts' do - target_accounts.each { |target_account| account.block!(target_account) } + describe '#to_bookmarks_csv' do + before { Fabricate.times(2, :bookmark, account: account) } - export = described_class.new(account).to_blocked_accounts_csv - results = export.strip.split + let(:export) { CSV.parse(subject.to_bookmarks_csv) } - expect(results.size).to eq 2 - expect(results.first).to eq 'one@local.host' + it 'returns a csv of bookmarks' do + expect(export) + .to contain_exactly( + include(/statuses/), + include(/statuses/) + ) end + end + + describe '#to_blocked_accounts_csv' do + before { target_accounts.each { |target_account| account.block!(target_account) } } + + let(:export) { CSV.parse(subject.to_blocked_accounts_csv) } + + it 'returns a csv of the blocked accounts' do + expect(export) + .to contain_exactly( + include('one@local.host'), + include(be_present) + ) + end + end + + describe '#to_muted_accounts_csv' do + before { target_accounts.each { |target_account| account.mute!(target_account) } } + + let(:export) { CSV.parse(subject.to_muted_accounts_csv) } it 'returns a csv of the muted accounts' do - target_accounts.each { |target_account| account.mute!(target_account) } - - export = described_class.new(account).to_muted_accounts_csv - results = export.strip.split("\n") - - expect(results.size).to eq 3 - expect(results.first).to eq 'Account address,Hide notifications' - expect(results.second).to eq 'one@local.host,true' + expect(export) + .to contain_exactly( + contain_exactly('Account address', 'Hide notifications'), + include('one@local.host', 'true'), + include(be_present) + ) end + end + + describe '#to_following_accounts_csv' do + before { target_accounts.each { |target_account| account.follow!(target_account) } } + + let(:export) { CSV.parse(subject.to_following_accounts_csv) } it 'returns a csv of the following accounts' do - target_accounts.each { |target_account| account.follow!(target_account) } - - export = described_class.new(account).to_following_accounts_csv - results = export.strip.split("\n") - - expect(results.size).to eq 3 - expect(results.first).to eq 'Account address,Show boosts,Notify on new posts,Languages' - expect(results.second).to eq 'one@local.host,true,false,' + expect(export) + .to contain_exactly( + contain_exactly('Account address', 'Show boosts', 'Notify on new posts', 'Languages'), + include('one@local.host', 'true', 'false', be_blank), + include(be_present) + ) end end - describe 'total_storage' do + describe '#to_lists_csv' do + before do + target_accounts.each do |target_account| + account.follow!(target_account) + Fabricate(:list, account: account).accounts << target_account + end + end + + let(:export) { CSV.parse(subject.to_lists_csv) } + + it 'returns a csv of the lists' do + expect(export) + .to contain_exactly( + include('one@local.host'), + include(be_present) + ) + end + end + + describe '#to_blocked_domains_csv' do + before { Fabricate.times(2, :account_domain_block, account: account) } + + let(:export) { CSV.parse(subject.to_blocked_domains_csv) } + + it 'returns a csv of the blocked domains' do + expect(export) + .to contain_exactly( + include(/example/), + include(/example/) + ) + end + end + + describe '#total_storage' do it 'returns the total size of the media attachments' do media_attachment = Fabricate(:media_attachment, account: account) - expect(described_class.new(account).total_storage).to eq media_attachment.file_file_size || 0 + expect(subject.total_storage).to eq media_attachment.file_file_size || 0 end end - describe 'total_follows' do - it 'returns the total number of the followed accounts' do - target_accounts.each { |target_account| account.follow!(target_account) } - expect(described_class.new(account.reload).total_follows).to eq 2 + describe '#total_statuses' do + before { Fabricate.times(2, :status, account: account) } + + it 'returns the total number of statuses' do + expect(subject.total_statuses).to eq(2) end + end + + describe '#total_bookmarks' do + before { Fabricate.times(2, :bookmark, account: account) } + + it 'returns the total number of bookmarks' do + expect(subject.total_bookmarks).to eq(2) + end + end + + describe '#total_follows' do + before { target_accounts.each { |target_account| account.follow!(target_account) } } + + it 'returns the total number of the followed accounts' do + expect(subject.total_follows).to eq(2) + end + end + + describe '#total_lists' do + before { Fabricate.times(2, :list, account: account) } + + it 'returns the total number of lists' do + expect(subject.total_lists).to eq(2) + end + end + + describe '#total_followers' do + before { target_accounts.each { |target_account| target_account.follow!(account) } } + + it 'returns the total number of the follower accounts' do + expect(subject.total_followers).to eq(2) + end + end + + describe '#total_blocks' do + before { target_accounts.each { |target_account| account.block!(target_account) } } it 'returns the total number of the blocked accounts' do - target_accounts.each { |target_account| account.block!(target_account) } - expect(described_class.new(account.reload).total_blocks).to eq 2 + expect(subject.total_blocks).to eq(2) end + end + + describe '#total_mutes' do + before { target_accounts.each { |target_account| account.mute!(target_account) } } it 'returns the total number of the muted accounts' do - target_accounts.each { |target_account| account.mute!(target_account) } - expect(described_class.new(account.reload).total_mutes).to eq 2 + expect(subject.total_mutes).to eq(2) + end + end + + describe '#total_domain_blocks' do + before { Fabricate.times(2, :account_domain_block, account: account) } + + it 'returns the total number of account domain blocks' do + expect(subject.total_domain_blocks).to eq(2) end end end From 4a737a948a6aa8803ba366374569a93970437ec7 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Oct 2024 12:03:04 +0200 Subject: [PATCH 070/550] Fix incorrect `'navigator'` check (#32219) --- app/javascript/mastodon/actions/markers.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/javascript/mastodon/actions/markers.ts b/app/javascript/mastodon/actions/markers.ts index 0b3280c212..251546cb9a 100644 --- a/app/javascript/mastodon/actions/markers.ts +++ b/app/javascript/mastodon/actions/markers.ts @@ -37,8 +37,7 @@ export const synchronouslySubmitMarkers = createAppAsyncThunk( }); return; - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - } else if ('navigator' && 'sendBeacon' in navigator) { + } else if ('sendBeacon' in navigator) { // Failing that, we can use sendBeacon, but we have to encode the data as // FormData for DoorKeeper to recognize the token. const formData = new FormData(); From 4aa26eba53a0c6c5e305f0de9367ea54c83f86db Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 07:11:52 -0400 Subject: [PATCH 071/550] Extract `WebPushRequest` from push notification worker and subscription (#32208) --- app/lib/web_push_request.rb | 72 +++++++++++++++++++ app/models/web/push_subscription.rb | 28 -------- app/workers/web/push_notification_worker.rb | 40 +++++++---- .../web/push_notification_worker_spec.rb | 47 ++++++++---- 4 files changed, 131 insertions(+), 56 deletions(-) create mode 100644 app/lib/web_push_request.rb diff --git a/app/lib/web_push_request.rb b/app/lib/web_push_request.rb new file mode 100644 index 0000000000..a43e22480e --- /dev/null +++ b/app/lib/web_push_request.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +class WebPushRequest + SIGNATURE_ALGORITHM = 'p256ecdsa' + AUTH_HEADER = 'WebPush' + PAYLOAD_EXPIRATION = 24.hours + JWT_ALGORITHM = 'ES256' + JWT_TYPE = 'JWT' + + attr_reader :web_push_subscription + + delegate( + :endpoint, + :key_auth, + :key_p256dh, + to: :web_push_subscription + ) + + def initialize(web_push_subscription) + @web_push_subscription = web_push_subscription + end + + def audience + @audience ||= Addressable::URI.parse(endpoint).normalized_site + end + + def authorization_header + [AUTH_HEADER, encoded_json_web_token].join(' ') + end + + def crypto_key_header + [SIGNATURE_ALGORITHM, vapid_key.public_key_for_push_header].join('=') + end + + def encrypt(payload) + Webpush::Encryption.encrypt(payload, key_p256dh, key_auth) + end + + private + + def encoded_json_web_token + JWT.encode( + web_token_payload, + vapid_key.curve, + JWT_ALGORITHM, + typ: JWT_TYPE + ) + end + + def web_token_payload + { + aud: audience, + exp: PAYLOAD_EXPIRATION.from_now.to_i, + sub: payload_subject, + } + end + + def payload_subject + [:mailto, contact_email].join(':') + end + + def vapid_key + @vapid_key ||= Webpush::VapidKey.from_keys( + Rails.configuration.x.vapid_public_key, + Rails.configuration.x.vapid_private_key + ) + end + + def contact_email + @contact_email ||= ::Setting.site_contact_email + end +end diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb index ddfd08146e..9d30881bf3 100644 --- a/app/models/web/push_subscription.rb +++ b/app/models/web/push_subscription.rb @@ -29,26 +29,6 @@ class Web::PushSubscription < ApplicationRecord delegate :locale, to: :associated_user - def encrypt(payload) - Webpush::Encryption.encrypt(payload, key_p256dh, key_auth) - end - - def audience - @audience ||= Addressable::URI.parse(endpoint).normalized_site - end - - def crypto_key_header - p256ecdsa = vapid_key.public_key_for_push_header - - "p256ecdsa=#{p256ecdsa}" - end - - def authorization_header - jwt = JWT.encode({ aud: audience, exp: 24.hours.from_now.to_i, sub: "mailto:#{contact_email}" }, vapid_key.curve, 'ES256', typ: 'JWT') - - "WebPush #{jwt}" - end - def pushable?(notification) policy_allows_notification?(notification) && alert_enabled_for_notification_type?(notification) end @@ -92,14 +72,6 @@ class Web::PushSubscription < ApplicationRecord ) end - def vapid_key - @vapid_key ||= Webpush::VapidKey.from_keys(Rails.configuration.x.vapid_public_key, Rails.configuration.x.vapid_private_key) - end - - def contact_email - @contact_email ||= ::Setting.site_contact_email - end - def alert_enabled_for_notification_type?(notification) truthy?(data&.dig('alerts', notification.type.to_s)) end diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb index 7e9691aaba..104503f130 100644 --- a/app/workers/web/push_notification_worker.rb +++ b/app/workers/web/push_notification_worker.rb @@ -16,10 +16,10 @@ class Web::PushNotificationWorker # in the meantime, so we have to double-check before proceeding return unless @notification.activity.present? && @subscription.pushable?(@notification) - payload = @subscription.encrypt(push_notification_json) + payload = web_push_request.encrypt(push_notification_json) - request_pool.with(@subscription.audience) do |http_client| - request = Request.new(:post, @subscription.endpoint, body: payload.fetch(:ciphertext), http_client: http_client) + request_pool.with(web_push_request.audience) do |http_client| + request = Request.new(:post, web_push_request.endpoint, body: payload.fetch(:ciphertext), http_client: http_client) request.add_headers( 'Content-Type' => 'application/octet-stream', @@ -27,8 +27,8 @@ class Web::PushNotificationWorker 'Urgency' => URGENCY, 'Content-Encoding' => 'aesgcm', 'Encryption' => "salt=#{Webpush.encode64(payload.fetch(:salt)).delete('=')}", - 'Crypto-Key' => "dh=#{Webpush.encode64(payload.fetch(:server_public_key)).delete('=')};#{@subscription.crypto_key_header}", - 'Authorization' => @subscription.authorization_header + 'Crypto-Key' => "dh=#{Webpush.encode64(payload.fetch(:server_public_key)).delete('=')};#{web_push_request.crypto_key_header}", + 'Authorization' => web_push_request.authorization_header ) request.perform do |response| @@ -50,17 +50,27 @@ class Web::PushNotificationWorker private - def push_notification_json - json = I18n.with_locale(@subscription.locale.presence || I18n.default_locale) do - ActiveModelSerializers::SerializableResource.new( - @notification, - serializer: Web::NotificationSerializer, - scope: @subscription, - scope_name: :current_push_subscription - ).as_json - end + def web_push_request + @web_push_request || WebPushRequest.new(@subscription) + end - Oj.dump(json) + def push_notification_json + Oj.dump(serialized_notification_in_subscription_locale.as_json) + end + + def serialized_notification_in_subscription_locale + I18n.with_locale(@subscription.locale.presence || I18n.default_locale) do + serialized_notification + end + end + + def serialized_notification + ActiveModelSerializers::SerializableResource.new( + @notification, + serializer: Web::NotificationSerializer, + scope: @subscription, + scope_name: :current_push_subscription + ) end def request_pool diff --git a/spec/workers/web/push_notification_worker_spec.rb b/spec/workers/web/push_notification_worker_spec.rb index ced21d5bf7..7f836d99e4 100644 --- a/spec/workers/web/push_notification_worker_spec.rb +++ b/spec/workers/web/push_notification_worker_spec.rb @@ -22,27 +22,48 @@ RSpec.describe Web::PushNotificationWorker do let(:payload) { { ciphertext: ciphertext, salt: salt, server_public_key: server_public_key, shared_secret: shared_secret } } describe 'perform' do + around do |example| + original_private = Rails.configuration.x.vapid_private_key + original_public = Rails.configuration.x.vapid_public_key + Rails.configuration.x.vapid_private_key = vapid_private_key + Rails.configuration.x.vapid_public_key = vapid_public_key + example.run + Rails.configuration.x.vapid_private_key = original_private + Rails.configuration.x.vapid_public_key = original_public + end + before do - allow(subscription).to receive_messages(contact_email: contact_email, vapid_key: vapid_key) - allow(Web::PushSubscription).to receive(:find).with(subscription.id).and_return(subscription) + Setting.site_contact_email = contact_email + allow(Webpush::Encryption).to receive(:encrypt).and_return(payload) allow(JWT).to receive(:encode).and_return('jwt.encoded.payload') stub_request(:post, endpoint).to_return(status: 201, body: '') - - subject.perform(subscription.id, notification.id) end it 'calls the relevant service with the correct headers' do - expect(a_request(:post, endpoint).with(headers: { - 'Content-Encoding' => 'aesgcm', - 'Content-Type' => 'application/octet-stream', - 'Crypto-Key' => "dh=BAgtUks5d90kFmxGevk9tH7GEmvz9DB0qcEMUsOBgKwMf-TMjsKIIG6LQvGcFAf6jcmAod15VVwmYwGIIxE4VWE;p256ecdsa=#{vapid_public_key.delete('=')}", - 'Encryption' => 'salt=WJeVM-RY-F9351SVxTFx_g', - 'Ttl' => '172800', - 'Urgency' => 'normal', - 'Authorization' => 'WebPush jwt.encoded.payload', - }, body: "+\xB8\xDBT}\u0013\xB6\xDD.\xF9\xB0\xA7\xC8Ҁ\xFD\x99#\xF7\xAC\x83\xA4\xDB,\u001F\xB5\xB9w\x85>\xF7\xADr")).to have_been_made + subject.perform(subscription.id, notification.id) + + expect(web_push_endpoint_request) + .to have_been_made + end + + def web_push_endpoint_request + a_request( + :post, + endpoint + ).with( + headers: { + 'Content-Encoding' => 'aesgcm', + 'Content-Type' => 'application/octet-stream', + 'Crypto-Key' => "dh=BAgtUks5d90kFmxGevk9tH7GEmvz9DB0qcEMUsOBgKwMf-TMjsKIIG6LQvGcFAf6jcmAod15VVwmYwGIIxE4VWE;p256ecdsa=#{vapid_public_key.delete('=')}", + 'Encryption' => 'salt=WJeVM-RY-F9351SVxTFx_g', + 'Ttl' => '172800', + 'Urgency' => 'normal', + 'Authorization' => 'WebPush jwt.encoded.payload', + }, + body: "+\xB8\xDBT}\u0013\xB6\xDD.\xF9\xB0\xA7\xC8Ҁ\xFD\x99#\xF7\xAC\x83\xA4\xDB,\u001F\xB5\xB9w\x85>\xF7\xADr" + ) end end end From 1f65a95421a4dcbe44e25bd9e36329830a396eef Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 08:26:16 -0400 Subject: [PATCH 072/550] Remove unneeded `reorder(nil)` conditions (#32200) --- app/lib/vacuum/imports_vacuum.rb | 4 ++-- app/models/account_filter.rb | 2 +- app/models/admin/tag_filter.rb | 2 +- app/services/purge_domain_service.rb | 4 ++-- app/workers/filtered_notification_cleanup_worker.rb | 2 +- app/workers/scheduler/user_cleanup_scheduler.rb | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/lib/vacuum/imports_vacuum.rb b/app/lib/vacuum/imports_vacuum.rb index 700bd81847..b67865194f 100644 --- a/app/lib/vacuum/imports_vacuum.rb +++ b/app/lib/vacuum/imports_vacuum.rb @@ -9,10 +9,10 @@ class Vacuum::ImportsVacuum private def clean_unconfirmed_imports! - BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).reorder(nil).in_batches.delete_all + BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).in_batches.delete_all end def clean_old_imports! - BulkImport.where(created_at: ..1.week.ago).reorder(nil).in_batches.delete_all + BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all end end diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index 42b1c49538..e2f359a8c3 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -21,7 +21,7 @@ class AccountFilter end def results - scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor.reorder(nil) + scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor relevant_params.each do |key, value| next if key.to_s == 'page' diff --git a/app/models/admin/tag_filter.rb b/app/models/admin/tag_filter.rb index 6149c52175..5e75757b23 100644 --- a/app/models/admin/tag_filter.rb +++ b/app/models/admin/tag_filter.rb @@ -14,7 +14,7 @@ class Admin::TagFilter end def results - scope = Tag.reorder(nil) + scope = Tag.all params.each do |key, value| next if key == :page diff --git a/app/services/purge_domain_service.rb b/app/services/purge_domain_service.rb index ca0f0d441f..feab8aa1dd 100644 --- a/app/services/purge_domain_service.rb +++ b/app/services/purge_domain_service.rb @@ -16,12 +16,12 @@ class PurgeDomainService < BaseService end def purge_accounts! - Account.remote.where(domain: @domain).reorder(nil).find_each do |account| + Account.remote.where(domain: @domain).find_each do |account| DeleteAccountService.new.call(account, reserve_username: false, skip_side_effects: true) end end def purge_emojis! - CustomEmoji.remote.where(domain: @domain).reorder(nil).find_each(&:destroy) + CustomEmoji.remote.where(domain: @domain).find_each(&:destroy) end end diff --git a/app/workers/filtered_notification_cleanup_worker.rb b/app/workers/filtered_notification_cleanup_worker.rb index 2b955da3c0..87ff6a9eb5 100644 --- a/app/workers/filtered_notification_cleanup_worker.rb +++ b/app/workers/filtered_notification_cleanup_worker.rb @@ -4,6 +4,6 @@ class FilteredNotificationCleanupWorker include Sidekiq::Worker def perform(account_id, from_account_id) - Notification.where(account_id: account_id, from_account_id: from_account_id, filtered: true).reorder(nil).in_batches(order: :desc).delete_all + Notification.where(account_id: account_id, from_account_id: from_account_id, filtered: true).in_batches(order: :desc).delete_all end end diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb index 9f58d9225b..f755128332 100644 --- a/app/workers/scheduler/user_cleanup_scheduler.rb +++ b/app/workers/scheduler/user_cleanup_scheduler.rb @@ -16,7 +16,7 @@ class Scheduler::UserCleanupScheduler private def clean_unconfirmed_accounts! - User.unconfirmed.where(confirmation_sent_at: ..UNCONFIRMED_ACCOUNTS_MAX_AGE_DAYS.days.ago).reorder(nil).find_in_batches do |batch| + User.unconfirmed.where(confirmation_sent_at: ..UNCONFIRMED_ACCOUNTS_MAX_AGE_DAYS.days.ago).find_in_batches do |batch| # We have to do it separately because of missing database constraints AccountModerationNote.where(target_account_id: batch.map(&:account_id)).delete_all Account.where(id: batch.map(&:account_id)).delete_all From cf859d151b494a0786c07167f26dc52d0cfd407f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 09:08:40 -0400 Subject: [PATCH 073/550] More link/button conversion across views (#32199) --- app/views/admin/accounts/show.html.haml | 2 +- app/views/admin/instances/show.html.haml | 12 ++++++------ app/views/admin/invites/index.html.haml | 2 +- app/views/admin/reports/_actions.html.haml | 2 +- app/views/admin/reports/show.html.haml | 4 ++-- app/views/disputes/strikes/show.html.haml | 4 ++-- app/views/settings/exports/show.html.haml | 2 +- .../otp_authentication/show.html.haml | 2 +- .../index.html.haml | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index f148b9a082..2d9e30e368 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -30,7 +30,7 @@ = render 'admin/accounts/counters', account: @account - if @account.local? && @account.user.nil? - = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id) + = button_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), class: :button if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id) - else .table-wrapper %table.table.inline-table diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index 812a9c8870..dd4c50549c 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -21,7 +21,7 @@ - if @instance.domain_allow = link_to t('admin.domain_allows.undo'), admin_domain_allow_path(@instance.domain_allow), class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } - else - = link_to t('admin.domain_allows.add_new'), admin_domain_allows_path(domain_allow: { domain: @instance.domain }), class: 'button', method: :post + = button_to t('admin.domain_allows.add_new'), admin_domain_allows_path(domain_allow: { domain: @instance.domain }), class: :button - else %p= t('admin.instances.content_policies.description_html') @@ -40,7 +40,7 @@ %td= @instance.domain_block.policies.map { |policy| t(policy, scope: 'admin.instances.content_policies.policies') }.join(' · ') = link_to t('admin.domain_blocks.edit'), edit_admin_domain_block_path(@instance.domain_block), class: 'button' - = link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: 'button', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } + = button_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: :button, data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } - else = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button' @@ -70,16 +70,16 @@ - if @instance.unavailable? %span.negative-hint = t('admin.instances.availability.failure_threshold_reached', date: l(@instance.unavailable_domain.created_at.to_date)) - = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } + = button_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } - elsif @instance.exhausted_deliveries_days.empty? %span.positive-hint = t('admin.instances.availability.no_failures_recorded') - = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } + = button_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } - else %span.negative-hint = t('admin.instances.availability.failures_recorded', count: @instance.delivery_failure_tracker.days) - %span= link_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } unless @instance.exhausted_deliveries_days.empty? - %span= link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } + %span= button_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } unless @instance.exhausted_deliveries_days.empty? + %span= button_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } - if @instance.purgeable? %p= t('admin.instances.purge_description_html') diff --git a/app/views/admin/invites/index.html.haml b/app/views/admin/invites/index.html.haml index 964deaba8f..bbccca3147 100644 --- a/app/views/admin/invites/index.html.haml +++ b/app/views/admin/invites/index.html.haml @@ -34,4 +34,4 @@ = paginate @invites - if policy(:invite).deactivate_all? - = link_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' + = button_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, data: { confirm: t('admin.accounts.are_you_sure') }, class: :button diff --git a/app/views/admin/reports/_actions.html.haml b/app/views/admin/reports/_actions.html.haml index ef016e949b..c25f45e169 100644 --- a/app/views/admin/reports/_actions.html.haml +++ b/app/views/admin/reports/_actions.html.haml @@ -2,7 +2,7 @@ .report-actions .report-actions__item .report-actions__item__button - = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(report), method: :post, class: 'button' + = button_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(report), class: :button .report-actions__item__description = t('admin.reports.actions.resolve_description_html') - if statuses.any? { |status| (status.with_media? || status.with_preview_card?) && !status.discarded? } diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index 69e9c02921..32b6b3be8d 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -3,9 +3,9 @@ - content_for :heading_actions do - if @report.unresolved? - = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button' + = button_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), class: :button - else - = link_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), method: :post, class: 'button' + = button_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), class: :button - unless @report.account.local? || @report.target_account.local? .flash-message= t('admin.reports.forwarded_replies_explanation') diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 150dc06759..1d71e0ddd1 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -3,8 +3,8 @@ - content_for :heading_actions do - if @appeal.persisted? - = link_to t('disputes.strikes.approve_appeal'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal) - = link_to t('disputes.strikes.reject_appeal'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal) + = button_to t('disputes.strikes.approve_appeal'), approve_admin_disputes_appeal_path(@appeal), class: :button if can?(:approve, @appeal) + = button_to t('disputes.strikes.reject_appeal'), reject_admin_disputes_appeal_path(@appeal), class: 'button button--destructive' if can?(:reject, @appeal) - if @strike.overruled? %p.hint diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index 273c5a4ba6..61d55350c2 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -46,7 +46,7 @@ %p.muted-hint= t('exports.archive_takeout.hint_html') - if policy(:backup).create? - %p= link_to t('exports.archive_takeout.request'), settings_export_path, class: 'button', method: :post + %p= button_to t('exports.archive_takeout.request'), settings_export_path, class: :button - unless @backups.empty? %hr.spacer/ diff --git a/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml b/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml index d069ba12a9..01f385dbea 100644 --- a/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml +++ b/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml @@ -6,4 +6,4 @@ %hr.spacer/ - = link_to t('otp_authentication.setup'), settings_otp_authentication_path, data: { method: :post }, class: 'block-button' + = button_to t('otp_authentication.setup'), settings_otp_authentication_path, class: 'block-button' diff --git a/app/views/settings/two_factor_authentication_methods/index.html.haml b/app/views/settings/two_factor_authentication_methods/index.html.haml index 8b670283b9..e3a211a3d7 100644 --- a/app/views/settings/two_factor_authentication_methods/index.html.haml +++ b/app/views/settings/two_factor_authentication_methods/index.html.haml @@ -2,7 +2,7 @@ = t('settings.two_factor_authentication') - content_for :heading_actions do - = link_to t('two_factor_authentication.disable'), disable_settings_two_factor_authentication_methods_path, class: 'button button--destructive', method: :post + = button_to t('two_factor_authentication.disable'), disable_settings_two_factor_authentication_methods_path, class: 'button button--destructive' %p.hint %span.positive-hint @@ -38,4 +38,4 @@ %hr.spacer/ .simple_form - = link_to t('two_factor_authentication.generate_recovery_codes'), settings_two_factor_authentication_recovery_codes_path, data: { method: :post }, class: 'block-button' + = button_to t('two_factor_authentication.generate_recovery_codes'), settings_two_factor_authentication_recovery_codes_path, class: 'block-button' From 2151dfb8d687f08438fc76d8fdf670a473d6a1e8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 09:24:40 -0400 Subject: [PATCH 074/550] Add `relevant_params` to ReportFilter (matches account filter) (#32136) --- app/models/report_filter.rb | 14 +++++++++++++- spec/models/report_filter_spec.rb | 13 +++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb index fd0e23cb81..9d2b0fb374 100644 --- a/app/models/report_filter.rb +++ b/app/models/report_filter.rb @@ -18,13 +18,25 @@ class ReportFilter def results scope = Report.unresolved - params.each do |key, value| + relevant_params.each do |key, value| scope = scope.merge scope_for(key, value) end scope end + private + + def relevant_params + params.tap do |args| + args.delete(:target_origin) if origin_is_remote_and_domain_present? + end + end + + def origin_is_remote_and_domain_present? + params[:target_origin] == 'remote' && params[:by_target_domain].present? + end + def scope_for(key, value) case key.to_sym when :by_target_domain diff --git a/spec/models/report_filter_spec.rb b/spec/models/report_filter_spec.rb index 8668eb3d10..51933e475a 100644 --- a/spec/models/report_filter_spec.rb +++ b/spec/models/report_filter_spec.rb @@ -30,4 +30,17 @@ RSpec.describe ReportFilter do expect(Report).to have_received(:resolved) end end + + context 'when given remote target_origin and also by_target_domain' do + let!(:matching_report) { Fabricate :report, target_account: Fabricate(:account, domain: 'match.example') } + let!(:non_matching_report) { Fabricate :report, target_account: Fabricate(:account, domain: 'other.example') } + + it 'preserves the domain value' do + filter = described_class.new(by_target_domain: 'match.example', target_origin: 'remote') + + expect(filter.results) + .to include(matching_report) + .and not_include(non_matching_report) + end + end end From d270d6dd4fce6dd15107ee1fe9b7877a5fca02d9 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 09:26:46 -0400 Subject: [PATCH 075/550] Provide `use_path` to qr generator for svg data size reduction (#32127) --- .../two_factor_authentication/confirmations/new.html.haml | 2 +- .../two_factor_authentication/confirmations_controller_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/settings/two_factor_authentication/confirmations/new.html.haml b/app/views/settings/two_factor_authentication/confirmations/new.html.haml index 0b8278a104..a35479b84e 100644 --- a/app/views/settings/two_factor_authentication/confirmations/new.html.haml +++ b/app/views/settings/two_factor_authentication/confirmations/new.html.haml @@ -5,7 +5,7 @@ %p.hint= t('otp_authentication.instructions_html') .qr-wrapper - .qr-code!= @qrcode.as_svg(padding: 0, module_size: 4) + .qr-code!= @qrcode.as_svg(padding: 0, module_size: 4, use_path: true) .qr-alternative %p.hint= t('otp_authentication.manual_instructions') diff --git a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb index 34eaacdf49..224310b7ef 100644 --- a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb @@ -18,7 +18,7 @@ RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do def qr_code_markup RQRCode::QRCode.new( 'otpauth://totp/cb6e6126.ngrok.io:local-part%40domain?secret=thisisasecretforthespecofnewview&issuer=cb6e6126.ngrok.io' - ).as_svg(padding: 0, module_size: 4) + ).as_svg(padding: 0, module_size: 4, use_path: true) end end From b5006539c995cbefda04db25888ffe5bb5995d3f Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Oct 2024 15:28:36 +0200 Subject: [PATCH 076/550] Fix media uploads in composer appearing over search results in advanced interface (#32217) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 14de6e6818..5f410ead93 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3611,6 +3611,7 @@ $ui-header-logo-wordmark-width: 99px; overflow-y: auto; width: 100%; height: 100%; + z-index: 0; } .drawer__inner__mastodon { From f760899b04ef5647d8688e9f1f08094fb3cf5894 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Oct 2024 15:29:23 +0200 Subject: [PATCH 077/550] Fix editing description of media uploads with custom thumbnails (#32221) --- app/javascript/mastodon/reducers/compose.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js index e77f2ac6e6..ba975b75a8 100644 --- a/app/javascript/mastodon/reducers/compose.js +++ b/app/javascript/mastodon/reducers/compose.js @@ -402,7 +402,7 @@ export default function compose(state = initialState, action) { .set('isUploadingThumbnail', false) .update('media_attachments', list => list.map(item => { if (item.get('id') === action.media.id) { - return fromJS(action.media); + return fromJS(action.media).set('unattached', item.get('unattached')); } return item; From b7bb850efd485466d4424f4744c1795541ca592f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 09:56:26 -0400 Subject: [PATCH 078/550] Enable hostname config for all system specs (#32109) --- spec/rails_helper.rb | 5 +++++ spec/system/invites_spec.rb | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index ee03b49bc6..84cee0974f 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -161,6 +161,11 @@ RSpec.configure do |config| host! Rails.configuration.x.local_domain end + config.before :each, type: :system do + # Align with capybara config so that rails helpers called from rspec use matching host + host! 'localhost:3000' + end + config.after do Rails.cache.clear redis.del(redis.keys) diff --git a/spec/system/invites_spec.rb b/spec/system/invites_spec.rb index c57de871cc..fc60ce5913 100644 --- a/spec/system/invites_spec.rb +++ b/spec/system/invites_spec.rb @@ -7,10 +7,7 @@ RSpec.describe 'Invites' do let(:user) { Fabricate :user } - before do - host! 'localhost:3000' # TODO: Move into before for all system specs? - sign_in user - end + before { sign_in user } describe 'Viewing invites' do it 'Lists existing user invites' do From 36f9c96812c313c5f782a702df221ad4b57da0f3 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 10:45:12 -0400 Subject: [PATCH 079/550] Clean up labels on development application form (#32116) --- app/helpers/application_helper.rb | 13 +++++-------- app/models/session_activation.rb | 4 +++- app/views/settings/applications/_form.html.haml | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de00f76d36..a40580fbae 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,12 +1,6 @@ # frozen_string_literal: true module ApplicationHelper - DANGEROUS_SCOPES = %w( - read - write - follow - ).freeze - RTL_LOCALES = %i( ar ckb @@ -95,8 +89,11 @@ module ApplicationHelper Rails.env.production? ? site_title : "#{site_title} (Dev)" end - def class_for_scope(scope) - 'scope-danger' if DANGEROUS_SCOPES.include?(scope.to_s) + def label_for_scope(scope) + safe_join [ + tag.samp(scope, class: { 'scope-danger' => SessionActivation::DEFAULT_SCOPES.include?(scope.to_s) }), + tag.span(t("doorkeeper.scopes.#{scope}"), class: :hint), + ] end def can?(action, record) diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index d0a77daf0a..8b8e533d30 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -28,6 +28,8 @@ class SessionActivation < ApplicationRecord before_create :assign_access_token + DEFAULT_SCOPES = %w(read write follow).freeze + class << self def active?(id) id && exists?(session_id: id) @@ -64,7 +66,7 @@ class SessionActivation < ApplicationRecord { application_id: Doorkeeper::Application.find_by(superapp: true)&.id, resource_owner_id: user_id, - scopes: 'read write follow', + scopes: DEFAULT_SCOPES.join(' '), expires_in: Doorkeeper.configuration.access_token_expires_in, use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?, } diff --git a/app/views/settings/applications/_form.html.haml b/app/views/settings/applications/_form.html.haml index 66ea8bc12b..85fdefa0fc 100644 --- a/app/views/settings/applications/_form.html.haml +++ b/app/views/settings/applications/_form.html.haml @@ -18,7 +18,7 @@ .field-group .input.with_block_label - %label= t('activerecord.attributes.doorkeeper/application.scopes') + = form.label t('activerecord.attributes.doorkeeper/application.scopes'), required: true %span.hint= t('simple_form.hints.defaults.scopes') - Doorkeeper.configuration.scopes.group_by { |s| s.split(':').first }.each_value do |value| @@ -29,7 +29,7 @@ hint: false, include_blank: false, item_wrapper_tag: 'li', - label_method: ->(scope) { safe_join([content_tag(:samp, scope, class: class_for_scope(scope)), content_tag(:span, t("doorkeeper.scopes.#{scope}"), class: 'hint')]) }, + label_method: ->(scope) { label_for_scope(scope) }, label: false, required: false, selected: form.object.scopes.all, From 7d6b9ccd34fd10cce33114ac13201905222a807e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 10:45:54 -0400 Subject: [PATCH 080/550] Add `copyable_input` helper method to wrap shared options (#32119) --- app/helpers/application_helper.rb | 4 ++++ app/views/admin/invites/_invite.html.haml | 2 +- app/views/invites/_invite.html.haml | 2 +- app/views/oauth/authorizations/show.html.haml | 2 +- app/views/settings/verifications/show.html.haml | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a40580fbae..8f9a433d82 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -240,6 +240,10 @@ module ApplicationHelper full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg')) end + def copyable_input(options = {}) + tag.input(type: :text, maxlength: 999, spellcheck: false, readonly: true, **options) + end + private def storage_host_var diff --git a/app/views/admin/invites/_invite.html.haml b/app/views/admin/invites/_invite.html.haml index 8bd5f10fee..53eac1d0cd 100644 --- a/app/views/admin/invites/_invite.html.haml +++ b/app/views/admin/invites/_invite.html.haml @@ -2,7 +2,7 @@ %td .input-copy .input-copy__wrapper - %input{ type: :text, maxlength: '999', spellcheck: 'false', readonly: 'true', value: public_invite_url(invite_code: invite.code) } + = copyable_input value: public_invite_url(invite_code: invite.code) %button{ type: :button }= t('generic.copy') %td diff --git a/app/views/invites/_invite.html.haml b/app/views/invites/_invite.html.haml index 892fdc5a0e..7c94062de4 100644 --- a/app/views/invites/_invite.html.haml +++ b/app/views/invites/_invite.html.haml @@ -2,7 +2,7 @@ %td .input-copy .input-copy__wrapper - %input{ type: :text, maxlength: '999', spellcheck: 'false', readonly: 'true', value: public_invite_url(invite_code: invite.code) } + = copyable_input value: public_invite_url(invite_code: invite.code) %button{ type: :button }= t('generic.copy') - if invite.valid_for_use? diff --git a/app/views/oauth/authorizations/show.html.haml b/app/views/oauth/authorizations/show.html.haml index a5122a87fc..bdff336368 100644 --- a/app/views/oauth/authorizations/show.html.haml +++ b/app/views/oauth/authorizations/show.html.haml @@ -3,5 +3,5 @@ %p= t('doorkeeper.authorizations.show.title') .input-copy .input-copy__wrapper - %input.oauth-code{ type: 'text', spellcheck: 'false', readonly: true, value: params[:code] } + = copyable_input value: params[:code], class: 'oauth-code' %button{ type: :button }= t('generic.copy') diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index 00491866c6..560807f27c 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -16,7 +16,7 @@ .input-copy.lead .input-copy__wrapper - %input{ type: :text, maxlength: '999', spellcheck: 'false', readonly: 'true', value: link_to('Mastodon', ActivityPub::TagManager.instance.url_for(@account), rel: 'me').to_str } + = copyable_input value: link_to('Mastodon', ActivityPub::TagManager.instance.url_for(@account), rel: :me) %button{ type: :button }= t('generic.copy') %p.lead= t('verification.extra_instructions_html') From cec89613720c23cb18d566ae05a6f69ac52d115e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 2 Oct 2024 10:47:00 -0400 Subject: [PATCH 081/550] Move admin action log type list generation to helper (#32178) --- app/helpers/admin/action_logs_helper.rb | 7 +++++++ app/views/admin/action_logs/index.html.haml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index e8d5634126..51e28d8b4e 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -35,4 +35,11 @@ module Admin::ActionLogsHelper end end end + + def sorted_action_log_types + Admin::ActionLogFilter::ACTION_TYPE_MAP + .keys + .map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key] } + .sort_by(&:first) + end end diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml index c02c8f0ad4..a5d4188294 100644 --- a/app/views/admin/action_logs/index.html.haml +++ b/app/views/admin/action_logs/index.html.haml @@ -16,7 +16,7 @@ %strong= t('admin.action_logs.filter_by_action') .input.select.optional = form.select :action_type, - options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key] }, params[:action_type]), + options_for_select(sorted_action_log_types, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all') - if @action_logs.empty? From f768a6eb16880f4e584db530e4106be9b9dcf206 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Oct 2024 17:51:05 +0200 Subject: [PATCH 082/550] Hide badges in media gallery when media are hidden (#32224) --- app/javascript/mastodon/components/media_gallery.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 84cb4e04dc..1380d244ad 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -196,7 +196,7 @@ class Item extends PureComponent { {visible && thumbnail} - {badges && ( + {visible && badges && (
{badges}
From 6ef510fe3f4a08908df223d33d2788f851d0cb52 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:04:12 +0200 Subject: [PATCH 083/550] Update dependency json-schema to v5.0.1 (#32234) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3950a30d62..987234a73d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -369,7 +369,7 @@ GEM json-ld-preloaded (3.3.0) json-ld (~> 3.3) rdf (~> 3.3) - json-schema (5.0.0) + json-schema (5.0.1) addressable (~> 2.8) jsonapi-renderer (0.2.2) jwt (2.7.1) From 0be1d332f28ca31e734954d7b8d73b41d60f485f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:04:33 +0200 Subject: [PATCH 084/550] Update dependency aws-sdk-s3 to v1.167.0 (#32231) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 987234a73d..1c2bb8df08 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -100,8 +100,8 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.978.0) - aws-sdk-core (3.209.0) + aws-partitions (1.983.0) + aws-sdk-core (3.209.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.9) @@ -109,7 +109,7 @@ GEM aws-sdk-kms (1.94.0) aws-sdk-core (~> 3, >= 3.207.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.166.0) + aws-sdk-s3 (1.167.0) aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From d96351a87d7078e8d6a07486d7d30e4a7956745d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 09:05:11 +0000 Subject: [PATCH 085/550] Update babel monorepo to v7.25.7 (#32225) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 1366 ++++++++++++++++++++++++++--------------------------- 1 file changed, 679 insertions(+), 687 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8970981d88..0a7f89990c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,127 +42,127 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/highlight": "npm:^7.25.7" picocolors: "npm:^1.0.0" - checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2, @babel/compat-data@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: 10c0/50d79734d584a28c69d6f5b99adfaa064d0f41609a378aef04eb06accc5b44f8520e68549eba3a082478180957b7d5783f1bfb1672e4ae8574e797ce8bae79fa +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/compat-data@npm:7.25.7" + checksum: 10c0/e5cc915abdd18d021236474a96606b2d4a915c4fb620c1ad776b8a08d91111e788cb3b7e9bad43593d4e0bfa4f06894357bcb0984102de1861b9e7322b6bc9f8 languageName: node linkType: hard "@babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" + version: 7.25.7 + resolution: "@babel/core@npm:7.25.7" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + checksum: 10c0/dad20af39624086afc3a0910bd97ae712c9ad0e9dda09fc5da93876e8ea1802b63ddd81c44f4aa8a9834db46de801eaab1ce9b81ab54b4fe907ae052c24de136 languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.4, @babel/generator@npm:^7.7.2": - version: 7.25.4 - resolution: "@babel/generator@npm:7.25.4" +"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.25.4" + "@babel/types": "npm:^7.25.7" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/a2d8cc39e759214740f836360c8d9c17aa93e16e41afe73368a9e7ccd1d5c3303a420ce3aca1c9a31fdb93d1899de471d5aac97d1c64f741f8750a25a6e91fbc + jsesc: "npm:^3.0.2" + checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" +"@babel/helper-annotate-as-pure@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/4679f7df4dffd5b3e26083ae65228116c3da34c3fff2c11ae11b259a61baec440f51e30fd236f7a0435b9d471acd93d0bc5a95df8213cbf02b1e083503d81b9a + "@babel/types": "npm:^7.25.7" + checksum: 10c0/2f020b0fa9d336b5778485cc2de3141561ec436a7591b685457a5bcdae4ce41d9ddee68169c95504e0789e5a4327e73b8b7e72e5b60e82e96d730c4d19255248 languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/0ed84abf848c79fb1cd4c1ddac12c771d32c1904d87fc3087f33cfdeb0c2e0db4e7892b74b407d9d8d0c000044f3645a7391a781f788da8410c290bb123a1f13 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/e9dc5a7920a1d74150dec53ccd5e34f2b31ae307df7cdeec6289866f7bda97ecb1328b49a7710ecde5db5b6daad768c904a030f9a0fa3184963b0017622c42aa languageName: node linkType: hard -"@babel/helper-builder-react-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-builder-react-jsx@npm:7.24.7" +"@babel/helper-builder-react-jsx@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-builder-react-jsx@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/c95c8856c67c57060461f39b669707b2dca3501149bcc54b7c3e49c95069afce52179fc7c2bd809981acfbfdf0860ef1035dd7512cdba46c83bdb1ad6f6dc53f + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/f8123a76e8c3fcdbb24cc14bfefc80e4c7bf58112ab26bea3247298748c674cbaee70591c362d0d881e4d88154ea4809b145f3ddcf96221cf55ba27bfde535c6 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 + checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.24.7, @babel/helper-create-class-features-plugin@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" +"@babel/helper-create-class-features-plugin@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.4" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-member-expression-to-functions": "npm:^7.25.7" + "@babel/helper-optimise-call-expression": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/a765d9e0482e13cf96642fa8aa28e6f7d4d7d39f37840d6246e5e10a7c47f47c52d52522edd3073f229449d17ec0db6f9b7b5e398bff6bb0b4994d65957a164c + checksum: 10c0/405c3c1a137acda1206380a96993cf2cfd808b3bee1c11c4af47ee0f03a20858497aa53394d6adc5431793c543be5e02010620e871a5ab39d938ae90a54b50f2 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0, @babel/helper-create-regexp-features-plugin@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - regexpu-core: "npm:^5.3.1" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + regexpu-core: "npm:^6.1.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/85a7e3639c118856fb1113f54fb7e3bf7698171ddfd0cd6fccccd5426b3727bc1434fe7f69090441dcde327feef9de917e00d35e47ab820047057518dd675317 + checksum: 10c0/75919fd5a67cd7be8497b56f7b9ed6b4843cb401956ba8d403aa9ae5b005bc28e35c7f27e704d820edbd1154394ed7a7984d4719916795d89d716f6980fe8bd4 languageName: node linkType: hard @@ -181,223 +181,223 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" +"@babel/helper-member-expression-to-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.8" - "@babel/types": "npm:^7.24.8" - checksum: 10c0/7e14a5acc91f6cd26305a4441b82eb6f616bd70b096a4d2099a968f16b26d50207eec0b9ebfc466fefd62bd91587ac3be878117cdfec819b7151911183cb0e5a + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/1e948162ab48d84593a7c6ec9570d14c906146f1697144fc369c59dbeb00e4a062da67dd06cb0d8f98a044cd8389002dcf2ab6f5613d99c35748307846ec63fc languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" +"@babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 + checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" +"@babel/helper-optimise-call-expression@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10c0/ca6a9884705dea5c95a8b3ce132d1e3f2ae951ff74987d400d1d9c215dae9c0f9e29924d8f8e131e116533d182675bc261927be72f6a9a2968eaeeaa51eb1d0f + "@babel/types": "npm:^7.25.7" + checksum: 10c0/19b4cc7e77811b1fedca4928dbc14026afef913c2ba4142e5e110ebdcb5c3b2efc0f0fbee9f362c23a194674147b9d627adea71c289b9be08b9067bc0085308b languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.25.7 + resolution: "@babel/helper-plugin-utils@npm:7.25.7" + checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.24.7, @babel/helper-remap-async-to-generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" +"@babel/helper-remap-async-to-generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-wrap-function": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.0" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-wrap-function": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/0d17b5f7bb6a607edc9cc62fff8056dd9f341bf2f919884f97b99170d143022a5e7ae57922c4891e4fc360ad291e708d2f8cd8989f1d3cd7a17600159984f5a6 + checksum: 10c0/972d84876adce6ab61c87a2df47e1afc790b73cff0d1767d0a1c5d9f7aa5e91d8c581a272b66b2051a26cfbb167d8a780564705e488e3ce1f477f1c15059bc5f languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.24.7, @babel/helper-replace-supers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-replace-supers@npm:7.25.0" +"@babel/helper-replace-supers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-replace-supers@npm:7.25.7" dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.0" + "@babel/helper-member-expression-to-functions": "npm:^7.25.7" + "@babel/helper-optimise-call-expression": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/b4b6650ab3d56c39a259367cd97f8df2f21c9cebb3716fea7bca40a150f8847bfb82f481e98927c7c6579b48a977b5a8f77318a1c6aeb497f41ecd6dbc3fdfef + checksum: 10c0/761d64ee74429f7326a6aa65e2cd5bfcb8de9e3bc3f1efb14b8f610d2410f003b0fca52778dc801d49ff8fbc90b057e8f51b27c62b0b05c95eaf23140ca1287b languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.7" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/e3a9b8ac9c262ac976a1bcb5fe59694db5e6f0b4f9e7bdba5c7693b8b5e28113c23bdaa60fe8d3ec32a337091b67720b2053bcb3d5655f5406536c3d0584242b + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/5804adb893849a9d8cfb548e3812566a81d95cb0c9a10d66b52912d13f488e577c33063bf19bc06ac70e6333162a7370d67ba1a1c3544d37fb50d5f4a00db4de languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651 +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f +"@babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-wrap-function@npm:7.25.0" +"@babel/helper-wrap-function@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-wrap-function@npm:7.25.7" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/d54601a98384c191cbc1ff07b03a19e288ef8d5c6bfafe270b2a303d96e7304eb296002921ed464cc1b105a547d1db146eb86b0be617924dee1ba1b379cdc216 + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/b5d412f72697f4a4ce4cb9784fbaf82501c63cf95066c0eadd3179e3439cbbf0aa5fa4858d93590083671943cd357aeb87286958df34aa56fdf8a4c9dea39755 languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" +"@babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/parser@npm:7.25.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/parser@npm:7.25.7" dependencies: - "@babel/types": "npm:^7.25.4" + "@babel/types": "npm:^7.25.7" bin: parser: ./bin/babel-parser.js - checksum: 10c0/bdada5662f15d1df11a7266ec3bc9bb769bf3637ecf3d051eafcfc8f576dcf5a3ac1007c5e059db4a1e1387db9ae9caad239fc4f79e4c2200930ed610e779993 + checksum: 10c0/b771469bb6b636c18a8d642b9df3c73913c3860a979591e1a29a98659efd38b81d3e393047b5251fe382d4c82c681c12da9ce91c98d69316d2604d155a214bcf languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.3" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/814b4d3f102e7556a5053d1acf57ef601cfcff39a2c81b8cdc6a5c842e3cb9838f5925d1466a5f1e6416e74c9c83586a3c07fbd7fb8610a396c2becdf9ae5790 + checksum: 10c0/c6ba97c39973897a2ab021c4a77221e1e93e853a5811d498db325da1bd692e41fa521db6d91bb709ccafd4e54ddd00869ffb35846923c3ccd49d46124b316904 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/9645a1f47b3750acadb1353c02e71cc712d072aafe5ce115ed3a886bc14c5d9200cfb0b5b5e60e813baa549b800cf798f8714019fd246c699053cf68c428e426 + checksum: 10c0/ac284868bf410f952c6959b0d77708464127160416f003b05c8127d30e64792d671abc167ebf778b17707e32174223ea8d3ff487276991fa90297d92f0dac6e2 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/ed1ce1c90cac46c01825339fd0f2a96fa071b016fb819d8dfaf8e96300eae30e74870cb47e4dc80d4ce2fb287869f102878b4f3b35bc927fec8b1d0d76bcf612 + checksum: 10c0/1bffc0a20c8c82b4c77515eb4c99b961b38184116f008bb42bed4e12d3379ba7b2bc6cf299bcea8118d645bb7a5e0caa83969842f16dd1fce49fb3a050e4ac65 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.13.0 - checksum: 10c0/aeb6e7aa363a47f815cf956ea1053c5dd8b786a17799f065c9688ba4b0051fe7565d258bbe9400bfcbfb3114cb9fda66983e10afe4d750bc70ff75403e15dd36 + checksum: 10c0/32223f012614a0b2657579317ded7d0d09af2aa316285715c5012f974d0f15c2ce2fe0d8e80fdd9bac6c10c21c93cc925a9dfd6c8e21ce7ba1a9fe06a58088b4 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.0" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/45988025537a9d4a27b610fd696a18fd9ba9336621a69b4fb40560eeb10c79657f85c92a37f30c7c8fb29c22970eea0b373315795a891f1a05549a6cfe5a6bfe + checksum: 10c0/aa2ee7a5954d187de6cbcca0e0b64cfb79c4d224c332d1eb1e0e4afd92ef1a1f4bc4af24f66154097ccb348c08121a875456f47baed220b1b9e93584e6a19b65 languageName: node linkType: hard @@ -476,25 +476,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" +"@babel/plugin-syntax-import-assertions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b82c53e095274ee71c248551352d73441cf65b3b3fc0107258ba4e9aef7090772a425442b3ed1c396fa207d0efafde8929c87a17d3c885b3ca2021316e87e246 + checksum: 10c0/0fee0d971f3c654749fdf92e09b6556bba26ab014c8e99b7252f6a7f1ca108f17edd7ceefb5401d7b7008e98ab1b6f8c3c6a5db72862e7c7b2fcd649d000d690 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" +"@babel/plugin-syntax-import-attributes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/eccc54d0f03c96d0eec7a6e2fa124dadbc7298345b62ffc4238f173308c4325b5598f139695ff05a95cf78412ef6903599e4b814496612bf39aad4715a16375b + checksum: 10c0/fe00cdb96fd289ab126830a98e1dcf5ab7b529a6ef1c01a72506b5e7b1197d6e46c3c4d029cd90d1d61eb9a15ef77c282d156d0c02c7e32f168bb09d84150db4 languageName: node linkType: hard @@ -520,14 +520,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.24.7, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" +"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.25.7, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f44d927a9ae8d5ef016ff5b450e1671e56629ddc12e56b938e41fd46e141170d9dfc9a53d6cb2b9a20a7dd266a938885e6a3981c60c052a2e1daed602ac80e51 + checksum: 10c0/17db499c31fcfaa94d5408726d943955d51d478353d1e2dd84eda6024f7e3d104b9456a77f8aabfae0db7f4dc32f810d08357112f7fcbe305e7c9fcf5b3cac13 languageName: node linkType: hard @@ -619,14 +619,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.24.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" +"@babel/plugin-syntax-typescript@npm:^7.25.7, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/cdabd2e8010fb0ad15b49c2c270efc97c4bfe109ead36c7bbcf22da7a74bc3e49702fc4f22f12d2d6049e8e22a5769258df1fd05f0420ae45e11bdd5bc07805a + checksum: 10c0/ed51fd81a5cf571a89fc4cf4c0e3b0b91285c367237374c133d2e5e718f3963cfa61b81997df39220a8837dc99f9e9a8ab7701d259c09fae379e4843d9db60c2 languageName: node linkType: hard @@ -642,466 +642,466 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" +"@babel/plugin-transform-arrow-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6ac05a54e5582f34ac6d5dc26499e227227ec1c7fa6fc8de1f3d40c275f140d3907f79bbbd49304da2d7008a5ecafb219d0b71d78ee3290ca22020d878041245 + checksum: 10c0/c8d75ead93f130bf113b6d29493aca695092661ef039336d2a227169c3b7895aa5e9bcc548c42a95a6eaaaf49e512317b00699940bd40ccefd77443e703d3935 languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-remap-async-to-generator": "npm:^7.25.0" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-remap-async-to-generator": "npm:^7.25.7" "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/traverse": "npm:^7.25.4" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/efed6f6be90b25ad77c15a622a0dc0b22dbf5d45599c207ab8fbc4e959aef21f574fa467d9cf872e45de664a46c32334e78dee2332d82f5f27e26249a34a0920 + checksum: 10c0/dcdd17d8cafafe0eb2edd0a46a7abe86c72235c957c8eb1157ccadb2b199572d5d1aa36a2d3bce5cb99990f7d3c6290ecf09959c62f3081c4df9ff717a1c84a4 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" +"@babel/plugin-transform-async-to-generator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-remap-async-to-generator": "npm:^7.24.7" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-remap-async-to-generator": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/83c82e243898875af8457972a26ab29baf8a2078768ee9f35141eb3edff0f84b165582a2ff73e90a9e08f5922bf813dbf15a85c1213654385198f4591c0dc45d + checksum: 10c0/1dbefba9c1455f7a92b8c59a93c622091db945294c936fc2c09b1648308c5b4cb2ecaae92baae0d07a324ab890a8a2ee27ceb046bc120932845d27aede275821 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" +"@babel/plugin-transform-block-scoped-functions@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/113e86de4612ae91773ff5cb6b980f01e1da7e26ae6f6012127415d7ae144e74987bc23feb97f63ba4bc699331490ddea36eac004d76a20d5369e4cc6a7f61cd + checksum: 10c0/b1e77492295d1b271ef850a81b0404cf3d0dd6a2bcbeab28a0fd99e61c6de4bda91dff583bb42138eec61bf71282bdd3b1bebcb53b7e373035e77fd6ba66caeb languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" +"@babel/plugin-transform-block-scoping@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/382931c75a5d0ea560387e76cb57b03461300527e4784efcb2fb62f36c1eb0ab331327b6034def256baa0cad9050925a61f9c0d56261b6afd6a29c3065fb0bd4 + checksum: 10c0/b2057e00535cd0e8bd5ee5d4640aa2e952564aeafb1bcf4e7b6de33442422877bb0ca8669ad0a48262ec077271978c61eae87b6b3bc8f472d830fa781d6f7e44 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.4" +"@babel/plugin-transform-class-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.7" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.4" - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0b41bc8a5920d3d17c7c06220b601cf43e0a32ac34f05f05cd0cdf08915e4521b1b707cb1e60942b4fc68a5dfac09f0444a8720e0c72ce76fb039e8ec5263115 + checksum: 10c0/1f41e6934b20ad3e05df63959cff9bc600ff3119153b9acbbd44c1731e7df04866397e6e17799173f4c53cdee6115e155632859aee20bf47ec7dcef3f2168a47 languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" +"@babel/plugin-transform-class-static-block@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/b0ade39a3d09dce886f79dbd5907c3d99b48167eddb6b9bbde24a0598129654d7017e611c20494cdbea48b07ac14397cd97ea34e3754bbb2abae4e698128eccb + checksum: 10c0/cbb4b46cbd8ad10106eb2bedb5a0665661a1d1d5b6f3ab565ff454b802dab4718e02b25670fe0d40835494aedb3dc26757c06cc4da6ff3e80291c5f882269bd3 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-classes@npm:7.25.4" +"@babel/plugin-transform-classes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-classes@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-replace-supers": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.4" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c68424d9dd64860825111aa4a4ed5caf29494b7a02ddb9c36351d768c41e8e05127d89274795cdfcade032d9d299e6c677418259df58c71e68f1741583dcf467 + checksum: 10c0/8121781e1d8acd80e6169019106f73a399475ad9c895c1988a344dfed5a6ddd340938ac55123dc1e423bb8f25f255f5d11031116ad756ba3c314595a97c973af languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" +"@babel/plugin-transform-computed-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/template": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/25636dbc1f605c0b8bc60aa58628a916b689473d11551c9864a855142e36742fe62d4a70400ba3b74902338e77fb3d940376c0a0ba154b6b7ec5367175233b49 + checksum: 10c0/7ad0a1c126f50935a02e77d438ebc39078a9d644b3a60de60bec32c5d9f49e7f2b193fcecb8c61bb1bc3cdd4af1e93f72d022d448511fa76a171527c633cd1bf languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" +"@babel/plugin-transform-destructuring@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/804968c1d5f5072c717505296c1e5d5ec33e90550423de66de82bbcb78157156e8470bbe77a04ab8c710a88a06360a30103cf223ac7eff4829adedd6150de5ce + checksum: 10c0/a563123b2fb267e03aa50104005f00b56226a685938906c42c1b251462e0cc9fc89e587d5656d3324159071eb8ebda8c68a6011f11d5a00fb1436cb5a5411b7b languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" +"@babel/plugin-transform-dotall-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/793f14c9494972d294b7e7b97b747f47874b6d57d7804d3443c701becf5db192c9311be6a1835c07664486df1f5c60d33196c36fb7e11a53015e476b4c145b33 + checksum: 10c0/7f1db3ec20b7fae46db4a9c4c257d75418b0896b72c0a3de20b3044f952801480f0a2e75ebb0d64f13e8cd4db0e49aa42c5c0edff372b23c41679b1ea5dd3ed4 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" +"@babel/plugin-transform-duplicate-keys@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/75ff7ec1117ac500e77bf20a144411d39c0fdd038f108eec061724123ce6d1bb8d5bd27968e466573ee70014f8be0043361cdb0ef388f8a182d1d97ad67e51b9 + checksum: 10c0/b4079981e2db19737a0f1a00254e7388e2d3c01ce36e9fd826e4d86d3c1755339495e29c71fd7c84a068201ec24687328d48f3bf53b32b6d6224f51d9a34da74 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.0" - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/1c9b57ddd9b33696e88911d0e7975e1573ebc46219c4b30eb1dc746cbb71aedfac6f6dab7fdfdec54dd58f31468bf6ab56b157661ea4ffe58f906d71f89544c8 + checksum: 10c0/e4946090ff6d88d54b78265ee653079ec34c117ac046e22f66f7c4ac44249cdc2dfca385bc5bf4386db668b9948eeb12985589500188bc252e684c7714c31475 languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" +"@babel/plugin-transform-dynamic-import@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/eeda48372efd0a5103cb22dadb13563c975bce18ae85daafbb47d57bb9665d187da9d4fe8d07ac0a6e1288afcfcb73e4e5618bf75ff63fddf9736bfbf225203b + checksum: 10c0/c733252ff20a32d9747dd081916270f5a073856597e849a5f458b12f4354499b18714f5e7049e341432851d9975077cb37effcd276c7f816faa6f5ff708dc5e1 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" +"@babel/plugin-transform-exponentiation-operator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.7" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ace3e11c94041b88848552ba8feb39ae4d6cad3696d439ff51445bd2882d8b8775d85a26c2c0edb9b5e38c9e6013cc11b0dea89ec8f93c7d9d7ee95e3645078c + checksum: 10c0/c8537b9f3cddc5a8d3710f6980196dc7a0f4389f8f82617312a5f7b8b15bcd8ddaeba783c687c3ac6031eb0a4ba0bc380a98da6bf7efe98e225602a98ad42a1e languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" +"@babel/plugin-transform-export-namespace-from@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/4e144d7f1c57bc63b4899dbbbdfed0880f2daa75ea9c7251c7997f106e4b390dc362175ab7830f11358cb21f6b972ca10a43a2e56cd789065f7606b082674c0c + checksum: 10c0/ef61fc5d54c9c8b075cbd9db62beaf295e38e08a1edb1882995105d3e959763be1631f7d7f7cb7461b702ebd0b4a601f2eb2cd6521acaf061310a3a3305fa756 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-for-of@npm:7.24.7" +"@babel/plugin-transform-for-of@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-for-of@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/77629b1173e55d07416f05ba7353caa09d2c2149da2ca26721ab812209b63689d1be45116b68eadc011c49ced59daf5320835b15245eb7ae93ae0c5e8277cfc0 + checksum: 10c0/08a37a1742368a422d095c998ed76f60f6bf3f9cc060033be121d803fd2dddc08fe543e48ee49c022bdc9ed80893ca79d084958d83d30684178b088774754277 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.25.1": - version: 7.25.1 - resolution: "@babel/plugin-transform-function-name@npm:7.25.1" +"@babel/plugin-transform-function-name@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-function-name@npm:7.25.7" dependencies: - "@babel/helper-compilation-targets": "npm:^7.24.8" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.1" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e74912174d5e33d1418b840443c2e226a7b76cc017c1ed20ee30a566e4f1794d4a123be03180da046241576e8b692731807ba1f52608922acf1cb2cb6957593f + checksum: 10c0/ca98e1116c0ada7211ed43e4b7f21ca15f95bbbdad70f2fbe1ec2d90a97daedf9f22fcb0a25c8b164a5e394f509f2e4d1f7609d26dc938a58d37c5ee9b80088a languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" +"@babel/plugin-transform-json-strings@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-json-strings": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/17c72cd5bf3e90e722aabd333559275f3309e3fa0b9cea8c2944ab83ae01502c71a2be05da5101edc02b3fc8df15a8dbb9b861cbfcc8a52bf5e797cf01d3a40a + checksum: 10c0/aa6e5f65c8a5f2459d7daa9b5b4ff97ff43bab21f4a8513ed84d35300b0323ec542dc101c5f11622e442dfc93b3a229c7f41ebc7645370dfec6d066bda800a0b languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/plugin-transform-literals@npm:7.25.2" +"@babel/plugin-transform-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-literals@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0796883217b0885d37e7f6d350773be349e469a812b6bf11ccf862a6edf65103d3e7c849529d65381b441685c12e756751d8c2489a0fd3f8139bb5ef93185f58 + checksum: 10c0/c2c2488102f33e566f45becdcb632e53bd052ecfb2879deb07a614b3e9437e3b624c3b16d080096d50b0b622edebd03e438acbf9260bcc41167897963f64560e languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/dbe882eb9053931f2ab332c50fc7c2a10ef507d6421bd9831adbb4cb7c9f8e1e5fbac4fbd2e007f6a1bf1df1843547559434012f118084dc0bf42cda3b106272 + checksum: 10c0/d610a8a2c1be83e03cce2256f29519e705dc68289c09d67f1f362d1fd80f4b36eaf2affc05710abb53a272895041e24d9e95ec73a516a23a67cb907023fbe37b languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" +"@babel/plugin-transform-member-expression-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e789ae359bdf2d20e90bedef18dfdbd965c9ebae1cee398474a0c349590fda7c8b874e1a2ceee62e47e5e6ec1730e76b0f24e502164357571854271fc12cc684 + checksum: 10c0/d6936b98ae4d3daed850dc4e064042ea4375f815219ba9d8591373bf1fba4cfdb5be42623ae8882f2d666cc34af650a4855e2a5ad89e3c235d73a6f172f9969c languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" +"@babel/plugin-transform-modules-amd@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6df7de7fce34117ca4b2fa07949b12274c03668cbfe21481c4037b6300796d50ae40f4f170527b61b70a67f26db906747797e30dbd0d9809a441b6e220b5728f + checksum: 10c0/c0bc999206c3834c090e6559a6c8a55d7672d3573104e832223ebe7df99bd1b82fc850e15ba32f512c84b0db1cdb613b66fa60abe9abb9c7e8dcbff91649b356 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" +"@babel/plugin-transform-modules-commonjs@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.24.8" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-simple-access": "npm:^7.24.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f1cf552307ebfced20d3907c1dd8be941b277f0364aa655e2b5fee828c84c54065745183104dae86f1f93ea0406db970a463ef7ceaaed897623748e99640e5a7 + checksum: 10c0/2f1c945fc3c9b690b0ddcf2c80156b2e4fbf2cf15aac43ac8fe6e4b34125869528839a53d07c564e62e4aed394ebdc1d2c3b796b547374455522581c11b7599c languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" +"@babel/plugin-transform-modules-systemjs@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.0" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.0" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fca6198da71237e4bb1274b3b67a0c81d56013c9535361242b6bfa87d70a9597854aadb45d4d8203369be4a655e158be2a5d20af0040b1f8d1bfc47db3ad7b68 + checksum: 10c0/95eaea7082636710c61e49e58b3907e85ec79db4327411d3784f28592509fbe94a53cc3d20a36a1cf245efc6d3f0017eae15b45ffd645c1ab949bb4e1670e6bb languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" +"@babel/plugin-transform-modules-umd@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.7" dependencies: - "@babel/helper-module-transforms": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7791d290121db210e4338b94b4a069a1a79e4c7a8d7638d8159a97b281851bbed3048dac87a4ae718ad963005e6c14a5d28e6db2eeb2b04e031cee92fb312f85 + checksum: 10c0/8849ab04eecdb73cd37e2d7289449fa5256331832b0304c220b2a6aaa12e2d2dd87684f2813412d1fc5bdb3d6b55cc08c6386d3273fe05a65177c09bee5b6769 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/41a0b0f2d0886318237440aa3b489f6d0305361d8671121777d9ff89f9f6de9d0c02ce93625049061426c8994064ef64deae8b819d1b14c00374a6a2336fb5d9 + checksum: 10c0/eb55fec55dc930cd122911f3e4a421320fa8b1b4de85bfd7ef11b46c611ec69b0213c114a6e1c6bc224d6b954ff183a0caa7251267d5258ecc0f00d6d9ca1d52 languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-new-target@npm:7.24.7" +"@babel/plugin-transform-new-target@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-new-target@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2540808a35e1a978e537334c43dab439cf24c93e7beb213a2e71902f6710e60e0184316643790c0a6644e7a8021e52f7ab8165e6b3e2d6651be07bdf517b67df + checksum: 10c0/8e5dce6d027e0f3fd394578ea1af7f515de157793a15c23a5aad7034a6d8a4005ef280238e67a232bb4dd4fafd3a264fed462deb149128ddd9ce59ff6f575cff languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7243c8ff734ed5ef759dd8768773c4b443c12e792727e759a1aec2c7fa2bfdd24f1ecb42e292a7b3d8bd3d7f7b861cf256a8eb4ba144fc9cc463892c303083d9 + checksum: 10c0/b35a96a79ef4895b00e4f758d3185cb17e4fbfada311894ad5f0988a55fc2c21820dc789b26a3cb8fbd620434faa516e52acb6e2da105c2edbd29de8b6b0facf languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" +"@babel/plugin-transform-numeric-separator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e18e09ca5a6342645d00ede477731aa6e8714ff357efc9d7cda5934f1703b3b6fb7d3298dce3ce3ba53e9ff1158eab8f1aadc68874cc21a6099d33a1ca457789 + checksum: 10c0/c028ae89e6b4e1d757f8f1ebcb3b420e6559bb35002728f6f5651d5f669fbf73764adf6e3597908fa12adf8dbae683e5f74b3a7f68e8774a9663c18c0f999539 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" +"@babel/plugin-transform-object-rest-spread@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.7" dependencies: - "@babel/helper-compilation-targets": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-parameters": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9ad64bc003f583030f9da50614b485852f8edac93f8faf5d1cd855201a4852f37c5255ae4daf70dd4375bdd4874e16e39b91f680d4668ec219ba05441ce286eb + checksum: 10c0/e8b978d9d1020452da0d5d92f80fe57e302761dac20137bb8bf863478a4779fcd63d314db89e796125d9d76da2a38f64f012d6e0c4913815951b3eb3fba2feb6 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-super@npm:7.24.7" +"@babel/plugin-transform-object-super@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-object-super@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-replace-supers": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/770cebb4b4e1872c216b17069db9a13b87dfee747d359dc56d9fcdd66e7544f92dc6ab1861a4e7e0528196aaff2444e4f17dc84efd8eaf162d542b4ba0943869 + checksum: 10c0/7f2968d4da997101b63fd3b74445c9b16f56bd32cd8a0a16c368af9d3e983e7675c1b05d18601f32307cb06e7d884ee11d13ff18a1f6830c0db243a9a852afab languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1e2f10a018f7d03b3bde6c0b70d063df8d5dd5209861d4467726cf834f5e3d354e2276079dc226aa8e6ece35f5c9b264d64b8229a8bb232829c01e561bcfb07a + checksum: 10c0/bb609e5103780be0825a255ffe1fefbb5335aead88a46eecc2257053279ea2c45ff66b0ef1fb54302c8c8c57146e88e52f3ecb62b4c6f619218d7b3843b352d9 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" +"@babel/plugin-transform-optional-chaining@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/4ffbe1aad7dec7c9aa2bf6ceb4b2f91f96815b2784f2879bde80e46934f59d64a12cb2c6262e40897c4754d77d2c35d8a5cfed63044fdebf94978b1ed3d14b17 + checksum: 10c0/887441ada6c2bc1b789984b7531d9bc585f335ece99642886d3d9fd8aee7e6b8d4f7ca61d76b5f23477f3aa607284d5056eadaa1eb17e7b39af6b0e834cbe878 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-parameters@npm:7.24.7" +"@babel/plugin-transform-parameters@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-parameters@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/53bf190d6926771545d5184f1f5f3f5144d0f04f170799ad46a43f683a01fab8d5fe4d2196cf246774530990c31fe1f2b9f0def39f0a5ddbb2340b924f5edf01 + checksum: 10c0/b40ba70278842ce1e800d7ab400df730994941550da547ef453780023bd61a9b8acf4b9fb8419c1b5bcbe09819a1146ff59369db11db07eb71870bef86a12422 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.4" +"@babel/plugin-transform-private-methods@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.7" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.4" - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7abdb427c3984a2c8a2e9d806297d8509b02f78a3501b7760e544be532446e9df328b876daa8fc38718f3dce7ccc45083016ee7aeaab169b81c142bc18700794 + checksum: 10c0/92e076f63f7c4696e1321dafdd56c4212eb41784cdadba0ebc39091f959a76d357c3df61a6c668be81d6b6ad8964ee458e85752ab0c6cfbbaf2066903edda732 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" +"@babel/plugin-transform-private-property-in-object@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c6fa7defb90b1b0ed46f24ff94ff2e77f44c1f478d1090e81712f33cf992dda5ba347016f030082a2f770138bac6f4a9c2c1565e9f767a125901c77dd9c239ba + checksum: 10c0/5ad8832ba54e2079c1f558b8680e170265e3f376424e5fbb75b17b7f08696fb0af6c96d23d92f7df3dcc559f5971a02587281fcec38a853174aa95478565f5fc languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" +"@babel/plugin-transform-property-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/52564b58f3d111dc02d241d5892a4b01512e98dfdf6ef11b0ed62f8b11b0acacccef0fc229b44114fe8d1a57a8b70780b11bdd18b807d3754a781a07d8f57433 + checksum: 10c0/6d5bccdc772207906666ad5201bd91e4e132e1d806dbcf4163a1d08e18c57cc3795578c4e10596514bcd6afaf9696f478ea4f0dea890176d93b9cb077b9e5c55 languageName: node linkType: hard @@ -1116,244 +1116,245 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" +"@babel/plugin-transform-react-display-name@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c14a07a9e75723c96f1a0a306b8a8e899ff1c6a0cc3d62bcda79bb1b54e4319127b258651c513a1a47da152cdc22e16525525a30ae5933a2980c7036fd0b4d24 + checksum: 10c0/a0c537cc7c328ed7468d3b6a37bf0d9cb15d94afcdf3f2849ce6e5a68494fc61f0fa4fc529482a6b95b00f3c5c734f310bf18085293bff40702789f06c816f36 languageName: node linkType: hard "@babel/plugin-transform-react-inline-elements@npm:^7.21.0": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-inline-elements@npm:7.24.7" + version: 7.25.7 + resolution: "@babel/plugin-transform-react-inline-elements@npm:7.25.7" dependencies: - "@babel/helper-builder-react-jsx": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-builder-react-jsx": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/affe44efc641e5dc4de077db74c80e3dee896a5dfea04491cbd8167ac40dcbb6eaa1ad0ba599e4a85071acdaa08732e7f5d9cf3236a2aa635406c232c8f08236 + checksum: 10c0/de85180c09002083cb330ef28d5b31b44e6ac6565c700b603be76e629f5a92c59ff69f79c08cc1dbd2dd1f271f44fe8d4c751deaf66c059ba721aa3cb43c881e languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" +"@babel/plugin-transform-react-jsx-development@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.7" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fce647db50f90a5291681f0f97865d9dc76981262dff71d6d0332e724b85343de5860c26f9e9a79e448d61e1d70916b07ce91e8c7f2b80dceb4b16aee41794d8 + checksum: 10c0/a3dc14644d09a6d22875af7b5584393ab53e467e0531cd192fc6242504dacaffa421e89265ba7f84fd4edef2b7b100d2e2ebf092a4dce2b55cf9c5fe29390c18 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx@npm:7.24.7" +"@babel/plugin-transform-react-jsx@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/plugin-syntax-jsx": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5c46d2c1c06a30e6bde084839df9cc689bf9c9cb0292105d61c225ca731f64247990724caee7dfc7f817dc964c062e8319e7f05394209590c476b65d75373435 + checksum: 10c0/6766b0357b8bbfcb77fca5350f06cf822c89bbe75ddcaea24614601ef23957504da24e76597d743038ce8fa081373b0663c8ad0c86d7c7226e8185f0680b8b56 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fae517d293d9c93b7b920458c3e4b91cb0400513889af41ba184a5f3acc8bfef27242cc262741bb8f87870df376f1733a0d0f52b966d342e2aaaf5607af8f73d + checksum: 10c0/d92c9b511850fb6dea71966a0d4f313d67e317db7fc3633a7ff2e27d6df2e95cbc91c4c25abdb6c8db651fcda842a0cb7433835a8a9d4a3fdc5d452068428101 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" +"@babel/plugin-transform-regenerator@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d2dc2c788fdae9d97217e70d46ba8ca9db0035c398dc3e161552b0c437113719a75c04f201f9c91ddc8d28a1da60d0b0853f616dead98a396abb9c845c44892b + checksum: 10c0/7ee3a57c4050bc908ef7ac392d810826b294970a7182f4ec34a8ca93dbe36deb21bc862616d46a6f3d881d6b5749930e1679e875b638a00866d844a4250df212 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" +"@babel/plugin-transform-reserved-words@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2229de2768615e7f5dc0bbc55bc121b5678fd6d2febd46c74a58e42bb894d74cd5955c805880f4e02d0e1cf94f6886270eda7fafc1be9305a1ec3b9fd1d063f5 + checksum: 10c0/920c98130daff6c1288fb13a9a2d2e45863bba93e619cb88d90e1f5b5cb358a3ee8880a425a3adb1b4bd5dbb6bd0500eea3370fc612633045eec851b08cc586c languageName: node linkType: hard "@babel/plugin-transform-runtime@npm:^7.22.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-runtime@npm:7.25.4" + version: 7.25.7 + resolution: "@babel/plugin-transform-runtime@npm:7.25.7" dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.10.6" babel-plugin-polyfill-regenerator: "npm:^0.6.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c08698276596d58bf49e222ead3c414c35d099a7e5a6174b11e2db9b74420e94783ada596820437622c3eccc8852c0e750ad053bd8e775f0050839479ba76e6a + checksum: 10c0/9b2514e9079361ac8e7e500ffd522dad869d61a3894302da7e29bbac80de00276c8a1b4394d1dcf0b51c57b2c854919928df9648be336139fdf1d6ecd6d1bb32 languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" +"@babel/plugin-transform-shorthand-properties@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/41b155bdbb3be66618358488bf7731b3b2e8fff2de3dbfd541847720a9debfcec14db06a117abedd03c9cd786db20a79e2a86509a4f19513f6e1b610520905cf + checksum: 10c0/4250f89a0072f0f400be7a2e3515227b8e2518737899bd57d497e5173284a0e05d812e4a3c219ffcd484e9fa9a01c19fce5acd77bbb898f4d594512c56701eb4 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-spread@npm:7.24.7" +"@babel/plugin-transform-spread@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-spread@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/facba1553035f76b0d2930d4ada89a8cd0f45b79579afd35baefbfaf12e3b86096995f4b0c402cf9ee23b3f2ea0a4460c3b1ec0c192d340962c948bb223d4e66 + checksum: 10c0/258bd1b52388cd7425d0ae25fa39538734f7540ea503a1d8a72211d33f6f214cb4e3b73d6cd03016cbcff5d41169f1e578b9ea331965ad224d223591983e90a7 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" +"@babel/plugin-transform-sticky-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5a74ed2ed0a3ab51c3d15fcaf09d9e2fe915823535c7a4d7b019813177d559b69677090e189ec3d5d08b619483eb5ad371fbcfbbff5ace2a76ba33ee566a1109 + checksum: 10c0/0e466cfc3ca1e0db4bb11eb630215b0e1f43066d7678325e5ddadcf5a118b2351a528f67205729c32ac5b78ab68ab7f40517dd33bcb1fb6b456509f5f54ce097 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" +"@babel/plugin-transform-template-literals@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3630f966257bcace122f04d3157416a09d40768c44c3a800855da81146b009187daa21859d1c3b7d13f4e19e8888e60613964b175b2275d451200fb6d8d6cfe6 + checksum: 10c0/a3455303b6841cb536ac66d1a2d03c194b9f371519482d8d1e8edbd33bf5ca7cdd5db1586b2b0ea5f909ebf74a0eafacf0fb28d257e4905445282dcdccfa6139 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" +"@babel/plugin-transform-typeof-symbol@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2f570a4fbbdc5fd85f48165a97452826560051e3b8efb48c3bb0a0a33ee8485633439e7b71bfe3ef705583a1df43f854f49125bd759abdedc195b2cf7e60012a + checksum: 10c0/ce1a0744a900b05de1372a70508c4148f17eb941c482da26eb369b9f0347570dce45470c8a86d907bc3a0443190344da1e18489ecfecb30388ab6178e8a9916b languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-typescript@npm:7.24.7" +"@babel/plugin-transform-typescript@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-typescript@npm:7.25.7" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-typescript": "npm:^7.24.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/plugin-syntax-typescript": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e8dacdc153a4c4599014b66eb01b94e3dc933d58d4f0cc3039c1a8f432e77b9df14f34a61964e014b975bf466f3fefd8c4768b3e887d3da1be9dc942799bdfdf + checksum: 10c0/5fa839b9560221698edff5e00b5cccc658c7875efaa7971c66d478f5b026770f12dd47b1be024463a44f9e29b4e14e8ddddbf4a2b324b0b94f58370dd5ae7195 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" +"@babel/plugin-transform-unicode-escapes@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8b18e2e66af33471a6971289492beff5c240e56727331db1d34c4338a6a368a82a7ed6d57ec911001b6d65643aed76531e1e7cac93265fb3fb2717f54d845e69 + checksum: 10c0/8b1f71fda0a832c6e26ba4c00f99e9033e6f9b36ced542a512921f4ad861a70e2fec2bd54a91a5ca2efa46aaa8c8893e4c602635c4ef172bd3ed6eef3178c70b languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" +"@babel/plugin-transform-unicode-property-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bc57656eb94584d1b74a385d378818ac2b3fca642e3f649fead8da5fb3f9de22f8461185936915dfb33d5a9104e62e7a47828331248b09d28bb2d59e9276de3e + checksum: 10c0/b4bfcf7529138d00671bf5cdfe606603d52cfe57ec1be837da57683f404fc0b0c171834a02515eb03379e5c806121866d097b90e31cb437d21d0ea59368ad82b languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" +"@babel/plugin-transform-unicode-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/83f72a345b751566b601dc4d07e9f2c8f1bc0e0c6f7abb56ceb3095b3c9d304de73f85f2f477a09f8cc7edd5e65afd0ff9e376cdbcbea33bc0c28f3705b38fd9 + checksum: 10c0/73ae34c02ea8b7ac7e4efa690f8c226089c074e3fef658d2a630ad898a93550d84146ce05e073c271c8b2bbba61cbbfd5a2002a7ea940dcad3274e5b5dcb6bcf languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.4" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/f65749835a98d8d6242e961f9276bdcdb09020e791d151ccc145acaca9a66f025b2c7cb761104f139180d35eb066a429596ee6edece81f5fd9244e0edb97d7ec + checksum: 10c0/39e45ae3db7adfc3457b1d6ba5608ffbace957ad019785967e5357a6639f261765bda12363f655d39265f5a2834af26327037751420191d0b73152ccc7ce3c35 languageName: node linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4": - version: 7.25.4 - resolution: "@babel/preset-env@npm:7.25.4" + version: 7.25.7 + resolution: "@babel/preset-env@npm:7.25.7" dependencies: - "@babel/compat-data": "npm:^7.25.4" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-validator-option": "npm:^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.3" - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.0" + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.7" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-class-properties": "npm:^7.12.13" "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-import-assertions": "npm:^7.24.7" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-assertions": "npm:^7.25.7" + "@babel/plugin-syntax-import-attributes": "npm:^7.25.7" "@babel/plugin-syntax-import-meta": "npm:^7.10.4" "@babel/plugin-syntax-json-strings": "npm:^7.8.3" "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" @@ -1365,64 +1366,64 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" - "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" - "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" - "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.24.7" - "@babel/plugin-transform-block-scoping": "npm:^7.25.0" - "@babel/plugin-transform-class-properties": "npm:^7.25.4" - "@babel/plugin-transform-class-static-block": "npm:^7.24.7" - "@babel/plugin-transform-classes": "npm:^7.25.4" - "@babel/plugin-transform-computed-properties": "npm:^7.24.7" - "@babel/plugin-transform-destructuring": "npm:^7.24.8" - "@babel/plugin-transform-dotall-regex": "npm:^7.24.7" - "@babel/plugin-transform-duplicate-keys": "npm:^7.24.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.0" - "@babel/plugin-transform-dynamic-import": "npm:^7.24.7" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.24.7" - "@babel/plugin-transform-export-namespace-from": "npm:^7.24.7" - "@babel/plugin-transform-for-of": "npm:^7.24.7" - "@babel/plugin-transform-function-name": "npm:^7.25.1" - "@babel/plugin-transform-json-strings": "npm:^7.24.7" - "@babel/plugin-transform-literals": "npm:^7.25.2" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" - "@babel/plugin-transform-member-expression-literals": "npm:^7.24.7" - "@babel/plugin-transform-modules-amd": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" - "@babel/plugin-transform-modules-systemjs": "npm:^7.25.0" - "@babel/plugin-transform-modules-umd": "npm:^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" - "@babel/plugin-transform-new-target": "npm:^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" - "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" - "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" - "@babel/plugin-transform-object-super": "npm:^7.24.7" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - "@babel/plugin-transform-private-methods": "npm:^7.25.4" - "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" - "@babel/plugin-transform-property-literals": "npm:^7.24.7" - "@babel/plugin-transform-regenerator": "npm:^7.24.7" - "@babel/plugin-transform-reserved-words": "npm:^7.24.7" - "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" - "@babel/plugin-transform-spread": "npm:^7.24.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" - "@babel/plugin-transform-template-literals": "npm:^7.24.7" - "@babel/plugin-transform-typeof-symbol": "npm:^7.24.8" - "@babel/plugin-transform-unicode-escapes": "npm:^7.24.7" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.24.7" - "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.4" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.7" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.7" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.7" + "@babel/plugin-transform-class-properties": "npm:^7.25.7" + "@babel/plugin-transform-class-static-block": "npm:^7.25.7" + "@babel/plugin-transform-classes": "npm:^7.25.7" + "@babel/plugin-transform-computed-properties": "npm:^7.25.7" + "@babel/plugin-transform-destructuring": "npm:^7.25.7" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.7" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.7" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.7" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.7" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.7" + "@babel/plugin-transform-for-of": "npm:^7.25.7" + "@babel/plugin-transform-function-name": "npm:^7.25.7" + "@babel/plugin-transform-json-strings": "npm:^7.25.7" + "@babel/plugin-transform-literals": "npm:^7.25.7" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.7" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.7" + "@babel/plugin-transform-modules-amd": "npm:^7.25.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.7" + "@babel/plugin-transform-modules-umd": "npm:^7.25.7" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.7" + "@babel/plugin-transform-new-target": "npm:^7.25.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.7" + "@babel/plugin-transform-object-super": "npm:^7.25.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" + "@babel/plugin-transform-parameters": "npm:^7.25.7" + "@babel/plugin-transform-private-methods": "npm:^7.25.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.7" + "@babel/plugin-transform-property-literals": "npm:^7.25.7" + "@babel/plugin-transform-regenerator": "npm:^7.25.7" + "@babel/plugin-transform-reserved-words": "npm:^7.25.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.7" + "@babel/plugin-transform-spread": "npm:^7.25.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.7" + "@babel/plugin-transform-template-literals": "npm:^7.25.7" + "@babel/plugin-transform-typeof-symbol": "npm:^7.25.7" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.7" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.7" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.7" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.7" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.10.6" babel-plugin-polyfill-regenerator: "npm:^0.6.1" - core-js-compat: "npm:^3.37.1" + core-js-compat: "npm:^3.38.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ed210a1974b5a1e7f80a933c87253907ec869457cea900bc97892642fa9a690c47627a9bac08a7c9495deb992a2b15f308ffca2741e1876ba47172c96fa27e14 + checksum: 10c0/bf704a06a69420250c1de2b126cd5c859a851002c2fb2cce0910cd85a8e6755b9b31577021e94feb7e1e53519923726349aaf07580923928791583db61438fb8 languageName: node linkType: hard @@ -1440,40 +1441,33 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.22.3": - version: 7.24.7 - resolution: "@babel/preset-react@npm:7.24.7" + version: 7.25.7 + resolution: "@babel/preset-react@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-transform-react-display-name": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx-development": "npm:^7.24.7" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-transform-react-display-name": "npm:^7.25.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.7" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.7" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9658b685b25cedaadd0b65c4e663fbc7f57394b5036ddb4c99b1a75b0711fb83292c1c625d605c05b73413fc7a6dc20e532627f6a39b6dc8d4e00415479b054c + checksum: 10c0/b133b1a2f46c70a337d8b1ef442e09e3dbdaecb0d6bed8f1cb64dfddc31c16e248b017385ab909caeebd8462111c9c0e1c5409deb10f2be5cb5bcfdaa4d27718 languageName: node linkType: hard "@babel/preset-typescript@npm:^7.21.5": - version: 7.24.7 - resolution: "@babel/preset-typescript@npm:7.24.7" + version: 7.25.7 + resolution: "@babel/preset-typescript@npm:7.25.7" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7" - "@babel/plugin-transform-typescript": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/plugin-syntax-jsx": "npm:^7.25.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" + "@babel/plugin-transform-typescript": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/986bc0978eedb4da33aba8e1e13a3426dd1829515313b7e8f4ba5d8c18aff1663b468939d471814e7acf4045d326ae6cff37239878d169ac3fe53a8fde71f8ee - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + checksum: 10c0/8dc1258e3c5230bbe42ff9811f08924509238e6bd32fa0b7b0c0a6c5e1419512a8e1f733e1b114454d367b7c164beca2cf33acf2ed9e0d99be010c1c5cdbef0c languageName: node linkType: hard @@ -1487,48 +1481,48 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.6 - resolution: "@babel/runtime@npm:7.25.6" + version: 7.25.7 + resolution: "@babel/runtime@npm:7.25.7" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/d6143adf5aa1ce79ed374e33fdfd74fa975055a80bc6e479672ab1eadc4e4bfd7484444e17dd063a1d180e051f3ec62b357c7a2b817e7657687b47313158c3d2 + checksum: 10c0/86b7829d2fc9343714a9afe92757cf96c4dc799006ca61d73cda62f4b9e29bfa1ce36794955bc6cb4c188f5b10db832c949339895e1bbe81a69022d9d578ce29 languageName: node linkType: hard -"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 languageName: node linkType: hard -"@babel/traverse@npm:7, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/traverse@npm:7.25.4" +"@babel/traverse@npm:7, @babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.4" - "@babel/parser": "npm:^7.25.4" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.4" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/37c9b49b277e051fe499ef5f6f217370c4f648d6370564d70b5e6beb2da75bfda6d7dab1d39504d89e9245448f8959bc1a5880d2238840cdc3979b35338ed0f5 + checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.25.4 - resolution: "@babel/types@npm:7.25.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.25.7 + resolution: "@babel/types@npm:7.25.7" dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/9aa25dfcd89cc4e4dde3188091c34398a005a49e2c2b069d0367b41e1122c91e80fd92998c52a90f2fb500f7e897b6090ec8be263d9cb53d0d75c756f44419f2 + checksum: 10c0/e03e1e2e08600fa1e8eb90632ac9c253dd748176c8d670d85f85b0dc83a0573b26ae748a1cbcb81f401903a3d95f43c3f4f8d516a5ed779929db27de56289633 languageName: node linkType: hard @@ -5687,17 +5681,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" +"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": + version: 4.24.0 + resolution: "browserslist@npm:4.24.0" dependencies: - caniuse-lite: "npm:^1.0.30001646" - electron-to-chromium: "npm:^1.5.4" + caniuse-lite: "npm:^1.0.30001663" + electron-to-chromium: "npm:^1.5.28" node-releases: "npm:^2.0.18" update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 + checksum: 10c0/95e76ad522753c4c470427f6e3c8a4bb5478ff448841e22b3d3e53f89ecaf17b6984666d6c7e715c370f1e7fa0cf684f42e34e554236a8b2fab38ea76b9e4c52 languageName: node linkType: hard @@ -5899,10 +5893,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001651 - resolution: "caniuse-lite@npm:1.0.30001651" - checksum: 10c0/7821278952a6dbd17358e5d08083d258f092e2a530f5bc1840657cb140fbbc5ec44293bc888258c44a18a9570cde149ed05819ac8320b9710cf22f699891e6ad +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001663": + version: 1.0.30001666 + resolution: "caniuse-lite@npm:1.0.30001666" + checksum: 10c0/2d49e9be676233c24717f12aad3d01b3e5f902b457fe1deefaa8d82e64786788a8f79381ae437c61b50e15c9aea8aeb59871b1d54cb4c28b9190d53d292e2339 languageName: node linkType: hard @@ -6412,7 +6406,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": +"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": version: 3.38.1 resolution: "core-js-compat@npm:3.38.1" dependencies: @@ -7474,10 +7468,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.4": - version: 1.5.7 - resolution: "electron-to-chromium@npm:1.5.7" - checksum: 10c0/be4460bbe3d2186a16d53a03da67fde6fd06ad41943553ce517a45d52e03424732a982f75528e8a2d5fb042d6afde64186aa482caec0fb925daa5a74cf5ef060 +"electron-to-chromium@npm:^1.5.28": + version: 1.5.31 + resolution: "electron-to-chromium@npm:1.5.31" + checksum: 10c0/e8aecd88c4c6d50a9d459b4b222865b855bab8f1b52e82913804e18b7884f2887bd76c61b3aa08c2ccbdcda098dd8486443f75bf770f0138f21dd9e63548fca7 languageName: node linkType: hard @@ -11190,21 +11184,12 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" bin: jsesc: bin/jsesc - checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 languageName: node linkType: hard @@ -15042,12 +15027,12 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.1 - resolution: "regenerate-unicode-properties@npm:10.1.1" +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" dependencies: regenerate: "npm:^1.4.2" - checksum: 10c0/89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 languageName: node linkType: hard @@ -15110,28 +15095,35 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^5.3.1": - version: 5.3.2 - resolution: "regexpu-core@npm:5.3.2" +"regexpu-core@npm:^6.1.1": + version: 6.1.1 + resolution: "regexpu-core@npm:6.1.1" dependencies: - "@babel/regjsgen": "npm:^0.8.0" regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.1.0" - regjsparser: "npm:^0.9.1" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.11.0" unicode-match-property-ecmascript: "npm:^2.0.0" unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + checksum: 10c0/07d49697e20f9b65977535abba4858b7f5171c13f7c366be53ec1886d3d5f69f1b98cc6a6e63cf271adda077c3366a4c851c7473c28bbd69cf5a6b6b008efc3e languageName: node linkType: hard -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.11.0": + version: 0.11.0 + resolution: "regjsparser@npm:0.11.0" dependencies: - jsesc: "npm:~0.5.0" + jsesc: "npm:~3.0.2" bin: regjsparser: bin/parser - checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + checksum: 10c0/155143a8f2c95e3170df4fff10ddf3f16a351b5d2b8cbb257e9f4a50abb9a980a28af0936b5bf850fee767537ffa8eb77c6b211fe8be19834dbe584dfd950c62 languageName: node linkType: hard From fe3f5375e3c0a2f138558947db69267813c0e726 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:15:31 +0200 Subject: [PATCH 086/550] New Crowdin Translations (automated) (#32233) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/de.json | 4 +- app/javascript/mastodon/locales/nl.json | 10 +- app/javascript/mastodon/locales/sc.json | 124 ++++++++++++++++++++++++ app/javascript/mastodon/locales/tr.json | 4 +- app/javascript/mastodon/locales/uk.json | 5 + config/locales/de.yml | 2 +- config/locales/sc.yml | 43 ++++++++ config/locales/tr.yml | 2 +- 8 files changed, 183 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 6f45d4fe53..0b541b2e48 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -41,7 +41,7 @@ "account.go_to_profile": "Profil aufrufen", "account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden", "account.in_memoriam": "Zum Andenken.", - "account.joined_short": "Beigetreten", + "account.joined_short": "Mitglied seit", "account.languages": "Ausgewählte Sprachen ändern", "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt", "account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.", @@ -534,7 +534,7 @@ "notification.relationships_severance_event.domain_block": "Ein Admin von {from} hat {target} blockiert – darunter {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst.", "notification.relationships_severance_event.learn_more": "Mehr erfahren", "notification.relationships_severance_event.user_domain_block": "Du hast {target} blockiert – {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst, wurden entfernt.", - "notification.status": "{name} hat gerade etwas gepostet", + "notification.status": "{name} veröffentlichte gerade", "notification.update": "{name} bearbeitete einen Beitrag", "notification_requests.accept": "Genehmigen", "notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen …} other {# Anfragen genehmigen …}}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 1c31574dea..71523b37d8 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -504,13 +504,13 @@ "notification.admin.report_statuses": "{name} rapporteerde {target} voor {category}", "notification.admin.report_statuses_other": "{name} rapporteerde {target}", "notification.admin.sign_up": "{name} heeft zich geregistreerd", - "notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben zich geregistreerd", + "notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben zich geregistreerd", "notification.favourite": "{name} markeerde jouw bericht als favoriet", - "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# ander} other {# anderen}} hebben jouw bericht als favoriet gemarkeerd", + "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben jouw bericht als favoriet gemarkeerd", "notification.follow": "{name} volgt jou nu", - "notification.follow.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben je gevolgd", + "notification.follow.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben je gevolgd", "notification.follow_request": "{name} wil jou graag volgen", - "notification.follow_request.name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}} hebben gevraagd om je te volgen", + "notification.follow_request.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben gevraagd om je te volgen", "notification.label.mention": "Vermelding", "notification.label.private_mention": "Privébericht", "notification.label.private_reply": "Privéreactie", @@ -528,7 +528,7 @@ "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.reblog.name_and_others_with_link": "{name} en {count, plural, one {# ander} other {# anderen}} hebben jouw bericht geboost", + "notification.reblog.name_and_others_with_link": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben jouw bericht geboost", "notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", "notification.relationships_severance_event.domain_block": "Een beheerder van {from} heeft {target} geblokkeerd, inclusief {followersCount} van jouw volgers en {followingCount, plural, one {# account} other {# accounts}} die jij volgt.", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index bb7d062b95..227a7483a7 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Màssimu de rechestas barigadu", "alert.unexpected.message": "Ddoe est istada una faddina.", "alert.unexpected.title": "Oh!", + "alt_text_badge.title": "Testu alternativu", "announcement.announcement": "Annùntziu", "attachments_list.unprocessed": "(non protzessadu)", "audio.hide": "Cua s'àudio", @@ -97,6 +98,8 @@ "block_modal.title": "Boles blocare s'utente?", "block_modal.you_wont_see_mentions": "No as a bìdere is publicatziones chi mèntovent custa persone.", "boost_modal.combo": "Podes incarcare {combo} pro brincare custu sa borta chi benit", + "boost_modal.reblog": "Boles potentziare sa publicatzione?", + "boost_modal.undo_reblog": "Boles tzessare de potentziare sa publicatzione?", "bundle_column_error.copy_stacktrace": "Còpia s'informe de faddina", "bundle_column_error.error.body": "Sa pàgina pedida non faghiat a dda renderizare. Diat pòdere èssere pro neghe de una faddina in su còdighe nostru, o de unu problema de cumpatibilidade de su navigadore.", "bundle_column_error.error.title": "Oh, no!", @@ -104,11 +107,15 @@ "bundle_column_error.network.title": "Faddina de connessione", "bundle_column_error.retry": "Torra·bi a proare", "bundle_column_error.return": "Torra a sa pàgina printzipale", + "bundle_column_error.routing.body": "Impossìbile agatare sa pàgina rechesta. Seguru chi s'URL in sa barra de indiritzos est curretu?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Serra", "bundle_modal_error.message": "Faddina in su carrigamentu de custu cumponente.", "bundle_modal_error.retry": "Torra·bi a proare", + "closed_registrations.other_server_instructions": "Dae chi Mastodon est detzentralizadu, podes creare unu contu in un'àteru serbidore e interagire cun custu.", + "closed_registrations_modal.description": "Sa creatzione de contos in {domain} no est possìbile in custu momentu, però tene in cunsideru chi non tenes bisòngiu de unu contu ispetzìficu in {domain} pro impreare Mastodon.", "closed_registrations_modal.find_another_server": "Agata un'àteru serbidore", + "closed_registrations_modal.title": "Su registru a Mastodon", "column.about": "Informatziones", "column.blocks": "Persones blocadas", "column.bookmarks": "Sinnalibros", @@ -142,6 +149,7 @@ "compose.published.open": "Aberi", "compose.saved.body": "Publicatzione sarvada.", "compose_form.direct_message_warning_learn_more": "Àteras informatziones", + "compose_form.encryption_warning": "Is publicatziones a Mastodon no sunt critografados a nodu terminale. Non cumpartzas informatziones delicadas in Mastodon.", "compose_form.hashtag_warning": "Custa publicatzione no at a èssere ammustrada in peruna eticheta, dae chi no est pùblica. Isceti is publicatziones pùblicas podent èssere chircadas cun etichetas.", "compose_form.lock_disclaimer": "Su contu tuo no est {locked}. Cale si siat persone ti podet sighire pro bìdere is messàgios tuos chi imbies a sa gente chi ti sighit.", "compose_form.lock_disclaimer.lock": "blocadu", @@ -171,15 +179,23 @@ "confirmations.discard_edit_media.confirm": "Iscarta", "confirmations.discard_edit_media.message": "Tenes modìficas non sarvadas a is descritziones o a is anteprimas de is cuntenutos, ddas boles iscartare su matessi?", "confirmations.edit.confirm": "Modìfica", + "confirmations.edit.message": "Modifichende immoe as a subrascrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?", + "confirmations.edit.title": "Boles subraiscrìere sa publicatzione?", "confirmations.logout.confirm": "Essi·nche", "confirmations.logout.message": "Seguru chi boles essire?", + "confirmations.logout.title": "Boles serrare sa sessione?", "confirmations.mute.confirm": "A sa muda", "confirmations.redraft.confirm": "Cantzella e torra a fàghere", "confirmations.redraft.message": "Seguru chi boles cantzellare e torrare a fàghere custa publicatzione? As a pèrdere is preferidos e is cumpartziduras, e is rispostas a su messàgiu originale ant a abarrare òrfanas.", + "confirmations.redraft.title": "Boles cantzellare e torrare a iscrìere sa publicatzione?", "confirmations.reply.confirm": "Risponde", "confirmations.reply.message": "Rispondende immoe as a subrascrìere su messàgiu chi ses iscriende. Seguru chi boles sighire?", + "confirmations.reply.title": "Boles subraiscrìere sa publicatzione?", "confirmations.unfollow.confirm": "Non sigas prus", "confirmations.unfollow.message": "Seguru chi non boles sighire prus a {name}?", + "confirmations.unfollow.title": "Boles tzessare de sighire s'utente?", + "content_warning.hide": "Cua sa publicatzione", + "content_warning.show": "Ammustra·dda su pròpiu", "conversation.delete": "Cantzella arresonada", "conversation.mark_as_read": "Signala comente lèghidu", "conversation.open": "Ammustra arresonada", @@ -193,7 +209,10 @@ "directory.recently_active": "Cun atividade dae pagu", "disabled_account_banner.account_settings": "Cunfiguratziones de su contu", "disabled_account_banner.text": "Su contu tuo {disabledAccount} no est ativu.", + "dismissable_banner.community_timeline": "Custas sunt is publicatziones pùblicas prus reghentes dae gente cun contu in {domain}.", "dismissable_banner.dismiss": "Iscarta", + "dismissable_banner.explore_links": "Custas sunt is istòrias de noas prus cumpartzidas in sa rete oe. Is istòrias prus noas publicadas dae gente prus diversa ant a èssere priorizadas.", + "dismissable_banner.explore_statuses": "Custas sunt publicatziones dae sa rete detzentralizada chi sunt retzende atentzione oe. Is publicatziones prus noas cun prus cumpartziduras e preferèntzias ant a èssere priorizadas.", "domain_block_modal.block": "Bloca su serbidore", "domain_block_modal.block_account_instead": "Bloca imbetzes a @{name}", "domain_block_modal.they_can_interact_with_old_posts": "Is persones de custu serbidore podent ancora interagire cun is publicatziones betzas tuas.", @@ -207,6 +226,7 @@ "domain_pill.their_handle": "S'identificadore suo:", "domain_pill.their_server": "Sa domo digitale sua, in ue istant totu is publicatziones suas.", "domain_pill.username": "Nòmine de utente", + "domain_pill.whats_in_a_handle": "Ite est un'identificadore?", "domain_pill.your_handle": "S'identificadore tuo:", "domain_pill.your_server": "Sa domo digitale tua, in ue istant totu is publicatziones tuas. Custa non t'agradat? Tràmuda serbidore in cale si siat momentu e bati·ti fintzas in fatu is sighidores tuos.", "domain_pill.your_username": "S'identificadore ùnicu tuo in custu serbidore. Si podent agatare utentes cun su matessi nòmine de utente in àteros serbidores.", @@ -254,6 +274,7 @@ "explore.trending_links": "Noas", "explore.trending_statuses": "Publicatziones", "explore.trending_tags": "Etichetas", + "filter_modal.added.context_mismatch_title": "Su cuntestu non currispondet.", "filter_modal.added.expired_title": "Filtru iscadidu.", "filter_modal.added.review_and_configure_title": "Cunfiguratziones de filtru", "filter_modal.added.settings_link": "pàgina de cunfiguratzione", @@ -277,7 +298,13 @@ "follow_suggestions.featured_longer": "Seberadu a manu dae s'iscuadra de {domain}", "follow_suggestions.friends_of_friends_longer": "Populare intre persones chi sighis", "follow_suggestions.hints.featured": "Custu profilu est istadu seberadu a manu dae s'iscuadra {domain}.", + "follow_suggestions.personalized_suggestion": "Cussìgiu personalizadu", + "follow_suggestions.popular_suggestion": "Cussìgiu populare", + "follow_suggestions.popular_suggestion_longer": "Populare a {domain}", + "follow_suggestions.similar_to_recently_followed_longer": "Profilos sìmiles a is chi as sighidu de reghente", "follow_suggestions.view_all": "Ammustra totu", + "follow_suggestions.who_to_follow": "Chie sighire", + "followed_tags": "Etichetas sighidas", "footer.about": "Informatziones", "footer.directory": "Diretòriu de profilos", "footer.get_app": "Otene s'aplicatzione", @@ -302,6 +329,11 @@ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}} oe", "hashtag.follow": "Sighi su hashtag", "hashtag.unfollow": "Non sigas prus s'eticheta", + "hashtags.and_other": "… e {count, plural, one {un'àteru} other {àteros #}}", + "hints.profiles.posts_may_be_missing": "Podet èssere chi ammanchent tzertas publicatziones de custu profilu.", + "hints.profiles.see_more_posts": "Bide prus publicatziones a {domain}", + "hints.threads.replies_may_be_missing": "Podet èssere chi ammanchent rispostas dae àteros serbidores.", + "hints.threads.see_more": "Bide prus rispostas a {domain}", "home.column_settings.show_reblogs": "Ammustra is cumpartziduras", "home.column_settings.show_replies": "Ammustra rispostas", "home.hide_announcements": "Cua annùntzios", @@ -309,7 +341,14 @@ "home.pending_critical_update.link": "Ammustra is atualizatziones", "home.pending_critical_update.title": "Atualizatzione de seguresa crìtica a disponimentu.", "home.show_announcements": "Ammustra annùntzios", + "ignore_notifications_modal.disclaimer": "Mastodon non podet informare is utentes chi as innioradu is notìficas issoro. Inniorare notìficas no at a evitare chi s'imbient is messàgios.", + "ignore_notifications_modal.filter_instead": "Opuru filtra", + "ignore_notifications_modal.filter_to_act_users": "As a pòdere ancora atzetare, refudare o sinnalare a utentes", + "ignore_notifications_modal.filter_to_avoid_confusion": "Filtrare agiudat a evitare possìbiles confusiones", "interaction_modal.description.reply": "Podes rispòndere a custa publicatzione cun unu contu de Mastodon.", + "interaction_modal.login.action": "Torra a sa pàgina printzipale", + "interaction_modal.login.prompt": "Su domìniu de su serbidore domèsticu tuo, pro esempru mastodon.social", + "interaction_modal.no_account_yet": "Non ses in Mastodon?", "interaction_modal.on_this_server": "In custu serbidore", "interaction_modal.title.follow": "Sighi a {name}", "interaction_modal.title.reply": "Risponde a sa publicatzione de {name}", @@ -353,11 +392,13 @@ "lightbox.next": "Imbeniente", "lightbox.previous": "Pretzedente", "limited_account_hint.title": "Custu profilu est istadu cuadu dae sa moderatzione de {domain}.", + "link_preview.shares": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}", "lists.account.add": "Agiunghe a sa lista", "lists.account.remove": "Boga dae sa lista", "lists.delete": "Cantzella sa lista", "lists.edit": "Modìfica sa lista", "lists.edit.submit": "Muda su tìtulu", + "lists.exclusive": "Cua custas publicatziones dae sa pàgina printzipale", "lists.new.create": "Agiunghe lista", "lists.new.title_placeholder": "Tìtulu de sa lista noa", "lists.replies_policy.followed": "Cale si siat persone chi sighis", @@ -368,7 +409,20 @@ "lists.subheading": "Is listas tuas", "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", "loading_indicator.label": "Carrighende…", + "media_gallery.hide": "Cua", + "moved_to_account_banner.text": "Su contu tuo {disabledAccount} est disativadu in custu momentu ca est istadu tramudadu a {movedToAccount}.", + "mute_modal.hide_from_notifications": "Cua dae is notìficas", + "mute_modal.hide_options": "Cua is optziones", + "mute_modal.indefinite": "Fintzas a cando no apo a torrare a ativare is notìficas", + "mute_modal.show_options": "Ammustra is optziones", + "mute_modal.they_can_mention_and_follow": "Ti podent mentovare e sighire, però no ddos as a bìdere.", + "mute_modal.they_wont_know": "No ant a ischire chi ddos as postu a sa muda.", + "mute_modal.title": "Boles pònnere a custu contu a sa muda?", + "mute_modal.you_wont_see_mentions": "No as a bìdere is publicatziones chi mèntovent a custa persone.", + "mute_modal.you_wont_see_posts": "At a pòdere bìdere is publicatziones tuas, però tue no as a bìdere cussas suas.", "navigation_bar.about": "Informatziones", + "navigation_bar.administration": "Amministratzione", + "navigation_bar.advanced_interface": "Aberi s'interfache web avantzada", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", "navigation_bar.community_timeline": "Lìnia de tempus locale", @@ -380,10 +434,13 @@ "navigation_bar.favourites": "Preferidos", "navigation_bar.filters": "Faeddos a sa muda", "navigation_bar.follow_requests": "Rechestas de sighidura", + "navigation_bar.followed_tags": "Etichetas sighidas", "navigation_bar.follows_and_followers": "Gente chi sighis e sighiduras", "navigation_bar.lists": "Listas", "navigation_bar.logout": "Essi", + "navigation_bar.moderation": "Moderatzione", "navigation_bar.mutes": "Persones a sa muda", + "navigation_bar.opened_in_classic_interface": "Publicatziones, contos e àteras pàginas ispetzìficas sunt abertas in manera predefinida in s'interfache web clàssica.", "navigation_bar.personal": "Informatziones personales", "navigation_bar.pins": "Publicatziones apicadas", "navigation_bar.preferences": "Preferèntzias", @@ -391,10 +448,24 @@ "navigation_bar.search": "Chirca", "navigation_bar.security": "Seguresa", "not_signed_in_indicator.not_signed_in": "Ti depes identificare pro atzèdere a custa resursa.", + "notification.admin.report": "{name} at sinnaladu a {target}", + "notification.admin.report_account": "{name} at sinnaladu {count, plural, one {una publicatzione} other {# publicatziones}} dae {target} pro {category}", + "notification.admin.report_account_other": "{name} at sinnaladu {count, plural, one {una publicatzione} other {# publicatziones}} dae {target}", + "notification.admin.report_statuses": "{name} at sinnaladu a {target} pro {category}", + "notification.admin.report_statuses_other": "{name} at sinnaladu a {target}", "notification.admin.sign_up": "{name} at aderidu", + "notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} si sunt registradas", "notification.favourite": "{name} at marcadu comente a preferidu s'istadu tuo", + "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant marcadu sa publicatzione tua comente preferida", "notification.follow": "{name} ti sighit", + "notification.follow.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ti sighint", "notification.follow_request": "{name} at dimandadu de ti sighire", + "notification.follow_request.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant pedidu de ti sighire", + "notification.label.mention": "Mèntovu", + "notification.label.private_mention": "Mèntovu privadu", + "notification.label.private_reply": "Risposta privada", + "notification.label.reply": "Risposta", + "notification.mention": "Mèntovu", "notification.moderation-warning.learn_more": "Àteras informatziones", "notification.moderation_warning": "T'ant imbiadu un'avisu de moderatzione", "notification.moderation_warning.action_delete_statuses": "Unas cantas de is publicatziones tuas sunt istadas cantzelladas.", @@ -407,12 +478,30 @@ "notification.own_poll": "Sondàgiu acabbadu", "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.reblog": "{name} at cumpartzidu sa publicatzione tua", + "notification.reblog.name_and_others_with_link": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant potentziadu sa publicatzione tua", "notification.relationships_severance_event": "Connessiones pèrdidas cun {name}", + "notification.relationships_severance_event.account_suspension": "S'amministratzione de {from} at suspèndidu a {target}; custu bolet nàrrere chi non podes prus retzire atualizatziones dae in cue o interagire cun cussos contos.", + "notification.relationships_severance_event.domain_block": "S'amministratzione de {from} at blocadu a {target}, incluende {followersCount} sighiduras tuas e {followingCount, plural, one {un'àteru contu} other {àteros # contos}} chi sighis.", "notification.relationships_severance_event.learn_more": "Àteras informatziones", + "notification.relationships_severance_event.user_domain_block": "As blocadu a {target}, bogadu a {followersCount} contos chi ti sighint e {followingCount, plural, one {un'àteru contu} other {àteros # contos}} chi sighis.", "notification.status": "{name} at publicadu cosa", "notification.update": "{name} at modificadu una publicatzione", "notification_requests.accept": "Atzeta", + "notification_requests.accept_multiple": "{count, plural, one {Atzeta una rechesta…} other {Atzeta # rechestas…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Atzeta sa rechesta} other {Atzeta is rechestas}}", + "notification_requests.confirm_accept_multiple.message": "Ses atzetende {count, plural, one {una rechesta de notìfica} other {# rechestas de notìfica}}. Seguru chi boles sighire?", + "notification_requests.confirm_accept_multiple.title": "Boles atzetare is rechestas de notìfica?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Iscarta sa rechesta} other {Iscarta is rechestas}}", + "notification_requests.confirm_dismiss_multiple.message": "Ses acanta de iscartare {count, plural, one {una rechesta de notìfica} other {# rechestas de notìfica}}. No nche {count, plural, one {} other {}} as a pòdere prus atzèdere in manera sèmplitze. Seguru chi boles sighire?", + "notification_requests.confirm_dismiss_multiple.title": "Boles iscartare is rechestas de notìfica?", "notification_requests.dismiss": "Iscarta", + "notification_requests.dismiss_multiple": "{count, plural, one {Iscarta una rechesta…} other {Iscarta # rechestas…}}", + "notification_requests.edit_selection": "Modifica", + "notification_requests.exit_selection": "Fatu", + "notification_requests.explainer_for_limited_account": "Is notìficas de custu contu sunt istadas filtradas, ca su contu est istadu limitadu dae sa moderatzione.", + "notification_requests.explainer_for_limited_remote_account": "Is notìficas de custu contu sunt istadas filtradas, ca su contu o su serbidore suo est istadu limitadu dae sa moderatzione.", + "notification_requests.maximize": "Ismànnia", + "notification_requests.minimize_banner": "Mìnima su bànner de notìficas filtradas", "notification_requests.notifications_from": "Notìficas dae {name}", "notification_requests.title": "Notìficas filtradas", "notifications.clear": "Lìmpia notìficas", @@ -472,6 +561,11 @@ "poll_button.add_poll": "Agiunghe unu sondàgiu", "poll_button.remove_poll": "Cantzella su sondàgiu", "privacy.change": "Modìfica s'istadu de riservadesa", + "privacy.direct.long": "Totu is utentes mentovados in sa publicatzione", + "privacy.direct.short": "Persones ispetzìficas", + "privacy.private.long": "Isceti chie ti sighit", + "privacy.private.short": "Sighiduras", + "privacy.public.long": "Cale si siat persone a intro o a foras de Mastodon", "privacy.public.short": "Pùblicu", "privacy_policy.last_updated": "Ùrtima atualizatzione: {date}", "privacy_policy.title": "Polìtica de riservadesa", @@ -497,34 +591,64 @@ "report.categories.legal": "Giurìdicu", "report.categories.other": "Àteru", "report.categories.spam": "Àliga", + "report.category.subtitle": "Sèbera sa currispondèntzia prus arta", + "report.category.title": "Nara·nos ite sutzedet cun custu {type}", "report.category.title_account": "profilu", "report.category.title_status": "publicatzione", "report.close": "Fatu", + "report.comment.title": "Nch'at àteru chi depamus ischire?", "report.forward": "Torra a imbiare a {target}", "report.forward_hint": "Custu contu est de un'àteru serbidore. Ddi boles imbiare puru una còpia anònima de custu informe?", "report.mute": "A sa muda", + "report.mute_explanation": "No as a bìdere is publicatziones suas. Ti podet ancora sighire e bìdere is publicatziones, ma no at a ischire chi dd'as postu a sa muda.", "report.next": "Imbeniente", "report.placeholder": "Cummentos additzionales", "report.reasons.dislike": "Non mi praghet", "report.reasons.dislike_description": "Est una cosa chi non boles bìdere", "report.reasons.legal": "Illegale", "report.reasons.other": "Un'àtera cosa", + "report.reasons.other_description": "Su problema non currispondet a is àteras categorias", "report.reasons.spam": "Est àliga", + "report.rules.subtitle": "Seletziona totu is chi àplichent", + "report.statuses.subtitle": "Seletziona totu is chi àplichent", "report.submit": "Imbia", "report.target": "Informende de {target}", + "report.thanks.title": "Non boles bìdere custu?", + "report.thanks.title_actionable": "Gràtzias de sa sinnalatzione, dd'amus a averiguare.", "report.unfollow": "Non sigas prus a @{name}", + "report.unfollow_explanation": "Ses sighende custu contu. Si non boles bìdere is publicatziones suas in sa pàgina printzipale tua, no ddu sigas prus.", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.categories.legal": "Giurìdicu", "report_notification.categories.legal_sentence": "cuntenutu illegale", "report_notification.categories.other": "Àteru", "report_notification.categories.other_sentence": "àteru", "report_notification.categories.spam": "Àliga", + "report_notification.categories.spam_sentence": "àliga", + "report_notification.open": "Aberi una sinnalatzione", + "search.no_recent_searches": "Nissuna chirca reghente", "search.placeholder": "Chirca", + "search.quick_action.account_search": "Profilos chi currispondent cun {x}", + "search.quick_action.go_to_account": "Bae a su profilu {x}", + "search.quick_action.go_to_hashtag": "Bae a s'eticheta {x}", + "search.quick_action.open_url": "Aberi s'URL in Mastodon", + "search.quick_action.status_search": "Publicatziones chi currispondent cun {x}", + "search.search_or_paste": "Chirca o incolla un'URL", + "search_popout.full_text_search_disabled_message": "No a disponimentu a {domain}.", + "search_popout.full_text_search_logged_out_message": "Isceti a disponimentu cun sa sessione aberta.", + "search_popout.language_code": "Còdighe de limba ISO", + "search_popout.options": "Optziones de chirca", + "search_popout.quick_actions": "Atziones lestras", + "search_popout.recent": "Chircas reghentes", + "search_popout.specific_date": "data ispetzìfica", "search_popout.user": "utente", "search_results.accounts": "Profilos", "search_results.all": "Totus", "search_results.hashtags": "Etichetas", + "search_results.nothing_found": "Impossìbile agatare currispondèntzias pro custos tèrmines de chirca", + "search_results.see_all": "Bide totu", "search_results.statuses": "Publicatziones", + "search_results.title": "Chirca {q}", + "server_banner.about_active_users": "Gente chi at impreadu custu serbidore is ùrtimas 30 dies (Utentes cun Atividade a su Mese)", "server_banner.active_users": "utentes ativos", "server_banner.administered_by": "Amministradu dae:", "server_banner.server_stats": "Istatìsticas de su serbidore:", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 2d9c7321d0..36c0b68f00 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -124,7 +124,7 @@ "column.direct": "Özel değinmeler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", - "column.favourites": "Favorilerin", + "column.favourites": "Gözdelerin", "column.firehose": "Anlık Akışlar", "column.follow_requests": "Takip istekleri", "column.home": "Anasayfa", @@ -812,7 +812,7 @@ "status.reblogged_by": "{name} yeniden paylaştı", "status.reblogs": "{count, plural, one {yeniden paylaşım} other {yeniden paylaşım}}", "status.reblogs.empty": "Henüz hiç kimse bu gönderiyi yeniden paylaşmadı. Herhangi bir kullanıcı yeniden paylaştığında burada görüntülenecek.", - "status.redraft": "Sil,Düzenle ve Yeniden paylaş", + "status.redraft": "Sil,Düzenle ve yeniden-paylaş", "status.remove_bookmark": "Yer işaretini kaldır", "status.replied_in_thread": "Akışta yanıtlandı", "status.replied_to": "{name} kullanıcısına yanıt verdi", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 1753d0bebe..a48b071f54 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -852,6 +852,11 @@ "upload_error.poll": "Не можна завантажувати файли до опитувань.", "upload_form.audio_description": "Опишіть для людей із вадами слуху", "upload_form.description": "Опишіть для людей з вадами зору", + "upload_form.drag_and_drop.instructions": "Щоб вибрати медіавкладення, натисніть пробіл або Enter. Під час перетягування, використайте клавіші зі стрілками для переміщення вкладення в будь-якому напрямку. Натисніть пробіл або Enter знову, щоб залишити медіавкладення в новому положенні, або натисніть клавішу Escape, щоб скасувати.", + "upload_form.drag_and_drop.on_drag_cancel": "Перетягування скасовано. Медіавкладення {item} прибрано.", + "upload_form.drag_and_drop.on_drag_end": "Медіавкладення {item} прибрано.", + "upload_form.drag_and_drop.on_drag_over": "Медіавкладення {item} переміщено.", + "upload_form.drag_and_drop.on_drag_start": "Медіавкладення {item} вибрано.", "upload_form.edit": "Змінити", "upload_form.thumbnail": "Змінити мініатюру", "upload_form.video_description": "Опишіть для людей із вадами слуху або зору", diff --git a/config/locales/de.yml b/config/locales/de.yml index c82e65282f..7a8469df61 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -79,7 +79,7 @@ de: invite_request_text: Begründung für das Beitreten invited_by: Eingeladen von ip: IP-Adresse - joined: Beigetreten + joined: Mitglied seit location: all: Alle local: Lokal diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 306e670b71..9ab62cea71 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -30,17 +30,25 @@ sc: created_msg: As creadu una nota de moderatzione. destroyed_msg: As cantzelladu una nota de moderatzione. accounts: + add_email_domain_block: Bloca domìniu de posta eletrònica approve: Aprova approved_msg: Sa dimanda de registru de %{username} est istada aprovada are_you_sure: Seguru? avatar: Immàgine de profilu by_domain: Domìniu change_email: + changed_msg: Indiritzu eletrònicu de su contu modificadu! current_email: Indiritzu eletrònicu atuale label: Muda s'indiritzu eletrònicu new_email: Indiritzu eletrònicu nou submit: Muda s'indiritzu eletrònicu title: Muda s'indiritzu eletrònicu de %{username} + change_role: + changed_msg: Ruolu modificadu. + edit_roles: Gesti is ruolos de utente + label: Modifica su ruolu + no_role: Nissunu ruolu + title: Modifica su ruolu de %{username} confirm: Cunfirma confirmed: Cunfirmadu confirming: Cunfirmende @@ -91,6 +99,7 @@ sc: most_recent_ip: IP prus reghente no_account_selected: Perunu contu est istadu mudadu, dae chi non nd'as seletzionadu no_limits_imposed: Sena lìmites + no_role_assigned: Nissunu ruolu assignadu not_subscribed: Sena sutiscritzione pending: De revisionare perform_full_suspension: Suspèndidu @@ -108,12 +117,19 @@ sc: removed_header_msg: S'immàgine de intestatzione de %{username} est istada bogada resend_confirmation: already_confirmed: Custa persone est giai cunfirmada + send: Torra a imbiare su ligòngiu de cunfirmatzione + success: Ligòngiu de cunfirmatzione imbiadu. reset: Reseta reset_password: Reseta sa crae resubscribe: Torra a sutascrìere + role: Ruolu search: Chirca + search_same_email_domain: Àteras persones cun su pròpiu domìniu de posta search_same_ip: Àteras persones cun sa pròpiu IP security: Seguresa + security_measures: + only_password: Crae isceti + password_and_2fa: Crae e 2FA sensitive: Sensìbile sensitized: Marcadu comente sensìbile shared_inbox_url: URL de intrada cumpartzida @@ -129,6 +145,8 @@ sc: suspension_irreversible: Is datos de custu contu sunt istados cantzellados in manera irreversìbile. Podes bogare sa suspensione a su contu pro chi si potzat impreare, ma no at a recuperare datu perunu de is chi teniat in antis. suspension_reversible_hint_html: Su contu est istadu suspèndidu, e is datos ant a èssere cantzelladu de su totu su %{date}. Finas a tando, su contu si podet ripristinare sena efetu malu perunu. Si boles cantzellare totu is datos de su contu immediatamente ddu podes fàghere inoghe in bassu. title: Contos + unblock_email: Isbloca s'indiritzu de posta eletrònica + unblocked_email_msg: Posta eletrònica de %{username} isblocada unconfirmed_email: Posta eletrònica sena cunfirmare undo_sensitized: Boga sa marcadura comente sensìbile undo_silenced: Non pòngias a sa muda @@ -143,21 +161,31 @@ sc: whitelisted: Federatzione permìtida action_logs: action_types: + approve_user: Aprova s'utente assigned_to_self_report: Assigna s'informe + change_email_user: Muda s'indiritzu eletrònicu pro s'utente + change_role_user: Muda su ruolu de s'utente confirm_user: Cunfirma s'utente create_account_warning: Crea un'avisu create_announcement: Crea un'annùntziu + create_canonical_email_block: Crea unu blocu de posta eletrònica create_custom_emoji: Crea un'emoji personalizadu create_domain_allow: Crea unu domìniu permìtidu create_domain_block: Crea unu blocu de domìniu + create_email_domain_block: Crea unu blocu de domìniu de posta eletrònica create_ip_block: Crea una règula IP + create_unavailable_domain: Crea unu domìniu no a disponimentu + create_user_role: Crea unu ruolu demote_user: Degrada s'utente destroy_announcement: Cantzella s'annùntziu + destroy_canonical_email_block: Cantzella su blocu de posta eletrònica destroy_custom_emoji: Cantzella s'emoji personalizadu destroy_domain_allow: Cantzella su domìniu permìtidu destroy_domain_block: Cantzella su blocu de domìniu + destroy_email_domain_block: Cantzella su blocu de domìniu de posta eletrònica destroy_ip_block: Cantzella sa règula IP destroy_status: Cantzella s'istadu + destroy_unavailable_domain: Cantzella su domìniu no a disponimentu disable_2fa_user: Disativa 2FA disable_custom_emoji: Disativa s'emoji personalizadu disable_user: Disativa utente @@ -165,23 +193,33 @@ sc: enable_user: Ativa utente memorialize_account: Torra in unu contu de regordu promote_user: Promove utente + reject_user: Refuda s'utente remove_avatar_user: Cantzella immàgine de profilu reopen_report: Torra a abèrrere s'informe + resend_user: Torra a imbiare messàgiu eletrònicu de cunfirmatzione reset_password_user: Reseta sa crae resolve_report: Isorve s'informe sensitive_account: Marca is cuntenutos multimediales in su contu tuo comente sensìbiles silence_account: Pone custu contu a sa muda suspend_account: Suspende custu contu unassigned_report: Boga s'assignatzione de custu informe + unblock_email_account: Isbloca s'indiritzu de posta eletrònica unsensitive_account: Boga sa marcadura "sensìbiles" a is elementos multimediales in su contu tuo unsilence_account: Boga custu contu de is contos a sa muda unsuspend_account: Boga custu contu de is contos suspèndidos update_announcement: Atualiza s'annùntziu update_custom_emoji: Atualiza s'emoji personalizadu update_domain_block: Atualiza blocu de domìniu + update_ip_block: Atualiza sa règula IP + update_report: Atualiza s'informe update_status: Atualiza s'istadu + update_user_role: Atualiza su ruolu actions: + approve_user_html: "%{name} at aprovadu su registru de %{target}" assigned_to_self_report_html: "%{name} s'est auto-assignadu s'informe %{target}" + change_email_user_html: "%{name} at mudadu s'indiritzu de posta eletrònica de s'utente %{target}" + change_role_user_html: "%{name} at mudadu su ruolu de %{target}" + confirm_user_html: "%{name} at cunfirmadu s'indiritzu de posta eletrònica de s'utente %{target}" create_account_warning_html: "%{name} at imbiadu un'avisu a %{target}" create_announcement_html: "%{name} at creadu un'annùntziu nou %{target}" create_custom_emoji_html: "%{name} at carrigadu un'emoji nou %{target}" @@ -291,6 +329,8 @@ sc: confirm_suspension: cancel: Annulla confirm: Suspende + remove_all_data: Custu at a cantzellare totu su cuntenutu, elementos multimediales e datos de profilu pro is contos de custu domìniu dae su serbidore tuo. + stop_communication: Su serbidore tuo at a tzessare sa comunicatzione cun custos serbidores. title: Cunfirma su blocu de domìniu de %{domain} created_msg: Protzessende su blocu de domìniu destroyed_msg: Su blocu de domìniu est istadu iscontzadu @@ -361,9 +401,12 @@ sc: dashboard: instance_accounts_dimension: Contos prus sighidos instance_accounts_measure: contos sarvados + instance_languages_dimension: Limbas printzipales instance_reports_measure: informes a subra de àtere + instance_statuses_measure: publicatziones sarvadas delivery: all: Totus + unavailable: No a disponimentu delivery_available: Sa cunsigna est a disponimentu empty: Perunu domìniu agatadu. known_accounts: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 7382631911..f1e0983705 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1,7 +1,7 @@ --- tr: about: - about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir. + about_mastodon_html: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezi olmayan yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir! contact_missing: Ayarlanmadı contact_unavailable: Bulunamadı hosted_on: Mastodon %{domain} üzerinde barındırılıyor From 1db91ab8d9b26ba0103bdc51bc9c79411a3cf6dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:34:04 +0200 Subject: [PATCH 087/550] Update dependency typescript to v5.6.2 (#32165) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0a7f89990c..9aeb2b02a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17382,22 +17382,22 @@ __metadata: linkType: hard "typescript@npm:5, typescript@npm:^5.0.4": - version: 5.5.4 - resolution: "typescript@npm:5.5.4" + version: 5.6.2 + resolution: "typescript@npm:5.6.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/422be60f89e661eab29ac488c974b6cc0a660fb2228003b297c3d10c32c90f3bcffc1009b43876a082515a3c376b1eefcce823d6e78982e6878408b9a923199c + checksum: 10c0/3ed8297a8c7c56b7fec282532503d1ac795239d06e7c4966b42d4330c6cf433a170b53bcf93a130a7f14ccc5235de5560df4f1045eb7f3550b46ebed16d3c5e5 languageName: node linkType: hard "typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin": - version: 5.5.4 - resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=379a07" + version: 5.6.2 + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/73409d7b9196a5a1217b3aaad929bf76294d3ce7d6e9766dd880ece296ee91cf7d7db6b16c6c6c630ee5096eccde726c0ef17c7dfa52b01a243e57ae1f09ef07 + checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f languageName: node linkType: hard From 52afa94f1c277f7387c5bb3d1eb85fb555126a2a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 3 Oct 2024 08:13:54 -0400 Subject: [PATCH 088/550] Use `print_table` to wrap storage output CLI (#32230) --- lib/mastodon/cli/media.rb | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/lib/mastodon/cli/media.rb b/lib/mastodon/cli/media.rb index 70c11ee1a1..37f110d898 100644 --- a/lib/mastodon/cli/media.rb +++ b/lib/mastodon/cli/media.rb @@ -278,14 +278,10 @@ module Mastodon::CLI desc 'usage', 'Calculate disk space consumed by Mastodon' def usage - say("Attachments:\t#{number_to_human_size(media_attachment_storage_size)} (#{number_to_human_size(local_media_attachment_storage_size)} local)") - say("Custom emoji:\t#{number_to_human_size(CustomEmoji.sum(:image_file_size))} (#{number_to_human_size(CustomEmoji.local.sum(:image_file_size))} local)") - say("Preview cards:\t#{number_to_human_size(PreviewCard.sum(:image_file_size))}") - say("Avatars:\t#{number_to_human_size(Account.sum(:avatar_file_size))} (#{number_to_human_size(Account.local.sum(:avatar_file_size))} local)") - say("Headers:\t#{number_to_human_size(Account.sum(:header_file_size))} (#{number_to_human_size(Account.local.sum(:header_file_size))} local)") - say("Backups:\t#{number_to_human_size(Backup.sum(:dump_file_size))}") - say("Imports:\t#{number_to_human_size(Import.sum(:data_file_size))}") - say("Settings:\t#{number_to_human_size(SiteUpload.sum(:file_file_size))}") + print_table [ + %w(Object Total Local), + *object_storage_summary, + ] end desc 'lookup URL', 'Lookup where media is displayed by passing a media URL' @@ -318,20 +314,23 @@ module Mastodon::CLI private - def media_attachment_storage_size - MediaAttachment.sum(file_and_thumbnail_size_sql) + def object_storage_summary + [ + [:attachments, MediaAttachment.sum(combined_media_sum), MediaAttachment.where(account: Account.local).sum(combined_media_sum)], + [:custom_emoji, CustomEmoji.sum(:image_file_size), CustomEmoji.local.sum(:image_file_size)], + [:avatars, Account.sum(:avatar_file_size), Account.local.sum(:avatar_file_size)], + [:headers, Account.sum(:header_file_size), Account.local.sum(:header_file_size)], + [:preview_cards, PreviewCard.sum(:image_file_size), nil], + [:backups, Backup.sum(:dump_file_size), nil], + [:imports, Import.sum(:data_file_size), nil], + [:settings, SiteUpload.sum(:file_file_size), nil], + ].map { |label, total, local| [label.to_s.titleize, number_to_human_size(total), local.present? ? number_to_human_size(local) : nil] } end - def local_media_attachment_storage_size - MediaAttachment.where(account: Account.local).sum(file_and_thumbnail_size_sql) - end - - def file_and_thumbnail_size_sql - Arel.sql( - <<~SQL.squish - COALESCE(file_file_size, 0) + COALESCE(thumbnail_file_size, 0) - SQL - ) + def combined_media_sum + Arel.sql(<<~SQL.squish) + COALESCE(file_file_size, 0) + COALESCE(thumbnail_file_size, 0) + SQL end PRELOAD_MODEL_WHITELIST = %w( From d95f6f4410c28b2f7b9f736c9477936587bd700b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 3 Oct 2024 09:09:58 -0400 Subject: [PATCH 089/550] Extract `ExportSummary` class for account object counts (#32227) --- .../settings/exports_controller.rb | 13 ++- app/models/export.rb | 36 -------- app/presenters/export_summary.rb | 70 +++++++++++++++ app/views/settings/exports/show.html.haml | 18 ++-- spec/models/export_spec.rb | 71 --------------- spec/presenters/export_summary_spec.rb | 86 +++++++++++++++++++ 6 files changed, 177 insertions(+), 117 deletions(-) create mode 100644 app/presenters/export_summary.rb create mode 100644 spec/presenters/export_summary_spec.rb diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index 076ed5dadb..263d20eaea 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -9,7 +9,7 @@ class Settings::ExportsController < Settings::BaseController skip_before_action :require_functional! def show - @export = Export.new(current_account) + @export_summary = ExportSummary.new(preloaded_account) @backups = current_user.backups end @@ -25,4 +25,15 @@ class Settings::ExportsController < Settings::BaseController redirect_to settings_export_path end + + private + + def preloaded_account + current_account.tap do |account| + ActiveRecord::Associations::Preloader.new( + records: [account], + associations: :account_stat + ).call + end + end end diff --git a/app/models/export.rb b/app/models/export.rb index 2457dcc156..6ed9f60c7c 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -55,42 +55,6 @@ class Export end end - def total_storage - account.media_attachments.sum(:file_file_size) - end - - def total_statuses - account.statuses_count - end - - def total_bookmarks - account.bookmarks.count - end - - def total_follows - account.following_count - end - - def total_lists - account.owned_lists.count - end - - def total_followers - account.followers_count - end - - def total_blocks - account.blocking.count - end - - def total_mutes - account.muting.count - end - - def total_domain_blocks - account.domain_blocks.count - end - private def to_csv(accounts) diff --git a/app/presenters/export_summary.rb b/app/presenters/export_summary.rb new file mode 100644 index 0000000000..8e45aadf67 --- /dev/null +++ b/app/presenters/export_summary.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +class ExportSummary + attr_reader :account, :counts + + delegate( + :blocking, + :bookmarks, + :domain_blocks, + :owned_lists, + :media_attachments, + :muting, + to: :account, + prefix: true + ) + + def initialize(account) + @account = account + @counts = populate_counts + end + + def total_blocks + counts[:blocks].value + end + + def total_bookmarks + counts[:bookmarks].value + end + + def total_domain_blocks + counts[:domain_blocks].value + end + + def total_followers + account.followers_count + end + + def total_follows + account.following_count + end + + def total_lists + counts[:owned_lists].value + end + + def total_mutes + counts[:muting].value + end + + def total_statuses + account.statuses_count + end + + def total_storage + counts[:storage].value + end + + private + + def populate_counts + { + blocks: account_blocking.async_count, + bookmarks: account_bookmarks.async_count, + domain_blocks: account_domain_blocks.async_count, + owned_lists: account_owned_lists.async_count, + muting: account_muting.async_count, + storage: account_media_attachments.async_sum(:file_file_size), + } + end +end diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index 61d55350c2..b36e395e35 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -6,39 +6,39 @@ %tbody %tr %th= t('exports.storage') - %td= number_to_human_size @export.total_storage + %td= number_to_human_size @export_summary.total_storage %td %tr %th= t('accounts.posts_tab_heading') - %td= number_with_delimiter @export.total_statuses + %td= number_with_delimiter @export_summary.total_statuses %td %tr %th= t('admin.accounts.follows') - %td= number_with_delimiter @export.total_follows + %td= number_with_delimiter @export_summary.total_follows %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv) %tr %th= t('exports.lists') - %td= number_with_delimiter @export.total_lists + %td= number_with_delimiter @export_summary.total_lists %td= table_link_to 'download', t('exports.csv'), settings_exports_lists_path(format: :csv) %tr %th= t('admin.accounts.followers') - %td= number_with_delimiter @export.total_followers + %td= number_with_delimiter @export_summary.total_followers %td %tr %th= t('exports.mutes') - %td= number_with_delimiter @export.total_mutes + %td= number_with_delimiter @export_summary.total_mutes %td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv) %tr %th= t('exports.blocks') - %td= number_with_delimiter @export.total_blocks + %td= number_with_delimiter @export_summary.total_blocks %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv) %tr %th= t('exports.domain_blocks') - %td= number_with_delimiter @export.total_domain_blocks + %td= number_with_delimiter @export_summary.total_domain_blocks %td= table_link_to 'download', t('exports.csv'), settings_exports_domain_blocks_path(format: :csv) %tr %th= t('exports.bookmarks') - %td= number_with_delimiter @export.total_bookmarks + %td= number_with_delimiter @export_summary.total_bookmarks %td= table_link_to 'download', t('exports.csv'), settings_exports_bookmarks_path(format: :csv) %hr.spacer/ diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 48e78830dd..81aaf88585 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -103,75 +103,4 @@ RSpec.describe Export do ) end end - - describe '#total_storage' do - it 'returns the total size of the media attachments' do - media_attachment = Fabricate(:media_attachment, account: account) - expect(subject.total_storage).to eq media_attachment.file_file_size || 0 - end - end - - describe '#total_statuses' do - before { Fabricate.times(2, :status, account: account) } - - it 'returns the total number of statuses' do - expect(subject.total_statuses).to eq(2) - end - end - - describe '#total_bookmarks' do - before { Fabricate.times(2, :bookmark, account: account) } - - it 'returns the total number of bookmarks' do - expect(subject.total_bookmarks).to eq(2) - end - end - - describe '#total_follows' do - before { target_accounts.each { |target_account| account.follow!(target_account) } } - - it 'returns the total number of the followed accounts' do - expect(subject.total_follows).to eq(2) - end - end - - describe '#total_lists' do - before { Fabricate.times(2, :list, account: account) } - - it 'returns the total number of lists' do - expect(subject.total_lists).to eq(2) - end - end - - describe '#total_followers' do - before { target_accounts.each { |target_account| target_account.follow!(account) } } - - it 'returns the total number of the follower accounts' do - expect(subject.total_followers).to eq(2) - end - end - - describe '#total_blocks' do - before { target_accounts.each { |target_account| account.block!(target_account) } } - - it 'returns the total number of the blocked accounts' do - expect(subject.total_blocks).to eq(2) - end - end - - describe '#total_mutes' do - before { target_accounts.each { |target_account| account.mute!(target_account) } } - - it 'returns the total number of the muted accounts' do - expect(subject.total_mutes).to eq(2) - end - end - - describe '#total_domain_blocks' do - before { Fabricate.times(2, :account_domain_block, account: account) } - - it 'returns the total number of account domain blocks' do - expect(subject.total_domain_blocks).to eq(2) - end - end end diff --git a/spec/presenters/export_summary_spec.rb b/spec/presenters/export_summary_spec.rb new file mode 100644 index 0000000000..0ed46c857d --- /dev/null +++ b/spec/presenters/export_summary_spec.rb @@ -0,0 +1,86 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ExportSummary do + subject { described_class.new(account) } + + let(:account) { Fabricate(:account) } + let(:target_accounts) do + [ + Fabricate(:account), + Fabricate(:account, username: 'one', domain: 'local.host'), + ] + end + + describe '#total_storage' do + it 'returns the total size of the media attachments' do + media_attachment = Fabricate(:media_attachment, account: account) + expect(subject.total_storage).to eq media_attachment.file_file_size || 0 + end + end + + describe '#total_statuses' do + before { Fabricate.times(2, :status, account: account) } + + it 'returns the total number of statuses' do + expect(subject.total_statuses).to eq(2) + end + end + + describe '#total_bookmarks' do + before { Fabricate.times(2, :bookmark, account: account) } + + it 'returns the total number of bookmarks' do + expect(subject.total_bookmarks).to eq(2) + end + end + + describe '#total_follows' do + before { target_accounts.each { |target_account| account.follow!(target_account) } } + + it 'returns the total number of the followed accounts' do + expect(subject.total_follows).to eq(2) + end + end + + describe '#total_lists' do + before { Fabricate.times(2, :list, account: account) } + + it 'returns the total number of lists' do + expect(subject.total_lists).to eq(2) + end + end + + describe '#total_followers' do + before { target_accounts.each { |target_account| target_account.follow!(account) } } + + it 'returns the total number of the follower accounts' do + expect(subject.total_followers).to eq(2) + end + end + + describe '#total_blocks' do + before { target_accounts.each { |target_account| account.block!(target_account) } } + + it 'returns the total number of the blocked accounts' do + expect(subject.total_blocks).to eq(2) + end + end + + describe '#total_mutes' do + before { target_accounts.each { |target_account| account.mute!(target_account) } } + + it 'returns the total number of the muted accounts' do + expect(subject.total_mutes).to eq(2) + end + end + + describe '#total_domain_blocks' do + before { Fabricate.times(2, :account_domain_block, account: account) } + + it 'returns the total number of account domain blocks' do + expect(subject.total_domain_blocks).to eq(2) + end + end +end From cc8d723e7111b7e2e3d6685e0632c38813d27df0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 3 Oct 2024 09:10:27 -0400 Subject: [PATCH 090/550] Register an XML encoder for response tests (#32220) --- spec/requests/well_known/host_meta_spec.rb | 81 +++++++++++++--------- spec/support/response_encoders.rb | 4 ++ 2 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 spec/support/response_encoders.rb diff --git a/spec/requests/well_known/host_meta_spec.rb b/spec/requests/well_known/host_meta_spec.rb index 726911dda1..8d8e38f521 100644 --- a/spec/requests/well_known/host_meta_spec.rb +++ b/spec/requests/well_known/host_meta_spec.rb @@ -3,45 +3,62 @@ require 'rails_helper' RSpec.describe 'The /.well-known/host-meta request' do - it 'returns http success with valid XML response' do - get '/.well-known/host-meta' + context 'without extension format or accept header' do + it 'returns http success with expected XML' do + get '/.well-known/host-meta' - expect(response) - .to have_http_status(200) - .and have_attributes( - media_type: 'application/xrd+xml' - ) + expect(response) + .to have_http_status(200) + .and have_attributes( + media_type: 'application/xrd+xml' + ) - doc = Nokogiri::XML(response.parsed_body) - expect(doc.at_xpath('/xrd:XRD/xrd:Link[@rel="lrdd"]/@template', 'xrd' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0').value) - .to eq 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}' + expect(xrd_link_template_value) + .to eq 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}' + end + + def xrd_link_template_value + response + .parsed_body + .at_xpath('/xrd:XRD/xrd:Link[@rel="lrdd"]/@template', 'xrd' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0') + .value + end end - it 'returns http success with valid JSON response with .json extension' do - get '/.well-known/host-meta.json' + context 'with a .json format extension' do + it 'returns http success with expected JSON' do + get '/.well-known/host-meta.json' - expect(response) - .to have_http_status(200) - .and have_attributes( - media_type: 'application/json' - ) - - expect(response.parsed_body) - .to include( - links: [ - 'rel' => 'lrdd', - 'template' => 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}', - ] - ) + expect(response) + .to have_http_status(200) + .and have_attributes( + media_type: 'application/json' + ) + expect(response.parsed_body) + .to include(expected_json_template) + end end - it 'returns http success with valid JSON response with Accept header' do - get '/.well-known/host-meta', headers: { 'Accept' => 'application/json' } + context 'with a JSON `Accept` header' do + it 'returns http success with expected JSON' do + get '/.well-known/host-meta', headers: { 'Accept' => 'application/json' } - expect(response) - .to have_http_status(200) - .and have_attributes( - media_type: 'application/json' - ) + expect(response) + .to have_http_status(200) + .and have_attributes( + media_type: 'application/json' + ) + expect(response.parsed_body) + .to include(expected_json_template) + end + end + + def expected_json_template + { + links: [ + 'rel' => 'lrdd', + 'template' => 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}', + ], + } end end diff --git a/spec/support/response_encoders.rb b/spec/support/response_encoders.rb new file mode 100644 index 0000000000..548dba7132 --- /dev/null +++ b/spec/support/response_encoders.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +ActionDispatch::IntegrationTest + .register_encoder :xml, response_parser: ->(body) { Nokogiri::XML(body) } From 4c0e44ebbe244b32117ef0e2624ca3e7087c34ad Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Oct 2024 18:12:15 +0200 Subject: [PATCH 091/550] Fix recently-broken admin interface buttons (#32240) --- app/javascript/styles/mastodon/forms.scss | 4 ---- app/views/admin/accounts/_buttons.html.haml | 20 +++++++++---------- app/views/admin/accounts/show.html.haml | 2 +- app/views/admin/instances/show.html.haml | 12 +++++------ app/views/admin/invites/index.html.haml | 2 +- app/views/admin/reports/_actions.html.haml | 2 +- app/views/admin/reports/show.html.haml | 4 ++-- app/views/disputes/strikes/show.html.haml | 4 ++-- app/views/settings/exports/show.html.haml | 2 +- .../otp_authentication/show.html.haml | 2 +- .../index.html.haml | 4 ++-- 11 files changed, 27 insertions(+), 31 deletions(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 4f974ea585..957a283522 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -19,10 +19,6 @@ code { margin-bottom: 24px; } -form.button_to { - display: inline-block; -} - .fade-out-top { position: relative; overflow: hidden; diff --git a/app/views/admin/accounts/_buttons.html.haml b/app/views/admin/accounts/_buttons.html.haml index eb1a7c3a4f..2aaca8962c 100644 --- a/app/views/admin/accounts/_buttons.html.haml +++ b/app/views/admin/accounts/_buttons.html.haml @@ -4,8 +4,8 @@ %p.muted-hint= deletion_request.present? ? t('admin.accounts.remote_suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.remote_suspension_irreversible') - else %p.muted-hint= deletion_request.present? ? t('admin.accounts.suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.suspension_irreversible') - = button_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), class: :button if can?(:unsuspend, account) - = button_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), class: :button if can?(:redownload, account) && account.suspension_origin_remote? + = link_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsuspend, account) + = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account) && account.suspension_origin_remote? - if deletion_request.present? && can?(:destroy, account) = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } - else @@ -14,28 +14,28 @@ - if account.local? && account.user_approved? = link_to t('admin.accounts.warn'), new_admin_account_action_path(account.id, type: 'none'), class: 'button' if can?(:warn, account) - if account.user_disabled? - = button_to t('admin.accounts.enable'), enable_admin_account_path(account.id), class: :button if can?(:enable, account.user) + = link_to t('admin.accounts.enable'), enable_admin_account_path(account.id), method: :post, class: 'button' if can?(:enable, account.user) - elsif can?(:disable, account.user) = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button' - if account.sensitized? - = button_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), class: :button if can?(:unsensitive, account) + = link_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsensitive, account) - elsif !account.local? || account.user_approved? = link_to t('admin.accounts.sensitive'), new_admin_account_action_path(account.id, type: 'sensitive'), class: 'button' if can?(:sensitive, account) - if account.silenced? - = button_to t('admin.accounts.undo_silenced'), unsilence_admin_account_path(account.id), class: :button if can?(:unsilence, account) + = link_to t('admin.accounts.undo_silenced'), unsilence_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsilence, account) - elsif !account.local? || account.user_approved? = link_to t('admin.accounts.silence'), new_admin_account_action_path(account.id, type: 'silence'), class: 'button' if can?(:silence, account) - if account.local? - if account.user_pending? - = button_to t('admin.accounts.approve'), approve_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: :button if can?(:approve, account.user) - = button_to t('admin.accounts.reject'), reject_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user) + = link_to t('admin.accounts.approve'), approve_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:approve, account.user) + = link_to t('admin.accounts.reject'), reject_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user) - if !account.user_confirmed? && can?(:confirm, account.user) - = button_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), class: :button + = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button' - if (!account.local? || account.user_approved?) && can?(:suspend, account) = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button' %div - if account.local? - if !account.memorial? && account.user_approved? && can?(:memorialize, account) - = button_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' + = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' - elsif can?(:redownload, account) - = button_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), class: :button + = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 2d9e30e368..f148b9a082 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -30,7 +30,7 @@ = render 'admin/accounts/counters', account: @account - if @account.local? && @account.user.nil? - = button_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), class: :button if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id) + = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id) - else .table-wrapper %table.table.inline-table diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index dd4c50549c..812a9c8870 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -21,7 +21,7 @@ - if @instance.domain_allow = link_to t('admin.domain_allows.undo'), admin_domain_allow_path(@instance.domain_allow), class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } - else - = button_to t('admin.domain_allows.add_new'), admin_domain_allows_path(domain_allow: { domain: @instance.domain }), class: :button + = link_to t('admin.domain_allows.add_new'), admin_domain_allows_path(domain_allow: { domain: @instance.domain }), class: 'button', method: :post - else %p= t('admin.instances.content_policies.description_html') @@ -40,7 +40,7 @@ %td= @instance.domain_block.policies.map { |policy| t(policy, scope: 'admin.instances.content_policies.policies') }.join(' · ') = link_to t('admin.domain_blocks.edit'), edit_admin_domain_block_path(@instance.domain_block), class: 'button' - = button_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: :button, data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } + = link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: 'button', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete } - else = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button' @@ -70,16 +70,16 @@ - if @instance.unavailable? %span.negative-hint = t('admin.instances.availability.failure_threshold_reached', date: l(@instance.unavailable_domain.created_at.to_date)) - = button_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } + = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } - elsif @instance.exhausted_deliveries_days.empty? %span.positive-hint = t('admin.instances.availability.no_failures_recorded') - = button_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } + = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } - else %span.negative-hint = t('admin.instances.availability.failures_recorded', count: @instance.delivery_failure_tracker.days) - %span= button_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } unless @instance.exhausted_deliveries_days.empty? - %span= button_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure') } + %span= link_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } unless @instance.exhausted_deliveries_days.empty? + %span= link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } - if @instance.purgeable? %p= t('admin.instances.purge_description_html') diff --git a/app/views/admin/invites/index.html.haml b/app/views/admin/invites/index.html.haml index bbccca3147..964deaba8f 100644 --- a/app/views/admin/invites/index.html.haml +++ b/app/views/admin/invites/index.html.haml @@ -34,4 +34,4 @@ = paginate @invites - if policy(:invite).deactivate_all? - = button_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, data: { confirm: t('admin.accounts.are_you_sure') }, class: :button + = link_to t('admin.invites.deactivate_all'), deactivate_all_admin_invites_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' diff --git a/app/views/admin/reports/_actions.html.haml b/app/views/admin/reports/_actions.html.haml index c25f45e169..ef016e949b 100644 --- a/app/views/admin/reports/_actions.html.haml +++ b/app/views/admin/reports/_actions.html.haml @@ -2,7 +2,7 @@ .report-actions .report-actions__item .report-actions__item__button - = button_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(report), class: :button + = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(report), method: :post, class: 'button' .report-actions__item__description = t('admin.reports.actions.resolve_description_html') - if statuses.any? { |status| (status.with_media? || status.with_preview_card?) && !status.discarded? } diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index 32b6b3be8d..69e9c02921 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -3,9 +3,9 @@ - content_for :heading_actions do - if @report.unresolved? - = button_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), class: :button + = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button' - else - = button_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), class: :button + = link_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), method: :post, class: 'button' - unless @report.account.local? || @report.target_account.local? .flash-message= t('admin.reports.forwarded_replies_explanation') diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 1d71e0ddd1..150dc06759 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -3,8 +3,8 @@ - content_for :heading_actions do - if @appeal.persisted? - = button_to t('disputes.strikes.approve_appeal'), approve_admin_disputes_appeal_path(@appeal), class: :button if can?(:approve, @appeal) - = button_to t('disputes.strikes.reject_appeal'), reject_admin_disputes_appeal_path(@appeal), class: 'button button--destructive' if can?(:reject, @appeal) + = link_to t('disputes.strikes.approve_appeal'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal) + = link_to t('disputes.strikes.reject_appeal'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal) - if @strike.overruled? %p.hint diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index b36e395e35..5a151be73b 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -46,7 +46,7 @@ %p.muted-hint= t('exports.archive_takeout.hint_html') - if policy(:backup).create? - %p= button_to t('exports.archive_takeout.request'), settings_export_path, class: :button + %p= link_to t('exports.archive_takeout.request'), settings_export_path, class: 'button', method: :post - unless @backups.empty? %hr.spacer/ diff --git a/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml b/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml index 01f385dbea..d069ba12a9 100644 --- a/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml +++ b/app/views/settings/two_factor_authentication/otp_authentication/show.html.haml @@ -6,4 +6,4 @@ %hr.spacer/ - = button_to t('otp_authentication.setup'), settings_otp_authentication_path, class: 'block-button' + = link_to t('otp_authentication.setup'), settings_otp_authentication_path, data: { method: :post }, class: 'block-button' diff --git a/app/views/settings/two_factor_authentication_methods/index.html.haml b/app/views/settings/two_factor_authentication_methods/index.html.haml index e3a211a3d7..8b670283b9 100644 --- a/app/views/settings/two_factor_authentication_methods/index.html.haml +++ b/app/views/settings/two_factor_authentication_methods/index.html.haml @@ -2,7 +2,7 @@ = t('settings.two_factor_authentication') - content_for :heading_actions do - = button_to t('two_factor_authentication.disable'), disable_settings_two_factor_authentication_methods_path, class: 'button button--destructive' + = link_to t('two_factor_authentication.disable'), disable_settings_two_factor_authentication_methods_path, class: 'button button--destructive', method: :post %p.hint %span.positive-hint @@ -38,4 +38,4 @@ %hr.spacer/ .simple_form - = button_to t('two_factor_authentication.generate_recovery_codes'), settings_two_factor_authentication_recovery_codes_path, class: 'block-button' + = link_to t('two_factor_authentication.generate_recovery_codes'), settings_two_factor_authentication_recovery_codes_path, data: { method: :post }, class: 'block-button' From aba888c4a6c3be008bb708c0871f145cb0356052 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:18:38 +0200 Subject: [PATCH 092/550] Update dependency ffmpeg to v7.1 (#32239) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0452e5d062..a5e35025ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -214,7 +214,7 @@ FROM build AS ffmpeg # ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"] # renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg -ARG FFMPEG_VERSION=7.0.2 +ARG FFMPEG_VERSION=7.1 # ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"] ARG FFMPEG_URL=https://ffmpeg.org/releases From 1b247a1dc21bbaf20bd03be073f65e8dfc286dba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:29:53 +0200 Subject: [PATCH 093/550] New Crowdin Translations (automated) (#32249) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/kab.json | 8 +++++--- app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/sk.json | 3 ++- app/javascript/mastodon/locales/sq.json | 5 +++++ config/locales/ca.yml | 6 ++++++ config/locales/lv.yml | 7 +++++++ config/locales/simple_form.lv.yml | 1 + config/locales/sk.yml | 6 +++--- 8 files changed, 30 insertions(+), 8 deletions(-) diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 07236bb73e..35e9be816e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -278,6 +278,8 @@ "hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} assa", "hashtag.follow": "Ḍfeṛ ahacṭag", "hashtags.and_other": "…d {count, plural, one {}other {# nniḍen}}", + "hints.threads.replies_may_be_missing": "Tiririyin d-yusan deg iqeddacen nniḍen, yezmer ur d-ddant ara.", + "hints.threads.see_more": "Wali ugar n tririt deg {domain}", "home.column_settings.show_reblogs": "Ssken-d beṭṭu", "home.column_settings.show_replies": "Ssken-d tiririyin", "home.hide_announcements": "Ffer ulɣuyen", @@ -585,7 +587,7 @@ "status.bookmark": "Creḍ", "status.cancel_reblog_private": "Sefsex beṭṭu", "status.cannot_reblog": "Tasuffeɣt-a ur tezmir ara ad tettwabḍu tikelt-nniḍen", - "status.continued_thread": "Asentel yettkemmil", + "status.continued_thread": "Asqerdec yettkemmil", "status.copy": "Nɣel assaɣ ɣer tasuffeɣt", "status.delete": "Kkes", "status.direct": "Bder-d @{name} weḥd-s", @@ -617,10 +619,10 @@ "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.", "status.redraft": "Kkes tɛiwdeḍ tira", "status.remove_bookmark": "Kkes tacreḍt", - "status.replied_in_thread": "Y·t·erra-d deg usentel", + "status.replied_in_thread": "Y·t·erra-d deg usqerdec", "status.replied_to": "Y·terra-yas i {name}", "status.reply": "Err", - "status.replyAll": "Err i lxiḍ", + "status.replyAll": "Err i wesqerdec", "status.report": "Cetki ɣef @{name}", "status.sensitive_warning": "Agbur amḥulfu", "status.share": "Bḍu", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 2054dfc0ff..e5e7dc2c17 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -317,7 +317,7 @@ "follow_suggestions.curated_suggestion": "스태프의 추천", "follow_suggestions.dismiss": "다시 보지 않기", "follow_suggestions.featured_longer": "{domain} 팀이 손수 고름", - "follow_suggestions.friends_of_friends_longer": "내가 팔로우 하는 사람들 사이에서 인기", + "follow_suggestions.friends_of_friends_longer": "내가 팔로우한 사람들 사이에서 인기", "follow_suggestions.hints.featured": "이 프로필은 {domain} 팀이 손수 선택했습니다.", "follow_suggestions.hints.friends_of_friends": "이 프로필은 내가 팔로우 하는 사람들에게서 유명합니다.", "follow_suggestions.hints.most_followed": "이 프로필은 {domain}에서 가장 많이 팔로우 된 사람들 중 하나입니다.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ddf341584c..da3b1eaefd 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -33,7 +33,7 @@ "account.follow": "Sledovať", "account.follow_back": "Sledovať späť", "account.followers": "Sledovatelia", - "account.followers.empty": "Tento účet ešte nikto nesleduje.", + "account.followers.empty": "Ešte nikto nesleduje tohto užívateľa.", "account.followers_counter": "{count, plural, one {{counter} sledujúci} other {{counter} sledujúci}}", "account.following": "Sledovaný účet", "account.following_counter": "{count, plural, one {{counter} sledovaných} other {{counter} sledovaných}}", @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Priveľa žiadostí", "alert.unexpected.message": "Vyskytla sa nečakaná chyba.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Alternatívny popis", "announcement.announcement": "Oznámenie", "attachments_list.unprocessed": "(nespracované)", "audio.hide": "Skryť zvuk", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 084ac9945f..15101be471 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -852,6 +852,11 @@ "upload_error.poll": "Me pyetësorët s’lejohet ngarkim kartelash.", "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar", "upload_form.description": "Përshkruajeni për persona me probleme shikimi", + "upload_form.drag_and_drop.instructions": "Që të merrni një bashkëngjitje media, shtypni tastin Space ose Enter. Teksa bëhet tërheqje, përdorni tastet shigjetë për ta shpënë bashkëngjitjen media në cilëndo drejtori që doni. Shtypni sërish Space ose Enter që të lihet bashkëngjitja media në pozicionin e vet të ri, ose shtypni Esc, që të anulohet veprimi.", + "upload_form.drag_and_drop.on_drag_cancel": "Tërheqja u anulua. Bashkëngjitja media {item} u la.", + "upload_form.drag_and_drop.on_drag_end": "Bashkëngjitja media {item} u la.", + "upload_form.drag_and_drop.on_drag_over": "Bashkëngjitja media {item} u lëviz.", + "upload_form.drag_and_drop.on_drag_start": "U mor bashkëngjitja media {item}.", "upload_form.edit": "Përpunoni", "upload_form.thumbnail": "Ndryshoni miniaturën", "upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 965f354a35..ced8de4ef2 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -446,6 +446,7 @@ ca: title: Blocar el nou domini de correu-e no_email_domain_block_selected: No s'han canviat els bloqueigs de domini perquè no se n'ha seleccionat cap not_permitted: No permés + resolved_dns_records_hint_html: El nom del domini resol als següents dominis MX, que són els responsables finals per a acceptar els correus. Blocar un domini MX blocarà els registres des de qualsevol adreça de correu que utilitzi el mateix domini MX, encara que el nom visible sigui diferent. Vigileu de no blocar els grans proveïdors de correu. resolved_through_html: Resolt mitjançant %{domain} title: Dominis de correu-e blocats export_domain_allows: @@ -800,6 +801,7 @@ ca: destroyed_msg: La càrrega al lloc s'ha suprimit correctament! software_updates: critical_update: Crítica - si us plau, actualitza ràpidament + description: Es recomana de mantenir actualizada la instal·lació de Mastodon per a beneficiar-se de les darreres correccions i característiques. A més, de vegades és fonamental actualitzar-la per a evitar problemes de seguretat. Per això Mastodon comprova si hi ha actualitzacions cada 30 minuts i us notificarà d'acord amb les preferències de notificacions de correu electrònic. documentation_link: Més informació release_notes: Notes de llançament title: Actualitzacions disponibles @@ -1155,6 +1157,7 @@ ca: account_status: Estat del compte confirming: Esperant que es completi la confirmació del correu-e. functional: El teu compte està completament operatiu. + pending: La vostra sol·licitud està pendent de revisió pel nostre personal. Això pot trigar una mica. Rebreu un correu electrònic quan s'aprovi. redirecting_to: El teu compte és inactiu perquè actualment està redirigint a %{acct}. self_destruct: Com que %{domain} tanca, només tindreu accés limitat al vostre compte. view_strikes: Veure accions del passat contra el teu compte @@ -1202,6 +1205,9 @@ ca: before: 'Abans de procedir, llegiu amb cura aquestes notes:' caches: El contingut que ha estat memoritzat en la memòria cau per altres servidors pot persistir data_removal: Els teus tuts i altres dades seran permanentment eliminades + email_change_html: Podeu canviar l'adreça de correu sense eliminar el vostre compte + email_contact_html: Si encara no arriba, podeu enviar un correu-e a %{email} per a demanar ajuda + email_reconfirmation_html: Si no rebeu el correu electrònic de confirmació , podeu tornar-lo a demanar irreversible: No seràs capaç de restaurar o reactivar el teu compte more_details_html: Per a més detalls, llegeix la política de privadesa. username_available: El teu nom d'usuari esdevindrà altre cop disponible diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 16844a95c2..2cc8ff6a49 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -34,6 +34,7 @@ lv: created_msg: Moderācijas piezīme ir veiksmīgi izveidota! destroyed_msg: Moderācijas piezīme ir veiksmīgi iznīcināta! accounts: + add_email_domain_block: Liegt e-pasta domēnu approve: Apstiprināt approved_msg: Veiksmīgi apstiprināts %{username} reģistrēšanās pieteikums are_you_sure: Vai esi pārliecināts? @@ -61,6 +62,7 @@ lv: demote: Pazemināt destroyed_msg: Lietotāja %{username} dati tagad ievietoti rindā, lai tos nekavējoties izdzēstu disable: Iesaldēt + disable_sign_in_token_auth: Atspējot autentificēšanos ar e-pasta pilnvaru disable_two_factor_authentication: Atspējot 2FA disabled: Iesaldēts display_name: Parādāmais vārds @@ -69,6 +71,7 @@ lv: email: E-pasts email_status: E-pasta statuss enable: Atsaldēt + enable_sign_in_token_auth: Iespējot autentificēšanos ar e-pasta pilnvaru enabled: Iespējots enabled_msg: Veiksmīgi atsaldēts %{username} konts followers: Sekotāji @@ -180,17 +183,21 @@ lv: confirm_user: Apstiprināt lietotāju create_account_warning: Izveidot Brīdinājumu create_announcement: Izveidot Paziņojumu + create_canonical_email_block: Izveidot e-pasta liegumu create_custom_emoji: Izveidot pielāgotu emocijzīmi create_domain_allow: Izveidot Domēna Atļauju create_domain_block: Izveidot Domēna Bloku + create_email_domain_block: Izveidot e-pasta domēna liegumu create_ip_block: Izveidot IP noteikumu create_unavailable_domain: Izveidot Nepieejamu Domēnu create_user_role: Izveidot lomu demote_user: Pazemināt Lietotāju destroy_announcement: Dzēst Paziņojumu + destroy_canonical_email_block: Izdzēst e-pasta liegumu destroy_custom_emoji: Dzēst pielāgoto emocijzīmi destroy_domain_allow: Dzēst Domēna Atļauju destroy_domain_block: Dzēst Domēna Bloku + destroy_email_domain_block: Izdzēst e-pasta domēna liegumu destroy_instance: Attīrīt domēnu destroy_ip_block: Dzēst IP noteikumu destroy_status: Izdzēst Rakstu diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 9cc32457f7..523e9a5fcc 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -86,6 +86,7 @@ lv: custom_css: Vari lietot pielāgotus stilus Mastodon tīmekļa versijā. favicon: WEBP, PNG, GIF vai JPG. Aizstāj noklusējuma Mastodon favikonu ar pielāgotu. mascot: Ignorē ilustrāciju uzlabotajā tīmekļa saskarnē. + media_cache_retention_period: Informācijas nesēju datnes no ierakstiem, kurus ir veikuši attālie lietotāji, tiek kešoti šajā serverī. Kad ir iestatīta apstiprinoša vērtība, informācijas nesēji tiks izdzēsti pēc norādītā dienu skaita. Ja informācijas nesēju dati tiks pieprasīti pēc tam, kad tie tika izdzēsti, tie tiks atkārtoti lejupielādēti, ja avota saturs joprojām būs pieejams. Saišu priekšskatījuma karšu vaicājumu biežuma ierobežojumu dēļ ir ieteicams iestatīt šo vērtību vismaz 14 dienas vai saišu priekšskatījuma kartes netiks atjauninātas pēc pieprasījuma pirms tā laika. peers_api_enabled: Domēna vārdu saraksts, ar kuriem šis serveris ir saskāries fediversā. Šeit nav iekļauti dati par to, vai tu veic federāciju ar noteiktu serveri, tikai tavs serveris par to zina. To izmanto dienesti, kas apkopo statistiku par federāciju vispārīgā nozīmē. profile_directory: Profilu direktorijā ir uzskaitīti visi lietotāji, kuri ir izvēlējušies būt atklājami. require_invite_text: 'Ja pierakstīšanai nepieciešama manuāla apstiprināšana, izdari tā, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis opcionāla' diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 8076682ed4..399ecc061a 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -8,10 +8,10 @@ sk: title: Ohľadom accounts: followers: - few: Sledovateľov + few: Sledujúcich many: Sledovateľov one: Sledujúci - other: Sledovatelia + other: Sledujúci following: Nasledujem instance_actor_flash: Toto konto je virtuálny aktér, ktorý predstavuje samotný server, a nie konkrétneho používateľa. Používa sa na účely federácie a nemal by byť pozastavený. last_active: naposledy aktívny @@ -1167,7 +1167,7 @@ sk: dormant: Spiace follow_failure: Nemožno nasledovať niektoré z vybraných účtov. follow_selected_followers: Následuj označených sledovatelov - followers: Následovatelia + followers: Sledovatelia following: Nasledovaní invited: Pozvaný/á last_active: Naposledy aktívny From 12a8ac1f8514f002a9d2c830e8981fde80b1cba9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:57:41 +0200 Subject: [PATCH 094/550] Update dependency node to 20.18 (#32244) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 65da8ce391..10fef252a9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.17 +20.18 From 63a959099b854af62b88d6097895d5a7c1443cb3 Mon Sep 17 00:00:00 2001 From: forsamori Date: Fri, 4 Oct 2024 09:02:14 +0100 Subject: [PATCH 095/550] Add margin-bottom to error.dialog to reduce whitespace (#25708) Co-authored-by: Claire --- app/javascript/styles/mastodon/basics.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index 1f961cb9e1..1a74d8d52d 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -141,6 +141,7 @@ body { width: 100%; height: auto; margin-top: -120px; + margin-bottom: -45px; } } From 160917e71814168ce3aac776907dbe23a8c1c178 Mon Sep 17 00:00:00 2001 From: gunchleoc Date: Fri, 4 Oct 2024 09:19:01 +0100 Subject: [PATCH 096/550] Pluralize csv imports (#27094) Co-authored-by: Claire --- app/views/settings/imports/show.html.haml | 4 +- config/i18n-tasks.yml | 4 +- config/locales/en.yml | 48 +++++++++++++++++------ 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/app/views/settings/imports/show.html.haml b/app/views/settings/imports/show.html.haml index 4d50049d3d..dd18ac2168 100644 --- a/app/views/settings/imports/show.html.haml +++ b/app/views/settings/imports/show.html.haml @@ -5,9 +5,9 @@ .flash-message.warning= t('imports.mismatched_types_warning') - if @bulk_import.overwrite? - %p.hint= t("imports.overwrite_preambles.#{@bulk_import.type}_html", filename: @bulk_import.original_filename, total_items: @bulk_import.total_items) + %p.hint= t("imports.overwrite_preambles.#{@bulk_import.type}_html", filename: @bulk_import.original_filename, count: @bulk_import.total_items) - else - %p.hint= t("imports.preambles.#{@bulk_import.type}_html", filename: @bulk_import.original_filename, total_items: @bulk_import.total_items) + %p.hint= t("imports.preambles.#{@bulk_import.type}_html", filename: @bulk_import.original_filename, count: @bulk_import.total_items) .simple_form .actions diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 8463d4297d..fc043c4223 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -66,8 +66,8 @@ ignore_unused: - 'admin_mailer.*.subject' - 'user_mailer.*.subject' - 'notification_mailer.*' - - 'imports.overwrite_preambles.{following,blocking,muting,domain_blocking,bookmarks,lists}_html' - - 'imports.preambles.{following,blocking,muting,domain_blocking,bookmarks,lists}_html' + - 'imports.overwrite_preambles.{following,blocking,muting,domain_blocking,bookmarks,lists}_html.*' + - 'imports.preambles.{following,blocking,muting,domain_blocking,bookmarks,lists}_html.*' - 'mail_subscriptions.unsubscribe.emails.*' - 'preferences.other' # some locales are missing other keys, therefore leading i18n-tasks to detect `preferences` as plural and not finding use - 'edit_profile.other' # some locales are missing other keys, therefore leading i18n-tasks to detect `preferences` as plural and not finding use diff --git a/config/locales/en.yml b/config/locales/en.yml index bf45dff33a..42327ae183 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1366,19 +1366,43 @@ en: overwrite: Overwrite overwrite_long: Replace current records with the new ones overwrite_preambles: - blocking_html: You are about to replace your block list with up to %{total_items} accounts from %{filename}. - bookmarks_html: You are about to replace your bookmarks with up to %{total_items} posts from %{filename}. - domain_blocking_html: You are about to replace your domain block list with up to %{total_items} domains from %{filename}. - following_html: You are about to follow up to %{total_items} accounts from %{filename} and stop following anyone else. - lists_html: You are about to replace your lists with contents of %{filename}. Up to %{total_items} accounts will be added to new lists. - muting_html: You are about to replace your list of muted accounts with up to %{total_items} accounts from %{filename}. + blocking_html: + one: You are about to replace your block list with up to %{count} account from %{filename}. + other: You are about to replace your block list with up to %{count} accounts from %{filename}. + bookmarks_html: + one: You are about to replace your bookmarks with up to %{count} post from %{filename}. + other: You are about to replace your bookmarks with up to %{count} posts from %{filename}. + domain_blocking_html: + one: You are about to replace your domain block list with up to %{count} domain from %{filename}. + other: You are about to replace your domain block list with up to %{count} domains from %{filename}. + following_html: + one: You are about to follow up to %{count} account from %{filename} and stop following anyone else. + other: You are about to follow up to %{count} accounts from %{filename} and stop following anyone else. + lists_html: + one: You are about to replace your lists with contents of %{filename}. Up to %{count} account will be added to new lists. + other: You are about to replace your lists with contents of %{filename}. Up to %{count} accounts will be added to new lists. + muting_html: + one: You are about to replace your list of muted account with up to %{count} account from %{filename}. + other: You are about to replace your list of muted accounts with up to %{count} accounts from %{filename}. preambles: - blocking_html: You are about to block up to %{total_items} accounts from %{filename}. - bookmarks_html: You are about to add up to %{total_items} posts from %{filename} to your bookmarks. - domain_blocking_html: You are about to block up to %{total_items} domains from %{filename}. - following_html: You are about to follow up to %{total_items} accounts from %{filename}. - lists_html: You are about to add up to %{total_items} accounts from %{filename} to your lists. New lists will be created if there is no list to add to. - muting_html: You are about to mute up to %{total_items} accounts from %{filename}. + blocking_html: + one: You are about to block up to %{count} account from %{filename}. + other: You are about to block up to %{count} accounts from %{filename}. + bookmarks_html: + one: You are about to add up to %{count} post from %{filename} to your bookmarks. + other: You are about to add up to %{count} posts from %{filename} to your bookmarks. + domain_blocking_html: + one: You are about to block up to %{count} domain from %{filename}. + other: You are about to block up to %{count} domains from %{filename}. + following_html: + one: You are about to follow up to %{count} account from %{filename}. + other: You are about to follow up to %{count} accounts from %{filename}. + lists_html: + one: You are about to add up to %{count} account from %{filename} to your lists. New lists will be created if there is no list to add to. + other: You are about to add up to %{count} accounts from %{filename} to your lists. New lists will be created if there is no list to add to. + muting_html: + one: You are about to mute up to %{count} account from %{filename}. + other: You are about to mute up to %{count} accounts from %{filename}. preface: You can import data that you have exported from another server, such as a list of the people you are following or blocking. recent_imports: Recent imports states: From 82e7d53d54143ca69c7b0a0cebacee3f3ddd7b3c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 04:29:23 -0400 Subject: [PATCH 097/550] Rename transformer constant in sanitizer (#30532) --- lib/sanitize_ext/sanitize_config.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb index f0a7b65783..7387807e47 100644 --- a/lib/sanitize_ext/sanitize_config.rb +++ b/lib/sanitize_ext/sanitize_config.rb @@ -21,7 +21,7 @@ class Sanitize gemini ).freeze - CLASS_WHITELIST_TRANSFORMER = lambda do |env| + ALLOWED_CLASS_TRANSFORMER = lambda do |env| node = env[:node] class_list = node['class']&.split(/[\t\n\f\r ]/) @@ -84,7 +84,7 @@ class Sanitize protocols: {}, transformers: [ - CLASS_WHITELIST_TRANSFORMER, + ALLOWED_CLASS_TRANSFORMER, TRANSLATE_TRANSFORMER, UNSUPPORTED_ELEMENTS_TRANSFORMER, UNSUPPORTED_HREF_TRANSFORMER, From cf28104317642d647d77efe872bdabe3ea0c0624 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 04:30:08 -0400 Subject: [PATCH 098/550] Rename preloaded models constant in cli media (#30531) --- lib/mastodon/cli/media.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mastodon/cli/media.rb b/lib/mastodon/cli/media.rb index 37f110d898..996b7fd92c 100644 --- a/lib/mastodon/cli/media.rb +++ b/lib/mastodon/cli/media.rb @@ -177,7 +177,7 @@ module Mastodon::CLI attachment_name = path_segments[1].singularize file_name = path_segments.last - next unless PRELOAD_MODEL_WHITELIST.include?(model_name) + next unless PRELOADED_MODELS.include?(model_name) record = model_name.constantize.find_by(id: record_id) attachment = record&.public_send(attachment_name) @@ -296,7 +296,7 @@ module Mastodon::CLI model_name = path_segments.first.classify record_id = path_segments[2...-2].join.to_i - fail_with_message "Cannot find corresponding model: #{model_name}" unless PRELOAD_MODEL_WHITELIST.include?(model_name) + fail_with_message "Cannot find corresponding model: #{model_name}" unless PRELOADED_MODELS.include?(model_name) record = model_name.constantize.find_by(id: record_id) record = record.status if record.respond_to?(:status) @@ -333,7 +333,7 @@ module Mastodon::CLI SQL end - PRELOAD_MODEL_WHITELIST = %w( + PRELOADED_MODELS = %w( Account Backup CustomEmoji @@ -355,7 +355,7 @@ module Mastodon::CLI model_name = segments.first.classify record_id = segments[2...-2].join.to_i - next unless PRELOAD_MODEL_WHITELIST.include?(model_name) + next unless PRELOADED_MODELS.include?(model_name) preload_map[model_name] << record_id end From 49407e7623c52dd9e6e21bcb7a014cb116e081d3 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Oct 2024 10:50:36 +0200 Subject: [PATCH 099/550] Fix Content-Security-Policy when using sso-redirect (#32241) --- app/controllers/concerns/web_app_controller_concern.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb index ebbdba59af..9485ecda49 100644 --- a/app/controllers/concerns/web_app_controller_concern.rb +++ b/app/controllers/concerns/web_app_controller_concern.rb @@ -13,7 +13,7 @@ module WebAppControllerConcern policy = ContentSecurityPolicy.new if policy.sso_host.present? - p.form_action policy.sso_host + p.form_action policy.sso_host, -> { "https://#{request.host}/auth/auth/" } else p.form_action :none end From 463f9197d822e3b040834b4dab1c5334c7c8b968 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 08:21:55 -0400 Subject: [PATCH 100/550] Add regression coverage for admin reports resolution button within form (#32248) --- spec/system/report_interface_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/spec/system/report_interface_spec.rb b/spec/system/report_interface_spec.rb index 257a1cd6fd..6a90aa5bc6 100644 --- a/spec/system/report_interface_spec.rb +++ b/spec/system/report_interface_spec.rb @@ -28,4 +28,17 @@ RSpec.describe 'report interface', :attachment_processing, :js, :streaming do page.scroll_to(page.find('.batch-table__row')) expect(page).to have_css('.spoiler-button__overlay__label') end + + it 'marks a report resolved from the show page actions area' do + visit admin_report_path(report) + + expect { resolve_report } + .to change { report.reload.action_taken_at }.to(be_present).from(nil) + end + + def resolve_report + within '.report-actions' do + click_on I18n.t('admin.reports.mark_as_resolved') + end + end end From 77f5b127fadc02ba84fd1d5deccc7b70e68aba59 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Oct 2024 14:23:30 +0200 Subject: [PATCH 101/550] Fix unsupported grouped notifications from streaming causing duplicate IDs (#32243) --- .../mastodon/reducers/notification_groups.ts | 87 ++++++++++--------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index 375e643876..8b033f0fc7 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -206,50 +206,53 @@ function processNewNotification( groups: NotificationGroupsState['groups'], notification: ApiNotificationJSON, ) { - if (shouldGroupNotificationType(notification.type)) { - const existingGroupIndex = groups.findIndex( - (group) => - group.type !== 'gap' && group.group_key === notification.group_key, - ); - - // In any case, we are going to add a group at the top - // If there is currently a gap at the top, now is the time to update it - if (groups.length > 0 && groups[0]?.type === 'gap') { - groups[0].maxId = notification.id; - } - - if (existingGroupIndex > -1) { - const existingGroup = groups[existingGroupIndex]; - - if ( - existingGroup && - existingGroup.type !== 'gap' && - !existingGroup.sampleAccountIds.includes(notification.account.id) // This can happen for example if you like, then unlike, then like again the same post - ) { - // Update the existing group - if ( - existingGroup.sampleAccountIds.unshift(notification.account.id) > - NOTIFICATIONS_GROUP_MAX_AVATARS - ) - existingGroup.sampleAccountIds.pop(); - - existingGroup.most_recent_notification_id = notification.id; - existingGroup.page_max_id = notification.id; - existingGroup.latest_page_notification_at = notification.created_at; - existingGroup.notifications_count += 1; - - groups.splice(existingGroupIndex, 1); - mergeGapsAround(groups, existingGroupIndex); - - groups.unshift(existingGroup); - - return; - } - } + if (!shouldGroupNotificationType(notification.type)) { + notification = { + ...notification, + group_key: `ungrouped-${notification.id}`, + }; } - // We have not found an existing group, create a new one - groups.unshift(createNotificationGroupFromNotificationJSON(notification)); + const existingGroupIndex = groups.findIndex( + (group) => + group.type !== 'gap' && group.group_key === notification.group_key, + ); + + // In any case, we are going to add a group at the top + // If there is currently a gap at the top, now is the time to update it + if (groups.length > 0 && groups[0]?.type === 'gap') { + groups[0].maxId = notification.id; + } + + if (existingGroupIndex > -1) { + const existingGroup = groups[existingGroupIndex]; + + if ( + existingGroup && + existingGroup.type !== 'gap' && + !existingGroup.sampleAccountIds.includes(notification.account.id) // This can happen for example if you like, then unlike, then like again the same post + ) { + // Update the existing group + if ( + existingGroup.sampleAccountIds.unshift(notification.account.id) > + NOTIFICATIONS_GROUP_MAX_AVATARS + ) + existingGroup.sampleAccountIds.pop(); + + existingGroup.most_recent_notification_id = notification.id; + existingGroup.page_max_id = notification.id; + existingGroup.latest_page_notification_at = notification.created_at; + existingGroup.notifications_count += 1; + + groups.splice(existingGroupIndex, 1); + mergeGapsAround(groups, existingGroupIndex); + + groups.unshift(existingGroup); + } + } else { + // We have not found an existing group, create a new one + groups.unshift(createNotificationGroupFromNotificationJSON(notification)); + } } function trimNotifications(state: NotificationGroupsState) { From 4fe7f213a64e22a2912f13a8e5d6ac415125b0a1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 08:29:43 -0400 Subject: [PATCH 102/550] Use `async_count` in more view locations (#32086) --- app/controllers/admin/announcements_controller.rb | 1 + app/controllers/admin/disputes/appeals_controller.rb | 1 + .../admin/trends/links/preview_card_providers_controller.rb | 1 + app/controllers/admin/trends/tags_controller.rb | 1 + app/views/admin/announcements/index.html.haml | 2 +- app/views/admin/disputes/appeals/index.html.haml | 2 +- .../admin/trends/links/preview_card_providers/index.html.haml | 2 +- app/views/admin/trends/tags/index.html.haml | 2 +- 8 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb index 8f9708183a..12230a6506 100644 --- a/app/controllers/admin/announcements_controller.rb +++ b/app/controllers/admin/announcements_controller.rb @@ -6,6 +6,7 @@ class Admin::AnnouncementsController < Admin::BaseController def index authorize :announcement, :index? + @published_announcements_count = Announcement.published.async_count end def new diff --git a/app/controllers/admin/disputes/appeals_controller.rb b/app/controllers/admin/disputes/appeals_controller.rb index 5e342409b0..0c41553676 100644 --- a/app/controllers/admin/disputes/appeals_controller.rb +++ b/app/controllers/admin/disputes/appeals_controller.rb @@ -6,6 +6,7 @@ class Admin::Disputes::AppealsController < Admin::BaseController def index authorize :appeal, :index? + @pending_appeals_count = Appeal.pending.async_count @appeals = filtered_appeals.page(params[:page]) end diff --git a/app/controllers/admin/trends/links/preview_card_providers_controller.rb b/app/controllers/admin/trends/links/preview_card_providers_controller.rb index 768b79f8db..5e4b4084f8 100644 --- a/app/controllers/admin/trends/links/preview_card_providers_controller.rb +++ b/app/controllers/admin/trends/links/preview_card_providers_controller.rb @@ -4,6 +4,7 @@ class Admin::Trends::Links::PreviewCardProvidersController < Admin::BaseControll def index authorize :preview_card_provider, :review? + @pending_preview_card_providers_count = PreviewCardProvider.unreviewed.async_count @preview_card_providers = filtered_preview_card_providers.page(params[:page]) @form = Trends::PreviewCardProviderBatch.new end diff --git a/app/controllers/admin/trends/tags_controller.rb b/app/controllers/admin/trends/tags_controller.rb index f5946448ae..fcd23fbf66 100644 --- a/app/controllers/admin/trends/tags_controller.rb +++ b/app/controllers/admin/trends/tags_controller.rb @@ -4,6 +4,7 @@ class Admin::Trends::TagsController < Admin::BaseController def index authorize :tag, :review? + @pending_tags_count = Tag.pending_review.async_count @tags = filtered_tags.page(params[:page]) @form = Trends::TagBatch.new end diff --git a/app/views/admin/announcements/index.html.haml b/app/views/admin/announcements/index.html.haml index 72227b0457..6a76c18776 100644 --- a/app/views/admin/announcements/index.html.haml +++ b/app/views/admin/announcements/index.html.haml @@ -9,7 +9,7 @@ %strong= t('admin.relays.status') %ul %li= filter_link_to t('generic.all'), published: nil, unpublished: nil - %li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil + %li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(@published_announcements_count.value)})"], ' '), published: '1', unpublished: nil - if @announcements.empty? .muted-hint.center-text diff --git a/app/views/admin/disputes/appeals/index.html.haml b/app/views/admin/disputes/appeals/index.html.haml index 7f04dd40fb..e09e275e5d 100644 --- a/app/views/admin/disputes/appeals/index.html.haml +++ b/app/views/admin/disputes/appeals/index.html.haml @@ -5,7 +5,7 @@ .filter-subset %strong= t('admin.tags.review') %ul - %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{Appeal.pending.count})"], ' '), status: 'pending' + %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{@pending_appeals_count.value})"], ' '), status: 'pending' %li= filter_link_to t('admin.trends.approved'), status: 'approved' %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' diff --git a/app/views/admin/trends/links/preview_card_providers/index.html.haml b/app/views/admin/trends/links/preview_card_providers/index.html.haml index 93daf25f31..0770ac4b81 100644 --- a/app/views/admin/trends/links/preview_card_providers/index.html.haml +++ b/app/views/admin/trends/links/preview_card_providers/index.html.haml @@ -12,7 +12,7 @@ %li= filter_link_to t('generic.all'), status: nil %li= filter_link_to t('admin.trends.approved'), status: 'approved' %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' - %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{PreviewCardProvider.unreviewed.count})"], ' '), status: 'pending_review' + %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{@pending_preview_card_providers_count.value})"], ' '), status: 'pending_review' .back-link = link_to admin_trends_links_path do = material_symbol 'chevron_left' diff --git a/app/views/admin/trends/tags/index.html.haml b/app/views/admin/trends/tags/index.html.haml index 480877456f..21f6c2947a 100644 --- a/app/views/admin/trends/tags/index.html.haml +++ b/app/views/admin/trends/tags/index.html.haml @@ -12,7 +12,7 @@ %li= filter_link_to t('generic.all'), status: nil %li= filter_link_to t('admin.trends.approved'), status: 'approved' %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' - %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{Tag.pending_review.count})"], ' '), status: 'pending_review' + %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{@pending_tags_count.value})"], ' '), status: 'pending_review' = form_with model: @form, url: batch_admin_trends_tags_path do |f| = hidden_field_tag :page, params[:page] || 1 From e4e07b1c34858dc6b7070f1b5d81f40ec63ebf4c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 10:11:15 -0400 Subject: [PATCH 103/550] Reduce factory usage across `spec/services` area (#32098) --- .../account_statuses_cleanup_service_spec.rb | 75 +++--- .../process_status_update_service_spec.rb | 74 +++-- .../services/authorize_follow_service_spec.rb | 34 ++- .../batched_remove_status_service_spec.rb | 52 ++-- spec/services/block_service_spec.rb | 13 +- spec/services/bulk_import_service_spec.rb | 255 +++++++----------- spec/services/favourite_service_spec.rb | 19 +- spec/services/follow_service_spec.rb | 13 +- .../services/process_mentions_service_spec.rb | 48 ++-- spec/services/reject_follow_service_spec.rb | 36 ++- .../remove_from_followers_service_spec.rb | 23 +- spec/services/remove_status_service_spec.rb | 44 ++- spec/services/report_service_spec.rb | 35 ++- spec/services/resolve_account_service_spec.rb | 128 +++++---- spec/services/resolve_url_service_spec.rb | 44 ++- .../services/translate_status_service_spec.rb | 52 ++-- spec/services/unblock_domain_service_spec.rb | 38 +-- spec/services/unblock_service_spec.rb | 24 +- spec/services/unfollow_service_spec.rb | 38 +-- spec/services/update_account_service_spec.rb | 20 +- spec/services/update_status_service_spec.rb | 143 +++++----- 21 files changed, 567 insertions(+), 641 deletions(-) diff --git a/spec/services/account_statuses_cleanup_service_spec.rb b/spec/services/account_statuses_cleanup_service_spec.rb index 857bd4fda4..553d20029a 100644 --- a/spec/services/account_statuses_cleanup_service_spec.rb +++ b/spec/services/account_statuses_cleanup_service_spec.rb @@ -27,39 +27,35 @@ RSpec.describe AccountStatusesCleanupService do end context 'when given a normal budget of 10' do - it 'reports 3 deleted statuses' do - expect(subject.call(account_policy, 10)).to eq 3 - end + it 'reports 3 deleted statuses and records last deleted id, deletes statuses, preserves recent unrelated statuses' do + expect(subject.call(account_policy, 10)) + .to eq(3) - it 'records the last deleted id' do - subject.call(account_policy, 10) - expect(account_policy.last_inspected).to eq [old_status.id, another_old_status.id].max - end + expect(account_policy.last_inspected) + .to eq [old_status.id, another_old_status.id].max - it 'actually deletes the statuses' do - subject.call(account_policy, 10) - expect(Status.find_by(id: [very_old_status.id, old_status.id, another_old_status.id])).to be_nil - expect { recent_status.reload }.to_not raise_error - end - - it 'preserves recent and unrelated statuses' do - subject.call(account_policy, 10) - expect { unrelated_status.reload }.to_not raise_error - expect { recent_status.reload }.to_not raise_error + expect(Status.find_by(id: [very_old_status.id, old_status.id, another_old_status.id])) + .to be_nil + expect { recent_status.reload } + .to_not raise_error + expect { unrelated_status.reload } + .to_not raise_error + expect { recent_status.reload } + .to_not raise_error end end context 'when called repeatedly with a budget of 2' do - it 'reports 2 then 1 deleted statuses' do - expect(subject.call(account_policy, 2)).to eq 2 - expect(subject.call(account_policy, 2)).to eq 1 - end + it 'reports 2 then 1 deleted statuses and deletes in expected order' do + expect(subject.call(account_policy, 2)) + .to eq(2) + expect(Status.find_by(id: very_old_status.id)) + .to be_nil - it 'actually deletes the statuses in the expected order' do - subject.call(account_policy, 2) - expect(Status.find_by(id: very_old_status.id)).to be_nil - subject.call(account_policy, 2) - expect(Status.find_by(id: [very_old_status.id, old_status.id, another_old_status.id])).to be_nil + expect(subject.call(account_policy, 2)) + .to eq(1) + expect(Status.find_by(id: [very_old_status.id, old_status.id, another_old_status.id])) + .to be_nil end end @@ -90,19 +86,24 @@ RSpec.describe AccountStatusesCleanupService do end end - it 'reports 0 deleted statuses then 0 then 3 then 0 again' do - expect(subject.call(account_policy, 10)).to eq 0 - expect(subject.call(account_policy, 10)).to eq 0 - expect(subject.call(account_policy, 10)).to eq 3 - expect(subject.call(account_policy, 10)).to eq 0 + it 'reports 0 deleted statuses then 0 then 3 then 0 again, and keeps id under oldest deletable record' do + expect(subject.call(account_policy, 10)) + .to eq(0) + expect(subject.call(account_policy, 10)) + .to eq(0) + expect(subject.call(account_policy, 10)) + .to eq(3) + expect(subject.call(account_policy, 10)) + .to eq(0) + expect(account_policy.last_inspected) + .to be < oldest_deletable_record_id end - it 'never causes the recorded id to get higher than oldest deletable toot' do - subject.call(account_policy, 10) - subject.call(account_policy, 10) - subject.call(account_policy, 10) - subject.call(account_policy, 10) - expect(account_policy.last_inspected).to be < Mastodon::Snowflake.id_at(account_policy.min_status_age.seconds.ago, with_random: false) + def oldest_deletable_record_id + Mastodon::Snowflake.id_at( + account_policy.min_status_age.seconds.ago, + with_random: false + ) end end end diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb index a97e840802..b6ceba374f 100644 --- a/spec/services/activitypub/process_status_update_service_spec.rb +++ b/spec/services/activitypub/process_status_update_service_spec.rb @@ -2,10 +2,6 @@ require 'rails_helper' -def poll_option_json(name, votes) - { type: 'Note', name: name, replies: { type: 'Collection', totalItems: votes } } -end - RSpec.describe ActivityPub::ProcessStatusUpdateService do subject { described_class.new } @@ -294,7 +290,6 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do context 'when originally without media attachments' do before do stub_request(:get, 'https://example.com/foo.png').to_return(body: attachment_fixture('emojo.png')) - subject.call(status, json, json) end let(:payload) do @@ -310,19 +305,18 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do } end - it 'updates media attachments' do - media_attachment = status.reload.ordered_media_attachments.first + it 'updates media attachments, fetches attachment, records media change in edit' do + subject.call(status, json, json) - expect(media_attachment).to_not be_nil - expect(media_attachment.remote_url).to eq 'https://example.com/foo.png' - end + expect(status.reload.ordered_media_attachments.first) + .to be_present + .and(have_attributes(remote_url: 'https://example.com/foo.png')) - it 'fetches the attachment' do - expect(a_request(:get, 'https://example.com/foo.png')).to have_been_made - end + expect(a_request(:get, 'https://example.com/foo.png')) + .to have_been_made - it 'records media change in edit' do - expect(status.edits.reload.last.ordered_media_attachment_ids).to_not be_empty + expect(status.edits.reload.last.ordered_media_attachment_ids) + .to_not be_empty end end @@ -344,27 +338,26 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do before do allow(RedownloadMediaWorker).to receive(:perform_async) + end + + it 'updates the existing media attachment in-place, does not queue redownload, updates media, records media change' do subject.call(status, json, json) - end - it 'updates the existing media attachment in-place' do - media_attachment = status.media_attachments.ordered.reload.first + expect(status.media_attachments.ordered.reload.first) + .to be_present + .and have_attributes( + remote_url: 'https://example.com/foo.png', + description: 'A picture' + ) - expect(media_attachment).to_not be_nil - expect(media_attachment.remote_url).to eq 'https://example.com/foo.png' - expect(media_attachment.description).to eq 'A picture' - end + expect(RedownloadMediaWorker) + .to_not have_received(:perform_async) - it 'does not queue redownload for the existing media attachment' do - expect(RedownloadMediaWorker).to_not have_received(:perform_async) - end + expect(status.ordered_media_attachments.map(&:remote_url)) + .to eq %w(https://example.com/foo.png) - it 'updates media attachments' do - expect(status.ordered_media_attachments.map(&:remote_url)).to eq %w(https://example.com/foo.png) - end - - it 'records media change in edit' do - expect(status.edits.reload.last.ordered_media_attachment_ids).to_not be_empty + expect(status.edits.reload.last.ordered_media_attachment_ids) + .to_not be_empty end end @@ -372,10 +365,11 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do before do poll = Fabricate(:poll, status: status) status.update(preloadable_poll: poll) - subject.call(status, json, json) end it 'removes poll and records media change in edit' do + subject.call(status, json, json) + expect(status.reload.poll).to be_nil expect(status.edits.reload.last.poll_options).to be_nil end @@ -398,15 +392,13 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do } end - before do - subject.call(status, json, json) - end - it 'creates a poll and records media change in edit' do - poll = status.reload.poll + subject.call(status, json, json) + + expect(status.reload.poll) + .to be_present + .and have_attributes(options: %w(Foo Bar Baz)) - expect(poll).to_not be_nil - expect(poll.options).to eq %w(Foo Bar Baz) expect(status.edits.reload.last.poll_options).to eq %w(Foo Bar Baz) end end @@ -419,4 +411,8 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do .to eq '2021-09-08 22:39:25 UTC' end end + + def poll_option_json(name, votes) + { type: 'Note', name: name, replies: { type: 'Collection', totalItems: votes } } + end end diff --git a/spec/services/authorize_follow_service_spec.rb b/spec/services/authorize_follow_service_spec.rb index 533b791fb7..de28572802 100644 --- a/spec/services/authorize_follow_service_spec.rb +++ b/spec/services/authorize_follow_service_spec.rb @@ -12,15 +12,15 @@ RSpec.describe AuthorizeFollowService do before do FollowRequest.create(account: bob, target_account: sender) + end + + it 'removes follow request and creates follow relation' do subject.call(bob, sender) - end - it 'removes follow request' do - expect(bob.requested?(sender)).to be false - end - - it 'creates follow relation' do - expect(bob.following?(sender)).to be true + expect(bob) + .to_not be_requested(sender) + expect(bob) + .to be_following(sender) end end @@ -30,19 +30,17 @@ RSpec.describe AuthorizeFollowService do before do FollowRequest.create(account: bob, target_account: sender) stub_request(:post, bob.inbox_url).to_return(status: 200) + end + + it 'removes follow request, creates follow relation, send accept activity', :inline_jobs do subject.call(bob, sender) - end - it 'removes follow request' do - expect(bob.requested?(sender)).to be false - end - - it 'creates follow relation' do - expect(bob.following?(sender)).to be true - end - - it 'sends an accept activity', :inline_jobs do - expect(a_request(:post, bob.inbox_url)).to have_been_made.once + expect(bob) + .to_not be_requested(sender) + expect(bob) + .to be_following(sender) + expect(a_request(:post, bob.inbox_url)) + .to have_been_made.once end end end diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb index 628bb198ef..1ff73a633b 100644 --- a/spec/services/batched_remove_status_service_spec.rb +++ b/spec/services/batched_remove_status_service_spec.rb @@ -24,32 +24,38 @@ RSpec.describe BatchedRemoveStatusService, :inline_jobs do status_alice_hello status_alice_other + end + it 'removes status records, removes from author and local follower feeds, notifies stream, sends delete' do subject.call([status_alice_hello, status_alice_other]) + + expect { Status.find(status_alice_hello.id) } + .to raise_error ActiveRecord::RecordNotFound + expect { Status.find(status_alice_other.id) } + .to raise_error ActiveRecord::RecordNotFound + + expect(feed_ids_for(alice)) + .to_not include(status_alice_hello.id, status_alice_other.id) + + expect(feed_ids_for(jeff)) + .to_not include(status_alice_hello.id, status_alice_other.id) + + expect(redis) + .to have_received(:publish) + .with("timeline:#{jeff.id}", any_args).at_least(:once) + + expect(redis) + .to have_received(:publish) + .with('timeline:public', any_args).at_least(:once) + + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.at_least_once end - it 'removes statuses' do - expect { Status.find(status_alice_hello.id) }.to raise_error ActiveRecord::RecordNotFound - expect { Status.find(status_alice_other.id) }.to raise_error ActiveRecord::RecordNotFound - end - - it 'removes statuses from author\'s home feed' do - expect(HomeFeed.new(alice).get(10).pluck(:id)).to_not include(status_alice_hello.id, status_alice_other.id) - end - - it 'removes statuses from local follower\'s home feed' do - expect(HomeFeed.new(jeff).get(10).pluck(:id)).to_not include(status_alice_hello.id, status_alice_other.id) - end - - it 'notifies streaming API of followers' do - expect(redis).to have_received(:publish).with("timeline:#{jeff.id}", any_args).at_least(:once) - end - - it 'notifies streaming API of public timeline' do - expect(redis).to have_received(:publish).with('timeline:public', any_args).at_least(:once) - end - - it 'sends delete activity to followers' do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.at_least_once + def feed_ids_for(account) + HomeFeed + .new(account) + .get(10) + .pluck(:id) end end diff --git a/spec/services/block_service_spec.rb b/spec/services/block_service_spec.rb index 46dd691986..d9687a5404 100644 --- a/spec/services/block_service_spec.rb +++ b/spec/services/block_service_spec.rb @@ -26,15 +26,16 @@ RSpec.describe BlockService do before do stub_request(:post, 'http://example.com/inbox').to_return(status: 200) + end + + it 'creates a blocking relation and send block activity', :inline_jobs do subject.call(sender, bob) - end - it 'creates a blocking relation' do - expect(sender.blocking?(bob)).to be true - end + expect(sender) + .to be_blocking(bob) - it 'sends a block activity', :inline_jobs do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end end diff --git a/spec/services/bulk_import_service_spec.rb b/spec/services/bulk_import_service_spec.rb index 0197f81a44..f52fc4d7d5 100644 --- a/spec/services/bulk_import_service_spec.rb +++ b/spec/services/bulk_import_service_spec.rb @@ -24,30 +24,19 @@ RSpec.describe BulkImportService do ].map { |data| import.rows.create!(data: data) } end - before do - account.follow!(Fabricate(:account)) - end + before { account.follow!(Fabricate(:account)) } - it 'does not immediately change who the account follows' do - expect { subject.call(import) }.to_not(change { account.reload.active_relationships.to_a }) - end + it 'does not immediately change who the account follows, enqueues workers, sends follow requests after worker run' do + expect { subject.call(import) } + .to_not(change { account.reload.active_relationships.to_a }) - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows.map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows.map(&:id)) - it 'requests to follow all the listed users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(FollowRequest.includes(:target_account).where(account: account).map { |follow_request| follow_request.target_account.acct }).to contain_exactly('user@foo.bar', 'unknown@unknown.bar') + expect(FollowRequest.includes(:target_account).where(account: account).map { |follow_request| follow_request.target_account.acct }) + .to contain_exactly('user@foo.bar', 'unknown@unknown.bar') end end @@ -71,31 +60,20 @@ RSpec.describe BulkImportService do account.follow!(to_be_unfollowed) end - it 'unfollows user not present on list' do - subject.call(import) - expect(account.following?(to_be_unfollowed)).to be false - end + it 'updates the existing follow relationship as expected and unfollows user not on list, enqueues workers, sends follow reqs after worker run' do + expect { subject.call(import) } + .to change { Follow.where(account: account, target_account: followed).pick(:show_reblogs, :notify, :languages) }.from([true, false, nil]).to([false, true, ['en']]) - it 'updates the existing follow relationship as expected' do - expect { subject.call(import) }.to change { Follow.where(account: account, target_account: followed).pick(:show_reblogs, :notify, :languages) }.from([true, false, nil]).to([false, true, ['en']]) - end + expect(account) + .to_not be_following(to_be_unfollowed) - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows[1..].map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows[1..].map(&:id)) - it 'requests to follow all the expected users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(FollowRequest.includes(:target_account).where(account: account).map { |follow_request| follow_request.target_account.acct }).to contain_exactly('user@foo.bar', 'unknown@unknown.bar') + expect(FollowRequest.includes(:target_account).where(account: account).map { |follow_request| follow_request.target_account.acct }) + .to contain_exactly('user@foo.bar', 'unknown@unknown.bar') end end @@ -110,30 +88,19 @@ RSpec.describe BulkImportService do ].map { |data| import.rows.create!(data: data) } end - before do - account.block!(Fabricate(:account, username: 'already_blocked', domain: 'remote.org')) - end + before { account.block!(Fabricate(:account, username: 'already_blocked', domain: 'remote.org')) } - it 'does not immediately change who the account blocks' do - expect { subject.call(import) }.to_not(change { account.reload.blocking.to_a }) - end + it 'does not immediately change who the account blocks, enqueues worker, blocks after run' do + expect { subject.call(import) } + .to_not(change { account.reload.blocking.to_a }) - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows.map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows.map(&:id)) - it 'blocks all the listed users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(account.blocking.map(&:acct)).to contain_exactly('already_blocked@remote.org', 'user@foo.bar', 'unknown@unknown.bar') + expect(account.reload.blocking.map(&:acct)) + .to contain_exactly('already_blocked@remote.org', 'user@foo.bar', 'unknown@unknown.bar') end end @@ -157,27 +124,18 @@ RSpec.describe BulkImportService do account.block!(to_be_unblocked) end - it 'unblocks user not present on list' do + it 'unblocks user not present on list, enqueues worker, requests follow after run' do subject.call(import) + expect(account.blocking?(to_be_unblocked)).to be false - end - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows[1..].map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows[1..].map(&:id)) - it 'requests to follow all the expected users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(account.blocking.map(&:acct)).to contain_exactly('blocked@foo.bar', 'user@foo.bar', 'unknown@unknown.bar') + expect(account.blocking.map(&:acct)) + .to contain_exactly('blocked@foo.bar', 'user@foo.bar', 'unknown@unknown.bar') end end @@ -192,30 +150,19 @@ RSpec.describe BulkImportService do ].map { |data| import.rows.create!(data: data) } end - before do - account.mute!(Fabricate(:account, username: 'already_muted', domain: 'remote.org')) - end + before { account.mute!(Fabricate(:account, username: 'already_muted', domain: 'remote.org')) } - it 'does not immediately change who the account blocks' do - expect { subject.call(import) }.to_not(change { account.reload.muting.to_a }) - end + it 'does not immediately change who the account blocks, enqueures worker, mutes users after worker run' do + expect { subject.call(import) } + .to_not(change { account.reload.muting.to_a }) - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows.map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows.map(&:id)) - it 'mutes all the listed users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(account.muting.map(&:acct)).to contain_exactly('already_muted@remote.org', 'user@foo.bar', 'unknown@unknown.bar') + expect(account.reload.muting.map(&:acct)) + .to contain_exactly('already_muted@remote.org', 'user@foo.bar', 'unknown@unknown.bar') end end @@ -239,31 +186,19 @@ RSpec.describe BulkImportService do account.mute!(to_be_unmuted) end - it 'updates the existing mute as expected' do - expect { subject.call(import) }.to change { Mute.where(account: account, target_account: muted).pick(:hide_notifications) }.from(false).to(true) - end + it 'updates the existing mute as expected and unblocks user not on list, and enqueues worker, and requests follow after worker run' do + expect { subject.call(import) } + .to change { Mute.where(account: account, target_account: muted).pick(:hide_notifications) }.from(false).to(true) - it 'unblocks user not present on list' do - subject.call(import) expect(account.muting?(to_be_unmuted)).to be false - end - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows[1..].map(&:id)) - end + expect(row_worker_job_args) + .to match_array(rows[1..].map(&:id)) - it 'requests to follow all the expected users once the workers have run' do - subject.call(import) + stub_resolve_account_and_drain_workers - resolve_account_service_double = instance_double(ResolveAccountService) - allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double) - allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } - allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } - - Import::RowWorker.drain - - expect(account.muting.map(&:acct)).to contain_exactly('muted@foo.bar', 'user@foo.bar', 'unknown@unknown.bar') + expect(account.muting.map(&:acct)) + .to contain_exactly('muted@foo.bar', 'user@foo.bar', 'unknown@unknown.bar') end end @@ -284,13 +219,11 @@ RSpec.describe BulkImportService do account.block_domain!('blocked.com') end - it 'blocks all the new domains' do + it 'blocks all the new domains and marks import finished' do subject.call(import) - expect(account.domain_blocks.pluck(:domain)).to contain_exactly('alreadyblocked.com', 'blocked.com', 'to-block.com') - end - it 'marks the import as finished' do - subject.call(import) + expect(account.domain_blocks.pluck(:domain)) + .to contain_exactly('alreadyblocked.com', 'blocked.com', 'to-block.com') expect(import.reload.state_finished?).to be true end end @@ -312,14 +245,13 @@ RSpec.describe BulkImportService do account.block_domain!('blocked.com') end - it 'blocks all the new domains' do + it 'blocks all the new domains and marks import finished' do subject.call(import) - expect(account.domain_blocks.pluck(:domain)).to contain_exactly('blocked.com', 'to-block.com') - end - it 'marks the import as finished' do - subject.call(import) - expect(import.reload.state_finished?).to be true + expect(account.domain_blocks.pluck(:domain)) + .to contain_exactly('blocked.com', 'to-block.com') + expect(import.reload.state_finished?) + .to be true end end @@ -347,22 +279,16 @@ RSpec.describe BulkImportService do account.bookmarks.create!(status: bookmarked) end - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows.map(&:id)) - end - - it 'updates the bookmarks as expected once the workers have run' do + it 'enqueues workers for the expected rows and updates bookmarks after worker run' do subject.call(import) - service_double = instance_double(ActivityPub::FetchRemoteStatusService) - allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service_double) - allow(service_double).to receive(:call).with('https://domain.unknown/foo') { Fabricate(:status, uri: 'https://domain.unknown/foo') } - allow(service_double).to receive(:call).with('https://domain.unknown/private') { Fabricate(:status, uri: 'https://domain.unknown/private', visibility: :direct) } + expect(row_worker_job_args) + .to match_array(rows.map(&:id)) - Import::RowWorker.drain + stub_fetch_remote_and_drain_workers - expect(account.bookmarks.map { |bookmark| bookmark.status.uri }).to contain_exactly(already_bookmarked.uri, status.uri, bookmarked.uri, 'https://domain.unknown/foo') + expect(account.bookmarks.map { |bookmark| bookmark.status.uri }) + .to contain_exactly(already_bookmarked.uri, status.uri, bookmarked.uri, 'https://domain.unknown/foo') end end @@ -390,23 +316,48 @@ RSpec.describe BulkImportService do account.bookmarks.create!(status: bookmarked) end - it 'enqueues workers for the expected rows' do - subject.call(import) - expect(Import::RowWorker.jobs.pluck('args').flatten).to match_array(rows.map(&:id)) - end - - it 'updates the bookmarks as expected once the workers have run' do + it 'enqueues workers for the expected rows and updates bookmarks' do subject.call(import) - service_double = instance_double(ActivityPub::FetchRemoteStatusService) - allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service_double) - allow(service_double).to receive(:call).with('https://domain.unknown/foo') { Fabricate(:status, uri: 'https://domain.unknown/foo') } - allow(service_double).to receive(:call).with('https://domain.unknown/private') { Fabricate(:status, uri: 'https://domain.unknown/private', visibility: :direct) } + expect(row_worker_job_args) + .to match_array(rows.map(&:id)) - Import::RowWorker.drain + stub_fetch_remote_and_drain_workers - expect(account.bookmarks.map { |bookmark| bookmark.status.uri }).to contain_exactly(status.uri, bookmarked.uri, 'https://domain.unknown/foo') + expect(account.bookmarks.map { |bookmark| bookmark.status.uri }) + .to contain_exactly(status.uri, bookmarked.uri, 'https://domain.unknown/foo') end end + + def row_worker_job_args + Import::RowWorker + .jobs + .pluck('args') + .flatten + end + + def stub_resolve_account_and_drain_workers + resolve_account_service_double = instance_double(ResolveAccountService) + allow(ResolveAccountService) + .to receive(:new) + .and_return(resolve_account_service_double) + allow(resolve_account_service_double) + .to receive(:call) + .with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) } + allow(resolve_account_service_double) + .to receive(:call) + .with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) } + + Import::RowWorker.drain + end + + def stub_fetch_remote_and_drain_workers + service_double = instance_double(ActivityPub::FetchRemoteStatusService) + allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service_double) + allow(service_double).to receive(:call).with('https://domain.unknown/foo') { Fabricate(:status, uri: 'https://domain.unknown/foo') } + allow(service_double).to receive(:call).with('https://domain.unknown/private') { Fabricate(:status, uri: 'https://domain.unknown/private', visibility: :direct) } + + Import::RowWorker.drain + end end end diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb index c39362def2..123e8699c7 100644 --- a/spec/services/favourite_service_spec.rb +++ b/spec/services/favourite_service_spec.rb @@ -11,11 +11,9 @@ RSpec.describe FavouriteService do let(:bob) { Fabricate(:account) } let(:status) { Fabricate(:status, account: bob) } - before do - subject.call(sender, status) - end - it 'creates a favourite' do + subject.call(sender, status) + expect(status.favourites.first).to_not be_nil end end @@ -26,15 +24,16 @@ RSpec.describe FavouriteService do before do stub_request(:post, 'http://example.com/inbox').to_return(status: 200, body: '', headers: {}) + end + + it 'creates a favourite and sends like activity', :inline_jobs do subject.call(sender, status) - end - it 'creates a favourite' do - expect(status.favourites.first).to_not be_nil - end + expect(status.favourites.first) + .to_not be_nil - it 'sends a like activity', :inline_jobs do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end end diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb index 0c4cd60046..bbd8a6f997 100644 --- a/spec/services/follow_service_spec.rb +++ b/spec/services/follow_service_spec.rb @@ -143,15 +143,16 @@ RSpec.describe FollowService do before do stub_request(:post, 'http://example.com/inbox').to_return(status: 200, body: '', headers: {}) + end + + it 'creates follow request and sends an activity to inbox', :inline_jobs do subject.call(sender, bob) - end - it 'creates follow request' do - expect(FollowRequest.find_by(account: sender, target_account: bob)).to_not be_nil - end + expect(FollowRequest.find_by(account: sender, target_account: bob)) + .to_not be_nil - it 'sends a follow activity to the inbox', :inline_jobs do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end end diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb index 2c202d3e57..3cc83d82f3 100644 --- a/spec/services/process_mentions_service_spec.rb +++ b/spec/services/process_mentions_service_spec.rb @@ -16,20 +16,25 @@ RSpec.describe ProcessMentionsService do before do account.block!(individually_blocked_account) account.domain_blocks.create!(domain: domain_blocked_account.domain) - - subject.call(status) end - it 'creates a mention to the non-blocked account' do - expect(non_blocked_account.mentions.where(status: status).count).to eq 1 + it 'creates a mention to the non-blocked account but not the individually or domain blocked accounts' do + expect { subject.call(status) } + .to create_mention_for_non_blocked + .and skip_mention_for_individual + .and skip_mention_for_domain_blocked end - it 'does not create a mention to the individually blocked account' do - expect(individually_blocked_account.mentions.where(status: status).count).to eq 0 + def create_mention_for_non_blocked + change { non_blocked_account.mentions.where(status: status).count }.to(1) end - it 'does not create a mention to the domain-blocked account' do - expect(domain_blocked_account.mentions.where(status: status).count).to eq 0 + def skip_mention_for_individual + not_change { individually_blocked_account.mentions.where(status: status).count }.from(0) + end + + def skip_mention_for_domain_blocked + not_change { domain_blocked_account.mentions.where(status: status).count }.from(0) end end @@ -40,11 +45,9 @@ RSpec.describe ProcessMentionsService do context 'with a valid remote user' do let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } - before do - subject.call(status) - end - it 'creates a mention' do + subject.call(status) + expect(remote_user.mentions.where(status: status).count).to eq 1 end end @@ -53,11 +56,9 @@ RSpec.describe ProcessMentionsService do let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct} @#{remote_user.acct} @#{remote_user.acct}", visibility: :public) } - before do - subject.call(status, save_records: false) - end - it 'creates exactly one mention' do + subject.call(status, save_records: false) + expect(status.mentions.size).to eq 1 end end @@ -66,11 +67,9 @@ RSpec.describe ProcessMentionsService do let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') } let!(:status) { Fabricate(:status, account: account, text: 'Hello @sneak@hæresiar.ch') } - before do - subject.call(status) - end - it 'creates a mention' do + subject.call(status) + expect(remote_user.mentions.where(status: status).count).to eq 1 end end @@ -79,11 +78,9 @@ RSpec.describe ProcessMentionsService do let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') } let!(:status) { Fabricate(:status, account: account, text: 'Hello @foo@հայ.հայ') } - before do - subject.call(status) - end - it 'creates a mention' do + subject.call(status) + expect(remote_user.mentions.where(status: status).count).to eq 1 end end @@ -95,10 +92,11 @@ RSpec.describe ProcessMentionsService do before do stub_request(:get, 'https://example.com/.well-known/host-meta').to_return(status: 404) stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com').to_return(status: 500) - subject.call(status) end it 'creates a mention' do + subject.call(status) + expect(remote_user.mentions.where(status: status).count).to eq 1 end end diff --git a/spec/services/reject_follow_service_spec.rb b/spec/services/reject_follow_service_spec.rb index d2c7a00206..eec0d6c1e0 100644 --- a/spec/services/reject_follow_service_spec.rb +++ b/spec/services/reject_follow_service_spec.rb @@ -10,17 +10,15 @@ RSpec.describe RejectFollowService do describe 'local' do let(:bob) { Fabricate(:account) } - before do - FollowRequest.create(account: bob, target_account: sender) + before { FollowRequest.create(account: bob, target_account: sender) } + + it 'removes follow request and does not create relation' do subject.call(bob, sender) - end - it 'removes follow request' do - expect(bob.requested?(sender)).to be false - end - - it 'does not create follow relation' do - expect(bob.following?(sender)).to be false + expect(bob) + .to_not be_requested(sender) + expect(bob) + .to_not be_following(sender) end end @@ -30,19 +28,17 @@ RSpec.describe RejectFollowService do before do FollowRequest.create(account: bob, target_account: sender) stub_request(:post, bob.inbox_url).to_return(status: 200) + end + + it 'removes follow request, does not create relation, sends reject activity', :inline_jobs do subject.call(bob, sender) - end - it 'removes follow request' do - expect(bob.requested?(sender)).to be false - end - - it 'does not create follow relation' do - expect(bob.following?(sender)).to be false - end - - it 'sends a reject activity', :inline_jobs do - expect(a_request(:post, bob.inbox_url)).to have_been_made.once + expect(bob) + .to_not be_requested(sender) + expect(bob) + .to_not be_following(sender) + expect(a_request(:post, bob.inbox_url)) + .to have_been_made.once end end end diff --git a/spec/services/remove_from_followers_service_spec.rb b/spec/services/remove_from_followers_service_spec.rb index 515600096c..381daf1a59 100644 --- a/spec/services/remove_from_followers_service_spec.rb +++ b/spec/services/remove_from_followers_service_spec.rb @@ -10,13 +10,13 @@ RSpec.describe RemoveFromFollowersService do describe 'local' do let(:sender) { Fabricate(:account, username: 'alice') } - before do - Follow.create(account: sender, target_account: bob) - subject.call(bob, sender) - end + before { Follow.create(account: sender, target_account: bob) } it 'does not create follow relation' do - expect(bob.followed_by?(sender)).to be false + subject.call(bob, sender) + + expect(bob) + .to_not be_followed_by(sender) end end @@ -26,15 +26,16 @@ RSpec.describe RemoveFromFollowersService do before do Follow.create(account: sender, target_account: bob) stub_request(:post, sender.inbox_url).to_return(status: 200) + end + + it 'does not create follow relation and sends reject activity', :inline_jobs do subject.call(bob, sender) - end - it 'does not create follow relation' do - expect(bob.followed_by?(sender)).to be false - end + expect(bob) + .to_not be_followed_by(sender) - it 'sends a reject activity', :inline_jobs do - expect(a_request(:post, sender.inbox_url)).to have_been_made.once + expect(a_request(:post, sender.inbox_url)) + .to have_been_made.once end end end diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb index 08f519b536..f2b46f05b0 100644 --- a/spec/services/remove_status_service_spec.rb +++ b/spec/services/remove_status_service_spec.rb @@ -28,42 +28,38 @@ RSpec.describe RemoveStatusService, :inline_jobs do Fabricate(:status, account: bill, reblog: status, uri: 'hoge') end - it 'removes status from author\'s home feed' do - subject.call(status) - expect(HomeFeed.new(alice).get(10).pluck(:id)).to_not include(status.id) - end - - it 'removes status from local follower\'s home feed' do - subject.call(status) - expect(HomeFeed.new(jeff).get(10).pluck(:id)).to_not include(status.id) - end - - it 'publishes to public media timeline' do + it 'removes status from notifications and from author and local follower home feeds, publishes to media timeline, sends delete activities' do allow(redis).to receive(:publish).with(any_args) - subject.call(status) + expect { subject.call(status) } + .to remove_status_from_notifications - expect(redis).to have_received(:publish).with('timeline:public:media', Oj.dump(event: :delete, payload: status.id.to_s)) - end + expect(home_feed_ids(alice)) + .to_not include(status.id) + expect(home_feed_ids(jeff)) + .to_not include(status.id) - it 'sends Delete activity to followers' do - subject.call(status) + expect(redis) + .to have_received(:publish).with('timeline:public:media', Oj.dump(event: :delete, payload: status.id.to_s)) expect(delete_delivery(hank, status)) .to have_been_made.once - end - - it 'sends Delete activity to rebloggers' do - subject.call(status) expect(delete_delivery(bill, status)) .to have_been_made.once end - it 'remove status from notifications' do - expect { subject.call(status) }.to change { - Notification.where(activity_type: 'Favourite', from_account: jeff, account: alice).count - }.from(1).to(0) + def home_feed_ids(personage) + HomeFeed + .new(personage) + .get(10) + .pluck(:id) + end + + def remove_status_from_notifications + change { Notification.where(activity_type: 'Favourite', from_account: jeff, account: alice).count } + .from(1) + .to(0) end def delete_delivery(target, status) diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index 6518c5c27a..4659e1c7a1 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -31,14 +31,13 @@ RSpec.describe ReportService do context 'when forward is true', :inline_jobs do let(:forward) { true } - it 'sends ActivityPub payload when forward is true' do - subject.call(source_account, remote_account, forward: forward) - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made - end - - it 'has an uri' do + it 'has a URI and sends ActivityPub payload' do report = subject.call(source_account, remote_account, forward: forward) - expect(report.uri).to_not be_nil + + expect(report.uri) + .to_not be_nil + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made end context 'when reporting a reply on a different remote server' do @@ -122,13 +121,12 @@ RSpec.describe ReportService do status.mentions.create(account: source_account) end - it 'creates a report' do - expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) - end + it 'creates a report and attaches the DM to the report' do + expect { subject.call } + .to change { target_account.targeted_reports.count }.from(0).to(1) - it 'attaches the DM to the report' do - subject.call - expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] + expect(target_account.targeted_reports.pluck(:status_ids)) + .to eq [[status.id]] end end @@ -146,13 +144,12 @@ RSpec.describe ReportService do status.mentions.create(account: source_account) end - it 'creates a report' do - expect { subject.call }.to change { target_account.targeted_reports.count }.from(0).to(1) - end + it 'creates a report and attaches DM to report' do + expect { subject.call } + .to change { target_account.targeted_reports.count }.from(0).to(1) - it 'attaches the DM to the report' do - subject.call - expect(target_account.targeted_reports.pluck(:status_ids)).to eq [[status.id]] + expect(target_account.targeted_reports.pluck(:status_ids)) + .to eq [[status.id]] end end diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index a856e019a7..1bd4e9a8e3 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -22,37 +22,38 @@ RSpec.describe ResolveAccountService do context 'when domain is banned' do before { Fabricate(:domain_block, domain: 'ap.example.com', severity: :suspend) } - it 'does not return an account' do - expect(subject.call('foo@ap.example.com', skip_webfinger: true)).to be_nil - end - - it 'does not make a webfinger query' do - subject.call('foo@ap.example.com', skip_webfinger: true) - expect(a_request(:get, 'https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com')).to_not have_been_made + it 'does not return an account or make a webfinger query' do + expect(subject.call('foo@ap.example.com', skip_webfinger: true)) + .to be_nil + expect(webfinger_discovery_request) + .to_not have_been_made end end context 'when domain is not banned' do - it 'returns the expected account' do - expect(subject.call('foo@ap.example.com', skip_webfinger: true)).to eq remote_account - end - - it 'does not make a webfinger query' do - subject.call('foo@ap.example.com', skip_webfinger: true) - expect(a_request(:get, 'https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com')).to_not have_been_made + it 'returns the expected account and does not make a webfinger query' do + expect(subject.call('foo@ap.example.com', skip_webfinger: true)) + .to eq remote_account + expect(webfinger_discovery_request) + .to_not have_been_made end end end context 'when account is not known' do - it 'does not return an account' do - expect(subject.call('foo@ap.example.com', skip_webfinger: true)).to be_nil + it 'does not return an account and does not make webfinger query' do + expect(subject.call('foo@ap.example.com', skip_webfinger: true)) + .to be_nil + expect(webfinger_discovery_request) + .to_not have_been_made end + end - it 'does not make a webfinger query' do - subject.call('foo@ap.example.com', skip_webfinger: true) - expect(a_request(:get, 'https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com')).to_not have_been_made - end + def webfinger_discovery_request + a_request( + :get, + 'https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com' + ) end end @@ -84,13 +85,11 @@ RSpec.describe ResolveAccountService do allow(AccountDeletionWorker).to receive(:perform_async) end - it 'returns nil' do - expect(subject.call('hoge@example.com')).to be_nil - end - - it 'queues account deletion worker' do - subject.call('hoge@example.com') - expect(AccountDeletionWorker).to have_received(:perform_async) + it 'returns nil and queues deletion worker' do + expect(subject.call('hoge@example.com')) + .to be_nil + expect(AccountDeletionWorker) + .to have_received(:perform_async) end end @@ -110,9 +109,12 @@ RSpec.describe ResolveAccountService do it 'returns new remote account' do account = subject.call('Foo@redirected.example.com') - expect(account.activitypub?).to be true - expect(account.acct).to eq 'foo@ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' + expect(account) + .to have_attributes( + activitypub?: true, + acct: 'foo@ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox' + ) end end @@ -125,9 +127,12 @@ RSpec.describe ResolveAccountService do it 'returns new remote account' do account = subject.call('Foo@redirected.example.com') - expect(account.activitypub?).to be true - expect(account.acct).to eq 'foo@ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' + expect(account) + .to have_attributes( + activitypub?: true, + acct: 'foo@ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox' + ) end end @@ -161,9 +166,12 @@ RSpec.describe ResolveAccountService do it 'returns new remote account' do account = subject.call('foo@ap.example.com') - expect(account.activitypub?).to be true - expect(account.domain).to eq 'ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' + expect(account) + .to have_attributes( + activitypub?: true, + domain: 'ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox' + ) end context 'with multiple types' do @@ -174,10 +182,13 @@ RSpec.describe ResolveAccountService do it 'returns new remote account' do account = subject.call('foo@ap.example.com') - expect(account.activitypub?).to be true - expect(account.domain).to eq 'ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' - expect(account.actor_type).to eq 'Person' + expect(account) + .to have_attributes( + activitypub?: true, + domain: 'ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox', + actor_type: 'Person' + ) end end end @@ -186,20 +197,21 @@ RSpec.describe ResolveAccountService do let!(:duplicate) { Fabricate(:account, username: 'foo', domain: 'old.example.com', uri: 'https://ap.example.com/users/foo') } let!(:status) { Fabricate(:status, account: duplicate, text: 'foo') } - it 'returns new remote account' do + it 'returns new remote account and merges accounts', :inline_jobs do account = subject.call('foo@ap.example.com') - expect(account.activitypub?).to be true - expect(account.domain).to eq 'ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' - expect(account.uri).to eq 'https://ap.example.com/users/foo' - end + expect(account) + .to have_attributes( + activitypub?: true, + domain: 'ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox', + uri: 'https://ap.example.com/users/foo' + ) - it 'merges accounts', :inline_jobs do - account = subject.call('foo@ap.example.com') - - expect(status.reload.account_id).to eq account.id - expect(Account.where(uri: account.uri).count).to eq 1 + expect(status.reload.account_id) + .to eq account.id + expect(Account.where(uri: account.uri).count) + .to eq 1 end end @@ -210,11 +222,15 @@ RSpec.describe ResolveAccountService do it 'returns new remote account' do account = subject.call('foo@ap.example.com') - expect(account.activitypub?).to be true - expect(account.domain).to eq 'ap.example.com' - expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox' - expect(account.uri).to eq 'https://ap.example.com/users/foo' - expect(status.reload.account).to eq(account) + expect(account) + .to have_attributes( + activitypub?: true, + domain: 'ap.example.com', + inbox_url: 'https://ap.example.com/users/foo/inbox', + uri: 'https://ap.example.com/users/foo' + ) + expect(status.reload.account) + .to eq(account) end end diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb index 80f2a5a4ba..eaf00c1ed8 100644 --- a/spec/services/resolve_url_service_spec.rb +++ b/spec/services/resolve_url_service_spec.rb @@ -51,12 +51,11 @@ RSpec.describe ResolveURLService do let(:url) { 'https://example.com/@foo/42' } let(:uri) { 'https://example.com/users/foo/statuses/42' } - it 'returns status by url' do - expect(subject.call(url, on_behalf_of: account)).to eq(status) - end - - it 'returns status by uri' do - expect(subject.call(uri, on_behalf_of: account)).to eq(status) + it 'returns status by URL or URI' do + expect(subject.call(url, on_behalf_of: account)) + .to eq(status) + expect(subject.call(uri, on_behalf_of: account)) + .to eq(status) end end @@ -75,12 +74,11 @@ RSpec.describe ResolveURLService do let(:url) { 'https://example.com/@foo/42' } let(:uri) { 'https://example.com/users/foo/statuses/42' } - it 'does not return the status by url' do - expect(subject.call(url, on_behalf_of: account)).to be_nil - end - - it 'does not return the status by uri' do - expect(subject.call(uri, on_behalf_of: account)).to be_nil + it 'does not return the status by URL or URI' do + expect(subject.call(url, on_behalf_of: account)) + .to be_nil + expect(subject.call(uri, on_behalf_of: account)) + .to be_nil end end @@ -107,22 +105,20 @@ RSpec.describe ResolveURLService do account.follow!(poster) end - it 'returns status by url' do - expect(subject.call(url, on_behalf_of: account)).to eq(status) - end - - it 'returns status by uri' do - expect(subject.call(uri, on_behalf_of: account)).to eq(status) + it 'returns status by URL or URI' do + expect(subject.call(url, on_behalf_of: account)) + .to eq(status) + expect(subject.call(uri, on_behalf_of: account)) + .to eq(status) end end context 'when the account does not follow the poster' do - it 'does not return the status by url' do - expect(subject.call(url, on_behalf_of: account)).to be_nil - end - - it 'does not return the status by uri' do - expect(subject.call(uri, on_behalf_of: account)).to be_nil + it 'does not return the status by URL or URI' do + expect(subject.call(url, on_behalf_of: account)) + .to be_nil + expect(subject.call(uri, on_behalf_of: account)) + .to be_nil end end end diff --git a/spec/services/translate_status_service_spec.rb b/spec/services/translate_status_service_spec.rb index 0779fbbe6c..cd92fb8d10 100644 --- a/spec/services/translate_status_service_spec.rb +++ b/spec/services/translate_status_service_spec.rb @@ -32,20 +32,14 @@ RSpec.describe TranslateStatusService do allow(TranslationService).to receive_messages(configured?: true, configured: translation_service) end - it 'returns translated status content' do - expect(service.call(status, 'es').content).to eq '

Hola

' - end - - it 'returns source language' do - expect(service.call(status, 'es').detected_source_language).to eq 'en' - end - - it 'returns translation provider' do - expect(service.call(status, 'es').provider).to eq 'Dummy' - end - - it 'returns original status' do - expect(service.call(status, 'es').status).to eq status + it 'returns translated status content and source language and provider and original status' do + expect(service.call(status, 'es')) + .to have_attributes( + content: '

Hola

', + detected_source_language: 'en', + provider: 'Dummy', + status: status + ) end describe 'status has content with custom emoji' do @@ -155,26 +149,16 @@ RSpec.describe TranslateStatusService do let!(:source_texts) { service.send(:source_texts) } it 'returns formatted poll options' do - expect(source_texts.size).to eq 3 - expect(source_texts.values).to eq %w(

Hello

Blue Green) - end - - it 'has a first key with content' do - expect(source_texts.keys.first).to eq :content - end - - it 'has the first option in the second key with correct options' do - option1 = source_texts.keys.second - expect(option1).to be_a Poll::Option - expect(option1.id).to eq '0' - expect(option1.title).to eq 'Blue' - end - - it 'has the second option in the third key with correct options' do - option2 = source_texts.keys.third - expect(option2).to be_a Poll::Option - expect(option2.id).to eq '1' - expect(option2.title).to eq 'Green' + expect(source_texts) + .to have_attributes( + size: 3, + values: %w(

Hello

Blue Green), + keys: contain_exactly( + eq(:content), + be_a(Poll::Option).and(have_attributes(id: '0', title: 'Blue')), + be_a(Poll::Option).and(have_attributes(id: '1', title: 'Green')) + ) + ) end end end diff --git a/spec/services/unblock_domain_service_spec.rb b/spec/services/unblock_domain_service_spec.rb index 405fe1cfd2..daa1d480a6 100644 --- a/spec/services/unblock_domain_service_spec.rb +++ b/spec/services/unblock_domain_service_spec.rb @@ -12,26 +12,32 @@ RSpec.describe UnblockDomainService do let!(:silenced) { Fabricate(:account, domain: 'example.com', silenced_at: domain_block.created_at) } let!(:suspended) { Fabricate(:account, domain: 'example.com', suspended_at: domain_block.created_at) } - it 'unsilences accounts and removes block' do - domain_block.update(severity: :silence) + context 'with severity of silence' do + before { domain_block.update(severity: :silence) } - subject.call(domain_block) - expect_deleted_domain_block - expect(silenced.reload.silenced?).to be false - expect(suspended.reload.suspended?).to be true - expect(independently_suspended.reload.suspended?).to be true - expect(independently_silenced.reload.silenced?).to be true + it 'unsilences accounts and removes block' do + subject.call(domain_block) + + expect_deleted_domain_block + expect(silenced.reload.silenced?).to be false + expect(suspended.reload.suspended?).to be true + expect(independently_suspended.reload.suspended?).to be true + expect(independently_silenced.reload.silenced?).to be true + end end - it 'unsuspends accounts and removes block' do - domain_block.update(severity: :suspend) + context 'with severity of suspend' do + before { domain_block.update(severity: :suspend) } - subject.call(domain_block) - expect_deleted_domain_block - expect(suspended.reload.suspended?).to be false - expect(silenced.reload.silenced?).to be false - expect(independently_suspended.reload.suspended?).to be true - expect(independently_silenced.reload.silenced?).to be true + it 'unsuspends accounts and removes block' do + subject.call(domain_block) + + expect_deleted_domain_block + expect(suspended.reload.suspended?).to be false + expect(silenced.reload.silenced?).to be false + expect(independently_suspended.reload.suspended?).to be true + expect(independently_silenced.reload.silenced?).to be true + end end end diff --git a/spec/services/unblock_service_spec.rb b/spec/services/unblock_service_spec.rb index 6132e74415..a2c5188f06 100644 --- a/spec/services/unblock_service_spec.rb +++ b/spec/services/unblock_service_spec.rb @@ -10,13 +10,13 @@ RSpec.describe UnblockService do describe 'local' do let(:bob) { Fabricate(:account) } - before do - sender.block!(bob) - subject.call(sender, bob) - end + before { sender.block!(bob) } it 'destroys the blocking relation' do - expect(sender.blocking?(bob)).to be false + subject.call(sender, bob) + + expect(sender) + .to_not be_blocking(bob) end end @@ -26,15 +26,15 @@ RSpec.describe UnblockService do before do sender.block!(bob) stub_request(:post, 'http://example.com/inbox').to_return(status: 200) + end + + it 'destroys the blocking relation and sends unblock activity', :inline_jobs do subject.call(sender, bob) - end - it 'destroys the blocking relation' do - expect(sender.blocking?(bob)).to be false - end - - it 'sends an unblock activity', :inline_jobs do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(sender) + .to_not be_blocking(bob) + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end end diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb index 0c206c4b98..6cf24ca5e1 100644 --- a/spec/services/unfollow_service_spec.rb +++ b/spec/services/unfollow_service_spec.rb @@ -10,13 +10,13 @@ RSpec.describe UnfollowService do describe 'local' do let(:bob) { Fabricate(:account, username: 'bob') } - before do - sender.follow!(bob) - subject.call(sender, bob) - end + before { sender.follow!(bob) } it 'destroys the following relation' do - expect(sender.following?(bob)).to be false + subject.call(sender, bob) + + expect(sender) + .to_not be_following(bob) end end @@ -26,15 +26,15 @@ RSpec.describe UnfollowService do before do sender.follow!(bob) stub_request(:post, 'http://example.com/inbox').to_return(status: 200) + end + + it 'destroys the following relation and sends unfollow activity' do subject.call(sender, bob) - end - it 'destroys the following relation' do - expect(sender.following?(bob)).to be false - end - - it 'sends an unfollow activity' do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(sender) + .to_not be_following(bob) + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end @@ -44,15 +44,15 @@ RSpec.describe UnfollowService do before do bob.follow!(sender) stub_request(:post, 'http://example.com/inbox').to_return(status: 200) + end + + it 'destroys the following relation and sends a reject activity' do subject.call(bob, sender) - end - it 'destroys the following relation' do - expect(bob.following?(sender)).to be false - end - - it 'sends a reject activity' do - expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + expect(sender) + .to_not be_following(bob) + expect(a_request(:post, 'http://example.com/inbox')) + .to have_been_made.once end end end diff --git a/spec/services/update_account_service_spec.rb b/spec/services/update_account_service_spec.rb index d066db481e..f9059af07f 100644 --- a/spec/services/update_account_service_spec.rb +++ b/spec/services/update_account_service_spec.rb @@ -18,23 +18,19 @@ RSpec.describe UpdateAccountService do FollowService.new.call(alice, account) FollowService.new.call(bob, account) FollowService.new.call(eve, account) + end + it 'auto accepts pending follow requests from appropriate accounts' do subject.call(account, { locked: false }) - end - it 'auto-accepts pending follow requests' do - expect(alice.following?(account)).to be true - expect(alice.requested?(account)).to be false - end + expect(alice).to be_following(account) + expect(alice).to_not be_requested(account) - it 'does not auto-accept pending follow requests from silenced users' do - expect(bob.following?(account)).to be false - expect(bob.requested?(account)).to be true - end + expect(bob).to_not be_following(account) + expect(bob).to be_requested(account) - it 'auto-accepts pending follow requests from muted users so as to not leak mute' do - expect(eve.following?(account)).to be true - expect(eve.requested?(account)).to be false + expect(eve).to be_following(account) + expect(eve).to_not be_requested(account) end end end diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb index de06fb13c6..7c92adeffd 100644 --- a/spec/services/update_status_service_spec.rb +++ b/spec/services/update_status_service_spec.rb @@ -10,15 +10,15 @@ RSpec.describe UpdateStatusService do before do allow(ActivityPub::DistributionWorker).to receive(:perform_async) + end + + it 'does not create an edit or notify anyone' do subject.call(status, status.account_id, text: 'Foo') - end - it 'does not create an edit' do - expect(status.reload.edits).to be_empty - end - - it 'does not notify anyone' do - expect(ActivityPub::DistributionWorker).to_not have_received(:perform_async) + expect(status.reload.edits) + .to be_empty + expect(ActivityPub::DistributionWorker) + .to_not have_received(:perform_async) end end @@ -28,18 +28,16 @@ RSpec.describe UpdateStatusService do before do PreviewCardsStatus.create(status: status, preview_card: preview_card) + end + + it 'updates text, resets card, saves edit history' do subject.call(status, status.account_id, text: 'Bar') - end - it 'updates text' do - expect(status.reload.text).to eq 'Bar' - end - - it 'resets preview card' do - expect(status.reload.preview_card).to be_nil - end - - it 'saves edit history' do + expect(status.reload) + .to have_attributes( + text: 'Bar', + preview_card: be_nil + ) expect(status.edits.ordered.pluck(:text)).to eq %w(Foo Bar) end end @@ -50,15 +48,15 @@ RSpec.describe UpdateStatusService do before do PreviewCardsStatus.create(status: status, preview_card: preview_card) + end + + it 'updates content warning and saves history' do subject.call(status, status.account_id, text: 'Foo', spoiler_text: 'Bar') - end - it 'updates content warning' do - expect(status.reload.spoiler_text).to eq 'Bar' - end - - it 'saves edit history' do - expect(status.edits.ordered.pluck(:text, :spoiler_text)).to eq [['Foo', ''], ['Foo', 'Bar']] + expect(status.reload.spoiler_text) + .to eq 'Bar' + expect(status.edits.ordered.pluck(:text, :spoiler_text)) + .to eq [['Foo', ''], ['Foo', 'Bar']] end end @@ -69,23 +67,19 @@ RSpec.describe UpdateStatusService do before do status.media_attachments << detached_media_attachment + end + + it 'updates media attachments, handles attachments, saves history' do subject.call(status, status.account_id, text: 'Foo', media_ids: [attached_media_attachment.id.to_s]) - end - it 'updates media attachments' do - expect(status.ordered_media_attachments).to eq [attached_media_attachment] - end - - it 'does not detach detached media attachments' do - expect(detached_media_attachment.reload.status_id).to eq status.id - end - - it 'attaches attached media attachments' do - expect(attached_media_attachment.reload.status_id).to eq status.id - end - - it 'saves edit history' do - expect(status.edits.ordered.pluck(:ordered_media_attachment_ids)).to eq [[detached_media_attachment.id], [attached_media_attachment.id]] + expect(status.ordered_media_attachments) + .to eq [attached_media_attachment] + expect(detached_media_attachment.reload.status_id) + .to eq status.id + expect(attached_media_attachment.reload.status_id) + .to eq status.id + expect(status.edits.ordered.pluck(:ordered_media_attachment_ids)) + .to eq [[detached_media_attachment.id], [attached_media_attachment.id]] end end @@ -95,19 +89,18 @@ RSpec.describe UpdateStatusService do before do status.media_attachments << media_attachment + end + + it 'does not detach media attachment, updates description, and saves history' do subject.call(status, status.account_id, text: 'Foo', media_ids: [media_attachment.id.to_s], media_attributes: [{ id: media_attachment.id, description: 'New description' }]) - end - it 'does not detach media attachment' do - expect(media_attachment.reload.status_id).to eq status.id - end - - it 'updates the media attachment description' do - expect(media_attachment.reload.description).to eq 'New description' - end - - it 'saves edit history' do - expect(status.edits.ordered.map { |edit| edit.ordered_media_attachments.map(&:description) }).to eq [['Old description'], ['New description']] + expect(media_attachment.reload) + .to have_attributes( + status_id: status.id, + description: 'New description' + ) + expect(status.edits.ordered.map { |edit| edit.ordered_media_attachments.map(&:description) }) + .to eq [['Old description'], ['New description']] end end @@ -120,28 +113,27 @@ RSpec.describe UpdateStatusService do before do status.update(poll: poll) VoteService.new.call(voter, poll, [0]) + end + + it 'updates poll, resets votes, saves history, requeues notifications' do subject.call(status, status.account_id, text: 'Foo', poll: { options: %w(Bar Baz Foo), expires_in: 5.days.to_i }) - end - it 'updates poll' do poll = status.poll.reload - expect(poll.options).to eq %w(Bar Baz Foo) - end - it 'resets votes' do - poll = status.poll.reload - expect(poll.votes_count).to eq 0 - expect(poll.votes.count).to eq 0 - expect(poll.cached_tallies).to eq [0, 0, 0] - end + expect(poll) + .to have_attributes( + options: %w(Bar Baz Foo), + votes_count: 0, + cached_tallies: [0, 0, 0] + ) + expect(poll.votes.count) + .to eq(0) - it 'saves edit history' do - expect(status.edits.ordered.pluck(:poll_options)).to eq [%w(Foo Bar), %w(Bar Baz Foo)] - end + expect(status.edits.ordered.pluck(:poll_options)) + .to eq [%w(Foo Bar), %w(Bar Baz Foo)] - it 'requeues expiration notification' do - poll = status.poll.reload - expect(PollExpirationNotifyWorker).to have_enqueued_sidekiq_job(poll.id).at(poll.expires_at + 5.minutes) + expect(PollExpirationNotifyWorker) + .to have_enqueued_sidekiq_job(poll.id).at(poll.expires_at + 5.minutes) end end @@ -151,16 +143,13 @@ RSpec.describe UpdateStatusService do let!(:bob) { Fabricate(:account, username: 'bob') } let!(:status) { PostStatusService.new.call(account, text: 'Hello @alice') } - before do + it 'changes mentions and keeps old as silent' do subject.call(status, status.account_id, text: 'Hello @bob') - end - it 'changes mentions' do - expect(status.active_mentions.pluck(:account_id)).to eq [bob.id] - end - - it 'keeps old mentions as silent mentions' do - expect(status.mentions.pluck(:account_id)).to contain_exactly(alice.id, bob.id) + expect(status.active_mentions.pluck(:account_id)) + .to eq [bob.id] + expect(status.mentions.pluck(:account_id)) + .to contain_exactly(alice.id, bob.id) end end @@ -168,11 +157,9 @@ RSpec.describe UpdateStatusService do let!(:account) { Fabricate(:account) } let!(:status) { PostStatusService.new.call(account, text: 'Hello #foo') } - before do - subject.call(status, status.account_id, text: 'Hello #bar') - end - it 'changes tags' do + subject.call(status, status.account_id, text: 'Hello #bar') + expect(status.tags.pluck(:name)).to eq %w(bar) end end From ebdeac0731c31b73438aaa369a234d9ac5798b43 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 4 Oct 2024 10:15:14 -0400 Subject: [PATCH 104/550] Add coverage for missing status scenario in NotificationMailer (#32256) --- app/mailers/notification_mailer.rb | 2 +- spec/mailers/notification_mailer_spec.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 4c374f5d57..a20992dcb5 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -86,7 +86,7 @@ class NotificationMailer < ApplicationMailer end def thread_by_conversation! - return if @status.conversation.nil? + return if @status&.conversation.nil? conversation_message_id = "" diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 4c6107d9f7..d97c01858d 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -14,6 +14,17 @@ RSpec.describe NotificationMailer do end end + shared_examples 'delivery without status' do + context 'when notification target_status is missing' do + before { allow(notification).to receive(:target_status).and_return(nil) } + + it 'does not deliver mail' do + emails = capture_emails { mail.deliver_now } + expect(emails).to be_empty + end + end + end + let(:receiver) { Fabricate(:user, account_attributes: { username: 'alice' }) } let(:sender) { Fabricate(:account, username: 'bob') } let(:foreign_status) { Fabricate(:status, account: sender, text: 'The body of the foreign status') } @@ -37,6 +48,7 @@ RSpec.describe NotificationMailer do end include_examples 'delivery to non functional user' + include_examples 'delivery without status' end describe 'follow' do @@ -75,6 +87,7 @@ RSpec.describe NotificationMailer do end include_examples 'delivery to non functional user' + include_examples 'delivery without status' end describe 'reblog' do @@ -95,6 +108,7 @@ RSpec.describe NotificationMailer do end include_examples 'delivery to non functional user' + include_examples 'delivery without status' end describe 'follow_request' do From 1f720366e94c175f171156a86d65787d6f0d7ba6 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Oct 2024 16:29:23 +0200 Subject: [PATCH 105/550] Fix notification push notifications not including the author's username (#32254) --- app/javascript/mastodon/locales/en.json | 1 + .../mastodon/service_worker/web_push_locales.js | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 1e78745359..7f8dc74779 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Private reply", "notification.label.reply": "Reply", "notification.mention": "Mention", + "notification.mentioned_you": "{name} mentioned you", "notification.moderation-warning.learn_more": "Learn more", "notification.moderation_warning": "You have received a moderation warning", "notification.moderation_warning.action_delete_statuses": "Some of your posts have been removed.", diff --git a/app/javascript/mastodon/service_worker/web_push_locales.js b/app/javascript/mastodon/service_worker/web_push_locales.js index 89ae20007b..3e39c9a4ed 100644 --- a/app/javascript/mastodon/service_worker/web_push_locales.js +++ b/app/javascript/mastodon/service_worker/web_push_locales.js @@ -6,6 +6,12 @@ const fs = require('fs'); const path = require('path'); +const { defineMessages } = require('react-intl'); + +const messages = defineMessages({ + mentioned_you: { id: 'notification.mentioned_you', defaultMessage: '{name} mentioned you' }, +}); + const filtered = {}; const filenames = fs.readdirSync(path.resolve(__dirname, '../locales')); @@ -20,7 +26,7 @@ filenames.forEach(filename => { 'notification.favourite': full['notification.favourite'] || '', 'notification.follow': full['notification.follow'] || '', 'notification.follow_request': full['notification.follow_request'] || '', - 'notification.mention': full['notification.mention'] || '', + 'notification.mention': full[messages.mentioned_you.id] || '', 'notification.reblog': full['notification.reblog'] || '', 'notification.poll': full['notification.poll'] || '', 'notification.status': full['notification.status'] || '', From 51769e06708f79a485c444d139cbdbdd7249b0cb Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 4 Oct 2024 16:55:44 +0200 Subject: [PATCH 106/550] Fix media gallery items having incorrect borders when hidden (#32257) --- app/javascript/mastodon/components/media_gallery.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 1380d244ad..e059978442 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -336,14 +336,14 @@ class MediaGallery extends PureComponent { return (
+ {children} + {(!visible || uncached) && (
{spoilerButton}
)} - {children} - {(visible && !uncached) && (
From c40ab43dc703be988c277d4ba6b7987a3a80e16c Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 4 Oct 2024 18:23:05 +0200 Subject: [PATCH 107/550] Remove redundant title attribute (#32258) --- .../mastodon/features/ui/components/column_link.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/column_link.jsx b/app/javascript/mastodon/features/ui/components/column_link.jsx index 3386c17f07..f27ed50675 100644 --- a/app/javascript/mastodon/features/ui/components/column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/column_link.jsx @@ -15,7 +15,7 @@ const ColumnLink = ({ icon, activeIcon, iconComponent, activeIconComponent, text if (href) { return ( - + {active ? activeIconElement : iconElement} {text} {badgeElement} @@ -23,7 +23,7 @@ const ColumnLink = ({ icon, activeIcon, iconComponent, activeIconComponent, text ); } else { return ( - + {active ? activeIconElement : iconElement} {text} {badgeElement} From 2c54b91dd1a0f0a622ea88628d15c8b1bdda70f7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Oct 2024 08:53:29 +0200 Subject: [PATCH 108/550] Fix wrong width on logo in detailed link card in web UI (#32271) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5f410ead93..f257368390 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -10628,6 +10628,7 @@ noscript { gap: 8px; .logo { + width: 16px; height: 16px; color: $darker-text-color; } From 498024558ae8d4111b4c263901dfc105b3563ddc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 09:06:43 +0200 Subject: [PATCH 109/550] New Crowdin Translations (automated) (#32262) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ca.json | 1 + app/javascript/mastodon/locales/da.json | 1 + app/javascript/mastodon/locales/de.json | 3 +- app/javascript/mastodon/locales/en-GB.json | 5 ++ app/javascript/mastodon/locales/eo.json | 1 + app/javascript/mastodon/locales/es-AR.json | 1 + app/javascript/mastodon/locales/es-MX.json | 11 ++-- app/javascript/mastodon/locales/es.json | 1 + app/javascript/mastodon/locales/fi.json | 1 + app/javascript/mastodon/locales/fo.json | 1 + app/javascript/mastodon/locales/fy.json | 15 +++++ app/javascript/mastodon/locales/gl.json | 1 + app/javascript/mastodon/locales/he.json | 19 +++--- app/javascript/mastodon/locales/hu.json | 1 + app/javascript/mastodon/locales/is.json | 4 ++ app/javascript/mastodon/locales/it.json | 6 ++ app/javascript/mastodon/locales/ja.json | 1 + app/javascript/mastodon/locales/ko.json | 1 + app/javascript/mastodon/locales/nl.json | 9 +-- app/javascript/mastodon/locales/nn.json | 1 + app/javascript/mastodon/locales/pl.json | 1 + app/javascript/mastodon/locales/pt-BR.json | 1 + app/javascript/mastodon/locales/sq.json | 1 + app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/th.json | 1 + app/javascript/mastodon/locales/tr.json | 1 + app/javascript/mastodon/locales/uk.json | 1 + app/javascript/mastodon/locales/vi.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 1 + config/locales/activerecord.fy.yml | 6 ++ config/locales/ar.yml | 14 ----- config/locales/be.yml | 14 ----- config/locales/bg.yml | 14 ----- config/locales/ca.yml | 14 ----- config/locales/cs.yml | 14 ----- config/locales/cy.yml | 14 ----- config/locales/da.yml | 48 +++++++++++---- config/locales/de.yml | 48 +++++++++++---- config/locales/devise.eo.yml | 2 + config/locales/doorkeeper.fy.yml | 1 + config/locales/el.yml | 14 ----- config/locales/en-GB.yml | 51 +++++++++++---- config/locales/es-AR.yml | 48 +++++++++++---- config/locales/es-MX.yml | 64 +++++++++++++------ config/locales/es.yml | 48 +++++++++++---- config/locales/et.yml | 14 ----- config/locales/eu.yml | 14 ----- config/locales/fi.yml | 48 +++++++++++---- config/locales/fo.yml | 14 ----- config/locales/fr-CA.yml | 14 ----- config/locales/fr.yml | 14 ----- config/locales/fy.yml | 63 +++++++++++++++---- config/locales/ga.yml | 14 ----- config/locales/gd.yml | 14 ----- config/locales/gl.yml | 48 +++++++++++---- config/locales/he.yml | 72 ++++++++++++++++++---- config/locales/hu.yml | 48 +++++++++++---- config/locales/ia.yml | 14 ----- config/locales/ie.yml | 14 ----- config/locales/io.yml | 14 ----- config/locales/is.yml | 18 ++---- config/locales/it.yml | 48 +++++++++++---- config/locales/ja.yml | 19 ++---- config/locales/ko.yml | 36 +++++++---- config/locales/lad.yml | 14 ----- config/locales/lv.yml | 14 ----- config/locales/ms.yml | 14 ----- config/locales/my.yml | 14 ----- config/locales/nl.yml | 52 +++++++++++----- config/locales/nn.yml | 16 +---- config/locales/no.yml | 14 ----- config/locales/pl.yml | 14 ----- config/locales/pt-BR.yml | 14 ----- config/locales/pt-PT.yml | 14 ----- config/locales/ru.yml | 14 ----- config/locales/simple_form.fy.yml | 3 + config/locales/simple_form.nl.yml | 2 +- config/locales/sl.yml | 14 ----- config/locales/sq.yml | 48 +++++++++++---- config/locales/sr-Latn.yml | 14 ----- config/locales/sr.yml | 14 ----- config/locales/sv.yml | 14 ----- config/locales/th.yml | 14 ----- config/locales/tr.yml | 48 +++++++++++---- config/locales/uk.yml | 14 ----- config/locales/vi.yml | 36 +++++++---- config/locales/zh-CN.yml | 36 +++++++---- config/locales/zh-HK.yml | 14 ----- config/locales/zh-TW.yml | 36 +++++++---- 90 files changed, 788 insertions(+), 761 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index b79ac156e2..1b583b3204 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Resposta en privat", "notification.label.reply": "Resposta", "notification.mention": "Menció", + "notification.mentioned_you": "{name} us ha mencionat", "notification.moderation-warning.learn_more": "Per a saber-ne més", "notification.moderation_warning": "Heu rebut un avís de moderació", "notification.moderation_warning.action_delete_statuses": "S'han eliminat algunes de les vostres publicacions.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 659f807d05..e225bb30ae 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Privat svar", "notification.label.reply": "Besvar", "notification.mention": "Omtale", + "notification.mentioned_you": "{name} nævnte dig", "notification.moderation-warning.learn_more": "Læs mere", "notification.moderation_warning": "Du er tildelt en moderationsadvarsel", "notification.moderation_warning.action_delete_statuses": "Nogle af dine indlæg er blevet fjernet.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 0b541b2e48..3d8b57db4a 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -62,7 +62,7 @@ "account.requested_follow": "{name} möchte dir folgen", "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Geteilte Beiträge von @{name} anzeigen", - "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", + "account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} posts}}", "account.unblock": "Blockierung von @{name} aufheben", "account.unblock_domain": "Blockierung von {domain} aufheben", "account.unblock_short": "Blockierung aufheben", @@ -516,6 +516,7 @@ "notification.label.private_reply": "Private Antwort", "notification.label.reply": "Antwort", "notification.mention": "Erwähnung", + "notification.mentioned_you": "{name} erwähnte dich", "notification.moderation-warning.learn_more": "Mehr erfahren", "notification.moderation_warning": "Du wurdest von den Moderator*innen verwarnt", "notification.moderation_warning.action_delete_statuses": "Einige deiner Beiträge sind entfernt worden.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index b1d61ddd3d..da4c005203 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -852,6 +852,11 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people who are deaf or hard of hearing", "upload_form.description": "Describe for people who are blind or have low vision", + "upload_form.drag_and_drop.instructions": "To pick up a media attachment, press space or enter. While dragging, use the arrow keys to move the media attachment in any given direction. Press space or enter again to drop the media attachment in its new position, or press escape to cancel.", + "upload_form.drag_and_drop.on_drag_cancel": "Dragging was cancelled. Media attachment {item} was dropped.", + "upload_form.drag_and_drop.on_drag_end": "Media attachment {item} was dropped.", + "upload_form.drag_and_drop.on_drag_over": "Media attachment {item} was moved.", + "upload_form.drag_and_drop.on_drag_start": "Picked up media attachment {item}.", "upload_form.edit": "Edit", "upload_form.thumbnail": "Change thumbnail", "upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 35c2a5c744..5f6582fb68 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Privata respondo", "notification.label.reply": "Respondi", "notification.mention": "Mencii", + "notification.mentioned_you": "{name} menciis vin", "notification.moderation-warning.learn_more": "Lerni pli", "notification.moderation_warning": "Vi ricevis moderigan averton", "notification.moderation_warning.action_delete_statuses": "Kelkaj el viaj afiŝoj estis forigitaj.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 609175d94f..7fec88a96e 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Respuesta privada", "notification.label.reply": "Respuesta", "notification.mention": "Mención", + "notification.mentioned_you": "{name} te mencionó", "notification.moderation-warning.learn_more": "Aprendé más", "notification.moderation_warning": "Recibiste una advertencia de moderación", "notification.moderation_warning.action_delete_statuses": "Se eliminaron algunos de tus mensajes.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 7c2e400338..ddfdf6960b 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Respuesta privada", "notification.label.reply": "Respuesta", "notification.mention": "Mención", + "notification.mentioned_you": "{name} te ha mencionado", "notification.moderation-warning.learn_more": "Saber más", "notification.moderation_warning": "Has recibido una advertencia de moderación", "notification.moderation_warning.action_delete_statuses": "Se han eliminado algunas de tus publicaciones.", @@ -852,11 +853,11 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", - "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsa la barra espaciadora o la tecla Enter. Mientras arrastras, utiliza las teclas de flecha para mover el archivo multimedia en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsa Escape para cancelar.", - "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", - "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", - "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} se ha movido.", - "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", + "upload_form.drag_and_drop.instructions": "Para recoger un archivo adjunto, pulsa la barra espaciadora o la tecla Intro. Mientras arrastras, usa las teclas de flecha para mover el archivo adjunto en cualquier dirección. Vuelve a pulsar la barra espaciadora o la tecla Intro para soltar el archivo adjunto en su nueva posición, o pulsa la tecla Escape para cancelar.", + "upload_form.drag_and_drop.on_drag_cancel": "Arrastre cancelado. El archivo adjunto {item} fue eliminado.", + "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue eliminado.", + "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.", + "upload_form.drag_and_drop.on_drag_start": "Recogidos los archivos adjuntos {item}.", "upload_form.edit": "Editar", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index b841489338..2aeb7d47ea 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Respuesta privada", "notification.label.reply": "Respuesta", "notification.mention": "Mención", + "notification.mentioned_you": "{name} te ha mencionado", "notification.moderation-warning.learn_more": "Saber más", "notification.moderation_warning": "Has recibido una advertencia de moderación", "notification.moderation_warning.action_delete_statuses": "Se han eliminado algunas de tus publicaciones.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 2e4cd661d5..ac7ab097fa 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Yksityinen vastaus", "notification.label.reply": "Vastaus", "notification.mention": "Maininta", + "notification.mentioned_you": "{name} mainitsi sinut", "notification.moderation-warning.learn_more": "Lue lisää", "notification.moderation_warning": "Olet saanut moderointivaroituksen", "notification.moderation_warning.action_delete_statuses": "Julkaisujasi on poistettu.", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index c7e752d378..5ad8ba557b 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Privat svar", "notification.label.reply": "Svara", "notification.mention": "Umrøð", + "notification.mentioned_you": "{name} nevndi teg", "notification.moderation-warning.learn_more": "Lær meira", "notification.moderation_warning": "Tú hevur móttikið eina umsjónarávaring", "notification.moderation_warning.action_delete_statuses": "Onkrir av tínum postum eru strikaðir.", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 1d71ef36c6..9fa2300fbc 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Dataferkear beheind", "alert.unexpected.message": "Der is in ûnferwachte flater bard.", "alert.unexpected.title": "Oepsy!", + "alt_text_badge.title": "Alternative tekst", "announcement.announcement": "Oankundiging", "attachments_list.unprocessed": "(net ferwurke)", "audio.hide": "Audio ferstopje", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Net ien op dizze server kin jo folgje.", "domain_block_modal.they_wont_know": "Se krije net te witten dat se blokkearre wurde.", "domain_block_modal.title": "Domein blokkearje?", + "domain_block_modal.you_will_lose_num_followers": "Jo ferlieze {followersCount, plural, one {{followersCountDisplay} folger} other {{followersCountDisplay} folgers}} en {followingCount, plural, one {{followingCountDisplay} persoan dy’t jo folgje} other {{followingCountDisplay} persoanen dy’t jo folgje}}.", + "domain_block_modal.you_will_lose_relationships": "Jo ferlieze alle folgers en minsken dy’t jo folgje fan dizze server.", "domain_block_modal.you_wont_see_posts": "Jo sjogge gjin berjochten of meldingen mear fan brûkers op dizze server.", "domain_pill.activitypub_lets_connect": "It soarget derfoar dat jo net allinnich mar ferbine en kommunisearje kinne mei minsken op Mastodon, mar ek mei oare sosjale apps.", "domain_pill.activitypub_like_language": "ActivityPub is de taal dy’t Mastodon mei oare sosjale netwurken sprekt.", @@ -433,6 +436,8 @@ "lightbox.close": "Slute", "lightbox.next": "Folgjende", "lightbox.previous": "Foarige", + "lightbox.zoom_in": "Oarspronklike grutte toane", + "lightbox.zoom_out": "Passend toane", "limited_account_hint.action": "Profyl dochs besjen", "limited_account_hint.title": "Dit profyl is troch de behearders fan {domain} ferstoppe.", "link_preview.author": "Troch {name}", @@ -454,6 +459,7 @@ "lists.subheading": "Jo listen", "load_pending": "{count, plural, one {# nij item} other {# nije items}}", "loading_indicator.label": "Lade…", + "media_gallery.hide": "Ferstopje", "moved_to_account_banner.text": "Omdat jo nei {movedToAccount} ferhuze binne is jo account {disabledAccount} op dit stuit útskeakele.", "mute_modal.hide_from_notifications": "Meldingen ferstopje", "mute_modal.hide_options": "Opsjes ferstopje", @@ -510,6 +516,7 @@ "notification.label.private_reply": "Priveereaksje", "notification.label.reply": "Beäntwurdzje", "notification.mention": "Fermelding", + "notification.mentioned_you": "{name} hat dy fermeld", "notification.moderation-warning.learn_more": "Mear ynfo", "notification.moderation_warning": "Jo hawwe in moderaasje-warskôging ûntfongen", "notification.moderation_warning.action_delete_statuses": "Guon fan jo berjochten binne fuortsmiten.", @@ -774,6 +781,7 @@ "status.bookmark": "Blêdwizer tafoegje", "status.cancel_reblog_private": "Net langer booste", "status.cannot_reblog": "Dit berjocht kin net boost wurde", + "status.continued_thread": "Ferfolgje it petear", "status.copy": "Copy link to status", "status.delete": "Fuortsmite", "status.detailed_status": "Detaillearre petearoersjoch", @@ -782,6 +790,7 @@ "status.edit": "Bewurkje", "status.edited": "Lêst bywurke op {date}", "status.edited_x_times": "{count, plural, one {{count} kear} other {{count} kearen}} bewurke", + "status.embed": "Koade om op te nimmen", "status.favourite": "Favoryt", "status.favourites": "{count, plural, one {favoryt} other {favoriten}}", "status.filter": "Dit berjocht filterje", @@ -806,6 +815,7 @@ "status.reblogs.empty": "Net ien hat dit berjocht noch boost. Wannear’t ien dit docht, falt dat hjir te sjen.", "status.redraft": "Fuortsmite en opnij opstelle", "status.remove_bookmark": "Blêdwizer fuortsmite", + "status.replied_in_thread": "Antwurde yn petear", "status.replied_to": "Antwurde op {name}", "status.reply": "Beäntwurdzje", "status.replyAll": "Alle beäntwurdzje", @@ -843,6 +853,11 @@ "upload_error.poll": "It opladen fan bestannen is yn enkêten net tastien.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", + "upload_form.drag_and_drop.instructions": "Druk op spaasje of Enter om in mediabylage op te pakken. Bruk de pylktoetsen om de bylage yn in bepaalde rjochting te ferpleatsen. Druk opnij op de spaasjebalke of Enter om de mediabylage op de nije posysje te pleatsen, of druk op Esc om te annulearjen.", + "upload_form.drag_and_drop.on_drag_cancel": "Slepen is annulearre. Mediabylage {item} is net ferpleatst.", + "upload_form.drag_and_drop.on_drag_end": "Mediabylage {item} is net ferpleatst.", + "upload_form.drag_and_drop.on_drag_over": "Mediabylage {item} is ferpleatst.", + "upload_form.drag_and_drop.on_drag_start": "Mediabylage {item} is oppakt.", "upload_form.edit": "Bewurkje", "upload_form.thumbnail": "Miniatuerôfbylding wizigje", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 2a31bfa463..27b4ad2460 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Resposta privada", "notification.label.reply": "Resposta", "notification.mention": "Mención", + "notification.mentioned_you": "{name} mencionoute", "notification.moderation-warning.learn_more": "Saber máis", "notification.moderation_warning": "Recibiches unha advertencia da moderación", "notification.moderation_warning.action_delete_statuses": "Algunha das túas publicacións foron eliminadas.", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 16f558e543..d9b0382f4a 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,5 +1,5 @@ { - "about.blocks": "שרתים שנחסמו על ידי המנהלים", + "about.blocks": "שרתים מוגבלים", "about.contact": "יצירת קשר:", "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "הסיבה אינה זמינה", @@ -34,9 +34,9 @@ "account.follow_back": "לעקוב בחזרה", "account.followers": "עוקבים", "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.", - "account.followers_counter": "{count, plural,one {עוקב אחד} other {{count} עוקבים}}", + "account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}", "account.following": "נעקבים", - "account.following_counter": "{count, plural,one {עוקב אחרי {count}}other {עוקב אחרי {count}}}", + "account.following_counter": "{count, plural,one {עוקב אחרי {count}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה עדיין לא עוקב אחרי אף אחד.", "account.go_to_profile": "מעבר לפרופיל", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", @@ -62,7 +62,7 @@ "account.requested_follow": "{name} ביקשו לעקוב אחריך", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", - "account.statuses_counter": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}", + "account.statuses_counter": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}}", "account.unblock": "להסיר חסימה ל- @{name}", "account.unblock_domain": "הסירי את החסימה של קהילת {domain}", "account.unblock_short": "הסר חסימה", @@ -349,9 +349,9 @@ "hashtag.column_settings.tag_mode.any": "לפחות אחד מאלה", "hashtag.column_settings.tag_mode.none": "אף אחד מאלה", "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה", - "hashtag.counter_by_accounts": "{count, plural,one{{count} משתתף.ת}other{{count} משתתפיםות}}", - "hashtag.counter_by_uses": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}", - "hashtag.counter_by_uses_today": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}} היום", + "hashtag.counter_by_accounts": "{count, plural,one{{count} משתתף.ת}other{{counter} משתתפיםות}}", + "hashtag.counter_by_uses": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}}", + "hashtag.counter_by_uses_today": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}} היום", "hashtag.follow": "לעקוב אחרי תגית", "hashtag.unfollow": "להפסיק לעקוב אחרי תגית", "hashtags.and_other": "…{count, plural,other {ועוד #}}", @@ -442,7 +442,7 @@ "limited_account_hint.title": "פרופיל המשתמש הזה הוסתר על ידי המנחים של {domain}.", "link_preview.author": "מאת {name}", "link_preview.more_from_author": "עוד מאת {name}", - "link_preview.shares": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}", + "link_preview.shares": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}}", "lists.account.add": "הוסף לרשימה", "lists.account.remove": "הסר מרשימה", "lists.delete": "מחיקת רשימה", @@ -516,6 +516,7 @@ "notification.label.private_reply": "תשובה בפרטי", "notification.label.reply": "תשובה", "notification.mention": "אזכור", + "notification.mentioned_you": "אוזכרת על ידי {name}", "notification.moderation-warning.learn_more": "למידע נוסף", "notification.moderation_warning": "קיבלת אזהרה מצוות ניהול התוכן", "notification.moderation_warning.action_delete_statuses": "חלק מהודעותיך הוסרו.", @@ -840,7 +841,7 @@ "time_remaining.minutes": "נותרו {number, plural, one {# דקה} other {# דקות}}", "time_remaining.moments": "רגעים נותרו", "time_remaining.seconds": "נותרו {number, plural, one {# שניה} other {# שניות}}", - "trends.counter_by_accounts": "{count, plural, one {אדם אחד} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}", + "trends.counter_by_accounts": "{count, plural, one {אדם אחד} other {{counter} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}", "trends.trending_now": "נושאים חמים", "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.", "units.short.billion": "{count} מליארד", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f9f403177c..0fee79f8b5 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Privát válasz", "notification.label.reply": "Válasz", "notification.mention": "Említés", + "notification.mentioned_you": "{name} megemlített", "notification.moderation-warning.learn_more": "További információ", "notification.moderation_warning": "Moderációs figyelmeztetést kaptál", "notification.moderation_warning.action_delete_statuses": "Néhány bejegyzésedet eltávolították.", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index c78c5d7842..bbd3a7a358 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Með takmörkum", "alert.unexpected.message": "Upp kom óvænt villa.", "alert.unexpected.title": "Úbbs!", + "alt_text_badge.title": "Hjálpartexti mynda", "announcement.announcement": "Auglýsing", "attachments_list.unprocessed": "(óunnið)", "audio.hide": "Fela hljóð", @@ -433,6 +434,8 @@ "lightbox.close": "Loka", "lightbox.next": "Næsta", "lightbox.previous": "Fyrra", + "lightbox.zoom_in": "Renna að raunstærð", + "lightbox.zoom_out": "Renna að svo passi", "limited_account_hint.action": "Birta notandasniðið samt", "limited_account_hint.title": "Þetta notandasnið hefur verið falið af umsjónarmönnum {domain}.", "link_preview.author": "Frá {name}", @@ -511,6 +514,7 @@ "notification.label.private_reply": "Einkasvar", "notification.label.reply": "Svara", "notification.mention": "Minnst á", + "notification.mentioned_you": "{name} minntist á þig", "notification.moderation-warning.learn_more": "Kanna nánar", "notification.moderation_warning": "Þú hefur fengið aðvörun frá umsjónarmanni", "notification.moderation_warning.action_delete_statuses": "Sumar færslurnar þínar hafa verið fjarlægðar.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index ef709516c2..885be73c62 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Rispondi in privato", "notification.label.reply": "Rispondi", "notification.mention": "Menziona", + "notification.mentioned_you": "{name} ti ha menzionato", "notification.moderation-warning.learn_more": "Scopri di più", "notification.moderation_warning": "Hai ricevuto un avviso di moderazione", "notification.moderation_warning.action_delete_statuses": "Alcuni dei tuoi post sono stati rimossi.", @@ -852,6 +853,11 @@ "upload_error.poll": "Caricamento del file non consentito con i sondaggi.", "upload_form.audio_description": "Descrizione per persone con deficit uditivi", "upload_form.description": "Descrizione per ipovedenti", + "upload_form.drag_and_drop.instructions": "Per selezionare un allegato multimediale, premi Spazio o Invio. Mentre trascini, usa i tasti con le frecce per spostare l'allegato multimediale in una qualsiasi direzione. Premi di nuovo Spazio o Invio per rilasciare l'allegato multimediale nella sua nuova posizione, oppure premi Esc per annullare.", + "upload_form.drag_and_drop.on_drag_cancel": "Il trascinamento è stato annullato. L'allegato multimediale {item} è stato eliminato.", + "upload_form.drag_and_drop.on_drag_end": "L'allegato multimediale {item} è stato eliminato.", + "upload_form.drag_and_drop.on_drag_over": "L'allegato multimediale {item} è stato spostato.", + "upload_form.drag_and_drop.on_drag_start": "L'allegato multimediale {item} è stato ricevuto.", "upload_form.edit": "Modifica", "upload_form.thumbnail": "Cambia la miniatura", "upload_form.video_description": "Descrizione per persone con deficit uditivi o ipovedenti", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 46444863ac..1810314c84 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -514,6 +514,7 @@ "notification.label.private_reply": "非公開の返信", "notification.label.reply": "返信", "notification.mention": "メンション", + "notification.mentioned_you": "{name} さんがあなたに返信しました", "notification.moderation-warning.learn_more": "さらに詳しく", "notification.moderation_warning": "管理者から警告が来ています", "notification.moderation_warning.action_delete_statuses": "あなたによるいくつかの投稿が削除されました。", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e5e7dc2c17..edcbadd12d 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "개인 답글", "notification.label.reply": "답글", "notification.mention": "멘션", + "notification.mentioned_you": "{name} 님의 멘션", "notification.moderation-warning.learn_more": "더 알아보기", "notification.moderation_warning": "중재 경고를 받았습니다", "notification.moderation_warning.action_delete_statuses": "게시물 몇 개가 삭제되었습니다.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 71523b37d8..c0ca8f1766 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -516,10 +516,11 @@ "notification.label.private_reply": "Privéreactie", "notification.label.reply": "Reactie", "notification.mention": "Vermelding", + "notification.mentioned_you": "Je bent vermeld door {name}", "notification.moderation-warning.learn_more": "Meer informatie", "notification.moderation_warning": "Je hebt een moderatie-waarschuwing ontvangen", "notification.moderation_warning.action_delete_statuses": "Sommige van je berichten zijn verwijderd.", - "notification.moderation_warning.action_disable": "Je account is uitgeschakeld.", + "notification.moderation_warning.action_disable": "Jouw account is uitgeschakeld.", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Sommige van je berichten zijn gemarkeerd als gevoelig.", "notification.moderation_warning.action_none": "Jouw account heeft een moderatie-waarschuwing ontvangen.", "notification.moderation_warning.action_sensitive": "Je berichten worden vanaf nu als gevoelig gemarkeerd.", @@ -531,11 +532,11 @@ "notification.reblog.name_and_others_with_link": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben jouw bericht geboost", "notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", - "notification.relationships_severance_event.domain_block": "Een beheerder van {from} heeft {target} geblokkeerd, inclusief {followersCount} van jouw volgers en {followingCount, plural, one {# account} other {# accounts}} die jij volgt.", + "notification.relationships_severance_event.domain_block": "Een beheerder van {from} heeft {target} geblokkeerd, inclusief {followersCount} van jouw volgers en {followingCount, plural, one {# account} other {# accounts}} die je volgt.", "notification.relationships_severance_event.learn_more": "Meer informatie", - "notification.relationships_severance_event.user_domain_block": "Je hebt {target} geblokkeerd, waarmee je {followersCount} van je volgers en {followingCount, plural, one {# account} other {# accounts}} die jij volgt, bent verloren.", + "notification.relationships_severance_event.user_domain_block": "Je hebt {target} geblokkeerd, waarmee je {followersCount} van je volgers en {followingCount, plural, one {# account} other {# accounts}} die je volgt, bent verloren.", "notification.status": "{name} heeft zojuist een bericht geplaatst", - "notification.update": "{name} heeft een bericht bewerkt", + "notification.update": "{name} bewerkte een bericht", "notification_requests.accept": "Accepteren", "notification_requests.accept_multiple": "{count, plural, one {# verzoek accepteren…} other {# verzoeken accepteren…}}", "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Verzoek accepteren} other {Verzoeken accepteren}}", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 69883a5495..58ed018ba0 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Privat svar", "notification.label.reply": "Svar", "notification.mention": "Omtale", + "notification.mentioned_you": "{name} nemnde deg", "notification.moderation-warning.learn_more": "Lær meir", "notification.moderation_warning": "Du har mottatt ei moderasjonsåtvaring", "notification.moderation_warning.action_delete_statuses": "Nokre av innlegga dine har blitt fjerna.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 4dc74db8cb..c6555ebb76 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Odpowiedź prywatna", "notification.label.reply": "Odpowiedź", "notification.mention": "Wzmianka", + "notification.mentioned_you": "{name} wspomniał(a) o Tobie", "notification.moderation-warning.learn_more": "Dowiedz się więcej", "notification.moderation_warning": "Otrzymałeś/-łaś ostrzeżenie moderacyjne", "notification.moderation_warning.action_delete_statuses": "Niektóre twoje wpisy zostały usunięte.", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index ab5701cde0..b6d2fe112e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Resposta privada", "notification.label.reply": "Resposta", "notification.mention": "Menção", + "notification.mentioned_you": "{name} te mencionou", "notification.moderation-warning.learn_more": "Aprender mais", "notification.moderation_warning": "Você recebeu um aviso de moderação", "notification.moderation_warning.action_delete_statuses": "Algumas das suas publicações foram removidas.", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 15101be471..182f018873 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Përgjigje private", "notification.label.reply": "Përgjigje", "notification.mention": "Përmendje", + "notification.mentioned_you": "{name} ju ka përmendur", "notification.moderation-warning.learn_more": "Mësoni më tepër", "notification.moderation_warning": "Ju është dhënë një sinjalizim moderimi", "notification.moderation_warning.action_delete_statuses": "Disa nga postimet tuaja janë hequr.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index b1e5a95edf..298852100c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -506,6 +506,7 @@ "notification.label.private_reply": "Privata svar", "notification.label.reply": "Svar", "notification.mention": "Nämn", + "notification.mentioned_you": "{name} nämnde dig", "notification.moderation-warning.learn_more": "Läs mer", "notification.moderation_warning": "Du har fått en moderationsvarning", "notification.moderation_warning.action_delete_statuses": "Några av dina inlägg har tagits bort.", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 160b6ec4e6..88c48bfb40 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -512,6 +512,7 @@ "notification.label.private_reply": "การตอบกลับแบบส่วนตัว", "notification.label.reply": "การตอบกลับ", "notification.mention": "การกล่าวถึง", + "notification.mentioned_you": "{name} ได้กล่าวถึงคุณ", "notification.moderation-warning.learn_more": "เรียนรู้เพิ่มเติม", "notification.moderation_warning": "คุณได้รับคำเตือนการกลั่นกรอง", "notification.moderation_warning.action_delete_statuses": "เอาโพสต์บางส่วนของคุณออกแล้ว", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 36c0b68f00..937b3e8e19 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Özel yanıt", "notification.label.reply": "Yanıt", "notification.mention": "Bahsetme", + "notification.mentioned_you": "{name} sizden söz etti", "notification.moderation-warning.learn_more": "Daha fazlası", "notification.moderation_warning": "Hesabınız bir denetim uyarısı aldı", "notification.moderation_warning.action_delete_statuses": "Bazı gönderileriniz kaldırıldı.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index a48b071f54..5a9d388f0b 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Приватна відповідь", "notification.label.reply": "Відповідь", "notification.mention": "Згадка", + "notification.mentioned_you": "{name} згадує вас", "notification.moderation-warning.learn_more": "Докладніше", "notification.moderation_warning": "Ви отримали попередження модерації", "notification.moderation_warning.action_delete_statuses": "Деякі з ваших дописів було вилучено.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 770dcbaef5..cf33a15d32 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Trả lời riêng", "notification.label.reply": "Trả lời", "notification.mention": "Lượt nhắc", + "notification.mentioned_you": "{name} nhắc đến bạn", "notification.moderation-warning.learn_more": "Tìm hiểu", "notification.moderation_warning": "Bạn vừa nhận một cảnh báo kiểm duyệt", "notification.moderation_warning.action_delete_statuses": "Một vài tút của bạn bị gỡ.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 0a4505d4ee..74702e5127 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "私人回复", "notification.label.reply": "回复", "notification.mention": "提及", + "notification.mentioned_you": "{name} 提到了你", "notification.moderation-warning.learn_more": "了解更多", "notification.moderation_warning": "你收到了一条管理警告", "notification.moderation_warning.action_delete_statuses": "你的一些嘟文已被移除。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 2047a69f44..e93f7d5180 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "私訊回嘟", "notification.label.reply": "回嘟", "notification.mention": "提及", + "notification.mentioned_you": "{name} 已提及您", "notification.moderation-warning.learn_more": "了解更多", "notification.moderation_warning": "您已收到管理員警告", "notification.moderation_warning.action_delete_statuses": "某些您的嘟文已被刪除。", diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml index b571ab60dc..69139eba1d 100644 --- a/config/locales/activerecord.fy.yml +++ b/config/locales/activerecord.fy.yml @@ -15,6 +15,12 @@ fy: user/invite_request: text: Reden errors: + attributes: + domain: + invalid: is in ûnjildige domeinnamme + messages: + invalid_domain_on_line: "%{value} is in ûnjildige domeinnamme" + too_many_lines: giet oer de limyt fan %{limit} rigels models: account: attributes: diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 829855776d..1a6f0da8c6 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1394,20 +1394,6 @@ ar: merge_long: الإبقاء علي التسجيلات الحالية وإضافة الجديدة overwrite: إعادة الكتابة overwrite_long: استبدال التسجيلات الحالية بالجديدة - overwrite_preambles: - blocking_html: أنت على وشك استبدال قائمة الحظر بما يصل إلى %{total_items} من الحسابات من %{filename}. - bookmarks_html: أنت على وشك استبدال إشاراتك المرجعية بما يصل إلى %{total_items} من المشاركات من %{filename}. - domain_blocking_html: أنت على وشك إرشاداتك المرجعية بما يصل إلى %{total_items} من المشاركات من %{filename}. - following_html: أنت على وشك متابعة ما يصل إلى %{total_items} من الحسابات من %{filename} والتوقف عن متابعة أي شخص آخر. - lists_html: إنّك بصدد استبدال قوائمك بمحتوى مِلَفّ %{filename}. ما يُقارِب %{total_items} حسابًا سوف تُضاف إلى قوائم جديدة. - muting_html: أنت على وشك استبدال قائمة الحسابات الصامتة بما يصل إلى %{total_items} من الحسابات من %{filename}. - preambles: - blocking_html: أنت على وشك حظر ما يصل إلى %{total_items} من الحسابات من %{filename}. - bookmarks_html: أنت على وشك إضافة ما يصل إلى %{total_items} من المشاركات من %{filename} إلى إشاراتك المرجعية. - domain_blocking_html: أنت على وشك حظر ما يصل إلى %{total_items} من النطاقات من %{filename}. - following_html: أنت على وشك متابعة ما يصل إلى %{total_items} من الحسابات من %{filename}. - lists_html: أنت على وشك إضافة ما يصل إلى %{total_items} حسابات من %{filename} إلى قوائمك. سيتم إنشاء قوائم جديدة في حالة عدم وجود قائمة للإضافة إليها. - muting_html: أنت على وشك تجاهل ما يصل إلى %{total_items} من الحسابات من %{filename}. preface: بإمكانك استيراد بيانات قد قُمتَ بتصديرها مِن مثيل خادم آخَر، كقوائم المستخدِمين الذين كنتَ تتابِعهم أو قُمتَ بحظرهم. recent_imports: الاستيرادات الحديثة states: diff --git a/config/locales/be.yml b/config/locales/be.yml index d1d3e17679..b627672b2d 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -1391,20 +1391,6 @@ be: merge_long: Захаваць існуючыя запісы і дадаць новыя overwrite: Перазапісаць overwrite_long: Замяніць бягучыя запісы на новыя - overwrite_preambles: - blocking_html: Вы збіраецеся замяніць свой спіс блакіровак на %{total_items} уліковых запісаў з файла %{filename}. - bookmarks_html: Вы збіраецеся замяніць свае закладкі на %{total_items} допісаў з файла %{filename}. - domain_blocking_html: Вы збіраецеся замяніць свой спіс блакіроўкі даменаў на %{total_items} даменаў з файла %{filename}. - following_html: Вы збіраецеся падпісацца на %{total_items} уліковых запісаў з файла %{filename} і адпісацца ад усіх іншых карыстальнікаў. - lists_html: Вы збіраецеся замяніць свае спісы змесцівам з %{filename}. Да %{total_items} уліковых запісаў будуць дададзены ў новыя спісы. - muting_html: Вы збіраецеся замяніць свой спіс ігнараваных уліковых запісаў на %{total_items} уліковых запісаў з файла %{filename}. - preambles: - blocking_html: Вы збіраецеся заблакіраваць да %{total_items} уліковых запісаў з файла%{filename}. - bookmarks_html: Вы збіраецеся дадаць да %{total_items} паведамленняў з файла %{filename} у вашы закладкі. - domain_blocking_html: Вы збіраецеся заблакіраваць да %{total_items} даменаў з файла %{filename}. - following_html: Вы збіраецеся падпісацца на%{total_items} уліковых запісаў з файла %{filename}. - lists_html: Вы збіраецеся дадаць да %{total_items} уліковых запісаў з %{filename} у вашы спісы. Новыя спісы будуць створаны, калі іх няма. - muting_html: Вы збіраецеся ігнараваць да %{total_items} уліковых запісаў з файла %{filename}. preface: Вы можаце імпартаваць даныя, экспартаваныя вамі з іншага сервера, напрыклад, спіс людзей, на якіх вы падпісаны або якіх блакуеце. recent_imports: Нядаўнія імпарты states: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 00b3a41167..1fdd0e3533 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1300,20 +1300,6 @@ bg: merge_long: Пази текущите записи и добавя нови overwrite: Презаписване overwrite_long: Заменя текущите записи с новите - overwrite_preambles: - blocking_html: На път сте да замените списъка си с блокирани с до %{total_items} акаунта от %{filename}. - bookmarks_html: На път сте да замените списъка си с отметки с до %{total_items} публикации от %{filename}. - domain_blocking_html: На път сте да замените списъка си с блокирани домейни с до %{total_items} домейна от %{filename}. - following_html: На път сте да последвате до %{total_items} акаунта от %{filename} и да спрете да следвате някой друг. - lists_html: На път сте да замените списъците си със съдържание от %{filename}. До %{total_items} акаунта ще се добавят към новите списъци. - muting_html: На път сте да замените списъка си със заглушени акаунти с до %{total_items} акаунта от %{filename}. - preambles: - blocking_html: На път сте да блокирате до %{total_items} акаунта от %{filename}. - bookmarks_html: На път сте да добавите до %{total_items} публикации от %{filename} в отметките си. - domain_blocking_html: На път сте да блокирате до %{total_items} домейна от %{filename}. - following_html: На път сте да последвате до %{total_items} акаунта от %{filename}. - lists_html: На път сте да добавите до %{total_items} акаунта от %{filename} към вашите списъци. Нови списъци ще се сътворят, ако няма списъци за добавяне. - muting_html: На път сте да заглушите до %{total_items} акаунта от %{filename}. preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция. recent_imports: Скорошни внасяния states: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index ced8de4ef2..bb81aaa59c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1365,20 +1365,6 @@ ca: merge_long: Mantenir els registres existents i afegir-ne de nous overwrite: Sobreescriu overwrite_long: Reemplaça els registres actuals amb els nous - overwrite_preambles: - blocking_html: Ets a punt per a reemplaçar la teva llista de bloquejos de fins a %{total_items} comptes des de %{filename}. - bookmarks_html: Ets a punt de reemplaçar els teus marcadors de fins a %{total_items} tuts des de %{filename}. - domain_blocking_html: Ets a punt de reemplaçar la teva llista de dominis bloquejats de fins a %{total_items} dominis des de %{filename}. - following_html: Ets a punt de seguir fins a %{total_items} comptes des de %{filename} i deixar de seguir a la resta. - lists_html: Estàs a punt de reemplaçar les teves llistes amb contactes de %{filename}. S'afegiran fins a %{total_items} comptes a les noves llistes. - muting_html: Ets a punt de reemplaçar la teva llista de comptes silenciats de fins a %{total_items} comptes des de %{filename}. - preambles: - blocking_html: Ets a punt de bloquejar fins a %{total_items} comptes des de %{filename}. - bookmarks_html: Ets a punt d'afegir fins a %{total_items} tuts des de %{filename} als teus marcadors. - domain_blocking_html: Ets a punt de bloquejar fins a %{total_items} dominis des de %{filename}. - following_html: Ets a punt de seguir fins a %{total_items} comptes des de %{filename}. - lists_html: Estàs a punt d'afegir %{total_items} comptes de %{filename} a les teves llistes. Es crearan noves llistes si no hi ha cap llista on afegir-los. - muting_html: Ets a punt de silenciar fins a %{total_items} comptes des de %{filename}. preface: Pots importar algunes les dades que has exportat des d'un altre servidor, com ara el llistat de les persones que estàs seguint o bloquejant. recent_imports: Importacions recents states: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 91fa517944..15211b928a 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1348,20 +1348,6 @@ cs: merge_long: Ponechat existující záznamy a přidat nové overwrite: Přepsat overwrite_long: Nahradit aktuální záznamy novými - overwrite_preambles: - blocking_html: Chystáte se nahradit váš seznam bloků s %{total_items} účtami od %{filename}. - bookmarks_html: Chystáte se nahradit své záložky s %{total_items} příspěvků z %{filename}. - domain_blocking_html: Chystáte se nahradit seznam stránek s %{total_items} stránek z %{filename}. - following_html: Chystáte se sledovat%{total_items} účtů z %{filename} a přestanete sledovat všechny ostatní. - lists_html: Chystáte se nahradit své seznamy obsahem %{filename}. Až %{total_items} účtů budou přidány do nových seznamů. - muting_html: Chystáte se nahradit seznam skrytých účtů s %{total_items} účtami z %{filename}. - preambles: - blocking_html: Chystáte se blokovat%{total_items} účtů z %{filename}. - bookmarks_html: Chystáte se přidat až %{total_items} příspěvků z %{filename} do vašich záložek. - domain_blocking_html: Chystáte se blokovat%{total_items} stránek z %{filename}. - following_html: Chystáte se sledovat%{total_items} účtů z %{filename}. - lists_html: Chystáte se přidat %{total_items} účtů z %{filename} do vaších seznamů. Nové seznamy budou vytvořeny, pokud neexistuje žádný seznam, do kterého by bylo možné přidat. - muting_html: Chystáte se skrýt%{total_items} účtů z %{filename}. preface: Můžete importovat data, která jste exportovali z jiného serveru, jako například seznam lidí, které sledujete či blokujete. recent_imports: Nedávné importy states: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index a70d08ed8e..d57ef38696 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1465,20 +1465,6 @@ cy: merge_long: Cadw'r cofnodion presennol ac ychwanegu rhai newydd overwrite: Trosysgrifio overwrite_long: Amnewid y cofnodion cyfredol gyda'r rhai newydd - overwrite_preambles: - blocking_html: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{total_items} o gyfrifon o %{filename} . - bookmarks_html: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{total_items} o bostiadau gan %{filename} . - domain_blocking_html: Rydych ar fin amnewid eich rhestr rhwystro parth gyda hyd at %{total_items} parth o %{filename} . - following_html: Rydych ar fin dilyn hyd at %{total_items} o gyfrifon o %{filename} a pheidio a ddilyn unrhyw un arall . - lists_html: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename} . Bydd hyd at %{total_items} o gyfrifon yn cael eu hychwanegu at restrau newydd. - muting_html: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{total_items} o gyfrifon o %{filename} . - preambles: - blocking_html: Rydych ar fin rhwystro hyd at %{total_items} o gyfrifon o %{filename} . - bookmarks_html: Rydych ar fin ychwanegu hyd at %{total_items} o bostiadau o %{filename} at eich nodau tudalen . - domain_blocking_html: Rydych ar fin rhwystro hyd at %{total_items} parth o %{filename} . - following_html: Rydych ar fin dilyn hyd at %{total_items} cyfrif gan %{filename} . - lists_html: Rydych ar fin ychwanegu hyd at %{total_items} o gyfrifon o %{filename} at eich rhestrau . Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. - muting_html: Rydych ar fin anwybyddu hyd at %{total_items} cyfrif o %{filename}. preface: Gallwch fewnforio data rydych chi wedi'i allforio o weinydd arall, fel rhestr o'r bobl rydych chi'n eu dilyn neu'n eu blocio. recent_imports: Mewnforion diweddar states: diff --git a/config/locales/da.yml b/config/locales/da.yml index 0da901d4a8..1f80503e91 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1366,19 +1366,43 @@ da: overwrite: Overskriv overwrite_long: Erstat aktuelle poster med de nye overwrite_preambles: - blocking_html: Du er ved at erstatte bloklisten med op til %{total_items} konti fra %{filename}. - bookmarks_html: Du er ved at erstatte bogmærkelisten med op til %{total_items} emner fra %{filename}. - domain_blocking_html: Du er ved at erstatte domæneblokeringslisten med op til %{total_items} domæner fra %{filename}. - following_html: Du er ved at følge op til %{total_items} konti fra %{filename} og stoppe med at følge alle andre. - lists_html: Du er ved at erstatte dine lister med indholdet af %{filename}. Op til %{total_items} konti tilføjes nye lister. - muting_html: Du er ved at erstatte listen over tavsgjorte konti med op til %{total_items} konti fra %{filename}. + blocking_html: + one: Man er ved at erstatte sin sortliste med %{count} konto fra %{filename}. + other: Man er ved at erstatte sin sortliste med optil %{count} konti fra %{filename}. + bookmarks_html: + one: Man er ved at erstatte sine bogmærker med %{count} post fra %{filename}. + other: Man er ved at erstatte sine bogmærker med op til %{count} poster fra %{filename}. + domain_blocking_html: + one: Man er ved at erstatte sin domænesortliste med %{count} domæne fra %{filename}. + other: Man er ved at erstatte sin domænesortliste med op til %{count} domæner fra %{filename}. + following_html: + one: Man er ved at følge %{count} konto fra %{filename} og stoppe med at følge andre. + other: Man er ved at følge %{count} konti fra %{filename} og stoppe med at følge andre. + lists_html: + one: Man er ved at erstatte sine lister med indhold fra %{filename}. %{count} konto føjes til nye lister. + other: Man er ved at erstatte sine lister med indhold fra %{filename}. Op til %{count} konti føjes til nye lister. + muting_html: + one: Man er ved at sin liste over en tavsgjort konto med %{count} konto fra %{filename}. + other: Man er ved at sin liste over tavsgjorte konti med op til %{count} konti fra %{filename}. preambles: - blocking_html: Du er ved at blokere op til %{total_items} konti fra %{filename}. - bookmarks_html: Du er ved at føje op til %{total_items} indlæg fra %{filename} til bogmærkelisten. - domain_blocking_html: Du er ved at blokere op til %{total_items} domæner fra %{filename}. - following_html: Du er ved at følge op til %{total_items} konti fra %{filename}. - lists_html: Du er ved at tilføje op til %{total_items} konti fra %{filename} til dine lister. Nye lister oprettes, hvis der ikke er nogen liste at føje konti til. - muting_html: Du er ved at tavsgøre op til %{total_items} konti fra %{filename}. + blocking_html: + one: Man er ved at blokere %{count} konto fra %{filename}. + other: Man er ved at blokere op til %{count} konti fra %{filename}. + bookmarks_html: + one: Man er ved at tilføje %{count} post fra %{filename} til sine bogmærker. + other: Man er ved at tilføje %{count} poster fra %{filename} til sine bogmærker. + domain_blocking_html: + one: Man er ved at blokere %{count} domæne fra %{filename}. + other: Man er ved at blokere op til %{count} domæner fra %{filename}. + following_html: + one: Man er ved at følge %{count} konto fra %{filename}. + other: Man er ved at følge op til%{count} konti fra %{filename}. + lists_html: + one: Man er ved at tilføje %{count} konto fra %{filename} til sine lister. Nye lister oprettes, hvis der ikke findes nogen liste at tilføje til. + other: Man er ved at tilføje %{count} konti fra %{filename} til sine lister. Nye lister oprettes, hvis der ikke findes nogen liste at tilføje til. + muting_html: + one: Man er ved at tavsgøre %{count} konto fra %{filename}. + other: Man er ved at tavsgøre op til %{count} konto fra %{filename}. preface: Du kan importere data, du har eksporteret fra en anden server, såsom en liste over folk du følger eller blokerer. recent_imports: Seneste importer states: diff --git a/config/locales/de.yml b/config/locales/de.yml index 7a8469df61..5f0b4ae353 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1366,19 +1366,43 @@ de: overwrite: Überschreiben overwrite_long: Bestehende Datensätze durch neue ersetzen overwrite_preambles: - blocking_html: Du bist dabei, deine Liste blockierter Konten durch bis zu %{total_items} Konten aus %{filename} zu ersetzen. - bookmarks_html: Du bist dabei, deine Lesezeichen durch bis zu %{total_items} Beiträge aus %{filename} zu ersetzen. - domain_blocking_html: Du bist dabei, deine Liste blockierter Domains durch bis zu %{total_items} Domains aus %{filename} zu ersetzen. - following_html: Du bist dabei, bis zu %{total_items} Konten aus %{filename} zu folgen und niemand anderes zu folgen. - lists_html: Du bist dabei, deine Listen durch den Inhalt aus %{filename} zu ersetzen. Es werden bis zu %{total_items} Konten zu neuen Listen hinzugefügt. - muting_html: Du bist dabei, deine Liste stummgeschalteter Konten durch bis zu %{total_items} Konten aus %{filename} zu ersetzen. + blocking_html: + one: Du bist dabei, deine Liste blockierter Konten aus %{filename} durch bis zu %{count} Konto zu ersetzen. + other: Du bist dabei, deine Liste blockierter Konten aus %{filename} durch bis zu %{count} Konten zu ersetzen. + bookmarks_html: + one: Du bist dabei, deine Lesezeichen aus %{filename} durch bis zu %{count} Beitrag zu ersetzen. + other: Du bist dabei, deine Lesezeichen aus %{filename} durch bis zu %{count} Beiträge zu ersetzen. + domain_blocking_html: + one: Du bist dabei, deine Liste blockierter Domains aus %{filename} durch bis zu %{count} Domain zu ersetzen. + other: Du bist dabei, deine Liste blockierter Domains aus %{filename} durch bis zu %{count} Domains zu ersetzen. + following_html: + one: Du bist dabei, bis zu %{count} Konto aus %{filename} zu folgen und allen anderen zu entfolgen. + other: Du bist dabei, bis zu %{count} Konten aus %{filename} zu folgen und allen anderen zu entfolgen. + lists_html: + one: Du bist dabei, deine Listen mit dem Inhalt aus %{filename} zu ersetzen. Bis zu %{count} Konto wird zu neuen Listen hinzugefügt. + other: Du bist dabei, deine Listen mit dem Inhalt aus %{filename} zu ersetzen. Bis zu %{count} Konten wird zu neuen Listen hinzugefügt. + muting_html: + one: Du bist dabei, deine Liste mit einem stummgeschalteten Konto aus %{filename} durch bis zu %{count} Konto zu ersetzen. + other: Du bist dabei, deine Liste stummgeschalteter Konten aus %{filename} durch bis zu %{count} Konten zu ersetzen. preambles: - blocking_html: Du bist dabei, bis zu %{total_items}%{total_items} Konten aus %{filename} zu blockieren. - bookmarks_html: Du bist dabei, bis zu %{total_items} Beiträge aus %{filename} zu deinen Lesezeichen hinzuzufügen. - domain_blocking_html: Du bist dabei, bis zu %{total_items} Domains aus %{filename} zu blockieren. - following_html: Du bist dabei, bis zu %{total_items} Konten aus %{filename} zu folgen. - lists_html: Du bist dabei, bis zu %{total_items} Konten aus %{filename} zu deinen Listen hinzuzufügen. Wenn es keine Liste gibt, zu der etwas hinzugefügt werden kann, dann werden neue Listen erstellt. - muting_html: Du bist dabei, bis zu %{total_items} Konten aus %{filename} stummzuschalten. + blocking_html: + one: Du bist dabei, bis zu %{count} Konto aus %{filename} zu blockieren. + other: Du bist dabei, bis zu %{count} Konten aus %{filename} zu blockieren. + bookmarks_html: + one: Du bist dabei, bis zu %{count} Beitrag aus %{filename} zu deinen Lesezeichen hinzuzufügen. + other: Du bist dabei, bis zu %{count} Beiträge aus %{filename} zu deinen Lesezeichen hinzuzufügen. + domain_blocking_html: + one: Du bist dabei, bis zu %{count} Domain aus %{filename} zu blockieren. + other: Du bist dabei, bis zu %{count} Domains aus %{filename} zu blockieren. + following_html: + one: Du bist dabei, bis zu %{count} Konto aus %{filename} zu folgen. + other: Du bist dabei, bis zu %{count} Konten aus %{filename} zu folgen. + lists_html: + one: Du bist dabei, bis zu %{count} Konto aus %{filename} zu deinen Listen hinzuzufügen. Wenn es keine Listen gibt, zu denen etwas hinzugefügt werden kann, dann werden neue Listen erstellt. + other: Du bist dabei, bis zu %{count} Konten aus %{filename} zu deinen Listen hinzuzufügen. Wenn es keine Listen gibt, zu denen etwas hinzugefügt werden kann, dann werden neue Listen erstellt. + muting_html: + one: Du bist dabei, bis zu %{count} Konto aus %{filename} stummzuschalten. + other: Du bist dabei, bis zu %{count} Konten aus %{filename} stummzuschalten. preface: Daten, die du von einem Mastodon-Server exportiert hast, kannst du hierher importieren. Das betrifft beispielsweise die Listen von Profilen, denen du folgst oder die du blockiert hast. recent_imports: Zuletzt importiert states: diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index 9d946967e9..43aef271f9 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -73,9 +73,11 @@ eo: title: Unu el viaj sekurecaj ŝlosiloj estis forigita webauthn_disabled: explanation: Aŭtentigo per sekurecaj ŝlosiloj estas malŝaltita por via konto. + extra: Ensaluto nun eblas uzante nur la ĵetonon generitan de la parigita tempbazita unufoja pasvorta aplikaĵo. subject: 'Mastodon: sekureca-ŝlosila aŭtentigo malebligita' title: Sekurecaj ŝlosiloj malaktivigitaj webauthn_enabled: + explanation: Sekurecŝlosila aŭtentigo estas ebligita por via konto. extra: Via sekureca ŝlosilo nun povas esti uzata por ensaluto. subject: 'Mastodon: sekureca-ŝlosila aŭtentigo ebligita' title: Sekurecaj ŝlosiloj aktivigitaj diff --git a/config/locales/doorkeeper.fy.yml b/config/locales/doorkeeper.fy.yml index 94e67d17a6..180c7e733f 100644 --- a/config/locales/doorkeeper.fy.yml +++ b/config/locales/doorkeeper.fy.yml @@ -60,6 +60,7 @@ fy: error: title: Der is in flater bard new: + prompt_html: "%{client_name} freget om tagong ta jo account. Keur dit fersyk allinnich goed as jo dizze boarne werkenne en fertrouwe." review_permissions: Tastimmingen beoardiele title: Autorisaasje fereaske show: diff --git a/config/locales/el.yml b/config/locales/el.yml index 4496ec51a6..0df31b246f 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1322,20 +1322,6 @@ el: merge_long: Διατήρηση των εγγράφων που υπάρχουν και προσθήκη των νέων overwrite: Αντικατάσταση overwrite_long: Αντικατάσταση των υπαρχόντων εγγράφων με τις καινούργιες - overwrite_preambles: - blocking_html: Πρόκειται να αντικαταστήσεις τη λίστα αποκλεισμών με έως και %{total_items} λογαριασμούς από το %{filename}. - bookmarks_html: Πρόκειται να αντικαταστήσεις τους σελιδοδείκτες σου με έως και %{total_items} αναρτήσεις από το %{filename}. - domain_blocking_html: Πρόκειται να αντικαταστήσεις τη λίστα αποκλεισμών τομέων με έως και %{total_items} τομείς από το %{filename}. - following_html: Πρόκειται να ακολουθήσεις μέχρι %{total_items} λογαριασμούς από το %{filename} και να σταματήσεις να ακολουθείς οποιονδήποτε άλλο. - lists_html: Πρόκειται να αντικαταστήσεις τις λίστες σου με περιεχόμενο του %{filename}. Μέχρι %{total_items} λογαριασμοί θα προστεθούν σε νέες λίστες. - muting_html: Πρόκειται να αντικαταστήσεις τη λίστα λογαριασμών σε σίγαση με έως και %{total_items} λογαριασμούς από το %{filename}. - preambles: - blocking_html: Πρόκειται να αποκλείσεις έως και %{total_items} λογαριασμούς από το %{filename}. - bookmarks_html: Πρόκειται να προσθέσεις μέχρι και %{total_items} αναρτήσεις από το %{filename} στους σελιδοδείκτες σου. - domain_blocking_html: Πρόκειται να αποκλείσεις έως και %{total_items} τομείς από το %{filename}. - following_html: Πρόκειται να ακολουθήσεις έως και %{total_items} λογαριασμούς από το %{filename}. - lists_html: Πρόκειται να προσθέσεις μέχρι και %{total_items} λογαριασμούς από το %{filename} στις λίστες σου. Θα δημιουργηθούν νέες λίστες αν δεν υπάρχει λίστα για προσθήκη. - muting_html: Πρόκειται να κάνεις σίγαση σε έως και %{total_items} λογαριασμούς από το %{filename}. preface: Μπορείς να εισάγεις τα δεδομένα που έχεις εξάγει από άλλο διακομιστή, όπως τη λίστα των ατόμων που ακολουθείς ή έχεις αποκλείσει. recent_imports: Πρόσφατες Εισαγωγές states: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index fbd48d1c31..65b2e6f71a 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -875,6 +875,9 @@ en-GB: message_html: You haven't defined any server rules. sidekiq_process_check: message_html: No Sidekiq process running for the %{value} queue(s). Please review your Sidekiq configuration + software_version_check: + action: See available updates + message_html: A Mastodon update is available. software_version_critical_check: action: See available updates message_html: A critical Mastodon update is available, please update as quickly as possible. @@ -1363,19 +1366,43 @@ en-GB: overwrite: Overwrite overwrite_long: Replace current records with the new ones overwrite_preambles: - blocking_html: You are about to replace your block list with up to %{total_items} accounts from %{filename}. - bookmarks_html: You are about to replace your bookmarks with up to %{total_items} posts from %{filename}. - domain_blocking_html: You are about to replace your domain block list with up to %{total_items} domains from %{filename}. - following_html: You are about to follow up to %{total_items} accounts from %{filename} and stop following anyone else. - lists_html: You are about to replace your lists with contents of %{filename}. Up to %{total_items} accounts will be added to new lists. - muting_html: You are about to replace your list of muted accounts with up to %{total_items} accounts from %{filename}. + blocking_html: + one: You are about to replace your block list with up to %{count} account from %{filename}. + other: You are about to replace your block list with up to %{count} accounts from %{filename}. + bookmarks_html: + one: You are about to replace your bookmarks with up to %{count} post from %{filename}. + other: You are about to replace your bookmarks with up to %{count} posts from %{filename}. + domain_blocking_html: + one: You are about to replace your domain block list with up to %{count} domain from %{filename}. + other: You are about to replace your domain block list with up to %{count} domains from %{filename}. + following_html: + one: You are about to follow up to %{count} account from %{filename} and stop following anyone else. + other: You are about to follow up to %{count} accounts from %{filename} and stop following anyone else. + lists_html: + one: You are about to replace your lists with contents of %{filename}. Up to %{count} account will be added to new lists. + other: You are about to replace your lists with contents of %{filename}. Up to %{count} accounts will be added to new lists. + muting_html: + one: You are about to replace your list of muted account with up to %{count} account from %{filename}. + other: You are about to replace your list of muted accounts with up to %{count} accounts from %{filename}. preambles: - blocking_html: You are about to block up to %{total_items} accounts from %{filename}. - bookmarks_html: You are about to add up to %{total_items} posts from %{filename} to your bookmarks. - domain_blocking_html: You are about to block up to %{total_items} domains from %{filename}. - following_html: You are about to follow up to %{total_items} accounts from %{filename}. - lists_html: You are about to add up to %{total_items} accounts from %{filename} to your lists. New lists will be created if there is no list to add to. - muting_html: You are about to mute up to %{total_items} accounts from %{filename}. + blocking_html: + one: You are about to block up to %{count} account from %{filename}. + other: You are about to block up to %{count} accounts from %{filename}. + bookmarks_html: + one: You are about to add up to %{count} post from %{filename} to your bookmarks. + other: You are about to add up to %{count} posts from %{filename} to your bookmarks. + domain_blocking_html: + one: You are about to block up to %{count} domain from %{filename}. + other: You are about to block up to %{count} domains from %{filename}. + following_html: + one: You are about to follow up to %{count} account from %{filename}. + other: You are about to follow up to %{count} accounts from %{filename}. + lists_html: + one: You are about to add up to %{count} account from %{filename} to your lists. New lists will be created if there is no list to add to. + other: You are about to add up to %{count} accounts from %{filename} to your lists. New lists will be created if there is no list to add to. + muting_html: + one: You are about to mute up to %{count} account from %{filename}. + other: You are about to mute up to %{count} accounts from %{filename}. preface: You can import data that you have exported from another server, such as a list of the people you are following or blocking. recent_imports: Recent imports states: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 49b8f288fa..cfc24ce270 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1366,19 +1366,43 @@ es-AR: overwrite: Sobrescribir overwrite_long: Reemplazar registros actuales con los nuevos overwrite_preambles: - blocking_html: Estás a punto de reemplazar tu lista de bloqueos por hasta %{total_items} cuentas provenientes de %{filename}. - bookmarks_html: Estás a punto de reemplazar tus marcadores por hasta %{total_items} mensajes provenientes de %{filename}. - domain_blocking_html: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta %{total_items} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. - lists_html: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se agregarán hasta %{total_items} cuentas a listas nuevas. - muting_html: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{total_items} cuentas provenientes de %{filename}. + blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos por hasta %{count} cuenta provenientes de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos por hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Estás a punto de reemplazar tus marcadores por hasta %{count} mensaje provenientes de %{filename}. + other: Estás a punto de reemplazar tus marcadores por hasta %{count} mensajes provenientes de %{filename}. + domain_blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{count} dominio provenientes de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir hasta %{count} cuenta provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. + lists_html: + one: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se agregarán hasta %{count} cuenta a listas nuevas. + other: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se agregarán hasta %{count} cuentas a listas nuevas. + muting_html: + one: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{count} cuenta provenientes de %{filename}. + other: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{count} cuentas provenientes de %{filename}. preambles: - blocking_html: Estás a punto de bloquear hasta %{total_items} cuentas provenientes de %{filename}. - bookmarks_html: Está a punto de agregar hasta %{total_items} mensajes provenientes de %{filename} a tus marcadores. - domain_blocking_html: Estás a punto de bloquear hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta cuentas%{total_items} provenientes de %{filename}. - lists_html: Estás a punto de agregar hasta %{total_items} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay lista a cual agregar. - muting_html: Estás a punto de silenciar hasta %{total_items} cuentas provenientes de %{filename}. + blocking_html: + one: Estás a punto de bloquear hasta %{count} cuenta provenientes de %{filename}. + other: Estás a punto de bloquear hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Está a punto de agregar hasta %{count} mensaje provenientes de %{filename} a tus marcadores. + other: Está a punto de agregar hasta %{count} mensajes provenientes de %{filename} a tus marcadores. + domain_blocking_html: + one: Estás a punto de bloquear hasta %{count} dominio provenientes de %{filename}. + other: Estás a punto de bloquear hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir hasta %{count} cuenta provenientes de %{filename}. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename}. + lists_html: + one: Estás a punto de agregar hasta %{count} cuenta desde %{filename} a tus listas. Se crearán nuevas listas si no hay lista a cuál agregar. + other: Estás a punto de agregar hasta %{count} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay lista a cuál agregar. + muting_html: + one: Estás a punto de silenciar hasta %{count} cuenta provenientes de %{filename}. + other: Estás a punto de silenciar hasta %{count} cuentas provenientes de %{filename}. preface: Podés importar ciertos datos que exportaste desde otro servidor, como una lista de las cuentas que estás siguiendo o bloqueando. recent_imports: Importaciones recientes states: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 0f4c8452c0..4e7ee657e6 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -180,21 +180,21 @@ es-MX: confirm_user: Confirmar Usuario create_account_warning: Crear Advertencia create_announcement: Crear Anuncio - create_canonical_email_block: Crear Bloqueo de Correo Electrónico + create_canonical_email_block: Crear bloqueo de correo electrónico create_custom_emoji: Crear Emoji Personalizado create_domain_allow: Crear Permiso de Dominio create_domain_block: Crear Bloqueo de Dominio - create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico + create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla IP create_unavailable_domain: Crear Dominio No Disponible create_user_role: Crear rol demote_user: Degradar Usuario destroy_announcement: Eliminar Anuncio - destroy_canonical_email_block: Eliminar Bloqueo de Correo Electrónico + destroy_canonical_email_block: Eliminar bloqueo de correo electrónico destroy_custom_emoji: Eliminar Emoji Personalizado destroy_domain_allow: Eliminar Permiso de Dominio destroy_domain_block: Eliminar Bloqueo de Dominio - destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico + destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_instance: Purgar dominio destroy_ip_block: Eliminar regla IP destroy_status: Eliminar Estado @@ -876,8 +876,8 @@ es-MX: sidekiq_process_check: message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq software_version_check: - action: Ver actualizaciones disponibles - message_html: Hay disponible una actualización de Mastodon. + action: Ver las actualizaciones disponibles + message_html: Ya está disponible una actualización de Mastodon. software_version_critical_check: action: Ver actualizaciones disponibles message_html: Una actualización crítica de Mastodon está disponible, por favor actualice lo antes posible. @@ -1366,19 +1366,43 @@ es-MX: overwrite: Sobrescribir overwrite_long: Reemplazar registros actuales con los nuevos overwrite_preambles: - blocking_html: Estás a punto de reemplazar tu lista de bloqueos por hasta %{total_items} cuentas provenientes de %{filename}. - bookmarks_html: Estás a punto de reemplazar tus marcadores por hasta %{total_items} publicaciones provenientes de %{filename}. - domain_blocking_html: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta %{total_items} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. - lists_html: Estás a punto de reemplazar tus listas con contenidos de %{filename}. %{total_items} cuentas se añadirán a listas nuevas. - muting_html: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{total_items} cuentas proveninetes de %{filename}. + blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos por %{count} cuenta proveniente de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos por hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Estás a punto de reemplazar tus marcadores por %{count} publicación proveniente de %{filename}. + other: Estás a punto de reemplazar tus marcadores por hasta %{count} publicaciones provenientes de %{filename}. + domain_blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos de dominio por %{count} dominio proveniente de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir a %{count} cuenta proveniente de %{filename} y dejar de seguir a cualquier otra cuenta. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. + lists_html: + one: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se añadirá %{count} cuenta a una nueva lista. + other: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se añadirán %{count} cuentas a nuevas listas. + muting_html: + one: Estás a punto de reemplazar tu lista de cuentas silenciadas con %{count} cuenta proveninete de %{filename}. + other: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{count} cuentas provenientes de %{filename}. preambles: - blocking_html: Estás a punto de bloquear hasta %{total_items} cuentas proveninetes de %{filename}. - bookmarks_html: Estás a punto de añadir hasta %{total_items} publicaciones proveninetes de %{filename} a tus marcadores. - domain_blocking_html: Estás a punto de bloquear hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta cuentas%{total_items} provenientes de %{filename}. - lists_html: Estás a punto de añadir %{total_items} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay listas para añadirlas. - muting_html: Estás a punto de silenciar hasta %{total_items} cuentas provenientes de %{filename}. + blocking_html: + one: Estás a punto de bloquear a %{count} cuenta proveninete de %{filename}. + other: Estás a punto de bloquear hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Está a punto de añadir %{count} publicación proveniente de %{filename} a tus marcadores. + other: Está a punto de añadir hasta %{count} publicaciones provenientes de %{filename} a tus marcadores. + domain_blocking_html: + one: Estás a punto de bloquear %{count} dominio proveniente de %{filename}. + other: Estás a punto de bloquear hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir a %{count} cuenta proveniente de %{filename}. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename}. + lists_html: + one: Estás a punto de añadir %{count} cuenta desde %{filename} a tus listas. Se creará una nueva listas si no hay listas donde añadirla. + other: Estás a punto de añadir %{count} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay listas donde añadirlas. + muting_html: + one: Estás a punto de silenciar a %{count} cuenta proveniente de %{filename}. + other: Estás a punto de silenciar hasta %{count} cuentas provenientes de %{filename}. preface: Puedes importar ciertos datos, como todas las personas que estás siguiendo o bloqueando en tu cuenta en esta instancia, desde archivos exportados de otra instancia. recent_imports: Importaciones recientes states: @@ -1453,8 +1477,8 @@ es-MX: emails: notification_emails: favourite: correos de notificación de favoritos - follow: correos de notificación de nuevos seguidores - follow_request: correos de notificación de solicitud de seguidor + follow: correos electrónicos de notificación de seguimiento + follow_request: correos electrónicos de solicitud de seguimiento mention: correos de notificación de menciones reblog: correos de notificación de impulsos resubscribe_html: Si te has dado de baja por error, puedes volver a darte de alta desde tus ajustes de notificaciones por correo. diff --git a/config/locales/es.yml b/config/locales/es.yml index aa18e7b52e..bb9e5daff5 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1366,19 +1366,43 @@ es: overwrite: Sobrescribir overwrite_long: Reemplazar registros actuales con los nuevos overwrite_preambles: - blocking_html: Estás a punto de reemplazar tu lista de bloqueos por hasta %{total_items} cuentas provenientes de %{filename}. - bookmarks_html: Estás a punto de reemplazar tus marcadores por hasta %{total_items} publicaciones provenientes de %{filename}. - domain_blocking_html: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta %{total_items} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. - lists_html: Estás a punto de reemplazar tus listas con contenidos de %{filename}. Se añadirán %{total_items} cuentas a nuevas listas. - muting_html: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{total_items} cuentas proveninetes de %{filename}. + blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos por %{count} cuenta proveniente de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos por hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Estás a punto de reemplazar tus marcadores por %{count} publicación proveniente de %{filename}. + other: Estás a punto de reemplazar tus marcadores por hasta %{count} publicaciones provenientes de %{filename}. + domain_blocking_html: + one: Estás a punto de reemplazar tu lista de bloqueos de dominio por %{count} dominio proveniente de %{filename}. + other: Estás a punto de reemplazar tu lista de bloqueos de dominio por hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir a %{count} cuenta proveniente de %{filename} y dejar de seguir a cualquier otra cuenta. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename} y dejar de seguir a cualquier otra cuenta. + lists_html: + one: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se añadirá %{count} cuenta a una nueva lista. + other: Estás a punto de reemplazar tus listas con el contenido de %{filename}. Se añadirán %{count} cuentas a nuevas listas. + muting_html: + one: Estás a punto de reemplazar tu lista de cuentas silenciadas con %{count} cuenta proveninete de %{filename}. + other: Estás a punto de reemplazar tu lista de cuentas silenciadas con hasta %{count} cuentas provenientes de %{filename}. preambles: - blocking_html: Estás a punto de bloquear hasta %{total_items} cuentas proveninetes de %{filename}. - bookmarks_html: Está a punto de añadir hasta %{total_items} publicaciones proveninetes de %{filename} a tus marcadores. - domain_blocking_html: Estás a punto de bloquear hasta %{total_items} dominios provenientes de %{filename}. - following_html: Estás a punto de seguir hasta cuentas%{total_items} provenientes de %{filename}. - lists_html: Estás a punto de añadir %{total_items} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay listas para añadirlas. - muting_html: Estás a punto de silenciar hasta %{total_items} cuentas provenientes de %{filename}. + blocking_html: + one: Estás a punto de bloquear a %{count} cuenta proveninete de %{filename}. + other: Estás a punto de bloquear hasta %{count} cuentas provenientes de %{filename}. + bookmarks_html: + one: Está a punto de añadir %{count} publicación proveniente de %{filename} a tus marcadores. + other: Está a punto de añadir hasta %{count} publicaciones provenientes de %{filename} a tus marcadores. + domain_blocking_html: + one: Estás a punto de bloquear %{count} dominio proveniente de %{filename}. + other: Estás a punto de bloquear hasta %{count} dominios provenientes de %{filename}. + following_html: + one: Estás a punto de seguir a %{count} cuenta proveniente de %{filename}. + other: Estás a punto de seguir hasta %{count} cuentas provenientes de %{filename}. + lists_html: + one: Estás a punto de añadir %{count} cuenta desde %{filename} a tus listas. Se creará una nueva listas si no hay listas donde añadirla. + other: Estás a punto de añadir %{count} cuentas desde %{filename} a tus listas. Se crearán nuevas listas si no hay listas donde añadirlas. + muting_html: + one: Estás a punto de silenciar a %{count} cuenta proveniente de %{filename}. + other: Estás a punto de silenciar hasta %{count} cuentas provenientes de %{filename}. preface: Puedes importar ciertos datos, como todas las personas que estás siguiendo o bloqueando en tu cuenta en esta instancia, desde archivos exportados de otra instancia. recent_imports: Importaciones recientes states: diff --git a/config/locales/et.yml b/config/locales/et.yml index b71e3ccb68..4372a92843 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1362,20 +1362,6 @@ et: merge_long: Hoia olemasolevad andmed ja lisa uusi overwrite: Kirjuta üle overwrite_long: Vaheta praegused andmed uute vastu - overwrite_preambles: - blocking_html: Oled asendamas oma blokeeringute loetelu kuni %{total_items} kontoga kohast %{filename}. - bookmarks_html: Oled asendamas oma järjehoidjaid kuni %{total_items} postitusega kohast %{filename}. - domain_blocking_html: Oled asendamas oma domeenide blokeeringute loetelu kuni %{total_items} domeeniga kohast %{filename}. - following_html: Oled jälgima hakkamas kuni %{total_items} kontot kohast %{filename} ja lõpetad kõigi teiste jälgimise. - lists_html: Oled asendamas oma loetelusid faili %{filename} sisuga. Uutesse loeteludesse lisatakse kuni %{total_items} kontot. - muting_html: Oled asendamas oma vaigistatud kontode loetelu kuni %{total_items} kontoga kohast %{filename}. - preambles: - blocking_html: Oled blokeerimas kuni %{total_items} kontoga kohast %{filename}. - bookmarks_html: Oled lisamas kuni %{total_items} postitust kohast %{filename} to your bookmarks. - domain_blocking_html: Oled blokeerimas kuni %{total_items} domeeni kohast %{filename}. - following_html: Oled jälgima hakkamas kuni %{total_items} kontot kohast %{filename}. - lists_html: Oled lisamas oma loeteludesse failist %{filename} kuni %{total_items} kontot. Kui pole loetelusi, kuhu lisada, luuakse uued loetelud. - muting_html: Oled vaigistamas kuni %{total_items} kontot kohast %{filename}. preface: Saad importida mistahes andmeid, mis on eksporditud teisest serverist. Näiteks nimekirja inimestest, keda jälgid ja keda blokeerid. recent_imports: Viimati imporditud states: diff --git a/config/locales/eu.yml b/config/locales/eu.yml index e80207d46f..e9c3be2d24 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -1276,20 +1276,6 @@ eu: merge_long: Mantendu dauden erregistroak eta gehitu berriak overwrite: Gainidatzi overwrite_long: Ordeztu oraingo erregistroak berriekin - overwrite_preambles: - blocking_html: "Blokeatutakoen zerrenda %{filename} fitxategiak dituen %{total_items} kontuekin ordeztear zaude." - bookmarks_html: "Laster-markak %{filename} fitxategiak dituen %{total_items} argitalpenekin ordeztear zaude." - domain_blocking_html: "Blokeatutako domeinuen zerrenda %{filename} fitxategiak dituen %{total_items} domeinuekin ordeztear zaude." - following_html: "%{filename} fitxategiak dituen %{total_items} kontuei jarraitzear zaude; gainontzekoak jarraitzeari utziko diozu." - lists_html: "Zerrendak %{filename} fitxategiak duen edukiarekin ordeztear zaude. %{total_items} kontu gehituko dira zerrenda berrietara." - muting_html: "Mutututako kontuen zerrenda %{filename} fitxategiak dituen %{total_items} kontuekin ordeztear zaude." - preambles: - blocking_html: "%{filename} fitxategiak dituen %{total_items} kontuak blokeatzear zaude." - bookmarks_html: "%{filename} fitxategiak dituen %{total_items} argitalpenei laster-marka jartzear zaude." - domain_blocking_html: "%{filename} fitxategiak dituen %{total_items} domeinuak blokeatzear zaude." - following_html: "%{filename} fitxategiak dituen %{total_items} konturi jarraitzear zaude." - lists_html: "%{filename} fitxategiak dituen %{total_items} kontu zerrendetan gehitzear zaude. Zerrenda berriak sortuko dira zerrendarik ez badago." - muting_html: "%{filename} fitxategiak dituen %{total_items} kontuak mututzear zaude." preface: Beste zerbitzari bateko datuak inportatu ditzakezu, esaterako jarraitzen duzun edo blokeatu duzun jendearen zerrenda. recent_imports: Azken inportazioak states: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 22ccc71161..1767f9e63e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1366,19 +1366,43 @@ fi: overwrite: Korvaa overwrite_long: Korvaa nykyiset tietueet uusilla overwrite_preambles: - blocking_html: Olet aikeissa korvata estoluettelosi kaikkiaan %{total_items} tilillä tiedostosta %{filename}. - bookmarks_html: Olet aikeissa korvata kirjanmerkkisi kaikkiaan %{total_items} julkaisulla tiedostosta %{filename}. - domain_blocking_html: Olet aikeissa korvata verkkotunnusten estoluettelosi kaikkiaan %{total_items} verkkotunnuksella tiedostosta %{filename}. - following_html: Olet aikeissa seurata kaikkiaan %{total_items} tiliä tiedostosta %{filename} ja lopettaa kaikkien muiden seuraamisen. - lists_html: Olet aikeissa korvata listojasi tiedoston %{filename} sisällöllä. Uusiin listoihin lisätään kaikkiaan %{total_items} tiliä. - muting_html: Olet aikeissa korvata mykistettyjen tilien luettelosi kaikkiaan %{total_items} tilillä tiedostosta %{filename}. + blocking_html: + one: Olet aikeissa korvata estoluettelosi kaikkiaan %{count} tilillä tiedostosta %{filename}. + other: Olet aikeissa korvata estoluettelosi kaikkiaan %{count} tilillä tiedostosta %{filename}. + bookmarks_html: + one: Olet aikeissa korvata kirjanmerkkisi kaikkiaan %{count} julkaisulla tiedostosta %{filename}. + other: Olet aikeissa korvata kirjanmerkkisi kaikkiaan %{count} julkaisulla tiedostosta %{filename}. + domain_blocking_html: + one: Olet aikeissa korvata verkkotunnusten estoluettelosi kaikkiaan %{count} verkkotunnuksella tiedostosta %{filename}. + other: Olet aikeissa korvata verkkotunnusten estoluettelosi kaikkiaan %{count} verkkotunnuksella tiedostosta %{filename}. + following_html: + one: Olet aikeissa seurata kaikkiaan %{count} tiliä tiedostosta %{filename} ja lopettaa kaikkien muiden seuraamisen. + other: Olet aikeissa seurata kaikkiaan %{count} tiliä tiedostosta %{filename} ja lopettaa kaikkien muiden seuraamisen. + lists_html: + one: Olet aikeissa korvata listojasi tiedoston %{filename} sisällöllä. Uusiin listoihin lisätään kaikkiaan %{count} tili. + other: Olet aikeissa korvata listojasi tiedoston %{filename} sisällöllä. Uusiin listoihin lisätään kaikkiaan %{count} tiliä. + muting_html: + one: Olet aikeissa korvata mykistettyjen tilien luettelosi kaikkiaan %{count} tilillä tiedostosta %{filename}. + other: Olet aikeissa korvata mykistettyjen tilien luettelosi kaikkiaan %{count} tilillä tiedostosta %{filename}. preambles: - blocking_html: Olet aikeissa estää kaikkiaan %{total_items} tiliä tiedostosta %{filename}. - bookmarks_html: Olet aikeissa lisätä kaikkiaan %{total_items} julkaisua tiedostosta %{filename}kirjanmerkkeihisi. - domain_blocking_html: Olet aikeissa estää kaikkiaan %{total_items} verkkotunnusta tiedostosta %{filename}. - following_html: Olet aikeissa seurata kaikkiaan %{total_items} tiliä tiedostosta %{filename}. - lists_html: Olet aikeissa lisätä listoihisi kaikkiaan %{total_items} tiliä tiedostosta %{filename}. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa. - muting_html: Olet aikeissa mykistää kaikkiaan %{total_items} tiliä tiedostosta %{filename}. + blocking_html: + one: Olet aikeissa estää kaikkiaan %{count} tilin tiedostosta %{filename}. + other: Olet aikeissa estää kaikkiaan %{count} tiliä tiedostosta %{filename}. + bookmarks_html: + one: Olet aikeissa lisätä kaikkiaan %{count} julkaisun tiedostosta %{filename}kirjanmerkkeihisi. + other: Olet aikeissa lisätä kaikkiaan %{count} julkaisua tiedostosta %{filename}kirjanmerkkeihisi. + domain_blocking_html: + one: Olet aikeissa estää kaikkiaan %{count} verkkotunnuksen tiedostosta %{filename}. + other: Olet aikeissa estää kaikkiaan %{count} verkkotunnusta tiedostosta %{filename}. + following_html: + one: Olet aikeissa seurata kaikkiaan %{count} tiliä tiedostosta %{filename}. + other: Olet aikeissa seurata kaikkiaan %{count} tiliä tiedostosta %{filename}. + lists_html: + one: Olet aikeissa lisätä listoihisi kaikkiaan %{count} tilin tiedostosta %{filename}. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa. + other: Olet aikeissa lisätä listoihisi kaikkiaan %{count} tiliä tiedostosta %{filename}. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa. + muting_html: + one: Olet aikeissa mykistää kaikkiaan %{count} tilin tiedostosta %{filename}. + other: Olet aikeissa mykistää kaikkiaan %{count} tiliä tiedostosta %{filename}. preface: Voit tuoda toiselta palvelimelta viemiäsi tietoja, kuten seuraamiesi tai estämiesi käyttäjien luettelon. recent_imports: Viimeksi tuotu states: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 31eb67b3b0..55104eb6ff 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1365,20 +1365,6 @@ fo: merge_long: Varðveit verandi teigarøð og legg nýggjar afturat overwrite: Skriva omaná overwrite_long: Legg nýggj teigarøð inn fyri tey verandi - overwrite_preambles: - blocking_html: Tú ert í ferð við at útskifta blokeringslistan hjá tær við upp til %{total_items} kontum frá %{filename}. - bookmarks_html: Tú ert í ferð við at útskifta tíni bókamerki við upp til %{total_items} postum frá %{filename}. - domain_blocking_html: Tú ert í ferð við at útskifta navnaøkisblokeringslistan hjá tær við upp til %{total_items} navnaøkjum frá %{filename}. - following_html: Tú ert í ferð við at fylgja upp til %{total_items} kontum frá %{filename} og at gevast at fylgja øðrum. - lists_html: Tú ert í ferð við at skifta listarnar hjá tær út við tað, sum er í %{filename}. Upp til %{total_items} kontur verða lagdar afturat nýggjum listum. - muting_html: Tú ert í ferð við at útskifta listan hjá tær við doyvdum kontum við upp til %{total_items} kontum frá %{filename}. - preambles: - blocking_html: Tú ert í ferð við at blokera upp til %{total_items} kontur frá %{filename}. - bookmarks_html: Tú ert í ferð við at leggja upp til %{total_items} postar frá %{filename} afturat tínum bókamerkjum. - domain_blocking_html: Tú ert í ferð við at blokera upp til %{total_items} navnaøki frá %{filename}. - following_html: Tú ert í ferð við at fylgja upp til %{total_items} kontur frá %{filename}. - lists_html: Tú ert í ferð við at leggja upp til %{total_items} kontur frá %{filename} afturat tínum listum. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat. - muting_html: Tú ert í ferð við at doyva upp til %{total_items} kontur frá %{filename}. preface: Tú kanst innlesa dátur, sum tú hevur útlisið frá einum øðrum ambætara, so sum listar av fólki, sum tú fylgir ella blokerar. recent_imports: Feskar innflytingar states: diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 16cdb79317..01463edacb 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -1368,20 +1368,6 @@ fr-CA: merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux - overwrite_preambles: - blocking_html: Vous allez remplacer votre liste de blocages par jusqu'à %{total_items} comptes tirés de %{filename}. - bookmarks_html: Vous allez remplacer vos signets par jusqu'à %{total_items} posts tirés de %{filename}. - domain_blocking_html: Vous allez remplacer votre liste de blocages de domaines par jusqu'à %{total_items} domaines tirés de %{filename}. - following_html: Vous allez suivre jusqu’à %{total_items} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. - lists_html: Vous allez remplacer vos listes par le contenu de %{filename}. Jusqu'à %{total_items} comptes seront ajoutés à de nouvelles listes. - muting_html: Vous allez remplacer votre liste de comptes masqués par jusqu'à %{total_items} comptes tirés de %{filename}. - preambles: - blocking_html: Vous allez bloquer jusqu'à %{total_items} comptes tirés de %{filename}. - bookmarks_html: Vous allez ajouter jusqu'à %{total_items} messages de %{filename} à vos signets. - domain_blocking_html: Vous allez bloquer jusqu'à %{total_items} domaines tirés de %{filename}. - following_html: Vous allez suivre jusqu'à %{total_items} comptes tirés de %{filename}. - lists_html: Vous allez ajouter jusqu'à %{total_items} comptes depuis %{filename} à vos listes. De nouvelles listes seront créées s'il n'y a aucune liste à laquelle les ajouter. - muting_html: Vous allez masquer jusqu'à %{total_items} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. recent_imports: Importations récentes states: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index bc57d00e65..c3ce66c397 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1368,20 +1368,6 @@ fr: merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux - overwrite_preambles: - blocking_html: Vous allez remplacer votre liste de blocage par près de %{total_items} comptes tirés de %{filename}. - bookmarks_html: Vous allez remplacer vos signets par près de %{total_items} posts tirés de %{filename}. - domain_blocking_html: Vous allez remplacer votre liste de blocage de domaines par près de %{total_items} domaines tirés de %{filename}. - following_html: Vous allez suivre jusqu’à %{total_items} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. - lists_html: Vous allez remplacer vos listes par le contenu de %{filename}. Près de %{total_items} comptes seront ajoutés à de nouvelles listes. - muting_html: Vous allez remplacer votre liste de comptes masqués par près de %{total_items} comptes tirés de %{filename}. - preambles: - blocking_html: Vous allez bloquer près de %{total_items} comptes tirés de %{filename}. - bookmarks_html: Vous allez ajouter près de %{total_items} messages de %{filename} à vos signets. - domain_blocking_html: Vous allez bloquer près de %{total_items} domaines tirés de %{filename}. - following_html: Vous allez suivre près de %{total_items} comptes tirés de %{filename}. - lists_html: Vous allez ajouter près de %{total_items} comptes depuis %{filename} à vos listes. De nouvelles listes seront créées si besoin. - muting_html: Vous allez masquer près de %{total_items} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. recent_imports: Récents imports states: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 0379af34e9..d63d2ac2aa 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -24,6 +24,8 @@ fy: admin: account_actions: action: Aksje útfiere + already_silenced: Dizze account is al beheind. + already_suspended: Dizze account is al opskort. title: Moderaasjemaatregelen tsjin %{acct} nimme account_moderation_notes: create: Lit in opmerking efter @@ -45,6 +47,7 @@ fy: title: E-mailadres foar %{username} wizigje change_role: changed_msg: Rol mei sukses wizige! + edit_roles: Brûkersrollen beheare label: Rol wizigje no_role: Gjin rol title: Rol fan %{username} wizigje @@ -601,6 +604,7 @@ fy: suspend_description_html: De account en alle ynhâld sil net tagonklik wêze en úteinlik fuortsmiten wurde, en ynteraksje hjirmei sil net mooglik wêze. Binnen 30 dagen werom te draaien. Dit slút alle rapportaazjes oer dizze account. actions_description_html: Beslis hokker maatregel nommen wurde moat om dizze rapportaazje op te lossen. Wannear’t jo in (straf)maatregel tsjin it rapportearre account nimme, kriget de account in e-mailmelding, behalve wannear’t de spam-kategory keazen is. actions_description_remote_html: Beslút hokker aksje nommen wurde moat om dizze rapportaazje ôf te hanneljen. Dit hat allinnich ynfloed op hoe’t jo server kommunisearret mei dizze eksterne account en omgiet mei de ynhâld. + actions_no_posts: Dit rapport hat gjin byhearrende berjochten om fuort te smiten add_to_report: Mear oan de rapportaazje tafoegje already_suspended_badges: local: Al opskoarte op dizze server @@ -871,6 +875,9 @@ fy: message_html: Jo hawwe foar dizze server gjin regels opsteld. sidekiq_process_check: message_html: Der draait gjin Sidekiq-proses foar de wachtrige(n) %{value}. Kontrolearje jo Sidekiq-konfiguraasje + software_version_check: + action: Beskikbere fernijingen besjen + message_html: Der is in Mastodon-fernijing beskikber. software_version_critical_check: action: Beskikbere fernijingen besjen message_html: Der is in kritike fernijing foar Mastodon beskikber. Wurkje sa gau as mooglik by. @@ -1156,6 +1163,12 @@ fy: view_strikes: Besjoch de earder troch moderatoaren fêststelde skeiningen dy’t jo makke hawwe too_fast: Formulier is te fluch yntsjinne. Probearje it nochris. use_security_key: Befeiligingskaai brûke + author_attribution: + example_title: Faorbyldtekst + hint_html: Bepaal hoe’t wy jo fermelde, wannear’t jo keppelingen op Mastodon dield wurde. + more_from_html: Mear fan %{name} + s_blog: Weblog fan %{name} + title: Auteur-attribúsje challenge: confirm: Trochgean hint_html: "Tip: Wy freegje jo it kommende oere net mear nei jo wachtwurd." @@ -1353,19 +1366,43 @@ fy: overwrite: Oerskriuwe overwrite_long: Aktuele gegevens mei de nije gegevens ferfange overwrite_preambles: - blocking_html: Jo steane op it punt om jo blokkearlist mei mear as %{total_items} accounts fan %{filename} te ferfangen. - bookmarks_html: Jo steane op it punt om jo blêdwizers mei mear as %{total_items} artikelen fan %{filename} te ferfangen. - domain_blocking_html: Jo steane op it punt om jo domeinblokkearlist mei mear as %{total_items} domeinen fan %{filename} te ferfangen. - following_html: Jo steane op it punt om %{total_items} accounts út %{filename} te folgjen en te stopjen mei folgjen fan alle oaren. - lists_html: Jo steane op it punt jo listen te ferfangen troch ynhâld fan %{filename}. Oant %{total_items} accounts sille oan nije listen tafoege wurde. - muting_html: Jo steane op it punt om jo list mei negearre accounts mei mear as %{total_items} accounts fan %{filename} út te ferfangen. + blocking_html: + one: Jo steane op it punt om jo blokkearlist mei mear as %{count} account fan %{filename} te ferfangen. + other: Jo steane op it punt om jo blokkearlist mei mear as %{count} accounts fan %{filename} te ferfangen. + bookmarks_html: + one: Jo steane op it punt om jo blêdwizers mei mear as %{count} artikel fan %{filename} te ferfangen. + other: Jo steane op it punt om jo blêdwizers mei mear as %{count} artikelen fan %{filename} te ferfangen. + domain_blocking_html: + one: Jo steane op it punt om jo domeinblokkearlist mei mear as %{count} domein fan %{filename} te ferfangen. + other: Jo steane op it punt om jo domeinblokkearlist mei mear as %{count} domeinen fan %{filename} te ferfangen. + following_html: + one: Jo steane op it punt om %{count} account út %{filename} te folgjen en te stopjen mei folgjen fan alle oaren. + other: Jo steane op it punt om %{count} accounts út %{filename} te folgjen en te stopjen mei folgjen fan alle oaren. + lists_html: + one: Jo steane op it punt jo listen te ferfangen troch ynhâld fan %{filename}. Oant %{count} account sille oan nije listen tafoege wurde. + other: Jo steane op it punt jo listen te ferfangen troch ynhâld fan %{filename}. Oant %{count} accounts sille oan nije listen tafoege wurde. + muting_html: + one: Jo steane op it punt om jo list mei negearre accounts mei mear as %{count} account fan %{filename} út te ferfangen. + other: Jo steane op it punt om jo list mei negearre accounts mei mear as %{count} accounts fan %{filename} út te ferfangen. preambles: - blocking_html: Jo steane op it punt om %{total_items} accounts fan %{filename} út te blokkearjen. - bookmarks_html: Jo steane op it punt om %{total_items} berjochten fan %{filename} út oan jo blêdwizers ta te foegjen. - domain_blocking_html: Jo steane op it punt om %{total_items} domeinen fan %{filename} út te blokkearjen. - following_html: Jo steane op it punt om %{total_items} accounts fan %{filename} út te folgjen. - lists_html: Jo steane op it punt om oant %{total_items} accounts fan %{filename} ta te foegjen oan jo listen. Nije listen wurde oanmakke as der gjin list is om oan ta te foegjen. - muting_html: Jo steane op it punt om %{total_items} accounts fan %{filename} út te negearjen. + blocking_html: + one: Jo steane op it punt om %{count} account fan %{filename} út te blokkearjen. + other: Jo steane op it punt om %{count} accounts fan %{filename} út te blokkearjen. + bookmarks_html: + one: Jo steane op it punt om %{count} berjocht fan %{filename} út oan jo blêdwizers ta te foegjen. + other: Jo steane op it punt om %{count} berjochten fan %{filename} út oan jo blêdwizers ta te foegjen. + domain_blocking_html: + one: Jo steane op it punt om %{count} domein fan %{filename} út te blokkearjen. + other: Jo steane op it punt om %{count} domeinen fan %{filename} út te blokkearjen. + following_html: + one: Jo steane op it punt om %{count} account fan %{filename} út te folgjen. + other: Jo steane op it punt om %{count} accounts fan %{filename} út te folgjen. + lists_html: + one: Jo steane op it punt om oant %{count} account fan %{filename} ta te foegjen oan jo listen. Nije listen wurde oanmakke as der gjin list is om oan ta te foegjen. + other: Jo steane op it punt om oant %{count} accounts fan %{filename} ta te foegjen oan jo listen. Nije listen wurde oanmakke as der gjin list is om oan ta te foegjen. + muting_html: + one: Jo steane op it punt om %{count} account fan %{filename} út te negearjen. + other: Jo steane op it punt om %{count} accounts fan %{filename} út te negearjen. preface: Jo kinne bepaalde gegevens, lykas de minsken dy’t jo folgje of blokkearre hawwe, nei jo account op dizze server ymportearje. Jo moatte dizze gegevens wol earst op de oarspronklike server eksportearje. recent_imports: Resinte ymports states: @@ -1682,6 +1719,7 @@ fy: delete: Account fuortsmite development: Untwikkelers edit_profile: Profyl bewurkje + export: Eksportearje featured_tags: Utljochte hashtags import: Ymportearje import_and_export: Ymportearje en eksportearje @@ -1931,6 +1969,7 @@ fy: instructions_html: Kopiearje en plak de ûndersteande koade yn de HTML fan jo website. Foegje dernei it adres fan jo website ta oan ien fan de ekstra fjilden op jo profyl op it ljepblêd ‘Profyl bewurkje’ en bewarje de wizigingen. verification: Ferifikaasje verified_links: Jo ferifiearre keppelingen + website_verification: Website-ferifikaasje webauthn_credentials: add: Nije befeiligingskaai tafoegje create: diff --git a/config/locales/ga.yml b/config/locales/ga.yml index e25865903e..a201b73325 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1440,20 +1440,6 @@ ga: merge_long: Coinnigh taifid atá ann cheana féin agus cuir cinn nua leis overwrite: Forscríobh overwrite_long: Cuir na cinn nua in ionad na dtaifead reatha - overwrite_preambles: - blocking_html: Tá tú ar tí do liosta bloc a chur in ionad suas le %{total_items} cuntas ó %{filename}. - bookmarks_html: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{total_items} postáil ó %{filename}. - domain_blocking_html: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{total_items} fearainn ó %{filename}. - following_html: Tá tú ar tí leanúint suas go dtí %{total_items} cuntas ó %{filename} agus stop a leanúint aon duine eile. - lists_html: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{total_items} cuntas le liostaí nua. - muting_html: Tá tú ar tí do liosta cuntas balbhaithe a chur in ionad suas le %{total_items} cuntas ó %{filename}. - preambles: - blocking_html: Tá tú ar tí bloc suas le %{total_items} cuntas ó %{filename}. - bookmarks_html: Tá tú ar tí %{total_items} postáil ó %{filename} a chur le do leabharmharcanna. - domain_blocking_html: Tá tú ar tí bloc suas le %{total_items} fearainn ó %{filename}. - following_html: Tá tú ar tí leanúint suas go dtí %{total_items} cuntas ó %{filename}. - lists_html: Tá tú ar tí %{total_items} cuntas ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. - muting_html: Tá tú ar tí balbhú suas le %{total_items} cuntas ó %{filename}. preface: Is féidir leat sonraí a d’easpórtáil tú a allmhairiú ó fhreastalaí eile, mar shampla liosta de na daoine a bhfuil tú ag leanúint nó ag cur bac orthu. recent_imports: Allmhairí le déanaí states: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index a030b0d185..cb7c6254bc 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1415,20 +1415,6 @@ gd: merge_long: Cùm na reacordan a tha ann is cuir feadhainn ùr ris overwrite: Sgrìobh thairis air overwrite_long: Cuir na reacordan ùra an àite na feadhna a tha ann - overwrite_preambles: - blocking_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a chur an àite liosta nam bacaidhean agad. - bookmarks_html: Tha thu an impis suas ri %{total_items} post(aichean) o %{filename} a chur an àite nan comharra-lìn agad. - domain_blocking_html: Tha thu an impis suas ri %{total_items} àrainn(ean) o %{filename} a chur an àite liosta nam bacaidhean àrainne agad. - following_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a leantainn agus sguiridh tu a leantainn duine sam bith eile. - lists_html: Tha thu an impis susbaint %{filename} a chur an àite nan liostaichean agad. Thèid suas ri %{total_items}cunntas(an) a chur ri liostaichean ùra. - muting_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a chur an àite liosta nan cunntasan mùchte agad. - preambles: - blocking_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a bhacadh. - bookmarks_html: Tha thu an impis suas ri %{total_items} post(aichean) o %{filename} a chur ris na h-annsachdan agad. - domain_blocking_html: Tha thu an impis suas ri %{total_items} àrainn(ean) o %{filename} a bhacadh. - following_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a leantainn. - lists_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a chur ris na liostaichean agad. Thèid liostaichean ùra a chruthachadh mur eil liostaichean ann airson nan cunntasan a chur ris. - muting_html: Tha thu an impis suas ri %{total_items} cunntas(an) o %{filename} a mhùchadh. preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh." recent_imports: Ion-phortaidhean o chionn goirid states: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index e396761f7e..8460902a68 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1366,19 +1366,43 @@ gl: overwrite: Sobreescribir overwrite_long: Sustituír rexistros actuais cos novos overwrite_preambles: - blocking_html: Vas substituír a lista de bloqueos por %{total_items} contas desde %{filename}. - bookmarks_html: Vas substituír os marcadores por %{total_items} publicacións desde %{filename}. - domain_blocking_html: Vas substituír a lista de dominios bloqueados por %{total_items} dominios desde %{filename}. - following_html: Vas seguir estas %{total_items} contas desde %{filename} e deixar de seguir a todas as outras contas. - lists_html: Vas substituír as túas listas co contido de %{filename}. Vanse engadir %{total_items} contas ás novas listas. - muting_html: Vas substituír a lista de contas acaladas por %{total_items} contas desde %{filename}. + blocking_html: + one: Vas substituír a lista de bloqueos por %{count} conta desde %{filename}. + other: Vas substituír a lista de bloqueos por %{count} contas desde %{filename}. + bookmarks_html: + one: Vas substituír os marcadores por %{count} publicación desde %{filename}. + other: Vas substituír os marcadores por %{count} publicacións desde %{filename}. + domain_blocking_html: + one: Vas substituír a lista de dominios bloqueados por %{count} dominio desde %{filename}. + other: Vas substituír a lista de dominios bloqueados por %{count} dominios desde %{filename}. + following_html: + one: Vas seguir a %{count} conta desde %{filename} e deixar de seguir a todas as outras contas. + other: Vas seguir a %{count} contas desde %{filename} e deixar de seguir a todas as outras contas. + lists_html: + one: Vas substituír as túas listas co contido de %{filename}. Vaise engadir %{count} conta ás novas listas. + other: Vas substituír as túas listas co contido de %{filename}. Vanse engadir %{count} contas ás novas listas. + muting_html: + one: Vas substituír a lista de contas acaladas por %{count} conta desde %{filename}. + other: Vas substituír a lista de contas acaladas por %{count} contas desde %{filename}. preambles: - blocking_html: Vas bloquear estas %{total_items} contas desde %{filename}. - bookmarks_html: Vas engadir %{total_items} publicacións desde %{filename} aos teus marcadores. - domain_blocking_html: Vas bloquear estes %{total_items} dominios desde %{filename}. - following_html: Vas seguir estas %{total_items} contas desde %{filename}. - lists_html: Vas engadir %{total_items} contas desde %{filename} ás túas listas. Crearánse novas listas se non hai listas ás que engadilas. - muting_html: Vas acalar estas %{total_items} contas desde %{filename}. + blocking_html: + one: Vas bloquear a %{count} conta desde %{filename}. + other: Vas bloquear a %{count} contas desde %{filename}. + bookmarks_html: + one: Vas engadir %{count} publicación desde %{filename} aos teus marcadores. + other: Vas engadir %{count} publicacións desde %{filename} aos teus marcadores. + domain_blocking_html: + one: Vas bloquear a %{count} dominio desde %{filename}. + other: Vas bloquear a %{count} dominios desde %{filename}. + following_html: + one: Vas seguir a %{count} conta desde %{filename}. + other: Vas seguir a %{count} contas desde %{filename}. + lists_html: + one: Vas engadir %{count} conta desde %{filename} ás túas listas. Crearánse novas listas se non hai listas ás que engadilas. + other: Vas engadir %{count} contas desde %{filename} ás túas listas. Crearánse novas listas se non hai listas ás que engadilas. + muting_html: + one: Vas acalar a %{count} conta desde %{filename}. + other: Vas acalar a %{count} contas desde %{filename}. preface: Podes importar os datos que exportaches doutro servidor, tales como a lista de usuarias que estás a seguir ou bloquear. recent_imports: Importacións recentes states: diff --git a/config/locales/he.yml b/config/locales/he.yml index 846b0d14af..f2732678b5 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1416,19 +1416,67 @@ he: overwrite: דריסה overwrite_long: החלף רשומות נוכחיות בחדשות overwrite_preambles: - blocking_html: אתם עומדים להחליף את רשימת החסימות עד כדי %{total_items} חשבונות מהקובץ %{filename}. - bookmarks_html: אתם עומדים להחליף את רשימת הסימניות עד כדי %{total_items} הודעות מהקובץ %{filename}. - domain_blocking_html: אתם עומדים להחליף את רשימת חסימות השרתים עד כדי %{total_items} שרתים מהקובץ %{filename}. - following_html: אתם עומדים לעקוב עד כדי %{total_items} חשבונות מהקובץ %{filename} ובמקביל להפסיק מעקב אחרי כל משתמש אחר. - lists_html: הפעולה הבאה תחליף את רשימותיך בתוכן של %{filename}. עד %{total_items} חשבונות יתווספו לרשימות חדשות. - muting_html: אתם עומדים להחליף את רשימת ההשתקות עד כדי %{total_items} חשבונות מהקובץ %{filename}. + blocking_html: + many: אתם עומדים להחליף את רשימת החסימות עד כדי %{count} חשבונות מהקובץ %{filename}. + one: אתם עומדים להחליף את רשימת החסימות %{count} בחשבון אחד מהקובץ %{filename}. + other: אתם עומדים להחליף את רשימת החסימות עד כדי %{count} חשבונות מהקובץ %{filename}. + two: אתם עומדים להחליף את רשימת החסימות בעד שני חשבונות מהקובץ %{filename}. + bookmarks_html: + many: אתם עומדים להחליף את רשימת הסימניות עד כדי %{count} הודעות מהקובץ %{filename}. + one: אתם עומדים להחליף את רשימת הסימניות בהודעה אחת מהקובץ %{filename}. + other: אתם עומדים להחליף את רשימת הסימניות עד כדי %{count} הודעות מהקובץ %{filename}. + two: אתם עומדים להחליף את רשימת הסימניות עד כדי שתי הודעות מהקובץ %{filename}. + domain_blocking_html: + many: אתם עומדים להחליף את רשימת חסימות השרתים עד כדי %{count} שרתים מהקובץ %{filename}. + one: אתם עומדים להחליף את רשימת חסימות השרתים בשרת אחד מהקובץ %{filename}. + other: אתם עומדים להחליף את רשימת חסימות השרתים עד כדי %{count} שרתים מהקובץ %{filename}. + two: אתם עומדים להחליף את רשימת חסימות השרתים עד כדי שני שרתים מהקובץ %{filename}. + following_html: + many: אתם עומדים לעקוב אחרי עד כדי %{count} חשבונות מהקובץ %{filename} ובמקביל להפסיק מעקב אחרי כל משתמש אחר. + one: אתם עומדים לעקוב אחרי חשבון אחד מהקובץ %{filename} ובמקביל להפסיק מעקב אחרי כל משתמש אחר. + other: אתם עומדים לעקוב אחרי עד כדי %{count} חשבונות מהקובץ %{filename} ובמקביל להפסיק מעקב אחרי כל משתמש אחר. + two: אתם עומדים לעקוב אחרי עד כדי שני חשבונות מהקובץ %{filename} ובמקביל להפסיק מעקב אחרי כל משתמש אחר. + lists_html: + many: הפעולה הבאה תחליף את רשימותיך בתוכן של %{filename}. עד %{count} חשבונות יתווספו לרשימות חדשות. + one: הפעולה הבאה תחליף את רשימותיך בתוכן של %{filename}. עד חשבון אחד יתווסף לרשימות חדשות. + other: הפעולה הבאה תחליף את רשימותיך בתוכן של %{filename}. עד %{count} חשבונות יתווספו לרשימות חדשות. + two: הפעולה הבאה תחליף את רשימותיך בתוכן של %{filename}. עד שני חשבונות יתווספו לרשימות חדשות. + muting_html: + many: אתם עומדים להחליף את רשימת ההשתקות בעד כדי %{count} חשבונות מהקובץ %{filename}. + one: אתם עומדים להחליף את רשימת ההשתקות בחשבון אחד מהקובץ %{filename}. + other: אתם עומדים להחליף את רשימת ההשתקות בעד כדי %{count} חשבונות מהקובץ %{filename}. + two: אתם עומדים להחליף את רשימת ההשתקות בעד כדי שני חשבונות מהקובץ %{filename}. preambles: - blocking_html: אתם עומדים לחסום עד %{total_items} חשבונות מהקובץ %{filename}. - bookmarks_html: אתם עומדים להוסיף עד %{total_items} הודעות מהקובץ %{filename} לרשימת הסימניות שלכם. - domain_blocking_html: אתם עומדים לחסום עד כדי %{total_items} שרתים מהקובץ %{filename}. - following_html: אתם עומדים לעקוב אחרי עד %{total_items} חשבונות מהקובץ %{filename}. - lists_html: הפעולה הבאה תוסיף עד %{total_items} חשבונות מהקובץ %{filename} אל הרשימות שלך. רשימות חדשות יווצרו אם עוד לא קיימת רשימה להוסיף אליה. - muting_html: אתם עומדים להשתיק עד %{total_items} חשבונות מהקובץ %{filename}. + blocking_html: + many: אתם עומדים לחסום עד %{count} חשבונות מהקובץ %{filename}. + one: אתם עומדים לחסוםחשבון אחד מהקובץ %{filename}. + other: אתם עומדים לחסום עד %{count} חשבונות מהקובץ %{filename}. + two: אתם עומדים לחסום עד שני חשבונות מהקובץ %{filename}. + bookmarks_html: + many: אתם עומדים להוסיף עד %{count} הודעות מהקובץ %{filename} לרשימת הסימניות שלכם. + one: אתם עומדים להוסיףהודעה אחת מהקובץ %{filename} לרשימת הסימניות שלכם. + other: אתם עומדים להוסיף עד %{count} הודעות מהקובץ %{filename} לרשימת הסימניות שלכם. + two: אתם עומדים להוסיף עד שתי הודעות מהקובץ %{filename} לרשימת הסימניות שלכם. + domain_blocking_html: + many: אתם עומדים לחסום עד כדי %{count} שרתים מהקובץ %{filename}. + one: אתם עומדים לחסום עד שרת אחד מהקובץ %{filename}. + other: אתם עומדים לחסום עד כדי %{count} שרתים מהקובץ %{filename}. + two: אתם עומדים לחסום עד כדי שני שרתים מהקובץ %{filename}. + following_html: + many: אתם עומדים לעקוב אחרי עד %{count} חשבונות מהקובץ %{filename}. + one: אתם עומדים לעקוב אחרי עד חשבון אחד מהקובץ %{filename}. + other: אתם עומדים לעקוב אחרי עד %{count} חשבונות מהקובץ %{filename}. + two: אתם עומדים לעקוב אחרי עד שני חשבונות מהקובץ %{filename}. + lists_html: + many: הפעולה הבאה תוסיף עד %{count} חשבונות מהקובץ %{filename} אל הרשימות שלך. רשימות חדשות יווצרו אם עוד לא קיימת רשימה להוסיף אליה. + one: הפעולה הבאה תוסיף עד חשבון אחד מהקובץ %{filename} אל הרשימות שלך. רשימות חדשות יווצרו אם עוד לא קיימת רשימה להוסיף אליה. + other: הפעולה הבאה תוסיף עד %{count} חשבונות מהקובץ %{filename} אל הרשימות שלך. רשימות חדשות יווצרו אם עוד לא קיימת רשימה להוסיף אליה. + two: הפעולה הבאה תוסיף עד שני חשבונות מהקובץ %{filename} אל הרשימות שלך. רשימות חדשות יווצרו אם עוד לא קיימת רשימה להוסיף אליה. + muting_html: + many: אתם עומדים להשתיק עד %{count} חשבונות מהקובץ %{filename}. + one: אתם עומדים להשתיק עד חשבון אחד מהקובץ %{filename}. + other: אתם עומדים להשתיק עד %{count} חשבונות מהקובץ %{filename}. + two: אתם עומדים להשתיק עד שני חשבונות מהקובץ %{filename}. preface: ניתן ליבא מידע מסויים כגון כל הנעקבים או המשתמשים החסומים לתוך חשבונך על שרת זה, מתוך קבצים שנוצרו על ידי יצוא משרת אחר כגון רשימת הנעקבים והחסומים שלך. recent_imports: ייבואים אחרונים states: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 5a00db9548..15c632adc9 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1366,19 +1366,43 @@ hu: overwrite: Felülírás overwrite_long: Lecseréljük újakkal a jelenlegi bejegyzéseket overwrite_preambles: - blocking_html: 'Arra készülsz, hogy lecseréld a letiltási listát legfeljebb %{total_items} fiókra a következőből: %{filename}.' - bookmarks_html: 'Arra készülsz, hogy lecseréld a könyvjelzőket legfeljebb %{total_items} bejegyzésre a következőből: %{filename}.' - domain_blocking_html: 'Arra készülsz, hogy lecseréld a domain letiltási listát legfeljebb %{total_items} domainre a következőből: %{filename}.' - following_html: 'Arra készülsz, hogy legfeljebb %{total_items} fiókot kövess a következőből: %{filename}, és abbahagyd mindenki más követését.' - lists_html: Arra készülsz, hogy a listákat lecseréld a %{filename} tartalmával. Legfeljebb %{total_items} fiók kerül fel az új listákra. - muting_html: 'Arra készülsz, hogy lecseréld a némított fiókok listáját legfeljebb %{total_items} fiókra a következőből: %{filename}.' + blocking_html: + one: 'Arra készülsz, hogy lecseréld a letiltási listát legfeljebb %{count} fiókra a következőből: %{filename}.' + other: 'Arra készülsz, hogy lecseréld a letiltási listát legfeljebb %{count} fiókra a következőből: %{filename}.' + bookmarks_html: + one: 'Arra készülsz, hogy lecseréld a könyvjelzőket legfeljebb %{count} bejegyzésre a következőből: %{filename}.' + other: 'Arra készülsz, hogy lecseréld a könyvjelzőket legfeljebb %{count} bejegyzésre a következőből: %{filename}.' + domain_blocking_html: + one: 'Arra készülsz, hogy lecseréld a domain letiltási listát legfeljebb %{count} domainre a következőből: %{filename}.' + other: 'Arra készülsz, hogy lecseréld a domain letiltási listát legfeljebb %{count} domainre a következőből: %{filename}.' + following_html: + one: 'Arra készülsz, hogy legfeljebb %{count} fiókot kövess a következőből: %{filename}, és abbahagyd mindenki más követését.' + other: 'Arra készülsz, hogy legfeljebb %{count} fiókot kövess a következőből: %{filename}, és abbahagyd mindenki más követését.' + lists_html: + one: Arra készülsz, hogy a listákat lecseréld a %{filename} tartalmával. Legfeljebb %{count} fiók kerül fel az új listákra. + other: Arra készülsz, hogy a listákat lecseréld a %{filename} tartalmával. Legfeljebb %{count} fiók kerül fel az új listákra. + muting_html: + one: 'Arra készülsz, hogy lecseréld a némított fiókok listáját legfeljebb %{count} fiókra a következőből: %{filename}.' + other: 'Arra készülsz, hogy lecseréld a némított fiókok listáját legfeljebb %{count} fiókra a következőből: %{filename}.' preambles: - blocking_html: 'Arra készülsz, hogy legfeljebb %{total_items} fiókot letilts a következőből: %{filename}.' - bookmarks_html: 'Arra készülsz, hogy legfeljebb %{total_items} bejegyzést adj hozzá a könyvjelzőkhöz a következőből: %{filename}.' - domain_blocking_html: 'Arra készülsz, hogy legfeljebb %{total_items} domaint letilts a következőből: %{filename}.' - following_html: 'Arra készülsz, hogy legfeljebb %{total_items} fiókot kövess a következőből: %{filename}.' - lists_html: Arra készülsz, hogy legfeljebb %{total_items} fiókot hozzáadj a %{filename} fájlból a listákhoz. Új listák jönnek létre, ha nincs hozzáadható lista. - muting_html: 'Arra készülsz, hogy legfeljebb %{total_items} fiókot némíts a következőből: %{filename}.' + blocking_html: + one: 'Arra készülsz, hogy legfeljebb %{count} fiókot letilts a következőből: %{filename}.' + other: 'Arra készülsz, hogy legfeljebb %{count} fiókot letilts a következőből: %{filename}.' + bookmarks_html: + one: 'Arra készülsz, hogy legfeljebb %{count} bejegyzést adj hozzá a könyvjelzőkhöz a következőből: %{filename}.' + other: 'Arra készülsz, hogy legfeljebb %{count} bejegyzést adj hozzá a könyvjelzőkhöz a következőből: %{filename}.' + domain_blocking_html: + one: 'Arra készülsz, hogy legfeljebb %{count} domaint letilts a következőből: %{filename}.' + other: 'Arra készülsz, hogy legfeljebb %{count} domaint letilts a következőből: %{filename}.' + following_html: + one: 'Arra készülsz, hogy legfeljebb %{count} fiókot kövess a következőből: %{filename}.' + other: 'Arra készülsz, hogy legfeljebb %{count} fiókot kövess a következőből: %{filename}.' + lists_html: + one: Arra készülsz, hogy legfeljebb %{count} fiókot hozzáadj a %{filename} fájlból a listákhoz. Új listák jönnek létre, ha nincs hozzáadható lista. + other: Arra készülsz, hogy legfeljebb %{count} fiókot hozzáadj a %{filename} fájlból a listákhoz. Új listák jönnek létre, ha nincs hozzáadható lista. + muting_html: + one: 'Arra készülsz, hogy legfeljebb %{count} fiókot némíts a következőből: %{filename}.' + other: 'Arra készülsz, hogy legfeljebb %{count} fiókot némíts a következőből: %{filename}.' preface: Itt importálhatod egy másik kiszolgálóról lementett adataidat, például követettjeid és letiltott felhasználóid listáját. recent_imports: Legutóbbi importálások states: diff --git a/config/locales/ia.yml b/config/locales/ia.yml index a8bc48b306..4d9148674d 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -1346,20 +1346,6 @@ ia: merge_long: Conservar le registros existente e adder noves overwrite: Superscriber overwrite_long: Reimplaciar registros actual con le noves - overwrite_preambles: - blocking_html: Tu es sur le puncto de reimplaciar tu lista de blocadas per usque a %{total_items} contos proveniente de %{filename}. - bookmarks_html: Tu es sur le puncto de reimplaciar tu marcapaginas per usque a %{total_items} messages desde %{filename}. - domain_blocking_html: Tu es sur le puncto de reimplaciar tu lista de blocadas de dominio per usque a %{total_items} dominios proveniente de %{filename}. - following_html: Tu es sur le puncto de sequer usque a %{total_items} contos de %{filename} e cessar de sequer tote le alteres. - lists_html: Tu es sur le puncto de reimplaciar tu listas per le contento de %{filename}. Usque a %{total_items} contos essera addite a nove listas. - muting_html: Tu es sur le puncto de reimplaciar tu lista de contos silentiate con usque a %{total_items} contos desde %{filename}. - preambles: - blocking_html: Tu es sur le puncto de blocar usque a %{total_items} contos a partir de %{filename}. - bookmarks_html: Tu es sur le puncto de adder usque a %{total_items} messages desde %{filename} a tu marcapaginas. - domain_blocking_html: Tu es sur le puncto de blocar usque a %{total_items} dominios a partir de %{filename}. - following_html: Tu es sur le puncto de sequer usque a %{total_items} contos desde %{filename}. - lists_html: Tu es sur le puncto de adder usque %{total_items} contos desde %{filename} a tu listas. Nove listas essera create si il non ha un lista al qual adder los. - muting_html: Tu es sur le puncto de silentiar usque a %{total_items} contos desde %{filename}. preface: Tu pote importar datos que tu ha exportate de un altere servitor, como un lista de personas que tu seque o bloca. recent_imports: Importationes recente states: diff --git a/config/locales/ie.yml b/config/locales/ie.yml index 7e8140a374..94c4b7f4f0 100644 --- a/config/locales/ie.yml +++ b/config/locales/ie.yml @@ -1274,20 +1274,6 @@ ie: merge_long: Conservar existent registres e adjunter li novis overwrite: Remplazzar overwrite_long: Remplazzar existent registres per li novis - overwrite_preambles: - blocking_html: Tu va remplazzar tui liste de bloccat contos per til %{total_items} contos de %{filename}. - bookmarks_html: Tu va remplazzar tui marcatores per til %{total_items} postas de %{filename}. - domain_blocking_html: Tu va remplazzar tui liste de bloccat dominias per til %{total_items} dominias de %{filename}. - following_html: Tu va sequer til %{total_items} contos de %{filename} e dessequer omni altri contos. - lists_html: Tu va remplazzar tui listes per li contenete de %{filename}. Til %{total_items} contos va esser adjuntet a nov listes. - muting_html: Tu va remplazzar tui liste de silentiat contos per til %{total_items} contos de %{filename}. - preambles: - blocking_html: Tu va bloccar til %{total_items} contos de %{filename}. - bookmarks_html: Tu va adjunter til %{total_items} postas de %{filename} a tui marcatores. - domain_blocking_html: Tu va bloccar til %{total_items} dominias de %{filename}. - following_html: Tu va sequer til %{total_items} contos de %{filename}. - lists_html: Tu va adjunter til %{total_items} contos de %{filename} a tui listes. Nov listes va esser creat si ne hay un liste a quel adjunter. - muting_html: Tu va silentiar til %{total_items} contos de %{filename}. preface: Tu posse importar data quel tu ha exportat de un altri servitor, quam un liste del gente quem tu seque o blocca. recent_imports: Recent importationes states: diff --git a/config/locales/io.yml b/config/locales/io.yml index dfb583450a..8ce5f3403b 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -1247,20 +1247,6 @@ io: merge_long: Retenez displonebla rekordi e insertez novi overwrite: Remplasez overwrite_long: Remplasez nuna rekordi per novi - overwrite_preambles: - blocking_html: Vu substitucos vua blokusolisto per til %{total_items} konti de %{filename}. - bookmarks_html: Vu substitucos vua libromarki per til %{total_items} posti de %{filename}. - domain_blocking_html: Vu substitucos vua domenoblokusolisto per til %{total_items} domeni de %{filename}. - following_html: Vu sequos til %{total_items} konti de %{filename} e haltar sequar irga altra konto. - lists_html: Vu substitucos vua listi kun la kontenaji di %{filename}. Til %{total_items} konti adjuntesos a nova listi. - muting_html: Vu substitucos vua listo di konti silencigita per til %{total_items} konti de %{filename}. - preambles: - blocking_html: Vu blokusos til %{total_items} konti de %{filename}. - bookmarks_html: Vu adjuntos %{total_items} posti de %{filename} a vua libromarki. - domain_blocking_html: Vu blokusos til %{total_items} domeni de %{filename}. - following_html: Vu sequos til %{total_items} konti de %{filename}. - lists_html: Vu adjuntos til %{total_items} konti de %{filename} a vua listi. Nova listi kreesos se ne existas listo a quo adjuntar. - muting_html: Vu silencigos til %{total_items} konti en %{filename}. preface: Tu povas importacar kelka datumi, tal quala listi de omna homi quin tu sequas o blokusas, a tua konto di ca instaluro, per dosiero exportacita de altra instaluro. recent_imports: Importacaji recenta states: diff --git a/config/locales/is.yml b/config/locales/is.yml index 4af26eea0b..6eefaf1b0e 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -877,6 +877,9 @@ is: message_html: Þú hefur ekki skilgreint neinar reglur fyrir netþjón. sidekiq_process_check: message_html: Ekkert Sidekiq-ferli er í gangi fyrir %{value} biðröð/biðraðir. Endilega athugaðu Sidekiq-uppsetninguna þína + software_version_check: + action: Skoða tiltækar uppfærslur + message_html: Uppfærsla er tiltæk fyrir Mastodon. software_version_critical_check: action: Skoða tiltækar uppfærslur message_html: Áríðandi uppfærsla Mastodon er tiltæk, uppfærðu eins fljótt og auðið er. @@ -1366,20 +1369,6 @@ is: merge_long: Halda fyrirliggjandi færslum og bæta við nýjum overwrite: Skrifa yfir overwrite_long: Skipta út fyrirliggjandi færslum með þeim nýju - overwrite_preambles: - blocking_html: Þú er í þann mund að fara að skipta út útilokanalistanum þínum með allt að %{total_items} aðgöngum úr %{filename}. - bookmarks_html: Þú er í þann mund að fara að skipta út bókamerkjunum þínum með allt að %{total_items} færslum úr %{filename}. - domain_blocking_html: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokuð lén með allt að %{total_items} lénum úr %{filename}. - following_html: Þú er í þann mund að fara að fylgjast með allt að %{total_items} aðgöngum úr %{filename} og hætta að fylgjast með öllum öðrum. - lists_html: Þú ert í þann mund að fara að skipta út listunum þínum með efninu úr %{filename}. Allt að %{total_items} aðgöngum verður bætt við nýju listana. - muting_html: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokaða aðganga með allt að %{total_items} aðgöngum úr %{filename}. - preambles: - blocking_html: Þú er í þann mund að fara að útiloka allt að %{total_items} aðganga úr %{filename}. - bookmarks_html: Þú er í þann mund að fara að bæta við allt að %{total_items} færslum úr %{filename} við bókamerkin þín. - domain_blocking_html: Þú er í þann mund að fara að útiloka allt að %{total_items} lén úr %{filename}. - following_html: Þú er í þann mund að fara að fylgjast með allt að %{total_items} aðgöngum úr %{filename}. - lists_html: Þú ert í þann mund að fara að bæta við allt að %{total_items} aðgöngum úr %{filename} við listana þína. Nýir listar verða útbúnir ef ekki finnst neinn listi til að bæta í. - muting_html: Þú er í þann mund að fara að þagga allt að %{total_items} aðganga úr %{filename}. preface: Þú getur flutt inn gögn sem þú hefur flutt út frá öðrum vefþjóni, svo sem lista yfir fólk sem þú fylgist með eða útilokar. recent_imports: Nýlega flutt inn states: @@ -1696,6 +1685,7 @@ is: delete: Eyðing notandaaðgangs development: Þróun edit_profile: Breyta notandasniði + export: Flytja út featured_tags: Myllumerki með aukið vægi import: Flytja inn import_and_export: Inn- og útflutningur diff --git a/config/locales/it.yml b/config/locales/it.yml index a89fa0a53e..91b67c2b4d 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1368,19 +1368,43 @@ it: overwrite: Sovrascrivi overwrite_long: Sostituisci record attuali con quelli nuovi overwrite_preambles: - blocking_html: Stai per sostituire la tua lista di blocchi con un massimo di %{total_items} account da %{filename}. - bookmarks_html: Stai per sostituire i tuoi segnalibri con un massimo di %{total_items} post da %{filename}. - domain_blocking_html: Stai per sostituire la tua lista di domini bloccati con un massimo di %{total_items} domini da %{filename}. - following_html: Stai per seguire fino a %{total_items} account da %{filename} e smettere di seguire chiunque altro. - lists_html: Stai per sostituire le tue liste con i contenuti di %{filename}. Fino a %{total_items} profili verranno aggiunti a nuove liste. - muting_html: Stai per sostituire la tua lista di account silenziati con un massimo di %{total_items} account da %{filename}. + blocking_html: + one: Stai per sostituire la tua lista di blocchi con %{count} account da %{filename}. + other: Stai per sostituire la tua lista di blocchi con %{count} account da %{filename}. + bookmarks_html: + one: Stai per sostituire i tuoi segnalibri con %{count} post da %{filename}. + other: Stai per sostituire i tuoi segnalibri con %{count} post da %{filename}. + domain_blocking_html: + one: Stai per sostituire la tua lista di domini bloccati con %{count} dominio da %{filename}. + other: Stai per sostituire la tua lista di domini bloccati con %{count} domini da %{filename}. + following_html: + one: Stai per seguire %{count} account da %{filename} e smettere di seguire chiunque altro. + other: Stai per seguire %{count} account da %{filename} e smettere di seguire chiunque altro. + lists_html: + one: Stai per sostituire le tue liste con il contenuto di %{filename}. Verrà aggiunto %{count} account alle nuove liste. + other: Stai per sostituire le tue liste con il contenuto di %{filename}. Verranno aggiunti %{count} account alle nuove liste. + muting_html: + one: Stai per sostituire la lista degli account silenziati con %{count} account da %{filename}. + other: Stai per sostituire la lista degli account silenziati con %{count} account da %{filename}. preambles: - blocking_html: Stai per bloccare fino a %{total_items} account da %{filename}. - bookmarks_html: Stai per aggiungere fino a %{total_items} post da %{filename} ai tuoi segnalibri. - domain_blocking_html: Stai per bloccare fino a %{total_items} domini da %{filename}. - following_html: Stai per seguire fino a %{total_items} account da %{filename}. - lists_html: Stai per aggiungere fino a %{total_items} profili da %{filename} alla tue liste. Le nuove liste saranno create se non c'è una lista a cui aggiungere. - muting_html: Stai per silenziare fino a %{total_items} account da %{filename}. + blocking_html: + one: Stai per bloccare %{count} account da %{filename}. + other: Stai per bloccare %{count} account da %{filename}. + bookmarks_html: + one: Stai per aggiungere %{count} post da %{filename} ai tuoi segnalibri. + other: Stai per aggiungere %{count} post da %{filename} ai tuoi segnalibri. + domain_blocking_html: + one: Stai per bloccare %{count} dominio da %{filename}. + other: Stai per bloccare %{count} domini da %{filename}. + following_html: + one: Stai per seguire %{count} account da %{filename}. + other: Stai per seguire %{count} account da %{filename}. + lists_html: + one: Stai per aggiungere %{count} account da %{filename} alle tue liste. Saranno create nuove liste, se non ce ne sono altre da aggiungere. + other: Stai per aggiungere %{count} account da %{filename} alle tue liste. Saranno create nuove liste, se non ce ne sono altre da aggiungere. + muting_html: + one: Stai per silenziare %{count} account da %{filename}. + other: Stai per silenziare %{count} account da %{filename}. preface: Puoi importare alcune informazioni, come le persone che segui o hai bloccato su questo server, da file creati da un'esportazione su un altro server. recent_imports: Importazioni recenti states: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 41f93397da..54b7fb5412 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1141,6 +1141,9 @@ ja: view_strikes: 過去のストライクを表示 too_fast: フォームの送信が速すぎます。もう一度やり直してください。 use_security_key: セキュリティキーを使用 + author_attribution: + example_title: サンプルテキスト + s_blog: "%{name} のブログ" challenge: confirm: 続ける hint_html: 以後1時間はパスワードの再入力を求めません @@ -1330,20 +1333,6 @@ ja: merge_long: 現在のレコードを保持したまま新しいものを追加します overwrite: 上書き overwrite_long: 現在のレコードを新しいもので置き換えます - overwrite_preambles: - blocking_html: "%{filename}%{total_items}個のアカウントブロックしたアカウントリストを置き換えます。" - bookmarks_html: "%{filename}%{total_items}件の投稿ブックマークの一覧を置き換えます。" - domain_blocking_html: "%{filename}%{total_items}個のドメイン非表示にしたドメインリストを置き換えます。" - following_html: "%{filename}%{total_items}個のアカウントフォローします。また、この中に含まれていないアカウントのフォローを解除します。" - lists_html: "作成済みのリスト%{filename}の内容で置き換えます%{total_items}個のアカウントが新しいリストに追加されます。" - muting_html: "%{filename}%{total_items}個のアカウントミュートしたアカウントリストを置き換えます。" - preambles: - blocking_html: "%{filename}%{total_items}個のアカウントブロックします。" - bookmarks_html: "%{filename}%{total_items}件の投稿ブックマークに追加します。" - domain_blocking_html: "%{filename}%{total_items}個のドメイン非表示にします。" - following_html: "%{filename}%{total_items}個のアカウントフォローします。" - lists_html: "%{filename}%{total_items}個のアカウントリストに追加します。追加先のリストがない場合は新しく作成されます。" - muting_html: "%{filename}%{total_items}個のアカウントミュートします。" preface: 他のサーバーでエクスポートされたファイルから、フォロー/ブロックした情報をこのサーバー上のアカウントにインポートできます。 recent_imports: 最近のインポート states: @@ -1659,6 +1648,7 @@ ja: delete: アカウントの削除 development: 開発 edit_profile: プロフィールを編集 + export: エクスポート featured_tags: 注目のハッシュタグ import: データのインポート import_and_export: インポート・エクスポート @@ -1903,6 +1893,7 @@ ja: instructions_html: 以下のコードをコピーしてwebサイトのHTMLに貼り付けます。次に「プロフィールを編集」タブから、「プロフィール補足情報」のいずれかの欄にwebサイトのURLを記入し、「変更を保存」をクリックしてください。 verification: 認証 verified_links: 確認済みリンク + website_verification: ウェブサイトの認証 webauthn_credentials: add: セキュリティキーを追加 create: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3f6c4b39b8..d20d67e4c3 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1343,19 +1343,31 @@ ko: overwrite: 덮어쓰기 overwrite_long: 기존 것을 모두 지우고 새로 추가 overwrite_preambles: - blocking_html: 나의 차단 목록%{filename}에서 가져온 %{total_items} 개의 계정으로 덮어 씌우려고 합니다. - bookmarks_html: 나의 북마크%{filename}에서 가져온 %{total_items} 개의 게시물로 덮어 씌우려고 합니다. - domain_blocking_html: 나의 도메인 차단 목록%{filename}에서 가져온 %{total_items} 개의 도메인으로 덮어 씌우려고 합니다. - following_html: "%{filename}에서 가져온 %{total_items} 개의 계정팔로우하고 나머지 계정을 팔로우 해제하려고 합니다." - lists_html: 나의 리스트%{filename}에서 가져온 %{total_items} 개의 계정으로 덮어 씌우려고 합니다. - muting_html: 나의 뮤트한 계정 목록%{filename}에서 가져온 %{total_items} 개의 계정으로 덮어 씌우려고 합니다. + blocking_html: + other: 나의 차단 목록%{filename}에서 가져온 %{count} 개의 계정으로 덮어 씌우려고 합니다. + bookmarks_html: + other: 나의 북마크%{filename}에서 가져온 %{count} 개의 게시물로 덮어 씌우려고 합니다. + domain_blocking_html: + other: 나의 도메인 차단 목록%{filename}에서 가져온 %{count} 개의 도메인으로 덮어 씌우려고 합니다. + following_html: + other: "%{filename}에서 가져온 %{count} 개의 계정팔로우하고 나머지 계정을 팔로우 해제하려고 합니다." + lists_html: + other: 나의 리스트%{filename}에서 가져온 %{count} 개의 계정으로 덮어 씌우려고 합니다. + muting_html: + other: 나의 뮤트한 계정 목록%{filename}에서 가져온 %{count} 개의 계정으로 덮어 씌우려고 합니다. preambles: - blocking_html: "%{filename}에서 가져온 %{total_items}개의 계정을 차단하려고 합니다." - bookmarks_html: "%{filename}에서 가져온 %{total_items}개의 게시물을 북마크에 추가하려고 합니다." - domain_blocking_html: "%{filename}에서 가져온 %{total_items}개의 도메인을 차단하려고 합니다." - following_html: "%{filename}에서 가져온 %{total_items}개의 계정을 팔로우하려고 합니다." - lists_html: "%{filename}에서 가져온 %{total_items}개의 계정을 내 리스트에 추가하려고 합니다. 추가할 리스트가 존재하지 않으면 새로 생성될 것입니다." - muting_html: "%{filename}에서 가져온 %{total_items}개의 계정을 뮤트하려고 합니다." + blocking_html: + other: "%{filename}에서 가져온 %{count}개의 계정을 차단하려고 합니다." + bookmarks_html: + other: "%{filename}에서 가져온 %{count}개의 게시물을 북마크에 추가하려고 합니다." + domain_blocking_html: + other: "%{filename}에서 가져온 %{count}개의 도메인을 차단하려고 합니다." + following_html: + other: "%{filename}에서 가져온 %{count}개의 계정을 팔로우하려고 합니다." + lists_html: + other: "%{filename}에서 가져온 %{count}개의 계정을 내 리스트에 추가하려고 합니다. 추가할 리스트가 존재하지 않으면 새로 생성될 것입니다." + muting_html: + other: "%{filename}에서 가져온 %{count}개의 계정을 뮤트하려고 합니다." preface: 다른 서버에서 내보내기 한 파일에서 팔로우 / 차단 정보를 이 계정으로 불러올 수 있습니다. recent_imports: 최근의 가져오기 states: diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 275bdab861..97fcf75180 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -1323,20 +1323,6 @@ lad: merge_long: Manten rejistros egzistentes i adjusta muevos overwrite: Sobreskrive overwrite_long: Mete muevos rejistros en vez de los aktuales - overwrite_preambles: - blocking_html: Estas a punto de substituyir tu lista de blokos por asta %{total_items} kuentos de %{filename}. - bookmarks_html: Estas a punto de substituyir tus markadores por asta %{total_items} publikasyones ke vinyeron de %{filename}. - domain_blocking_html: Estas a punto de substituyir tu lista de blokos de domeno por asta %{total_items} domenos de %{filename}. - following_html: Estas a punto de segir asta %{total_items} kuentos de %{filename} i deshar de segir todos los otros kuentos. - lists_html: Estas a punto de sustituyir tus listas con el kontenido de %{filename}. Asta %{total_items} kuentos seran adjustados a muevas listas. - muting_html: Estas a punto de substituyir tu lista de kuentos silensyados por asta %{total_items} kuentos de %{filename}. - preambles: - blocking_html: Estas a punto de blokar asta %{total_items} kuentos de %{filename}. - bookmarks_html: Estas a punto de adjustar asta %{total_items} publikasyones de %{filename} a tus markadores. - domain_blocking_html: Estas a punto de blokar asta %{total_items} domenos de %{filename}. - following_html: Estas a punto de segir asta %{total_items} kuentos de %{filename}. - lists_html: Estas a punto de adjustar %{total_items} kuentos dizde %{filename} a tus listas. Se kriyaran muevas listas si no ay listas para adjustarlas. - muting_html: Estas a punto de silensyar asta %{total_items} kuentos de %{filename}. preface: Puedes importar siertos datos, komo todas las personas a las kualas estas sigiendo o blokando en tu kuento en esta instansya, dizde dosyas eksportadas de otra instansya. recent_imports: Importasyones resyentes states: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 2cc8ff6a49..5f90b575e7 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1344,20 +1344,6 @@ lv: merge_long: Saglabāt esošos ierakstus un pievienot jaunus overwrite: Pārrakstīt overwrite_long: Nomainīt pašreizējos ierakstus ar jauniem - overwrite_preambles: - blocking_html: Tu gatavojies aizstāt savu bloķēto sarakstu ar līdz pat %{total_items} kontiem no %{filename}. - bookmarks_html: Tu gatavojies aizstāt savas bloķētās izlases ar līdz pat %{total_items} ziņām no %{filename}. - domain_blocking_html: Tu gatavojies aizstāt savu bloķēto domēnu sarakstu ar līdz pat %{total_items} domēniem no %{filename}. - following_html: Tu gatavojies sekot līdz pat %{total_items} kontiem no %{filename} un pārtrauksi sekot citiem. - lists_html: Tu gatavojies aizstāt savus sarakstus ar %{filename} saturu. Līdz %{total_items} kontiem tiks pievienoti jauni saraksti. - muting_html: Tu gatavojies aizstāt savu noklusināto kontu sarakstu ar līdz pat %{total_items} kontiem no %{filename}. - preambles: - blocking_html: Tu gatavojies bloķēt līdz pat %{total_items} kontiem no %{filename}. - bookmarks_html: Tu gatavojies pievienot līdz pat %{total_items} ziņām no %{filename} savām grāmatzīmēm. - domain_blocking_html: Tu gatavojies bloķēt līdz pat %{total_items} domēniem no %{filename}. - following_html: Tu gatavojies sekot līdz pat %{total_items} kontiem no %{filename}. - lists_html: Tu gatavojies pievienot līdz pat %{total_items} kontiem no %{filename} saviem sarakstiem. Jauni saraksti tiks izveidoti, ja nav saraksta, ko pievienot. - muting_html: Tu gatavojies noklusināt līdz pat %{total_items} kontiem no %{filename}. preface: Tu vari ievietot datus, kurus esi izguvis no cita servera, kā, piemēram, cilvēku sarakstu, kuriem Tu seko vai kurus bloķē. recent_imports: Nesen importēts states: diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 9994a34bb5..90493a30b6 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -1223,20 +1223,6 @@ ms: merge_long: Simpan rekod sedia ada dan tambah rekod baharu overwrite: Tulis ganti overwrite_long: Gantikan rekod semasa dengan yang baharu - overwrite_preambles: - blocking_html: Anda akan menggantikan senarai blok anda dengan sehingga %{total_items} akaun daripada %{filename}. - bookmarks_html: Anda akan menggantikan penanda halaman anda dengan sehingga %{total_items} siaran daripada %{filename}. - domain_blocking_html: Anda akan menggantikan senarai blok domain anda dengan sehingga %{total_items} domain daripada %{filename}. - following_html: Anda akan mengikuti sehingga %{total_items} akaun daripada %{filename} dan berhenti mengikuti orang lain. - lists_html: Anda akan menggantikan senarai anda dengan kandungan %{filename}. Sehingga %{total_items} akaun akan ditambahkan pada senarai baharu. - muting_html: Anda akan menggantikan senarai akaun yang diredamkan dengan sehingga %{total_items} akaun daripada %{filename}. - preambles: - blocking_html: Anda akan menyekat sehingga %{total_items} akaun daripada %{filename}. - bookmarks_html: Anda akan menambah sehingga %{total_items} pos daripada %{filename} ke penanda halaman anda. - domain_blocking_html: Anda akan menyekat sehingga %{total_items} domain daripada %{filename}. - following_html: Anda akan mengikuti sehingga %{total_items} akaun daripada %{filename}. - lists_html: Anda akan menambah sehingga %{total_items} akaun daripada %{filename} ke senarai anda. Senarai baharu akan dibuat jika tiada senarai untuk ditambah. - muting_html: Anda akan membisukan sehingga %{total_items} akaun daripada %{filename}. preface: Anda boleh mengimport data yang telah anda eksport dari server lain, seperti senarai orang yang anda ikuti atau sekat. recent_imports: Import terkini states: diff --git a/config/locales/my.yml b/config/locales/my.yml index 598915fad9..6a330a16c7 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -1222,20 +1222,6 @@ my: merge_long: ရှိပြီးသားမှတ်တမ်းများ သိမ်းဆည်းပြီး အသစ်များ ထပ်ထည့်ပါ overwrite: ထပ်ရေးရန် overwrite_long: လက်ရှိမှတ်တမ်းများကို အသစ်များဖြင့် အစားထိုးပါ - overwrite_preambles: - blocking_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ အထိ သင့်ပိတ်ဆို့စာရင်းကို အစားထိုးပါတော့မည်။ - bookmarks_html: သင်သည် %{filename} မှ %{total_items} ပို့စ်များ အထိ သင့် bookmark များကို အစားထိုးပါတော့မည်။ - domain_blocking_html: သင်သည် %{filename} မှ %{total_items} ဒိုမိန်းများ ဖြင့် သင်၏ ဒိုမိန်းပိတ်ဆို့စာရင်းကို အစားထိုးပါတော့မည်။ - following_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ အထိ စောင့်ကြည့် ပြီး အခြားမည်သူ့ကိုမျှ စောင့်မကြည့်တော့ပါ ။ - lists_html: သင်သည် %{filename} ၏ အကြောင်းအရာများဖြင့် သင့်စာရင်းများကို အစားထိုး ပါတော့မည်။ %{total_items} အကောင့်များအထိ စာရင်းအသစ်များသို့ ပေါင်းထည့်ပါမည်။ - muting_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ ဖြင့် အသံပိတ်ထားသော သင့်အကောင့်များစာရင်းကို အစားထိုးပါတော့မည်။ - preambles: - blocking_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ အထိ ပိတ်ဆို့ပါတော့မည်။ - bookmarks_html: သင်သည် %{filename} မှ %{total_items} ပို့စ်များ အထိ သင့် Bookmark များ သို့ ပေါင်းထည့်တော့မည်။ - domain_blocking_html: သင်သည် %{filename} မှ %{total_items} ဒိုမိန်းများ အထိ ပိတ်ဆို့ပါတော့မည်။ - following_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ အထိ စောင့်ကြည့် ပါတော့မည်။ - lists_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ ကို သင့် စာရင်းများ သို့ ပေါင်းထည့်ပါတော့မည်။ ထည့်ရန်စာရင်းမရှိပါက စာရင်းအသစ်များကို ဖန်တီးပါမည်။ - muting_html: သင်သည် %{filename} မှ %{total_items} အကောင့်များ အထိ အသံတိတ်ပါတော့မည်။ preface: သင်စောင့်ကြည့်နေသည့်လူများစာရင်း သို့မဟုတ် ပိတ်ပင်ထားသည့်စာရင်းကဲ့သို့သော အခြားဆာဗာတစ်ခုမှ သင်ထုတ်ယူထားသည့်အချက်အလက်များကို ပြန်လည်ထည့်သွင်းနိုင်သည်။ recent_imports: လတ်တလောထည့်သွင်းမှုများ states: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 7681a04eae..52ec4c89ce 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1366,19 +1366,43 @@ nl: overwrite: Overschrijven overwrite_long: Huidige gegevens met de nieuwe gegevens vervangen overwrite_preambles: - blocking_html: Je staat op het punt jouw lijst met geblokkeerde accounts te vervangen door %{total_items} accounts vanuit %{filename}. - bookmarks_html: Je staat op het punt jouw bladwijzers te vervangen door %{total_items} berichten vanuit %{filename}. - domain_blocking_html: Je staat op het punt jouw lijst met geblokkeerde domeinen te vervangen door %{total_items} domeinen vanuit %{filename}. - following_html: Je staat op het punt om %{total_items} accounts te volgen vanuit %{filename} en te stoppen met het volgen van alle andere accounts. - lists_html: Je staat op het punt je lijsten te vervangen door inhoud van %{filename}. Er worden totaal %{total_items} accounts aan nieuwe lijsten toegevoegd. - muting_html: Je staat op het punt jouw lijst met genegeerde accounts te vervangen door %{total_items} accounts vanuit %{filename}. + blocking_html: + one: Je staat op het punt om vanuit %{filename} je blokkeerlijst te vervangen met in het totaal %{count} account. + other: Je staat op het punt om vanuit %{filename} je blokkeerlijst te vervangen met in het totaal %{count} accounts. + bookmarks_html: + one: Je staat op het punt om vanuit %{filename} je bladwijzers te vervangen met in het totaal %{count} bericht. + other: Je staat op het punt om vanuit %{filename} je bladwijzers te vervangen met in het totaal %{count} berichten. + domain_blocking_html: + one: Je staat op het punt om vanuit %{filename} je lijst met geblokkeerde domeinen te vervangen met in het totaal %{count} domein. + other: Je staat op het punt om vanuit %{filename} je lijst met geblokkeerde domeinen te vervangen met in het totaal %{count} domeinen. + following_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} account te volgen en de rest te ontvolgen. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} accounts te volgen en de rest te ontvolgen. + lists_html: + one: Je staat op het punt om met de inhoud van %{filename} je lijsten te vervangen. In het totaal wordt %{count} account aan de nieuwe lijst(en) toegevoegd. + other: Je staat op het punt om met de inhoud van %{filename} je lijsten te vervangen. In het totaal worden %{count} accounts aan de nieuwe lijst(en) toegevoegd. + muting_html: + one: Je staat op het punt om vanuit %{filename} je negeerlijst te vervangen met in het totaal %{count} account. + other: Je staat op het punt om vanuit %{filename} je blokkeerlijst te vervangen met in het totaal %{count} accounts. preambles: - blocking_html: Je staat op het punt om %{total_items} accounts te blokkeren vanuit %{filename}. - bookmarks_html: Je staat op het punt om %{total_items} berichten aan je bladwijzers toe te voegen vanuit %{filename}. - domain_blocking_html: Je staat op het punt om %{total_items} accounts te negeren vanuit %{filename}. - following_html: Je staat op het punt om %{total_items} accounts te volgen vanuit %{filename}. - lists_html: Je staat op het punt om tot %{total_items} accounts van %{filename} toe te voegen aan je lijsten. Nieuwe lijsten worden aangemaakt als er geen lijst is om aan toe te voegen. - muting_html: Je staat op het punt om %{total_items} accounts te negeren vanuit %{filename}. + blocking_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} account te blokkeren. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} accounts te blokkeren. + bookmarks_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} bericht aan je bladwijzers toe te voegen. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} berichten aan je bladwijzers toe te voegen. + domain_blocking_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} domein te blokkeren. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} domeinen te blokkeren. + following_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} account te volgen. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} accounts te volgen. + lists_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} account aan je lijsten toe te voegen. Er wordt een nieuwe lijst aangemaakt wanneer er geen lijst is om het aan toe te voegen. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} accounts aan je lijsten toe te voegen. Er worden nieuwe lijsten aangemaakt wanneer er geen lijsten zijn om ze aan toe te voegen. + muting_html: + one: Je staat op het punt om vanuit %{filename} in het totaal %{count} account te negeren. + other: Je staat op het punt om vanuit %{filename} in het totaal %{count} accounts te negeren. preface: Je kunt bepaalde gegevens, zoals de mensen die jij volgt of hebt geblokkeerd, naar jouw account op deze server importeren. Je moet deze gegevens wel eerst op de oorspronkelijke server exporteren. recent_imports: Recent geïmporteerd states: @@ -1526,8 +1550,8 @@ nl: title: Nieuw volgverzoek mention: action: Reageren - body: 'Jij bent door %{name} vermeld in:' - subject: Jij bent vermeld door %{name} + body: 'Je bent door %{name} vermeld in:' + subject: Je bent vermeld door %{name} title: Nieuwe vermelding poll: subject: Een peiling van %{name} is beëindigd diff --git a/config/locales/nn.yml b/config/locales/nn.yml index ca5e34ee55..ec3db6520f 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1366,19 +1366,9 @@ nn: overwrite: Skriv over overwrite_long: Byt ut dei noverande oppføringane med dei nye overwrite_preambles: - blocking_html: Du skal til å byta ut blokkeringslista di med opp til %{total_items} brukarkontoar frå %{filename}. - bookmarks_html: Du skal til å byta ut bokmerka dine med opp til %{total_items} innlegg frå %{filename}. - domain_blocking_html: Du skal til å byta ut domeneblokkeringslista di med opp til %{total_items} domene frå %{filename}. - following_html: Du skal til å fylgja opp til %{total_items} brukarkontoar frå %{filename} og slutta å fylgja alle andre. - lists_html: Du er i ferd med å erstatta listene dine med innhaldet i %{filename}. Opptil %{total_items} kontoar vil bli lagt til i nye lister. - muting_html: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{total_items} brukarkontoar frå %{filename}. - preambles: - blocking_html: Du skal til å blokkera opp til %{total_items} brukarkontoar frå %{filename}. - bookmarks_html: Du skal til å leggja til opp til %{total_items} innlegg frå %{filename} til bokmerka dine. - domain_blocking_html: Du skal til å blokkera opp til %{total_items} domene frå %{filename}. - following_html: Du skal til å fylgja opp til %{total_items} brukarkontoar frå %{filename}. - lists_html: Du er i ferd med å leggja til opptil %{total_items} kontoar frå %{filename} til i listene dine. Nye lister vil blir oppretta om ingen lister finst frå før. - muting_html: Du skal til å dempa opp til %{total_items} brukarkontoar frå %{filename}. + blocking_html: + one: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkonto frå %{filename}. + other: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkontoar frå %{filename}. preface: Du kan henta inn data som du har eksportert frå ein annan tenar, som t.d. ei liste over folka du fylgjer eller blokkerer. recent_imports: Siste importar states: diff --git a/config/locales/no.yml b/config/locales/no.yml index ec0b14d5a3..94986f4cae 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1268,20 +1268,6 @@ merge_long: Behold eksisterende og legg til nye overwrite: Overskriv overwrite_long: Erstatt gjeldende med de nye - overwrite_preambles: - blocking_html: Du er i ferd med å erstatte din blokkeringsliste med inntil %{total_items} kontoer fra %{filename}. - bookmarks_html: Du er i ferd med å erstatte dine bokmerker med inntil %{total_items} innlegg fra %{filename}. - domain_blocking_html: Du er i ferd med å erstatte din domene-blokkeringsliste med inntil %{total_items} domener fra %{filename}. - following_html: Du er i ferd med å følge inntil %{total_items} kontoer fra %{filename} og slutte å følge alle andre. - lists_html: Du er i ferd med å erstatte dine lister med innholdet i %{filename}. Inntil %{total_items} kontoer legges til i nye lister. - muting_html: Du er i ferd med å erstatte listen over dempede kontoer med inntil %{total_items} kontoer fra %{filename}. - preambles: - blocking_html: Du er i ferd med å blokkere inntil %{total_items} kontoer fra %{filename}. - bookmarks_html: Du er i ferd med å legge til inntil %{total_items} innlegg fra %{filename} til dine bokmerker. - domain_blocking_html: Du er i ferd med å blokkere inntil %{total_items} domener fra %{filename}. - following_html: Du er i ferd med å følge inntil %{total_items} kontoer fra %{filename}. - lists_html: Du er i ferd med å legge inntil %{total_items} kontoer fra %{filename} til dine lister. Nye lister vil bli opprettet hvis det ikke finnes noen liste å legge til. - muting_html: Du er i ferd med å dempe inntil %{total_items} kontoer fra %{filename}. preface: Du kan importere data om brukere du følger eller blokkerer til kontoen din på denne instansen med eksportfiler fra andre instanser. recent_imports: Siste importer states: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 3aaf7a5a57..aaf8a9e722 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1415,20 +1415,6 @@ pl: merge_long: Zachowaj obecne wpisy i dodaj nowe overwrite: Nadpisz overwrite_long: Zastąp obecne wpisy nowymi - overwrite_preambles: - blocking_html: Zamierzasz zastąpić swoją listę bloków maksymalnie %{total_items} kont z %{filename}. - bookmarks_html: Zamierzasz zastąpić swoje zakładki maksymalnie %{total_items} wpisami z %{filename}. - domain_blocking_html: Zamierzasz zastąpić swoją listę bloków domen maksymalnie %{total_items} domenami z %{filename}. - following_html: Zamierzasz zaobserwować maksymalnie %{total_items} kont z %{filename} i przestać obserwować kogokolwiek innego. - lists_html: Zamierzasz zastąpić swoje listy maksymalnie %{total_items} kontami z %{filename}. - muting_html: Zamierzasz zastąpić swoją wyciszonych maksymalnie %{total_items} kontami z %{filename}. - preambles: - blocking_html: Zamierzasz zablokować maksymalnie %{total_items} kont z %{filename}. - bookmarks_html: Zamierzasz dodać maksymalnie %{total_items} wpisów do twoich zakładek z %{filename}. - domain_blocking_html: Zamierzasz zablokować maksymalnie %{total_items} domen z %{filename}. - following_html: Zamierzasz zaobserwować maksymalnie %{total_items} kont z %{filename}. - lists_html: Zamierzasz dodać maksymalnie %{total_items} kont do twoich list z %{filename}. Jeżeli nie ma list, nowe zostaną utworzone. - muting_html: Zamierzasz wyciszyć maksymalnie %{total_items} kont z %{filename}. preface: Możesz zaimportować pewne dane (np. lista kont, które obserwujesz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera. recent_imports: Ostatnie importy states: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 6451e7c601..427703f57e 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1365,20 +1365,6 @@ pt-BR: merge_long: Manter os registros existentes e adicionar novos overwrite: Sobrescrever overwrite_long: Substituir os registros atuais com os novos - overwrite_preambles: - blocking_html: Você está prestes a substituir sua lista de bloqueios com até contas%{total_items} de %{filename}. - bookmarks_html: Você está prestes a substituir seus favoritos por até %{total_items} posts de %{filename}. - domain_blocking_html: Você está prestes a substituir sua lista de bloqueio de domínio com até domínios%{total_items} de %{filename}. - following_html: Você está prestes a seguir até %{total_items} contas de %{filename} e parar de seguir todos os outros. - lists_html: Você está prestes a substituir sua lista pelo conteúdo de %{filename}. Até %{total_items} contas serão adicionadas a novas listas. - muting_html: Você está prestes a substituir sua lista de contas silenciadas com até %{total_items} contas de %{filename}. - preambles: - blocking_html: Você está prestes a bloquear até %{total_items} contas de %{filename}. - bookmarks_html: Você está prestes a adicionar até %{total_items} posts de %{filename} para seus favoritos. - domain_blocking_html: Você está prestes a bloquear até %{total_items} domínios de %{filename}. - following_html: Você está prestes a seguir até %{total_items} contas de %{filename}. - lists_html: Você está prestes a adicionar até %{total_items} contas a partir de %{filename} para suas listas. Novas listas serão criadas se não houver uma para a qual adicionar. - muting_html: Você está prestes a silenciar até contas%{total_items} de %{filename}. preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou. recent_imports: Importações recentes states: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 6b48e8de26..68217113d2 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1362,20 +1362,6 @@ pt-PT: merge_long: Manter os registos existentes e adicionar novos registos overwrite: Escrever por cima overwrite_long: Substituir os registos atuais pelos novos - overwrite_preambles: - blocking_html: Está prestes a substituir a sua lista de bloqueios com até %{total_items} contas de %{filename}. - bookmarks_html: Está prestes a substituir os seus marcadores com até %{total_items} publicações de %{filename}. - domain_blocking_html: Está prestes a substituir a sua lista de bloqueios de domínio com até %{total_items} domínios de %{filename}. - following_html: Está prestes a seguir até %{total_items} contas de %{filename} e parar de seguir quaisquer outras contas. - lists_html: Está prestes a substituir as suas listas pelo conteúdo de %{filename}. Até %{total_items} contas serão adicionadas a novas listas. - muting_html: Está prestes a substituir a sua lista de contas silenciadas com até %{total_items} contas de %{filename}. - preambles: - blocking_html: Está prestes a bloquear até %{total_items} contas de %{filename}. - bookmarks_html: Está prestes a adicionar até %{total_items} publicações de %{filename} aos seus marcadores. - domain_blocking_html: Está prestes a bloquear até %{total_items} domínios de %{filename}. - following_html: Está prestes a seguir até %{total_items} contas de %{filename}. - lists_html: Está prestes a adicionar até %{total_items} contas do ficheiro %{filename} para as suas listas. Novas listas serão criadas se não existir uma lista onde as adicionar. - muting_html: Está prestes a silenciar até %{total_items} contas de %{filename}. preface: Podes importar dados que tenhas exportado de outra instância, como a lista de pessoas que segues ou bloqueadas. recent_imports: Importações recentes states: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index c61c7f459f..25ca703732 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1410,20 +1410,6 @@ ru: merge_long: Сохранить имеющиеся данные и добавить новые. overwrite: Перезаписать overwrite_long: Перезаписать имеющиеся данные новыми. - overwrite_preambles: - blocking_html: Вы собираетесь заменить свой блок-лист на %{total_items} аккаунтов из %{filename}. - bookmarks_html: Вы собираетесь заменить свои закладки на %{total_items} постов из %{filename}. - domain_blocking_html: Вы собираетесь заменить ваш список блокировки доменов на %{total_items} доменов из %{filename}. - following_html: Вы собираетесь следить за %{total_items} аккаунтами из %{filename} и прекратить следить за всеми остальными. - lists_html: Вы собираетесь заменить ваши списки содержимым %{filename}. До %{total_items} аккаунты будут добавлены в новые списки. - muting_html: Вы собираетесь заменить список отключенных аккаунтов на %{total_items} аккаунтов из %{filename}. - preambles: - blocking_html: Вы собираетесь заблокировать до %{total_items} аккаунтов из %{filename}. - bookmarks_html: Вы собираетесь добавить до %{total_items} постов из %{filename} в свои закладки. - domain_blocking_html: Вы собираетесь блокировать до %{total_items} доменов от %{filename}. - following_html: Вы собираетесь следовать за %{total_items} аккаунтами из %{filename}. - lists_html: Вы собираетесь добавить до %{total_items} аккаунтов от %{filename} к вашим спискам. Новые списки будут созданы, если нет списка для добавления. - muting_html: Вы собираетесь отключить до %{total_items} аккаунтов из %{filename}. preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла. recent_imports: Недавно импортированное states: diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index e7deca9460..11b56bd50d 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,6 +3,7 @@ fy: simple_form: hints: account: + attribution_domains_as_text: Beskermet tsjin net korrekte attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -130,6 +131,7 @@ fy: name: Jo kinne elk wurd mei in haadletter begjinne, om sa bygelyks de tekst mear lêsber te meitsjen user: chosen_languages: Allinnich berjochten yn de selektearre talen wurde op de iepenbiere tiidline toand + role: De rol bepaalt hokker rjochten in brûker hat. user_role: color: Kleur dy’t brûkt wurdt foar de rol yn de UI, as RGB yn heksadesimaal formaat highlighted: Dit makket de rol iepenbier sichtber @@ -142,6 +144,7 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: + attribution_domains_as_text: Allinnich bepaalde websites tastean discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 7f8aaa01d6..bf30cdb1bf 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -295,7 +295,7 @@ nl: favourite: Wanneer iemand jouw bericht als favoriet markeert follow: Wanneer iemand jou is gaan volgen follow_request: Wanneer iemand jou wil volgen - mention: Wanneer iemand jou heeft vermeld + mention: Je bent door iemand vermeld pending_account: Wanneer een nieuw account moet worden beoordeeld reblog: Wanneer iemand jouw bericht heeft geboost report: Nieuwe rapportage is ingediend diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 286bece877..e9c06bcaa6 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1398,20 +1398,6 @@ sl: merge_long: Ohrani obstoječe zapise in dodaj nove overwrite: Prepiši overwrite_long: Zamenjaj trenutne zapise z novimi - overwrite_preambles: - blocking_html: Svoj seznam blokiranih računov boste nadomestili z največ %{total_items} računi iz %{filename}. - bookmarks_html: Svoje zaznamke boste nadomestili z največ %{total_items} objavami iz %{filename}. - domain_blocking_html: Svoj seznam blokiranih domen boste nadomestili z največ %{total_items} domenami iz %{filename}. - following_html: "Začeli boste slediti največ %{total_items} računom iz %{filename} in prenehali slediti vsem ostalim." - lists_html: Svoje sezname boste nadomestili z vsebino datoteke %{filename}. Največ %{total_items} računov bo dodanih na nove sezname. - muting_html: Svoj seznam utišanih računov boste nadomestili z največ %{total_items} računi iz %{filename}. - preambles: - blocking_html: "Blokirali boste največ %{total_items} računov iz %{filename}." - bookmarks_html: "Med zaznamke boste dodali boste največ %{total_items} objav iz %{filename}." - domain_blocking_html: "Blokirali boste največ %{total_items} domen iz %{filename}." - following_html: "Začeli boste slediti največ %{total_items} računom iz %{filename}." - lists_html: Dodali boste največ %{total_items} računov iz %{filename} na svoje sezname. Po potrebi bodo ustvarjeni novi seznami. - muting_html: "Utišali boste največ %{total_items} računov iz %{filename}." preface: Podatke, ki ste jih izvozili iz drugega strežnika, lahko uvozite. Na primer seznam oseb, ki jih spremljate ali blokirate. recent_imports: Nedavni uvozi states: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 2f05d7860c..0b276393a6 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1359,19 +1359,43 @@ sq: overwrite: Mbishkruaje overwrite_long: Zëvendësoji zërat ekzistues me të rinjtë overwrite_preambles: - blocking_html: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimeve me %{total_items} llogari nga %{filename}. - bookmarks_html: Ju ndan një hap nga zëvendësimi i faqerojtësve tuaj me %{total_items} postime nga %{filename}. - domain_blocking_html: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimit të përkatësive me %{total_items} përkatësi nga %{filename}. - following_html: Ju ndan një hap nga ndjekja e %{total_items} llogarive nga %{filename} dhe reshtja së ndjekuri këdo tjetër. - lists_html: Ju ndan një hap nga zëvendësimi i listave tuaja me lëndë nga %{filename}. Te listat e reja do të shtohen deri në %{total_items} llogari. - muting_html: Ju ndan një hpa nga zëvendësimi i listës suaj të llogarive të heshtuara me %{total_items} llogari nga %{filename}. + blocking_html: + one: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimeve, me %{count} llogari nga %{filename}. + other: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimeve, me %{count} llogari nga %{filename}. + bookmarks_html: + one: Ju ndan një hap nga zëvendësimi i faqerojtësve tuaj, me %{count} postim nga %{filename}. + other: Ju ndan një hap nga zëvendësimi i faqerojtësve tuaj, me %{count} postime nga %{filename}. + domain_blocking_html: + one: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimeve të përkatësive, me %{count} përkatësi nga %{filename}. + other: Ju ndan një hap nga zëvendësimi i listës tuaj të bllokimeve të përkatësive, me %{count} përkatësi nga %{filename}. + following_html: + one: Ju ndan një hap nga ndjekja e %{count} llogarie nga %{filename} dhe reshtja e ndjekjes së gjithkujt tjetër. + other: Ju ndan një hap nga ndjekja e deri %{count} llogarish nga %{filename} dhe reshtja e ndjekjes së gjithkujt tjetër. + lists_html: + one: Ju ndan një hap nga zëvendësimi i listave tuaja me lëndën e %{filename}. Te listat e reja do të shtohet deri %{count} llogari. + other: Ju ndan një hap nga zëvendësimi i listave tuaja me lëndën e %{filename}. Te listat e reja do të shtohet deri %{count} llogari. + muting_html: + one: Ju ndan një hap nga zëvendësimi i listës tuaj të llogarisë së heshtuar me %{count} llogari nga from %{filename}. + other: Ju ndan një hap nga zëvendësimi i listës tuaj të llogarive të heshtuara me %{count} llogari nga from %{filename}. preambles: - blocking_html: Ju ndan një hap nga bllokimi i %{total_items} llogarive nga %{filename}. - bookmarks_html: Ju ndan një hap nga shtimi te faqerojtësit tuaj i %{total_items} postimeve nga %{filename}. - domain_blocking_html: Ju ndan një hap nga bllokimi i %{total_items} përkatësive nga %{filename}. - following_html: Ju ndan një hap nga ndjekja e %{total_items} llogarive nga %{filename}. - lists_html: Jui nda një hap nga shtimi te listat tuaja i deri %{total_items} llogarive nga %{filename}. Nëse s’ka listë ku të shtohen, do të krijohen lista të reja. - muting_html: Ju ndan një hap nga heshtimi i %{total_items} llogarive nga %{filename}. + blocking_html: + one: Ju ndan një hap nga bllokimi i deri %{count} llogarie nga %{filename}. + other: Ju ndan një hap nga bllokimi i deri %{count} llogarive nga %{filename}. + bookmarks_html: + one: Ju ndan një hap nga shtimi te faqerojtësit tuaj i deri %{count} postimi nga %{filename}. + other: Ju ndan një hap nga shtimi te faqerojtësit tuaj i deri %{count} postimeve nga %{filename}. + domain_blocking_html: + one: Ju ndan një hap nga bllokimi i deri %{count} përkatësie nga %{filename}. + other: Ju ndan një hap nga bllokimi i deri %{count} përkatësive nga %{filename}. + following_html: + one: Ju ndan një hap nga ndjekja e deri %{count} llogarie nga %{filename}. + other: Ju ndan një hap nga ndjekja e deri %{count} llogarive nga %{filename}. + lists_html: + one: Ju ndan një hap nga shtimi i deri %{count} llogarie nga %{filename} te listat tuaja. Nëse s’ka listë ku të shtohen, do të krijohen lista të reja. + other: Ju ndan një hap nga shtimi i deri %{count} llogarive nga %{filename} te listat tuaja. Nëse s’ka listë ku të shtohen, do të krijohen lista të reja. + muting_html: + one: Ju ndan një hap nga heshtimi i deri %{count} llogarie nga %{filename}. + other: Ju ndan një hap nga heshtimi i deri %{count} llogarive nga %{filename}. preface: Mund të importoni të dhëna që keni eksportuar nga një shërbyes tjetër, bie fjala, një listë të personave që ndiqni ose bllokoni. recent_imports: Importime së fundi states: diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index ad14d9d131..f56cdb9cb5 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -1302,20 +1302,6 @@ sr-Latn: merge_long: Zadržite postojeće zapise i dodajte nove overwrite: Zameni overwrite_long: Zameni trenutne zapise novima - overwrite_preambles: - blocking_html: Upravo ćete zameniti svoju listu blokiranih sa do %{total_items} naloga iz %{filename}. - bookmarks_html: Upravo ćete zameniti svoje obeleživače sa do %{total_items} objava iz %{filename}. - domain_blocking_html: Upravo ćete zameniti svoju listu blokiranih domena sa do %{total_items} domena iz %{filename}. - following_html: Upravo ćete pratiti do %{total_items} naloga iz %{filename} and i prestati sa praćenjem bilo koga drugog. - lists_html: Spremate se da zamenite svoje liste sadržajem od %{filename}. Do %{total_items} naloga će biti dodato na nove liste. - muting_html: Upravo ćete zameniti svoju listu ignorisanih naloga sa do %{total_items} naloga iz %{filename}. - preambles: - blocking_html: Upravo ćete blokirati do %{total_items} naloga iz %{filename}. - bookmarks_html: Upravo ćete dodati do %{total_items} objava iz %{filename} u vaše obeleživače. - domain_blocking_html: Upravo ćete blokirati do %{total_items} domena iz %{filename}. - following_html: Upravo ćete pratiti do %{total_items} naloga iz %{filename}. - lists_html: Spremate se da dodate do %{total_items} naloga od %{filename} na svoje liste. Nove liste će biti kreirane ako ne postoji lista za dodavanje. - muting_html: Upravo ćete ignorisati do %{total_items} naloga iz %{filename}. preface: Možete uvesti podatke koje ste izvezli sa druge instance, kao što su liste ljudi koje ste pratili ili blokirali. recent_imports: Nedavni uvozi states: diff --git a/config/locales/sr.yml b/config/locales/sr.yml index fc92b98176..45feb0b5fc 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1332,20 +1332,6 @@ sr: merge_long: Задржите постојеће записе и додајте нове overwrite: Замени overwrite_long: Замени тренутне записе новима - overwrite_preambles: - blocking_html: Управо ћете заменити своју листу блокираних са до %{total_items} налога из %{filename}. - bookmarks_html: Управо ћете заменити своје обележиваче са до %{total_items} објава из %{filename}. - domain_blocking_html: Управо ћете заменити своју листу блокираних домена са до %{total_items} домена из %{filename}. - following_html: Управо ћете пратити до %{total_items} налога из %{filename} and и престати са праћењем било кога другог. - lists_html: Спремате се да замените своје листе садржајем од %{filename}. До %{total_items} налога ће бити додато на нове листе. - muting_html: Управо ћете заменити своју листу игнорисаних налога са до %{total_items} налога из %{filename}. - preambles: - blocking_html: Управо ћете блокирати до %{total_items} налога из %{filename}. - bookmarks_html: Управо ћете додати до %{total_items} објава из %{filename} у ваше обележиваче. - domain_blocking_html: Управо ћете блокирати до %{total_items} домена из %{filename}. - following_html: Управо ћете пратити до %{total_items} налога из %{filename}. - lists_html: Спремате се да додате до %{total_items} налога од %{filename} на своје листе. Нове листе ће бити креиране ако не постоји листа за додавање. - muting_html: Управо ћете игнорисати до %{total_items} налога из %{filename}. preface: Можете увести податке које сте извезли са друге инстанце, као што су листе људи које сте пратили или блокирали. recent_imports: Недавни увози states: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index dadd5f1600..0d19d17c3b 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -1318,20 +1318,6 @@ sv: merge_long: Behåll befintliga uppgifter och lägg till nya overwrite: Skriv över overwrite_long: Ersätt de nuvarande uppgifterna med de nya - overwrite_preambles: - blocking_html: Du är på väg att ersätta din blockeringslista med upp till %{total_items} konton från %{filename}. - bookmarks_html: Du är på väg att ersätta din blockeringslista med upp till %{total_items} inlägg från %{filename}. - domain_blocking_html: Du är på väg att ersätta din blockeringslista med upp till %{total_items} domäner från %{filename}. - following_html: Du är på väg till följ upp till %{total_items} konton från %{filename} och sluta följa någon annan. - lists_html: Du är på väg att ersätta dina listor med innehållet i %{filename}. Upp till %{total_items} konton kommer att läggas till i nya listor. - muting_html: Du är på väg att ersätta din lista med tystade konton med upp till %{total_items} konton från %{filename}. - preambles: - blocking_html: Du är på väg att blockera med upp till %{total_items} konton från %{filename}. - bookmarks_html: Du håller på att lägga upp till %{total_items} inlägg från %{filename} till dina bokmärken. - domain_blocking_html: Du är på väg att blockera upp till %{total_items} domäner från %{filename}. - following_html: Du är på väg att följa upp till %{total_items} konton från %{filename}. - lists_html: Du håller på att lägga upp till %{total_items} konton från %{filename} till dina listor. Nya listor kommer att skapas om det inte finns någon lista att lägga till. - muting_html: Du är på väg att tysta upp till %{total_items} konton från %{filename}. preface: Du kan importera data som du exporterat från en annan instans, till exempel en lista över personer du följer eller blockerar. recent_imports: Nyligen importerade states: diff --git a/config/locales/th.yml b/config/locales/th.yml index 3cb802afe3..c6ba60736d 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1340,20 +1340,6 @@ th: merge_long: เก็บระเบียนที่มีอยู่และเพิ่มระเบียนใหม่ overwrite: เขียนทับ overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ - overwrite_preambles: - blocking_html: คุณกำลังจะ แทนที่รายการการปิดกั้นของคุณ ด้วยมากถึง %{total_items} บัญชี จาก %{filename} - bookmarks_html: คุณกำลังจะ แทนที่ที่คั่นหน้าของคุณ ด้วยมากถึง %{total_items} โพสต์ จาก %{filename} - domain_blocking_html: คุณกำลังจะ แทนที่รายการการปิดกั้นโดเมนของคุณ ด้วยมากถึง %{total_items} โดเมน จาก %{filename} - following_html: คุณกำลังจะ ติดตาม มากถึง %{total_items} บัญชี จาก %{filename} และ หยุดการติดตามคนอื่นใด - lists_html: คุณกำลังจะ แทนที่รายการของคุณ ด้วยเนื้อหาของ %{filename} จะเพิ่มมากถึง %{total_items} บัญชี ไปยังรายการใหม่ - muting_html: คุณกำลังจะ แทนที่รายการบัญชีที่ซ่อนอยู่ของคุณ ด้วยมากถึง %{total_items} บัญชี จาก %{filename} - preambles: - blocking_html: คุณกำลังจะ ปิดกั้น มากถึง %{total_items} บัญชี จาก %{filename} - bookmarks_html: คุณกำลังจะเพิ่มมากถึง %{total_items} โพสต์ จาก %{filename} ไปยัง ที่คั่นหน้า ของคุณ - domain_blocking_html: คุณกำลังจะ ปิดกั้น มากถึง %{total_items} โดเมน จาก %{filename} - following_html: คุณกำลังจะ ติดตาม มากถึง %{total_items} บัญชี จาก %{filename} - lists_html: คุณกำลังจะเพิ่มมากถึง %{total_items} บัญชี จาก %{filename} ไปยัง รายการ ของคุณ จะสร้างรายการใหม่หากไม่มีรายการที่จะเพิ่มไปยัง - muting_html: คุณกำลังจะ ซ่อน มากถึง %{total_items} บัญชี จาก %{filename} preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น recent_imports: การนำเข้าล่าสุด states: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index f1e0983705..df55aa5a29 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1366,19 +1366,43 @@ tr: overwrite: Üzerine yaz overwrite_long: Mevcut kayıtları yenileriyle değiştir overwrite_preambles: - blocking_html: "Engel listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz." - bookmarks_html: "Yerimlerinizi, %{filename} dosyasından, %{total_items} gönderiyle değiştirmek üzeresiniz." - domain_blocking_html: "Alan adı engel listenizi, %{filename} dosyasından, %{total_items} alan adıyla değiştirmek üzeresiniz." - following_html: "%{filename} dosyasından %{total_items} hesabı takip etmeye başlamak ve diğer herkesi takipten çıkmak üzeresiniz." - lists_html: Listelerinizi %{filename} içeriğiyle değiştirmek üzeresiniz. Yeni listelere en fazla %{total_items} hesap eklenecek. - muting_html: "Sessize alınmış hesaplar listenizi, %{filename} dosyasından, %{total_items} hesapla değiştirmek üzeresiniz." + blocking_html: + one: "Engelleme listenizi, %{filename} dosyasından %{count} hesap ile değiştirmek üzeresiniz." + other: "Engelleme listenizi, %{filename} dosyasından %{count} hesap ile değiştirmek üzeresiniz." + bookmarks_html: + one: "Yerimlerinizi, %{filename} dosyasından %{count} gönderi ile değiştirmek üzeresiniz." + other: "Yerimlerinizi, %{filename} dosyasından %{count} gönderi ile değiştirmek üzeresiniz." + domain_blocking_html: + one: "Alan adı engelleme listenizi, %{filename} dosyasından %{count} alan adı ile değiştirmek üzeresiniz." + other: "Alan adı engelleme listenizi, %{filename} dosyasından %{count} alan adı ile değiştirmek üzeresiniz." + following_html: + one: "%{filename} dosyasından %{count} hesabı takip etmek ve diğer herkesin takibini bırakmak üzeresiniz." + other: "%{filename} dosyasından %{count} hesabı takip etmek ve diğer herkesin takibini bırakmak üzeresiniz." + lists_html: + one: "Listelerinizi, %{filename} dosya içeriğiyle değiştirmek üzeresiniz. %{count} hesap yeni listelere eklenecektir." + other: "Listelerinizi, %{filename} dosya içeriğiyle değiştirmek üzeresiniz. %{count} hesap yeni listelere eklenecektir." + muting_html: + one: "Sessize alınmış hesap listenizi, %{filename} dosyasından %{count} hesap ile değiştirmek üzeresiniz." + other: "Sessize alınmış hesap listenizi, %{filename} dosyasından %{count} hesap ile değiştirmek üzeresiniz." preambles: - blocking_html: "%{filename} dosyasından %{total_items} hesabı engellemek üzeresiniz." - bookmarks_html: "%{filename} dosyasından %{total_items} gönderiyi yerimlerinize eklemek üzeresiniz." - domain_blocking_html: "%{filename} dosyasından %{total_items} alan adını engellemek üzeresiniz." - following_html: "%{filename} dosyasından %{total_items} hesabı takip etmek üzeresiniz." - lists_html: "Listelerinize %{filename} dosyasından en fazla %{total_items} hesap eklemek üzeresiniz. Eklenecek bir liste olmaması durumunda yeni listeler oluşturulacaktır." - muting_html: "%{filename} dosyasından %{total_items} hesabı sessize almak üzeresiniz." + blocking_html: + one: "%{filename} dosyasından %{count} hesap engellemek üzeresiniz." + other: "%{filename} dosyasından %{count} hesap engellemek üzeresiniz." + bookmarks_html: + one: "Yerimlerinize, %{filename} dosyasından %{count} gönderi eklemek üzeresiniz." + other: "Yerimlerinize, %{filename} dosyasından %{count} gönderi eklemek üzeresiniz." + domain_blocking_html: + one: "%{filename} dosyasından %{count} alan adı engellemek üzeresiniz." + other: "%{filename} dosyasından %{count} alan adı engellemek üzeresiniz." + following_html: + one: "%{filename} dosyasından %{count} hesap takip etmek üzeresiniz." + other: "%{filename} dosyasından %{count} hesap takip etmek üzeresiniz." + lists_html: + one: "Listelerinize, %{filename} %{count} hesap eklemek üzeresiniz. Eklenecek liste yoksa yeni listeler oluşturulacaktır." + other: "Listelerinize, %{filename} %{count} hesap eklemek üzeresiniz. Eklenecek liste yoksa yeni listeler oluşturulacaktır." + muting_html: + one: "%{filename} dosyasından %{count} hesabı sessize almak üzeresiniz." + other: "%{filename} dosyasından %{count} hesabı sessize almak üzeresiniz." preface: Diğer sunucudan alarak oluşturduğunuz dosyalar sayesinde, bu sunucudaki hesabınıza takipçilerinizi aktarabilir veya istemediğiniz kişileri otomatik olarak engelleyebilirsiniz. recent_imports: Son içe aktarmalar states: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index de1847a745..47732198f1 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1415,20 +1415,6 @@ uk: merge_long: Зберегти наявні записи та додати нові overwrite: Перезаписувати overwrite_long: Замінити наявні записи новими - overwrite_preambles: - blocking_html: Ви збираєтеся замінити ваш список блокування з %{total_items} обліковими записами з %{filename}. - bookmarks_html: Ви збираєтеся замінити ваші закладки з %{total_items} дописами з %{filename}. - domain_blocking_html: Ви збираєтеся замінити ваш список блокування доменів з %{total_items} доменами з %{filename}. - following_html: Ви збираєтеся слідкувати за %{total_items} обліковими записами з %{filename} і перестати слідкувати за всіма іншими. - lists_html: Ви збираєтеся замінити ваші списки вмістом з %{filename}. До нових списків буде додано до %{total_items} облікових записів. - muting_html: Ви збираєтеся замінити ваш список ігнорованих облікових записів з %{total_items} обліковими записами з %{filename}. - preambles: - blocking_html: Ви збираєтеся заблокувати %{total_items} облікових записів з %{filename}. - bookmarks_html: Ви збираєтеся додати %{total_items} дописів з %{filename} до ваших закладок. - domain_blocking_html: Ви збираєтеся заблокувати %{total_items} доменів з %{filename}. - following_html: Ви збираєтеся слідкувати за %{total_items} обліковими записами з %{filename}. - lists_html: Ви збираєтеся додати до %{total_items} облікових записів з %{filename} до ваших списків. Нові списки будуть створені, якщо немає списку для додавання. - muting_html: Ви збираєтеся ігнорувати %{total_items} облікових записів з %{filename}. preface: Ви можете імпортувати дані, які ви експортували з іншого сервера, наприклад, список людей, яких ви відстежуєте або блокуєте. recent_imports: Останні імпорти states: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 7e44e76e44..17edfba70a 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1341,19 +1341,31 @@ vi: overwrite: Ghi đè overwrite_long: Thay thế các bản ghi hiện tại bằng các bản ghi mới overwrite_preambles: - blocking_html: Bạn sắp thay thế danh sách chặn với %{total_items} tài khoản từ %{filename}. - bookmarks_html: Bạn sắp thay thế lượt lưu với %{total_items} tút từ %{filename}. - domain_blocking_html: Bạn sắp thay thế danh sách máy chủ chặn với %{total_items} máy chủ từ %{filename}. - following_html: Bạn sắp theo dõi với %{total_items} người từ %{filename}ngừng theo dõi bất kỳ ai. - lists_html: Bạn sắp thay thế các danh sách bằng nội dung từ %{filename}. Hơn %{total_items} tài khoản sẽ được thêm vào những danh sách mới. - muting_html: Bạn sắp thay thế danh sách ẩn với %{total_items} người từ %{filename}. + blocking_html: + other: Bạn sắp thay thế danh sách chặn với %{count} người từ %{filename}. + bookmarks_html: + other: Bạn sắp thay thế danh sách tút đã lưu với %{count} tút từ %{filename}. + domain_blocking_html: + other: Bạn sắp thay thế danh sách máy chủ chặn với %{count} máy chủ từ %{filename}. + following_html: + other: Bạn sắp theo dõi tới %{count} người từ %{filename}ngừng theo dõi mọi người khác. + lists_html: + other: Bạn sắp thay thế danh sách với nội dung của %{filename}. Có %{count} người sẽ được thêm vào những danh sách mới. + muting_html: + other: Bạn sắp they thế danh sách người bạn chặn với %{count} người từ %{filename}. preambles: - blocking_html: Bạn sắp chặn tới %{total_items} người từ %{filename}. - bookmarks_html: Bạn sắp thêm vào %{total_items} tút từ %{filename} vào lượt lưu. - domain_blocking_html: Bạn sắp chặn tới %{total_items} máy chủ từ %{filename}. - following_html: Bạn sắp theo dõi tới %{total_items} người từ %{filename}. - lists_html: Bạn sắp thêm %{total_items} tài khoản từ %{filename} vào danh sách của bạn. Những danh sách mới sẽ được tạo nếu bạn chưa có danh sách nào. - muting_html: Bạn sắp ẩn lên tới %{total_items} người từ %{filename}. + blocking_html: + other: Bạn sắp chặn tới %{count} người từ %{filename}. + bookmarks_html: + other: Bạn sắp thêm tới %{count} tút từ %{filename} vào danh sách tút đã lưu. + domain_blocking_html: + other: Bạn sắp chặn tới %{count} máy chủ từ %{filename}. + following_html: + other: Bạn sắp theo dõi tới %{count} người từ %{filename}. + lists_html: + other: Bạn sắp thêm tới %{count} người từ %{filename} vào danh sách của bạn. Những danh sách mới sẽ được tạo nếu không có danh sách để thêm. + muting_html: + other: Bạn sắp ẩn tới %{count} người từ %{filename}. preface: Bạn có thể nhập dữ liệu mà bạn đã xuất từ một máy chủ khác, chẳng hạn danh sách những người đang theo dõi hoặc chặn. recent_imports: Đã nhập gần đây states: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index a73871115b..7be8fb5a58 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1341,19 +1341,31 @@ zh-CN: overwrite: 覆盖 overwrite_long: 将当前记录替换为新记录 overwrite_preambles: - blocking_html: 你即将使用来自 %{filename} 的最多 %{total_items} 个账户替换你的屏蔽列表。 - bookmarks_html: 你即将使用来自 %{filename} %{total_items} 篇嘟文替换你的书签。 - domain_blocking_html: 你即将使用来自 %{filename} 的最多 %{total_items} 个域名替换你的域名屏蔽列表。 - following_html: 你即将从 %{filename} 关注 %{total_items} 个账户,并停止关注其他任何人。 - lists_html: 你即将用 %{filename} 的内容替换你的列表。新列表中将添加 %{total_items} 个账户。 - muting_html: 你即将使用来自 %{filename} 的最多 %{total_items} 个账户替换你已隐藏的账户列表。 + blocking_html: + other: 你即将使用来自 %{filename} 的最多 %{count} 个帐户替换你的屏蔽列表。 + bookmarks_html: + other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的书签。 + domain_blocking_html: + other: 你即将使用来自 %{filename} 的最多 %{count} 个域名替换你的域名屏蔽列表。 + following_html: + other: 你即将关注来自 %{filename} 的最多 %{count} 个账户,并停止关注其他所有人。 + lists_html: + other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账户 被添加到新列表。 + muting_html: + other: 你即将使用来自 %{filename} 的最多 %{count} 个帐户替换你的已隐藏账户列表。 preambles: - blocking_html: 你即将从 %{filename} 封锁多达 %{total_items} 个账户。 - bookmarks_html: 你即将把来自 %{filename} %{total_items} 篇嘟文添加到你的书签中。 - domain_blocking_html: 你即将从 %{filename} 屏蔽 %{total_items} 个域名。 - following_html: 你即将从 %{filename} 关注最多 %{total_items} 个账户。 - lists_html: 你即将从 %{filename} 中添加最多 %{total_items} 个账户到你的列表中。如果没有可用列表,将创建新的列表。 - muting_html: 你即将从 %{filename} 隐藏 %{total_items} 个账户。 + blocking_html: + other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个账号。 + bookmarks_html: + other: 你即将把来自 %{filename} %{count} 篇嘟文添加到你的书签中。 + domain_blocking_html: + other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个域名。 + following_html: + other: 你即将关注来自 %{filename} 的最多 %{count} 个账号。 + lists_html: + other: 你即将从 %{filename} 中添加最多 %{count} 个账户到你的列表中。如果没有可用列表,将创建新的列表。 + muting_html: + other: 你即将隐藏来自 %{filename} 的最多 %{count} 个账号。 preface: 你可以在此导入你在其他实例导出的数据,比如你所关注或屏蔽的用户列表。 recent_imports: 最近导入 states: diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index c0726fc2f7..e33ebeadb4 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -1249,20 +1249,6 @@ zh-HK: merge_long: 留下舊有記錄並添加新的資訊 overwrite: 覆蓋 overwrite_long: 用新記錄覆蓋當前記錄 - overwrite_preambles: - blocking_html: 你將以%{filename}的最多%{total_items}個帳號,來取代你現有的封鎖列表。 - bookmarks_html: 你將以%{filename}的最多%{total_items}個帳號,來取代你現有的書籤。 - domain_blocking_html: 你將以%{filename}的最多%{total_items} 個帳號,來取代你現有的網域封鎖列表。 - following_html: 你將從%{filename}追蹤最多%{total_items} 個帳號,並取消追蹤其他人。 - lists_html: 你將根據%{filename}的內容取代的你列表。最多新增 %{total_items} 個帳號 到新列表。 - muting_html: 你將根據%{filename}中最多 %{total_items} 個帳號取代你的靜音帳號列表。 - preambles: - blocking_html: 你將根據%{filename}封鎖最多 %{total_items} 個帳號。 - bookmarks_html: 你將加入 %{filename} 中最多 %{total_items} 篇帖文到你的書籤中。 - domain_blocking_html: 你將封鎖來自%{filename}的最多 %{total_items} 個網域。 - following_html: 你將追蹤 來自 %{filename} 最多 %{total_items} 個帳號。 - lists_html: 你將加入來自%{filename}最多 %{total_items} 個帳號到你的列表中。如果現時沒有列表,將會建立新列表。 - muting_html: 你將靜音來自%{filename}的最多 %{total_items} 個帳號。 preface: 你可以在此匯入你在其他服務站所匯出的資料檔,包括︰你所關注的用戶,被你封鎖的用戶。 recent_imports: 最近的匯入 states: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 4079f68a50..96aedf0a1c 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1343,19 +1343,31 @@ zh-TW: overwrite: 覆蓋 overwrite_long: 以新的紀錄覆蓋目前紀錄 overwrite_preambles: - blocking_html: 您將要自 %{filename} 中之 %{total_items} 個帳號取代您的封鎖帳號列表。 - bookmarks_html: 您將要自 %{filename} 中之 %{total_items} 個嘟文取代您的書籤。 - domain_blocking_html: 您將要自 %{filename} 中之 %{total_items} 個網域取代您的封鎖網域列表。 - following_html: 您將要 跟隨%{filename} 中之 %{total_items} 個帳號 並且 取消跟隨其他所有人。 - lists_html: 您將以 %{filename} 之內容取代您的列表。這將會新增 %{total_items} 個帳號至新列表。 - muting_html: 您將要自 %{filename} 中之 %{total_items} 個帳號取代您的靜音帳號列表。 + blocking_html: + other: 您將要自 %{filename} 中之 %{count} 個帳號取代您的封鎖帳號列表。 + bookmarks_html: + other: 您將要自 %{filename} 中之 %{count} 個嘟文取代您的書籤。 + domain_blocking_html: + other: 您將要自 %{filename} 中之 %{count} 個網域取代您的封鎖網域列表。 + following_html: + other: 您將要 跟隨%{filename} 中之 %{count} 個帳號 並且 取消跟隨其他所有人。 + lists_html: + other: 您將以 %{filename} 之內容取代您的列表。這將會新增 %{count} 個帳號至新列表。 + muting_html: + other: 您將要自 %{filename} 中之 %{count} 個帳號取代您的靜音帳號列表。 preambles: - blocking_html: 您將要 封鎖%{filename} 中之 %{total_items} 個帳號。 - bookmarks_html: 您將要自 %{filename} 中之 %{total_items} 個嘟文加入至您的書籤。 - domain_blocking_html: 您將要 封鎖%{filename} 中之 %{total_items} 個網域。 - following_html: 您將要 跟隨%{filename} 中之 %{total_items} 個帳號。 - lists_html: 您將自 %{filename} 新增 %{total_items} 個帳號至您的列表。若不存在列表用以新增帳號,則會建立新列表。 - muting_html: 您將要 靜音%{filename} 中之 %{total_items} 個帳號。 + blocking_html: + other: 您將要 封鎖%{filename} 中之 %{count} 個帳號。 + bookmarks_html: + other: 您將要自 %{filename} 中之 %{count} 個嘟文加入至您的書籤。 + domain_blocking_html: + other: 您將要 封鎖%{filename} 中之 %{count} 個網域。 + following_html: + other: 您將要 跟隨%{filename} 中之 %{count} 個帳號。 + lists_html: + other: 您將自 %{filename} 新增 %{count} 個帳號至您的列表。若不存在列表用以新增帳號,則會建立新列表。 + muting_html: + other: 您將要 靜音%{filename} 中之 %{count} 個帳號。 preface: 您能於此匯入您於其他伺服器所匯出的資料檔,包括跟隨中的使用者、封鎖的使用者名單等。 recent_imports: 最近匯入的 states: From 0ce2db4f7d3dad317803a41d33409dd83165bfc6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 09:07:07 +0200 Subject: [PATCH 110/550] Update dependency postcss-preset-env to v10.0.6 (#32260) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9aeb2b02a8..35fca2f8ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13417,9 +13417,9 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.1": - version: 11.0.1 - resolution: "postcss-custom-media@npm:11.0.1" +"postcss-custom-media@npm:^11.0.2": + version: 11.0.2 + resolution: "postcss-custom-media@npm:11.0.2" dependencies: "@csstools/cascade-layer-name-parser": "npm:^2.0.1" "@csstools/css-parser-algorithms": "npm:^3.0.1" @@ -13427,7 +13427,7 @@ __metadata: "@csstools/media-query-list-parser": "npm:^3.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/771b281a28f105370ede7c4a86f9e3dd8d9ec3bf2d2883d4f2cfe9c42b5ec1bf88f713458b356870315d0ba3a285fbeb7bb514a1203d1c4fb113bd9044369bf2 + checksum: 10c0/7bec2b1e0b5d786c33c5715b611ffc8b9737252ee6bf77ca59255ac16f91ce614406923f43250e5c88b04f1bb050f155dc5ed4d9350dbd704c45fbd72e5a9a04 languageName: node linkType: hard @@ -13906,8 +13906,8 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.5 - resolution: "postcss-preset-env@npm:10.0.5" + version: 10.0.6 + resolution: "postcss-preset-env@npm:10.0.6" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.0" "@csstools/postcss-color-function": "npm:^4.0.2" @@ -13950,7 +13950,7 @@ __metadata: postcss-color-functional-notation: "npm:^7.0.2" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" - postcss-custom-media: "npm:^11.0.1" + postcss-custom-media: "npm:^11.0.2" postcss-custom-properties: "npm:^14.0.1" postcss-custom-selectors: "npm:^8.0.1" postcss-dir-pseudo-class: "npm:^9.0.0" @@ -13972,7 +13972,7 @@ __metadata: postcss-selector-not: "npm:^8.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/db5eb1175cb26bed3f1a4c47acc67935ffc784520321470520e59de366ac6f91be1e609fe36056af707ed20f7910721287cff0fae416c437dd3e944de13ffd05 + checksum: 10c0/01660acf3b9ddf4d612a31819e9a5de9fe5383e9eddd2c130180f66ae90c5a881eb408e73454fd50e1839eae71678d738bf72073de08f9013c183b0bd9950fe5 languageName: node linkType: hard From a59160cf01142a49a15b3237d76a19dcfd9de100 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 7 Oct 2024 09:46:03 +0200 Subject: [PATCH 111/550] Add missing `on_delete: :cascade` on `notification_permissions` (#32281) --- ...ix_notification_permission_foreign_keys.rb | 39 +++++++++++++++++++ db/schema.rb | 6 +-- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20241007071624_fix_notification_permission_foreign_keys.rb diff --git a/db/migrate/20241007071624_fix_notification_permission_foreign_keys.rb b/db/migrate/20241007071624_fix_notification_permission_foreign_keys.rb new file mode 100644 index 0000000000..11b82de8a6 --- /dev/null +++ b/db/migrate/20241007071624_fix_notification_permission_foreign_keys.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class FixNotificationPermissionForeignKeys < ActiveRecord::Migration[7.1] + def up + safety_assured do + execute <<~SQL.squish + ALTER TABLE notification_permissions + DROP CONSTRAINT fk_rails_7c0bed08df, + ADD CONSTRAINT fk_rails_7c0bed08df + FOREIGN KEY (account_id) + REFERENCES accounts(id) + ON DELETE CASCADE, + + DROP CONSTRAINT fk_rails_e3e0aaad70, + ADD CONSTRAINT fk_rails_e3e0aaad70 + FOREIGN KEY (from_account_id) + REFERENCES accounts(id) + ON DELETE CASCADE + SQL + end + end + + def down + safety_assured do + execute <<~SQL.squish + ALTER TABLE notification_permissions + DROP CONSTRAINT fk_rails_7c0bed08df, + ADD CONSTRAINT fk_rails_7c0bed08df + FOREIGN KEY (account_id) + REFERENCES accounts(id), + + DROP CONSTRAINT fk_rails_e3e0aaad70, + ADD CONSTRAINT fk_rails_e3e0aaad70 + FOREIGN KEY (from_account_id) + REFERENCES accounts(id) + SQL + end + end +end diff --git a/db/schema.rb b/db/schema.rb index f9f2d97395..68067841e0 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_09_16_190140) do +ActiveRecord::Schema[7.1].define(version: 2024_10_07_071624) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1291,8 +1291,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_09_16_190140) do add_foreign_key "mentions", "statuses", on_delete: :cascade add_foreign_key "mutes", "accounts", column: "target_account_id", name: "fk_eecff219ea", on_delete: :cascade add_foreign_key "mutes", "accounts", name: "fk_b8d8daf315", on_delete: :cascade - add_foreign_key "notification_permissions", "accounts" - add_foreign_key "notification_permissions", "accounts", column: "from_account_id" + add_foreign_key "notification_permissions", "accounts", column: "from_account_id", on_delete: :cascade + add_foreign_key "notification_permissions", "accounts", on_delete: :cascade add_foreign_key "notification_policies", "accounts", on_delete: :cascade add_foreign_key "notification_requests", "accounts", column: "from_account_id", on_delete: :cascade add_foreign_key "notification_requests", "accounts", on_delete: :cascade From 1f5bd571cd26ddb44228b8e6a9498e765037e639 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Oct 2024 11:35:42 +0200 Subject: [PATCH 112/550] Fix missing avatar fallback interfering with transparency in web UI (#32270) --- .../__snapshots__/avatar-test.jsx.snap | 8 ++++-- app/javascript/mastodon/components/avatar.tsx | 25 +++++++++++++++---- .../styles/mastodon/components.scss | 7 ++++-- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap index 2f0a2de324..124b50d8c7 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/avatar-test.jsx.snap @@ -2,7 +2,7 @@ exports[` Autoplay renders a animated avatar 1`] = `
Autoplay renders a animated avatar 1`] = ` >
@@ -21,7 +23,7 @@ exports[` Autoplay renders a animated avatar 1`] = ` exports[` Still renders a still avatar 1`] = `
Still renders a still avatar 1`] = ` >
diff --git a/app/javascript/mastodon/components/avatar.tsx b/app/javascript/mastodon/components/avatar.tsx index 8b16296c2c..f61d9676de 100644 --- a/app/javascript/mastodon/components/avatar.tsx +++ b/app/javascript/mastodon/components/avatar.tsx @@ -1,10 +1,11 @@ +import { useState, useCallback } from 'react'; + import classNames from 'classnames'; +import { useHovering } from 'mastodon/../hooks/useHovering'; +import { autoPlayGif } from 'mastodon/initial_state'; import type { Account } from 'mastodon/models/account'; -import { useHovering } from '../../hooks/useHovering'; -import { autoPlayGif } from '../initial_state'; - interface Props { account: Account | undefined; // FIXME: remove `undefined` once we know for sure its always there size: number; @@ -25,6 +26,8 @@ export const Avatar: React.FC = ({ counterBorderColor, }) => { const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(false); const style = { ...styleFromParent, @@ -37,16 +40,28 @@ export const Avatar: React.FC = ({ ? account?.get('avatar') : account?.get('avatar_static'); + const handleLoad = useCallback(() => { + setLoading(false); + }, [setLoading]); + + const handleError = useCallback(() => { + setError(true); + }, [setError]); + return (
- {src && } + {src && !error && ( + + )} + {counter && (
[data-popper-placement] { display: block; position: relative; border-radius: var(--avatar-border-radius); - background-color: var(--surface-background-color); img { width: 100%; @@ -2087,7 +2086,11 @@ body > [data-popper-placement] { display: inline-block; // to not show broken images } - &-inline { + &--loading { + background-color: var(--surface-background-color); + } + + &--inline { display: inline-block; vertical-align: middle; margin-inline-end: 5px; From bfabd6a2b882c4eca186e8fe47ce98a47f74662f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 7 Oct 2024 08:02:04 -0400 Subject: [PATCH 113/550] Move account suspension-related methods to concern (#28351) --- app/models/account.rb | 38 +------------------ app/models/concerns/account/suspensions.rb | 44 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 app/models/concerns/account/suspensions.rb diff --git a/app/models/account.rb b/app/models/account.rb index 3b841e7c77..708415b6ee 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -89,6 +89,7 @@ class Account < ApplicationRecord include Account::Merging include Account::Search include Account::StatusesSearch + include Account::Suspensions include Account::AttributionDomains include DomainMaterializable include DomainNormalizable @@ -127,9 +128,7 @@ class Account < ApplicationRecord scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } scope :silenced, -> { where.not(silenced_at: nil) } - scope :suspended, -> { where.not(suspended_at: nil) } scope :sensitized, -> { where.not(sensitized_at: nil) } - scope :without_suspended, -> { where(suspended_at: nil) } scope :without_silenced, -> { where(silenced_at: nil) } scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) } scope :recent, -> { reorder(id: :desc) } @@ -255,41 +254,6 @@ class Account < ApplicationRecord update!(silenced_at: nil) end - def suspended? - suspended_at.present? && !instance_actor? - end - - def suspended_locally? - suspended? && suspension_origin_local? - end - - def suspended_permanently? - suspended? && deletion_request.nil? - end - - def suspended_temporarily? - suspended? && deletion_request.present? - end - - alias unavailable? suspended? - alias permanently_unavailable? suspended_permanently? - - def suspend!(date: Time.now.utc, origin: :local, block_email: true) - transaction do - create_deletion_request! - update!(suspended_at: date, suspension_origin: origin) - create_canonical_email_block! if block_email - end - end - - def unsuspend! - transaction do - deletion_request&.destroy! - update!(suspended_at: nil, suspension_origin: nil) - destroy_canonical_email_block! - end - end - def sensitized? sensitized_at.present? end diff --git a/app/models/concerns/account/suspensions.rb b/app/models/concerns/account/suspensions.rb new file mode 100644 index 0000000000..c981fb5a29 --- /dev/null +++ b/app/models/concerns/account/suspensions.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module Account::Suspensions + extend ActiveSupport::Concern + + included do + scope :suspended, -> { where.not(suspended_at: nil) } + scope :without_suspended, -> { where(suspended_at: nil) } + end + + def suspended? + suspended_at.present? && !instance_actor? + end + alias unavailable? suspended? + + def suspended_locally? + suspended? && suspension_origin_local? + end + + def suspended_permanently? + suspended? && deletion_request.nil? + end + alias permanently_unavailable? suspended_permanently? + + def suspended_temporarily? + suspended? && deletion_request.present? + end + + def suspend!(date: Time.now.utc, origin: :local, block_email: true) + transaction do + create_deletion_request! + update!(suspended_at: date, suspension_origin: origin) + create_canonical_email_block! if block_email + end + end + + def unsuspend! + transaction do + deletion_request&.destroy! + update!(suspended_at: nil, suspension_origin: nil) + destroy_canonical_email_block! + end + end +end From 4238da6ee3c93dfd5752e9133cbec958f8ebb18a Mon Sep 17 00:00:00 2001 From: Leni Kadali <52788034+lenikadali@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:05:46 +0300 Subject: [PATCH 114/550] Add error message when user tries to follow their own account (#31910) --- app/controllers/api/v1/accounts_controller.rb | 5 +++++ config/locales/en.yml | 1 + spec/requests/api/v1/accounts_spec.rb | 20 +++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 84b604b305..28acaeea05 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -16,6 +16,7 @@ class Api::V1::AccountsController < Api::BaseController before_action :check_account_confirmation, except: [:index, :create] before_action :check_enabled_registrations, only: [:create] before_action :check_accounts_limit, only: [:index] + before_action :check_following_self, only: [:follow] skip_before_action :require_authenticated_user!, only: :create @@ -101,6 +102,10 @@ class Api::V1::AccountsController < Api::BaseController raise(Mastodon::ValidationError) if account_ids.size > DEFAULT_ACCOUNTS_LIMIT end + def check_following_self + render json: { error: I18n.t('accounts.self_follow_error') }, status: 403 if current_user.account.id == @account.id + end + def relationships(**options) AccountRelationshipsPresenter.new([@account], current_user.account_id, **options) end diff --git a/config/locales/en.yml b/config/locales/en.yml index 42327ae183..c88ef3fa20 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -21,6 +21,7 @@ en: one: Post other: Posts posts_tab_heading: Posts + self_follow_error: Following your own account is not allowed admin: account_actions: action: Perform action diff --git a/spec/requests/api/v1/accounts_spec.rb b/spec/requests/api/v1/accounts_spec.rb index 45e66f0744..16010ae2e7 100644 --- a/spec/requests/api/v1/accounts_spec.rb +++ b/spec/requests/api/v1/accounts_spec.rb @@ -163,6 +163,26 @@ RSpec.describe '/api/v1/accounts' do end end + context 'when user tries to follow their own account' do + subject do + post "/api/v1/accounts/#{other_account.id}/follow", headers: headers + end + + let(:locked) { false } + let(:other_account) { user.account } + + it 'returns http forbidden and error message' do + subject + + error_msg = I18n.t('accounts.self_follow_error') + + expect(response).to have_http_status(403) + expect(response.parsed_body[:error]).to eq(error_msg) + end + + it_behaves_like 'forbidden for wrong scope', 'read:accounts' + end + context 'when modifying follow options' do let(:locked) { false } From 0c163659913f1d9d02cd8b5e45913846f2039c96 Mon Sep 17 00:00:00 2001 From: Jake Anto <64896514+jake-anto@users.noreply.github.com> Date: Tue, 8 Oct 2024 02:03:14 +0530 Subject: [PATCH 115/550] Prefer native apps over PWA (#27254) --- app/serializers/manifest_serializer.rb | 27 +++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index cf0164c24a..3496f329f8 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -8,7 +8,8 @@ class ManifestSerializer < ActiveModel::Serializer attributes :id, :name, :short_name, :icons, :theme_color, :background_color, :display, :start_url, :scope, - :share_target, :shortcuts + :share_target, :shortcuts, + :prefer_related_applications, :related_applications def id # This is set to `/home` because that was the old value of `start_url` and @@ -89,4 +90,28 @@ class ManifestSerializer < ActiveModel::Serializer }, ] end + + def prefer_related_applications + true + end + + def related_applications + [ + { + platform: 'play', + url: 'https://play.google.com/store/apps/details?id=org.joinmastodon.android', + id: 'org.joinmastodon.android', + }, + { + platform: 'itunes', + url: 'https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974', + id: 'id1571998974', + }, + { + platform: 'f-droid', + url: 'https://f-droid.org/en/packages/org.joinmastodon.android/', + id: 'org.joinmastodon.android', + }, + ] + end end From c60d4ecc82ce3dd2f2a00eaccf5231f03f24c31d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 09:38:43 +0200 Subject: [PATCH 116/550] Update dependency @reduxjs/toolkit to v2.2.8 (#32296) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 35fca2f8ad..5fc15f27e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3110,8 +3110,8 @@ __metadata: linkType: hard "@reduxjs/toolkit@npm:^2.0.1": - version: 2.2.7 - resolution: "@reduxjs/toolkit@npm:2.2.7" + version: 2.2.8 + resolution: "@reduxjs/toolkit@npm:2.2.8" dependencies: immer: "npm:^10.0.3" redux: "npm:^5.0.1" @@ -3125,7 +3125,7 @@ __metadata: optional: true react-redux: optional: true - checksum: 10c0/7761a91adac2b5e1d50a8163ba5441480bb86a3a80b7583037c27a88463394b132dd7592862fc2be03aa7ab98a6e1710549889986dc0d3f033c169a3ba2cb02e + checksum: 10c0/bf1356d71bfb82e5a181692c79c19b7bc19355260a9966f6562604c995f0cd0ce1154177ccd14095e8b319e73f64cfe86a4e46a83d24edba7876d4ae71fd5ae0 languageName: node linkType: hard From 562105c69a9166d3a7f8eb09f2221e3571697ba0 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Oct 2024 10:00:05 +0200 Subject: [PATCH 117/550] Fix source strings being uploaded to crowdin in merge groups (#32298) --- .github/workflows/crowdin-upload.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml index 62ad1150bc..4f4d917d15 100644 --- a/.github/workflows/crowdin-upload.yml +++ b/.github/workflows/crowdin-upload.yml @@ -1,7 +1,6 @@ name: Crowdin / Upload translations on: - merge_group: push: branches: - 'main' From ff3e2c9cfa857b5091a9119337728bf972763856 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 08:10:39 +0000 Subject: [PATCH 118/550] New Crowdin Translations (automated) (#32295) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/be.json | 1 + app/javascript/mastodon/locales/de.json | 2 +- config/locales/ca.yml | 1 + config/locales/da.yml | 1 + config/locales/de.yml | 1 + config/locales/eo.yml | 1 + config/locales/es-AR.yml | 1 + config/locales/es-MX.yml | 1 + config/locales/es.yml | 1 + config/locales/fi.yml | 1 + config/locales/fo.yml | 1 + config/locales/gl.yml | 1 + config/locales/he.yml | 1 + config/locales/is.yml | 1 + config/locales/ja.yml | 1 + config/locales/ko.yml | 1 + config/locales/nl.yml | 1 + config/locales/nn.yml | 1 + config/locales/pl.yml | 1 + config/locales/pt-BR.yml | 1 + config/locales/tr.yml | 1 + config/locales/uk.yml | 1 + config/locales/vi.yml | 1 + config/locales/zh-CN.yml | 1 + config/locales/zh-TW.yml | 1 + 25 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 797d8cc22e..d3a29eae40 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Ліміт перавышаны", "alert.unexpected.message": "Узнікла нечаканая памылка.", "alert.unexpected.title": "Вой!", + "alt_text_badge.title": "Альтернативный текст", "announcement.announcement": "Аб'ява", "attachments_list.unprocessed": "(неапрацаваны)", "audio.hide": "Схаваць аўдыя", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 3d8b57db4a..b807d93ab3 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -62,7 +62,7 @@ "account.requested_follow": "{name} möchte dir folgen", "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Geteilte Beiträge von @{name} anzeigen", - "account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} posts}}", + "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", "account.unblock": "Blockierung von @{name} aufheben", "account.unblock_domain": "Blockierung von {domain} aufheben", "account.unblock_short": "Blockierung aufheben", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index bb81aaa59c..cc2da496a6 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -21,6 +21,7 @@ ca: one: Tut other: Tuts posts_tab_heading: Tuts + self_follow_error: No es permet seguir el compte propi admin: account_actions: action: Realitza l'acció diff --git a/config/locales/da.yml b/config/locales/da.yml index 1f80503e91..923102c11f 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -21,6 +21,7 @@ da: one: Indlæg other: Indlæg posts_tab_heading: Indlæg + self_follow_error: Det er ikke tilladt at følge sin egen konto admin: account_actions: action: Udfør handling diff --git a/config/locales/de.yml b/config/locales/de.yml index 5f0b4ae353..cfd0d6510e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -21,6 +21,7 @@ de: one: Beitrag other: Beiträge posts_tab_heading: Beiträge + self_follow_error: Es ist nicht erlaubt, deinem eigenen Konto zu folgen admin: account_actions: action: Aktion ausführen diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 10b297f1a8..1e683b1725 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -21,6 +21,7 @@ eo: one: Afiŝo other: Mesaĝoj posts_tab_heading: Afiŝoj + self_follow_error: Sekvi vian propran konton ne estas permesita admin: account_actions: action: Plenumi agon diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index cfc24ce270..04ff7880a1 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -21,6 +21,7 @@ es-AR: one: Mensaje other: Mensajes posts_tab_heading: Mensajes + self_follow_error: No está permitido seguir tu propia cuenta admin: account_actions: action: Ejecutar acción diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 4e7ee657e6..2c18465a26 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -21,6 +21,7 @@ es-MX: one: Toot other: Toots posts_tab_heading: Toots + self_follow_error: No se permite seguir tu propia cuenta admin: account_actions: action: Realizar acción diff --git a/config/locales/es.yml b/config/locales/es.yml index bb9e5daff5..47d32c62c8 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -21,6 +21,7 @@ es: one: Publicación other: Publicaciones posts_tab_heading: Publicaciones + self_follow_error: No está permitido seguir tu propia cuenta admin: account_actions: action: Realizar acción diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1767f9e63e..52ea0b374c 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -21,6 +21,7 @@ fi: one: Julkaisu other: viestiä posts_tab_heading: Julkaisut + self_follow_error: Oman tilisi seuraaminen ei ole sallittua admin: account_actions: action: Suorita toimi diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 55104eb6ff..fcf3eb031e 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -21,6 +21,7 @@ fo: one: Uppslag other: Uppsløg posts_tab_heading: Uppsløg + self_follow_error: Tað er ikki loyvt at fylgja tíni egnu kontu admin: account_actions: action: Frem atgerð diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 8460902a68..cdc9421324 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -21,6 +21,7 @@ gl: one: Publicación other: Publicacións posts_tab_heading: Publicacións + self_follow_error: Non está permitido seguir a túa propia conta admin: account_actions: action: Executar acción diff --git a/config/locales/he.yml b/config/locales/he.yml index f2732678b5..54b6b6f38d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -25,6 +25,7 @@ he: other: הודעות two: הודעותיים posts_tab_heading: הודעות + self_follow_error: בלתי אפשרי לך לעקוב אחרי חשבונך admin: account_actions: action: בצע/י פעולה diff --git a/config/locales/is.yml b/config/locales/is.yml index 6eefaf1b0e..f181470e49 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -21,6 +21,7 @@ is: one: Færsla other: Færslur posts_tab_heading: Færslur + self_follow_error: Ekki er leyft að fylgjast með eigin aðgangi admin: account_actions: action: Framkvæma aðgerð diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 54b7fb5412..bda5b2d8f6 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -19,6 +19,7 @@ ja: posts: other: 投稿 posts_tab_heading: 投稿 + self_follow_error: 自分のアカウントをフォローすることはできません admin: account_actions: action: アクションを実行 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index d20d67e4c3..615783738a 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -19,6 +19,7 @@ ko: posts: other: 게시물 posts_tab_heading: 게시물 + self_follow_error: 본인의 계정을 팔로우할 수는 없습니다 admin: account_actions: action: 조치 취하기 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 52ec4c89ce..968dcc3e7c 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -21,6 +21,7 @@ nl: one: Toot other: Berichten posts_tab_heading: Berichten + self_follow_error: Het volgen van je eigen account is niet toegestaan admin: account_actions: action: Actie uitvoeren diff --git a/config/locales/nn.yml b/config/locales/nn.yml index ec3db6520f..b28cf30162 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -21,6 +21,7 @@ nn: one: Tut other: Tut posts_tab_heading: Tut + self_follow_error: Det er ikkje tillate å følgje din eigen konto admin: account_actions: action: Utfør diff --git a/config/locales/pl.yml b/config/locales/pl.yml index aaf8a9e722..ba1f4812e9 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -25,6 +25,7 @@ pl: one: wpis other: Wpisów posts_tab_heading: Wpisy + self_follow_error: Nie możesz obserwować swojego konta admin: account_actions: action: Wykonaj działanie diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 427703f57e..8e806f670c 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -21,6 +21,7 @@ pt-BR: one: Publicação other: Publicações posts_tab_heading: Publicações + self_follow_error: Seguir sua conta não é permitido admin: account_actions: action: Tomar uma atitude diff --git a/config/locales/tr.yml b/config/locales/tr.yml index df55aa5a29..ee74f237ee 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -21,6 +21,7 @@ tr: one: Gönderi other: Gönderiler posts_tab_heading: Gönderiler + self_follow_error: Kendi hesabınızı takip etmenize izin yok admin: account_actions: action: Eylemi gerçekleştir diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 47732198f1..dec4299fb9 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -25,6 +25,7 @@ uk: one: Допис other: Дописів posts_tab_heading: Дописів + self_follow_error: Ви не можете стежити за власним обліковим записом admin: account_actions: action: Виконати дію diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 17edfba70a..7c30c5b127 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -19,6 +19,7 @@ vi: posts: other: Tút posts_tab_heading: Tút + self_follow_error: Bạn không thể tự theo dõi chính bạn admin: account_actions: action: Thực hiện hành động diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 7be8fb5a58..2654804697 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -19,6 +19,7 @@ zh-CN: posts: other: 嘟文 posts_tab_heading: 嘟文 + self_follow_error: 不可以关注自己 admin: account_actions: action: 执行操作 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 96aedf0a1c..c461aabcdc 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -19,6 +19,7 @@ zh-TW: posts: other: 嘟文 posts_tab_heading: 嘟文 + self_follow_error: 無法跟隨您自己的帳號 admin: account_actions: action: 執行動作 From c3a38c7d8c123f5bf736e20e0417fb3d70022391 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 8 Oct 2024 14:24:59 +0200 Subject: [PATCH 119/550] Update changelog and security policy (#32300) --- CHANGELOG.md | 26 ++++++++++++++++---------- SECURITY.md | 11 ++++++----- docker-compose.yml | 6 +++--- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eef082ccc..566c474356 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [4.3.0] - UNRELEASED +## [4.3.0] - 2024-10-08 The following changelog entries focus on changes visible to users, administrators, client developers or federated software developers, but there has also been a lot of code modernization, refactoring, and tooling work, in particular by @mjankowski. @@ -11,12 +11,12 @@ The following changelog entries focus on changes visible to users, administrator - **Add confirmation interstitial instead of silently redirecting logged-out visitors to remote resources** (#27792, #28902, and #30651 by @ClearlyClaire and @Gargron)\ This fixes a longstanding open redirect in Mastodon, at the cost of added friction when local links to remote resources are shared. - Fix ReDoS vulnerability on some Ruby versions ([GHSA-jpxp-r43f-rhvx](https://github.com/mastodon/mastodon/security/advisories/GHSA-jpxp-r43f-rhvx)) -- Change `form-action` Content-Security-Policy directive to be more restrictive (#26897 by @ClearlyClaire) +- Change `form-action` Content-Security-Policy directive to be more restrictive (#26897 and #32241 by @ClearlyClaire) - Update dependencies ### Added -- **Add server-side notification grouping** (#29889, #30576, #30685, #30688, #30707, #30776, #30779, #30781, #30440, #31062, #31098, #31076, #31111, #31123, #31223, #31214, #31224, #31299, #31325, #31347, #31304, #31326, #31384, #31403, #31433, #31509, #31486, #31513, #31592, #31594, #31638, #31746, #31652, #31709, #31725, #31745, #31613, #31657, #31840, #31610, #31929, #32089 and #32085 by @ClearlyClaire, @Gargron, @mgmn, and @renchap)\ +- **Add server-side notification grouping** (#29889, #30576, #30685, #30688, #30707, #30776, #30779, #30781, #30440, #31062, #31098, #31076, #31111, #31123, #31223, #31214, #31224, #31299, #31325, #31347, #31304, #31326, #31384, #31403, #31433, #31509, #31486, #31513, #31592, #31594, #31638, #31746, #31652, #31709, #31725, #31745, #31613, #31657, #31840, #31610, #31929, #32089, #32085, #32243, #32179 and #32254 by @ClearlyClaire, @Gargron, @mgmn, and @renchap)\ Group notifications of the same type for the same target, so that your notifications no longer get cluttered by boost and favorite notifications as soon as a couple of your posts get traction.\ This is done server-side so that clients can efficiently get relevant groups without having to go through numerous pages of individual notifications.\ As part of this, the visual design of the entire notifications feature has been revamped.\ @@ -28,7 +28,7 @@ The following changelog entries focus on changes visible to users, administrator - `GET /api/v2/notifications/:group_key/accounts`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-group-accounts - `POST /api/v2/notifications/:group_key/dimsiss`: https://docs.joinmastodon.org/methods/grouped_notifications/#dismiss-group - `GET /api/v2/notifications/:unread_count`: https://docs.joinmastodon.org/methods/grouped_notifications/#unread-group-count -- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, #31723 and #32062 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\ +- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, #31723, #32062 and #32281 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\ The old “Block notifications from non-followers”, “Block notifications from people you don't follow” and “Block direct messages from people you don't follow” notification settings have been replaced by a new set of settings found directly in the notification column.\ You can now separately filter or drop notifications from people you don't follow, people who don't follow you, accounts created within the past 30 days, as well as unsolicited private mentions, and accounts limited by the moderation.\ Instead of being outright dropped, notifications that you chose to filter are put in a separate “Filtered notifications” box that you can review separately without it clogging your main notifications.\ @@ -61,7 +61,7 @@ The following changelog entries focus on changes visible to users, administrator - **Add timeline of public posts about a trending link** (#30381 and #30840 by @Gargron)\ You can now see public posts mentioning currently-trending articles from people who have opted into discovery features.\ This adds a new REST API endpoint: https://docs.joinmastodon.org/methods/timelines/#link -- **Add author highlight for news articles whose authors are on the fediverse** (#30398, #30670, #30521, #30846, #31819, and #31900 by @Gargron and @oneiros)\ +- **Add author highlight for news articles whose authors are on the fediverse** (#30398, #30670, #30521, #30846, #31819, #31900 and #32188 by @Gargron, @mjankowski and @oneiros)\ This adds a mechanism to [highlight the author of news articles](https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/) shared on Mastodon.\ Articles hosted outside the fediverse can indicate a fediverse author with a meta tag: ```html @@ -150,10 +150,12 @@ The following changelog entries focus on changes visible to users, administrator - Add groundwork for annual reports for accounts (#28693 by @Gargron)\ This lays the groundwork for a “year-in-review”/“wrapped” style report for local users, but is currently not in use. - Add notification email on invalid second authenticator (#28822 by @ClearlyClaire) +- Add date of account deletion in list of accounts in the admin interface (#25640 by @tribela) - Add new emojis from `jdecked/twemoji` 15.0 (#28404 by @TheEssem) - Add configurable error handling in attachment batch deletion (#28184 by @vmstan)\ This makes the S3 batch size configurable through the `S3_BATCH_DELETE_LIMIT` environment variable (defaults to 1000), and adds some retry logic, configurable through the `S3_BATCH_DELETE_RETRY` environment variable (defaults to 3). - Add VAPID public key to instance serializer (#28006 by @ThisIsMissEm) +- Add support for serving JRD `/.well-known/host-meta.json` in addition to XRD host-meta (#32206 by @c960657) - Add `nodeName` and `nodeDescription` to nodeinfo `metadata` (#28079 by @6543) - Add Thai diacritics and tone marks in `HASHTAG_INVALID_CHARS_RE` (#26576 by @ppnplus) - Add variable delay before link verification of remote account links (#27774 by @ClearlyClaire) @@ -168,7 +170,7 @@ The following changelog entries focus on changes visible to users, administrator ### Changed -- **Change icons throughout the web interface** (#27385, #27539, #27555, #27579, #27700, #27817, #28519, #28709, #28064, #28775, #28780, #27924, #29294, #29395, #29537, #29569, #29610, #29612, #29649, #29844, #27780, #30974, #30963, #30962, #30961, #31362, #31363, #31359, #31371, #31360, #31512, #31511, and #31525 by @ClearlyClaire, @Gargron, @arbolitoloco1, @mjankowski, @nclm, @renchap, @ronilaukkarinen, and @zunda)\ +- **Change icons throughout the web interface** (#27385, #27539, #27555, #27579, #27700, #27817, #28519, #28709, #28064, #28775, #28780, #27924, #29294, #29395, #29537, #29569, #29610, #29612, #29649, #29844, #27780, #30974, #30963, #30962, #30961, #31362, #31363, #31359, #31371, #31360, #31512, #31511, #31525, #32153, and #32201 by @ClearlyClaire, @Gargron, @arbolitoloco1, @mjankowski, @nclm, @renchap, @ronilaukkarinen, and @zunda)\ This changes all the interface icons from FontAwesome to Material Symbols for a more modern look, consistent with the official Mastodon Android app.\ In addition, better care is given to pixel alignment, and icon variants are used to better highlight active/inactive state. - **Change design of compose form in web UI** (#28119, #29059, #29248, #29372, #29384, #29417, #29456, #29406, #29651, #29659, #31889 and #32033 by @ClearlyClaire, @Gargron, @eai04191, @hinaloe, and @ronilaukkarinen)\ @@ -192,9 +194,9 @@ The following changelog entries focus on changes visible to users, administrator Administrators may need to update their setup accordingly. - Change how content warnings and filters are displayed in web UI (#31365, and #31761 by @Gargron) - Change preview card processing to ignore `undefined` as canonical url (#31882 by @oneiros) -- Change embedded posts to use web UI (#31766 and #32135 by @Gargron) +- Change embedded posts to use web UI (#31766, #32135 and #32271 by @Gargron) - Change inner borders in media galleries in web UI (#31852 by @Gargron) -- Change design of media attachments and profile media tab in web UI (#31807, #32048, and #31967 by @Gargron) +- Change design of media attachments and profile media tab in web UI (#31807, #32048, #31967, #32217, #32224 and #32257 by @ClearlyClaire and @Gargron) - Change labels on thread indicators in web UI (#31806 by @Gargron) - Change label of "Data export" menu item in settings interface (#32099 by @c960657) - Change responsive break points on navigation panel in web UI (#32034 by @Gargron) @@ -284,9 +286,10 @@ The following changelog entries focus on changes visible to users, administrator - Fix error when accepting an appeal for sensitive posts deleted in the meantime (#32037 by @ClearlyClaire) - Fix error when encountering reblog of deleted post in feed rebuild (#32001 by @ClearlyClaire) - Fix Safari browser glitch related to horizontal scrolling (#31960 by @Gargron) +- Fix unresolvable mentions sometimes preventing processing incoming posts (#29215 by @tribela and @ClearlyClaire) - Fix too many requests caused by relationship look-ups in web UI (#32042 by @Gargron) - Fix links for reblogs in moderation interface (#31979 by @ClearlyClaire) -- Fix the appearance of avatars when they do not load (#31966 by @renchap) +- Fix the appearance of avatars when they do not load (#31966 and #32270 by @Gargron and @renchap) - Fix spurious error notifications for aborted requests in web UI (#31952 by @c960657) - Fix HTTP 500 error in `/api/v1/polls/:id/votes` when required `choices` parameter is missing (#25598 by @danielmbrasil) - Fix security context sometimes not being added in LD-Signed activities (#31871 by @ClearlyClaire) @@ -309,10 +312,12 @@ The following changelog entries focus on changes visible to users, administrator - Fix “Redirect URI” field not being marked as required in “New application” form (#30311 by @ThisIsMissEm) - Fix right-to-left text in preview cards (#30930 by @ClearlyClaire) - Fix rack attack `match_type` value typo in logging config (#30514 by @mjankowski) -- Fix various cases of duplicate, missing, or inconsistent borders or scrollbar styles (#31068, #31286, #31268, #31275, #31284, #31305, #31346, #31372, #31373, #31389, #31432, #31391, #31445 and #32091 by @ClearlyClaire, @valtlai and @vmstan) +- Fix various cases of duplicate, missing, or inconsistent borders or scrollbar styles (#31068, #31286, #31268, #31275, #31284, #31305, #31346, #31372, #31373, #31389, #31432, #31391, #31445, #32091, #32147 and #32137 by @ClearlyClaire, @mjankowski, @valtlai and @vmstan) +- Fix editing description of media uploads with custom thumbnails (#32221 by @ClearlyClaire) - Fix race condition in `POST /api/v1/push/subscription` (#30166 by @ClearlyClaire) - Fix post deletion not being delayed when those are part of an account warning (#30163 by @ClearlyClaire) - Fix rendering error on `/start` when not logged in (#30023 by @timothyjrogers) +- Fix unneeded requests to blocked domains when receiving relayed signed activities from them (#31161 by @ClearlyClaire) - Fix logo pushing header buttons out of view on certain conditions in mobile layout (#29787 by @ClearlyClaire) - Fix notification-related records not being reattributed when merging accounts (#29694 by @ClearlyClaire) - Fix results/query in `api/v1/featured_tags/suggestions` (#29597 by @mjankowski) @@ -322,6 +327,7 @@ The following changelog entries focus on changes visible to users, administrator - Fix full date display not respecting the locale 12/24h format (#29448 by @renchap) - Fix filters title and keywords overflow (#29396 by @GeopJr) - Fix incorrect date format in “Follows and followers” (#29390 by @JasonPunyon) +- Fix navigation item active highlight for some paths (#32159 by @mjankowski) - Fix “Edit media” modal sizing and layout when space-constrained (#27095 by @ronilaukkarinen) - Fix modal container bounds (#29185 by @nico3333fr) - Fix inefficient HTTP signature parsing using regexps and `StringScanner` (#29133 by @ClearlyClaire) diff --git a/SECURITY.md b/SECURITY.md index 156954ce02..43ab4454c4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -13,8 +13,9 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through ## Supported Versions -| Version | Supported | -| ------- | --------- | -| 4.2.x | Yes | -| 4.1.x | Yes | -| < 4.1 | No | +| Version | Supported | +| ------- | ---------------- | +| 4.3.x | Yes | +| 4.2.x | Yes | +| 4.1.x | Until 2025-04-08 | +| < 4.1 | No | diff --git a/docker-compose.yml b/docker-compose.yml index 41876d26f9..37cb16497f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: web: # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # build: . - image: ghcr.io/mastodon/mastodon:v4.3.0-rc.1 + image: ghcr.io/mastodon/mastodon:v4.3.0 restart: always env_file: .env.production command: bundle exec puma -C config/puma.rb @@ -83,7 +83,7 @@ services: # build: # dockerfile: ./streaming/Dockerfile # context: . - image: ghcr.io/mastodon/mastodon-streaming:v4.3.0-rc.1 + image: ghcr.io/mastodon/mastodon-streaming:v4.3.0 restart: always env_file: .env.production command: node ./streaming/index.js @@ -101,7 +101,7 @@ services: sidekiq: build: . - image: ghcr.io/mastodon/mastodon:v4.3.0-rc.1 + image: ghcr.io/mastodon/mastodon:v4.3.0 restart: always env_file: .env.production command: bundle exec sidekiq From 022c1ae6f2911db8c479e0b6b88cff1e3a79c47e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 08:52:52 -0400 Subject: [PATCH 120/550] Remove unused deprecator configuration (#32288) --- config/application.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/application.rb b/config/application.rb index 0013c78858..5e2f44453d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -96,10 +96,6 @@ module Mastodon config.middleware.use Rack::Attack config.middleware.use Mastodon::RackMiddleware - initializer :deprecator do |app| - app.deprecators[:mastodon] = ActiveSupport::Deprecation.new('4.3', 'mastodon/mastodon') - end - config.before_configuration do require 'mastodon/redis_configuration' ::REDIS_CONFIGURATION = Mastodon::RedisConfiguration.new From d20a899bb90c78c2290a947e36f19fff6654ad47 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 09:21:36 -0400 Subject: [PATCH 121/550] Bring icon vertical middle to applications list style (#32293) --- app/javascript/styles/mastodon/admin.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 0712a0d3f4..c7b32a9c9e 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1029,6 +1029,12 @@ a.name-tag, color: var(--user-role-accent); } +.applications-list { + .icon { + vertical-align: middle; + } +} + .announcements-list, .filters-list { border: 1px solid var(--background-border-color); From 3cf2d35c4947cb8fb12cb33c22b2832f823cb3a4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 09:23:30 -0400 Subject: [PATCH 122/550] Reference `IpBlock.severities` keys from CLI option check (#32291) --- lib/mastodon/cli/ip_blocks.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/cli/ip_blocks.rb b/lib/mastodon/cli/ip_blocks.rb index 3c5fdb275c..ef24f2e047 100644 --- a/lib/mastodon/cli/ip_blocks.rb +++ b/lib/mastodon/cli/ip_blocks.rb @@ -5,7 +5,7 @@ require_relative 'base' module Mastodon::CLI class IpBlocks < Base - option :severity, required: true, enum: %w(no_access sign_up_requires_approval sign_up_block), desc: 'Severity of the block' + option :severity, required: true, enum: IpBlock.severities.keys, desc: 'Severity of the block' option :comment, aliases: [:c], desc: 'Optional comment' option :duration, aliases: [:d], type: :numeric, desc: 'Duration of the block in seconds' option :force, type: :boolean, aliases: [:f], desc: 'Overwrite existing blocks' From f49161ab1d57969b105bd115af8c827fc817db61 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 09:30:54 -0400 Subject: [PATCH 123/550] Oauth system spec cleanup / helper method extraction (#32287) --- spec/system/oauth_spec.rb | 96 +++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 40 deletions(-) diff --git a/spec/system/oauth_spec.rb b/spec/system/oauth_spec.rb index 64ac75879e..14ffc163f0 100644 --- a/spec/system/oauth_spec.rb +++ b/spec/system/oauth_spec.rb @@ -24,28 +24,28 @@ RSpec.describe 'Using OAuth from an external app' do subject # It presents the user with an authorization page - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.authorize')) - - # Upon authorizing, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.authorize') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_authorize_text) # It grants the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be true + expect { click_on oauth_authorize_text } + .to change { user_has_grant_with_client_app? }.to(true) + + # Upon authorizing, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end it 'when rejecting the authorization request' do subject # It presents the user with an authorization page - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.deny')) - - # Upon denying, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.deny') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_deny_text) # It does not grant the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be false + expect { click_on oauth_deny_text } + .to_not change { user_has_grant_with_client_app? }.from(false) + + # Upon denying, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end # The tests in this context ensures that requests without PKCE parameters @@ -133,7 +133,6 @@ RSpec.describe 'Using OAuth from an external app' do end it 'when accepting the authorization request' do - params = { client_id: client_app.uid, response_type: 'code', redirect_uri: client_app.redirect_uri, scope: 'read' } visit "/oauth/authorize?#{params.to_query}" # It presents the user with a log-in page @@ -145,18 +144,17 @@ RSpec.describe 'Using OAuth from an external app' do # Logging in redirects to an authorization page fill_in_auth_details(email, password) - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.authorize')) - - # Upon authorizing, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.authorize') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_authorize_text) # It grants the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be true + expect { click_on oauth_authorize_text } + .to change { user_has_grant_with_client_app? }.to(true) + + # Upon authorizing, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end it 'when rejecting the authorization request' do - params = { client_id: client_app.uid, response_type: 'code', redirect_uri: client_app.redirect_uri, scope: 'read' } visit "/oauth/authorize?#{params.to_query}" # It presents the user with a log-in page @@ -168,21 +166,20 @@ RSpec.describe 'Using OAuth from an external app' do # Logging in redirects to an authorization page fill_in_auth_details(email, password) - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.authorize')) - - # Upon denying, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.deny') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_authorize_text) # It does not grant the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be false + expect { click_on oauth_deny_text } + .to_not change { user_has_grant_with_client_app? }.from(false) + + # Upon denying, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end context 'when the user has set up TOTP' do let(:user) { Fabricate(:user, email: email, password: password, otp_required_for_login: true, otp_secret: User.generate_otp_secret) } it 'when accepting the authorization request' do - params = { client_id: client_app.uid, response_type: 'code', redirect_uri: client_app.redirect_uri, scope: 'read' } visit "/oauth/authorize?#{params.to_query}" # It presents the user with a log-in page @@ -202,18 +199,17 @@ RSpec.describe 'Using OAuth from an external app' do # Filling in the correct TOTP code redirects to an app authorization page fill_in_otp_details(user.current_otp) - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.authorize')) - - # Upon authorizing, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.authorize') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_authorize_text) # It grants the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be true + expect { click_on oauth_authorize_text } + .to change { user_has_grant_with_client_app? }.to(true) + + # Upon authorizing, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end it 'when rejecting the authorization request' do - params = { client_id: client_app.uid, response_type: 'code', redirect_uri: client_app.redirect_uri, scope: 'read' } visit "/oauth/authorize?#{params.to_query}" # It presents the user with a log-in page @@ -233,14 +229,14 @@ RSpec.describe 'Using OAuth from an external app' do # Filling in the correct TOTP code redirects to an app authorization page fill_in_otp_details(user.current_otp) - expect(page).to have_content(I18n.t('doorkeeper.authorizations.buttons.authorize')) - - # Upon denying, it redirects to the apps' callback URL - click_on I18n.t('doorkeeper.authorizations.buttons.deny') - expect(page).to have_current_path(/\A#{client_app.redirect_uri}/, url: true) + expect(page).to have_content(oauth_authorize_text) # It does not grant the app access to the account - expect(Doorkeeper::AccessGrant.exists?(application: client_app, resource_owner_id: user.id)).to be false + expect { click_on oauth_deny_text } + .to_not change { user_has_grant_with_client_app? }.from(false) + + # Upon denying, it redirects to the apps' callback URL + expect(page).to redirect_to_callback_url end end # TODO: external auth @@ -252,4 +248,24 @@ RSpec.describe 'Using OAuth from an external app' do fill_in 'user_otp_attempt', with: value click_on I18n.t('auth.login') end + + def oauth_authorize_text + I18n.t('doorkeeper.authorizations.buttons.authorize') + end + + def oauth_deny_text + I18n.t('doorkeeper.authorizations.buttons.deny') + end + + def redirect_to_callback_url + have_current_path(/\A#{client_app.redirect_uri}/, url: true) + end + + def user_has_grant_with_client_app? + Doorkeeper::AccessGrant + .exists?( + application: client_app, + resource_owner_id: user.id + ) + end end From e8ec6667bd24028422abb68525db5b8f6a44c801 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 09:53:35 -0400 Subject: [PATCH 124/550] Extract wrapper constant for `HTTP::*` error classes (#32285) --- app/controllers/application_controller.rb | 2 +- app/controllers/concerns/api/error_handling.rb | 2 +- app/controllers/concerns/signature_verification.rb | 2 +- app/controllers/media_proxy_controller.rb | 2 +- app/lib/activitypub/activity/create.rb | 4 ++-- app/models/account_alias.rb | 2 +- app/models/account_migration.rb | 2 +- app/models/concerns/remotable.rb | 2 +- app/models/form/redirect.rb | 2 +- app/models/remote_follow.rb | 2 +- app/services/activitypub/process_account_service.rb | 6 +++--- app/services/activitypub/process_status_update_service.rb | 2 +- app/services/fetch_link_card_service.rb | 2 +- app/services/fetch_resource_service.rb | 2 +- app/services/import_service.rb | 2 +- app/services/process_mentions_service.rb | 2 +- app/services/software_update_check_service.rb | 2 +- app/services/verify_link_service.rb | 2 +- app/workers/refollow_worker.rb | 2 +- lib/exceptions.rb | 6 ++++++ lib/mastodon/cli/accounts.rb | 2 +- 21 files changed, 29 insertions(+), 23 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 62e3355ae6..40cae15b48 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -32,7 +32,7 @@ class ApplicationController < ActionController::Base rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests - rescue_from HTTP::Error, OpenSSL::SSL::SSLError, with: :internal_server_error + rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, with: :internal_server_error) rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight, ActiveRecord::SerializationFailure, with: :service_unavailable rescue_from Seahorse::Client::NetworkingError do |e| diff --git a/app/controllers/concerns/api/error_handling.rb b/app/controllers/concerns/api/error_handling.rb index ad559fe2d7..9ce4795b02 100644 --- a/app/controllers/concerns/api/error_handling.rb +++ b/app/controllers/concerns/api/error_handling.rb @@ -20,7 +20,7 @@ module Api::ErrorHandling render json: { error: 'Record not found' }, status: 404 end - rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do + rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::UnexpectedResponseError) do render json: { error: 'Remote data could not be fetched' }, status: 503 end diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 68f09ee023..6773c11099 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -80,7 +80,7 @@ module SignatureVerification fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)", signed_string: compare_signed_string, signature: signature_params['signature'] rescue SignatureVerificationError => e fail_with! e.message - rescue HTTP::Error, OpenSSL::SSL::SSLError => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError => e fail_with! "Failed to fetch remote data: #{e.message}" rescue Mastodon::UnexpectedResponseError fail_with! 'Failed to fetch remote data (got unexpected reply from server)' diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index c4230d62c3..09a28c7e37 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -13,7 +13,7 @@ class MediaProxyController < ApplicationController rescue_from ActiveRecord::RecordInvalid, with: :not_found rescue_from Mastodon::UnexpectedResponseError, with: :not_found rescue_from Mastodon::NotPermittedError, with: :not_found - rescue_from HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError, with: :internal_server_error + rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, with: :internal_server_error) def show with_redis_lock("media_download:#{params[:id]}") do diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 928803cd64..fd836f2305 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -199,7 +199,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return if account.nil? @mentions << Mention.new(account: account, silent: false) - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError @unresolved_mentions << tag['href'] end @@ -250,7 +250,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity media_attachment.download_file! media_attachment.download_thumbnail! media_attachment.save - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id) rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing media attachment: #{e}" diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb index 3b75919afe..a4a7427e24 100644 --- a/app/models/account_alias.rb +++ b/app/models/account_alias.rb @@ -35,7 +35,7 @@ class AccountAlias < ApplicationRecord def set_uri target_account = ResolveAccountService.new.call(acct) self.uri = ActivityPub::TagManager.instance.uri_for(target_account) unless target_account.nil? - rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error # Validation will take care of it end diff --git a/app/models/account_migration.rb b/app/models/account_migration.rb index 7a01e250e2..5df857e3ba 100644 --- a/app/models/account_migration.rb +++ b/app/models/account_migration.rb @@ -61,7 +61,7 @@ class AccountMigration < ApplicationRecord def set_target_account self.target_account = ResolveAccountService.new.call(acct, skip_cache: true) - rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError # Validation will take care of it end diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb index 8382c91599..80a99b35df 100644 --- a/app/models/concerns/remotable.rb +++ b/app/models/concerns/remotable.rb @@ -26,7 +26,7 @@ module Remotable public_send(:"#{attachment_name}=", ResponseWithLimit.new(response, limit)) end - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError => e Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" } public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present? raise e unless suppress_errors diff --git a/app/models/form/redirect.rb b/app/models/form/redirect.rb index 3cd5731e6d..ecacaa4d94 100644 --- a/app/models/form/redirect.rb +++ b/app/models/form/redirect.rb @@ -32,7 +32,7 @@ class Form::Redirect def set_target_account @target_account = ResolveAccountService.new.call(acct, skip_cache: true) - rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError # Validation will take care of it end diff --git a/app/models/remote_follow.rb b/app/models/remote_follow.rb index fa0586f57e..f9719b8670 100644 --- a/app/models/remote_follow.rb +++ b/app/models/remote_follow.rb @@ -66,7 +66,7 @@ class RemoteFollow def acct_resource @acct_resource ||= Webfinger.new("acct:#{acct}").perform - rescue Webfinger::Error, HTTP::ConnectionError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS nil end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index a7422b5d02..d9482efac1 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -127,13 +127,13 @@ class ActivityPub::ProcessAccountService < BaseService begin @account.avatar_remote_url = image_url('icon') || '' unless skip_download? @account.avatar = nil if @account.avatar_remote_url.blank? - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError RedownloadAvatarWorker.perform_in(rand(30..600).seconds, @account.id) end begin @account.header_remote_url = image_url('image') || '' unless skip_download? @account.header = nil if @account.header_remote_url.blank? - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id) end @account.statuses_count = outbox_total_items if outbox_total_items.present? @@ -276,7 +276,7 @@ class ActivityPub::ProcessAccountService < BaseService total_items = collection.is_a?(Hash) && collection['totalItems'].present? && collection['totalItems'].is_a?(Numeric) ? collection['totalItems'] : nil has_first_page = collection.is_a?(Hash) && collection['first'].present? @collections[type] = [total_items, has_first_page] - rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::LengthValidationError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::LengthValidationError @collections[type] = [nil, nil] end diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 1dbed27f28..9ec3f2b430 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -109,7 +109,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService media_attachment.download_file! if media_attachment.remote_url_previously_changed? media_attachment.download_thumbnail! if media_attachment.thumbnail_remote_url_previously_changed? media_attachment.save - rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id) rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing media attachment: #{e}" diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 7662fc1f29..bb526099d6 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -29,7 +29,7 @@ class FetchLinkCardService < BaseService end attach_card if @card&.persisted? - rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Encoding::UndefinedConversionError, ActiveRecord::RecordInvalid => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Encoding::UndefinedConversionError, ActiveRecord::RecordInvalid => e Rails.logger.debug { "Error fetching link #{@original_url}: #{e}" } nil end diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index b69015a5e9..949c289b6a 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -12,7 +12,7 @@ class FetchResourceService < BaseService return if url.blank? process(url) - rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e Rails.logger.debug { "Error fetching resource #{@url}: #{e}" } nil end diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 6dafb5a0bb..26fabacb96 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -115,7 +115,7 @@ class ImportService < BaseService next if status.nil? && ActivityPub::TagManager.instance.local_uri?(uri) status || ActivityPub::FetchRemoteStatusService.new.call(uri) - rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError nil rescue => e Rails.logger.warn "Unexpected error when importing bookmark: #{e}" diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 1c4c7805f1..2d3c766304 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -44,7 +44,7 @@ class ProcessMentionsService < BaseService if mention_undeliverable?(mentioned_account) begin mentioned_account = ResolveAccountService.new.call(Regexp.last_match(1)) - rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError mentioned_account = nil end end diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index c8ce1753f5..b9818c8199 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -22,7 +22,7 @@ class SoftwareUpdateCheckService < BaseService Request.new(:get, "#{api_url}?version=#{version}").add_headers('Accept' => 'application/json', 'User-Agent' => 'Mastodon update checker').perform do |res| return Oj.load(res.body_with_limit, mode: :strict) if res.code == 200 end - rescue HTTP::Error, OpenSSL::SSL::SSLError, Oj::ParseError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Oj::ParseError nil end diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb index c4f4191e1f..af5a5e4a95 100644 --- a/app/services/verify_link_service.rb +++ b/app/services/verify_link_service.rb @@ -10,7 +10,7 @@ class VerifyLinkService < BaseService return unless link_back_present? field.mark_verified! - rescue OpenSSL::SSL::SSLError, HTTP::Error, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e + rescue OpenSSL::SSL::SSLError, *Mastodon::HTTP_CONNECTION_ERRORS, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e Rails.logger.debug { "Error fetching link #{@url}: #{e}" } nil end diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb index 4b712d3aae..078c8502d8 100644 --- a/app/workers/refollow_worker.rb +++ b/app/workers/refollow_worker.rb @@ -21,7 +21,7 @@ class RefollowWorker # Schedule re-follow begin FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_limit: true) - rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError + rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError next end end diff --git a/lib/exceptions.rb b/lib/exceptions.rb index c2ff162a6e..9c32cb6dda 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -36,4 +36,10 @@ module Mastodon super() end end + + HTTP_CONNECTION_ERRORS = [ + HTTP::ConnectionError, + HTTP::Error, + HTTP::TimeoutError, + ].freeze end diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index 08a28e5f5c..6f0de0fd6a 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -305,7 +305,7 @@ module Mastodon::CLI begin code = Request.new(:head, account.uri).perform(&:code) - rescue HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError, Mastodon::PrivateNetworkAddressError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::PrivateNetworkAddressError skip_domains << account.domain end From 258dce125668ccac45d6d0958da1c841ab7cfcee Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 8 Oct 2024 10:59:51 -0400 Subject: [PATCH 125/550] Add `OpenSSL::SSL::SSLError` to http connection errors wrapper (#32307) --- app/controllers/application_controller.rb | 2 +- app/controllers/concerns/signature_verification.rb | 2 +- app/controllers/media_proxy_controller.rb | 2 +- app/lib/activitypub/activity/create.rb | 4 ++-- app/models/account_alias.rb | 2 +- app/models/account_migration.rb | 2 +- app/models/concerns/remotable.rb | 2 +- app/models/form/redirect.rb | 2 +- app/services/activitypub/process_account_service.rb | 6 +++--- app/services/activitypub/process_status_update_service.rb | 2 +- app/services/fetch_link_card_service.rb | 2 +- app/services/fetch_resource_service.rb | 2 +- app/services/import_service.rb | 2 +- app/services/process_mentions_service.rb | 2 +- app/services/software_update_check_service.rb | 2 +- app/services/verify_link_service.rb | 2 +- app/workers/refollow_worker.rb | 2 +- lib/exceptions.rb | 1 + lib/mastodon/cli/accounts.rb | 2 +- 19 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 40cae15b48..d493bd43bf 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -32,7 +32,7 @@ class ApplicationController < ActionController::Base rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests - rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, with: :internal_server_error) + rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, with: :internal_server_error) rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight, ActiveRecord::SerializationFailure, with: :service_unavailable rescue_from Seahorse::Client::NetworkingError do |e| diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 6773c11099..4ae63632c0 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -80,7 +80,7 @@ module SignatureVerification fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)", signed_string: compare_signed_string, signature: signature_params['signature'] rescue SignatureVerificationError => e fail_with! e.message - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS => e fail_with! "Failed to fetch remote data: #{e.message}" rescue Mastodon::UnexpectedResponseError fail_with! 'Failed to fetch remote data (got unexpected reply from server)' diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index 09a28c7e37..f68d85e44e 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -13,7 +13,7 @@ class MediaProxyController < ApplicationController rescue_from ActiveRecord::RecordInvalid, with: :not_found rescue_from Mastodon::UnexpectedResponseError, with: :not_found rescue_from Mastodon::NotPermittedError, with: :not_found - rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, with: :internal_server_error) + rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, with: :internal_server_error) def show with_redis_lock("media_download:#{params[:id]}") do diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index fd836f2305..d04f7226a0 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -199,7 +199,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return if account.nil? @mentions << Mention.new(account: account, silent: false) - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS @unresolved_mentions << tag['href'] end @@ -250,7 +250,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity media_attachment.download_file! media_attachment.download_thumbnail! media_attachment.save - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id) rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing media attachment: #{e}" diff --git a/app/models/account_alias.rb b/app/models/account_alias.rb index a4a7427e24..41623ddedb 100644 --- a/app/models/account_alias.rb +++ b/app/models/account_alias.rb @@ -35,7 +35,7 @@ class AccountAlias < ApplicationRecord def set_uri target_account = ResolveAccountService.new.call(acct) self.uri = ActivityPub::TagManager.instance.uri_for(target_account) unless target_account.nil? - rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::Error # Validation will take care of it end diff --git a/app/models/account_migration.rb b/app/models/account_migration.rb index 5df857e3ba..7bda388f2a 100644 --- a/app/models/account_migration.rb +++ b/app/models/account_migration.rb @@ -61,7 +61,7 @@ class AccountMigration < ApplicationRecord def set_target_account self.target_account = ResolveAccountService.new.call(acct, skip_cache: true) - rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::Error, Addressable::URI::InvalidURIError # Validation will take care of it end diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb index 80a99b35df..15133e7bde 100644 --- a/app/models/concerns/remotable.rb +++ b/app/models/concerns/remotable.rb @@ -26,7 +26,7 @@ module Remotable public_send(:"#{attachment_name}=", ResponseWithLimit.new(response, limit)) end - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError => e + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS => e Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" } public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present? raise e unless suppress_errors diff --git a/app/models/form/redirect.rb b/app/models/form/redirect.rb index ecacaa4d94..c5b3c1f8f3 100644 --- a/app/models/form/redirect.rb +++ b/app/models/form/redirect.rb @@ -32,7 +32,7 @@ class Form::Redirect def set_target_account @target_account = ResolveAccountService.new.call(acct, skip_cache: true) - rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::Error, Addressable::URI::InvalidURIError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::Error, Addressable::URI::InvalidURIError # Validation will take care of it end diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index d9482efac1..df6f23c021 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -127,13 +127,13 @@ class ActivityPub::ProcessAccountService < BaseService begin @account.avatar_remote_url = image_url('icon') || '' unless skip_download? @account.avatar = nil if @account.avatar_remote_url.blank? - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS RedownloadAvatarWorker.perform_in(rand(30..600).seconds, @account.id) end begin @account.header_remote_url = image_url('image') || '' unless skip_download? @account.header = nil if @account.header_remote_url.blank? - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id) end @account.statuses_count = outbox_total_items if outbox_total_items.present? @@ -276,7 +276,7 @@ class ActivityPub::ProcessAccountService < BaseService total_items = collection.is_a?(Hash) && collection['totalItems'].present? && collection['totalItems'].is_a?(Numeric) ? collection['totalItems'] : nil has_first_page = collection.is_a?(Hash) && collection['first'].present? @collections[type] = [total_items, has_first_page] - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::LengthValidationError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::LengthValidationError @collections[type] = [nil, nil] end diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 9ec3f2b430..141ad24e92 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -109,7 +109,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService media_attachment.download_file! if media_attachment.remote_url_previously_changed? media_attachment.download_thumbnail! if media_attachment.thumbnail_remote_url_previously_changed? media_attachment.save - rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id) rescue Seahorse::Client::NetworkingError => e Rails.logger.warn "Error storing media attachment: #{e}" diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index bb526099d6..4141fb43df 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -29,7 +29,7 @@ class FetchLinkCardService < BaseService end attach_card if @card&.persisted? - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Encoding::UndefinedConversionError, ActiveRecord::RecordInvalid => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Encoding::UndefinedConversionError, ActiveRecord::RecordInvalid => e Rails.logger.debug { "Error fetching link #{@original_url}: #{e}" } nil end diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index 949c289b6a..911950ccca 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -12,7 +12,7 @@ class FetchResourceService < BaseService return if url.blank? process(url) - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e Rails.logger.debug { "Error fetching resource #{@url}: #{e}" } nil end diff --git a/app/services/import_service.rb b/app/services/import_service.rb index 26fabacb96..a695df2fc9 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -115,7 +115,7 @@ class ImportService < BaseService next if status.nil? && ActivityPub::TagManager.instance.local_uri?(uri) status || ActivityPub::FetchRemoteStatusService.new.call(uri) - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::UnexpectedResponseError nil rescue => e Rails.logger.warn "Unexpected error when importing bookmark: #{e}" diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb index 2d3c766304..3839eb4df4 100644 --- a/app/services/process_mentions_service.rb +++ b/app/services/process_mentions_service.rb @@ -44,7 +44,7 @@ class ProcessMentionsService < BaseService if mention_undeliverable?(mentioned_account) begin mentioned_account = ResolveAccountService.new.call(Regexp.last_match(1)) - rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::UnexpectedResponseError + rescue Webfinger::Error, *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::UnexpectedResponseError mentioned_account = nil end end diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index b9818c8199..24a6955b88 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -22,7 +22,7 @@ class SoftwareUpdateCheckService < BaseService Request.new(:get, "#{api_url}?version=#{version}").add_headers('Accept' => 'application/json', 'User-Agent' => 'Mastodon update checker').perform do |res| return Oj.load(res.body_with_limit, mode: :strict) if res.code == 200 end - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Oj::ParseError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Oj::ParseError nil end diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb index af5a5e4a95..17c86426be 100644 --- a/app/services/verify_link_service.rb +++ b/app/services/verify_link_service.rb @@ -10,7 +10,7 @@ class VerifyLinkService < BaseService return unless link_back_present? field.mark_verified! - rescue OpenSSL::SSL::SSLError, *Mastodon::HTTP_CONNECTION_ERRORS, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e Rails.logger.debug { "Error fetching link #{@url}: #{e}" } nil end diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb index 078c8502d8..7b26e4a062 100644 --- a/app/workers/refollow_worker.rb +++ b/app/workers/refollow_worker.rb @@ -21,7 +21,7 @@ class RefollowWorker # Schedule re-follow begin FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, languages: languages, bypass_limit: true) - rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError + rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS next end end diff --git a/lib/exceptions.rb b/lib/exceptions.rb index 9c32cb6dda..1910d37a13 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -41,5 +41,6 @@ module Mastodon HTTP::ConnectionError, HTTP::Error, HTTP::TimeoutError, + OpenSSL::SSL::SSLError, ].freeze end diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index 6f0de0fd6a..e76735298f 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -305,7 +305,7 @@ module Mastodon::CLI begin code = Request.new(:head, account.uri).perform(&:code) - rescue *Mastodon::HTTP_CONNECTION_ERRORS, OpenSSL::SSL::SSLError, Mastodon::PrivateNetworkAddressError + rescue *Mastodon::HTTP_CONNECTION_ERRORS, Mastodon::PrivateNetworkAddressError skip_domains << account.domain end From 0d91db3d77b0376cd4e17cbdb62585dfa2847fbd Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Oct 2024 14:13:32 +0200 Subject: [PATCH 126/550] Fix `latest` tag for 4.3 docker image builds (#32350) --- .github/workflows/build-releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-releases.yml b/.github/workflows/build-releases.yml index 3f0bef32ac..da9a458282 100644 --- a/.github/workflows/build-releases.yml +++ b/.github/workflows/build-releases.yml @@ -23,7 +23,7 @@ jobs: # Only tag with latest when ran against the latest stable branch # This needs to be updated after each minor version release flavor: | - latest=${{ startsWith(github.ref, 'refs/tags/v4.2.') }} + latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }} tags: | type=pep440,pattern={{raw}} type=pep440,pattern=v{{major}}.{{minor}} From 6d6565eee720c961bfe1ef56f289f0b0a0c0fbb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 16:24:24 +0200 Subject: [PATCH 127/550] Update dependency express to v4.21.1 (#32336) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5fc15f27e0..0c62c70f92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6392,10 +6392,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde languageName: node linkType: hard @@ -8396,15 +8396,15 @@ __metadata: linkType: hard "express@npm:^4.17.1, express@npm:^4.18.2": - version: 4.21.0 - resolution: "express@npm:4.21.0" + version: 4.21.1 + resolution: "express@npm:4.21.1" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" + cookie: "npm:0.7.1" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -8430,7 +8430,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10c0/4cf7ca328f3fdeb720f30ccb2ea7708bfa7d345f9cc460b64a82bf1b2c91e5b5852ba15a9a11b2a165d6089acf83457fc477dc904d59cd71ed34c7a91762c6cc + checksum: 10c0/0c287867e5f6129d3def1edd9b63103a53c40d4dc8628839d4b6827e35eb8f0de5a4656f9d85f4457eba584f9871ebb2ad26c750b36bd75d9bbb8bcebdc4892c languageName: node linkType: hard From fda52b2a521af9b743d97ae35964ec6fc0e97879 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Oct 2024 19:16:57 +0200 Subject: [PATCH 128/550] Fix 4 columns barely not fitting on 1920px screen (#32361) --- app/javascript/styles/mastodon/components.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 4ed05ead3f..6e386ff687 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2863,7 +2863,7 @@ $ui-header-logo-wordmark-width: 99px; } .column { - width: 400px; + width: clamp(380px, calc((100% - 350px) / 4), 400px); position: relative; box-sizing: border-box; display: flex; From 03dbebdfef47eda19b1b86e56004119f723e667e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Oct 2024 19:24:22 +0200 Subject: [PATCH 129/550] Fix list edition modal styling (#32358) --- .../styles/mastodon/components.scss | 111 ++++++++---------- 1 file changed, 50 insertions(+), 61 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 6e386ff687..78e5290139 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7961,7 +7961,6 @@ noscript { justify-content: flex-start; gap: 15px; align-items: center; - border: 1px solid var(--background-border-color); border-top: 0; label { @@ -7988,79 +7987,23 @@ noscript { background: rgba($base-overlay-background, 0.5); } +.list-adder, .list-editor { - background: $ui-base-color; + backdrop-filter: var(--background-filter); + background: var(--modal-background-color); + border: 1px solid var(--modal-border-color); flex-direction: column; border-radius: 8px; - box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); width: 380px; overflow: hidden; @media screen and (width <= 420px) { width: 90%; } - - h4 { - padding: 15px 0; - background: lighten($ui-base-color, 13%); - font-weight: 500; - font-size: 16px; - text-align: center; - border-radius: 8px 8px 0 0; - } - - .drawer__pager { - height: 50vh; - border-radius: 4px; - } - - .drawer__inner { - border-radius: 0 0 8px 8px; - - &.backdrop { - width: calc(100% - 60px); - box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); - border-radius: 0 0 0 8px; - } - } - - &__accounts { - overflow-y: auto; - } - - .account__display-name { - &:hover strong { - text-decoration: none; - } - } - - .account__avatar { - cursor: default; - } - - .search { - margin-bottom: 0; - } } .list-adder { - background: $ui-base-color; - flex-direction: column; - border-radius: 8px; - box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); - width: 380px; - overflow: hidden; - - @media screen and (width <= 420px) { - width: 90%; - } - - &__account { - background: lighten($ui-base-color, 13%); - } - &__lists { - background: lighten($ui-base-color, 13%); height: 50vh; border-radius: 0 0 8px 8px; overflow-y: auto; @@ -8081,6 +8024,52 @@ noscript { text-decoration: none; font-size: 16px; padding: 10px; + display: flex; + align-items: center; + gap: 4px; + } +} + +.list-editor { + h4 { + padding: 15px 0; + background: lighten($ui-base-color, 13%); + font-weight: 500; + font-size: 16px; + text-align: center; + border-radius: 8px 8px 0 0; + } + + .drawer__pager { + height: 50vh; + border: 0; + } + + .drawer__inner { + &.backdrop { + width: calc(100% - 60px); + box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); + border-radius: 0 0 0 8px; + } + } + + &__accounts { + background: unset; + overflow-y: auto; + } + + .account__display-name { + &:hover strong { + text-decoration: none; + } + } + + .account__avatar { + cursor: default; + } + + .search { + margin-bottom: 0; } } From d9fbb071da1904f3a4da90d055368f47b174224c Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 9 Oct 2024 19:29:02 +0200 Subject: [PATCH 130/550] Fix notification requests from suspended accounts still being listed (#32354) --- .../v1/notifications/requests_controller.rb | 2 +- app/models/notification_policy.rb | 2 +- app/models/notification_request.rb | 2 ++ spec/models/notification_policy_spec.rb | 18 ++++++++++++------ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/v1/notifications/requests_controller.rb b/app/controllers/api/v1/notifications/requests_controller.rb index 36ee073b9c..3c90f13ce2 100644 --- a/app/controllers/api/v1/notifications/requests_controller.rb +++ b/app/controllers/api/v1/notifications/requests_controller.rb @@ -52,7 +52,7 @@ class Api::V1::Notifications::RequestsController < Api::BaseController private def load_requests - requests = NotificationRequest.where(account: current_account).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id( + requests = NotificationRequest.where(account: current_account).without_suspended.includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id( limit_param(DEFAULT_ACCOUNTS_LIMIT), params_slice(:max_id, :since_id, :min_id) ) diff --git a/app/models/notification_policy.rb b/app/models/notification_policy.rb index 3b16f33d88..d22f871a37 100644 --- a/app/models/notification_policy.rb +++ b/app/models/notification_policy.rb @@ -62,6 +62,6 @@ class NotificationPolicy < ApplicationRecord private def pending_notification_requests - @pending_notification_requests ||= notification_requests.limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint')) + @pending_notification_requests ||= notification_requests.without_suspended.limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint')) end end diff --git a/app/models/notification_request.rb b/app/models/notification_request.rb index f0778b3af3..eb9ff93ab7 100644 --- a/app/models/notification_request.rb +++ b/app/models/notification_request.rb @@ -26,6 +26,8 @@ class NotificationRequest < ApplicationRecord before_save :prepare_notifications_count + scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) } + def self.preload_cache_collection(requests) cached_statuses_by_id = yield(requests.filter_map(&:last_status)).index_by(&:id) # Call cache_collection in block diff --git a/spec/models/notification_policy_spec.rb b/spec/models/notification_policy_spec.rb index 02a582bb08..7d1b494dd5 100644 --- a/spec/models/notification_policy_spec.rb +++ b/spec/models/notification_policy_spec.rb @@ -7,19 +7,25 @@ RSpec.describe NotificationPolicy do subject { Fabricate(:notification_policy) } let(:sender) { Fabricate(:account) } + let(:suspended_sender) { Fabricate(:account) } before do Fabricate.times(2, :notification, account: subject.account, activity: Fabricate(:status, account: sender), filtered: true, type: :mention) Fabricate(:notification_request, account: subject.account, from_account: sender) + + Fabricate(:notification, account: subject.account, activity: Fabricate(:status, account: suspended_sender), filtered: true, type: :mention) + Fabricate(:notification_request, account: subject.account, from_account: suspended_sender) + + suspended_sender.suspend! + subject.summarize! end - it 'sets pending_requests_count' do - expect(subject.pending_requests_count).to eq 1 - end - - it 'sets pending_notifications_count' do - expect(subject.pending_notifications_count).to eq 2 + it 'sets pending_requests_count and pending_notifications_count' do + expect(subject).to have_attributes( + pending_requests_count: 1, + pending_notifications_count: 2 + ) end end end From cdf603239e8bc78b4f7c06e3df96da6e6d7c7a57 Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Wed, 9 Oct 2024 14:33:28 -0500 Subject: [PATCH 131/550] Restore list column border (#32367) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 78e5290139..1f69dab7be 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7961,6 +7961,7 @@ noscript { justify-content: flex-start; gap: 15px; align-items: center; + border: 1px solid var(--background-border-color); border-top: 0; label { From a5a3733c9772424c29735b2ae1542e270186d24c Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Oct 2024 13:04:38 +0200 Subject: [PATCH 132/550] =?UTF-8?q?Fix=20=E2=80=9CMention=E2=80=9D=20appea?= =?UTF-8?q?ring=20for=20otherwise=20filtered=20posts=20(#32356)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/notification_with_status.tsx | 9 +++- app/javascript/mastodon/selectors/filters.ts | 50 +++++++++++++++++++ app/javascript/mastodon/selectors/index.js | 15 +----- 3 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 app/javascript/mastodon/selectors/filters.ts diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_with_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_with_status.tsx index a1c275a1f3..3e6428287d 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_with_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_with_status.tsx @@ -13,6 +13,7 @@ import { import type { IconProp } from 'mastodon/components/icon'; import { Icon } from 'mastodon/components/icon'; import Status from 'mastodon/containers/status_container'; +import { getStatusHidden } from 'mastodon/selectors/filters'; import { useAppSelector, useAppDispatch } from 'mastodon/store'; import { DisplayedName } from './displayed_name'; @@ -48,6 +49,12 @@ export const NotificationWithStatus: React.FC<{ (state) => state.statuses.getIn([statusId, 'visibility']) === 'direct', ); + const isFiltered = useAppSelector( + (state) => + statusId && + getStatusHidden(state, { id: statusId, contextType: 'notifications' }), + ); + const handlers = useMemo( () => ({ open: () => { @@ -73,7 +80,7 @@ export const NotificationWithStatus: React.FC<{ [dispatch, statusId], ); - if (!statusId) return null; + if (!statusId || isFiltered) return null; return ( diff --git a/app/javascript/mastodon/selectors/filters.ts b/app/javascript/mastodon/selectors/filters.ts new file mode 100644 index 0000000000..f84d01216a --- /dev/null +++ b/app/javascript/mastodon/selectors/filters.ts @@ -0,0 +1,50 @@ +import { createSelector } from '@reduxjs/toolkit'; + +import type { RootState } from 'mastodon/store'; +import { toServerSideType } from 'mastodon/utils/filters'; + +// TODO: move to `app/javascript/mastodon/models` and use more globally +type Filter = Immutable.Map; + +// TODO: move to `app/javascript/mastodon/models` and use more globally +type FilterResult = Immutable.Map; + +export const getFilters = createSelector( + [ + (state: RootState) => state.filters as Immutable.Map, + (_, { contextType }: { contextType: string }) => contextType, + ], + (filters, contextType) => { + if (!contextType) { + return null; + } + + const now = new Date(); + const serverSideType = toServerSideType(contextType); + + return filters.filter((filter) => { + const context = filter.get('context') as Immutable.List; + const expiration = filter.get('expires_at') as Date | null; + return ( + context.includes(serverSideType) && + (expiration === null || expiration > now) + ); + }); + }, +); + +export const getStatusHidden = ( + state: RootState, + { id, contextType }: { id: string; contextType: string }, +) => { + const filters = getFilters(state, { contextType }); + if (filters === null) return false; + + const filtered = state.statuses.getIn([id, 'filtered']) as + | Immutable.List + | undefined; + return filtered?.some( + (result) => + filters.getIn([result.get('filter'), 'filter_action']) === 'hide', + ); +}; diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index 10e1b167ca..345ceac49a 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -1,23 +1,12 @@ import { createSelector } from '@reduxjs/toolkit'; import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; -import { toServerSideType } from 'mastodon/utils/filters'; - import { me } from '../initial_state'; +import { getFilters } from './filters'; + export { makeGetAccount } from "./accounts"; -const getFilters = createSelector([state => state.get('filters'), (_, { contextType }) => contextType], (filters, contextType) => { - if (!contextType) { - return null; - } - - const now = new Date(); - const serverSideType = toServerSideType(contextType); - - return filters.filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || filter.get('expires_at') > now)); -}); - export const makeGetStatus = () => { return createSelector( [ From 9350cd31d74486c0b6a523f497a353350792b955 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 13:21:48 +0000 Subject: [PATCH 133/550] Update dependency postcss-preset-env to v10.0.7 (#32389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 388 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 199 insertions(+), 189 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0c62c70f92..548d94fc2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1533,13 +1533,13 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/cascade-layer-name-parser@npm:2.0.1" +"@csstools/cascade-layer-name-parser@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.2" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.1 - "@csstools/css-tokenizer": ^3.0.1 - checksum: 10c0/e1f9030285d1a16ca0424018289e5288e58dee2d6f6cc392e27d9e8eca0deeea4ced9b749eef09a8322746cb15b6304bc7e2d04bb9dc7405c29b3717ec80e736 + "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-tokenizer": ^3.0.2 + checksum: 10c0/2cc840445328400bb3e1e4186e6081e6519a23d9abde36a16c95892b6ad75155b3af3410d79fdda1c53a068384f970cabff4b5f5ba6867578168cbd3419016c8 languageName: node linkType: hard @@ -1550,42 +1550,42 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/css-calc@npm:2.0.1" +"@csstools/css-calc@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/css-calc@npm:2.0.2" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.1 - "@csstools/css-tokenizer": ^3.0.1 - checksum: 10c0/84c0ba3dac51466c9ac22c3540360f6058cf351a3676d71d4412584b165a91abc7c69a4ddf5a5dacc6e6082806d2317cf50ddbc0a0562275b2aedaee41cb87a9 + "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-tokenizer": ^3.0.2 + checksum: 10c0/b36e655b4abc8ea39b300725e33cd43b1875d759dd60bee8155bf7841065615a7f24cf53199382e30aa10bb137f64021043e4af7e11b7199b674a6e6cf3ccd01 languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/css-color-parser@npm:3.0.2" +"@csstools/css-color-parser@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-color-parser@npm:3.0.3" dependencies: "@csstools/color-helpers": "npm:^5.0.1" - "@csstools/css-calc": "npm:^2.0.1" + "@csstools/css-calc": "npm:^2.0.2" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.1 - "@csstools/css-tokenizer": ^3.0.1 - checksum: 10c0/31f42cc22426c937f5c6999889f72b40aec8504189a6badf3319552f27a5af73dd5f46be9ebc54eb87e526468eb2546ffbd60a6879fe599efa6c98e51d6cfa3d + "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-tokenizer": ^3.0.2 + checksum: 10c0/02367ffc222254132c47f9cbc856f65fe0b81ee4a5e7381251b95c4064138b5ed99a5e5a79c0c8689f9e75e3d900f94773258a161a97f467c3f0420838c10e04 languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/css-parser-algorithms@npm:3.0.1" +"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.2": + version: 3.0.2 + resolution: "@csstools/css-parser-algorithms@npm:3.0.2" peerDependencies: - "@csstools/css-tokenizer": ^3.0.1 - checksum: 10c0/064c6d519197b5af43bbf5efe8f4cdbd361b006113aa82160d637e925b50c643a52d33d512ca01c63042d952d723a2a10798231a714668356b76668fb11294e3 + "@csstools/css-tokenizer": ^3.0.2 + checksum: 10c0/246afbf518ee9eaa24ed7f083360eb66884f1172fd4f8c663bff8c6099de2a8abd1e2a31d5b6fe42e010277d238469d780cff62bc7fdc6a52e7a90626b8924dc languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/css-tokenizer@npm:3.0.1" - checksum: 10c0/c9ed4373e5731b5375ea9791590081019c04e95f08b46b272977e5e7b8c3d560affc62e82263cb8def1df1e57f0673140e7e16a14a5e7be04e6a234be088d1d3 +"@csstools/css-tokenizer@npm:^3.0.1, @csstools/css-tokenizer@npm:^3.0.2": + version: 3.0.2 + resolution: "@csstools/css-tokenizer@npm:3.0.2" + checksum: 10c0/a74e5829420ed35982fd33be272c2a19cb2380179d357abe750aa848be6d6699d0437008f47a57eb7c6ff64a34b0c8f91a97dd63dbddd08249b7cf7983767e5e languageName: node linkType: hard @@ -1599,6 +1599,16 @@ __metadata: languageName: node linkType: hard +"@csstools/media-query-list-parser@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/media-query-list-parser@npm:4.0.0" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-tokenizer": ^3.0.2 + checksum: 10c0/416417bcfd84c18a2df8dc77f31c87830e151dc20530fe7f0d8f13a0848b1a9090858abdf7792d82bf2edb41ddedb7b57b34eb78b68b5c10755ae02c019e496a + languageName: node + linkType: hard + "@csstools/postcss-cascade-layers@npm:^5.0.0": version: 5.0.0 resolution: "@csstools/postcss-cascade-layers@npm:5.0.0" @@ -1611,60 +1621,60 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-color-function@npm:4.0.2" +"@csstools/postcss-color-function@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-color-function@npm:4.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c987ccc7ab326668895396d3fe69c05087cf6e245be6f70e8c33da0cdeb56f8ac3d117cfad984191ec57be9691ab56d427aaa28c61c4a7446521972993dd5039 + checksum: 10c0/c994660ca0e2652755d9ad181c8cb46a07220c972086c97c843fa9bacf690be10c642770f898aeec4acc47c2b718dfc7372107285a678361f34d84d9e9c11e0c languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.2" +"@csstools/postcss-color-mix-function@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/cfdc641f504f9d02b9a7b53d6bd933d4e767ecaee5f3d2df45d897f69b8a38b5b79b538d307b16fb56dcb7c19dc7e107518c356772e89771e28e04fd846d9035 + checksum: 10c0/4ba358eb9030fc485bfe2922d897eeb712725762cc399eaba60ba665c84dc3e56a4d5a52dfb320093c0b217d32fedb9b5197fa45738cade53d9afcbefdadf04f languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-content-alt-text@npm:2.0.1" +"@csstools/postcss-content-alt-text@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.2" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/693e4cfa9a30a9c384120bd24846a7cd5ba1e1ebf975eb81b0e0131a21ac28a0301c7dcfa13706bc7d8b5343536fb43a46de636c3257d0fd05041c7255366e87 + checksum: 10c0/e52d40f6567b9b23b32a6c40f9b2a74d57f99a9921b4cae015f51f72453474236c760bb13120682f8815698a615e0ad7bed22314c29dca89c34b5480d83a7a6d languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.1" +"@csstools/postcss-exponential-functions@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.2" dependencies: - "@csstools/css-calc": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-calc": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/ddcaedfa48cc0cf93611c8d2ed5a75d56c1d196a97015db644b45881adabb47f3255242acaef6ea869a1e5ba66328725d254bf6d29eb5e988cde8b040bc5f55d + checksum: 10c0/034ff89089872f63a6b00bda670c5ff11361babd221ed3e441dde969a718059e5d44ab0ed331868f137bb205331b808ecbcc4cb641d5c945238ebca28aa3ed59 languageName: node linkType: hard @@ -1680,46 +1690,46 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.2" +"@csstools/postcss-gamut-mapping@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/8b6504f81c5036e3c2a9f9516c371f48a283112469b746546c8c7f6f0da2467c915d4dac6dfe8bb05d7dab3a7503911391eb9e666cb7632e09a032e801c029f5 + checksum: 10c0/21f5708f63e9c3b7603f8b72b5f288e0a021e9710a6abf4aaa713ff4d04bae057d1861e1f28d7670ea39ba463ac04f1507876d4a11178934e7cc7a1c6a780084 languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.2": - version: 5.0.2 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.2" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.3": + version: 5.0.3 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/4fa27437ad9861b1457c28228f2503c17bcc2f77dcb38da1314a4a5d38fd010e7e5d11b5f9d69e0a2cb2999bbfeca1e99ce2f59422bda5b382658dcb03f7326e + checksum: 10c0/062d27148438309c940a1973bfc7d42a06caa9397bf2382c7a61979f5be3d6f3fae1bc8ddf94d2dd8e6c807e0530a9e76179510266aaddc439677bf79447a765 languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-hwb-function@npm:4.0.2" +"@csstools/postcss-hwb-function@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-hwb-function@npm:4.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/46dc9596e37830de4c38f70764d6da9f2fc7bc339217b4291eced75daa8998c4e05fb743c271701e44818df4ac111c285019b7bb3a728e8b61d86899bbeb74eb + checksum: 10c0/faf2bfbafeec765391e37c7a5cbc7b4647d9ab1ffa51e922c7dfffa545c3d436d15604dfdfb9d7684e760042e62bb42e0243dd4ebd8c3c14694a9f7be4e57b30 languageName: node linkType: hard @@ -1757,17 +1767,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.4" +"@csstools/postcss-light-dark-function@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.5" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/0176422ad9747953964b1ceff002df1ecb1952ebc481db6192070d68777135b582ea6fd32ae819b9c64c96cb9170bd6907c647c85b48daa4984b7ed3d7f9bccb + checksum: 10c0/80635ee312d2a8f42aa5ce6792f1dc4a71199c384c66a3270d37e998d96db55beaa6836d689cda3b7e4828227960582fae04659ba5e4e0f64fd4543cbf15c6ab languageName: node linkType: hard @@ -1809,42 +1819,42 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.1" +"@csstools/postcss-logical-viewport-units@npm:^3.0.2": + version: 3.0.2 + resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.2" dependencies: - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/f54f91ec4d308562371576e82131c3cc1ff461a951c9a38f0b42b783c26f37a93cc846fcd025d3c4a8437b55a4fff1192ebfac8ccf84abb6478b2c515d232552 + checksum: 10c0/31f525e774bc053f545a159eb53bb21465ea2930118e87c40207ad90fa97d3151e6de83efd02f84803fb0e93ed4a4b42a3904b734423410e73ac4c6ce9666ab4 languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-media-minmax@npm:2.0.1" +"@csstools/postcss-media-minmax@npm:^2.0.2": + version: 2.0.2 + resolution: "@csstools/postcss-media-minmax@npm:2.0.2" dependencies: - "@csstools/css-calc": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" - "@csstools/media-query-list-parser": "npm:^3.0.1" + "@csstools/css-calc": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/media-query-list-parser": "npm:^4.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/23c1fb0c3ed8bf82f3223f161d0d65ba62045b917bc19624581f64aaa5d678485d22c23af2591a3f634ba02030ccb419c2b30209aa22f9fd2baa1a6474af810a + checksum: 10c0/83cf10742884fca3baa7ae26e2cb34123ce5a022622390566c139b4587ea8583fab00acbb85545786b36398e2201d2a94301e0fae805e55f375f1b5c38f67ce8 languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.1" +"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.2": + version: 3.0.2 + resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.2" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" - "@csstools/media-query-list-parser": "npm:^3.0.1" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/media-query-list-parser": "npm:^4.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e491cb149fb4fff85b2f03191511e43654ae00716e3c1ea9f1dc22ec4e7042c35f034d372082a69d3621c86cafbe46e8f419872fa36f4a534f145f584d655768 + checksum: 10c0/3ac4073d2e958bfb24ae45f673070dd805f0fcf07bc8d00a9a98f596d1096e7be282c8d8e87df3abde90f33fcbe2c7705e972b8c1a58e43ec44729f470b76096 languageName: node linkType: hard @@ -1871,18 +1881,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-oklab-function@npm:4.0.2" +"@csstools/postcss-oklab-function@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-oklab-function@npm:4.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3209a7cec6d3577544a7ef41f2d5cca25f77891d4ec0d7f39d32f9a79a6c9a9b0ee6b54b2937a2d995548ad11c39966b07d4b9f58e907ffbe1a4b454f2d277f3 + checksum: 10c0/650bcb4f664308972588a8f789f806d63c4069e2e008cfc3b5c80bf9df992c62972dce279b8f434c7f78823e97095942ee4f0e37bc549258887213e72acb7ef8 languageName: node linkType: hard @@ -1897,18 +1907,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.2" +"@csstools/postcss-relative-color-syntax@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/34a8c999e08c6e7833484ee2fb91e7fcc25235d6c361712fed581e44a5a29f1ceb95415b6f4260de53809ac13f5da5415d1905c2971477cf5d45e5196081c663 + checksum: 10c0/c241fe6b725d775f6d2085be1dff3868d189b176fa91ab1eb1133e30e30c8151bded4e50d17a845edd0bdd0a7adf9e8883cb2634fea3394872591fe9ad2a7e86 languageName: node linkType: hard @@ -1923,16 +1933,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.1": - version: 4.0.1 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.1" +"@csstools/postcss-stepped-value-functions@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.2" dependencies: - "@csstools/css-calc": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-calc": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/7e65969b124fce603675ca17c2ffa2bb456677866e54bc9fbdc4da0945be1593fde2abb0730d3d03190776ad2022b394a1f9d4834c5b1f4c7ec497929fd35f8f + checksum: 10c0/444a27d725bc7a8e1554469e8ac69e248ff525b728fbe058523b0f1aefcff80ca707f543d21fead0a22d51603b1669190fb01f0f2dcd599a01768a37e0d62bc3 languageName: node linkType: hard @@ -1948,16 +1958,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.1": - version: 4.0.1 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.1" +"@csstools/postcss-trigonometric-functions@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.2" dependencies: - "@csstools/css-calc": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-calc": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/59e017ebb9f4f8f027e134024e3322b5e202cc96073e0bb0d45733a829c8eadc7f4f7ce57ce8360a748a677595af9ea95da1779684699b48b911b73b4017ac8b + checksum: 10c0/eaecb2ea891162e4fcbbccf4f660c99e9e59f21937b70fe6aec3b51441eff2a12c1a2dc13fff426722629a7929919fd866311eaa68d74ee9d1f5387a23502fe2 languageName: node linkType: hard @@ -13352,18 +13362,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-color-functional-notation@npm:7.0.2" +"postcss-color-functional-notation@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-color-functional-notation@npm:7.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e89c0bff94558b0c978ac36f7e02f7f516291f90fd43169d39c63ad2bb0415e3b1c4b3c2469280d578727e850fdf15a557230cb28275f3f0676f0f73187f2867 + checksum: 10c0/5e04c81002512c960784043c096bc91ebc76b8fddb9259a2418b0e121eb65042944cc0f78946f6b7e5774ff1fee087849019655e4848af1f88879e3ab9ff7c17 languageName: node linkType: hard @@ -13417,46 +13427,46 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.2": - version: 11.0.2 - resolution: "postcss-custom-media@npm:11.0.2" +"postcss-custom-media@npm:^11.0.3": + version: 11.0.3 + resolution: "postcss-custom-media@npm:11.0.3" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" - "@csstools/media-query-list-parser": "npm:^3.0.1" + "@csstools/cascade-layer-name-parser": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/media-query-list-parser": "npm:^4.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/7bec2b1e0b5d786c33c5715b611ffc8b9737252ee6bf77ca59255ac16f91ce614406923f43250e5c88b04f1bb050f155dc5ed4d9350dbd704c45fbd72e5a9a04 + checksum: 10c0/bd3f0cf17d7422385d26afed510dc2acebb1d8c25fce13e2bbee1c49cdc7fe95ebe7f50b89ef0a88ebdd5f6826e89d99e26b905881ceff788df655670dba93d8 languageName: node linkType: hard -"postcss-custom-properties@npm:^14.0.1": - version: 14.0.1 - resolution: "postcss-custom-properties@npm:14.0.1" +"postcss-custom-properties@npm:^14.0.2": + version: 14.0.2 + resolution: "postcss-custom-properties@npm:14.0.2" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/cascade-layer-name-parser": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/12180a7f4a4fe2d528387346a1810b82ed870081756dcf6be226c839716ab3f6f4d6ca4c7208a07d7d84bf2c986beef6473e29964e7c2572066fca5d3b000ed5 + checksum: 10c0/ea2e0cb60c558bb1afb4e601dcc64a38e1b28e5df3e47b83b858fc12d909d0e3453013e6b368fc05a7db7098ffcdc702a30a92f1a3c0ef67dfb97bf089021f1a languageName: node linkType: hard -"postcss-custom-selectors@npm:^8.0.1": - version: 8.0.1 - resolution: "postcss-custom-selectors@npm:8.0.1" +"postcss-custom-selectors@npm:^8.0.2": + version: 8.0.2 + resolution: "postcss-custom-selectors@npm:8.0.2" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.1" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/cascade-layer-name-parser": "npm:^2.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" postcss-selector-parser: "npm:^6.1.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b867233b3d68fbab90afca8a776eb74196ebc3fac8988175d95118a47993c793138fec6cc580272bb35d9bd31086acbdd33ff86da0cab83ef2f08bfc1c23ecd6 + checksum: 10c0/81673ffb0874f63c0f5e14315a5808259ec80ae8452aaf10d28112d30a9aaabbf61d13edb02f8be2965f44b943968c7eda051a1693da436ef157e77fcff0d752 languageName: node linkType: hard @@ -13574,18 +13584,18 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-lab-function@npm:7.0.2" +"postcss-lab-function@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-lab-function@npm:7.0.3" dependencies: - "@csstools/css-color-parser": "npm:^3.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.1" - "@csstools/css-tokenizer": "npm:^3.0.1" + "@csstools/css-color-parser": "npm:^3.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6b2be7e762b4ccb58ea9051723d390f6732ad78bb30bfef9499139cf5e2ac160c3de31b2b005fcc30e9fced4abe1685df6cb76c99d548896bae6746105ac8520 + checksum: 10c0/c50a73a9ed54b4194998c4627599d1f42074235f572edbbcdb0e00717f3ae2121dc8378d917792b281860c5650a617d923823da6f395515f610b5760d115354d languageName: node linkType: hard @@ -13906,38 +13916,38 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.6 - resolution: "postcss-preset-env@npm:10.0.6" + version: 10.0.7 + resolution: "postcss-preset-env@npm:10.0.7" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.0" - "@csstools/postcss-color-function": "npm:^4.0.2" - "@csstools/postcss-color-mix-function": "npm:^3.0.2" - "@csstools/postcss-content-alt-text": "npm:^2.0.1" - "@csstools/postcss-exponential-functions": "npm:^2.0.1" + "@csstools/postcss-color-function": "npm:^4.0.3" + "@csstools/postcss-color-mix-function": "npm:^3.0.3" + "@csstools/postcss-content-alt-text": "npm:^2.0.2" + "@csstools/postcss-exponential-functions": "npm:^2.0.2" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.2" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.2" - "@csstools/postcss-hwb-function": "npm:^4.0.2" + "@csstools/postcss-gamut-mapping": "npm:^2.0.3" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.3" + "@csstools/postcss-hwb-function": "npm:^4.0.3" "@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-initial": "npm:^2.0.0" "@csstools/postcss-is-pseudo-class": "npm:^5.0.0" - "@csstools/postcss-light-dark-function": "npm:^2.0.4" + "@csstools/postcss-light-dark-function": "npm:^2.0.5" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" - "@csstools/postcss-logical-viewport-units": "npm:^3.0.1" - "@csstools/postcss-media-minmax": "npm:^2.0.1" - "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.1" + "@csstools/postcss-logical-viewport-units": "npm:^3.0.2" + "@csstools/postcss-media-minmax": "npm:^2.0.2" + "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.2" "@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.2" + "@csstools/postcss-oklab-function": "npm:^4.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.2" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.3" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.0" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.1" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.2" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.1" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.2" "@csstools/postcss-unset-value": "npm:^4.0.0" autoprefixer: "npm:^10.4.19" browserslist: "npm:^4.23.1" @@ -13947,12 +13957,12 @@ __metadata: cssdb: "npm:^8.1.1" postcss-attribute-case-insensitive: "npm:^7.0.0" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.2" + postcss-color-functional-notation: "npm:^7.0.3" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" - postcss-custom-media: "npm:^11.0.2" - postcss-custom-properties: "npm:^14.0.1" - postcss-custom-selectors: "npm:^8.0.1" + postcss-custom-media: "npm:^11.0.3" + postcss-custom-properties: "npm:^14.0.2" + postcss-custom-selectors: "npm:^8.0.2" postcss-dir-pseudo-class: "npm:^9.0.0" postcss-double-position-gradients: "npm:^6.0.0" postcss-focus-visible: "npm:^10.0.0" @@ -13960,7 +13970,7 @@ __metadata: postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.2" + postcss-lab-function: "npm:^7.0.3" postcss-logical: "npm:^8.0.0" postcss-nesting: "npm:^13.0.0" postcss-opacity-percentage: "npm:^3.0.0" @@ -13972,7 +13982,7 @@ __metadata: postcss-selector-not: "npm:^8.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/01660acf3b9ddf4d612a31819e9a5de9fe5383e9eddd2c130180f66ae90c5a881eb408e73454fd50e1839eae71678d738bf72073de08f9013c183b0bd9950fe5 + checksum: 10c0/f789000e0504fd827e854bb0feb8b4c218d381314e4d863c5a36df925df412d0844c912952fe27892a320433640aeaff03ee94a3057b42011bf5d32b3963f333 languageName: node linkType: hard From 3b07fe1bba713fb10f5c873dccb38f6875180c77 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Oct 2024 15:42:08 +0200 Subject: [PATCH 134/550] =?UTF-8?q?Fix=20=E2=80=9CMark=20every=20notificat?= =?UTF-8?q?ion=20as=20read=E2=80=9D=20not=20updating=20the=20read=20marker?= =?UTF-8?q?=20if=20scrolled=20down=20(#32385)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/javascript/mastodon/reducers/notification_groups.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index 8b033f0fc7..91e91d7549 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -559,7 +559,10 @@ export const notificationGroupsReducer = createReducer( compareId(state.lastReadId, mostRecentGroup.page_max_id) < 0 ) state.lastReadId = mostRecentGroup.page_max_id; - commitLastReadId(state); + + // We don't call `commitLastReadId`, because that is conditional + // and we want to unconditionally update the state instead. + state.readMarkerId = state.lastReadId; }) .addCase(fetchMarkers.fulfilled, (state, action) => { if ( From 22fd767425a02eb1b39d18a54053603772777b86 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 10 Oct 2024 16:53:12 +0200 Subject: [PATCH 135/550] Fix mute duration not being shown in list of muted accounts in web UI (#32388) --- app/javascript/mastodon/api_types/accounts.ts | 11 ++++++++++- app/javascript/mastodon/models/account.ts | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts index 5bf3e64288..fdbd7523fc 100644 --- a/app/javascript/mastodon/api_types/accounts.ts +++ b/app/javascript/mastodon/api_types/accounts.ts @@ -13,7 +13,7 @@ export interface ApiAccountRoleJSON { } // See app/serializers/rest/account_serializer.rb -export interface ApiAccountJSON { +export interface BaseApiAccountJSON { acct: string; avatar: string; avatar_static: string; @@ -45,3 +45,12 @@ export interface ApiAccountJSON { memorial?: boolean; hide_collections: boolean; } + +// See app/serializers/rest/muted_account_serializer.rb +export interface ApiMutedAccountJSON extends BaseApiAccountJSON { + mute_expires_at?: string | null; +} + +// For now, we have the same type representing both `Account` and `MutedAccount` +// objects, but we should refactor this in the future. +export type ApiAccountJSON = ApiMutedAccountJSON; diff --git a/app/javascript/mastodon/models/account.ts b/app/javascript/mastodon/models/account.ts index a04ebe6291..8e8e3b0e8d 100644 --- a/app/javascript/mastodon/models/account.ts +++ b/app/javascript/mastodon/models/account.ts @@ -95,6 +95,9 @@ export const accountDefaultValues: AccountShape = { limited: false, moved: null, hide_collections: false, + // This comes from `ApiMutedAccountJSON`, but we should eventually + // store that in a different object. + mute_expires_at: null, }; const AccountFactory = ImmutableRecord(accountDefaultValues); From bb0cf04d71783214aab0a65f410f76ba6989513c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Oct 2024 11:19:48 +0200 Subject: [PATCH 136/550] Add note about not changing ActiveRecord encryption secrets once they are set (#32413) --- lib/tasks/db.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index d8bc927bc4..79599bd917 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -8,7 +8,7 @@ namespace :db do desc 'Generate a set of keys for configuring Active Record encryption in a given environment' task :init do # rubocop:disable Rails/RakeEnvironment puts <<~MSG - Add these secret environment variables to your Mastodon environment (e.g. .env.production):#{' '} + Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=#{SecureRandom.alphanumeric(32)} ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=#{SecureRandom.alphanumeric(32)} From 10ea6da09ffc46a402800d22c81bad6dfa0beecb Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Oct 2024 12:24:03 +0200 Subject: [PATCH 137/550] Fix language of push notifications (#32415) --- app/workers/web/push_notification_worker.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb index 104503f130..e771928ef3 100644 --- a/app/workers/web/push_notification_worker.rb +++ b/app/workers/web/push_notification_worker.rb @@ -55,12 +55,8 @@ class Web::PushNotificationWorker end def push_notification_json - Oj.dump(serialized_notification_in_subscription_locale.as_json) - end - - def serialized_notification_in_subscription_locale I18n.with_locale(@subscription.locale.presence || I18n.default_locale) do - serialized_notification + Oj.dump(serialized_notification.as_json) end end From e15befebbd288faeec55ef6ad323d106f4ec57e1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 11 Oct 2024 16:16:37 +0200 Subject: [PATCH 138/550] Add tag with commit hash to PR image builds (#32418) --- .github/workflows/build-push-pr.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-push-pr.yml b/.github/workflows/build-push-pr.yml index 72baed5121..d3bc8e5df8 100644 --- a/.github/workflows/build-push-pr.yml +++ b/.github/workflows/build-push-pr.yml @@ -21,9 +21,11 @@ jobs: uses: actions/checkout@v4 - id: version_vars run: | - echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT + echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short ${{github.event.pull_request.head.sha}}) >> $GITHUB_OUTPUT + echo mastodon_short_sha=$(git rev-parse --short ${{github.event.pull_request.head.sha}}) >> $GITHUB_OUTPUT outputs: metadata: ${{ steps.version_vars.outputs.mastodon_version_metadata }} + short_sha: ${{ steps.version_vars.outputs.mastodon_short_sha }} build-image: needs: compute-suffix @@ -39,6 +41,7 @@ jobs: latest=auto tags: | type=ref,event=pr + type=ref,event=pr,suffix=-${{ needs.compute-suffix.outputs.short_sha }} secrets: inherit build-image-streaming: @@ -55,4 +58,5 @@ jobs: latest=auto tags: | type=ref,event=pr + type=ref,event=pr,suffix=-${{ needs.compute-suffix.outputs.short_sha }} secrets: inherit From b0dd38433beda1e72ed74e80b6523805fa0a9d56 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 14 Oct 2024 10:18:25 +0200 Subject: [PATCH 139/550] Fix follow recommendation suppressions not applying immediately (#32392) --- app/models/follow_recommendation.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb index 7ac9e6dfb9..0435437a81 100644 --- a/app/models/follow_recommendation.rb +++ b/app/models/follow_recommendation.rb @@ -18,5 +18,6 @@ class FollowRecommendation < ApplicationRecord belongs_to :account_summary, foreign_key: :account_id, inverse_of: false belongs_to :account - scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) } + scope :unsupressed, -> { where.not(FollowRecommendationSuppression.where(FollowRecommendationSuppression.arel_table[:account_id].eq(arel_table[:account_id])).select(1).arel.exists) } + scope :localized, ->(locale) { unsupressed.joins(:account_summary).merge(AccountSummary.localized(locale)) } end From de422a37e8092768a6e8bef45479c43da8681d5d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:22:46 +0200 Subject: [PATCH 140/550] Update dependency fuzzysort to v3.1.0 (#32460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 548d94fc2e..cd4ac5ce96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8934,9 +8934,9 @@ __metadata: linkType: hard "fuzzysort@npm:^3.0.0": - version: 3.0.2 - resolution: "fuzzysort@npm:3.0.2" - checksum: 10c0/c6cdbd092a8e91ed822aeac6d4fb95559759c10602cb29f27307c1cabd01fdd384fa399f7757722435b595244efb000cd63f144104c41b8551b2faff123279cb + version: 3.1.0 + resolution: "fuzzysort@npm:3.1.0" + checksum: 10c0/da9bb32de16f2a5c2c000b99031d9f4f8a01380c12d5d3b67296443a1152c55987ce3c4ddbfe97481b0e9b6f2fb77d61dceba29a93ad36ee23ef5bab6a31afb8 languageName: node linkType: hard From e9eac648964b1c3cdbbc49022bdf44483dba6b34 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 08:23:20 +0000 Subject: [PATCH 141/550] Update devDependencies (non-major) (#32457) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 98 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/yarn.lock b/yarn.lock index cd4ac5ce96..8c8c98bbc7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2267,8 +2267,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.2.12 - resolution: "@formatjs/cli@npm:6.2.12" + version: 6.2.15 + resolution: "@formatjs/cli@npm:6.2.15" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2297,7 +2297,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/3bd05a9fad6c837e22988e6638f426c128efa46ab80ff88cf2ad81fb3bc10cf4f228907577fc01e24c2d7d505cfabfaa69f0496d2ec8f0ab2d6b5eaccb5e475c + checksum: 10c0/e947aa7f3994251392fe15673752a8d8e3c8a30733bb49de5e617d45a327a3e1d16419e2d6b01f7ef2cbe86e2946024342d5b3301e6a8f17de3de9e2e7aedb29 languageName: node linkType: hard @@ -6622,10 +6622,10 @@ __metadata: languageName: node linkType: hard -"css-functions-list@npm:^3.2.2": - version: 3.2.2 - resolution: "css-functions-list@npm:3.2.2" - checksum: 10c0/8638a63d0cf1bdc50d4a752ec1c94a57e9953c3b03eace4f5526db20bec3c061e95089f905dbb4999c44b9780ce777ba856967560f6d15119a303f6030901c10 +"css-functions-list@npm:^3.2.3": + version: 3.2.3 + resolution: "css-functions-list@npm:3.2.3" + checksum: 10c0/03f9ed34eeed310d2b1cf0e524eea02bc5f87854a4de85f8957ea432ab1036841a3fb00879590519f7bb8fda40d992ce7a72fa9b61696ca1dc53b90064858f96 languageName: node linkType: hard @@ -6733,6 +6733,16 @@ __metadata: languageName: node linkType: hard +"css-tree@npm:^3.0.0": + version: 3.0.0 + resolution: "css-tree@npm:3.0.0" + dependencies: + mdn-data: "npm:2.10.0" + source-map-js: "npm:^1.0.1" + checksum: 10c0/43d44fdf7004ae91d73d486f17894fef77efa33747a6752b9241cf0f5fb47fabc16ec34a96a993651d9014dfdeee803d7c5fcd3548214252ee19f4e5c98999b2 + languageName: node + linkType: hard + "css-tree@npm:~2.2.0": version: 2.2.1 resolution: "css-tree@npm:2.2.1" @@ -6982,15 +6992,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:~4.3.6": - version: 4.3.6 - resolution: "debug@npm:4.3.6" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.3.7, debug@npm:~4.3.6": + version: 4.3.7 + resolution: "debug@npm:4.3.7" dependencies: - ms: "npm:2.1.2" + ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285 + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b languageName: node linkType: hard @@ -8577,12 +8587,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^9.0.0": - version: 9.0.0 - resolution: "file-entry-cache@npm:9.0.0" +"file-entry-cache@npm:^9.1.0": + version: 9.1.0 + resolution: "file-entry-cache@npm:9.1.0" dependencies: flat-cache: "npm:^5.0.0" - checksum: 10c0/07b0a4f062dc0aa258f3e1b06ac083ea25313f5e289943e146fafdaf3315dcc031635545eea7fe98fe5598b91d6c7f48dba7a251dd7ac20108a6ebf7d00b0b1c + checksum: 10c0/4b4dbc1e972f50202b1a4430d30fd99378ef6e2a64857176abdc65c5e4730a948fb37e274478520a7bacbc70f3abba455a4b9d2c1915c53f30d11dc85d3fef5e languageName: node linkType: hard @@ -9656,13 +9666,20 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.3.1, ignore@npm:^5.3.2": +"ignore@npm:^5.2.0, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard +"ignore@npm:^6.0.2": + version: 6.0.2 + resolution: "ignore@npm:6.0.2" + checksum: 10c0/9a38feac1861906a78ba0f03e8ef3cd6b0526dce2a1a84e1009324b557763afeb9c3ebcc04666b21f7bbf71adda45e76781bb9e2eaa0903d45dcaded634454f5 + languageName: node + linkType: hard + "immer@npm:^10.0.3": version: 10.0.3 resolution: "immer@npm:10.0.3" @@ -11828,6 +11845,13 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.10.0": + version: 2.10.0 + resolution: "mdn-data@npm:2.10.0" + checksum: 10c0/f6f1a6a6eb092bab250d06f6f6c7cb1733a77a17e7119aac829ad67d4322bbf6a30df3c6d88686e71942e66bd49274b2ddfede22a1d3df0d6c49a56fbd09eb7c + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -12207,14 +12231,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.1.1": +"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -14036,12 +14053,12 @@ __metadata: languageName: node linkType: hard -"postcss-safe-parser@npm:^7.0.0": - version: 7.0.0 - resolution: "postcss-safe-parser@npm:7.0.0" +"postcss-safe-parser@npm:^7.0.1": + version: 7.0.1 + resolution: "postcss-safe-parser@npm:7.0.1" peerDependencies: postcss: ^8.4.31 - checksum: 10c0/4217afd8ce2809e959dc365e4675f499303cc6b91f94db06c8164422822db2d3b3124df701ee2234db4127ad05619b016bfb9c2bccae9bf9cf898a396f1632c9 + checksum: 10c0/6957b10b818bd8d4664ec0e548af967f7549abedfb37f844d389571d36af681340f41f9477b9ccf34bcc7599bdef222d1d72e79c64373001fae77089fba6d965 languageName: node linkType: hard @@ -14105,7 +14122,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.41": +"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.47": version: 8.4.47 resolution: "postcss@npm:8.4.47" dependencies: @@ -16703,8 +16720,8 @@ __metadata: linkType: hard "stylelint@npm:^16.0.2": - version: 16.9.0 - resolution: "stylelint@npm:16.9.0" + version: 16.10.0 + resolution: "stylelint@npm:16.10.0" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.1" "@csstools/css-tokenizer": "npm:^3.0.1" @@ -16714,17 +16731,17 @@ __metadata: balanced-match: "npm:^2.0.0" colord: "npm:^2.9.3" cosmiconfig: "npm:^9.0.0" - css-functions-list: "npm:^3.2.2" - css-tree: "npm:^2.3.1" - debug: "npm:^4.3.6" + css-functions-list: "npm:^3.2.3" + css-tree: "npm:^3.0.0" + debug: "npm:^4.3.7" fast-glob: "npm:^3.3.2" fastest-levenshtein: "npm:^1.0.16" - file-entry-cache: "npm:^9.0.0" + file-entry-cache: "npm:^9.1.0" global-modules: "npm:^2.0.0" globby: "npm:^11.1.0" globjoin: "npm:^0.1.4" html-tags: "npm:^3.3.1" - ignore: "npm:^5.3.2" + ignore: "npm:^6.0.2" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" known-css-properties: "npm:^0.34.0" @@ -16733,21 +16750,20 @@ __metadata: micromatch: "npm:^4.0.8" normalize-path: "npm:^3.0.0" picocolors: "npm:^1.0.1" - postcss: "npm:^8.4.41" + postcss: "npm:^8.4.47" postcss-resolve-nested-selector: "npm:^0.1.6" - postcss-safe-parser: "npm:^7.0.0" + postcss-safe-parser: "npm:^7.0.1" postcss-selector-parser: "npm:^6.1.2" postcss-value-parser: "npm:^4.2.0" resolve-from: "npm:^5.0.0" string-width: "npm:^4.2.3" - strip-ansi: "npm:^7.1.0" supports-hyperlinks: "npm:^3.1.0" svg-tags: "npm:^1.0.0" table: "npm:^6.8.2" write-file-atomic: "npm:^5.0.1" bin: stylelint: bin/stylelint.mjs - checksum: 10c0/d3ff9c8945c56b04a2fa16ec33d163325496d5db94b6fcb5adf74c76f7f794ac992888273f9a3317652ba8b6195168b2ffff382ca2a667a241e2ace8c9505ae2 + checksum: 10c0/d07dd156c225d16c740995daacd78090f7fc317602e87bda2fca323a4ae427a8526d724f3089df3b2185df4520f987547668ceea9b30985988ccbc514034aa21 languageName: node linkType: hard From 05bc82e1ab7fab0beae7dc300d2dd369faf0504a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 08:24:10 +0000 Subject: [PATCH 142/550] Update dependency use-debounce to v10.0.4 (#32452) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8c8c98bbc7..30317f9a1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17662,11 +17662,11 @@ __metadata: linkType: hard "use-debounce@npm:^10.0.0": - version: 10.0.3 - resolution: "use-debounce@npm:10.0.3" + version: 10.0.4 + resolution: "use-debounce@npm:10.0.4" peerDependencies: react: "*" - checksum: 10c0/351b62c565d6dce5a21ecc21fe3e1f8db74f70c81c8f7d9dbdfc2da1cb82d883578589f6146e684d91dac534bc3c8b145ab1a36fbf4d44cbb4113827508b39aa + checksum: 10c0/73494fc44b2bd58a7ec799a528fc20077c45fe2e94fedff6dcd88d136f7a39f417d77f584d5613aac615ed32aeb2ea393797ae1f7d5b2645eab57cb497a6d0cb languageName: node linkType: hard From 555fb98cbb1f6e951d8ee0401bd95215ed8dd58c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:28:15 +0200 Subject: [PATCH 143/550] Update dependency typescript to v5.6.3 (#32456) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 30317f9a1f..fe975f3a75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17408,22 +17408,22 @@ __metadata: linkType: hard "typescript@npm:5, typescript@npm:^5.0.4": - version: 5.6.2 - resolution: "typescript@npm:5.6.2" + version: 5.6.3 + resolution: "typescript@npm:5.6.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/3ed8297a8c7c56b7fec282532503d1ac795239d06e7c4966b42d4330c6cf433a170b53bcf93a130a7f14ccc5235de5560df4f1045eb7f3550b46ebed16d3c5e5 + checksum: 10c0/44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 languageName: node linkType: hard "typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin": - version: 5.6.2 - resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f + checksum: 10c0/7c9d2e07c81226d60435939618c91ec2ff0b75fbfa106eec3430f0fcf93a584bc6c73176676f532d78c3594fe28a54b36eb40b3d75593071a7ec91301533ace7 languageName: node linkType: hard From 2343ce4441c2304da1e20adcb7d9262d71890abd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 08:28:47 +0000 Subject: [PATCH 144/550] Update dependency rack to v2.2.10 (#32455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1c2bb8df08..4c9cfe828e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -615,7 +615,7 @@ GEM activesupport (>= 3.0.0) raabro (1.4.0) racc (1.8.1) - rack (2.2.9) + rack (2.2.10) rack-attack (6.7.0) rack (>= 1.0, < 4) rack-cors (2.0.2) From 06d6b35e884dbfa10ba7cb0069b5dd8c25c76399 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 14 Oct 2024 04:31:12 -0400 Subject: [PATCH 145/550] Convert `admin/tags` controller specs to system specs (#32447) --- .../controllers/admin/tags_controller_spec.rb | 82 ------------------- spec/system/admin/tags_spec.rb | 38 +++++++++ 2 files changed, 38 insertions(+), 82 deletions(-) delete mode 100644 spec/controllers/admin/tags_controller_spec.rb create mode 100644 spec/system/admin/tags_spec.rb diff --git a/spec/controllers/admin/tags_controller_spec.rb b/spec/controllers/admin/tags_controller_spec.rb deleted file mode 100644 index 1df2bc4003..0000000000 --- a/spec/controllers/admin/tags_controller_spec.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::TagsController do - render_views - - before do - sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) - end - - describe 'GET #index' do - before do - Fabricate(:tag) - - tag_filter = instance_double(Admin::TagFilter, results: Tag.all) - allow(Admin::TagFilter).to receive(:new).and_return(tag_filter) - end - - let(:params) { { order: 'newest' } } - - it 'returns http success' do - get :index - - expect(response).to have_http_status(200) - expect(response).to render_template(:index) - - expect(Admin::TagFilter) - .to have_received(:new) - .with(hash_including(params)) - end - - describe 'with filters' do - let(:params) { { order: 'newest', name: 'test' } } - - it 'returns http success' do - get :index, params: { name: 'test' } - - expect(response).to have_http_status(200) - expect(response).to render_template(:index) - - expect(Admin::TagFilter) - .to have_received(:new) - .with(hash_including(params)) - end - end - end - - describe 'GET #show' do - let!(:tag) { Fabricate(:tag) } - - before do - get :show, params: { id: tag.id } - end - - it 'returns status 200' do - expect(response).to have_http_status(200) - end - end - - describe 'PUT #update' do - let!(:tag) { Fabricate(:tag, listable: false) } - - context 'with valid params' do - it 'updates the tag' do - put :update, params: { id: tag.id, tag: { listable: '1' } } - - expect(response).to redirect_to(admin_tag_path(tag.id)) - expect(tag.reload).to be_listable - end - end - - context 'with invalid params' do - it 'does not update the tag' do - put :update, params: { id: tag.id, tag: { name: 'cant-change-name' } } - - expect(response).to have_http_status(200) - expect(response).to render_template(:show) - end - end - end -end diff --git a/spec/system/admin/tags_spec.rb b/spec/system/admin/tags_spec.rb new file mode 100644 index 0000000000..a3eca80d13 --- /dev/null +++ b/spec/system/admin/tags_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin Tags' do + describe 'Tag interaction' do + let!(:tag) { Fabricate(:tag, name: 'test') } + + before { sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + it 'allows tags listing and editing' do + visit admin_tags_path + + expect(page) + .to have_title(I18n.t('admin.tags.title')) + + click_on '#test' + + fill_in display_name_field, with: 'NewTagName' + expect { click_on submit_button } + .to_not(change { tag.reload.display_name }) + expect(page) + .to have_content(match_error_text) + + fill_in display_name_field, with: 'TEST' + expect { click_on submit_button } + .to(change { tag.reload.display_name }.to('TEST')) + end + + def display_name_field + I18n.t('simple_form.labels.defaults.display_name') + end + + def match_error_text + I18n.t('tags.does_not_match_previous_name') + end + end +end From 2404d6d1a13d1e59f026c14403b89a328decabe3 Mon Sep 17 00:00:00 2001 From: Florian Kohler <13822756+FlohEinstein@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:57:34 +0200 Subject: [PATCH 146/550] Added Swiss German to languages dropdown (#29281) Co-authored-by: David Roetzel --- app/helpers/languages_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index b6c09b7314..394202e39a 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -193,6 +193,7 @@ module LanguagesHelper ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze, cnr: ['Montenegrin', 'crnogorski'].freeze, csb: ['Kashubian', 'Kaszëbsczi'].freeze, + gsw: ['Swiss German', 'Schwiizertütsch'].freeze, jbo: ['Lojban', 'la .lojban.'].freeze, kab: ['Kabyle', 'Taqbaylit'].freeze, ldn: ['Láadan', 'Láadan'].freeze, From d8eab3d81f1ab46026801d4698380110e25f7b44 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 14 Oct 2024 08:51:01 -0400 Subject: [PATCH 147/550] Reinforce coverage for `DomainBlock` model (#32473) --- app/models/domain_block.rb | 4 +++- spec/models/domain_block_spec.rb | 33 ++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index b5d1f2e079..2853f6457a 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -40,7 +40,9 @@ class DomainBlock < ApplicationRecord if suspend? [:suspend] else - [severity.to_sym, reject_media? ? :reject_media : nil, reject_reports? ? :reject_reports : nil].reject { |policy| policy == :noop || policy.nil? } + [severity.to_sym, reject_media? ? :reject_media : nil, reject_reports? ? :reject_reports : nil] + .reject { |policy| policy == :noop } + .compact end end diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb index 8278454cd7..14f904ea7f 100644 --- a/spec/models/domain_block_spec.rb +++ b/spec/models/domain_block_spec.rb @@ -3,14 +3,13 @@ require 'rails_helper' RSpec.describe DomainBlock do - describe 'validations' do + describe 'Validations' do it { is_expected.to validate_presence_of(:domain) } - it 'is invalid if the same normalized domain already exists' do - _domain_block = Fabricate(:domain_block, domain: 'にゃん') - domain_block_with_normalized_value = Fabricate.build(:domain_block, domain: 'xn--r9j5b5b') - domain_block_with_normalized_value.valid? - expect(domain_block_with_normalized_value).to model_have_error_on_field(:domain) + context 'when a normalized domain exists' do + before { Fabricate(:domain_block, domain: 'にゃん') } + + it { is_expected.to_not allow_value('xn--r9j5b5b').for(:domain) } end end @@ -105,4 +104,26 @@ RSpec.describe DomainBlock do end end end + + describe '#policies' do + subject { domain_block.policies } + + context 'when severity is suspend' do + let(:domain_block) { Fabricate.build :domain_block, severity: :suspend } + + it { is_expected.to eq(%i(suspend)) } + end + + context 'when severity is noop' do + let(:domain_block) { Fabricate.build :domain_block, severity: :noop, reject_media: true } + + it { is_expected.to eq(%i(reject_media)) } + end + + context 'when severity is silence' do + let(:domain_block) { Fabricate.build :domain_block, severity: :silence, reject_reports: true } + + it { is_expected.to eq(%i(silence reject_reports)) } + end + end end From cc70acc11cf488660ebd4a207633380e56cbf417 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 14 Oct 2024 08:52:47 -0400 Subject: [PATCH 148/550] Augment coverage for `Status` model (#32468) --- spec/models/status_spec.rb | 52 ++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index df67c365eb..90f5968438 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -472,11 +472,53 @@ RSpec.describe Status do end end - describe 'validation' do - it 'disallow empty uri for remote status' do - alice.update(domain: 'example.com') - status = Fabricate.build(:status, uri: '', account: alice) - expect(status).to model_have_error_on_field(:uri) + describe 'Validations' do + context 'with a remote account' do + subject { Fabricate.build :status, account: remote_account } + + let(:remote_account) { Fabricate :account, domain: 'example.com' } + + it { is_expected.to_not allow_value('').for(:uri) } + end + end + + describe 'Callbacks' do + describe 'Stripping content when required' do + context 'with a remote account' do + subject { Fabricate.build :status, local: false, account:, text: ' text ', spoiler_text: ' spoiler ' } + + let(:account) { Fabricate.build :account, domain: 'host.example' } + + it 'preserves content' do + expect { subject.valid? } + .to not_change(subject, :text) + .and not_change(subject, :spoiler_text) + end + end + + context 'with a local account' do + let(:account) { Fabricate.build :account, domain: nil } + + context 'with populated fields' do + subject { Fabricate.build :status, local: true, account:, text: ' text ', spoiler_text: ' spoiler ' } + + it 'strips content' do + expect { subject.valid? } + .to change(subject, :text).to('text') + .and change(subject, :spoiler_text).to('spoiler') + end + end + + context 'with empty fields' do + subject { Fabricate.build :status, local: true, account:, text: nil, spoiler_text: nil } + + it 'preserves content' do + expect { subject.valid? } + .to not_change(subject, :text) + .and not_change(subject, :spoiler_text) + end + end + end end end From ffa10323814b3ea0f15ac9cd2238164e42a873ad Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 14 Oct 2024 15:00:20 +0200 Subject: [PATCH 149/550] Add further warnings about encryption secrets (#32476) --- config/initializers/active_record_encryption.rb | 1 + lib/tasks/db.rake | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/config/initializers/active_record_encryption.rb b/config/initializers/active_record_encryption.rb index b7a874e404..c53f16d4d1 100644 --- a/config/initializers/active_record_encryption.rb +++ b/config/initializers/active_record_encryption.rb @@ -20,6 +20,7 @@ - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY Run `bin/rails db:encryption:init` to generate new secrets and then assign the environment variables. + Do not change the secrets once they are set, as doing so may cause data loss and other issues that will be difficult or impossible to recover from. MESSAGE end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 79599bd917..73de0c120f 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -7,6 +7,17 @@ namespace :db do namespace :encryption do desc 'Generate a set of keys for configuring Active Record encryption in a given environment' task :init do # rubocop:disable Rails/RakeEnvironment + if %w( + ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY + ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT + ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY + ).any? { |key| ENV.key?(key) } + pastel = Pastel.new + puts pastel.red(<<~MSG) + WARNING: It looks like encryption secrets have already been set. Please ensure you are not changing secrets for a Mastodon installation that already uses them, as this will cause data loss and other issues that are difficult to recover from. + MSG + end + puts <<~MSG Add the following secret environment variables to your Mastodon environment (e.g. .env.production), ensure they are shared across all your nodes and do not change them after they are set:#{' '} From 7c10b0fb7a078661558fef86399d86831423260c Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 14 Oct 2024 17:25:32 +0200 Subject: [PATCH 150/550] Fix follow recommendation carrousel scrolling on RTL layouts (#32462) --- .../components/inline_follow_suggestions.jsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx index 1b8040e55b..14ea6bd996 100644 --- a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx +++ b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx @@ -129,8 +129,13 @@ export const InlineFollowSuggestions = ({ hidden }) => { return; } - setCanScrollLeft(bodyRef.current.scrollLeft > 0); - setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth); + if (getComputedStyle(bodyRef.current).direction === 'rtl') { + setCanScrollLeft((bodyRef.current.clientWidth - bodyRef.current.scrollLeft) < bodyRef.current.scrollWidth); + setCanScrollRight(bodyRef.current.scrollLeft < 0); + } else { + setCanScrollLeft(bodyRef.current.scrollLeft > 0); + setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth); + } }, [setCanScrollRight, setCanScrollLeft, bodyRef, suggestions]); const handleLeftNav = useCallback(() => { From 6d99f848a2b7b1b89ca165b5f6a69d1c04f9e469 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 15 Oct 2024 09:40:18 +0200 Subject: [PATCH 151/550] Fix: Use consistent REDIS_USER environment variable in streaming (#32493) --- streaming/redis.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/streaming/redis.js b/streaming/redis.js index 2a36b89dc5..0b582ef2f5 100644 --- a/streaming/redis.js +++ b/streaming/redis.js @@ -50,9 +50,9 @@ function getSentinelConfiguration(env, commonOptions) { return { db: redisDatabase, name: env.REDIS_SENTINEL_MASTER, - username: env.REDIS_USERNAME, + username: env.REDIS_USER, password: env.REDIS_PASSWORD, - sentinelUsername: env.REDIS_SENTINEL_USERNAME ?? env.REDIS_USERNAME, + sentinelUsername: env.REDIS_SENTINEL_USERNAME ?? env.REDIS_USER, sentinelPassword: env.REDIS_SENTINEL_PASSWORD ?? env.REDIS_PASSWORD, sentinels, ...commonOptions, @@ -104,7 +104,7 @@ export function configFromEnv(env) { host: env.REDIS_HOST ?? '127.0.0.1', port: redisPort, db: redisDatabase, - username: env.REDIS_USERNAME, + username: env.REDIS_USER, password: env.REDIS_PASSWORD, ...commonOptions, }; From 51345e5133a7f7b84044b9aeebdf99fd769ddf40 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Tue, 15 Oct 2024 11:15:25 +0200 Subject: [PATCH 152/550] Fix back arrow pointing to the incorrect direction in RTL languages (#32485) --- app/javascript/styles/mastodon/rtl.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss index e4e299ff82..0a05ce7c62 100644 --- a/app/javascript/styles/mastodon/rtl.scss +++ b/app/javascript/styles/mastodon/rtl.scss @@ -35,6 +35,10 @@ body.rtl { direction: rtl; } + .column-back-button__icon { + transform: scale(-1, 1); + } + .simple_form select { background: $ui-base-color url("data:image/svg+xml;utf8,") From b5e8bc4dad663644a88e7bf78fa5365615a05736 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 09:16:14 +0000 Subject: [PATCH 153/550] Update dependency strong_migrations to v2.0.1 (#32503) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4c9cfe828e..dab5817031 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -822,7 +822,7 @@ GEM stoplight (4.1.0) redlock (~> 1.0) stringio (3.1.1) - strong_migrations (2.0.0) + strong_migrations (2.0.1) activerecord (>= 6.1) swd (1.3.0) activesupport (>= 3) From 5ac64153d9921df6c0a751cb97fb666c6fe902af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 09:16:29 +0000 Subject: [PATCH 154/550] Update dependency pghero to v3.6.1 (#32502) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index dab5817031..0de74c5ed6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -591,7 +591,7 @@ GEM pastel (0.8.0) tty-color (~> 0.5) pg (1.5.8) - pghero (3.6.0) + pghero (3.6.1) activerecord (>= 6.1) premailer (1.27.0) addressable From 7d89cea0ea0fb25657864b3f442639de14966137 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 09:26:28 +0000 Subject: [PATCH 155/550] New Crowdin Translations (automated) (#32339) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ast.json | 14 +-- app/javascript/mastodon/locales/cy.json | 2 + app/javascript/mastodon/locales/en-GB.json | 2 +- app/javascript/mastodon/locales/eo.json | 92 ++++++++-------- app/javascript/mastodon/locales/es-AR.json | 2 +- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/et.json | 11 ++ app/javascript/mastodon/locales/eu.json | 4 +- app/javascript/mastodon/locales/fa.json | 9 +- app/javascript/mastodon/locales/fil.json | 33 +++++- app/javascript/mastodon/locales/fr-CA.json | 6 +- app/javascript/mastodon/locales/fr.json | 6 +- app/javascript/mastodon/locales/ga.json | 1 + app/javascript/mastodon/locales/gd.json | 1 + app/javascript/mastodon/locales/ia.json | 41 +++++++ app/javascript/mastodon/locales/is.json | 7 ++ app/javascript/mastodon/locales/ja.json | 9 ++ app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/lad.json | 2 + app/javascript/mastodon/locales/ml.json | 26 ++++- app/javascript/mastodon/locales/ms.json | 2 + app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/oc.json | 9 ++ app/javascript/mastodon/locales/ru.json | 13 ++- app/javascript/mastodon/locales/sv.json | 17 +++ app/javascript/mastodon/locales/th.json | 4 + app/javascript/mastodon/locales/vi.json | 4 +- app/javascript/mastodon/locales/zh-CN.json | 54 +++++----- config/locales/activerecord.eo.yml | 2 +- config/locales/activerecord.ia.yml | 1 + config/locales/activerecord.ja.yml | 6 ++ config/locales/activerecord.ml.yml | 18 +++- config/locales/activerecord.zh-TW.yml | 2 +- config/locales/ast.yml | 5 +- config/locales/cy.yml | 101 ++++++++++++++++-- config/locales/devise.eo.yml | 2 +- config/locales/doorkeeper.ast.yml | 2 + config/locales/doorkeeper.es-MX.yml | 2 +- config/locales/doorkeeper.et.yml | 1 + config/locales/doorkeeper.fa.yml | 2 +- config/locales/doorkeeper.is.yml | 1 + config/locales/doorkeeper.ja.yml | 1 + config/locales/doorkeeper.sv.yml | 2 +- config/locales/doorkeeper.vi.yml | 24 ++--- config/locales/doorkeeper.zh-CN.yml | 2 +- config/locales/eo.yml | 29 ++++- config/locales/es-MX.yml | 8 +- config/locales/et.yml | 43 ++++++++ config/locales/fa.yml | 16 +++ config/locales/fr-CA.yml | 39 +++++++ config/locales/fr.yml | 39 +++++++ config/locales/ga.yml | 75 +++++++++++++ config/locales/gd.yml | 63 +++++++++++ config/locales/gl.yml | 4 +- config/locales/ia.yml | 60 +++++++++++ config/locales/is.yml | 38 +++++++ config/locales/it.yml | 3 +- config/locales/ja.yml | 47 ++++++-- config/locales/ko.yml | 6 +- config/locales/lad.yml | 9 ++ config/locales/lv.yml | 3 + config/locales/simple_form.ast.yml | 22 ++-- config/locales/simple_form.eo.yml | 2 + config/locales/simple_form.fa.yml | 4 + config/locales/simple_form.ja.yml | 3 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.vi.yml | 4 +- config/locales/sq.yml | 1 + config/locales/sv.yml | 24 ++++- config/locales/th.yml | 1 + config/locales/vi.yml | 118 ++++++++++----------- config/locales/zh-CN.yml | 20 ++-- 72 files changed, 1004 insertions(+), 230 deletions(-) diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 219ea0d17c..a7f44aeade 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -29,7 +29,7 @@ "account.followers": "Siguidores", "account.followers.empty": "Naide sigue a esti perfil.", "account.follows.empty": "Esti perfil nun sigue a naide.", - "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}", + "account.hide_reblogs": "Esconder los artículos compartíos de @{name}", "account.in_memoriam": "N'alcordanza.", "account.joined_short": "Data de xunión", "account.link_verified_on": "La propiedá d'esti enllaz comprobóse'l {date}", @@ -122,6 +122,7 @@ "conversation.open": "Ver la conversación", "conversation.with": "Con {names}", "copypaste.copied": "Copióse", + "copypaste.copy_to_clipboard": "Copiar nel cartafueyu", "directory.federated": "Del fediversu conocíu", "directory.local": "De «{domain}» namás", "directory.new_arrivals": "Cuentes nueves", @@ -130,7 +131,7 @@ "dismissable_banner.dismiss": "Escartar", "dismissable_banner.explore_tags": "Esta seición contién les etiquetes del fediversu que tán ganando popularidá güei. Les etiquetes más usaes polos perfiles apaecen no cimero.", "dismissable_banner.public_timeline": "Esta seición contién los artículos más nuevos de les persones na web social que les persones de {domain} siguen.", - "embed.instructions": "Empotra esti artículu nel to sitiu web pente la copia del códigu d'abaxo.", + "embed.instructions": "Empotra esti artículu nel to sitiu web copiando'l códigu d'abaxo.", "embed.preview": "Va apaecer asina:", "emoji_button.activity": "Actividá", "emoji_button.flags": "Banderes", @@ -251,7 +252,7 @@ "keyboard_shortcuts.requests": "Abrir la llista de solicitúes de siguimientu", "keyboard_shortcuts.search": "Enfocar la barra de busca", "keyboard_shortcuts.start": "Abrir la columna «Entamar»", - "keyboard_shortcuts.toggle_sensitivity": "Amosar/anubrir el conteníu multimedia", + "keyboard_shortcuts.toggle_sensitivity": "Amosar/esconder el conteníu multimedia", "keyboard_shortcuts.toot": "Comenzar un artículu nuevu", "keyboard_shortcuts.unfocus": "Desenfocar l'área de composición/busca", "keyboard_shortcuts.up": "Xubir na llista", @@ -418,11 +419,12 @@ "status.direct": "Mentar a @{name} per privao", "status.direct_indicator": "Mención privada", "status.edited_x_times": "Editóse {count, plural, one {{count} vegada} other {{count} vegaes}}", + "status.embed": "Consiguir el códigu pa empotrar", "status.filter": "Peñerar esti artículu", "status.history.created": "{name} creó {date}", "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", - "status.media_hidden": "Conteníu multimedia anubríu", + "status.media_hidden": "Conteníu multimedia escondíu", "status.mention": "Mentar a @{name}", "status.more": "Más", "status.mute": "Desactivar los avisos de @{name}", @@ -468,14 +470,14 @@ "upload_modal.applying": "Aplicando…", "upload_modal.detect_text": "Detectar el testu de la semeya", "upload_modal.edit_media": "Edición", - "upload_modal.hint": "Calca o arrastra'l círculu de la previsualización pa escoyer el puntu d'enfoque que siempres va tar a la vista en toles miniatures.", + "upload_modal.hint": "Calca o arrastra'l círculu de la previsualización pa escoyer el puntu d'enfoque que siempre va tar a la vista en toles miniatures.", "upload_progress.label": "Xubiendo…", "upload_progress.processing": "Procesando…", "video.close": "Zarrar el videu", "video.download": "Baxar el ficheru", "video.expand": "Espander el videu", "video.fullscreen": "Pantalla completa", - "video.hide": "Anubrir el videu", + "video.hide": "Esconder el videu", "video.mute": "Desactivar el soníu", "video.pause": "Posar", "video.play": "Reproducir", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 52dc6a49e2..43446f31e0 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -222,6 +222,7 @@ "domain_block_modal.they_cant_follow": "Ni all neb o'r gweinydd hwn eich dilyn.", "domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.", "domain_block_modal.title": "Blocio parth?", + "domain_block_modal.you_will_lose_num_followers": "Byddwch yn colli {followersCount, plural, one {{followersCountDisplay} dilynwr} other {{followersCountDisplay} dilynwyr}} a {followingCount, plural, one {{followingCountDisplay} person rydych yn dilyn} other {{followingCountDisplay} o bobl rydych yn eu dilyn}}.", "domain_block_modal.you_will_lose_relationships": "Byddwch yn colli'r holl ddilynwyr a phobl rydych chi'n eu dilyn o'r gweinydd hwn.", "domain_block_modal.you_wont_see_posts": "Fyddwch chi ddim yn gweld postiadau na hysbysiadau gan ddefnyddwyr ar y gweinydd hwn.", "domain_pill.activitypub_lets_connect": "Mae'n caniatáu ichi gysylltu a rhyngweithio â phobl nid yn unig ar Mastodon, ond ar draws gwahanol apiau cymdeithasol hefyd.", @@ -515,6 +516,7 @@ "notification.label.private_reply": "Ateb preifat", "notification.label.reply": "Ateb", "notification.mention": "Crybwyll", + "notification.mentioned_you": "Rydych wedi'ch crybwyll gan {name}", "notification.moderation-warning.learn_more": "Dysgu mwy", "notification.moderation_warning": "Rydych wedi derbyn rhybudd gan gymedrolwr", "notification.moderation_warning.action_delete_statuses": "Mae rhai o'ch postiadau wedi'u dileu.", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index da4c005203..d0b93d8bb8 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -791,7 +791,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Get embed code", "status.favourite": "Favourite", - "status.favourites": "{count, plural, one {favorite} other {favorites}}", + "status.favourites": "{count, plural, one {favourite} other {favourites}}", "status.filter": "Filter this post", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5f6582fb68..a6f6e0e85e 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -13,7 +13,7 @@ "about.rules": "Regularo de la servilo", "account.account_note_header": "Personaj notoj", "account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj", - "account.badges.bot": "Roboto", + "account.badges.bot": "Aŭtomata", "account.badges.group": "Grupo", "account.block": "Bloki @{name}", "account.block_domain": "Bloki la domajnon {domain}", @@ -86,7 +86,7 @@ "alert.unexpected.message": "Neatendita eraro okazis.", "alert.unexpected.title": "Aj!", "alt_text_badge.title": "Alt-teksto", - "announcement.announcement": "Anoncoj", + "announcement.announcement": "Anonco", "attachments_list.unprocessed": "(neprilaborita)", "audio.hide": "Kaŝi aŭdion", "block_modal.remote_users_caveat": "Ni petos al la servilo {domain} respekti vian elekton. Tamen, plenumo ne estas garantiita ĉar iuj serviloj eble manipulas blokojn malsame. Publikaj afiŝoj eble ankoraŭ estas videbla por ne-ensalutintaj uzantoj.", @@ -105,13 +105,13 @@ "bundle_column_error.error.title": "Ho, ve!", "bundle_column_error.network.body": "Okazis eraro dum ŝarĝado de ĉi tiu paĝo. Tion povas kaŭzi portempa problemo pri via retkonektado aŭ pri ĉi tiu servilo.", "bundle_column_error.network.title": "Eraro de reto", - "bundle_column_error.retry": "Provu refoje", + "bundle_column_error.retry": "Provu denove", "bundle_column_error.return": "Reiri hejmen", "bundle_column_error.routing.body": "La celita paĝo ne troveblas. Ĉu vi certas, ke la retadreso (URL) en via retfoliumilo estas ĝusta?", "bundle_column_error.routing.title": "404", "bundle_modal_error.close": "Fermi", "bundle_modal_error.message": "Io misfunkciis en la ŝargado de ĉi tiu elemento.", - "bundle_modal_error.retry": "Bonvolu reprovi", + "bundle_modal_error.retry": "Provu denove", "closed_registrations.other_server_instructions": "Ĉar Mastodon estas malcentraliza, vi povas krei konton ĉe alia servilo kaj ankoraŭ komuniki kun ĉi tiu.", "closed_registrations_modal.description": "Krei konton ĉe {domain} aktuale ne eblas, tamen bonvole rimarku, ke vi ne bezonas konton specife ĉe {domain} por uzi Mastodon.", "closed_registrations_modal.find_another_server": "Trovi alian servilon", @@ -182,8 +182,8 @@ "confirmations.edit.confirm": "Redakti", "confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.edit.title": "Ĉu superskribi afiŝon?", - "confirmations.logout.confirm": "Adiaŭi", - "confirmations.logout.message": "Ĉu vi certas ke vi volas adiaŭi?", + "confirmations.logout.confirm": "Elsaluti", + "confirmations.logout.message": "Ĉu vi certas, ke vi volas elsaluti?", "confirmations.logout.title": "Ĉu elsaluti?", "confirmations.mute.confirm": "Silentigi", "confirmations.redraft.confirm": "Forigi kaj reskribi", @@ -198,7 +198,7 @@ "content_warning.hide": "Kaŝi afiŝon", "content_warning.show": "Montri ĉiukaze", "conversation.delete": "Forigi konversacion", - "conversation.mark_as_read": "Marki legita", + "conversation.mark_as_read": "Marku kiel legita", "conversation.open": "Vidi konversacion", "conversation.with": "Kun {names}", "copy_icon_button.copied": "Kopiis al kliptabulo", @@ -247,18 +247,18 @@ "emoji_button.food": "Manĝi kaj trinki", "emoji_button.label": "Enmeti emoĝion", "emoji_button.nature": "Naturo", - "emoji_button.not_found": "Neniu emoĝio!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Neniuj kongruaj emoĝioj trovitaj", "emoji_button.objects": "Aĵoj", "emoji_button.people": "Homoj", "emoji_button.recent": "Ofte uzataj", - "emoji_button.search": "Serĉo…", + "emoji_button.search": "Serĉo...", "emoji_button.search_results": "Serĉaj rezultoj", "emoji_button.symbols": "Simboloj", "emoji_button.travel": "Vojaĝoj kaj lokoj", "empty_column.account_hides_collections": "Ĉi tiu uzanto elektis ne disponebligi ĉi tiu informon", "empty_column.account_suspended": "Konto suspendita", - "empty_column.account_timeline": "Neniu afiŝo ĉi tie!", - "empty_column.account_unavailable": "Profilo ne disponebla", + "empty_column.account_timeline": "Neniuj afiŝoj ĉi tie!", + "empty_column.account_unavailable": "Profilo nedisponebla", "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis afiŝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.", "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!", @@ -343,7 +343,7 @@ "hashtag.column_header.tag_mode.all": "kaj {additional}", "hashtag.column_header.tag_mode.any": "aŭ {additional}", "hashtag.column_header.tag_mode.none": "sen {additional}", - "hashtag.column_settings.select.no_options_message": "Neniu sugesto trovita", + "hashtag.column_settings.select.no_options_message": "Neniuj sugestoj trovitaj", "hashtag.column_settings.select.placeholder": "Enmeti kradvortojn…", "hashtag.column_settings.tag_mode.all": "Ĉiuj", "hashtag.column_settings.tag_mode.any": "Iu ajn", @@ -399,40 +399,40 @@ "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", - "keyboard_shortcuts.back": "reveni", + "keyboard_shortcuts.back": "Reiru reen", "keyboard_shortcuts.blocked": "Malfermi la liston de blokitaj uzantoj", "keyboard_shortcuts.boost": "Diskonigi la mesaĝon", "keyboard_shortcuts.column": "Fokusi kolumnon", - "keyboard_shortcuts.compose": "enfokusigi la tekstujon", + "keyboard_shortcuts.compose": "Enfokusigi la tekstaron", "keyboard_shortcuts.description": "Priskribo", "keyboard_shortcuts.direct": "por malfermi la kolumnon pri privataj mencioj", - "keyboard_shortcuts.down": "iri suben en la listo", + "keyboard_shortcuts.down": "Movu malsupren en la listo", "keyboard_shortcuts.enter": "Malfermi afiŝon", "keyboard_shortcuts.favourite": "Stelumi afiŝon", "keyboard_shortcuts.favourites": "Malfermi la liston de la stelumoj", "keyboard_shortcuts.federated": "Malfermi la frataran templinion", - "keyboard_shortcuts.heading": "Klavaraj mallongigoj", + "keyboard_shortcuts.heading": "Fulmoklavoj", "keyboard_shortcuts.home": "Malfermi la hejman templinion", "keyboard_shortcuts.hotkey": "Rapidklavo", - "keyboard_shortcuts.legend": "montri ĉi tiun noton", - "keyboard_shortcuts.local": "Malfermi la lokan templinion", - "keyboard_shortcuts.mention": "mencii la aŭtoron", - "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj", - "keyboard_shortcuts.my_profile": "malfermi vian profilon", - "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", - "keyboard_shortcuts.open_media": "Malfermi plurmedion", + "keyboard_shortcuts.legend": "Montru ĉi tiun legendon", + "keyboard_shortcuts.local": "Malfermu la lokan templinion", + "keyboard_shortcuts.mention": "Menciu aŭtoron", + "keyboard_shortcuts.muted": "Malfermu la liston de silentigitaj uzantoj", + "keyboard_shortcuts.my_profile": "Malfermu vian profilon", + "keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon", + "keyboard_shortcuts.open_media": "Malfermu plurmedion", "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston", - "keyboard_shortcuts.profile": "malfermi la profilon de la aŭtoro", + "keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoro", "keyboard_shortcuts.reply": "Respondu al afiŝo", "keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado", - "keyboard_shortcuts.search": "enfokusigi la serĉilon", - "keyboard_shortcuts.spoilers": "Montri/kaŝi la kampon de averto de enhavo (\"CW\")", - "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", - "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ la averto de enhavo (\"CW\")", + "keyboard_shortcuts.search": "Enfokusigi la serĉbreton", + "keyboard_shortcuts.spoilers": "Montri/kaŝi CW-kampon", + "keyboard_shortcuts.start": "Malfermu \"por komenci\" kolumnon", + "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ CW", "keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi plurmedion", "keyboard_shortcuts.toot": "Komencu novan afiŝon", - "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon", - "keyboard_shortcuts.up": "iri supren en la listo", + "keyboard_shortcuts.unfocus": "Senfokusigi verki tekstareon/serĉon", + "keyboard_shortcuts.up": "Movu supren en la listo", "lightbox.close": "Fermi", "lightbox.next": "Antaŭen", "lightbox.previous": "Malantaŭen", @@ -612,8 +612,8 @@ "notifications_permission_banner.title": "Neniam preterlasas iun ajn", "onboarding.action.back": "Prenu min reen", "onboarding.actions.back": "Prenu min reen", - "onboarding.actions.go_to_explore": "See what's trending", - "onboarding.actions.go_to_home": "Go to your home feed", + "onboarding.actions.go_to_explore": "Konduku min al tendenco", + "onboarding.actions.go_to_home": "Konduku min al mia hejma fluo", "onboarding.compose.template": "Saluton #Mastodon!", "onboarding.follows.empty": "Bedaŭrinde, neniu rezulto estas montrebla nuntempe. Vi povas provi serĉi aŭ foliumi la esploran paĝon por trovi kontojn por sekvi, aŭ retrovi baldaŭ.", "onboarding.follows.lead": "Via hejma fluo estas la ĉefa maniero sperti Mastodon. Ju pli da homoj vi sekvas, des pli aktiva kaj interesa ĝi estos. Por komenci, jen kelkaj sugestoj:", @@ -633,17 +633,17 @@ "onboarding.share.message": "Mi estas {username} en #Mastodon! Sekvu min ĉe {url}", "onboarding.share.next_steps": "Eblaj malantauaj paŝoj:", "onboarding.share.title": "Disvastigi vian profilon", - "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", - "onboarding.start.skip": "Want to skip right ahead?", + "onboarding.start.lead": "Vi nun estas parto de Mastodon, unika, malcentralizita socia amaskomunikilara platformo, kie vi—ne algoritmo—zorgas vian propran sperton. Ni komencu vin sur ĉi tiu nova socia limo:", + "onboarding.start.skip": "Ĉu vi ne bezonas helpon por komenci?", "onboarding.start.title": "Vi atingas ĝin!", - "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", - "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}", + "onboarding.steps.follow_people.body": "Sekvi interesajn homojn estas pri kio Mastodonto temas.", + "onboarding.steps.follow_people.title": "Agordu vian hejman fluon", "onboarding.steps.publish_status.body": "Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj {emoji}", "onboarding.steps.publish_status.title": "Fari vian unuan afiŝon", - "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", - "onboarding.steps.setup_profile.title": "Customize your profile", - "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", - "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.steps.setup_profile.body": "Diskonigu viajn interagojn havante ampleksan profilon.", + "onboarding.steps.setup_profile.title": "Agordu vian profilon", + "onboarding.steps.share_profile.body": "Sciigu viajn amikojn kiel trovi vin sur Mastodon", + "onboarding.steps.share_profile.title": "Kunhavigu vian Mastodon-profilon", "onboarding.tips.2fa": "Ĉu vi scias? Vi povas sekurigi vian konton per efektivigi dufaktora autentigo en via kontoagordoj.", "onboarding.tips.accounts_from_other_servers": "Ĉu vi scias? Ĉar Mastodon estas sencentra, kelkaj profiloj kiujn vi trovi estas gastigitaj ĉe aliaj serviloj kiuj ne estas via.", "onboarding.tips.migration": "Ĉu vi scias? Se vi sentas ke {domain} ne estas bona servilelekto por vi en la estonteco, vi povas translokiĝi al alia servilo de Mastodon sen malgajni viajn sekvantojn.", @@ -825,7 +825,7 @@ "status.show_less_all": "Montri malpli ĉiun", "status.show_more_all": "Montri pli ĉiun", "status.show_original": "Montru originalon", - "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", + "status.title.with_attachments": "{user} afiŝis {attachmentCount, plural, one {aldonaĵon} other {{attachmentCount} aldonaĵojn}}", "status.translate": "Traduki", "status.translated_from_with": "Tradukita el {lang} per {provider}", "status.uncached_media_warning": "Antaŭrigardo ne disponebla", @@ -848,7 +848,7 @@ "units.short.million": "{count}M", "units.short.thousand": "{count}K", "upload_area.title": "Altreni kaj lasi por alŝuti", - "upload_button.label": "Aldoni aŭdovidaĵon (JPEG, PNG, GIF, WebM, MP4, MOV)", + "upload_button.label": "Aldonu bildojn, filmeton aŭ sondosieron", "upload_error.limit": "Limo de dosiera alŝutado transpasita.", "upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.", "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi", @@ -871,17 +871,17 @@ "upload_modal.hint": "Klaku aŭ trenu la cirklon en la antaŭvidilo por elekti la fokuspunkton kiu ĉiam videblos en ĉiuj etigitaj bildoj.", "upload_modal.preparing_ocr": "Preparante OSR…", "upload_modal.preview_label": "Antaŭvido ({ratio})", - "upload_progress.label": "Alŝutado…", + "upload_progress.label": "Alŝutante...", "upload_progress.processing": "Traktante…", "username.taken": "La uzantnomo estas jam posedita. Provu alion", - "video.close": "Fermi la videon", + "video.close": "Fermu la filmeton", "video.download": "Elŝuti dosieron", "video.exit_fullscreen": "Eksigi plenekrana", "video.expand": "Pligrandigi la videon", "video.fullscreen": "Igi plenekrana", - "video.hide": "Kaŝi la videon", + "video.hide": "Kaŝu la filmeton", "video.mute": "Silentigi", - "video.pause": "Paŭzi", + "video.pause": "Paŭzigi", "video.play": "Ekigi", "video.unmute": "Malsilentigi" } diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 7fec88a96e..af0a032991 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -249,7 +249,7 @@ "emoji_button.nature": "Naturaleza", "emoji_button.not_found": "No se encontraron emojis coincidentes", "emoji_button.objects": "Objetos", - "emoji_button.people": "Cuentas", + "emoji_button.people": "Gente", "emoji_button.recent": "Usados frecuentemente", "emoji_button.search": "Buscar...", "emoji_button.search_results": "Resultados de búsqueda", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ddfdf6960b..d101d3bc81 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -516,7 +516,7 @@ "notification.label.private_reply": "Respuesta privada", "notification.label.reply": "Respuesta", "notification.mention": "Mención", - "notification.mentioned_you": "{name} te ha mencionado", + "notification.mentioned_you": "{name} te mencionó", "notification.moderation-warning.learn_more": "Saber más", "notification.moderation_warning": "Has recibido una advertencia de moderación", "notification.moderation_warning.action_delete_statuses": "Se han eliminado algunas de tus publicaciones.", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 69df3c4140..82e7e6d67c 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Kiiruspiirang", "alert.unexpected.message": "Tekkis ootamatu viga.", "alert.unexpected.title": "Oih!", + "alt_text_badge.title": "Alternatiivtekst", "announcement.announcement": "Teadaanne", "attachments_list.unprocessed": "(töötlemata)", "audio.hide": "Peida audio", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Sellest serverist ei saa keegi sind jälgida.", "domain_block_modal.they_wont_know": "Nad ei tea, et nad on blokeeritud.", "domain_block_modal.title": "Blokeerida domeen?", + "domain_block_modal.you_will_lose_num_followers": "Sult kaob {followersCount, plural, one {{followersCountDisplay} jälgija} other {{followersCountDisplay} jälgijat}} ja {followingCount, plural, one {{followingCountDisplay} inimene} other {{followingCountDisplay} inimest}}, keda sa ise jälgid.", + "domain_block_modal.you_will_lose_relationships": "Sa kaotad kõik oma jälgijad ja inimesed, kes sind jälgivad sellest serverist.", "domain_block_modal.you_wont_see_posts": "Sa ei näe selle serveri kasutajate postitusi ega teavitusi.", "domain_pill.activitypub_lets_connect": "See võimaldab sul ühenduda inimestega ja nendega suhelda mitte ainult Mastodonis, vaid ka teistes suhtlusrakendustes.", "domain_pill.activitypub_like_language": "ActivityPub on nagu keel, mida Mastodon räägib teiste suhtlusvõrgustikega.", @@ -433,6 +436,8 @@ "lightbox.close": "Sulge", "lightbox.next": "Järgmine", "lightbox.previous": "Eelmine", + "lightbox.zoom_in": "Näita algsuuruses", + "lightbox.zoom_out": "Näita kõik", "limited_account_hint.action": "Näita profilli sellegipoolest", "limited_account_hint.title": "See profiil on peidetud {domain} moderaatorite poolt.", "link_preview.author": "{name} poolt", @@ -511,6 +516,7 @@ "notification.label.private_reply": "Privaatne vastus", "notification.label.reply": "Vastus", "notification.mention": "Mainimine", + "notification.mentioned_you": "{name} mainis sind", "notification.moderation-warning.learn_more": "Vaata lisa", "notification.moderation_warning": "Said modereerimise hoiatuse", "notification.moderation_warning.action_delete_statuses": "Mõni su postitus on eemaldatud.", @@ -847,6 +853,11 @@ "upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.", "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks", "upload_form.description": "Kirjelda vaegnägijatele", + "upload_form.drag_and_drop.instructions": "Vajuta tühikut või enterit, et tõsta manus. Lohistamise ajal kasuta nooleklahve, et manust liigutada teatud suunas. Vajuta tühikut või enterit uuesti, et paigutada manus oma uuele kohale, või escape tühistamiseks.", + "upload_form.drag_and_drop.on_drag_cancel": "Lohistamine tühistati. Manus {item} on asetatud.", + "upload_form.drag_and_drop.on_drag_end": "Manus {item} on asetatud.", + "upload_form.drag_and_drop.on_drag_over": "Manus {item} on liigutatud.", + "upload_form.drag_and_drop.on_drag_start": "Tõstetud on manus {item}.", "upload_form.edit": "Muuda", "upload_form.thumbnail": "Muuda pisipilti", "upload_form.video_description": "Kirjelda kuulmis- või nägemispuudega inimeste jaoks", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 63449e9342..70ea7601fe 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -268,7 +268,7 @@ "empty_column.follow_requests": "Ez duzu jarraitzeko eskaerarik oraindik. Baten bat jasotzen duzunean, hemen agertuko da.", "empty_column.followed_tags": "Oraindik ez duzu traolik jarraitzen. Egiterakoan, hemen agertuko dira.", "empty_column.hashtag": "Ez dago ezer traola honetan oraindik.", - "empty_column.home": "Zure hasierako denbora-lerroa hutsik dago! Ikusi {public} edo erabili bilaketa lehen urratsak eman eta beste batzuk aurkitzeko.", + "empty_column.home": "Zure hasierako denbora-lerroa hutsik dago! Jarraitu jende gehiago betetzeko.", "empty_column.list": "Ez dago ezer zerrenda honetan. Zerrenda honetako kideek bidalketa berriak argitaratzean, hemen agertuko dira.", "empty_column.lists": "Ez duzu zerrendarik oraindik. Baten bat sortzen duzunean hemen agertuko da.", "empty_column.mutes": "Ez duzu erabiltzailerik mututu oraindik.", @@ -597,7 +597,7 @@ "notifications.policy.filter_not_following_title": "Jarraitzen ez duzun jendea", "notifications.policy.filter_private_mentions_hint": "Iragazita, baldin eta zure aipamenaren erantzuna bada edo bidaltzailea jarraitzen baduzu", "notifications.policy.filter_private_mentions_title": "Eskatu gabeko aipamen pribatuak", - "notifications.policy.title": "Kudeatu honen jakinarazpaenak…", + "notifications.policy.title": "Kudeatu honen jakinarazpenak…", "notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak", "notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.", "notifications_permission_banner.title": "Ez galdu ezer inoiz", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index d510c2a6a4..ef8136da61 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -373,6 +373,7 @@ "ignore_notifications_modal.new_accounts_title": "چشم‌پوشی از آگاهی‌های حساب‌های جدید؟", "ignore_notifications_modal.not_followers_title": "چشم‌پوشی از آگاهی‌های افرادی که پیتان نمی‌گیرند؟", "ignore_notifications_modal.not_following_title": "چشم‌پوشی از آگاهی‌های افرادی که پیشان نمی‌گیرید؟", + "ignore_notifications_modal.private_mentions_title": "چشم‌پوشی از نام‌بری‌های خصوصی ناخواسته؟", "interaction_modal.description.favourite": "با حسابی روی ماستودون می‌توانید این فرسته را برگزیده تا نگارنده بداند قدردانش هستید و برای آینده ذخیره‌اش می‌کنید.", "interaction_modal.description.follow": "با حسابی روی ماستودون می‌توانید {name} را برای دریافت فرسته‌هایش در خوراک خانگیتان دنبال کنید.", "interaction_modal.description.reblog": "با حسابی روی ماستودون می‌توانید این فرسته را با پی‌گیران خودتان هم‌رسانی کنید.", @@ -554,7 +555,7 @@ "notifications.filter.all": "همه", "notifications.filter.boosts": "تقویت‌ها", "notifications.filter.favourites": "برگزیده‌ها", - "notifications.filter.follows": "پی‌گرفتگان", + "notifications.filter.follows": "پی‌گرفتن‌ها", "notifications.filter.mentions": "اشاره‌ها", "notifications.filter.polls": "نتایج نظرسنجی", "notifications.filter.statuses": "به‌روز رسانی‌ها از کسانی که پی‌گیرشانید", @@ -572,10 +573,14 @@ "notifications.policy.filter_hint": "فرستادن به صندوق آگاهی‌های پالوده", "notifications.policy.filter_limited_accounts_hint": "محدود شده به دست ناظم‌های کارساز", "notifications.policy.filter_limited_accounts_title": "حساب‌های مدیریت شده", + "notifications.policy.filter_new_accounts.hint": "ساخته شده در {days, plural, one {یک} other {#}} روز اخیر", "notifications.policy.filter_new_accounts_title": "حساب‌های جدید", + "notifications.policy.filter_not_followers_hint": "از جمله کسانی که کم‌تر از {days, plural, one {یک} other {#}} روز است پی‌تان می‌گیرند", "notifications.policy.filter_not_followers_title": "کسانی که شما را دنبال میکنند", - "notifications.policy.filter_not_following_hint": "", + "notifications.policy.filter_not_following_hint": "تا به صورت دستی تأییدشان کنید", "notifications.policy.filter_not_following_title": "کسانی که پی نمی‌گیرید", + "notifications.policy.filter_private_mentions_hint": "پالوده مگر این که به نام‌بری خودتان پاسخ داده یا پی‌گیر فرستنده باشید", + "notifications.policy.filter_private_mentions_title": "نام‌بری‌های خصوصی ناخواسته", "notifications.policy.title": "مدیریت آگاهی‌ها از…", "notifications_permission_banner.enable": "به کار انداختن آگاهی‌های میزکار", "notifications_permission_banner.how_to_control": "برای دریافت آگاهی‌ها هنگام باز نبودن ماستودون، آگاهی‌های میزکار را به کار بیندازید. پس از به کار افتادنشان می‌توانید گونه‌های دقیق برهم‌کنش‌هایی که آگاهی‌های میزکار تولید می‌کنند را از {icon} بالا واپایید.", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 40292c2691..a2009d8ba3 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -46,9 +46,11 @@ "account.media": "Medya", "account.mention": "Banggitin si @{name}", "account.moved_to": "Ipinahihiwatig ni {name} na ang kanilang bagong account ngayon ay:", + "account.no_bio": "Walang nakalaan na paglalarawan.", "account.open_original_page": "Buksan ang pinagmulang pahina", "account.report": "I-ulat si/ang @{name}", "account.requested_follow": "Hinihiling ni {name} na sundan ka", + "account.share": "Ibahagi ang profile ni @{name}", "account.show_reblogs": "Ipakita ang mga pagpapalakas mula sa/kay {name}", "account.unendorse": "Huwag itampok sa profile", "admin.dashboard.retention.cohort_size": "Mga bagong tagagamit", @@ -56,7 +58,11 @@ "audio.hide": "Itago ang tunog", "block_modal.show_less": "Magpakita ng mas kaunti", "block_modal.show_more": "Magpakita ng higit pa", + "block_modal.they_cant_mention": "Hindi sila makakabanggit sa iyo o sundan ka.", + "block_modal.they_will_know": "Makita nila na hinarangan sila.", "block_modal.title": "Harangan ang tagagamit?", + "block_modal.you_wont_see_mentions": "Hindi ka makakakita ng mga post na nagbanggit sa kanila.", + "boost_modal.combo": "Maari mong pindutin ang {combo} upang laktawan ito sa susunod na oras", "bundle_column_error.error.title": "Naku!", "bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.", "bundle_column_error.network.title": "Kamaliang network", @@ -107,6 +113,8 @@ "compose_form.direct_message_warning_learn_more": "Matuto pa", "compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.", "compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.", + "compose_form.lock_disclaimer": "Hindi {locked} ang iyong account. Maaaring susundan ka ng sinuman upang tingnan ang iyong mga post na para sa mga tagasunod lamang.", + "compose_form.lock_disclaimer.lock": "nakakandado", "compose_form.placeholder": "Anong nangyari?", "compose_form.poll.duration": "Tagal ng botohan", "compose_form.poll.multiple": "Maraming pagpipilian", @@ -123,6 +131,7 @@ "confirmations.edit.confirm": "Baguhin", "confirmations.reply.confirm": "Tumugon", "conversation.mark_as_read": "Markahan bilang nabasa na", + "conversation.open": "Tingnan ang pag-uusap", "copy_icon_button.copied": "Sinipi sa clipboard", "copypaste.copied": "Sinipi", "copypaste.copy_to_clipboard": "I-sipi sa clipboard", @@ -176,6 +185,7 @@ "empty_column.home": "Walang laman ang timeline ng tahanan mo! Sumunod sa marami pang tao para mapunan ito.", "empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.", "empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito.", + "errors.unexpected_crash.report_issue": "Iulat ang isyu", "explore.search_results": "Mga resulta ng paghahanap", "explore.suggested_follows": "Mga tao", "explore.title": "Tuklasin", @@ -187,6 +197,7 @@ "follow_request.authorize": "Tanggapin", "follow_request.reject": "Tanggihan", "follow_suggestions.dismiss": "Huwag nang ipakita muli", + "follow_suggestions.popular_suggestion": "Sikat na mungkahi", "follow_suggestions.popular_suggestion_longer": "Sikat sa {domain}", "follow_suggestions.view_all": "Tingnan lahat", "follow_suggestions.who_to_follow": "Sinong maaaring sundan", @@ -196,6 +207,7 @@ "generic.saved": "Nakaimbak", "hashtag.column_header.tag_mode.all": "at {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", + "hashtag.column_settings.select.no_options_message": "Walang mungkahing nakita", "hashtag.column_settings.tag_mode.all": "Lahat ng nandito", "hashtag.column_settings.tag_mode.any": "Ilan dito", "hashtag.column_settings.tag_mode.none": "Wala dito", @@ -223,11 +235,14 @@ "lists.account.add": "Idagdag sa talaan", "lists.account.remove": "Tanggalin mula sa talaan", "lists.delete": "Burahin ang listahan", + "lists.edit.submit": "Baguhin ang pamagat", "lists.new.create": "Idagdag sa talaan", "lists.new.title_placeholder": "Bagong pangalan ng talaan", + "lists.replies_policy.none": "Walang simuman", "lists.replies_policy.title": "Ipakita ang mga tugon sa:", "lists.subheading": "Iyong mga talaan", "loading_indicator.label": "Kumakarga…", + "media_gallery.hide": "Itago", "mute_modal.hide_from_notifications": "Itago mula sa mga abiso", "navigation_bar.about": "Tungkol dito", "navigation_bar.blocks": "Nakaharang na mga tagagamit", @@ -243,11 +258,15 @@ "notification.admin.report": "Iniulat ni {name} si {target}", "notification.follow": "Sinundan ka ni {name}", "notification.follow_request": "Hinihiling ni {name} na sundan ka", + "notification.label.private_mention": "Palihim na banggit", + "notification.mentioned_you": "Binanggit ka ni {name}", + "notification.moderation-warning.learn_more": "Matuto nang higit pa", "notification.moderation_warning": "Mayroong kang natanggap na babala sa pagtitimpi", "notification.relationships_severance_event.learn_more": "Matuto nang higit pa", "notification_requests.accept": "Tanggapin", "notification_requests.notifications_from": "Mga abiso mula kay/sa {name}", "notifications.clear": "Burahin mga abiso", + "notifications.clear_title": "Linisin ang mga abiso?", "notifications.column_settings.admin.report": "Mga bagong ulat:", "notifications.column_settings.alert": "Mga abiso sa Desktop", "notifications.column_settings.favourite": "Mga paborito:", @@ -259,6 +278,8 @@ "notifications.filter.favourites": "Mga paborito", "notifications.filter.polls": "Resulta ng botohan", "notifications.mark_as_read": "Markahan lahat ng abiso bilang nabasa na", + "notifications.policy.accept": "Tanggapin", + "notifications.policy.accept_hint": "Ipakita sa mga abiso", "notifications.policy.filter_not_followers_title": "Mga taong hindi ka susundan", "notifications.policy.filter_not_following_title": "Mga taong hindi mo sinusundan", "onboarding.action.back": "Ibalik mo ako", @@ -275,6 +296,10 @@ "privacy.private.long": "Mga tagasunod mo lamang", "privacy.private.short": "Mga tagasunod", "privacy.public.long": "Sinumang nasa loob at labas ng Mastodon", + "privacy.public.short": "Pampubliko", + "privacy.unlisted.short": "Hindi nakalista", + "privacy_policy.last_updated": "Huling nabago noong {date}", + "recommended": "Inirekomenda", "regeneration_indicator.label": "Kumakarga…", "relative_time.days": "{number}a", "relative_time.full.days": "{number, plural, one {# araw} other {# na araw}} ang nakalipas", @@ -286,6 +311,7 @@ "relative_time.just_now": "ngayon", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", + "relative_time.today": "ngayon", "reply_indicator.cancel": "Ipagpaliban", "report.block": "Harangan", "report.categories.other": "Iba pa", @@ -293,9 +319,11 @@ "report.category.subtitle": "Piliin ang pinakamahusay na tugma", "report.category.title": "Sabihin mo sa amin kung anong nangyari sa {type} na ito", "report.close": "Tapos na", + "report.comment.title": "Mayroon pa bang dapat naming malaman?", "report.next": "Sunod", "report.placeholder": "Mga Karagdagang Puna", "report.reasons.dislike": "Hindi ko gusto ito", + "report.reasons.legal": "Labag ito sa batas", "report.reasons.violation": "Lumalabag ito sa mga panuntunan ng serbiro", "report.reasons.violation_description": "Alam mo na lumalabag ito sa mga partikular na panuntunan", "report.rules.title": "Aling mga patakaran ang nilabag?", @@ -342,5 +370,8 @@ "time_remaining.days": "{number, plural, one {# araw} other {# na araw}} ang natitira", "time_remaining.hours": "{number, plural, one {# oras} other {# na oras}} ang natitira", "time_remaining.minutes": "{number, plural, one {# minuto} other {# na minuto}} ang natitira", - "time_remaining.seconds": "{number, plural, one {# segundo} other {# na segundo}} ang natitira" + "time_remaining.seconds": "{number, plural, one {# segundo} other {# na segundo}} ang natitira", + "upload_modal.apply": "Ilapat", + "upload_modal.applying": "Nilalapat…", + "upload_modal.choose_image": "Pumili ng larawan" } diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 3349be4fad..f5ab605e3a 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Répondre en privé", "notification.label.reply": "Réponse", "notification.mention": "Mention", + "notification.mentioned_you": "{name} vous a mentionné·e", "notification.moderation-warning.learn_more": "En savoir plus", "notification.moderation_warning": "Vous avez reçu un avertissement de modération", "notification.moderation_warning.action_delete_statuses": "Certains de vos messages ont été supprimés.", @@ -542,12 +543,12 @@ "notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?", "notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?", "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}", - "notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?", + "notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne pourrez plus {count, plural, one {y} other {y}} accéder facilement plus tard. Voulez-vous vraiment continuer ?", "notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?", "notification_requests.dismiss": "Rejeter", "notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}", "notification_requests.edit_selection": "Modifier", - "notification_requests.exit_selection": "Fait", + "notification_requests.exit_selection": "Terminé", "notification_requests.explainer_for_limited_account": "Les notifications en provenance de ce compte ont été filtrées car le compte a été limité par un modérateur.", "notification_requests.explainer_for_limited_remote_account": "Les notifications en provenance de ce compte ont été filtrées car le compte ou le serveur dont il est issu a été limité par un modérateur.", "notification_requests.maximize": "Agrandir", @@ -853,6 +854,7 @@ "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyants", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", + "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 5c4e582a87..1c773d0e39 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Répondre en privé", "notification.label.reply": "Réponse", "notification.mention": "Mention", + "notification.mentioned_you": "{name} vous a mentionné·e", "notification.moderation-warning.learn_more": "En savoir plus", "notification.moderation_warning": "Vous avez reçu un avertissement de modération", "notification.moderation_warning.action_delete_statuses": "Certains de vos messages ont été supprimés.", @@ -542,12 +543,12 @@ "notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?", "notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?", "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}", - "notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?", + "notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne pourrez plus {count, plural, one {y} other {y}} accéder facilement plus tard. Voulez-vous vraiment continuer ?", "notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?", "notification_requests.dismiss": "Rejeter", "notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}", "notification_requests.edit_selection": "Modifier", - "notification_requests.exit_selection": "Fait", + "notification_requests.exit_selection": "Terminé", "notification_requests.explainer_for_limited_account": "Les notifications en provenance de ce compte ont été filtrées car le compte a été limité par un modérateur.", "notification_requests.explainer_for_limited_remote_account": "Les notifications en provenance de ce compte ont été filtrées car le compte ou le serveur dont il est issu a été limité par un modérateur.", "notification_requests.maximize": "Agrandir", @@ -853,6 +854,7 @@ "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyant·e·s", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", + "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 84c76478d1..61b42e60f2 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Freagra príobháideach", "notification.label.reply": "Freagra", "notification.mention": "Luaigh", + "notification.mentioned_you": "Luaigh {name} tú", "notification.moderation-warning.learn_more": "Foghlaim níos mó", "notification.moderation_warning": "Tá rabhadh modhnóireachta faighte agat", "notification.moderation_warning.action_delete_statuses": "Baineadh cuid de do phostálacha.", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f6d3f172ca..52dc7b2998 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -516,6 +516,7 @@ "notification.label.private_reply": "Freagairt phrìobhaideach", "notification.label.reply": "Freagairt", "notification.mention": "Iomradh", + "notification.mentioned_you": "Thug {name} iomradh ort", "notification.moderation-warning.learn_more": "Barrachd fiosrachaidh", "notification.moderation_warning": "Fhuair thu rabhadh on mhaorsainneachd", "notification.moderation_warning.action_delete_statuses": "Chaidh cuid dhe na postaichean agad a thoirt air falbh.", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 35482297f0..f559824738 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Excesso de requestas", "alert.unexpected.message": "Un error inexpectate ha occurrite.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Texto alt", "announcement.announcement": "Annuncio", "attachments_list.unprocessed": "(non processate)", "audio.hide": "Celar audio", @@ -221,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Necuno de iste servitor pote sequer te.", "domain_block_modal.they_wont_know": "Ille non sapera que ille ha essite blocate.", "domain_block_modal.title": "Blocar dominio?", + "domain_block_modal.you_will_lose_num_followers": "Tu perdera {followersCount, plural, one {{followersCountDisplay} sequace} other {{followersCountDisplay} sequaces}} e {followingCount, plural, one {{followingCountDisplay} persona que tu seque} other {{followingCountDisplay} personas que tu seque}}.", + "domain_block_modal.you_will_lose_relationships": "Tu perdera tote le sequaces e le personas que tu seque ab iste servitor.", "domain_block_modal.you_wont_see_posts": "Tu non videra messages e notificationes de usatores sur iste servitor.", "domain_pill.activitypub_lets_connect": "Illo te permitte connecter e interager con personas non solmente sur Mastodon, ma tamben sur altere applicationes social.", "domain_pill.activitypub_like_language": "ActivityPub es como le linguage commun que Mastodon parla con altere retes social.", @@ -303,6 +306,7 @@ "filter_modal.select_filter.title": "Filtrar iste message", "filter_modal.title.status": "Filtrar un message", "filter_warning.matches_filter": "Corresponde al filtro “{title}”", + "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nemo} one {un persona} other {# personas}} que tu pote cognoscer", "filtered_notifications_banner.title": "Notificationes filtrate", "firehose.all": "Toto", "firehose.local": "Iste servitor", @@ -351,6 +355,9 @@ "hashtag.follow": "Sequer hashtag", "hashtag.unfollow": "Non sequer plus le hashtag", "hashtags.and_other": "…e {count, plural, one {}other {# plus}}", + "hints.profiles.followers_may_be_missing": "Le sequaces pro iste profilo pote mancar.", + "hints.profiles.follows_may_be_missing": "Sequites pro iste profilo pote mancar.", + "hints.profiles.posts_may_be_missing": "Alcun messages ab iste profilo pote mancar.", "hints.profiles.see_more_followers": "Vider plus de sequitores sur {domain}", "hints.profiles.see_more_follows": "Vider plus de sequites sur {domain}", "hints.profiles.see_more_posts": "Vider plus de messages sur {domain}", @@ -363,6 +370,11 @@ "home.pending_critical_update.link": "Vider actualisationes", "home.pending_critical_update.title": "Actualisation de securitate critic disponibile!", "home.show_announcements": "Monstrar annuncios", + "ignore_notifications_modal.disclaimer": "Mastodon non pote informar le usatores que tu ha ignorate lor avisos. Ignorar avisos non stoppara le messages mesme de esser inviate.", + "ignore_notifications_modal.filter_instead": "Filtrar in vice", + "ignore_notifications_modal.filter_to_act_users": "Tu ancora potera acceptar, rejectar, o reportar usatores", + "ignore_notifications_modal.filter_to_avoid_confusion": "Filtrar adjuta evitar confusion potential", + "ignore_notifications_modal.filter_to_review_separately": "Tu pote revider avisos filtrate separatemente", "ignore_notifications_modal.ignore": "Ignorar le notificationes", "ignore_notifications_modal.limited_accounts_title": "Ignorar le notificationes de contos moderate?", "ignore_notifications_modal.new_accounts_title": "Ignorar le notificationes de nove contos?", @@ -424,6 +436,8 @@ "lightbox.close": "Clauder", "lightbox.next": "Sequente", "lightbox.previous": "Precedente", + "lightbox.zoom_in": "Aggrandir a dimension actual", + "lightbox.zoom_out": "Aggrandir pro adaptar", "limited_account_hint.action": "Monstrar profilo in omne caso", "limited_account_hint.title": "Iste profilo ha essite celate per le moderatores de {domain}.", "link_preview.author": "Per {name}", @@ -490,14 +504,19 @@ "notification.admin.report_statuses": "{name} ha reportate {target} pro {category}", "notification.admin.report_statuses_other": "{name} ha reportate {target}", "notification.admin.sign_up": "{name} se ha inscribite", + "notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# altere usator} other {altere # usatores}} se inscribeva", "notification.favourite": "{name} ha marcate tu message como favorite", + "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# altere} other {# alteres}} favoriva tu message", "notification.follow": "{name} te ha sequite", + "notification.follow.name_and_others": "{name} e {count, plural, one {# altere} other {# alteres}} te sequeva", "notification.follow_request": "{name} ha requestate de sequer te", + "notification.follow_request.name_and_others": "{name} e {count, plural, one {# altere} other {# alteres}} ha demandate de sequer te", "notification.label.mention": "Mention", "notification.label.private_mention": "Mention private", "notification.label.private_reply": "Responsa private", "notification.label.reply": "Responder", "notification.mention": "Mention", + "notification.mentioned_you": "{name} te mentionava", "notification.moderation-warning.learn_more": "Apprender plus", "notification.moderation_warning": "Tu ha recipite un advertimento de moderation", "notification.moderation_warning.action_delete_statuses": "Alcunes de tu messages ha essite removite.", @@ -510,6 +529,7 @@ "notification.own_poll": "Tu sondage ha finite", "notification.poll": "Un sondage in le qual tu ha votate ha finite", "notification.reblog": "{name} ha impulsate tu message", + "notification.reblog.name_and_others_with_link": "{name} e {count, plural, one {# altere} other {# alteres}} promoveva tu message", "notification.relationships_severance_event": "Connexiones perdite con {name}", "notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.", "notification.relationships_severance_event.domain_block": "Un administrator de {from} ha blocate {target}, includente {followersCount} de tu sequitores e {followingCount, plural, one {# conto} other {# contos}} que tu seque.", @@ -518,11 +538,21 @@ "notification.status": "{name} ha justo ora publicate", "notification.update": "{name} ha modificate un message", "notification_requests.accept": "Acceptar", + "notification_requests.accept_multiple": "{count, plural, one {Accepta # requesta…} other {Accepta # requestas…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Accepta requesta} other {Accepta requestas}}", + "notification_requests.confirm_accept_multiple.message": "Tu acceptara {count, plural, one {un requesta de aviso} other {# requestas de aviso}}. Desira tu vermente continuar?", "notification_requests.confirm_accept_multiple.title": "Acceptar petitiones de notification?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Rejectar requesta} other {Rejectar requestas}}", + "notification_requests.confirm_dismiss_multiple.message": "Tu rejectara {count, plural, one {un requesta de aviso} other {# requestas de aviso}}. Tu non potera facilemente acceder {count, plural, one {lo} other {los}} ancora. Desira tu vermente continuar?", "notification_requests.confirm_dismiss_multiple.title": "Dimitter petitiones de notification?", "notification_requests.dismiss": "Clauder", + "notification_requests.dismiss_multiple": "{count, plural, one {Rejectar # requesta…} other {Rejectar # requestas…}}", "notification_requests.edit_selection": "Modificar", "notification_requests.exit_selection": "Facite", + "notification_requests.explainer_for_limited_account": "Le avisos ab iste conto ha essite filtrate perque le conto ha essite limitate per un moderator.", + "notification_requests.explainer_for_limited_remote_account": "Le avisos ab iste conto ha essite filtrate perque le conto o su servitor ha essite limitate per un moderator.", + "notification_requests.maximize": "Maximisar", + "notification_requests.minimize_banner": "Minimisar le bandiera del avisos filtrate", "notification_requests.notifications_from": "Notificationes de {name}", "notification_requests.title": "Notificationes filtrate", "notification_requests.view": "Vider notificationes", @@ -562,8 +592,11 @@ "notifications.permission_required": "Le notificationes de scriptorio es indisponibile perque le permission necessari non ha essite concedite.", "notifications.policy.accept": "Acceptar", "notifications.policy.accept_hint": "Monstrar in le notificationes", + "notifications.policy.drop": "Ignorar", + "notifications.policy.drop_hint": "Inviar al nihil, pro jammais esser vidite ancora", "notifications.policy.filter": "Filtrar", "notifications.policy.filter_hint": "Inviar al cassa de notificationes filtrate", + "notifications.policy.filter_limited_accounts_hint": "Limitate per moderatores de servitor", "notifications.policy.filter_limited_accounts_title": "Contos moderate", "notifications.policy.filter_new_accounts.hint": "Create in le ultime {days, plural, one {die} other {# dies}}", "notifications.policy.filter_new_accounts_title": "Nove contos", @@ -700,6 +733,7 @@ "report.unfollow_explanation": "Tu seque iste conto. Pro non plus vider su messages in tu fluxo de initio, cessa de sequer lo.", "report_notification.attached_statuses": "{count, plural, one {{count} message} other {{count} messages}} annexate", "report_notification.categories.legal": "Juridic", + "report_notification.categories.legal_sentence": "contento illegal", "report_notification.categories.other": "Alteres", "report_notification.categories.other_sentence": "alteres", "report_notification.categories.spam": "Spam", @@ -747,6 +781,7 @@ "status.bookmark": "Adder al marcapaginas", "status.cancel_reblog_private": "Disfacer impulso", "status.cannot_reblog": "Iste message non pote esser impulsate", + "status.continued_thread": "Argumento continuitate", "status.copy": "Copiar ligamine a message", "status.delete": "Deler", "status.detailed_status": "Vista detaliate del conversation", @@ -755,6 +790,7 @@ "status.edit": "Modificar", "status.edited": "Ultime modification le {date}", "status.edited_x_times": "Modificate {count, plural, one {{count} vice} other {{count} vices}}", + "status.embed": "Obtener codice incorporate", "status.favourite": "Adder al favorites", "status.favourites": "{count, plural, one {favorite} other {favorites}}", "status.filter": "Filtrar iste message", @@ -817,6 +853,11 @@ "upload_error.poll": "Incargamento de files non permittite con sondages.", "upload_form.audio_description": "Describe lo pro le gente con difficultates auditive", "upload_form.description": "Describe lo pro le gente con difficultates visual", + "upload_form.drag_and_drop.instructions": "Pro colliger un annexo de medios, pressar Spatio o Inviar. Trahente lo, usar le claves flecha pro mover le annexo de medios in ulle direction date. De novo pressar Spatio o Inviar pro deponer le annexo de medios in su nove position, o pressar Escappar pro cancellar.", + "upload_form.drag_and_drop.on_drag_cancel": "Le extraction era cancellate. Le annexo de medios {item} era deponite.", + "upload_form.drag_and_drop.on_drag_end": "Le annexo de medios {item} era deponite.", + "upload_form.drag_and_drop.on_drag_over": "Le annexo de medios {item} era movite.", + "upload_form.drag_and_drop.on_drag_start": "Annexo de medios {item} colligite.", "upload_form.edit": "Modificar", "upload_form.thumbnail": "Cambiar le miniatura", "upload_form.video_description": "Describe lo pro le gente con difficultates auditive o visual", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index bbd3a7a358..19d17eaf45 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -222,6 +222,8 @@ "domain_block_modal.they_cant_follow": "Enginn frá þessum netþjóni getur fylgst með þér.", "domain_block_modal.they_wont_know": "Viðkomandi mun ekki vita að hann hafi verið útilokaður.", "domain_block_modal.title": "Útiloka lén?", + "domain_block_modal.you_will_lose_num_followers": "Þú munt missa {followersCount, plural, one {{followersCountDisplay} fylgjanda} other {{followersCountDisplay} fylgjendur}} og {followingCount, plural, one {{followingCountDisplay} aðila sem þú fylgist með} other {{followingCountDisplay} aðila sem þú fylgist með}}.", + "domain_block_modal.you_will_lose_relationships": "Þú munt missa alla fylgjendur og þá sem þú fylgist með á þessum netþjóni.", "domain_block_modal.you_wont_see_posts": "Þú munt ekki sjá neinar færslur eða tilkynningar frá notendum á þessum netþjóni.", "domain_pill.activitypub_lets_connect": "Það gerir þér kleift að tengjast og eiga í samskiptum við fólk, ekki bara á Mastodon, heldur einnig á mörgum öðrum mismunandi samfélagsmiðlum.", "domain_pill.activitypub_like_language": "ActivityPub er eins og tungumál sem Mastodon notar til að tala við önnur samfélagsnet.", @@ -851,6 +853,11 @@ "upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.", "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta", "upload_form.description": "Lýstu þessu fyrir sjónskerta", + "upload_form.drag_and_drop.instructions": "Til að taka í myndefnisviðhengi skaltu ýta á bilslána eða Enter. Til að draga geturðu notað örvalyklana til að færa viðhengið í samsvarandi áttir. Ýttu aftur á bilslána eða Enter til að sleppa viðhenginu á nýja staðinn, eða ýttu á Escape til að hætta við.", + "upload_form.drag_and_drop.on_drag_cancel": "Hætt var við að draga. Myndefnisviðhenginu {item} var sleppt.", + "upload_form.drag_and_drop.on_drag_end": "Myndefnisviðhenginu {item} var sleppt.", + "upload_form.drag_and_drop.on_drag_over": "Myndefnisviðhengið {item} var fært.", + "upload_form.drag_and_drop.on_drag_start": "Tók í myndefnisviðhengið {item}.", "upload_form.edit": "Breyta", "upload_form.thumbnail": "Skipta um smámynd", "upload_form.video_description": "Lýstu þessu fyrir fólk sem heyrir illa eða er með skerta sjón", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 1810314c84..edab7abef9 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -222,6 +222,8 @@ "domain_block_modal.they_cant_follow": "このサーバーのユーザーはあなたをフォローできなくなります。", "domain_block_modal.they_wont_know": "ドメインブロックは相手からはわかりません。", "domain_block_modal.title": "ドメインをブロックしますか?", + "domain_block_modal.you_will_lose_num_followers": "「{followingCount, plural, other {{followingCountDisplay}フォロー}}」、「{followersCount, plural, other {{followersCountDisplay}フォロワー}}」を失うことになります。", + "domain_block_modal.you_will_lose_relationships": "このサーバーにいるすべてのフォローとフォロワーを失うことになります。", "domain_block_modal.you_wont_see_posts": "このサーバーのユーザーからの投稿や通知が閲覧できなくなります。", "domain_pill.activitypub_lets_connect": "Mastodonからほかのソーシャルアプリのユーザーへ、そのまた別のアプリのユーザーへと、それぞれが互いにつながり関わり合うことをこのActivityPubの仕組みが実現しています。", "domain_pill.activitypub_like_language": "ActivityPubとは、Mastodonがほかのサーバーと会話をするときにしゃべる「言葉」のようなものです。", @@ -779,6 +781,7 @@ "status.bookmark": "ブックマーク", "status.cancel_reblog_private": "ブースト解除", "status.cannot_reblog": "この投稿はブーストできません", + "status.continued_thread": "つり下げ投稿", "status.copy": "投稿へのリンクをコピー", "status.delete": "削除", "status.detailed_status": "詳細な会話ビュー", @@ -812,6 +815,7 @@ "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", "status.remove_bookmark": "ブックマークを削除", + "status.replied_in_thread": "ほかのユーザーへ", "status.replied_to": "{name}さんへの返信", "status.reply": "返信", "status.replyAll": "全員に返信", @@ -849,6 +853,11 @@ "upload_error.poll": "アンケートではファイルをアップロードできません。", "upload_form.audio_description": "聴き取りが難しいユーザーへの説明", "upload_form.description": "視覚的に閲覧が難しいユーザーへの説明", + "upload_form.drag_and_drop.instructions": "メディア添付ファイルを選択するには、スペースキーまたはエンターキーを押してください。ドラッグ中は、矢印キーを使ってメディア添付ファイルを任意の方向に移動できます。再度スペースキーまたはエンターキーを押すと新しい位置にメディア添付ファイルをドロップできます。キャンセルするにはエスケープキーを押してください。", + "upload_form.drag_and_drop.on_drag_cancel": "ドラッグがキャンセルされました。メディア添付ファイル {item} がドロップされました。", + "upload_form.drag_and_drop.on_drag_end": "メディア添付ファイル {item} がドロップされました。", + "upload_form.drag_and_drop.on_drag_over": "メディア添付ファイル {item} が移動されました。", + "upload_form.drag_and_drop.on_drag_start": "メディア添付ファイル {item} を選択しました。", "upload_form.edit": "編集", "upload_form.thumbnail": "サムネイルを変更", "upload_form.video_description": "聴き取りや視覚的に閲覧が難しいユーザーへの説明", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index edcbadd12d..04e099d8bc 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -499,7 +499,7 @@ "navigation_bar.security": "보안", "not_signed_in_indicator.not_signed_in": "이 정보에 접근하려면 로그인을 해야 합니다.", "notification.admin.report": "{name} 님이 {target}를 신고했습니다", - "notification.admin.report_account": "{name} 님이 {target}의 게시물 {count, plural, other {# 개}}를 {category}로 신고했습니다", + "notification.admin.report_account": "{name} 님이 {target}의 게시물 {count, plural, other {# 개}}를 {category} 사유로 신고했습니다", "notification.admin.report_account_other": "{name} 님이 {target}의 게시물 {count, plural, other {# 개}}를 신고했습니다", "notification.admin.report_statuses": "{name} 님이 {target}을 {category}로 신고했습니다", "notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index c5026fa33b..e5ff3cead0 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -342,6 +342,7 @@ "home.pending_critical_update.title": "Aktualizasyon de seguridad kritika esta desponivle!", "home.show_announcements": "Amostra pregones", "ignore_notifications_modal.ignore": "Inyora avizos", + "ignore_notifications_modal.not_following_title": "Inyorar avizos de personas a las kualas no siges?", "interaction_modal.description.favourite": "Kon un kuento en Mastodon, puedes markar esta publikasyon komo favorita para ke el autor sepa ke te plaze i para guadrarla para dempues.", "interaction_modal.description.follow": "Kon un kuento en Mastodon, puedes segir a {name} para risivir sus publikasyones en tu linya temporal prinsipala.", "interaction_modal.description.reblog": "Kon un kuento en Mastodon, puedes repartajar esta publikasyon para amostrarla a tus suivantes.", @@ -465,6 +466,7 @@ "notification.label.private_mention": "Enmentadura privada", "notification.label.reply": "Arisponde", "notification.mention": "Enmenta", + "notification.mentioned_you": "{name} te enmento", "notification.moderation-warning.learn_more": "Ambezate mas", "notification.moderation_warning.action_disable": "Tu kuento tiene sido inkapasitado.", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Algunas de tus publikasyones tienen sido markadas komo sensivles.", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 5ed6f219db..35dc70cc98 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -5,19 +5,24 @@ "about.domain_blocks.silenced.title": "പരിമിതമായത്", "about.domain_blocks.suspended.title": "താൽക്കാലികമായി നിർത്തിവെച്ചിരിക്കുന്നു", "about.rules": "സെർവ്വർ നിയമങ്ങൾ", + "account.account_note_header": "സ്വകാര്യ കുറിപ്പു്", "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ/മാറ്റുകയോ ചെയ്യുക", "account.badges.bot": "റോബോട്ട്", "account.badges.group": "ഗ്രൂപ്പ്", "account.block": "@{name} -നെ തടയുക", "account.block_domain": "{domain} എന്ന മേഖല തടയുക", + "account.block_short": "തടസ്സപെടുത്തുക", "account.blocked": "തടഞ്ഞു", "account.cancel_follow_request": "Withdraw follow request", + "account.copy": "രൂപരേഖയിന്റെ വിലാസം പകർത്തുക", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", + "account.featured_tags.last_status_never": "എഴുത്തുകളില്ല", "account.follow": "പിന്തുടരുക", + "account.follow_back": "തിരിച്ചു പിന്തുടരുക", "account.followers": "പിന്തുടരുന്നവർ", "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.", "account.following": "പിന്തുടരുന്നു", @@ -52,10 +57,16 @@ "alert.rate_limited.title": "തോത് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു", "alert.unexpected.message": "അപ്രതീക്ഷിതമായി എന്തോ സംഭവിച്ചു.", "alert.unexpected.title": "ശ്ശോ!", + "alt_text_badge.title": "പകരമായ വരി", "announcement.announcement": "അറിയിപ്പ്", "attachments_list.unprocessed": "(പ്രോസസ്സ് ചെയ്യാത്തത്)", "audio.hide": "ശബ്ദം ഒഴിവാക്കുക", + "block_modal.show_less": "കുറച്ചു് കാണിക്കുക", + "block_modal.show_more": "ഇനിയും കാണിക്കുക", + "block_modal.title": "ഉപയോക്താവിനു് തടസ്സപെടുത്തുക?", "boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്", + "bundle_column_error.copy_stacktrace": "പിഴരേഖ പകർത്തുക", + "bundle_column_error.error.title": "അയ്യോ!", "bundle_column_error.network.title": "നെറ്റ്‍വർക്ക് പിശക്", "bundle_column_error.retry": "വീണ്ടും ശ്രമിക്കുക", "bundle_column_error.return": "ഹോം പേജിലേക്ക് മടങ്ങാം", @@ -73,7 +84,7 @@ "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", - "column.home": "ഹോം", + "column.home": "ആമുഖം", "column.lists": "പട്ടികകൾ", "column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", "column.notifications": "അറിയിപ്പുകൾ", @@ -99,7 +110,9 @@ "compose_form.poll.duration": "തിരഞ്ഞെടുപ്പിന്റെ സമയദൈർഖ്യം", "compose_form.poll.switch_to_multiple": "വോട്ടെടുപ്പിൽ ഒന്നിലധികം ചോയ്‌സുകൾ ഉൾപ്പെടുതുക", "compose_form.poll.switch_to_single": "വോട്ടെടുപ്പിൽ ഒരൊറ്റ ചോയ്‌സ്‌ മാത്രം ആക്കുക", + "compose_form.publish": "അയക്കുക", "compose_form.publish_form": "Publish", + "compose_form.reply": "മറുപടി", "compose_form.spoiler.marked": "എഴുത്ത് മുന്നറിയിപ്പിനാൽ മറച്ചിരിക്കുന്നു", "compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല", "confirmation_modal.cancel": "റദ്ദാക്കുക", @@ -108,6 +121,8 @@ "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "confirmations.delete_list.confirm": "മായ്ക്കുക", "confirmations.delete_list.message": "ഈ പട്ടിക എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", + "confirmations.delete_list.title": "പട്ടിക കളയുണോ?", + "confirmations.discard_edit_media.confirm": "കളയുക", "confirmations.logout.confirm": "പുറത്തുകടക്കുക", "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?", "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക", @@ -128,6 +143,7 @@ "disabled_account_banner.text": "നിങ്ങളുടെ {disabledAccount} എന്ന അക്കൗണ്ട് ഇപ്പോൾ പ്രവർത്തനരഹിതമാണ്.", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "domain_pill.username": "ഉപയോക്തൃപേരു്", "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", "emoji_button.activity": "പ്രവര്‍ത്തനം", @@ -158,10 +174,15 @@ "empty_column.notifications": "നിങ്ങൾക്ക് ഇതുവരെ ഒരു അറിയിപ്പുകളും ഇല്ല. മറ്റുള്ളവരുമായി ഇടപെട്ട് സംഭാഷണത്തിന് തുടക്കം കുറിക്കു.", "empty_column.public": "ഇവിടെ ഒന്നുമില്ലല്ലോ! ഇവിടെ നിറയ്ക്കാൻ എന്തെങ്കിലും പരസ്യമായി എഴുതുകയോ മറ്റ് ഉപഭോക്താക്കളെ പിന്തുടരുകയോ ചെയ്യുക", "errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക", + "explore.suggested_follows": "ആൾക്കാർ", "explore.title": "പര്യവേക്ഷണം നടത്തുക", + "explore.trending_links": "വാര്‍ത്ത", "filter_modal.select_filter.prompt_new": "പുതിയ വിഭാഗം: {name}", + "firehose.all": "എല്ലാം", "follow_request.authorize": "ചുമതലപ്പെടുത്തുക", "follow_request.reject": "നിരസിക്കുക", + "follow_suggestions.dismiss": "വീണ്ടും കാണിക്കരുതു്", + "follow_suggestions.view_all": "എല്ലാം കാണുക", "generic.saved": "സംരക്ഷിച്ചു", "getting_started.heading": "തുടക്കം കുറിക്കുക", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", @@ -177,6 +198,7 @@ "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", "home.hide_announcements": "പ്രഖ്യാപനങ്ങൾ മറയ്‌ക്കുക", "home.show_announcements": "പ്രഖ്യാപനങ്ങൾ കാണിക്കുക", + "interaction_modal.login.action": "ആമുഖം വരെ എടുത്തോണ്ടു് പോവുക", "interaction_modal.on_this_server": "ഈ സെർവറീൽ", "keyboard_shortcuts.back": "തിരികെ പോകുക", "keyboard_shortcuts.blocked": "to open blocked users list", @@ -327,7 +349,7 @@ "status.share": "പങ്കിടുക", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", - "tabs_bar.home": "ഹോം", + "tabs_bar.home": "ആമുഖം", "tabs_bar.notifications": "അറിയിപ്പുകൾ", "time_remaining.days": "{number, plural, one {# ദിവസം} other {# ദിവസങ്ങൾ}} ബാക്കി", "time_remaining.hours": "{number, plural, one {# മണിക്കൂർ} other {# മണിക്കൂർ}} ശേഷിക്കുന്നു", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index cbd57ab356..749461d1a8 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -36,6 +36,7 @@ "account.followers.empty": "Belum ada yang mengikuti pengguna ini.", "account.followers_counter": "{count, plural, one {{counter} Diikuti} other {{counter} Diikuti}}", "account.following": "Mengikuti", + "account.following_counter": "{count, plural, other {{counter} following}}", "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.", "account.go_to_profile": "Pergi ke profil", "account.hide_reblogs": "Sembunyikan galakan daripada @{name}", @@ -61,6 +62,7 @@ "account.requested_follow": "{name} has requested to follow you", "account.share": "Kongsi profil @{name}", "account.show_reblogs": "Tunjukkan galakan daripada @{name}", + "account.statuses_counter": "{count, plural, other {{counter} siaran}}", "account.unblock": "Nyahsekat @{name}", "account.unblock_domain": "Nyahsekat domain {domain}", "account.unblock_short": "Nyahsekat", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index c0ca8f1766..9ad646b82c 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -459,7 +459,7 @@ "lists.subheading": "Jouw lijsten", "load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}", "loading_indicator.label": "Laden…", - "media_gallery.hide": "Verbergen", + "media_gallery.hide": "Verberg", "moved_to_account_banner.text": "Omdat je naar {movedToAccount} bent verhuisd is jouw account {disabledAccount} momenteel uitgeschakeld.", "mute_modal.hide_from_notifications": "Onder meldingen verbergen", "mute_modal.hide_options": "Opties verbergen", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 9dbd123c9b..37687bc844 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -8,6 +8,7 @@ "about.not_available": "Aquesta informacion foguèt pas renduda disponibla sus aqueste servidor.", "about.powered_by": "Malhum social descentralizat propulsat per {mastodon}", "about.rules": "Règlas del servidor", + "account.account_note_header": "Nòta personala", "account.add_or_remove_from_list": "Ajustar o tirar de las listas", "account.badges.bot": "Robòt", "account.badges.group": "Grop", @@ -72,9 +73,12 @@ "alert.rate_limited.title": "Taus limitat", "alert.unexpected.message": "Una error s’es producha.", "alert.unexpected.title": "Ops !", + "alt_text_badge.title": "Tèxt alternatiu", "announcement.announcement": "Anóncia", "attachments_list.unprocessed": "(pas tractat)", "audio.hide": "Amagar àudio", + "block_modal.show_less": "Ne veire mens", + "block_modal.show_more": "Ne veire mai", "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven", "bundle_column_error.copy_stacktrace": "Copiar senhalament d’avaria", "bundle_column_error.error.title": "Oh non !", @@ -128,9 +132,14 @@ "compose_form.poll.duration": "Durada del sondatge", "compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas", "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida", + "compose_form.poll.type": "Estil", + "compose_form.publish": "Publicar", "compose_form.publish_form": "Publicar", + "compose_form.reply": "Respondre", + "compose_form.save_changes": "Actualizar", "compose_form.spoiler.marked": "Lo tèxte es rescondut jos l’avertiment", "compose_form.spoiler.unmarked": "Lo tèxte es pas rescondut", + "compose_form.spoiler_placeholder": "Avertiment de contengut (opcional)", "confirmation_modal.cancel": "Anullar", "confirmations.block.confirm": "Blocar", "confirmations.delete.confirm": "Escafar", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 9bd2ed5b4e..de1f4e0885 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -84,6 +84,7 @@ "alert.rate_limited.title": "Ограничение количества запросов", "alert.unexpected.message": "Произошла непредвиденная ошибка.", "alert.unexpected.title": "Упс!", + "alt_text_badge.title": "Альтернативный текст", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", "audio.hide": "Скрыть аудио", @@ -220,6 +221,7 @@ "domain_block_modal.they_cant_follow": "Никто из этого сервера не может подписываться на вас.", "domain_block_modal.they_wont_know": "Он не будет знать, что его заблокировали.", "domain_block_modal.title": "Заблокировать домен?", + "domain_block_modal.you_will_lose_relationships": "Вы потеряете всех подписчиков и людей, на которых вы подписаны, на этом сервере.", "domain_block_modal.you_wont_see_posts": "Вы не будете видеть записи или уведомления от пользователей на этом сервере.", "domain_pill.activitypub_lets_connect": "Это позволяет вам общаться и взаимодействовать с людьми не только на Mastodon, но и в различных социальных приложениях.", "domain_pill.activitypub_like_language": "ActivityPub как язык Mastodon говорит с другими социальными сетями.", @@ -432,6 +434,8 @@ "lightbox.close": "Закрыть", "lightbox.next": "Далее", "lightbox.previous": "Назад", + "lightbox.zoom_in": "Масштаб до фактического размера", + "lightbox.zoom_out": "Масштаб по размеру экрана", "limited_account_hint.action": "Все равно показать профиль", "limited_account_hint.title": "Этот профиль был скрыт модераторами {domain}.", "link_preview.author": "Автор: {name}", @@ -502,6 +506,7 @@ "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# другие} other {# другие}} отдали предпочтение вашему посту", "notification.follow": "{name} подписался (-лась) на вас", + "notification.follow.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", "notification.follow_request.name_and_others": "{name} и {count, plural, one {# другие} other {# другие}} последовали за тобой", "notification.label.mention": "Упоминание", @@ -509,6 +514,7 @@ "notification.label.private_reply": "Частный ответ", "notification.label.reply": "Ответить", "notification.mention": "Упоминание", + "notification.mentioned_you": "{name} упомянул(а) вас", "notification.moderation-warning.learn_more": "Узнать больше", "notification.moderation_warning": "Вы получили предупреждение от модерации", "notification.moderation_warning.action_delete_statuses": "Некоторые из ваших публикаций были удалены.", @@ -725,6 +731,7 @@ "report_notification.categories.spam": "Спам", "report_notification.categories.spam_sentence": "спам", "report_notification.categories.violation": "Нарушение правил", + "report_notification.categories.violation_sentence": "нарушение правила", "report_notification.open": "Открыть жалобу", "search.no_recent_searches": "Недавние запросы отсутствуют", "search.placeholder": "Поиск", @@ -754,7 +761,7 @@ "server_banner.administered_by": "Управляется:", "server_banner.is_one_of_many": "{domain} - это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в fediverse.", "server_banner.server_stats": "Статистика сервера:", - "sign_in_banner.create_account": "Создать учётную запись", + "sign_in_banner.create_account": "Зарегистрироваться", "sign_in_banner.follow_anyone": "Следите за любым человеком в федеральной вселенной и смотрите все в хронологическом порядке. Никаких алгоритмов, рекламы или клик бейта.", "sign_in_banner.mastodon_is": "Mastodon - лучший способ быть в курсе всего происходящего.", "sign_in_banner.sign_in": "Войти", @@ -836,6 +843,10 @@ "upload_error.poll": "К опросам нельзя прикреплять файлы.", "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха", "upload_form.description": "Добавьте описание для людей с нарушениями зрения:", + "upload_form.drag_and_drop.instructions": "Чтобы подобрать прикрепленный файл, нажмите \"Пробел\" (Space) или \"Ввод\" (Enter). При перетаскивании используйте клавиши со стрелками, чтобы переместить прикрепленные файлы в любом направлении. Нажмите \"Пробел\" (Space) или \"Ввод\" (Enter) еще раз, чтобы переместить вложение в новое место, или нажмите кнопку \"Выйти\" (Escape), чтобы отменить.", + "upload_form.drag_and_drop.on_drag_cancel": "Перетаскивание было отменено. Вложение медиа {item} было удалено.", + "upload_form.drag_and_drop.on_drag_end": "Медиа вложение {item} было удалено.", + "upload_form.drag_and_drop.on_drag_over": "Медиа вложение {item} было перемещено.", "upload_form.edit": "Изменить", "upload_form.thumbnail": "Изменить обложку", "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 298852100c..31ded957b5 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Mängd begränsad", "alert.unexpected.message": "Ett oväntat fel uppstod.", "alert.unexpected.title": "Hoppsan!", + "alt_text_badge.title": "Alt-Text", "announcement.announcement": "Meddelande", "attachments_list.unprocessed": "(obehandlad)", "audio.hide": "Dölj audio", @@ -97,6 +98,8 @@ "block_modal.title": "Blockera användare?", "block_modal.you_wont_see_mentions": "Du kommer inte att se inlägg som nämner dem.", "boost_modal.combo": "Du kan trycka på {combo} för att hoppa över detta nästa gång", + "boost_modal.reblog": "Boosta inlägg?", + "boost_modal.undo_reblog": "Avboosta inlägg?", "bundle_column_error.copy_stacktrace": "Kopiera felrapport", "bundle_column_error.error.body": "Den begärda sidan kunde inte visas. Det kan bero på ett fel i vår kod eller ett problem med webbläsarens kompatibilitet.", "bundle_column_error.error.title": "Åh nej!", @@ -219,6 +222,8 @@ "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_num_followers": "Du kommer att förlora {followersCount, plural, other {{followersCountDisplay} följare}} och {followingCount, plural, one {{followingCountDisplay} person du följer} other {{followingCountDisplay} personer du följer}}.", + "domain_block_modal.you_will_lose_relationships": "Du kommer att förlora alla följare och personer du följer från denna server.", "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.", @@ -300,6 +305,7 @@ "filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny", "filter_modal.select_filter.title": "Filtrera detta inlägg", "filter_modal.title.status": "Filtrera ett inlägg", + "filter_warning.matches_filter": "Matchar filtret \"{title}\"", "filtered_notifications_banner.pending_requests": "Från {count, plural, =0 {ingen} one {en person} other {# personer}} du kanske känner", "filtered_notifications_banner.title": "Filtrerade aviseringar", "firehose.all": "Allt", @@ -430,6 +436,8 @@ "lightbox.close": "Stäng", "lightbox.next": "Nästa", "lightbox.previous": "Tidigare", + "lightbox.zoom_in": "Zooma till faktisk storlek", + "lightbox.zoom_out": "Zooma för att passa", "limited_account_hint.action": "Visa profil ändå", "limited_account_hint.title": "Denna profil har dolts av {domain}s moderatorer.", "link_preview.author": "Av {name}", @@ -463,6 +471,7 @@ "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", + "navigation_bar.administration": "Administration", "navigation_bar.advanced_interface": "Öppna i avancerat webbgränssnitt", "navigation_bar.blocks": "Blockerade användare", "navigation_bar.bookmarks": "Bokmärken", @@ -479,6 +488,7 @@ "navigation_bar.follows_and_followers": "Följer och följare", "navigation_bar.lists": "Listor", "navigation_bar.logout": "Logga ut", + "navigation_bar.moderation": "Moderering", "navigation_bar.mutes": "Tystade användare", "navigation_bar.opened_in_classic_interface": "Inlägg, konton och andra specifika sidor öppnas som standard i det klassiska webbgränssnittet.", "navigation_bar.personal": "Personligt", @@ -771,6 +781,7 @@ "status.bookmark": "Bokmärk", "status.cancel_reblog_private": "Sluta boosta", "status.cannot_reblog": "Detta inlägg kan inte boostas", + "status.continued_thread": "Fortsatt tråd", "status.copy": "Kopiera inläggslänk", "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", @@ -804,6 +815,7 @@ "status.reblogs.empty": "Ingen har boostat detta inlägg än. När någon gör det kommer de synas här.", "status.redraft": "Radera & gör om", "status.remove_bookmark": "Ta bort bokmärke", + "status.replied_in_thread": "Svarade i tråden", "status.replied_to": "Svarade på {name}", "status.reply": "Svara", "status.replyAll": "Svara på tråden", @@ -841,6 +853,11 @@ "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.", "upload_form.audio_description": "Beskriv för personer med hörselnedsättning", "upload_form.description": "Beskriv för synskadade", + "upload_form.drag_and_drop.instructions": "För att plocka upp en mediebilaga, tryck på mellanslag eller enter. Använd piltangenterna för att flytta mediebilagan. Tryck på mellanslag eller enter igen för att släppa mediebilagan i sin nya position, eller tryck på escape för att avbryta.", + "upload_form.drag_and_drop.on_drag_cancel": "Flytten avbröts. Mediebilagan {item} släpptes.", + "upload_form.drag_and_drop.on_drag_end": "Mediebilagan {item} släpptes.", + "upload_form.drag_and_drop.on_drag_over": "Mediebilagan {item} flyttades.", + "upload_form.drag_and_drop.on_drag_start": "Mediebilagan {item} plockades upp.", "upload_form.edit": "Redigera", "upload_form.thumbnail": "Ändra miniatyr", "upload_form.video_description": "Beskriv för personer med hörsel- eller synnedsättning", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 88c48bfb40..ab93358f6f 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -222,6 +222,8 @@ "domain_block_modal.they_cant_follow": "ไม่มีใครจากเซิร์ฟเวอร์นี้สามารถติดตามคุณ", "domain_block_modal.they_wont_know": "เขาจะไม่ทราบว่ามีการปิดกั้นเขา", "domain_block_modal.title": "ปิดกั้นโดเมน?", + "domain_block_modal.you_will_lose_num_followers": "คุณจะสูญเสีย {followersCount, plural, other {{followersCountDisplay} ผู้ติดตาม}}และ {followingCount, plural, other {{followingCountDisplay} คนที่คุณติดตาม}}", + "domain_block_modal.you_will_lose_relationships": "คุณจะสูญเสียผู้ติดตามและผู้คนที่คุณติดตามทั้งหมดจากเซิร์ฟเวอร์นี้", "domain_block_modal.you_wont_see_posts": "คุณจะไม่เห็นโพสต์หรือการแจ้งเตือนจากผู้ใช้ในเซิร์ฟเวอร์นี้", "domain_pill.activitypub_lets_connect": "โปรโตคอลช่วยให้คุณเชื่อมต่อและโต้ตอบกับผู้คนไม่ใช่แค่ใน Mastodon แต่ทั่วทั้งแอปสังคมต่าง ๆ เช่นกัน", "domain_pill.activitypub_like_language": "ActivityPub เป็นเหมือนภาษาที่ Mastodon พูดกับเครือข่ายสังคมอื่น ๆ", @@ -434,6 +436,8 @@ "lightbox.close": "ปิด", "lightbox.next": "ถัดไป", "lightbox.previous": "ก่อนหน้า", + "lightbox.zoom_in": "ซูมเป็นขนาดจริง", + "lightbox.zoom_out": "ซูมให้พอดี", "limited_account_hint.action": "แสดงโปรไฟล์ต่อไป", "limited_account_hint.title": "มีการซ่อนโปรไฟล์นี้โดยผู้กลั่นกรองของ {domain}", "link_preview.author": "โดย {name}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index cf33a15d32..9c886790b0 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -441,7 +441,7 @@ "limited_account_hint.action": "Vẫn cứ xem", "limited_account_hint.title": "Người này đã bị ẩn bởi quản trị viên {domain}.", "link_preview.author": "Bởi {name}", - "link_preview.more_from_author": "Thêm từ {name}", + "link_preview.more_from_author": "Viết bởi {name}", "link_preview.shares": "{count, plural, other {{counter} lượt chia sẻ}}", "lists.account.add": "Thêm vào danh sách", "lists.account.remove": "Xóa khỏi danh sách", @@ -527,7 +527,7 @@ "notification.moderation_warning.action_silence": "Tài khoản của bạn đã bị hạn chế.", "notification.moderation_warning.action_suspend": "Tài khoản của bạn đã bị vô hiệu hóa.", "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 có bạn tham gia đã kết thúc", + "notification.poll": "Cuộc bình chọn mà bạn tham gia đã kết thúc", "notification.reblog": "{name} đăng lại tút của bạn", "notification.reblog.name_and_others_with_link": "{name} và {count, plural, other {# người khác}} đã đăng lại tút của bạn", "notification.relationships_severance_event": "Mất kết nối với {name}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 74702e5127..df237fa239 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -36,7 +36,7 @@ "account.followers.empty": "目前无人关注此用户。", "account.followers_counter": "{count, plural, other {{counter} 关注者}}", "account.following": "正在关注", - "account.following_counter": "{count, plural, other {{counter} 关注}}", + "account.following_counter": "正在关注 {count, plural, other {{counter} 人}}", "account.follows.empty": "此用户目前未关注任何人。", "account.go_to_profile": "前往个人资料页", "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", @@ -59,7 +59,7 @@ "account.posts_with_replies": "嘟文和回复", "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", - "account.requested_follow": "{name} 已经向你发送了关注请求", + "account.requested_follow": "{name} 向你发送了关注请求", "account.share": "分享 @{name} 的个人资料页", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}", @@ -94,8 +94,8 @@ "block_modal.show_more": "显示更多", "block_modal.they_cant_mention": "他们不能提及或关注你。", "block_modal.they_cant_see_posts": "他们看不到你的嘟文,你也看不到他们的嘟文。", - "block_modal.they_will_know": "他们将能看到他们被屏蔽。", - "block_modal.title": "是否屏蔽该用户?", + "block_modal.they_will_know": "对方将能看到自己被屏蔽。", + "block_modal.title": "屏蔽该用户?", "block_modal.you_wont_see_mentions": "你将不会看到提及他们的嘟文。", "boost_modal.combo": "下次按住 {combo} 即可跳过此提示", "boost_modal.reblog": "是否转嘟?", @@ -204,7 +204,7 @@ "copy_icon_button.copied": "已复制到剪贴板", "copypaste.copied": "已复制", "copypaste.copy_to_clipboard": "复制到剪贴板", - "directory.federated": "来自已知的联邦宇宙", + "directory.federated": "来自已知联邦宇宙", "directory.local": "仅来自 {domain}", "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", @@ -220,24 +220,24 @@ "domain_block_modal.block_account_instead": "改为屏蔽 @{name}", "domain_block_modal.they_can_interact_with_old_posts": "来自该服务器的人可以与你之前的嘟文交互。", "domain_block_modal.they_cant_follow": "此服务器上没有人可以关注你。", - "domain_block_modal.they_wont_know": "他们不会知道自己被屏蔽。", + "domain_block_modal.they_wont_know": "对方不会知道自己被屏蔽。", "domain_block_modal.title": "屏蔽该域名?", "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", "domain_block_modal.you_will_lose_relationships": "你将失去在此实例上的所有关注和关注者。", "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", - "domain_pill.activitypub_lets_connect": "它让你不仅能与Mastodon上的人交流互动,还能与其它不同社交应用上的人联系。", - "domain_pill.activitypub_like_language": "ActivityPub就像Mastodon与其它社交网络交流时使用的语言。", + "domain_pill.activitypub_lets_connect": "它让你不仅能与 Mastodon 上的人交流互动,还能与其它不同社交应用上的人联系。", + "domain_pill.activitypub_like_language": "ActivityPub 好比 Mastodon 与其它社交网络交流时使用的语言。", "domain_pill.server": "服务器", - "domain_pill.their_handle": "它们的代号:", - "domain_pill.their_server": "它们的数字家园,它们的所有嘟文都存放在那里。", - "domain_pill.their_username": "它们在它们的服务器上的唯一标识符。在不同的服务器上可能会找到相同用户名的用户。", + "domain_pill.their_handle": "对方代号:", + "domain_pill.their_server": "对方的数字家园,对方的所有嘟文都存放在那里。", + "domain_pill.their_username": "对方在其服务器上的唯一标识符。不同服务器上可能会存在相同用户名的用户。", "domain_pill.username": "用户名", "domain_pill.whats_in_a_handle": "代号里都有什么?", - "domain_pill.who_they_are": "代号可以告诉你一个人是谁和在哪里,所以你可以在社交网络上与的人们互动。", - "domain_pill.who_you_are": "你的代号可以告诉别人你是谁和你在哪里,这样社交网络上来自的人们就可以与你互动。", + "domain_pill.who_they_are": "代号可以表明用户和其所在站点,你可以在社交网络上与的人们互动。", + "domain_pill.who_you_are": "代号可以表明你自己和你所在站点,社交网络上来自的人们因此可以与你互动。", "domain_pill.your_handle": "你的代号:", "domain_pill.your_server": "你的数字家园,你的所有嘟文都存放在这里。不喜欢这个服务器吗?随时带上你的关注者一起迁移到其它服务器。", - "domain_pill.your_username": "你在这个服务器上的唯一标识符。在不同的服务器上可能会找到相同用户名的用户。", + "domain_pill.your_username": "你在这个服务器上的唯一标识符。不同服务器上可能会存在相同用户名的用户。", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "它会像这样显示出来:", "emoji_button.activity": "活动", @@ -465,11 +465,11 @@ "mute_modal.hide_options": "隐藏选项", "mute_modal.indefinite": "直到我取消隐藏他们", "mute_modal.show_options": "显示选项", - "mute_modal.they_can_mention_and_follow": "他们可以提及和关注你,但是你看不到他们。", - "mute_modal.they_wont_know": "它们不会知道自己已被隐藏。", - "mute_modal.title": "隐藏用户?", - "mute_modal.you_wont_see_mentions": "你看不到提及他们的嘟文。", - "mute_modal.you_wont_see_posts": "他们可以看到你的嘟文,但是你看不到他们的。", + "mute_modal.they_can_mention_and_follow": "对方可以提及和关注你,但是你看不到对方。", + "mute_modal.they_wont_know": "对方不会知道自己被隐藏。", + "mute_modal.title": "隐藏该用户?", + "mute_modal.you_wont_see_mentions": "你看不到提及对方的嘟文。", + "mute_modal.you_wont_see_posts": "对方可以看到你的嘟文,但是你看不到对方的。", "navigation_bar.about": "关于", "navigation_bar.administration": "管理", "navigation_bar.advanced_interface": "在高级网页界面中打开", @@ -524,15 +524,15 @@ "notification.moderation_warning.action_mark_statuses_as_sensitive": "你的一些嘟文已被标记为敏感内容。", "notification.moderation_warning.action_none": "你的账号收到了管理警告。", "notification.moderation_warning.action_sensitive": "今后你的嘟文都会被标记为敏感内容。", - "notification.moderation_warning.action_silence": "你的账号已被限制。", - "notification.moderation_warning.action_suspend": "你的账号已被封禁.", + "notification.moderation_warning.action_silence": "你的账号已被隐藏。", + "notification.moderation_warning.action_suspend": "你的账号已被封禁。", "notification.own_poll": "你的投票已经结束", "notification.poll": "你参与的一项投票已结束", "notification.reblog": "{name} 转发了你的嘟文", "notification.reblog.name_and_others_with_link": "{name} 和 {count, plural, other {另外 # 人}} 转嘟了你的嘟文", "notification.relationships_severance_event": "与 {name} 的联系已断开", - "notification.relationships_severance_event.account_suspension": "一名来自 {from} 的管理员已经封禁了{target},这意味着你将无法再收到他们的更新或与他们互动。", - "notification.relationships_severance_event.domain_block": "一名来自 {from} 的管理员已经屏蔽了 {target},其中包括你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", + "notification.relationships_severance_event.account_suspension": "来自 {from} 的管理员封禁了 {target},这意味着你将无法再收到对方的更新或与其互动。", + "notification.relationships_severance_event.domain_block": "来自 {from} 的管理员屏蔽了 {target},其中包括你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", "notification.relationships_severance_event.learn_more": "了解更多", "notification.relationships_severance_event.user_domain_block": "你已经屏蔽了 {target},移除了你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", "notification.status": "{name} 刚刚发布嘟文", @@ -781,14 +781,14 @@ "status.bookmark": "添加到书签", "status.cancel_reblog_private": "取消转贴", "status.cannot_reblog": "这条嘟文不允许被转嘟", - "status.continued_thread": "继续线程", + "status.continued_thread": "上接嘟文串", "status.copy": "复制嘟文链接", "status.delete": "删除", "status.detailed_status": "详细的对话视图", "status.direct": "私下提及 @{name}", "status.direct_indicator": "私下提及", "status.edit": "编辑", - "status.edited": "最近编辑于 {date}", + "status.edited": "最后编辑于 {date}", "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "获取嵌入代码", "status.favourite": "喜欢", @@ -815,10 +815,10 @@ "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", "status.remove_bookmark": "移除书签", - "status.replied_in_thread": "已在线程中回复", + "status.replied_in_thread": "回复给嘟文串", "status.replied_to": "回复给 {name}", "status.reply": "回复", - "status.replyAll": "回复所有人", + "status.replyAll": "回复此嘟文串", "status.report": "举报 @{name}", "status.sensitive_warning": "敏感内容", "status.share": "分享", diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml index f99f726e23..45149cd117 100644 --- a/config/locales/activerecord.eo.yml +++ b/config/locales/activerecord.eo.yml @@ -25,7 +25,7 @@ eo: account: attributes: username: - invalid: nur literoj, ciferoj kaj substrekoj + invalid: devas enhavi nur literojn, ciferojn kaj substrekojn reserved: rezervita admin/webhook: attributes: diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml index bccfb96602..809b8fd582 100644 --- a/config/locales/activerecord.ia.yml +++ b/config/locales/activerecord.ia.yml @@ -20,6 +20,7 @@ ia: invalid: non es un nomine de dominio valide messages: invalid_domain_on_line: "%{value} non es un nomine de dominio valide" + too_many_lines: il es ultra le limite de %{limit} lineas models: account: attributes: diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index 468df9b12b..21be8aa345 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -15,6 +15,12 @@ ja: user/invite_request: text: 理由 errors: + attributes: + domain: + invalid: 有効なドメイン名ではありません + messages: + invalid_domain_on_line: "%{value} は有効なドメイン名ではありません" + too_many_lines: "%{limit} 行の制限を超えています。" models: account: attributes: diff --git a/config/locales/activerecord.ml.yml b/config/locales/activerecord.ml.yml index 8b20ee34b3..90c5b38ad5 100644 --- a/config/locales/activerecord.ml.yml +++ b/config/locales/activerecord.ml.yml @@ -4,23 +4,37 @@ ml: attributes: poll: expires_at: സമയപരിധി - options: ചോയ്‌സുകൾ + options: തിരഞ്ഞെടുപ്പുകൾ user: agreement: സേവന ഉടമ്പടി email: ഇ-മെയിൽ വിലാസം locale: ഭാഷ - password: രഹസ്യവാചകം + password: രഹസ്യവാക്കു് user/account: username: ഉപയോക്തൃനാമം user/invite_request: text: കാരണം errors: + attributes: + domain: + invalid: ഇതൊരു തെറ്റിയ മേഖലപേരാണു് + messages: + invalid_domain_on_line: "%{value} ഒരു തെറ്റിയ മേഖലപേരാണു്" + too_many_lines: ഇതു് %{limit} വരിയതിരിന്റെ മേലെയാണു് models: account: attributes: username: invalid: അക്ഷരങ്ങളും, അക്കങ്ങളും, പിന്നെ അടിവരയും മാത്രം reserved: കരുതിവച്ചു + admin/webhook: + attributes: + url: + invalid: ഇതൊരു തെറ്റിയ വിലാസമാണു് + doorkeeper/application: + attributes: + website: + invalid: ഇതൊരു തെറ്റിയ വിലാസമാണു് status: attributes: reblog: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 7422550660..113d881ae5 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -46,7 +46,7 @@ zh-TW: user: attributes: email: - blocked: 使用不被允許的電子郵件供應商 + blocked: 使用不被允許的電子郵件提供商 unreachable: 該電子郵件地址似乎無法使用 role_id: elevated: 不能高於您目前的角色 diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 72c5d9d752..a3310f0d46 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -449,7 +449,7 @@ ast: your_token: El pase d'accesu auth: delete_account: Desaniciu de la cuenta - delete_account_html: Si quies desaniciar la cuenta, pues facelo equí. Va pidísete que confirmes l'aición. + delete_account_html: Si quies desaniciar la cuenta, pues facelo equí. Vamos pidite que confirmes l'aición. description: prefix_sign_up: "¡Rexístrate güei en Mastodon!" didnt_get_confirmation: "¿Nun recibiesti l'enllaz de confirmación?" @@ -645,6 +645,7 @@ ast: errors: missing_also_known_as: nun ye un nomatu d'esta cuenta move_to_self: nun pue ser la cuenta actual + incoming_migrations: Migración d'otra cuenta incoming_migrations_html: Pa migrar d'otra cuenta a esta, primero tienes de crear un nomatu de cuenta. warning: followers: Esta aición va mover tolos siguidores de la cuenta actual a la nueva @@ -726,6 +727,7 @@ ast: over_daily_limit: Superesti la llende de %{limit} artículos programaos pa güei over_total_limit: Superesti la llende de %{limit} artículos programaos sessions: + activity: Última actividá browser: Restolador browsers: alipay: Alipay @@ -778,6 +780,7 @@ ast: import: Importación import_and_export: Importación y esportación migrate: Migración de la cuenta + notifications: Avisos per corréu electrónicu preferences: Preferencies profile: Perfil públicu relationships: Perfiles que sigues y te siguen diff --git a/config/locales/cy.yml b/config/locales/cy.yml index d57ef38696..85136004ea 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -29,6 +29,7 @@ cy: two: Postiadau zero: Postiadau posts_tab_heading: Postiadau + self_follow_error: Chewch chi ddim dilyn eich cyfrif eich hun admin: account_actions: action: Cyflawni gweithred @@ -918,7 +919,7 @@ cy: message_html: Mae gan eich clwstwr Elasticsearch fwy nag un nod, ond nid yw Mastodon wedi'i ffurfweddu i'w defnyddio. elasticsearch_preset_single_node: action: Darllenwch y ddogfennaeth - message_html: Dim ond un nod sydd gan eich clwstwr Elasticsearch, mae angen gosod ES_PRESET i single_node_cluster . + message_html: Dim ond un nod sydd gan eich clwstwr Elasticsearch, mae angen gosod ES_PRESET i single_node_cluster. elasticsearch_reset_chewy: message_html: Mae eich mynegai system Elasticsearch wedi dyddio oherwydd newid gosodiad. Rhedwch chwiliad tootctl search deploy --reset-chewy i'w ddiweddaru. elasticsearch_running_check: @@ -1062,7 +1063,7 @@ cy: webhooks: add_new: Ychwanegu diweddbwynt delete: Dileu - description_html: Mae bachyn gwe yn galluogi Mastodon i wthio hysbysiadau amser real am ddigwyddiadau a ddewiswyd i'ch cais eich hun, fel y gall eich cais ysgogi ymatebion yn awtomatig . + description_html: Mae bachyn gwe yn galluogi Mastodon i wthio hysbysiadau amser real am ddigwyddiadau a ddewiswyd i'ch cais eich hun, fel y gall eich cais ysgogi ymatebion yn awtomatig. disable: Analluogi disabled: Wedi'i analluogi edit: Golygu diweddbwynt @@ -1126,7 +1127,7 @@ cy: created_msg: Wedi creu enw arall yn llwyddiannus. Gallwch nawr ddechrau symud o'r hen gyfrif. deleted_msg: Wedi tynnu enw arall yn llwyddiannus. Ni fydd symud o'r cyfrif hynny i'r cyfrif hon yn bosib. empty: Nid oes gennych enwau eraill. - hint_html: Os ydych chi am symud o gyfrif arall i'r un hwn, gallwch greu enw arall yma, sy'n ofynnol cyn y gallwch symud ymlaen i symud dilynwyr o'r hen gyfrif i'r un hwn. Mae'r weithred hon ynddo'i hun yn ddiniwed ac yn wrthdroadwy. Mae'r mudo cyfrif yn cael ei wneud o'r hen gyfrif . + hint_html: Os ydych chi am symud o gyfrif arall i'r un hwn, gallwch greu enw arall yma, sy'n ofynnol cyn y gallwch symud ymlaen i symud dilynwyr o'r hen gyfrif i'r un hwn. Mae'r weithred hon ynddo'i hun yn ddiniwed ac yn wrthdroadwy. Mae'r mudo cyfrif yn cael ei wneud o'r hen gyfrif. remove: Dadgysylltu'r enw arall appearance: advanced_web_interface: Rhyngwyneb gwe uwch @@ -1367,7 +1368,7 @@ cy: add_keyword: Ychwanegu allweddair keywords: Allweddeiriau statuses: Postiadau unigol - statuses_hint_html: Mae'r hidlydd hwn yn berthnasol i ddewis postiadau unigol pa un ai a ydynt yn cyfateb i'r allweddeiriau isod. Adolygu neu ddileu postiadau o'r hidlydd . + statuses_hint_html: Mae'r hidlydd hwn yn berthnasol i ddewis postiadau unigol pa un ai a ydynt yn cyfateb i'r allweddeiriau isod. Adolygu neu ddileu postiadau o'r hidlydd. title: Golygu hidlydd errors: deprecated_api_multiple_keywords: Nid oes modd newid y paramedrau hyn o'r cais hwn oherwydd eu bod yn berthnasol i fwy nag un allweddair hidlo. Defnyddiwch raglen fwy diweddar neu'r rhyngwyneb gwe. @@ -1465,6 +1466,92 @@ cy: merge_long: Cadw'r cofnodion presennol ac ychwanegu rhai newydd overwrite: Trosysgrifio overwrite_long: Amnewid y cofnodion cyfredol gyda'r rhai newydd + overwrite_preambles: + blocking_html: + few: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + many: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + one: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + other: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + two: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + zero: Rydych ar fin amnewid eich rhestr rhwystro gyda hyd at %{count} o gyfrifon o %{filename}. + bookmarks_html: + few: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{count} postiadau gan %{filename}. + many: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{count} postiadau gan %{filename}. + one: Rydych ar fin disodli eich nodau tudalen gyda hyd at %{count} postiad o %{filename}. + other: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{count} postiadau gan %{filename}. + two: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{count} postiadau gan %{filename}. + zero: Rydych ar fin amnewid eich nodau tudalen gyda hyd at %{count} postiadau gan %{filename}. + domain_blocking_html: + few: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. + many: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. + one: Rydych ar fin disodli eich rhestr blociau parth gyda hyd at %{count} parth o %{filename}. + other: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. + two: Rydych ar fin amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}amnewid eich rhestr rhwystro parthau gyda hyd at %{count} parth o %{filename}. + following_html: + few: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename} a pheidio â dilyn unrhyw un arall. + many: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename} a pheidio â dilyn unrhyw un arall. + one: Rydych ar fin dilyn hyd at %{count} gyfrif o %{filename} a rhoi'r gorau i ddilyn unrhyw un arall. + other: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename} a pheidio â dilyn unrhyw un arall. + two: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename} a pheidio â dilyn unrhyw un arall. + zero: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename} a pheidio â dilyn unrhyw un arall. + lists_html: + few: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + many: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + one: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + other: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + two: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + zero: Rydych ar fin amnewid eich rhestrau gyda chynnwys %{filename}. Bydd hyd at %{count} cyfrif yn cael eu hychwanegu at restrau newydd. + muting_html: + few: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{count} o gyfrifon o %{filename}. + many: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{count} o gyfrifon o %{filename}. + one: Rydych ar fin disodli eich rhestr o gyfrifon wedi'u tewi am hyd at %{count} gyfrif o %{filename}. + other: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{count} o gyfrifon o %{filename}. + two: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{count} o gyfrifon o %{filename}. + zero: Rydych ar fin amnewid eich rhestr o gyfrifon tawel gyda hyd at %{count} o gyfrifon o %{filename}. + preambles: + blocking_html: + few: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + many: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + one: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + other: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + two: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + zero: Rydych ar fin rhwystro hyd at %{count} cyfrif o %{filename}. + bookmarks_html: + few: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + many: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + one: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + other: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + two: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + zero: Rydych ar fin ychwanegu hyd at %{count} pbostiad o %{filename} at eich nodau tudalen. + domain_blocking_html: + few: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + many: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + one: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + other: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + two: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + zero: Rydych ar fin rhwystro hyd at %{count} parth o %{filename}. + following_html: + few: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename}. + many: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename}. + one: Rydych ar fin dilyn hyd at %{count} gyfrif o %{filename}. + other: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename}. + two: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename}. + zero: Rydych ar fin dilyn hyd at %{count} cyfrif gan %{filename}. + lists_html: + few: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + many: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + one: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + other: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + two: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + zero: Rydych ar fin ychwanegu hyd at %{count} cyfrif o %{filename} at eich rhestrau. Bydd rhestrau newydd yn cael eu creu os nad oes rhestr i ychwanegu ati. + muting_html: + few: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. + many: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. + one: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. + other: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. + two: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. + zero: Rydych ar fin tewi hyd at %{count} cyfrif o %{filename}. preface: Gallwch fewnforio data rydych chi wedi'i allforio o weinydd arall, fel rhestr o'r bobl rydych chi'n eu dilyn neu'n eu blocio. recent_imports: Mewnforion diweddar states: @@ -1547,7 +1634,7 @@ cy: follow_request: e-byst ceisiadau dilyn mention: e-byst hysbysu crybwylliadau reblog: e-byst hysbysiadau hybu - resubscribe_html: Os ydych wedi dad-danysgrifio trwy gamgymeriad, gallwch ail-danysgrifio drwy'ch gosodiadau hysbysu e-bost . + resubscribe_html: Os ydych wedi dad-danysgrifio trwy gamgymeriad, gallwch ail-danysgrifio drwy'ch gosodiadau hysbysu e-bost. success_html: Ni fyddwch bellach yn derbyn %{type} ar gyfer Mastodon ar %{domain} i'ch e-bost am %{email}. title: Dad-danysgrifio media_attachments: @@ -1569,7 +1656,7 @@ cy: on_cooldown: Rydych ar amser allan followers_count: Dilynwyr ar adeg y symud incoming_migrations: Symud o gyfrif wahanol - incoming_migrations_html: I symud o gyfrif arall i'r un hwn, yn gyntaf mae angen i chi greu enwarall (alias) cyfrif . + incoming_migrations_html: I symud o gyfrif arall i'r un hwn, yn gyntaf mae angen i chi greu enwarall (alias) cyfrif. moved_msg: Mae eich cyfrif bellach yn ailgyfeirio i %{acct} ac mae eich dilynwyr yn cael eu symud drosodd. not_redirecting: Nid yw eich cyfrif yn ailgyfeirio i unrhyw gyfrif arall ar hyn o bryd. on_cooldown: Rydych chi wedi mudo'ch cyfrif yn ddiweddar. Bydd y swyddogaeth hon ar gael eto ymhen %{count} diwrnod. @@ -1584,7 +1671,7 @@ cy: cooldown: Ar ôl symud, bydd yna cyfnod aros na fydd modd i chi symud eto disabled_account: Ni fydd modd defnyddio'ch cyfrif cyfredol yn llawn wedyn. Fodd bynnag, bydd gennych fynediad i allforio data yn ogystal ag ail agor. followers: Bydd y weithred hon yn symud yr holl ddilynwyr o'r cyfrif cyfredol i'r cyfrif newydd - only_redirect_html: Fel arall, dim ond ailgyfeiriad y gallwch chi ei osod ar eich proffil . + only_redirect_html: Fel arall, dim ond ailgyfeiriad y gallwch chi ei osod ar eich proffil. other_data: Ni fydd unrhyw data arall yn cael ei symud yn awtomatig redirect: Bydd proffil eich cyfrif presennol yn cael ei diweddaru gyda hysbysiad ailgyfeirio ac yn cael ei eithrio o chwiliadau moderation: diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index 43aef271f9..88514ab5e2 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -6,7 +6,7 @@ eo: send_instructions: Vi ricevos retmesaĝon kun instrukcioj por konfirmi vian retadreson ene de kelkaj minutoj. Bonvolu kontroli vian spamujon se vi ne ricevis ĉi tiun retmesaĝon. send_paranoid_instructions: Se via retadreso ekzistas en nia datumbazo, vi ricevos retmesaĝon kun instrukcioj por konfirmi vian retadreson ene de kelkaj minutoj. Bonvolu kontroli vian spamujon se vi ne ricevis ĉi tiun retmesaĝon. failure: - already_authenticated: Vi jam salutis. + already_authenticated: Vi jam ensalutis. inactive: Via konto ankoraŭ ne estas konfirmita. invalid: Nevalida %{authentication_keys} aŭ pasvorto. last_attempt: Vi ankoraŭ povas provi unufoje antaŭ ol via konto estos ŝlosita. diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index c9c831f7f5..3df18d6f7a 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -50,7 +50,9 @@ ast: confirmations: revoke: "¿De xuru que quies facer esta aición?" index: + authorized_at: 'Data d''autorización: %{date}' description_html: Estes son les aplicaciones que puen acceder a la cuenta cola API. Si equí hai aplicaciones que nun conoces o hai dalguna aplicación que nun funciona correutamente, pues revocar el so accesu. + last_used_at: 'Últimu usu: %{date}' never_used: Enxamás s'usó scopes: Permisos title: Les aplicaciones qu'autoricesti diff --git a/config/locales/doorkeeper.es-MX.yml b/config/locales/doorkeeper.es-MX.yml index e119d71f4e..eaf1bf69fb 100644 --- a/config/locales/doorkeeper.es-MX.yml +++ b/config/locales/doorkeeper.es-MX.yml @@ -60,7 +60,7 @@ es-MX: error: title: Ha ocurrido un error new: - prompt_html: A %{client_name} le gustaría obtener permiso para acceder a tu cuenta. Aprueba esta solicitud solo si reconoces y confías en esta fuente. + prompt_html: "%{client_name} desea obtener permiso para acceder a tu cuenta. Aprueba esta solicitud solamente si reconoces y confías en esta fuente." review_permissions: Revisar permisos title: Se requiere autorización show: diff --git a/config/locales/doorkeeper.et.yml b/config/locales/doorkeeper.et.yml index ebfaf5c710..fb135b1f96 100644 --- a/config/locales/doorkeeper.et.yml +++ b/config/locales/doorkeeper.et.yml @@ -60,6 +60,7 @@ et: error: title: Ilmnes viga new: + prompt_html: "%{client_name} soovib saada ligipääsu su kontole. Kinnita see taotlus ainult siis, kui sa tunned ja usaldad seda allikat." review_permissions: Lubade ülevaade title: Autoriseerimine vajalik show: diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml index 4ff03950b5..8e2bc864a2 100644 --- a/config/locales/doorkeeper.fa.yml +++ b/config/locales/doorkeeper.fa.yml @@ -130,7 +130,7 @@ fa: favourites: برگزیده‌ها filters: پالایه‌ها follow: پی‌گیری، خموشی و مسدودی‌ها - follows: پی‌گرفتگان + follows: پی‌گرفتن‌ها lists: سیاهه‌ها media: پیوست‌های رسانه‌ای mutes: خموش‌ها diff --git a/config/locales/doorkeeper.is.yml b/config/locales/doorkeeper.is.yml index 05f2415eea..1fabd1b55f 100644 --- a/config/locales/doorkeeper.is.yml +++ b/config/locales/doorkeeper.is.yml @@ -60,6 +60,7 @@ is: error: title: Villa kom upp new: + prompt_html: "%{client_name} vill fá heimild til að skoða aðganginn þinn. Ekki samþykkja þessa beiðni nema þú þekkir og treystir viðkomandi." review_permissions: Yfirfara heimildir title: Auðkenning er nauðsynleg show: diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml index 7cfddf50a1..d44451c746 100644 --- a/config/locales/doorkeeper.ja.yml +++ b/config/locales/doorkeeper.ja.yml @@ -60,6 +60,7 @@ ja: error: title: エラーが発生しました new: + prompt_html: "%{client_name} があなたのアカウントにアクセスするための許可を求めています。このリクエストを承認するのは、信頼できる相手であると認識している場合のみです。" review_permissions: アクセス許可を確認 title: 認証が必要です show: diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index 9f646fd3e4..2a22edf673 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -132,7 +132,7 @@ sv: follow: Följare, mjutade och blockerade follows: Följer lists: Listor - media: Mediabilagor + media: Mediebilagor mutes: Tystade användare notifications: Aviseringar profile: Din Mastodon-profil diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index 6687c0339d..2219599c57 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -150,30 +150,30 @@ vi: title: Đăng nhập bằng OAuth scopes: admin:read: đọc mọi dữ liệu trên máy chủ - admin:read:accounts: đọc thông tin nhạy cảm của tất cả các tài khoản - admin:read:canonical_email_blocks: đọc thông tin nhạy cảm của tất cả khối email chuẩn - admin:read:domain_allows: đọc thông tin nhạy cảm của tất cả các tên miền cho phép - admin:read:domain_blocks: đọc thông tin nhạy cảm của tất cả các tên miền chặn - admin:read:email_domain_blocks: đọc thông tin nhạy cảm của tất cả các miền email chặn - admin:read:ip_blocks: đọc thông tin nhạy cảm của tất cả các IP chặn + admin:read:accounts: đọc thông tin nhạy cảm của mọi tài khoản + admin:read:canonical_email_blocks: đọc thông tin nhạy cảm của mọi khối email biến thể + admin:read:domain_allows: đọc thông tin nhạy cảm của mọi máy chủ liên hợp + admin:read:domain_blocks: đọc thông tin nhạy cảm của mọi máy chủ chặn + admin:read:email_domain_blocks: đọc thông tin nhạy cảm của mọi tên miền email chặn + admin:read:ip_blocks: đọc thông tin nhạy cảm của mọi IP chặn admin:read:reports: đọc thông tin của các báo cáo và các tài khoản bị báo cáo admin:write: sửa đổi tất cả dữ liệu trên máy chủ admin:write:accounts: áp đặt hành động kiểm duyệt trên tài khoản - admin:write:canonical_email_blocks: áp đặt kiểm duyệt đối với chặn email + admin:write:canonical_email_blocks: áp đặt kiểm duyệt đối với chặn email biến thể admin:write:domain_allows: áp đặt kiểm duyệt đối với các email cho phép admin:write:domain_blocks: áp đặt kiểm duyệt đối với các tên miền chặn admin:write:email_domain_blocks: áp đặt kiểm duyệt đối với các tên miền email chặn admin:write:ip_blocks: áp đặt kiểm duyệt với các IP chặn admin:write:reports: áp đặt kiểm duyệt với các báo cáo crypto: dùng mã hóa đầu cuối - follow: sửa đổi các mối quan hệ tài khoản - profile: chỉ đọc thông tin tài khoản cơ bản + follow: sửa đổi các mối quan hệ + profile: chỉ xem thông tin tài khoản cơ bản push: nhận thông báo đẩy read: đọc mọi dữ liệu tài khoản read:accounts: xem thông tin tài khoản read:blocks: xem những người đã chặn read:bookmarks: xem tút đã lưu - read:favourites: xem lượt thích + read:favourites: xem tút đã thích read:filters: xem bộ lọc read:follows: xem những người theo dõi read:lists: xem danh sách @@ -182,7 +182,7 @@ vi: read:reports: xem báo cáo của bạn read:search: tìm kiếm read:statuses: xem toàn bộ tút - write: sửa đổi mọi dữ liệu tài khoản của bạn + write: sửa đổi mọi dữ liệu tài khoản write:accounts: sửa đổi trang hồ sơ write:blocks: chặn người và máy chủ write:bookmarks: sửa đổi những tút lưu @@ -194,5 +194,5 @@ vi: write:media: tải lên tập tin write:mutes: ẩn người và thảo luận write:notifications: xóa thông báo - write:reports: báo cáo người khác + write:reports: báo cáo write:statuses: đăng tút diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index 46253d01b3..08f9885894 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -167,7 +167,7 @@ zh-CN: admin:write:reports: 对举报执行管理操作 crypto: 使用端到端加密 follow: 关注或屏蔽用户 - profile: 仅读取你账户中的个人资料信息 + profile: 仅读取你账号的个人资料信息 push: 接收你的账户的推送通知 read: 读取你的账户数据 read:accounts: 查看账号信息 diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 1e683b1725..629edd9380 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -19,7 +19,7 @@ eo: following: Vi devas sekvi la homon, kiun vi volas proponi posts: one: Afiŝo - other: Mesaĝoj + other: Afiŝoj posts_tab_heading: Afiŝoj self_follow_error: Sekvi vian propran konton ne estas permesita admin: @@ -81,8 +81,8 @@ eo: joined: Aliĝis location: all: Ĉiuj - local: Lokaj - remote: Foraj + local: Loka + remote: Fora title: Loko login_status: Ensaluta stato media_attachments: Plurmediaj aldonaĵoj @@ -133,6 +133,7 @@ eo: resubscribe: Reaboni role: Rolo search: Serĉi + search_same_email_domain: Aliaj uzantoj kun la sama retpoŝta domajno search_same_ip: Aliaj uzantoj kun la sama IP security: Sekureco security_measures: @@ -173,6 +174,7 @@ eo: approve_appeal: Aprobis Apelacion approve_user: Aprobi Uzanton assigned_to_self_report: Atribui Raporton + change_email_user: Ŝanĝu retpoŝton por uzanto change_role_user: Ŝanĝi Rolon de Uzanton confirm_user: Konfirmi uzanton create_account_warning: Krei averton @@ -731,6 +733,7 @@ eo: desc_html: Ĉi tio dependas de eksteraj hCaptcha-skriptoj, kiuj povas esti problemo pri sekureco kaj privateco. Ankaŭ, ĝi povas igi la registran procezon multe malpli alirebla por iuj homoj (precipe homoj kun handikapoj). Pro ĉi tiuj kialoj, bonvolu konsideri alternativajn rimedojn kiel registradon per aprobo aŭ per invito. title: Postuli novajn uzantojn solvi CAPTCHA por konfirmi sian konton content_retention: + danger_zone: Danĝera zono preamble: Regi kiel uzantogenerita enhavo konservitis en Mastodon. title: Enhavkonservo default_noindex: @@ -828,9 +831,11 @@ eo: sidekiq_process_check: message_html: Neniu Sidekiq-procezo por la %{value} vico software_version_check: + action: Vidi disponeblajn ĝisdatigojn message_html: Mastodon-ĝisdatigo disponeblas. software_version_critical_check: action: Vidi disponeblajn ĝisdatigojn + message_html: Grava ĝisdatigo de Mastodon disponeblas, bonvolu ĝisdatigi kiel eble plej rapide. software_version_patch_check: action: Vidi disponeblajn ĝisdatigojn upload_check_privacy_error: @@ -845,6 +850,7 @@ eo: name: Nomo newest: Plej novaj oldest: Plej malnovaj + reset: Restartigi review: La statuso de la recenzo search: Serĉi title: Kradvortoj @@ -860,7 +866,9 @@ eo: allow: Permesi ligilon allow_provider: Permesi publikiganto confirm_allow: Ĉu vi certas, ke vi volas permesi elektitajn ligilojn? + confirm_allow_provider: Ĉu vi certas, ke vi volas permesi elektitajn provizantojn? confirm_disallow: Ĉu vi certas, ke vi volas malpermesi elektitajn ligilojn? + confirm_disallow_provider: Ĉu vi certas, ke vi volas malpermesi elektitajn provizantojn? description_html: Ĉioj estas ligiloj kiuj nun diskonitajs multe de kontoj kiujn via servilo vidas. Ligiloj ne montritas publike se vi ne aprobis la publikiganton. disallow: Malpermesi ligilon disallow_provider: Malpermesi publikiganton @@ -918,6 +926,7 @@ eo: used_by_over_week: one: Uzita de 1 persono ekde lasta semajno other: Uzita de %{count} personoj ekde lasta semajno + title: Rekomendoj kaj Tendencoj trending: Popularaĵoj warning_presets: add_new: Aldoni novan @@ -1281,6 +1290,7 @@ eo: states: finished: Finita in_progress: Farata + scheduled: Planitaj unconfirmed: Nekonfirmita status: Stato success: Viaj datumoj estis sukcese alŝutitaj kaj estos traktitaj kiel planite @@ -1476,6 +1486,8 @@ eo: errors: limit_reached: Limito de malsamaj reagoj atinginta unrecognized_emoji: ne estas rekonita emoĝio + redirects: + prompt: Se vi fidas ĉi tiun ligon, alklaku ĝin por daŭrigi. relationships: activity: Konta aktiveco confirm_follow_selected_followers: Ĉu vi certas ke vi volas sekvi la elektitajn sekvantojn? @@ -1570,10 +1582,12 @@ eo: delete: Konta forigo development: Evoluigado edit_profile: Redakti profilon + export: Eksporti featured_tags: Elstarigitaj kradvortoj import: Enporti import_and_export: Importi kaj eksporti migrate: Konta migrado + notifications: Retpoŝtaj sciigoj preferences: Preferoj profile: Profilo relationships: Sekvatoj kaj sekvantoj @@ -1582,6 +1596,9 @@ eo: two_factor_authentication: Dufaktora aŭtentigo webauthn_authentication: Sekurecaj ŝlosiloj severed_relationships: + download: Elŝuti (%{count}) + event_type: + user_domain_block: Vi blokis %{target_name} lost_followers: Perditaj sekvantoj type: Evento statuses: @@ -1750,11 +1767,17 @@ eo: explanation: Jen kelkaj konsiloj por helpi vin komenci feature_action: Lerni pli follow_action: Sekvi + hashtags_recent_count: + one: "%{people} homo en la pasintaj 2 tagoj" + other: "%{people} homoj en la pasintaj 2 tagoj" hashtags_title: Popularaj kradvortoj hashtags_view_more: Vidi pli da popularaj kradvortoj + post_action: Redakti post_step: Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj. post_title: Faru vian unuan afiŝon + share_action: Kundividi share_step: Sciigu viajn amikojn kiel trovi vin sur Mastodon. + share_title: Kunhavigu vian Mastodon-profilon sign_in_action: Ensaluti subject: Bonvenon en Mastodon title: Bonvenon, %{name}! diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 2c18465a26..097c5c8152 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -241,7 +241,7 @@ es-MX: confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}" create_account_warning_html: "%{name} envió una advertencia a %{target}" create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}" - create_canonical_email_block_html: "%{name} bloqueó el correo electrónico con el hash %{target}" + create_canonical_email_block_html: "%{name} ha bloqueado el correo electrónico con el hash %{target}" create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}" create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}" create_domain_block_html: "%{name} bloqueó el dominio %{target}" @@ -251,7 +251,7 @@ es-MX: create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" destroy_announcement_html: "%{name} eliminó el anuncio %{target}" - destroy_canonical_email_block_html: "%{name} desbloqueó el correo electrónico con el hash %{target}" + destroy_canonical_email_block_html: "%{name} ha desbloqueado el correo electrónico con el hash %{target}" destroy_custom_emoji_html: "%{name} eliminó el emoji %{target}" destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}" destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}" @@ -605,7 +605,7 @@ es-MX: suspend_description_html: La cuenta y todos sus contenidos serán inaccesibles y eventualmente eliminados, e interactuar con ella será imposible. Reversible durante 30 días. Cierra todos los reportes contra esta cuenta. actions_description_html: Decide qué medidas tomar para resolver esta denuncia. Si tomas una acción punitiva contra la cuenta denunciada, se le enviará a dicha cuenta una notificación por correo electrónico, excepto cuando se seleccione la categoría Spam. actions_description_remote_html: Decide qué medidas tomar para resolver este reporte. Esto solo afectará a la forma en que tu servidor se comunica con esta cuenta remota y gestiona su contenido. - actions_no_posts: Este informe no tiene ningún mensaje asociado para eliminar + actions_no_posts: Este informe no tiene ninguna publicación asociada para eliminar add_to_report: Añadir más al reporte already_suspended_badges: local: Ya suspendido en este servidor @@ -802,7 +802,7 @@ es-MX: destroyed_msg: "¡Carga del sitio eliminada con éxito!" software_updates: critical_update: Crítico — por favor actualiza rápidamente - description: Se recomienda mantener actualizada tu instalación de Mastodon para beneficiarte de las últimas correcciones y características. Además, a veces es crítico actualizar Mastodon de manera oportuna para evitar problemas de seguridad. Por estas razones, Mastodon comprueba si hay actualizaciones cada 30 minutos, y te notificará de acuerdo a tus preferencias de notificación por correo electrónico. + description: Se recomienda mantener tu instalación de Mastodon actualizada para beneficiarte de las últimas correcciones y características. Además, a veces es crítico actualizar Mastodon a tiempo para evitar problemas de seguridad. Por estas razones, Mastodon busca actualizaciones cada 30 minutos, y le notificará de acuerdo a sus preferencias de notificación por correo electrónico. documentation_link: Saber más release_notes: Notas de la versión title: Actualizaciones disponibles diff --git a/config/locales/et.yml b/config/locales/et.yml index 4372a92843..4d231ae764 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -21,6 +21,7 @@ et: one: Postitus other: Postitused posts_tab_heading: Postitused + self_follow_error: Omaenda konto jälgimine ei ole lubatud admin: account_actions: action: Täida tegevus @@ -875,6 +876,9 @@ et: message_html: Serverireegleid pole defineeritud. sidekiq_process_check: message_html: Ühtegi Sidekiq protsessi pole %{value} järjekorra jaoks. Sidekiq seadistus vajab üle vaatamist + software_version_check: + action: Vaata saadaval uuendusi + message_html: Mastodoni uuendus on saadaval. software_version_critical_check: action: Vaata saadaolevaid uuendusi message_html: Saadaval on Mastodoni kriitiline uuendus, uuenda nii kiiresti kui võimalik. @@ -1362,6 +1366,44 @@ et: merge_long: Hoia olemasolevad andmed ja lisa uusi overwrite: Kirjuta üle overwrite_long: Vaheta praegused andmed uute vastu + overwrite_preambles: + blocking_html: + one: Oled asendamas oma blokeeringute loetelu faili %{filename} sisuga, milles on kuni %{count} konto. + other: Oled asendamas oma blokeeringute loetelu faili %{filename} sisuga, milles on kuni %{count} kontot. + bookmarks_html: + one: Oled asendamas oma järjehoidjad faili %{filename} sisuga, milles on kuni %{count} postitus. + other: Oled asendamas oma järjehoidjad faili %{filename} sisuga, milles on kuni %{count} postitust. + domain_blocking_html: + one: Oled asendamas oma domeenide blokeeringu loetelu faili %{filename} sisuga, milles on kuni %{count} domeen. + other: Oled asendamas oma domeenide blokeeringu loetelu faili %{filename} sisuga, milles on kuni %{count} domeen. + following_html: + one: Oled jälgima hakkamas kuni %{count} kontot failist %{filename} ja lõpetad kõigi teiste jälgimise. + other: Oled jälgima hakkamas kuni %{count} kontot failist %{filename} ja lõpetad kõigi teiste jälgimise. + lists_html: + one: Oled asendamas oma loetelusid faili %{filename} sisuga. Uutesse loeteludesse lisatakse kuni %{count} konto. + other: Oled asendamas oma loetelusid faili %{filename} sisuga. Uutesse loeteludesse lisatakse kuni %{count} kontot. + muting_html: + one: Oled asendamas oma vaigistatud kontode loetelu faili %{filename} sisuga, milles on kuni %{count} konto. + other: Oled asendamas oma vaigistatud kontode loetelu faili %{filename} sisuga, milles on kuni %{count} kontot. + preambles: + blocking_html: + one: Oled blokeerimas kuni %{count} konto failist %{filename}. + other: Oled blokeerimas kuni %{count} kontot failist %{filename}. + bookmarks_html: + one: Oled lisamas kuni %{count} postituse failist %{filename} oma järjehoidjatesse. + other: Oled lisamas kuni %{count} postitust failist %{filename} oma järjehoidjatesse. + domain_blocking_html: + one: Oled blokeerimas kuni %{count} domeeni failist %{filename}. + other: Oled blokeerimas kuni %{count} domeeni failist %{filename}. + following_html: + one: Oled jälgima hakkamas kuni %{count} konto failist %{filename}. + other: Oled jälgima hakkamas kuni %{count} kontot failist %{filename}. + lists_html: + one: Oled lisamas oma loeteludesse failist %{filename} kuni %{count} konto. Kui pole loetelusi, kuhu lisada, luuakse uued loetelud. + other: Oled lisamas oma loeteludesse failist %{filename} kuni %{count} kontot. Kui pole loetelusi, kuhu lisada, luuakse uued loetelud. + muting_html: + one: Oled vaigistamas kuni %{count} konto failist %{filename}. + other: Oled vaigistamas kuni %{count} kontot failist %{filename}. preface: Saad importida mistahes andmeid, mis on eksporditud teisest serverist. Näiteks nimekirja inimestest, keda jälgid ja keda blokeerid. recent_imports: Viimati imporditud states: @@ -1678,6 +1720,7 @@ et: delete: Konto kustutamine development: Arendus edit_profile: Muuda profiili + export: Eksport featured_tags: Esile toodud sildid import: Impordi import_and_export: Import / eksport diff --git a/config/locales/fa.yml b/config/locales/fa.yml index e7d932de11..fbfd78b6d4 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -961,8 +961,10 @@ fa: use_security_key: استفاده از کلید امنیتی author_attribution: example_title: متن نمونه + hint_html: واپایش چگونگی اعتبار دادن به شما هنگام هم‌رسانی پیوندها روی ماستودون. more_from_html: بیش‌تر از %{name} s_blog: بلاگ %{name} + title: اعتباردهی به نگارنده challenge: confirm: ادامه hint_html: "نکته: ما در یک ساعت آینده گذرواژه‌تان را از شما نخواهیم پرسید." @@ -1294,6 +1296,7 @@ fa: update: subject: "%{name} فرسته‌ای را ویرایست" notifications: + email_events: رویدادها برای آگاهی‌های رایانامه‌ای email_events_hint: 'گزینش رویدادهایی که می‌خواهید برایشان آگاهی دریافت کنید:' number: human: @@ -1338,6 +1341,7 @@ fa: privacy: hint_html: "شخصی‌سازی چگونگی پیدا شدن فرسته‌ها و نمایه‌تان. ویژگی‌های متعدّدی در ماستودون می‌توانند هنگام به کار افتادن در رسیدن به مخاطبینی گسترده‌تر یاریتان کنند. کمی وقت برای بازبینی این تنظیمات گذاشته تا مطمئن شوید برایتان مناسبند." privacy: محرمانگی + privacy_hint_html: واپایش میزان باز شدن به نفع دیگران. افراد نمایه‌های جالب و کاره‌های باحال را با مرور پی‌گرفتگان دیگران و دیدن کاره‌هایی که از آن‌ها می‌فرستند پیدا می‌کنند. با این حال شاید بخواهید پنهان نگهشان دارید. reach: دسترسی reach_hint_html: واپایش این که می‌خواهید به دست افراد جدید قابل کشف و پی‌گیری باشید یا نه. می‌خواهید فرسته‌هایتان روی صفحهٔ کشف ظاهر شوند؟ می‌خواهید دیگر افراد در پیشنهادهای پی‌گیریشان ببینندتان؟ می‌خواهید پی‌گیران جدید را به طور خودکار بپذیرید یا روی هرکدامشان واپایش داشته باشید؟ search: جست‌وجو @@ -1438,6 +1442,7 @@ fa: delete: پاک‌کردن حساب development: فرابری edit_profile: ویرایش نمایه + export: برون‌ریزی featured_tags: برچسب‌های برگزیده import: درون‌ریزی import_and_export: درون‌ریزی و برون‌بری @@ -1446,12 +1451,21 @@ fa: 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: @@ -1535,6 +1549,7 @@ fa: contrast: ماستودون (سایه‌روشن بالا) default: ماستودون (تیره) mastodon-light: ماستودون (روشن) + system: خودکار (استفاده از زمینهٔ سامانه) time: formats: default: "%d %b %Y, %H:%M" @@ -1616,6 +1631,7 @@ fa: instructions_html: کد زیر را رونوشت کرده و در HTML پایگاه وبتان جایگذاری کنید. سپس نشانی پایگاه وبتان را از زبانهٔ «ویرایش نمایه» در یکی از زمینه‌های اضافی روی نمایه‌تان افزوده و تغییرات را ذخیره کنید. verification: تأیید verified_links: "‏پیوندهای تأییدشده‌ شما" + website_verification: تأیید پایگاه وب webauthn_credentials: add: افزودن کلید امنیتی create: diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 01463edacb..eea31e9fbf 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -21,6 +21,7 @@ fr-CA: one: Message other: Messages posts_tab_heading: Messages + self_follow_error: Il n'est pas possible de suivre votre propre compte admin: account_actions: action: Effectuer l'action @@ -1368,6 +1369,44 @@ fr-CA: merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux + overwrite_preambles: + blocking_html: + one: Vous allez remplacer votre liste de blocage par près de %{count} compte tiré de %{filename}. + other: Vous allez remplacer votre liste de blocage par près de %{count} comptes tirés de %{filename}. + bookmarks_html: + one: Vous allez remplacer vos signets par près de %{count} post tiré de %{filename}. + other: Vous allez remplacer vos signets par près de %{count} posts tirés de %{filename}. + domain_blocking_html: + one: Vous allez remplacer votre liste de blocage de domaines par près de %{count} domaine tiré de %{filename}. + other: Vous allez remplacer votre liste de blocage de domaines par près de %{count} domaines tirés de %{filename}. + following_html: + one: Vous allez suivre jusqu’à %{count} compte depuis %{filename} et arrêter de suivre n’importe qui d’autre. + other: Vous allez suivre jusqu’à %{count} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. + lists_html: + one: Vous allez remplacer vos listes par le contenu de %{filename}. Près de %{count} compte sera ajouté à de nouvelles listes. + other: Vous allez remplacer vos listes par le contenu de %{filename}. Près de %{count} comptes seront ajoutés à de nouvelles listes. + muting_html: + one: Vous allez remplacer votre liste de comptes masqués par près de %{count} compte tiré de %{filename}. + other: Vous allez remplacer votre liste de comptes masqués par près de %{count} comptes tirés de %{filename}. + preambles: + blocking_html: + one: Vous allez bloquer près de %{count} compte tiré de %{filename}. + other: Vous allez bloquer près de %{count} comptes tirés de %{filename}. + bookmarks_html: + one: Vous allez ajouter près de %{count} message de %{filename} à vos signets. + other: Vous allez ajouter près de %{count} messages de %{filename} à vos signets. + domain_blocking_html: + one: Vous allez bloquer près de %{count} domaine tiré de %{filename}. + other: Vous allez bloquer près de %{count} domaines tirés de %{filename}. + following_html: + one: Vous allez suivre près de %{count} compte tiré de %{filename}. + other: Vous allez suivre près de %{count} comptes tirés de %{filename}. + lists_html: + one: Vous allez ajouter près de %{count} compte depuis %{filename} à vos listes. De nouvelles listes seront créées si besoin. + other: Vous allez ajouter près de %{count} comptes depuis %{filename} à vos listes. De nouvelles listes seront créées si besoin. + muting_html: + one: Vous allez masquer près de %{count} compte tiré de %{filename}. + other: Vous allez masquer près de %{count} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. recent_imports: Importations récentes states: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index c3ce66c397..cbe0ae0407 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -21,6 +21,7 @@ fr: one: Message other: Messages posts_tab_heading: Messages + self_follow_error: Il n'est pas possible de suivre votre propre compte admin: account_actions: action: Effectuer l'action @@ -1368,6 +1369,44 @@ fr: merge_long: Garder les enregistrements existants et ajouter les nouveaux overwrite: Écraser overwrite_long: Remplacer les enregistrements actuels par les nouveaux + overwrite_preambles: + blocking_html: + one: Vous allez remplacer votre liste de blocage par près de %{count} compte tiré de %{filename}. + other: Vous allez remplacer votre liste de blocage par près de %{count} comptes tirés de %{filename}. + bookmarks_html: + one: Vous allez remplacer vos signets par près de %{count} post tiré de %{filename}. + other: Vous allez remplacer vos signets par près de %{count} posts tirés de %{filename}. + domain_blocking_html: + one: Vous allez remplacer votre liste de blocage de domaines par près de %{count} domaine tiré de %{filename}. + other: Vous allez remplacer votre liste de blocage de domaines par près de %{count} domaines tirés de %{filename}. + following_html: + one: Vous allez suivre jusqu’à %{count} compte depuis %{filename} et arrêter de suivre n’importe qui d’autre. + other: Vous allez suivre jusqu’à %{count} comptes depuis %{filename} et arrêter de suivre n’importe qui d’autre. + lists_html: + one: Vous allez remplacer vos listes par le contenu de %{filename}. Près de %{count} compte sera ajouté à de nouvelles listes. + other: Vous allez remplacer vos listes par le contenu de %{filename}. Près de %{count} comptes seront ajoutés à de nouvelles listes. + muting_html: + one: Vous allez remplacer votre liste de comptes masqués par près de %{count} compte tiré de %{filename}. + other: Vous allez remplacer votre liste de comptes masqués par près de %{count} comptes tirés de %{filename}. + preambles: + blocking_html: + one: Vous allez bloquer près de %{count} compte tiré de %{filename}. + other: Vous allez bloquer près de %{count} comptes tirés de %{filename}. + bookmarks_html: + one: Vous allez ajouter près de %{count} message de %{filename} à vos signets. + other: Vous allez ajouter près de %{count} messages de %{filename} à vos signets. + domain_blocking_html: + one: Vous allez bloquer près de %{count} domaine tiré de %{filename}. + other: Vous allez bloquer près de %{count} domaines tirés de %{filename}. + following_html: + one: Vous allez suivre près de %{count} compte tiré de %{filename}. + other: Vous allez suivre près de %{count} comptes tirés de %{filename}. + lists_html: + one: Vous allez ajouter près de %{count} compte depuis %{filename} à vos listes. De nouvelles listes seront créées si besoin. + other: Vous allez ajouter près de %{count} comptes depuis %{filename} à vos listes. De nouvelles listes seront créées si besoin. + muting_html: + one: Vous allez masquer près de %{count} compte tiré de %{filename}. + other: Vous allez masquer près de %{count} comptes tirés de %{filename}. preface: Vous pouvez importer certaines données que vous avez exporté d’un autre serveur, comme une liste des personnes que vous suivez ou bloquez sur votre compte. recent_imports: Récents imports states: diff --git a/config/locales/ga.yml b/config/locales/ga.yml index a201b73325..83ac6ce910 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -27,6 +27,7 @@ ga: other: Postálacha two: Postálacha posts_tab_heading: Postálacha + self_follow_error: Ní cheadaítear do chuntas féin a leanúint admin: account_actions: action: Déan gníomh @@ -1440,6 +1441,80 @@ ga: merge_long: Coinnigh taifid atá ann cheana féin agus cuir cinn nua leis overwrite: Forscríobh overwrite_long: Cuir na cinn nua in ionad na dtaifead reatha + overwrite_preambles: + blocking_html: + few: Tá tú ar tí do liosta bloc a chur in ionad suas le %{count} cuntais ó %{filename}. + many: Tá tú ar tí do liosta bloc a chur in ionad suas le %{count} cuntais ó %{filename}. + one: Tá tú ar tí do liosta bloc a chur in ionad suas le %{count} cuntas ó %{filename}. + other: Tá tú ar tí do liosta bloc a chur in ionad suas le %{count} cuntais ó %{filename}. + two: Tá tú ar tí do liosta bloc a chur in ionad suas le %{count} cuntais ó %{filename}. + bookmarks_html: + few: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{count} postáil ó %{filename}. + many: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{count} postáil ó %{filename}. + one: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{count} postáil ó %{filename}. + other: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{count} postáil ó %{filename}. + two: Tá tú ar tí do leabharmharcanna a chur in ionad suas le %{count} postáil ó %{filename}. + domain_blocking_html: + few: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{count} fearainn ó %{filename}. + many: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{count} fearainn ó %{filename}. + one: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{count} fearainn ó %{filename}. + other: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{count} fearainn ó %{filename}. + two: Tá tú ar tí do liosta bloc fearainn a chur in ionad suas le %{count} fearainn ó %{filename}. + following_html: + few: Tá tú ar tí leanúint suas go dtí %{count} cuntas ó %{filename} agus stop ag leanúint aon duine eile. + many: Tá tú ar tí leanúint suas go dtí %{count} cuntas ó %{filename} agus stop ag leanúint aon duine eile. + one: Tá tú ar tí leanúint suas go dtí %{count} chuntais ó %{filename} agus stop a leanúint aon duine eile. + other: Tá tú ar tí leanúint suas go dtí %{count} cuntas ó %{filename} agus stop ag leanúint aon duine eile. + two: Tá tú ar tí leanúint suas go dtí %{count} cuntas ó %{filename} agus stop ag leanúint aon duine eile. + lists_html: + few: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{count} cuntais le liostaí nua. + many: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{count} cuntais le liostaí nua. + one: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{count} cuntas le liostaí nua. + other: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{count} cuntais le liostaí nua. + two: Tá tú ar tí do liostaí a chur in ionad inneachair %{filename}. Cuirfear suas le %{count} cuntais le liostaí nua. + muting_html: + few: Tá tú ar tí do liosta cuntas balbhaithe a chur in ionad suas le %{count} cuntais ó %{filename}. + many: Tá tú ar tí do liosta cuntas balbhaithe a chur in ionad suas le %{count} cuntais ó %{filename}. + one: Tá tú ar tí do liosta cuntais balbhaithe a chur in ionad suas le %{count} cuntas ó %{filename}. + other: Tá tú ar tí do liosta cuntas balbhaithe a chur in ionad suas le %{count} cuntais ó %{filename}. + two: Tá tú ar tí do liosta cuntas balbhaithe a chur in ionad suas le %{count} cuntais ó %{filename}. + preambles: + blocking_html: + few: Tá tú ar tí bhac suas le %{count} cuntais ó %{filename}. + many: Tá tú ar tí bhac suas le %{count} cuntais ó %{filename}. + one: Tá tú ar tí bac suas go dtí %{count} cuntas ó %{filename}. + other: Tá tú ar tí bhac suas le %{count} cuntais ó %{filename}. + two: Tá tú ar tí bhac suas le %{count} cuntais ó %{filename}. + bookmarks_html: + few: Tá tú ar tí %{count} postáil ó %{filename} a chur le do leabharmharcanna. + many: Tá tú ar tí %{count} postáil ó %{filename} a chur le do leabharmharcanna. + one: Tá tú ar tí %{count} postáil ó %{filename} a chur le do leabharmharcanna. + other: Tá tú ar tí %{count} postáil ó %{filename} a chur le do leabharmharcanna. + two: Tá tú ar tí %{count} postáil ó %{filename} a chur le do leabharmharcanna. + domain_blocking_html: + few: Tá tú ar tí bhac suas le %{count} bhfearainn ó %{filename}. + many: Tá tú ar tí bhac suas le %{count} bhfearainn ó %{filename}. + one: Tá tú ar tí bac suas go dtí %{count} fearann ó %{filename}. + other: Tá tú ar tí bhac suas le %{count} bhfearainn ó %{filename}. + two: Tá tú ar tí bhac suas le %{count} bhfearainn ó %{filename}. + following_html: + few: Tá tú ar tí leanúint suas go dtí %{count} cuntais ó %{filename}. + many: Tá tú ar tí leanúint suas go dtí %{count} cuntais ó %{filename}. + one: Tá tú ar tí leanúint suas go dtí %{count} cuntas ó %{filename}. + other: Tá tú ar tí leanúint suas go dtí %{count} cuntais ó %{filename}. + two: Tá tú ar tí leanúint suas go dtí %{count} cuntais ó %{filename}. + lists_html: + few: Tá tú ar tí %{count} cuntais ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. + many: Tá tú ar tí %{count} cuntais ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. + one: Tá tú ar tí cuntas %{count} ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. + other: Tá tú ar tí %{count} cuntais ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. + two: Tá tú ar tí %{count} cuntais ó %{filename} a chur le do liostaí. Cruthófar liostaí nua mura bhfuil aon liosta le cur leis. + muting_html: + few: Tá tú ar tí balbhú suas le %{count} cuntais ó %{filename}. + many: Tá tú ar tí balbhú suas le %{count} cuntais ó %{filename}. + one: Tá tú ar tí balbhú suas go dtí %{count} cuntas ó %{filename}. + other: Tá tú ar tí balbhú suas le %{count} cuntais ó %{filename}. + two: Tá tú ar tí balbhú suas le %{count} cuntais ó %{filename}. preface: Is féidir leat sonraí a d’easpórtáil tú a allmhairiú ó fhreastalaí eile, mar shampla liosta de na daoine a bhfuil tú ag leanúint nó ag cur bac orthu. recent_imports: Allmhairí le déanaí states: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index cb7c6254bc..32aa3e2347 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -25,6 +25,7 @@ gd: other: Postaichean two: Postaichean posts_tab_heading: Postaichean + self_follow_error: Chan fhaod thu an cunntas agad fhèn a leantainn admin: account_actions: action: Gabh an gnìomh @@ -1415,6 +1416,68 @@ gd: merge_long: Cùm na reacordan a tha ann is cuir feadhainn ùr ris overwrite: Sgrìobh thairis air overwrite_long: Cuir na reacordan ùra an àite na feadhna a tha ann + overwrite_preambles: + blocking_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a chur an àite liosta nam bacaidhean agad. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur an àite liosta nam bacaidhean agad. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a chur an àite liosta nam bacaidhean agad. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur an àite liosta nam bacaidhean agad. + bookmarks_html: + few: Tha thu an impis suas ri %{count} postaichean o %{filename} a chur an àite nan comharra-lìn agad. + one: Tha thu an impis suas ri %{count} phost o %{filename} a chur an àite nan comharra-lìn agad. + other: Tha thu an impis suas ri %{count} post o %{filename} a chur an àite nan comharra-lìn agad. + two: Tha thu an impis suas ri %{count} phost o %{filename} a chur an àite nan comharra-lìn agad. + domain_blocking_html: + few: Tha thu an impis suas ri %{count} àrainnean o %{filename} a chur an àite liosta nam bacaidhean àrainne agad. + one: Tha thu an impis suas ri %{count} àrainn o %{filename} a chur an àite liosta nam bacaidhean àrainne agad. + other: Tha thu an impis suas ri %{count} àrainn o %{filename} a chur an àite liosta nam bacaidhean àrainne agad. + two: Tha thu an impis suas ri %{count} àrainn o %{filename} a chur an àite liosta nam bacaidhean àrainne agad. + following_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a leantainn agus sguiridh tu a leantainn duine sam bith eile. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a leantainn agus sguiridh tu a leantainn duine sam bith eile. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a leantainn agus sguiridh tu a leantainn duine sam bith eile. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a leantainn agus sguiridh tu a leantainn duine sam bith eile. + lists_html: + few: Tha thu an impis susbaint %{filename} a chur an àite nan liostaichean agad. Thèid suas ri %{count} cunntasan a chur ri liostaichean ùra. + one: Tha thu an impis susbaint %{filename} a chur an àite nan liostaichean agad. Thèid suas ri %{count} chunntas a chur ri liostaichean ùra. + other: Tha thu an impis susbaint %{filename} a chur an àite nan liostaichean agad. Thèid suas ri %{count} cunntas a chur ri liostaichean ùra. + two: Tha thu an impis susbaint %{filename} a chur an àite nan liostaichean agad. Thèid suas ri %{count} chunntas a chur ri liostaichean ùra. + muting_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a chur an àite liosta nan cunntasan mùchte agad. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur an àite liosta nan cunntasan mùchte agad. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a chur an àite liosta nan cunntasan mùchte agad. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur an àite liosta nan cunntasan mùchte agad. + preambles: + blocking_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a bhacadh. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a bhacadh. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a bhacadh. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a bhacadh. + bookmarks_html: + few: Tha thu an impis suas ri %{count} postaichean o %{filename} a chur ris na h-annsachdan agad. + one: Tha thu an impis suas ri %{count} phost o %{filename} a chur ris na h-annsachdan agad. + other: Tha thu an impis suas ri %{count} post o %{filename} a chur ris na h-annsachdan agad. + two: Tha thu an impis suas ri %{count} phost o %{filename} a chur ris na h-annsachdan agad. + domain_blocking_html: + few: Tha thu an impis suas ri %{count} àrainnean o %{filename} a bhacadh. + one: Tha thu an impis suas ri %{count} àrainn o %{filename} a bhacadh. + other: Tha thu an impis suas ri %{count} àrainn o %{filename} a bhacadh. + two: Tha thu an impis suas ri %{count} àrainn o %{filename} a bhacadh. + following_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a leantainn. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a leantainn. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a leantainn. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a leantainn. + lists_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a chur ris na liostaichean agad. Thèid liostaichean ùra a chruthachadh mur eil liostaichean ann airson nan cunntasan a chur ris. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur ris na liostaichean agad. Thèid liostaichean ùra a chruthachadh mur eil liostaichean ann airson nan cunntasan a chur ris. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a chur ris na liostaichean agad. Thèid liostaichean ùra a chruthachadh mur eil liostaichean ann airson nan cunntasan a chur ris. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a chur ris na liostaichean agad. Thèid liostaichean ùra a chruthachadh mur eil liostaichean ann airson nan cunntasan a chur ris. + muting_html: + few: Tha thu an impis suas ri %{count} cunntasan o %{filename} a mhùchadh. + one: Tha thu an impis suas ri %{count} chunntas o %{filename} a mhùchadh. + other: Tha thu an impis suas ri %{count} cunntas o %{filename} a mhùchadh. + two: Tha thu an impis suas ri %{count} chunntas o %{filename} a mhùchadh. preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh." recent_imports: Ion-phortaidhean o chionn goirid states: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index cdc9421324..3ee93bf731 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1785,11 +1785,11 @@ gl: enabled: Borrar automáticamente publicacións antigas enabled_hint: Borra automáticamente as túas publicacións unha vez acadan certa lonxevidade, a menos que cumpran algunha destas excepcións exceptions: Excepcións - explanation: Como o borrado de publicacións consume moitos recursos, esta faise aos poucos cando o servidor non ten moita carga de traballo. Así, a eliminación das túas publicacións podería ser lixeiramente posterior a cando lle correspondería por idade. + explanation: O borrado de publicacións vaise facendo aos poucos cando o servidor non ten moito traballo, é unha tarefa que consume moitos recursos. Así, a eliminación das túas publicacións podería ser lixeiramente posterior a cando lle correspondería por antigüidade. ignore_favs: Ignorar favoritas ignore_reblogs: Ignorar promocións interaction_exceptions: Excepcións baseadas en interaccións - interaction_exceptions_explanation: Ten en conta que non hai garantía de que se eliminen as túas publicacións se baixan do límite de promocións e favorecementos se nalgún momento o superaron. + interaction_exceptions_explanation: Ten en conta que non hai garantía de que se eliminen as túas publicacións se baixan do límite de promocións ou favorecementos se nalgún momento o tivese superado. keep_direct: Manter mensaxes directas keep_direct_hint: Non borrar ningunha das túas mensaxes directas keep_media: Manter publicacións que conteñen multimedia diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 4d9148674d..70dfa658b2 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -21,6 +21,7 @@ ia: one: Message other: Messages posts_tab_heading: Messages + self_follow_error: Sequer tu proprie conto non es permittite admin: account_actions: action: Exequer action @@ -473,6 +474,9 @@ ia: title: Recommendationes de contos a sequer unsuppress: Restaurar recommendation de sequimento instances: + audit_log: + title: Registros de controlo recente + view_all: Vider registros de controlo integre availability: description_html: one: Si le livration al dominio falle %{count} die sin succeder, necun tentativa ulterior de livration essera facite, excepte si es recipite un livration ab le dominio. @@ -599,7 +603,9 @@ ia: resolve_description_html: Necun mesura essera prendite contra le conto denunciate, necun sanction registrate, e le reporto essera claudite. silence_description_html: Iste conto essera visibile solmente a qui ja lo seque o manualmente lo cerca, limitante gravemente su portata. Pote sempre esser revertite. Claude tote le reportos contra iste conto. suspend_description_html: Le conto e tote su contento essera inaccessibile e finalmente delite, e interager con illo essera impossibile. Reversibile intra 30 dies. Claude tote le reportos contra iste conto. + actions_description_html: Decider que mesuras prender pro resolver iste reporto. Si tu prende un mesura punitive contra le conto reportate, un aviso email les sera inviate, salvo quando le categoria Spam es seligite. actions_description_remote_html: Decide qual mesura prender pro resolver iste reporto. Isto affectara solmente le maniera in que tu servitor communica con iste conto remote e gere su contento. + actions_no_posts: Iste reporto non ha alcun message associate a deler add_to_report: Adder plus al reporto already_suspended_badges: local: Ja suspendite sur iste servitor @@ -870,6 +876,9 @@ ia: message_html: Tu non ha definite alcun regula de servitor. sidekiq_process_check: message_html: Necun processo Sidekiq es active pro le cauda(s) %{value}. Per favor verifica tu configuration de Sidekiq + software_version_check: + action: Vider le actualisationes disponibile + message_html: Un actualisation de Mastodon es disponibile. software_version_critical_check: action: Vider le actualisationes disponibile message_html: Un actualisation critic de Mastodon es disponibile. Per favor actualisa lo le plus tosto possibile. @@ -885,11 +894,18 @@ ia: tags: moderation: not_trendable: Non pro tendentia + not_usable: Non usabile pending_review: Attende revision + review_requested: Revision demandate + reviewed: Revidite title: Stato + trendable: De tendentia + unreviewed: Non revidite + usable: Usabile name: Nomine newest: Le plus nove oldest: Le plus ancian + open: Vider publicamente reset: Reinitialisar review: Revide le stato search: Cercar @@ -932,7 +948,9 @@ ia: statuses: allow: Permitter message allow_account: Permitter autor + confirm_allow: Desira tu vermente permitter le statos seligite? confirm_allow_account: Es tu secur que tu vole permitter le contos seligite? + confirm_disallow: Desira tu vermente impedir le statos seligite? confirm_disallow_account: Es tu secur que tu vole cessar de permitter le contos seligite? description_html: Istes es le messages cognoscite sur tu servitor que al momento es multo compartite e marcate como favorite. Illos pote adjutar tu usatores nove e reveniente a trovar plus personas a sequer. Necun message es monstrate publicamente usque tu approba le autor, a condition que le autor permitte que su conto es suggerite a alteres. Tu pote tamben permitter o rejectar messages singule. disallow: Non permitter message @@ -1148,8 +1166,10 @@ ia: use_security_key: Usar clave de securitate author_attribution: example_title: Texto de exemplo + hint_html: Controlar como tu es accreditate quando ligamines es compartite sur Mastodon. more_from_html: Plus de %{name} s_blog: Blog de %{name} + title: Attribution de autor challenge: confirm: Continuar hint_html: "Consilio: Nos non te demandara tu contrasigno de novo in le proxime hora." @@ -1346,6 +1366,44 @@ ia: merge_long: Conservar le registros existente e adder noves overwrite: Superscriber overwrite_long: Reimplaciar registros actual con le noves + overwrite_preambles: + blocking_html: + one: Tu va reimplaciar tu lista de blocada con usque %{count} conto ab %{filename}. + other: Tu va reimplaciar tu lista de blocada con usque %{count} contos ab %{filename}. + bookmarks_html: + one: Tu va reimplaciar tu marcapaginas con usque %{count} message ab %{filename}. + other: Tu va reimplaciar tu marcapaginas con usque %{count} messages ab %{filename}. + domain_blocking_html: + one: Tu va reimplaciar tu blocada lista de dominios blocate con usque %{count} dominio ab %{filename}. + other: Tu va reimplaciar tu lista de dominios blocate con usque %{count} dominios ab %{filename}. + following_html: + one: Tu va sequer usque %{count} conto ab %{filename} e cessar de sequer ulle altere. + other: Tu va sequer usque %{count} contos ab %{filename} e cessar de sequer ulle altere. + lists_html: + one: Tu va reimplaciar tu listas con contentos ab %{filename}. Usque %{count} conto sera addite al nove listas. + other: Tu va reimplaciar tu listas con contentos ab %{filename}. Usque %{count} contos sera addite a nove listas. + muting_html: + one: Tu va reimplaciar tu lista de conto silentiate con usque %{count} conto ab %{filename}. + other: Tu va reimplaciar tu lista de contos silentiate con usque %{count} contos ab %{filename}. + preambles: + blocking_html: + one: Tu va blocar usque %{count} conto ab %{filename}. + other: Tu va blocar usque %{count} contos de %{filename}. + bookmarks_html: + one: Tu va adder usque %{count} message ab %{filename} a tu marcapaginas. + other: Tu va adder usque %{count} messages ab %{filename} a tu marcapaginas. + domain_blocking_html: + one: Tu va blocar usque %{count} dominio ab %{filename}. + other: Tu va blocar usque %{count} dominios ab %{filename}. + following_html: + one: Tu va sequer usque %{count} conto ab %{filename}. + other: Tu va sequer usque %{count} contos de %{filename}. + lists_html: + one: Tu va adder usque %{count} conto ab %{filename} a tu lista. Nove listas sera create si il non ha lista a adder. + other: Tu va adder usque %{count} contos ab %{filename} a tu lista. Nove listas sera create si il non ha lista a adder. + muting_html: + one: Tu va silentiar usque %{count} conto ab %{filename}. + other: Tu va silentiar usque %{count} contos ab %{filename}. preface: Tu pote importar datos que tu ha exportate de un altere servitor, como un lista de personas que tu seque o bloca. recent_imports: Importationes recente states: @@ -1430,6 +1488,7 @@ ia: media_attachments: validations: images_and_video: Impossibile annexar un video a un message que jam contine imagines + not_found: Medios %{ids} non trovate o jam attachate a un altere message not_ready: Impossibile annexar files que non ha ancora essite processate. Retenta post un momento! too_many: Impossibile annexar plus de 4 files migrations: @@ -1661,6 +1720,7 @@ ia: delete: Deletion de conto development: Disveloppamento edit_profile: Modificar profilo + export: Exportar featured_tags: Hashtags in evidentia import: Importar import_and_export: Importar e exportar diff --git a/config/locales/is.yml b/config/locales/is.yml index f181470e49..ed08663b5a 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1370,6 +1370,44 @@ is: merge_long: Halda fyrirliggjandi færslum og bæta við nýjum overwrite: Skrifa yfir overwrite_long: Skipta út fyrirliggjandi færslum með þeim nýju + overwrite_preambles: + blocking_html: + one: Þú er í þann mund að fara að skipta út útilokanalistanum þínum með allt að %{count} aðgangi úr %{filename}. + other: Þú er í þann mund að fara að skipta út útilokanalistanum þínum með allt að %{count} aðgöngum úr %{filename}. + bookmarks_html: + one: Þú er í þann mund að fara að skipta út bókamerkjunum þínum með allt að %{count} færslu úr %{filename}. + other: Þú er í þann mund að fara að skipta út bókamerkjunum þínum með allt að %{count} færslum úr %{filename}. + domain_blocking_html: + one: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokuð lén með allt að %{count} léni úr %{filename}. + other: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokuð lén með allt að %{count} lénum úr %{filename}. + following_html: + one: Þú er í þann mund að fara að fylgjast með allt að %{count} aðgangi úr %{filename} og hætta að fylgjast með öllum öðrum. + other: Þú er í þann mund að fara að fylgjast með allt að %{count} aðgöngum úr %{filename} og hætta að fylgjast með öllum öðrum. + lists_html: + one: Þú ert í þann mund að fara að skipta út listunum þínum með efninu úr %{filename}. Allt að %{count} aðgangi verður bætt við nýju listana. + other: Þú ert í þann mund að fara að skipta út listunum þínum með efninu úr %{filename}. Allt að %{count} aðgöngum verður bætt við nýju listana. + muting_html: + one: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokaða aðganga með allt að %{count} aðgangi úr %{filename}. + other: Þú er í þann mund að fara að skipta út listanum þínum yfir útilokaða aðganga með allt að %{count} aðgöngum úr %{filename}. + preambles: + blocking_html: + one: Þú ert í þann mund að útiloka allt að %{count} aðgang úr %{filename}. + other: Þú ert í þann mund að útiloka allt að %{count} aðganga úr %{filename}. + bookmarks_html: + one: Þú er í þann mund að fara að bæta við allt að %{count} færslu úr %{filename} við bókamerkin þín. + other: Þú er í þann mund að fara að bæta við allt að %{count} færslum úr %{filename} við bókamerkin þín. + domain_blocking_html: + one: Þú ert í þann mund að útiloka allt að %{count} lén úr %{filename}. + other: Þú er í þann mund að fara að útiloka allt að %{count} lén úr %{filename}. + following_html: + one: Þú ert að fara að fylgjast með allt að %{count} aðgangi úr %{filename}. + other: Þú er að fara að fylgjast með allt að %{count} aðgöngum úr %{filename}. + lists_html: + one: Þú ert í þann mund að fara að bæta við allt að %{count} aðgangi úr %{filename} við listana þína. Nýir listar verða útbúnir ef ekki finnst neinn listi til að bæta í. + other: Þú ert í þann mund að fara að bæta við allt að %{count} aðgöngum úr %{filename} við listana þína. Nýir listar verða útbúnir ef ekki finnst neinn listi til að bæta í. + muting_html: + one: Þú ert að fara að þagga niður í allt að %{count} aðgangi úr %{filename}. + other: Þú ert að fara að þagga niður í allt að %{count} aðgöngum úr %{filename}. preface: Þú getur flutt inn gögn sem þú hefur flutt út frá öðrum vefþjóni, svo sem lista yfir fólk sem þú fylgist með eða útilokar. recent_imports: Nýlega flutt inn states: diff --git a/config/locales/it.yml b/config/locales/it.yml index 91b67c2b4d..22bfd7df24 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1,7 +1,7 @@ --- it: about: - about_mastodon_html: 'Il social network del futuro: Nessuna pubblicità, zero sorveglianza azienale, design etico e decentralizzazione! Sii il proprietario dei tuoi dati, con Mastodon!' + about_mastodon_html: 'Il social network del futuro: Nessuna pubblicità, zero sorveglianza aziendale, design etico e decentralizzazione! Sii il proprietario dei tuoi dati, con Mastodonte!' contact_missing: Non impostato contact_unavailable: N/D hosted_on: Mastodon ospitato su %{domain} @@ -21,6 +21,7 @@ it: one: Toot other: Toot posts_tab_heading: Toot + self_follow_error: Seguire il tuo stesso profilo non è consentito admin: account_actions: action: Esegui azione diff --git a/config/locales/ja.yml b/config/locales/ja.yml index bda5b2d8f6..8bd8b46f30 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -46,6 +46,7 @@ ja: title: "%{username}さんのメールアドレスを変更" change_role: changed_msg: ロールを変更しました! + edit_roles: ユーザーのロールを管理 label: ロールを変更 no_role: ロールがありません title: "%{username}さんのロールを変更" @@ -232,22 +233,22 @@ ja: approve_appeal_html: "%{name}さんが%{target}さんからの抗議を承認しました" approve_user_html: "%{name}さんが%{target}さんからの登録を承認しました" assigned_to_self_report_html: "%{name}さんが通報 %{target}を自身の担当に割り当てました" - change_email_user_html: "%{name}さんが%{target}さんのメールアドレスを変更しました" + change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました" change_role_user_html: "%{name}さんが%{target}さんのロールを変更しました" - confirm_user_html: "%{name}さんが%{target}さんのメールアドレスを確認済みにしました" + confirm_user_html: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" create_account_warning_html: "%{name}さんが%{target}さんに警告メールを送信しました" create_announcement_html: "%{name}さんが新しいお知らせ %{target}を作成しました" - create_canonical_email_block_html: "%{name}さんがメールアドレス (ハッシュ値: %{target}) をブロックしました" + create_canonical_email_block_html: "%{name} さんがメールアドレスのハッシュ値 %{target} をブロックしました" create_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を追加しました" create_domain_allow_html: "%{name}さんが%{target}の連合を許可しました" create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" - create_email_domain_block_html: "%{name}さんがメールドメイン %{target} をブロックしました" + create_email_domain_block_html: "%{name} さんがメールドメイン %{target} をブロックしました" create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました" create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" create_user_role_html: "%{name}さんがロール『%{target}』を作成しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" destroy_announcement_html: "%{name}さんがお知らせ %{target}を削除しました" - destroy_canonical_email_block_html: "%{name}さんがメールアドレス (ハッシュ値: %{target}) のブロックを外しました" + destroy_canonical_email_block_html: "%{name} さんがメールアドレスのハッシュ値 %{target} のブロックを外しました" destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" @@ -270,7 +271,7 @@ ja: reject_user_html: "%{name}さんが%{target}さんからの登録を拒否しました" remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました" reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました" - resend_user_html: "%{name}さんが %{target} の確認メールを再送信しました" + resend_user_html: "%{name} さんが %{target} の確認メールを再送信しました" reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました" resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました" sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました" @@ -285,7 +286,7 @@ ja: update_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を更新しました" update_domain_block_html: "%{name}さんが%{target}のドメインブロックを更新しました" update_ip_block_html: "%{name} さんがIP %{target} のルールを更新しました" - update_report_html: "%{name}さんが通報 %{target} を更新しました" + update_report_html: "%{name} さんが通報 %{target} を更新しました" update_status_html: "%{name}さんが%{target}さんの投稿を更新しました" update_user_role_html: "%{name}さんがロール『%{target}』を変更しました" deleted_account: 削除されたアカウント @@ -861,6 +862,9 @@ ja: message_html: サーバーのルールを定義していません。 sidekiq_process_check: message_html: "%{value}キューに対応するSidekiqプロセスがありません。Sidekiqの設定を確認してください。" + software_version_check: + action: 利用可能な更新を確認 + message_html: Mastodonの更新が利用可能です。 software_version_critical_check: action: 利用可能な更新を見る message_html: 緊急のMastodonアップデートがあります。速やかに適用してください。 @@ -1144,7 +1148,10 @@ ja: use_security_key: セキュリティキーを使用 author_attribution: example_title: サンプルテキスト + hint_html: Mastodonでリンクが共有されたときのクレジットの表示方法を管理する。 + more_from_html: "%{name} のその他の情報" s_blog: "%{name} のブログ" + title: 著者の帰属 challenge: confirm: 続ける hint_html: 以後1時間はパスワードの再入力を求めません @@ -1334,6 +1341,32 @@ ja: merge_long: 現在のレコードを保持したまま新しいものを追加します overwrite: 上書き overwrite_long: 現在のレコードを新しいもので置き換えます + overwrite_preambles: + blocking_html: + other: あなたは%{filename}から最大%{count}のアカウントブロックリストを置き換えようとしています。 + bookmarks_html: + other: あなたは%{filename}から最大%{count}の投稿ブックマークを置き換えようとしています。 + domain_blocking_html: + other: あなたは%{filename}から最大%{count}のドメインドメインブロックリストを置き換えようとしています。 + following_html: + other: あなたは%{filename}から最大%{count}のアカウントフォローし他のすべてのユーザーのフォローを解除します。 + lists_html: + other: あなたは%{filename}の内容でリストを置き換えようとしています。最大%{count}のアカウントが新しいリストに追加されます。 + muting_html: + other: あなたは%{filename}から最大%{count}のアカウントミュートアカウントのリストを置き換えようとしています。 + preambles: + blocking_html: + other: あなたは%{filename}から最大%{count}のアカウントブロックしようとしています。 + bookmarks_html: + other: あなたは%{filename}から最大%{count}の投稿ブックマークに追加しようとしています。 + domain_blocking_html: + other: あなたは%{filename}から最大%{count}のドメインブロックしようとしています。 + following_html: + other: あなたは%{filename}から最大%{count}のアカウントフォローしようとしています。 + lists_html: + other: あなたは%{filename}から最大%{count}のアカウントリストに追加しようとしています。追加するリストがない場合は新しいリストが作成されます。 + muting_html: + other: あなたは%{filename}から最大%{count}のアカウントミュートしようとしています。 preface: 他のサーバーでエクスポートされたファイルから、フォロー/ブロックした情報をこのサーバー上のアカウントにインポートできます。 recent_imports: 最近のインポート states: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 615783738a..4a39cce4ce 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -193,7 +193,7 @@ ko: destroy_domain_allow: 도메인 허용 삭제 destroy_domain_block: 도메인 차단 삭제 destroy_email_domain_block: 이메일 도메인 차단 삭제 - destroy_instance: 도메인 제거 + destroy_instance: 도메인 퍼지하기 destroy_ip_block: IP 규칙 삭제 destroy_status: 게시물 삭제 destroy_unavailable_domain: 사용 불가능한 도메인 제거 @@ -526,7 +526,7 @@ ko: title: 중재 private_comment: 비공개 주석 public_comment: 공개 주석 - purge: 제거 + purge: 퍼지 purge_description_html: 이 도메인이 영구적으로 오프라인 상태라고 생각되면, 스토리지에서 이 도메인의 모든 계정 레코드와 관련 데이터를 삭제할 수 있습니다. 이 작업은 시간이 좀 걸릴 수 있습니다. title: 연합 total_blocked_by_us: 우리에게 차단 됨 @@ -1707,7 +1707,7 @@ ko: lost_followers: 잃은 팔로워 lost_follows: 잃은 팔로우 preamble: 내가 도메인을 차단하거나 중재진이 다른 서버를 정지하기로 결정했다면 내 팔로우와 팔로워를 잃게 됩니다. 그런 일이 일어났다면 그로 인해 단절된 관계들의 목록을 다운로드 받아 확인하고 다른 서버에서 불러올 수 있습니다. - purged: 이 서버에 대한 정보는 관리자에 의해 삭제되었습니다. + purged: 이 서버의 정보는 관리자가 퍼지하였습니다. type: 이벤트 statuses: attached: diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 97fcf75180..5a015b2192 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -595,6 +595,7 @@ lad: resolve_description_html: No se tomaran aksyones kontra el kuento denunsiado, no se enrejistrara el amonestamiento, i se serrara el raporto. silence_description_html: El profil sera vizivle solo para akeyos ke ya lo sigan o lo bushken manualmente, limitando seriamente su alkanse. Siempre puede ser revertido. suspend_description_html: El profil i todos sus kontenidos seran inaksesivles asta ke sean enfin supremidos. La enteraksion kon el kuento sera emposivle. Reversivle durante un tiempo de 30 diyas. + actions_description_html: Dechide kualas mizuras tomar para rezolver esta denunsia. Si tomas una aksion punitiva kontra el kuento denunsiada, se le embiara a dicho kuento un avizo por posta elektronika, ekseptado kuando se eskoja la kategoria Spam. actions_description_remote_html: Dechide ke fazer para rezolver este raporto. Esto solo va afektar komo tu sirvidor komunike kon este kuento remoto i ke faze kon su kontenido. add_to_report: Adjusta mas al raporto already_suspended_badges: @@ -697,6 +698,7 @@ lad: manage_appeals: Administra apelasiones manage_appeals_description: Permete a los utilizadores revizar apelasiones kontra aksyones de moderasyon manage_blocks: Administra blokos + manage_blocks_description: Permete a los utilizadores blokar los prokuradores de posta elektronika i los adresos IP manage_custom_emojis: Administra emojis personalizados manage_custom_emojis_description: Permete a los utilizadores editar emojis personalizados en el sirvidor manage_federation: Administra federasyon @@ -714,6 +716,7 @@ lad: manage_taxonomies: Administra etiketas manage_taxonomies_description: Permete a los utilizadores revizar el kontenido en trend i aktualizar la konfigurasyon de las etiketas manage_user_access: Administra akseso de utilizadores + manage_user_access_description: Permete a los utilizadores dezaktivar la autentifikasyon en dos pasos de otros utilizadores, trokar sus adreso de posta elektronika i restableser sus kod manage_users: Administra utilizadores manage_users_description: Permete a los utilizadores ver los peratim de otros utilizadores i realizar aksyones de moderasyon kontra eyos manage_webhooks: Administrar webhooks @@ -787,6 +790,7 @@ lad: destroyed_msg: Dosya supremida kon sukseso! software_updates: critical_update: Kritiko – por favor aktualiza pishin + description: Rekomendamos ke mantengas aktualizada tu enstalasyon de Mastodon para benefisyar de las muevas koreksyones y funksyones. Ademas, a vezes es kritiko aktualizar Mastodon punktualmente para evitar problemas de sigurita. Por estas razones, Mastodon komprova si ay aktualizasyones kada 30 minutos, i te avizara de akodro a tus preferensyas de avizos por posta elektronika. documentation_link: Ambezate mas release_notes: Notas sovre la versyon title: Aktualizasyones desponivles @@ -860,6 +864,9 @@ lad: message_html: No tienes definido dinguna regla del sirvidor. sidekiq_process_check: message_html: No ay dingun prosedura Sidekiq en egzekusion para la(s) kola(s) %{value}. Por favor, reviza tu konfigurasyon de Sidekiq + software_version_check: + action: Amostra aktualizasyones desponivles + message_html: Una aktualizasyon de Mastodon esta desponivle. software_version_critical_check: action: Amostra aktualizasyones desponivles message_html: Una aktualizasyon kritika de Mastodon esta desponivle. Por favor aktualiza pishin. @@ -1118,6 +1125,7 @@ lad: title: Kriya kuento de Mastodon en %{domain}. status: account_status: Estado del kuento + confirming: Bekleando konfirmasyon de posta elektronika. functional: Tu kuento esta kompletamente funksyonal. pending: Tu solisitasyon esta asperando la revizion por muestros administradores. Esto puede tadrar algun tiempo. Arisiviras una posta elektronika si la solisitasyon sea achetada. redirecting_to: Tu kuento se topa inaktivo porke esta siendo readresado a %{acct}. @@ -1638,6 +1646,7 @@ lad: delete: Efasa kuento development: Dezvelopamiento edit_profile: Edita profil + export: Eksporto featured_tags: Etiketas avaliadas import: Importo import_and_export: Importo i eksporto diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 5f90b575e7..908b15e851 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -23,6 +23,7 @@ lv: other: Ziņas zero: Ziņu posts_tab_heading: Ziņas + self_follow_error: Nav ļauts sekot savam kontam admin: account_actions: action: Veikt darbību @@ -205,8 +206,10 @@ lv: destroy_user_role: Iznīcināt lomu disable_2fa_user: Atspējot 2FA disable_custom_emoji: Atspējot pielāgotu emocijzīmi + disable_sign_in_token_auth_user: Atspējot autentificēšanos ar e-pasta pilnvaru lietotājam disable_user: Atspējot Lietotāju enable_custom_emoji: Iespējot pielāgotu emocijzīmi + enable_sign_in_token_auth_user: Iespējot autentificēšanos ar e-pasta pilnvaru lietotājam enable_user: Ieslēgt Lietotāju memorialize_account: Saglabāt Kontu Piemiņai promote_user: Izceltt Lietotāju diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 5e3f1af89a..00617c4e3c 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -25,11 +25,11 @@ ast: password: Usa polo menos 8 caráuteres setting_aggregate_reblogs: Nun amuesa los artículos compartíos nuevos que yá se compartieren de recién (namás afeuta a los artículos compartíos d'agora) setting_always_send_emails: Los avisos nun se suelen unviar per corréu electrónicu si uses activamente Mastodon - setting_default_sensitive: El conteníu multimedia sensible anúbrese por defeutu y pue amosase al calcar nelli - setting_display_media_default: Anubrilu cuando se marque como sensible - setting_display_media_hide_all: Anubrilu siempres - setting_display_media_show_all: Amosalu siempres - setting_use_blurhash: Los dilíos básense nos colores del conteníu multimedia anubríu mas desenfonca los detalles + setting_default_sensitive: El conteníu multimedia sensible escuéndrese por defeutu y pue amosase al calcar nelli + setting_display_media_default: Escondelu cuando se marque como sensible + setting_display_media_hide_all: Escondelu siempre + setting_display_media_show_all: Amosalu siempre + setting_use_blurhash: Los dilíos básense nos colores del conteníu multimedia escondíu mas desenfonca los detalles featured_tag: name: 'Equí tán dalgunes de les etiquetes qu''usesti apocayá:' form_admin_settings: @@ -93,7 +93,7 @@ ast: expires_in: Caduca dempués de fields: Campos adicionales header: Semeya de la testera - irreversible: Escartar en cuentes d'anubrir + irreversible: Escartar en cuentes d'esconder locale: Llingua de la interfaz max_uses: Númberu máximu d'usos new_password: Contraseña nueva @@ -103,24 +103,24 @@ ast: phrase: Pallabra clave o fras setting_advanced_layout: Activar la interfaz web avanzada setting_aggregate_reblogs: Agrupar los artículos compartíos nes llinies de tiempu - setting_always_send_emails: Unviar siempres los avisos per corréu electrónicu + setting_always_send_emails: Unviar siempre los avisos per corréu electrónicu setting_auto_play_gif: Reproducir automáticamente los GIFs setting_boost_modal: Amosar el diálogu de confirmación enantes de compartir un artículu setting_default_language: Llingua de los artículos setting_default_privacy: Privacidá de los artículos - setting_default_sensitive: Marcar siempres tol conteníu como sensible + setting_default_sensitive: Marcar siempre tol conteníu como sensible setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un artículu setting_disable_hover_cards: Desactivar la previsualización de perfiles al pasar el mur penriba setting_disable_swiping: Desactivar el movimientu de desplazamientu setting_display_media: Conteníu multimedia - setting_expand_spoilers: Espander siempres los artículos marcaos con alvertencies de conteníu - setting_hide_network: Anubrir les cuentes que sigas y te sigan + setting_expand_spoilers: Espander siempre los artículos marcaos con alvertencies de conteníu + setting_hide_network: Esconder les cuentes que sigas y te sigan setting_reduce_motion: Amenorgar el movimientu de les animaciones setting_system_font_ui: Usar la fonte predeterminada del sistema setting_theme: Estilu del sitiu setting_trends: Amosar les tendencies de güei setting_unfollow_modal: Amosar el diálogu de confirmación enantes de dexar de siguir a daquién - setting_use_blurhash: Facer que'l conteníu multimedia anubríu tenga dilíos coloríos + setting_use_blurhash: Facer que'l conteníu multimedia escondíu tenga dilíos coloríos setting_use_pending_items: Mou lentu severity: Gravedá sign_in_token_attempt: Códigu de seguranza diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index cb4a9041e8..0d02969b4d 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -76,6 +76,7 @@ eo: warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro form_admin_settings: activity_api_enabled: Nombroj de loke publikigitaj afiŝoj, aktivaj uzantoj kaj novaj registradoj en semajnaj siteloj + backups_retention_period: Uzantoj havas la kapablon generi arkivojn de siaj afiŝoj por elŝuti poste. Kiam estas agordita al pozitiva valoro, ĉi tiuj arkivoj estos aŭtomate forigitaj de via stokado post la specifita nombro da tagoj. bootstrap_timeline_accounts: Ĉi tiuj kontoj pinglitas al la supro de sekvorekomendoj de novaj uzantoj. closed_registrations_message: Montrita kiam registroj fermitas custom_css: Vi povas meti propajn stilojn en la retversio de Mastodon. @@ -243,6 +244,7 @@ eo: backups_retention_period: Uzantoarkivretendauro bootstrap_timeline_accounts: Ĉiam rekomendi ĉi tiujn kontojn al novaj uzantoj closed_registrations_message: Kutima mesaĝo kiam registroj ne estas disponeblaj + content_cache_retention_period: Retenperiodo de fora enhavo custom_css: Propa CSS favicon: Favorikono mascot: Propa maskoto diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index bbb0523b17..fdaa156e5d 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,6 +3,7 @@ fa: simple_form: hints: account: + attribution_domains_as_text: محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -39,12 +40,14 @@ fa: text: فقط یک بار می‌توانید برای اخطار درخواست تجدیدنظر کنید defaults: autofollow: کسانی که از راه دعوت‌نامه عضو می‌شوند به طور خودکار پیگیر شما خواهند شد + avatar: یکی از قالب‌های WEBP، PNG، GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد bot: این حساب بیشتر به طور خودکار فعالیت می‌کند و نظارت پیوسته‌ای روی آن وجود ندارد context: یک یا چند زمینه که پالایه باید در آن‌ها اعمال شود current_password: به دلایل امنیتی لطفاً گذرواژه این حساب را وارد کنید current_username: برای تأیید، لطفاً نام کاربری حساب فعلی را وارد کنید digest: تنها وقتی فرستاده می‌شود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصی‌ای نوشته شده باشد email: به شما ایمیل تأییدی فرستاده خواهد شد + header: یکی از قالب‌های WEBP، PNG، GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد inbox_url: نشانی صفحهٔ اصلی رله‌ای را که می‌خواهید به کار ببرید کپی کنید irreversible: فرسته‌های پالوده به طور برگشت‌ناپذیری ناپدید می‌شوند، حتا اگر بعدها پالایه برداشته شود locale: زبان واسط کاربری، رایانامه‌ها و آگاهی‌های ارسالی @@ -120,6 +123,7 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: + attribution_domains_as_text: اجازه فقط به پایگاه‌های وب خاص discoverable: معرّفی نمایه و فرسته‌ها در الگوریتم‌های کشف fields: name: برچسب diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 2c1bd6a084..809d2eaa9a 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,6 +3,7 @@ ja: simple_form: hints: account: + attribution_domains_as_text: 誤った帰属から保護します。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -130,6 +131,7 @@ ja: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります + role: そのロールは、ユーザーが持つ権限を制御します。 user_role: color: UI 全体でロールの表示に使用される色(16進数RGB形式) highlighted: これによりロールが公開されます。 @@ -142,6 +144,7 @@ ja: url: イベントの送信先 labels: account: + attribution_domains_as_text: 特定のウェブサイトのみを許可します discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 297e96a2bd..c588c9c071 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,6 +3,7 @@ sv: simple_form: hints: account: + attribution_domains_as_text: Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -143,6 +144,7 @@ sv: url: Dit händelser kommer skickas labels: account: + attribution_domains_as_text: Tillåt endast specifika webbplatser discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 010bb262ad..8330ec3de4 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -43,7 +43,7 @@ vi: avatar: WEBP, PNG, GIF hoặc JPG, tối đa %{size}. Sẽ bị nén xuống %{dimensions}px bot: Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật context: Chọn những nơi mà bộ lọc sẽ áp dụng - current_password: Vì mục đích bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại + current_password: Để bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại current_username: Để xác nhận, vui lòng nhập tên người dùng của tài khoản hiện tại digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt) email: Bạn sẽ được gửi một email xác minh @@ -290,7 +290,7 @@ vi: sign_up_requires_approval: Giới hạn đăng ký severity: Mức độ notification_emails: - appeal: Ai đó kháng cáo kiểm duyệt + appeal: Ai đó khiếu nại kiểm duyệt digest: Gửi email định kỳ favourite: Ai đó thích tút của bạn follow: Ai đó theo dõi bạn diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 0b276393a6..fdeb959f88 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -21,6 +21,7 @@ sq: one: Mesazh other: Mesazhe posts_tab_heading: Mesazhe + self_follow_error: Ndjekja e llogarisë personale nuk lejohet admin: account_actions: action: Kryeje veprimin diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 0d19d17c3b..0823e658a8 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -21,10 +21,12 @@ sv: one: Inlägg other: Inlägg posts_tab_heading: Inlägg + self_follow_error: Det är inte tillåtet att följa ditt eget konto admin: account_actions: action: Utför åtgärd already_silenced: Detta konto är redan begränsat. + already_suspended: Detta konto är redan avstängt. title: Utför aktivitet för moderering på %{acct} account_moderation_notes: create: Lämna kommentar @@ -85,7 +87,7 @@ sv: remote: Avlägsen title: Plats login_status: Inloggningsstatus - media_attachments: Media bifogade filer + media_attachments: Mediebilagor memorialize: Förvandla till ett memoriam memorialized: Memorialiserad memorialized_msg: Omvandlingen av %{username} till ett minneskonto lyckades @@ -861,6 +863,7 @@ sv: sidekiq_process_check: message_html: Ingen Sidekiq-process körs för kön/köerna %{value}. Vänligen kontrollera din Sidekiq-konfiguration software_version_check: + action: Se tillgängliga uppdateringar message_html: En Mastodon-uppdatering är tillgänglig. software_version_critical_check: action: Se tillgängliga uppdateringar @@ -876,13 +879,21 @@ sv: message_html: "Din objektlagring är felkonfigurerad. Sekretessen för dina användare är i riskzonen." tags: moderation: + not_usable: Inte användbar + pending_review: Väntar på granskning + review_requested: Granskning begärd reviewed: Granskat title: Status trendable: + unreviewed: Ogranskad + usable: Användbar name: Namn + newest: Nyaste + oldest: Äldsta reset: Återställ review: Granskningsstatus search: Sök + title: Hashtaggar updated_msg: Hashtagg-inställningarna har uppdaterats title: Administration trends: @@ -1034,6 +1045,7 @@ sv: application_mailer: notification_preferences: Ändra e-postpreferenser salutation: "%{name}," + settings: 'Ändra e-postinställningar: %{link}' unsubscribe: Avprenumerera view: 'Granska:' view_profile: Visa profil @@ -1053,6 +1065,7 @@ sv: hint_html: En sista sak till! Vi måste bekräfta att du är en människa (för att hålla borta skräpinlägg!). Lös CAPTCHA nedan och klicka på "Fortsätt". title: Säkerhetskontroll confirmations: + awaiting_review: Din e-postadress är bekräftad! %{domain} personalen granskar nu din registrering. Du kommer att få ett e-postmeddelande om de godkänner ditt konto! awaiting_review_title: Din registrering är under granskning clicking_this_link: klicka på denna länk login_link: logga in @@ -1060,6 +1073,7 @@ sv: redirect_to_app_html: Du borde ha omdirigerats till appen %{app_name}. Om det inte hände, försök att %{clicking_this_link} eller återgå manuellt till appen. registration_complete: Din registrering på %{domain} är nu slutförd! welcome_title: Välkommen %{name}! + wrong_email_hint: Om e-postadressen inte är rätt, kan du ändra den i kontoinställningarna. delete_account: Radera konto delete_account_html: Om du vill radera ditt konto kan du fortsätta här. Du kommer att bli ombedd att bekräfta. description: @@ -1080,6 +1094,7 @@ sv: or_log_in_with: Eller logga in med privacy_policy_agreement_html: Jag har läst och godkänner integritetspolicyn progress: + confirm: Bekräfta e-postadress details: Dina uppgifter review: Vår recension rules: Acceptera regler @@ -1101,8 +1116,10 @@ sv: security: Säkerhet set_new_password: Skriv in nytt lösenord setup: + email_below_hint_html: Kolla din skräppost-mapp eller begär en ny. Du kan korrigera din e-postadress om den är fel. email_settings_hint_html: Klicka på länken som vi har skickat till dig för att bekräfta %{email}. Vi väntar här. link_not_received: Fick du ingen länk? + new_confirmation_instructions_sent: Du kommer att få ett nytt e-postmeddelande med bekräftelselänken om några minuter! title: Kolla din inkorg sign_in: preamble_html: Logga in med dina användaruppgifter på %{domain}. Om ditt konto finns på en annan server kommer du inte att kunna logga in här. @@ -1122,6 +1139,9 @@ sv: use_security_key: Använd säkerhetsnyckel author_attribution: example_title: Exempeltext + more_from_html: Mer från %{name} + s_blog: "%{name}s blogg" + title: Författarattribution challenge: confirm: Fortsätt hint_html: "Tips: Vi frågar dig inte efter ditt lösenord igen under nästkommande timme." @@ -1402,6 +1422,7 @@ sv: media_attachments: validations: images_and_video: Det går inte att bifoga en video till ett inlägg som redan innehåller bilder + not_found: Media %{ids} hittades inte eller är redan anslutet till ett annat inlägg not_ready: Kan inte bifoga filer som inte har behandlats färdigt. Försök igen om ett ögonblick! too_many: Det går inte att bifoga mer än 4 filer migrations: @@ -1883,6 +1904,7 @@ sv: instructions_html: Kopiera och klistra in koden nedan in i HTML-koden på din webbplats. Lägg sedan till adressen till din webbplats i ett av de extra fälten på din profil från fliken "Redigera profil" och spara ändringar. verification: Bekräftelse verified_links: Dina verifierade länkar + website_verification: Webbplats verifiering webauthn_credentials: add: Lägg till ny säkerhetsnyckel create: diff --git a/config/locales/th.yml b/config/locales/th.yml index c6ba60736d..dd57a8df7f 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -19,6 +19,7 @@ th: posts: other: โพสต์ posts_tab_heading: โพสต์ + self_follow_error: ไม่อนุญาตการติดตามบัญชีของคุณเอง admin: account_actions: action: ทำการกระทำ diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 7c30c5b127..097e573efa 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -33,7 +33,7 @@ vi: accounts: add_email_domain_block: Chặn tên miền email approve: Phê duyệt - approved_msg: Đã phê duyệt đăng ký %{username} + approved_msg: Đã chấp nhận đăng ký %{username} are_you_sure: Bạn có chắc không? avatar: Ảnh đại diện by_domain: Máy chủ @@ -132,7 +132,7 @@ vi: resubscribe: Đăng ký lại role: Vai trò search: Tìm kiếm - search_same_email_domain: Những người khác với cùng tên miền email + search_same_email_domain: Những người có cùng tên miền email search_same_ip: Tra cứu IP security: Bảo mật security_measures: @@ -165,49 +165,49 @@ vi: unsuspended_msg: Đã kích hoạt lại %{username} thành công username: Tài khoản view_domain: Xem mô tả tài khoản này - warn: Nhắc + warn: Cảnh cáo web: Web whitelisted: Danh sách trắng action_logs: action_types: - approve_appeal: Chấp nhận kháng cáo - approve_user: Duyệt đăng ký + approve_appeal: Chấp nhận khiếu nại + approve_user: Chấp nhận đăng ký assigned_to_self_report: Tự xử lý báo cáo change_email_user: Đổi email người dùng change_role_user: Đổi vai trò confirm_user: Xác minh create_account_warning: Cảnh cáo create_announcement: Tạo thông báo mới - create_canonical_email_block: Chặn địa chỉ email + create_canonical_email_block: Chặn địa chỉ email biến thể create_custom_emoji: Tạo emoji create_domain_allow: Cho phép máy chủ create_domain_block: Chặn máy chủ - create_email_domain_block: Tạo chặn tên miền email + create_email_domain_block: Chặn tên miền email create_ip_block: Chặn IP - create_unavailable_domain: Ngừng liên hợp + create_unavailable_domain: Bỏ liên hợp create_user_role: Tạo vai trò demote_user: Hạ vai trò destroy_announcement: Xóa thông báo - destroy_canonical_email_block: Bỏ chặn địa chỉ email + destroy_canonical_email_block: Bỏ chặn địa chỉ email biến thể destroy_custom_emoji: Xóa emoji - destroy_domain_allow: Bỏ thanh trừng máy chủ + destroy_domain_allow: Bỏ máy chủ cho phép destroy_domain_block: Bỏ chặn máy chủ destroy_email_domain_block: Bỏ chặn tên miền email destroy_instance: Thanh trừng máy chủ destroy_ip_block: Bỏ chặn IP destroy_status: Xóa tút - destroy_unavailable_domain: Tái liên hợp + destroy_unavailable_domain: Cho phép liên hợp destroy_user_role: Xóa vai trò disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji disable_sign_in_token_auth_user: Tắt xác minh bằng email cho người dùng disable_user: Vô hiệu hóa đăng nhập - enable_custom_emoji: Duyệt emoji + enable_custom_emoji: Cho phép emoji enable_sign_in_token_auth_user: Bật xác minh bằng email cho người dùng enable_user: Cho phép đăng nhập - memorialize_account: Đánh dấu tưởng niệm + memorialize_account: Gán tưởng niệm promote_user: Nâng vai trò - reject_appeal: Từ chối kháng cáo + reject_appeal: Từ chối khiếu nại reject_user: Từ chối đăng ký remove_avatar_user: Xóa ảnh đại diện reopen_report: Mở lại báo cáo @@ -217,7 +217,7 @@ vi: sensitive_account: Gán nhạy cảm silence_account: Gán ẩn suspend_account: Gán vô hiệu hóa - unassigned_report: Báo cáo chưa xử lý + unassigned_report: Bỏ xử lý báo cáo unblock_email_account: Bỏ chặn địa chỉ email unsensitive_account: Bỏ nhạy cảm unsilence_account: Bỏ ẩn @@ -230,64 +230,64 @@ vi: update_status: Cập nhật tút update_user_role: Cập nhật vai trò actions: - approve_appeal_html: "%{name} đã duyệt kháng cáo của %{target}" + approve_appeal_html: "%{name} đã chấp nhận khiếu nại từ %{target}" approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}" - assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}" + assigned_to_self_report_html: "%{name} đã tự xử lý báo cáo %{target}" change_email_user_html: "%{name} đã thay đổi địa chỉ email của %{target}" - change_role_user_html: "%{name} đã thay đổi vai trò %{target}" + change_role_user_html: "%{name} đã thay đổi vai trò của %{target}" confirm_user_html: "%{name} đã xác minh địa chỉ email của %{target}" create_account_warning_html: "%{name} đã cảnh cáo %{target}" - create_announcement_html: "%{name} tạo thông báo mới %{target}" - create_canonical_email_block_html: "%{name} đã chặn địa chỉ email với hash %{target}" + create_announcement_html: "%{name} đã tạo thông báo %{target}" + create_canonical_email_block_html: "%{name} đã chặn địa chỉ email biến thể %{target}" create_custom_emoji_html: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}" - create_domain_allow_html: "%{name} kích hoạt liên hợp với %{target}" - create_domain_block_html: "%{name} chặn máy chủ %{target}" + create_domain_allow_html: "%{name} đã bật liên hợp với %{target}" + create_domain_block_html: "%{name} đã chặn máy chủ %{target}" create_email_domain_block_html: "%{name} đã chặn tên miền email %{target}" create_ip_block_html: "%{name} đã chặn IP %{target}" - create_unavailable_domain_html: "%{name} ngưng phân phối với máy chủ %{target}" + create_unavailable_domain_html: "%{name} đã bỏ liên hợp với máy chủ %{target}" create_user_role_html: "%{name} đã tạo vai trò %{target}" demote_user_html: "%{name} đã hạ vai trò của %{target}" - destroy_announcement_html: "%{name} xóa thông báo %{target}" - destroy_canonical_email_block_html: "%{name} đã bỏ chặn địa chỉ email với hash %{target}" + destroy_announcement_html: "%{name} đã xóa thông báo %{target}" + destroy_canonical_email_block_html: "%{name} đã bỏ chặn địa chỉ email biến thể %{target}" destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}" destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}" - destroy_domain_block_html: "%{name} bỏ chặn máy chủ %{target}" + destroy_domain_block_html: "%{name} đã bỏ chặn máy chủ %{target}" destroy_email_domain_block_html: "%{name} đã bỏ chặn email %{target}" - destroy_instance_html: "%{name} thanh trừng máy chủ %{target}" - destroy_ip_block_html: "%{name} bỏ chặn IP %{target}" + destroy_instance_html: "%{name} đã thanh trừng máy chủ %{target}" + destroy_ip_block_html: "%{name} đã bỏ chặn IP %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" - destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}" + destroy_unavailable_domain_html: "%{name} tiếp tục liên hợp với máy chủ %{target}" destroy_user_role_html: "%{name} đã xóa vai trò %{target}" disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}" disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} đã tắt xác minh email của %{target}" - disable_user_html: "%{name} vô hiệu hóa đăng nhập %{target}" - enable_custom_emoji_html: "%{name} cho phép emoji %{target}" + disable_user_html: "%{name} đã vô hiệu hóa đăng nhập %{target}" + enable_custom_emoji_html: "%{name} đã cho phép emoji %{target}" enable_sign_in_token_auth_user_html: "%{name} đã bật xác minh email của %{target}" - enable_user_html: "%{name} bỏ vô hiệu hóa đăng nhập %{target}" + enable_user_html: "%{name} đã bỏ vô hiệu hóa đăng nhập %{target}" memorialize_account_html: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm" promote_user_html: "%{name} đã nâng vai trò của %{target}" - reject_appeal_html: "%{name} đã từ chối kháng cáo của %{target}" + reject_appeal_html: "%{name} đã từ chối khiếu nại từ %{target}" reject_user_html: "%{name} đã từ chối đăng ký từ %{target}" remove_avatar_user_html: "%{name} đã xóa ảnh đại diện của %{target}" - reopen_report_html: "%{name} mở lại báo cáo %{target}" + reopen_report_html: "%{name} đã mở lại báo cáo %{target}" resend_user_html: "%{name} đã gửi lại email xác minh cho %{target}" reset_password_user_html: "%{name} đã đặt lại mật khẩu của %{target}" resolve_report_html: "%{name} đã xử lý báo cáo %{target}" - sensitive_account_html: "%{name} đánh dấu nội dung của %{target} là nhạy cảm" + sensitive_account_html: "%{name} đã gán nội dung của %{target} là nhạy cảm" silence_account_html: "%{name} đã ẩn %{target}" suspend_account_html: "%{name} đã vô hiệu hóa %{target}" - unassigned_report_html: "%{name} đã xử lý báo cáo %{target} chưa xử lí" - unblock_email_account_html: "%{name} bỏ chặn địa chỉ email của %{target}" - unsensitive_account_html: "%{name} đánh dấu nội dung của %{target} là bình thường" + unassigned_report_html: "%{name} đã thôi xử lý báo cáo %{target}" + unblock_email_account_html: "%{name} đã bỏ chặn địa chỉ email của %{target}" + unsensitive_account_html: "%{name} đã gán nội dung của %{target} là bình thường" unsilence_account_html: "%{name} đã bỏ ẩn %{target}" unsuspend_account_html: "%{name} đã bỏ vô hiệu hóa %{target}" - update_announcement_html: "%{name} cập nhật thông báo %{target}" + update_announcement_html: "%{name} đã cập nhật thông báo %{target}" update_custom_emoji_html: "%{name} đã cập nhật emoji %{target}" - update_domain_block_html: "%{name} cập nhật chặn máy chủ %{target}" - update_ip_block_html: "%{name} cập nhật chặn IP %{target}" - update_report_html: "%{name} cập nhật báo cáo %{target}" - update_status_html: "%{name} cập nhật tút của %{target}" + update_domain_block_html: "%{name} đã cập nhật chặn máy chủ %{target}" + update_ip_block_html: "%{name} đã cập nhật chặn IP %{target}" + update_report_html: "%{name} đã cập nhật báo cáo %{target}" + update_status_html: "%{name} đã cập nhật tút của %{target}" update_user_role_html: "%{name} đã cập nhật vai trò %{target}" deleted_account: tài khoản đã xóa empty: Không tìm thấy bản ghi. @@ -354,7 +354,7 @@ vi: new_users: người mới opened_reports: báo cáo pending_appeals_html: - other: "%{count} kháng cáo đang chờ" + other: "%{count} khiếu nại đang chờ" pending_reports_html: other: "%{count} báo cáo đang chờ" pending_tags_html: @@ -372,7 +372,7 @@ vi: disputes: appeals: empty: Không tìm thấy. - title: Kháng cáo + title: Khiếu nại domain_allows: add_new: Cho phép liên hợp với máy chủ created_msg: Máy chủ đã được kích hoạt liên hợp thành công @@ -692,8 +692,8 @@ vi: invite_users_description: Cho phép mời những người mới vào máy chủ manage_announcements: Quản lý thông báo manage_announcements_description: Cho phép quản lý thông báo trên máy chủ - manage_appeals: Quản lý kháng cáo - manage_appeals_description: Cho phép thành viên kháng cáo đối với các hành động kiểm duyệt + manage_appeals: Quản lý khiếu nại + manage_appeals_description: Cho phép thành viên khiếu nại đối với các hành động kiểm duyệt manage_blocks: Quản lý chặn manage_blocks_description: Cho phép người dùng tự chặn các nhà cung cấp email và địa chỉ IP manage_custom_emojis: Quản lý emoji @@ -819,7 +819,7 @@ vi: original_status: Tút gốc reblogs: Lượt đăng lại status_changed: Tút đã sửa - title: Toàn bộ tút + title: Tất cả tút trending: Xu hướng visibility: Hiển thị with_media: Có media @@ -1008,7 +1008,7 @@ vi: silence: hạn chế tài khoản của họ suspend: vô hiệu hóa tài khoản của họ body: "%{target} đã khiếu nại vì bị %{action_taken_by} %{type} vào %{date}. Họ cho biết:" - next_steps: Bạn có thể duyệt kháng cáo để hủy kiểm duyệt hoặc bỏ qua. + next_steps: Bạn có thể chấp nhận khiếu nại để bỏ kiểm duyệt, hoặc không. subject: "%{username} đang khiếu nại quyết định kiểm duyệt trên %{instance}" new_critical_software_updates: body: Các phiên bản quan trọng mới của Mastodon đã được phát hành, bạn nên cập nhật càng sớm càng tốt! @@ -1149,7 +1149,7 @@ vi: author_attribution: example_title: Văn bản mẫu hint_html: Kiểm soát cách bạn được ghi nhận khi chia sẻ liên kết trên Mastodon. - more_from_html: Thêm từ %{name} + more_from_html: Viết bởi %{name} s_blog: "%{name}'s Blog" title: Ghi nhận người đăng challenge: @@ -1205,12 +1205,12 @@ vi: appealed_msg: Khiếu nại của bạn đã được gửi đi. Nếu nó được chấp nhận, bạn sẽ nhận được thông báo. appeals: submit: Gửi khiếu nại - approve_appeal: Duyệt kháng cáo + approve_appeal: Chấp nhận khiếu nại associated_report: Báo cáo đính kèm created_at: Ngày description_html: Đây là những cảnh cáo và áp đặt kiểm duyệt đối với bạn bởi đội ngũ %{instance}. recipient: Người nhận - reject_appeal: Từ chối kháng cáo + reject_appeal: Từ chối khiếu nại status: 'Tút #%{id}' status_removed: Tút này đã được xóa khỏi hệ thống title: "%{action} từ %{date}" @@ -1386,10 +1386,10 @@ vi: muting: Đang nhập người đã ẩn type: Kiểu nhập type_groups: - constructive: Lượt theo dõi và những thứ đã lưu - destructive: Lượt chặn và ẩn + constructive: Theo dõi và lưu + destructive: Chặn và ẩn types: - blocking: Danh sách chặn + blocking: Danh sách người đã chặn bookmarks: Tút đã lưu domain_blocking: Danh sách máy chủ đã chặn following: Danh sách người theo dõi @@ -1747,7 +1747,7 @@ vi: ignore_favs: Bỏ qua số lượt thích ignore_reblogs: Bỏ qua lượt đăng lại interaction_exceptions: Ngoại lệ dựa trên tương tác - interaction_exceptions_explanation: Lưu ý rằng không có gì đảm bảo rằng các tút sẽ bị xóa nếu chúng tụt dưới ngưỡng mức yêu thích hoặc đăng lại, dù đã từng đạt. + interaction_exceptions_explanation: Lưu ý là không có gì đảm bảo rằng các tút sẽ bị xóa nếu chúng bị giảm lượt thích hoặc đăng lại, dù đã từng đạt. keep_direct: Giữ lại tin nhắn keep_direct_hint: Không xóa tin nhắn của bạn keep_media: Giữ lại những tút có đính kèm media @@ -1778,7 +1778,7 @@ vi: sensitive_content: NSFW strikes: errors: - too_late: Đã quá trễ để kháng cáo + too_late: Đã quá trễ để khiếu nại tags: does_not_match_previous_name: không khớp với tên trước themes: @@ -1852,8 +1852,8 @@ vi: disable: Bạn không còn có thể sử dụng tài khoản của mình, nhưng hồ sơ của bạn và dữ liệu khác vẫn còn nguyên. Bạn có thể yêu cầu sao lưu dữ liệu của mình, thay đổi cài đặt tài khoản hoặc xóa tài khoản của bạn. mark_statuses_as_sensitive: Vài tút của bạn đã bị kiểm duyệt viên %{instance} đánh dấu nhạy cảm. Mọi người cần nhấn vào media để xem nó. Bạn có thể tự đánh dấu tài khoản của bạn là nhạy cảm. sensitive: Từ giờ trở đi, tất cả các media của bạn bạn tải lên sẽ được đánh dấu là nhạy cảm và ẩn đằng sau cảnh báo nhấp chuột. - silence: Bạn vẫn có thể sử dụng tài khoản của mình, nhưng chỉ những người đang theo dõi bạn mới thấy bài đăng của bạn. Bạn cũng bị loại khỏi các tính năng khám phá khác. Tuy nhiên, những người khác vẫn có thể theo dõi bạn. - suspend: Bạn không còn có thể sử dụng tài khoản của bạn, hồ sơ và các dữ liệu khác không còn có thể truy cập được. Trong vòng 30 ngày, bạn vẫn có thể đăng nhập để yêu cầu bản sao dữ liệu của mình cho đến khi dữ liệu bị xóa hoàn toàn, nhưng chúng tôi sẽ giữ lại một số dữ liệu cơ bản để ngăn bạn thoát khỏi việc vô hiệu hóa. + silence: Bạn vẫn có thể sử dụng tài khoản của mình và người khác vẫn có thể theo dõi bạn, nhưng chỉ những người đã theo dõi bạn mới thấy tút của bạn. Bạn cũng bị loại khỏi các tính năng khám phá khác. + suspend: Tài khoản của bạn, hồ sơ và các dữ liệu khác sẽ không thể truy cập được nữa. Bạn vẫn có thể đăng nhập để yêu cầu bản sao dữ liệu của mình cho đến khi dữ liệu bị xóa hoàn toàn trong vòng 30 ngày, nhưng chúng tôi sẽ giữ lại một số dữ liệu cơ bản để phòng khi bạn được bỏ vô hiệu hóa. reason: 'Lý do:' statuses: 'Tút vi phạm:' subject: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 2654804697..025bc2b6dd 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -596,7 +596,7 @@ zh-CN: actions_no_posts: 该举报没有相关嘟文可供删除 add_to_report: 增加更多举报内容 already_suspended_badges: - local: 已经在此服务器上暂停 + local: 已在此服务器上被封禁 remote: 已在其所属服务器被封禁 are_you_sure: 你确定吗? assign_to_self: 接管 @@ -1699,8 +1699,8 @@ zh-CN: severed_relationships: download: 下载 (%{count}) event_type: - account_suspension: 账户被封禁 (%{target_name}) - domain_block: 服务器被封禁 (%{target_name}) + account_suspension: 封禁账户 (%{target_name}) + domain_block: 封禁服务器 (%{target_name}) user_domain_block: 你屏蔽了 %{target_name} lost_followers: 失去的关注者 lost_follows: 失去的关注 @@ -1876,7 +1876,7 @@ zh-CN: apps_android_action: 从 Google Play 下载 apps_ios_action: 从 App Store 下载 apps_step: 下载我们的官方应用。 - apps_title: Mastodon应用 + apps_title: Mastodon 应用 checklist_subtitle: 让我们带你开启这片社交新天地: checklist_title: 欢迎清单 edit_profile_action: 个性化 @@ -1884,16 +1884,16 @@ zh-CN: edit_profile_title: 个性化你的个人资料 explanation: 下面是几个小贴士,希望它们能帮到你 feature_action: 了解更多 - feature_audience: Mastodon为你提供了无需中间商即可管理受众的独特可能。Mastodon可被部署在你自己的基础设施上,允许你关注其它任何Mastodon在线服务器的用户,或被任何其他在线 Mastodon 服务器的用户关注,并且不受你之外的任何人控制。 + feature_audience: Mastodon 为你提供了无需中间商即可管理受众的独特可能。Mastodon 可被部署在你自己的基础设施上,允许你关注其它任何 Mastodon 在线服务器的用户,或被任何其他在线 Mastodon 服务器的用户关注,并且不受你之外的任何人控制。 feature_audience_title: 放手去建立起你的受众 feature_control: 你最清楚你想在你自己的主页中看到什么动态。没有算法或广告浪费你的时间。你可以用一个账号关注任何 Mastodon 服务器上的任何人,并按时间顺序获得他们发布的嘟文,让你的互联网的角落更合自己的心意。 feature_control_title: 掌控自己的时间线 - feature_creativity: Mastodon支持音频、视频和图片、无障碍描述、投票、内容警告, 动画头像、自定义表情包、缩略图裁剪控制等功能,帮助你在网上尽情表达自己。无论你是要发布你的艺术作品、音乐还是播客,Mastodon 都能为你服务。 + feature_creativity: Mastodon 支持音频、视频和图片、无障碍描述、投票、内容警告, 动画头像、自定义表情包、缩略图裁剪控制等功能,帮助你在网上尽情表达自己。无论你是要发布你的艺术作品、音乐还是播客,Mastodon 都能为你服务。 feature_creativity_title: 无与伦比的创造力 - feature_moderation: Mastodon将决策权交还给你。每个服务器都会创建自己的规则和条例,并在站点内施行,而不是像企业社交媒体那样居高临下,这使得它可以最灵活地响应不同人群的需求。加入一个你认同其规则的服务器,或托管你自己的服务器。 + feature_moderation: Mastodon 将决策权交还给你。每个服务器都会创建自己的规则和条例,并在站点内施行,而不是像企业社交媒体那样居高临下,这使得它可以最灵活地响应不同人群的需求。加入一个你认同其规则的服务器,或托管你自己的服务器。 feature_moderation_title: 管理,本应如此 follow_action: 关注 - follow_step: 关注有趣的人,这就是Mastodon的意义所在。 + follow_step: 关注有趣的人,这就是 Mastodon 的意义所在。 follow_title: 个性化你的首页动态 follows_subtitle: 关注知名账户 follows_title: 推荐关注 @@ -1907,8 +1907,8 @@ zh-CN: post_step: 向世界打个招呼吧。 post_title: 发布你的第一条嘟文 share_action: 分享 - share_step: 让你的朋友知道如何在Mastodon找到你。 - share_title: 分享你的Mastodon个人资料 + share_step: 让你的朋友知道如何在 Mastodon 找到你。 + share_title: 分享你的 Mastodon 个人资料 sign_in_action: 登录 subject: 欢迎来到 Mastodon title: "%{name},欢迎你的加入!" From f2378aca4001198f60d52feb8d24a281a705a88a Mon Sep 17 00:00:00 2001 From: kenkiku1021 Date: Tue, 15 Oct 2024 18:28:07 +0900 Subject: [PATCH 156/550] add SWIFT object storage uri to CSP media hosts (#32439) Co-authored-by: Claire --- app/lib/content_security_policy.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/lib/content_security_policy.rb b/app/lib/content_security_policy.rb index 0b60b0d98c..c764d1856d 100644 --- a/app/lib/content_security_policy.rb +++ b/app/lib/content_security_policy.rb @@ -36,7 +36,7 @@ class ContentSecurityPolicy end def cdn_host_value - s3_alias_host || s3_cloudfront_host || azure_alias_host || s3_hostname_host + s3_alias_host || s3_cloudfront_host || azure_alias_host || s3_hostname_host || swift_object_url end def paperclip_root_url @@ -72,6 +72,14 @@ class ContentSecurityPolicy host_to_url ENV.fetch('S3_HOSTNAME', nil) end + def swift_object_url + url = ENV.fetch('SWIFT_OBJECT_URL', nil) + return if url.blank? || !url.start_with?('https://') + + url += '/' unless url.end_with?('/') + url + end + def uri_from_configuration_and_string(host_string) Addressable::URI.parse("#{host_protocol}://#{host_string}").tap do |uri| uri.path += '/' unless uri.path.blank? || uri.path.end_with?('/') From 5e4cc1a39c86d75995dc0a86a021085adc3a8c63 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 15 Oct 2024 11:38:04 +0200 Subject: [PATCH 157/550] Fix follow recommendation carrousel scrolling on RTL layouts, for real (#32505) --- .../components/inline_follow_suggestions.jsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx index 14ea6bd996..3269b5a497 100644 --- a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx +++ b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx @@ -151,8 +151,13 @@ export const InlineFollowSuggestions = ({ hidden }) => { return; } - setCanScrollLeft(bodyRef.current.scrollLeft > 0); - setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth); + if (getComputedStyle(bodyRef.current).direction === 'rtl') { + setCanScrollLeft((bodyRef.current.clientWidth - bodyRef.current.scrollLeft) < bodyRef.current.scrollWidth); + setCanScrollRight(bodyRef.current.scrollLeft < 0); + } else { + setCanScrollLeft(bodyRef.current.scrollLeft > 0); + setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth); + } }, [setCanScrollRight, setCanScrollLeft, bodyRef]); const handleDismiss = useCallback(() => { From 5afdb81b366ed423588e0a29c146539978180de0 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 15 Oct 2024 06:01:21 -0400 Subject: [PATCH 158/550] Fix reblog icons on account media view (#32506) --- .../features/picture_in_picture/components/footer.jsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index 300c8dd5b3..5c83f99b54 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -14,6 +14,8 @@ import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; import StarIcon from '@/material-icons/400-24px/star.svg?react'; +import RepeatDisabledIcon from '@/svg-icons/repeat_disabled.svg?react'; +import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg?react'; import { replyCompose } from 'mastodon/actions/compose'; import { toggleReblog, toggleFavourite } from 'mastodon/actions/interactions'; import { openModal } from 'mastodon/actions/modal'; @@ -159,22 +161,26 @@ class Footer extends ImmutablePureComponent { replyTitle = intl.formatMessage(messages.replyAll); } - let reblogTitle = ''; + let reblogTitle, reblogIconComponent; if (status.get('reblogged')) { reblogTitle = intl.formatMessage(messages.cancel_reblog_private); + reblogIconComponent = publicStatus ? RepeatIcon : RepeatPrivateIcon; } else if (publicStatus) { reblogTitle = intl.formatMessage(messages.reblog); + reblogIconComponent = RepeatIcon; } else if (reblogPrivate) { reblogTitle = intl.formatMessage(messages.reblog_private); + reblogIconComponent = RepeatPrivateIcon; } else { reblogTitle = intl.formatMessage(messages.cannot_reblog); + reblogIconComponent = RepeatDisabledIcon; } return (
- + {withOpenButton && }
From a1eb1a964277ce72a4063de1738ef4b6eda3a796 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Tue, 15 Oct 2024 13:49:15 +0200 Subject: [PATCH 159/550] Update issue templates ot use the new GH Types, and add Troubleshooting template (#32484) Co-authored-by: Matt Jankowski --- .github/ISSUE_TEMPLATE/1.web_bug_report.yml | 13 ++-- .../ISSUE_TEMPLATE/2.server_bug_report.yml | 13 ++-- .github/ISSUE_TEMPLATE/3.troubleshooting.yml | 74 +++++++++++++++++++ ...ture_request.yml => 4.feature_request.yml} | 2 +- 4 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/3.troubleshooting.yml rename .github/ISSUE_TEMPLATE/{3.feature_request.yml => 4.feature_request.yml} (96%) diff --git a/.github/ISSUE_TEMPLATE/1.web_bug_report.yml b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml index 20e27d103c..f897a7d7da 100644 --- a/.github/ISSUE_TEMPLATE/1.web_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml @@ -1,6 +1,7 @@ name: Bug Report (Web Interface) -description: If you are using Mastodon's web interface and something is not working as expected -labels: [bug, 'status/to triage', 'area/web interface'] +description: There is a problem using Mastodon's web interface. +labels: ['status/to triage', 'area/web interface'] +type: Bug body: - type: markdown attributes: @@ -47,8 +48,8 @@ body: attributes: label: Mastodon version description: | - This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` - placeholder: v4.1.2 + This is displayed at the bottom of the About page, eg. `v4.4.0-alpha.1` + placeholder: v4.3.0 validations: required: true - type: input @@ -56,7 +57,7 @@ body: label: Browser name and version description: | What browser are you using when getting this bug? Please specify the version as well. - placeholder: Firefox 105.0.3 + placeholder: Firefox 131.0.0 validations: required: true - type: input @@ -64,7 +65,7 @@ body: label: Operating system description: | What OS are you running? Please specify the version as well. - placeholder: macOS 13.4.1 + placeholder: macOS 15.0.1 validations: required: true - type: textarea diff --git a/.github/ISSUE_TEMPLATE/2.server_bug_report.yml b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml index 49d5f57209..a66f5c1076 100644 --- a/.github/ISSUE_TEMPLATE/2.server_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml @@ -1,7 +1,8 @@ name: Bug Report (server / API) description: | - If something is not working as expected, but is not from using the web interface. -labels: [bug, 'status/to triage'] + There is a problem with the HTTP server, REST API, ActivityPub interaction, etc. +labels: ['status/to triage'] +type: 'Bug' body: - type: markdown attributes: @@ -48,8 +49,8 @@ body: attributes: label: Mastodon version description: | - This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` - placeholder: v4.1.2 + This is displayed at the bottom of the About page, eg. `v4.4.0-alpha.1` + placeholder: v4.3.0 validations: required: false - type: textarea @@ -59,7 +60,7 @@ body: Any additional technical details you may have, like logs or error traces value: | If this is happening on your own Mastodon server, please fill out those: - - Ruby version: (from `ruby --version`, eg. v3.1.2) - - Node.js version: (from `node --version`, eg. v18.16.0) + - Ruby version: (from `ruby --version`, eg. v3.3.5) + - Node.js version: (from `node --version`, eg. v20.18.0) validations: required: false diff --git a/.github/ISSUE_TEMPLATE/3.troubleshooting.yml b/.github/ISSUE_TEMPLATE/3.troubleshooting.yml new file mode 100644 index 0000000000..eeb74b160b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3.troubleshooting.yml @@ -0,0 +1,74 @@ +name: Deployment troubleshooting +description: | + You are a server administrator and you are encountering a technical issue during installation, upgrade or operations of Mastodon. +labels: ['status/to triage'] +type: 'Troubleshooting' +body: + - type: markdown + attributes: + value: | + Make sure that you are submitting a new bug that was not previously reported or already fixed. + + Please use a concise and distinct title for the issue. + - type: textarea + attributes: + label: Steps to reproduce the problem + description: What were you trying to do? + value: | + 1. + 2. + 3. + ... + validations: + required: true + - type: input + attributes: + label: Expected behaviour + description: What should have happened? + validations: + required: true + - type: input + attributes: + label: Actual behaviour + description: What happened? + validations: + required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false + - type: input + attributes: + label: Mastodon instance + description: The address of the Mastodon instance where you experienced the issue + placeholder: mastodon.social + validations: + required: true + - type: input + attributes: + label: Mastodon version + description: | + This is displayed at the bottom of the About page, eg. `v4.4.0-alpha.1` + placeholder: v4.3.0 + validations: + required: false + - type: textarea + attributes: + label: Environment + description: | + Details about your environment, like how Mastodon is deployed, if containers are used, version numbers, etc. + value: | + Please at least include those informations: + - Operating system: (eg. Ubuntu 22.04) + - Ruby version: (from `ruby --version`, eg. v3.3.5) + - Node.js version: (from `node --version`, eg. v20.18.0) + validations: + required: false + - type: textarea + attributes: + label: Technical details + description: | + Any additional technical details you may have, like logs or error traces + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/3.feature_request.yml b/.github/ISSUE_TEMPLATE/4.feature_request.yml similarity index 96% rename from .github/ISSUE_TEMPLATE/3.feature_request.yml rename to .github/ISSUE_TEMPLATE/4.feature_request.yml index 2cabcf61e0..7146b4f8a3 100644 --- a/.github/ISSUE_TEMPLATE/3.feature_request.yml +++ b/.github/ISSUE_TEMPLATE/4.feature_request.yml @@ -1,6 +1,6 @@ name: Feature Request description: I have a suggestion -labels: [suggestion] +type: Suggestion body: - type: markdown attributes: From d74c2c583a0bee57c042bf957ee864e17b53472a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 08:48:10 -0400 Subject: [PATCH 160/550] Extend spec coverage for `Poll` model (#32500) --- spec/models/poll_spec.rb | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb index 736f3615d0..66f521ab3f 100644 --- a/spec/models/poll_spec.rb +++ b/spec/models/poll_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Poll do - describe 'scopes' do + describe 'Scopes' do let(:status) { Fabricate(:status) } let(:attached_poll) { Fabricate(:poll, status: status) } let(:not_attached_poll) do @@ -13,7 +13,7 @@ RSpec.describe Poll do end end - describe 'attached' do + describe '.attached' do it 'finds the correct records' do results = described_class.attached @@ -21,7 +21,7 @@ RSpec.describe Poll do end end - describe 'unattached' do + describe '.unattached' do it 'finds the correct records' do results = described_class.unattached @@ -30,11 +30,23 @@ RSpec.describe Poll do end end - describe 'validations' do - context 'when not valid' do - subject { Fabricate.build(:poll) } + describe '#reset_votes!' do + let(:poll) { Fabricate :poll, cached_tallies: [2, 3], votes_count: 5, voters_count: 5 } + let!(:vote) { Fabricate :poll_vote, poll: } - it { is_expected.to validate_presence_of(:expires_at) } + it 'resets vote data and deletes votes' do + expect { poll.reset_votes! } + .to change(poll, :cached_tallies).to([0, 0]) + .and change(poll, :votes_count).to(0) + .and(change(poll, :voters_count).to(0)) + expect { vote.reload } + .to raise_error(ActiveRecord::RecordNotFound) end end + + describe 'Validations' do + subject { Fabricate.build(:poll) } + + it { is_expected.to validate_presence_of(:expires_at) } + end end From 0cc21f1dedf36111ac59842b1db5355d70c316e8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 08:54:56 -0400 Subject: [PATCH 161/550] Reduce factory creation (132 -> 40) in lib/vacuum/* specs (#32498) --- spec/lib/vacuum/access_tokens_vacuum_spec.rb | 34 +++++++------------ spec/lib/vacuum/backups_vacuum_spec.rb | 13 +++---- spec/lib/vacuum/feeds_vacuum_spec.rb | 4 +-- .../vacuum/media_attachments_vacuum_spec.rb | 4 +-- spec/lib/vacuum/preview_cards_vacuum_spec.rb | 22 ++++++------ spec/lib/vacuum/statuses_vacuum_spec.rb | 22 +++++------- 6 files changed, 41 insertions(+), 58 deletions(-) diff --git a/spec/lib/vacuum/access_tokens_vacuum_spec.rb b/spec/lib/vacuum/access_tokens_vacuum_spec.rb index 54760c41bd..8768f6b2dc 100644 --- a/spec/lib/vacuum/access_tokens_vacuum_spec.rb +++ b/spec/lib/vacuum/access_tokens_vacuum_spec.rb @@ -14,32 +14,24 @@ RSpec.describe Vacuum::AccessTokensVacuum do let!(:expired_access_grant) { Fabricate(:access_grant, expires_in: 59.minutes.to_i, created_at: 1.hour.ago) } let!(:active_access_grant) { Fabricate(:access_grant) } - before do + it 'deletes revoked/expired access tokens and revoked/expired grants, but preserves active tokens/grants' do subject.perform - end - it 'deletes revoked access tokens' do - expect { revoked_access_token.reload }.to raise_error ActiveRecord::RecordNotFound - end + expect { revoked_access_token.reload } + .to raise_error ActiveRecord::RecordNotFound + expect { expired_access_token.reload } + .to raise_error ActiveRecord::RecordNotFound - it 'deletes expired access tokens' do - expect { expired_access_token.reload }.to raise_error ActiveRecord::RecordNotFound - end + expect { revoked_access_grant.reload } + .to raise_error ActiveRecord::RecordNotFound + expect { expired_access_grant.reload } + .to raise_error ActiveRecord::RecordNotFound - it 'deletes revoked access grants' do - expect { revoked_access_grant.reload }.to raise_error ActiveRecord::RecordNotFound - end + expect { active_access_token.reload } + .to_not raise_error - it 'deletes expired access grants' do - expect { expired_access_grant.reload }.to raise_error ActiveRecord::RecordNotFound - end - - it 'does not delete active access tokens' do - expect { active_access_token.reload }.to_not raise_error - end - - it 'does not delete active access grants' do - expect { active_access_grant.reload }.to_not raise_error + expect { active_access_grant.reload } + .to_not raise_error end end end diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb index 867dbe4020..4a025352cb 100644 --- a/spec/lib/vacuum/backups_vacuum_spec.rb +++ b/spec/lib/vacuum/backups_vacuum_spec.rb @@ -11,16 +11,13 @@ RSpec.describe Vacuum::BackupsVacuum do let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) } let!(:current_backup) { Fabricate(:backup) } - before do + it 'deletes backups past the retention period but preserves those within the period' do subject.perform - end - it 'deletes backups past the retention period' do - expect { expired_backup.reload }.to raise_error ActiveRecord::RecordNotFound - end - - it 'does not delete backups within the retention period' do - expect { current_backup.reload }.to_not raise_error + expect { expired_backup.reload } + .to raise_error ActiveRecord::RecordNotFound + expect { current_backup.reload } + .to_not raise_error end end end diff --git a/spec/lib/vacuum/feeds_vacuum_spec.rb b/spec/lib/vacuum/feeds_vacuum_spec.rb index ede1e3c360..38459a558f 100644 --- a/spec/lib/vacuum/feeds_vacuum_spec.rb +++ b/spec/lib/vacuum/feeds_vacuum_spec.rb @@ -14,11 +14,11 @@ RSpec.describe Vacuum::FeedsVacuum do redis.zadd(feed_key_for(active_user), 1, 1) redis.zadd(feed_key_for(inactive_user, 'reblogs'), 2, 2) redis.sadd(feed_key_for(inactive_user, 'reblogs:2'), 3) - - subject.perform end it 'clears feeds of inactive users and lists' do + subject.perform + expect(redis.zcard(feed_key_for(inactive_user))).to eq 0 expect(redis.zcard(feed_key_for(active_user))).to eq 1 expect(redis.exists?(feed_key_for(inactive_user, 'reblogs'))).to be false diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb index 1039c36cea..f7749038cb 100644 --- a/spec/lib/vacuum/media_attachments_vacuum_spec.rb +++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb @@ -17,9 +17,9 @@ RSpec.describe Vacuum::MediaAttachmentsVacuum do let!(:old_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 10.days.ago) } let!(:new_unattached_media) { Fabricate(:media_attachment, account_id: nil, created_at: 1.hour.ago) } - before { subject.perform } - it 'handles attachments based on metadata details' do + subject.perform + expect(old_remote_media.reload.file) # Remote and past retention period .to be_blank expect(old_local_media.reload.file) # Local and past retention diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb index 9dbdf0bc2f..caeedd3269 100644 --- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -15,24 +15,22 @@ RSpec.describe Vacuum::PreviewCardsVacuum do before do old_preview_card.statuses << Fabricate(:status) new_preview_card.statuses << Fabricate(:status) + end + it 'handles preview card cleanup' do subject.perform - end - it 'deletes cache of preview cards last updated before the retention period' do - expect(old_preview_card.reload.image).to be_blank - end + expect(old_preview_card.reload.image) # last updated before retention period + .to be_blank - it 'does not delete cache of preview cards last updated within the retention period' do - expect(new_preview_card.reload.image).to_not be_blank - end + expect(new_preview_card.reload.image) # last updated within the retention period + .to_not be_blank - it 'does not delete attached preview cards' do - expect(new_preview_card.reload).to be_persisted - end + expect(new_preview_card.reload) # Keep attached preview cards + .to be_persisted - it 'does not delete orphaned preview cards in the retention period' do - expect(orphaned_preview_card.reload).to be_persisted + expect(orphaned_preview_card.reload) # keep orphaned cards in the retention period + .to be_persisted end end end diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb index d5c0139506..1fff864879 100644 --- a/spec/lib/vacuum/statuses_vacuum_spec.rb +++ b/spec/lib/vacuum/statuses_vacuum_spec.rb @@ -15,24 +15,20 @@ RSpec.describe Vacuum::StatusesVacuum do let!(:local_status_old) { Fabricate(:status, created_at: (retention_period + 2.days).ago) } let!(:local_status_recent) { Fabricate(:status, created_at: (retention_period - 2.days).ago) } - before do + it 'deletes remote statuses past the retention period and keeps others' do subject.perform - end - it 'deletes remote statuses past the retention period' do - expect { remote_status_old.reload }.to raise_error ActiveRecord::RecordNotFound - end + expect { remote_status_old.reload } + .to raise_error ActiveRecord::RecordNotFound - it 'does not delete local statuses past the retention period' do - expect { local_status_old.reload }.to_not raise_error - end + expect { local_status_old.reload } + .to_not raise_error - it 'does not delete remote statuses within the retention period' do - expect { remote_status_recent.reload }.to_not raise_error - end + expect { remote_status_recent.reload } + .to_not raise_error - it 'does not delete local statuses within the retention period' do - expect { local_status_recent.reload }.to_not raise_error + expect { local_status_recent.reload } + .to_not raise_error end end end From a11b599fface2a4fcd39d3c54ec9ed0aa4b5c8f7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:09:25 -0400 Subject: [PATCH 162/550] Expand coverage for `Scheduler::IpCleanupScheduler` worker (#32499) --- spec/fabricators/ip_block_fabricator.rb | 6 +++ .../scheduler/ip_cleanup_scheduler_spec.rb | 47 +++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 spec/fabricators/ip_block_fabricator.rb diff --git a/spec/fabricators/ip_block_fabricator.rb b/spec/fabricators/ip_block_fabricator.rb new file mode 100644 index 0000000000..30c48b90c6 --- /dev/null +++ b/spec/fabricators/ip_block_fabricator.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +Fabricator(:ip_block) do + severity { :sign_up_requires_approval } + ip { sequence(:ip) { |n| "10.0.0.#{n}" } } +end diff --git a/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb b/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb index 7071fa6e98..98150aa5ef 100644 --- a/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb +++ b/spec/workers/scheduler/ip_cleanup_scheduler_spec.rb @@ -5,9 +5,50 @@ require 'rails_helper' RSpec.describe Scheduler::IpCleanupScheduler do let(:worker) { described_class.new } - describe 'perform' do - it 'runs without error' do - expect { worker.perform }.to_not raise_error + describe '#perform' do + context 'with IP-related data past retention times' do + let!(:future_ip_block) { Fabricate :ip_block, expires_at: 1.week.from_now } + let!(:old_ip_block) { Fabricate :ip_block, expires_at: 1.week.ago } + let!(:session_past_retention) { Fabricate :session_activation, ip: '10.0.0.0', updated_at: 18.months.ago } + let!(:inactive_user) { Fabricate :user, current_sign_in_at: 18.months.ago, sign_up_ip: '10.0.0.0' } + let!(:old_login_activity) { Fabricate :login_activity, created_at: 18.months.ago } + let!(:old_token) { Fabricate :access_token, last_used_at: 18.months.ago, last_used_ip: '10.0.0.0' } + + before { stub_const 'Scheduler::IpCleanupScheduler::SESSION_RETENTION_PERIOD', 10.years.to_i.seconds } + + it 'deletes the expired block' do + expect { worker.perform } + .to_not raise_error + expect { old_ip_block.reload } + .to raise_error(ActiveRecord::RecordNotFound) + expect { old_login_activity.reload } + .to raise_error(ActiveRecord::RecordNotFound) + expect(session_past_retention.reload.ip) + .to be_nil + expect(inactive_user.reload.sign_up_ip) + .to be_nil + expect(old_token.reload.last_used_ip) + .to be_nil + expect(future_ip_block.reload) + .to be_present + end + end + + context 'with old session data' do + let!(:new_activation) { Fabricate :session_activation, updated_at: 1.week.ago } + let!(:old_activation) { Fabricate :session_activation, updated_at: 1.month.ago } + + before { stub_const 'Scheduler::IpCleanupScheduler::SESSION_RETENTION_PERIOD', 10.days.to_i.seconds } + + it 'clears old sessions' do + expect { worker.perform } + .to_not raise_error + + expect { old_activation.reload } + .to raise_error(ActiveRecord::RecordNotFound) + expect(new_activation.reload) + .to be_present + end end end end From b1c10969ac2cfad52a6ee6dbcc34087f86cd87c6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:10:03 -0400 Subject: [PATCH 163/550] Reduce factory creation (48 -> 8) in `AP::Note` serializer spec (#32492) --- .../activitypub/note_serializer_spec.rb | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/spec/serializers/activitypub/note_serializer_spec.rb b/spec/serializers/activitypub/note_serializer_spec.rb index 285b241ee2..a6976193b2 100644 --- a/spec/serializers/activitypub/note_serializer_spec.rb +++ b/spec/serializers/activitypub/note_serializer_spec.rb @@ -14,7 +14,7 @@ RSpec.describe ActivityPub::NoteSerializer do let!(:reply_by_account_third) { Fabricate(:status, account: account, thread: parent, visibility: :public) } let!(:reply_by_account_visibility_direct) { Fabricate(:status, account: account, thread: parent, visibility: :direct) } - it 'has the expected shape' do + it 'has the expected shape and replies collection' do expect(subject).to include({ '@context' => include('https://www.w3.org/ns/activitystreams'), 'type' => 'Note', @@ -22,26 +22,23 @@ RSpec.describe ActivityPub::NoteSerializer do 'contentMap' => include({ 'zh-TW' => a_kind_of(String), }), + 'replies' => replies_collection_values, }) end - it 'has a replies collection' do - expect(subject['replies']['type']).to eql('Collection') + def replies_collection_values + include( + 'type' => eql('Collection'), + 'first' => include( + 'type' => eql('CollectionPage'), + 'items' => reply_items + ) + ) end - it 'has a replies collection with a first Page' do - expect(subject['replies']['first']['type']).to eql('CollectionPage') - end - - it 'includes public self-replies in its replies collection' do - expect(subject['replies']['first']['items']).to include(reply_by_account_first.uri, reply_by_account_next.uri, reply_by_account_third.uri) - end - - it 'does not include replies from others in its replies collection' do - expect(subject['replies']['first']['items']).to_not include(reply_by_other_first.uri) - end - - it 'does not include replies with direct visibility in its replies collection' do - expect(subject['replies']['first']['items']).to_not include(reply_by_account_visibility_direct.uri) + def reply_items + include(reply_by_account_first.uri, reply_by_account_next.uri, reply_by_account_third.uri) # Public self replies + .and(not_include(reply_by_other_first.uri)) # Replies from others + .and(not_include(reply_by_account_visibility_direct.uri)) # Replies with direct visibility end end From d1d2278e7007daac2dd658041ec29151fb09b0ed Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:10:29 -0400 Subject: [PATCH 164/550] Reduce factory creation (73 -> 64) in `PublicFeed` spec (#32491) --- spec/models/public_feed_spec.rb | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb index 20fcdb0024..5ea58cd16f 100644 --- a/spec/models/public_feed_spec.rb +++ b/spec/models/public_feed_spec.rb @@ -54,24 +54,20 @@ RSpec.describe PublicFeed do context 'without a viewer' do let(:viewer) { nil } - it 'includes remote instances statuses' do - expect(subject).to include(remote_status.id) - end - - it 'includes local statuses' do - expect(subject).to include(local_status.id) + it 'includes remote instances statuses and local statuses' do + expect(subject) + .to include(remote_status.id) + .and include(local_status.id) end end context 'with a viewer' do let(:viewer) { Fabricate(:account, username: 'viewer') } - it 'includes remote instances statuses' do - expect(subject).to include(remote_status.id) - end - - it 'includes local statuses' do - expect(subject).to include(local_status.id) + it 'includes remote instances statuses and local statuses' do + expect(subject) + .to include(remote_status.id) + .and include(local_status.id) end end end From 92bb19773a19ca7bae8687dd1b3606455db8a2ca Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:12:58 -0400 Subject: [PATCH 165/550] Use `context` for repeated scenarios in `AccountStatusCleanupPolicy` spec (#32489) --- .../account_statuses_cleanup_policy_spec.rb | 82 ++++++++++--------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb index a08fd723a4..c142a0359a 100644 --- a/spec/models/account_statuses_cleanup_policy_spec.rb +++ b/spec/models/account_statuses_cleanup_policy_spec.rb @@ -16,6 +16,8 @@ RSpec.describe AccountStatusesCleanupPolicy do describe 'save hooks' do context 'when widening a policy' do + subject { account_statuses_cleanup_policy.last_inspected } + let!(:account_statuses_cleanup_policy) do Fabricate(:account_statuses_cleanup_policy, account: account, @@ -33,64 +35,64 @@ RSpec.describe AccountStatusesCleanupPolicy do account_statuses_cleanup_policy.record_last_inspected(42) end - it 'invalidates last_inspected when widened because of keep_direct' do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_direct' do + before { account_statuses_cleanup_policy.update(keep_direct: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of keep_pinned' do - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_pinned' do + before { account_statuses_cleanup_policy.update(keep_pinned: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of keep_polls' do - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_polls' do + before { account_statuses_cleanup_policy.update(keep_polls: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of keep_media' do - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_media' do + before { account_statuses_cleanup_policy.update(keep_media: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of keep_self_fav' do - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_self_fav' do + before { account_statuses_cleanup_policy.update(keep_self_fav: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of keep_self_bookmark' do - account_statuses_cleanup_policy.keep_self_bookmark = false - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of keep_self_bookmark' do + before { account_statuses_cleanup_policy.update(keep_self_bookmark: false) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of higher min_favs' do - account_statuses_cleanup_policy.min_favs = 5 - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of higher min_favs' do + before { account_statuses_cleanup_policy.update(min_favs: 5) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of disabled min_favs' do - account_statuses_cleanup_policy.min_favs = nil - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of disabled min_favs' do + before { account_statuses_cleanup_policy.update(min_favs: nil) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of higher min_reblogs' do - account_statuses_cleanup_policy.min_reblogs = 5 - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of higher min_reblogs' do + before { account_statuses_cleanup_policy.update(min_reblogs: 5) } + + it { is_expected.to be_nil } end - it 'invalidates last_inspected when widened because of disable min_reblogs' do - account_statuses_cleanup_policy.min_reblogs = nil - account_statuses_cleanup_policy.save - expect(account_statuses_cleanup_policy.last_inspected).to be_nil + context 'when widened because of disable min_reblogs' do + before { account_statuses_cleanup_policy.update(min_reblogs: nil) } + + it { is_expected.to be_nil } end end From 6a39212b0213072e7e77627165ac503887ae8a6b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:18:57 -0400 Subject: [PATCH 166/550] Reduce factories (36 > 12) in `AccountReachFinder` spec (#32482) --- spec/lib/account_reach_finder_spec.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/spec/lib/account_reach_finder_spec.rb b/spec/lib/account_reach_finder_spec.rb index e5d85656a2..0c1d92b2da 100644 --- a/spec/lib/account_reach_finder_spec.rb +++ b/spec/lib/account_reach_finder_spec.rb @@ -38,16 +38,23 @@ RSpec.describe AccountReachFinder do end describe '#inboxes' do - it 'includes the preferred inbox URL of followers' do - expect(described_class.new(account).inboxes).to include(*[ap_follower_example_com, ap_follower_example_org, ap_follower_with_shared].map(&:preferred_inbox_url)) + subject { described_class.new(account).inboxes } + + it 'includes the preferred inbox URL of followers and recently mentioned accounts but not unrelated users' do + expect(subject) + .to include(*follower_inbox_urls) + .and include(*mentioned_account_inbox_urls) + .and not_include(unrelated_account.preferred_inbox_url) end - it 'includes the preferred inbox URL of recently-mentioned accounts' do - expect(described_class.new(account).inboxes).to include(*[ap_mentioned_with_shared, ap_mentioned_example_com, ap_mentioned_example_org].map(&:preferred_inbox_url)) + def follower_inbox_urls + [ap_follower_example_com, ap_follower_example_org, ap_follower_with_shared] + .map(&:preferred_inbox_url) end - it 'does not include the inbox of unrelated users' do - expect(described_class.new(account).inboxes).to_not include(unrelated_account.preferred_inbox_url) + def mentioned_account_inbox_urls + [ap_mentioned_with_shared, ap_mentioned_example_com, ap_mentioned_example_org] + .map(&:preferred_inbox_url) end end end From 227d46883f59dbf3aeef7cbe63cf0909dc74c160 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Tue, 15 Oct 2024 14:26:20 +0100 Subject: [PATCH 167/550] Translate to regional language variant (e.g. pt-BR) (#32428) --- .../api/v1/statuses/translations_controller.rb | 2 +- app/services/translate_status_service.rb | 10 ++++++++-- spec/services/translate_status_service_spec.rb | 13 ++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/v1/statuses/translations_controller.rb b/app/controllers/api/v1/statuses/translations_controller.rb index 8cf495f78a..bd5cd9bb07 100644 --- a/app/controllers/api/v1/statuses/translations_controller.rb +++ b/app/controllers/api/v1/statuses/translations_controller.rb @@ -23,6 +23,6 @@ class Api::V1::Statuses::TranslationsController < Api::V1::Statuses::BaseControl private def set_translation - @translation = TranslateStatusService.new.call(@status, content_locale) + @translation = TranslateStatusService.new.call(@status, I18n.locale.to_s) end end diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb index e2e076e21b..bcd4703beb 100644 --- a/app/services/translate_status_service.rb +++ b/app/services/translate_status_service.rb @@ -9,6 +9,8 @@ class TranslateStatusService < BaseService def call(status, target_language) @status = status @source_texts = source_texts + + target_language = target_language.split(/[_-]/).first unless target_languages.include?(target_language) @target_language = target_language raise Mastodon::NotPermittedError unless permitted? @@ -32,11 +34,15 @@ class TranslateStatusService < BaseService def permitted? return false unless @status.distributable? && TranslationService.configured? - languages[@status.language]&.include?(@target_language) + target_languages.include?(@target_language) end def languages - Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages } + Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { translation_backend.languages } + end + + def target_languages + languages[@status.language] || [] end def content_hash diff --git a/spec/services/translate_status_service_spec.rb b/spec/services/translate_status_service_spec.rb index cd92fb8d10..ac7a43ff2a 100644 --- a/spec/services/translate_status_service_spec.rb +++ b/spec/services/translate_status_service_spec.rb @@ -18,7 +18,7 @@ RSpec.describe TranslateStatusService do describe '#call' do before do translation_service = TranslationService.new - allow(translation_service).to receive(:languages).and_return({ 'en' => ['es'] }) + allow(translation_service).to receive(:languages).and_return({ 'en' => ['es', 'es-MX'] }) allow(translation_service).to receive(:translate) do |texts| texts.map do |text| TranslationService::Translation.new( @@ -37,6 +37,7 @@ RSpec.describe TranslateStatusService do .to have_attributes( content: '

Hola

', detected_source_language: 'en', + language: 'es', provider: 'Dummy', status: status ) @@ -101,6 +102,16 @@ RSpec.describe TranslateStatusService do expect(media_attachment.description).to eq 'Hola & :highfive:' end end + + describe 'target language is regional' do + it 'uses regional variant' do + expect(service.call(status, 'es-MX').language).to eq 'es-MX' + end + + it 'uses parent locale for unsupported regional variant' do + expect(service.call(status, 'es-XX').language).to eq 'es' + end + end end describe '#source_texts' do From bfb41e61a34ad7d1f245e69131332cdb5542af26 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:30:17 -0400 Subject: [PATCH 168/550] Expand coverage for `Block` model (#32480) --- spec/models/block_spec.rb | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb index 84f0f318f4..62d7e40e28 100644 --- a/spec/models/block_spec.rb +++ b/spec/models/block_spec.rb @@ -3,11 +3,37 @@ require 'rails_helper' RSpec.describe Block do - describe 'validations' do + describe 'Associations' do it { is_expected.to belong_to(:account).required } it { is_expected.to belong_to(:target_account).required } end + describe '#local?' do + it { is_expected.to_not be_local } + end + + describe 'Callbacks' do + describe 'Setting a URI' do + context 'when URI exists' do + subject { Fabricate.build :block, uri: 'https://uri/value' } + + it 'does not change' do + expect { subject.save } + .to not_change(subject, :uri) + end + end + + context 'when URI is blank' do + subject { Fabricate.build :follow, uri: nil } + + it 'populates the value' do + expect { subject.save } + .to change(subject, :uri).to(be_present) + end + end + end + end + it 'removes blocking cache after creation' do account = Fabricate(:account) target_account = Fabricate(:account) From c19397b94aed94340dd179f1b659b3e2b9205c10 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 15:38:02 +0200 Subject: [PATCH 169/550] Update formatjs monorepo (#32304) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 272 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 171 insertions(+), 101 deletions(-) diff --git a/yarn.lock b/yarn.lock index fe975f3a75..7afd8827e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -59,9 +59,9 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.10.4, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4": - version: 7.25.7 - resolution: "@babel/core@npm:7.25.7" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0": + version: 7.25.8 + resolution: "@babel/core@npm:7.25.8" dependencies: "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.25.7" @@ -69,16 +69,16 @@ __metadata: "@babel/helper-compilation-targets": "npm:^7.25.7" "@babel/helper-module-transforms": "npm:^7.25.7" "@babel/helpers": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.8" "@babel/template": "npm:^7.25.7" "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" + "@babel/types": "npm:^7.25.8" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/dad20af39624086afc3a0910bd97ae712c9ad0e9dda09fc5da93876e8ea1802b63ddd81c44f4aa8a9834db46de801eaab1ce9b81ab54b4fe907ae052c24de136 + checksum: 10c0/8411ea506e6f7c8a39ab5c1524b00589fa3b087edb47389708f7fe07170929192171734666e3ea10b95a951643a531a6d09eedfe071572c9ea28516646265086 languageName: node linkType: hard @@ -224,7 +224,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.0, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.25.7 resolution: "@babel/helper-plugin-utils@npm:7.25.7" checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf @@ -331,14 +331,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/parser@npm:7.25.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/parser@npm:7.25.8" dependencies: - "@babel/types": "npm:^7.25.7" + "@babel/types": "npm:^7.25.8" bin: parser: ./bin/babel-parser.js - checksum: 10c0/b771469bb6b636c18a8d642b9df3c73913c3860a979591e1a29a98659efd38b81d3e393047b5251fe382d4c82c681c12da9ce91c98d69316d2604d155a214bcf + checksum: 10c0/a1a13845b7e8dda4c970791814a4bbf60004969882f18f470e260ad822d2e1f8941948f851e9335895563610f240fa6c98481ce8019865e469502bbf21daafa4 languageName: node linkType: hard @@ -520,7 +520,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:7, @babel/plugin-syntax-jsx@npm:^7.25.7, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.25.0, @babel/plugin-syntax-jsx@npm:^7.25.7, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.25.7 resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" dependencies: @@ -1500,7 +1500,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:7, @babel/traverse@npm:^7.25.7": +"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.7": version: 7.25.7 resolution: "@babel/traverse@npm:7.25.7" dependencies: @@ -1515,14 +1515,14 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.25.7 - resolution: "@babel/types@npm:7.25.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.25.8 + resolution: "@babel/types@npm:7.25.8" dependencies: "@babel/helper-string-parser": "npm:^7.25.7" "@babel/helper-validator-identifier": "npm:^7.25.7" to-fast-properties: "npm:^2.0.0" - checksum: 10c0/e03e1e2e08600fa1e8eb90632ac9c253dd748176c8d670d85f85b0dc83a0573b26ae748a1cbcb81f401903a3d95f43c3f4f8d516a5ed779929db27de56289633 + checksum: 10c0/55ca2d6df6426c98db2769ce884ce5e9de83a512ea2dd7bcf56c811984dc14351cacf42932a723630c5afcff2455809323decd645820762182f10b7b5252b59f languageName: node linkType: hard @@ -2311,12 +2311,34 @@ __metadata: languageName: node linkType: hard -"@formatjs/fast-memoize@npm:2.2.0": +"@formatjs/ecma402-abstract@npm:2.2.0": version: 2.2.0 - resolution: "@formatjs/fast-memoize@npm:2.2.0" + resolution: "@formatjs/ecma402-abstract@npm:2.2.0" dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/ae88c5a93b96235aba4bd9b947d0310d2ec013687a99133413361b24122b5cdea8c9bf2e04a4a2a8b61f1f4ee5419ef6416ca4796554226b5050e05a9ce6ef49 + "@formatjs/fast-memoize": "npm:2.2.1" + "@formatjs/intl-localematcher": "npm:0.5.5" + tslib: "npm:^2.7.0" + checksum: 10c0/3f8e5c1680ab3babf44a6324ae36d6355674562df61e0f0ce3bcec35c3b31d77f9c3b28596af79a9f52641aee834a11673dc4cf30093bbf27c4a96e18c8cc74b + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.1": + version: 2.2.1 + resolution: "@formatjs/fast-memoize@npm:2.2.1" + dependencies: + tslib: "npm:^2.7.0" + checksum: 10c0/cb8cbf1aba907d395d1fe405f67a8da26686b2fc26eefde7541d49d748d2d9b939f2bc428b7d40d2c31366a6ce42cf16724c966965701186986c5882fdba3c8b + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.7.10": + version: 2.7.10 + resolution: "@formatjs/icu-messageformat-parser@npm:2.7.10" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/icu-skeleton-parser": "npm:1.8.4" + tslib: "npm:^2.7.0" + checksum: 10c0/7f2b9bb31c64d2b45584a77e2e6a7c4185f247eea22c0d8e2257ac95feff36894a0936d31778d17874cd249c39058fcb894c27e13a6cadb056996e7232957655 languageName: node linkType: hard @@ -2341,25 +2363,35 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.6.8": - version: 6.6.8 - resolution: "@formatjs/intl-displaynames@npm:6.6.8" +"@formatjs/icu-skeleton-parser@npm:1.8.4": + version: 1.8.4 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.4" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/intl-localematcher": "npm:0.5.4" - tslib: "npm:^2.4.0" - checksum: 10c0/1a03e7644022741c1bcf10fcd07da88c434416a13603ace693a038114010463307b4130d3a3f53ad5665bd27fca9a6b19ac8e5bf58e17598b1ea84db173fdfbb + "@formatjs/ecma402-abstract": "npm:2.2.0" + tslib: "npm:^2.7.0" + checksum: 10c0/a6cd90e89b994e6fa2b66f83a80250d17fdddaeb755cd1f38be1d51a737a6f8a9b123912943d3dcad278833e3a04683a9081b187300f1a481791527954e63e82 languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.5.7": - version: 7.5.7 - resolution: "@formatjs/intl-listformat@npm:7.5.7" +"@formatjs/intl-displaynames@npm:6.6.10": + version: 6.6.10 + resolution: "@formatjs/intl-displaynames@npm:6.6.10" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/intl-localematcher": "npm:0.5.4" - tslib: "npm:^2.4.0" - checksum: 10c0/5d0478752d669d87c82aa80880df464d64a1c8974fcb6136bc854567f570a1696e5468005ffa266cfcb623adb7c7299b839c06ea33897f55d35dab6a7575cc84 + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/intl-localematcher": "npm:0.5.5" + tslib: "npm:^2.7.0" + checksum: 10c0/e4158f67fc0d6c2345d05b85183aef480fc86c68b60643abdd143ddc66a2203acfcf1b3dc4619658479e54c971c878a2548db34e08f3b035348686f088bf03c4 + languageName: node + linkType: hard + +"@formatjs/intl-listformat@npm:7.5.9": + version: 7.5.9 + resolution: "@formatjs/intl-listformat@npm:7.5.9" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/intl-localematcher": "npm:0.5.5" + tslib: "npm:^2.7.0" + checksum: 10c0/b5041de4d6e011f36ba4b54406aae9aef763f8bc8b22364bdc8447d0b8b3e553111d117b02f801c31f2ab2c0d3abc086bd90db1b83c000babb99316cd15be5e2 languageName: node linkType: hard @@ -2372,34 +2404,43 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-pluralrules@npm:^5.2.2": - version: 5.2.14 - resolution: "@formatjs/intl-pluralrules@npm:5.2.14" +"@formatjs/intl-localematcher@npm:0.5.5": + version: 0.5.5 + resolution: "@formatjs/intl-localematcher@npm:0.5.5" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/intl-localematcher": "npm:0.5.4" - tslib: "npm:^2.4.0" - checksum: 10c0/3c00109c8d4c8b221c2b9af38a38d31cd6293a0a412a1f2cdae2b8ef81bd71626c9ff4a647389682cb27ae5c223bd6f64ef54d03e3f6f19c372e0c6194b76b38 + tslib: "npm:^2.7.0" + checksum: 10c0/a6bf466bae29ca838ab06ffa2ce2cc9d5dd98e096ec73986b45ca4354b6adc0ca9078d9fd3aa30dbf27677940cfb3fb050ca0bce3018cd6f3f4d7e4bdad91035 languageName: node linkType: hard -"@formatjs/intl@npm:2.10.5": - version: 2.10.5 - resolution: "@formatjs/intl@npm:2.10.5" +"@formatjs/intl-pluralrules@npm:^5.2.2": + version: 5.2.16 + resolution: "@formatjs/intl-pluralrules@npm:5.2.16" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/fast-memoize": "npm:2.2.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - "@formatjs/intl-displaynames": "npm:6.6.8" - "@formatjs/intl-listformat": "npm:7.5.7" - intl-messageformat: "npm:10.5.14" - tslib: "npm:^2.4.0" + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/intl-localematcher": "npm:0.5.5" + tslib: "npm:^2.7.0" + checksum: 10c0/2250a96a74a153a5f1e771233c366c42005efd71ac5ff665891a308ce78a68f85709f8c892d28a1e334f974252bfb3407f6a64da616c3adbeb158310ef73d71b + languageName: node + linkType: hard + +"@formatjs/intl@npm:2.10.8": + version: 2.10.8 + resolution: "@formatjs/intl@npm:2.10.8" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/fast-memoize": "npm:2.2.1" + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@formatjs/intl-displaynames": "npm:6.6.10" + "@formatjs/intl-listformat": "npm:7.5.9" + intl-messageformat: "npm:10.7.0" + tslib: "npm:^2.7.0" peerDependencies: typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/d00ef00e41200947ed22895b73a0863283de4762ec238b4a81e2252e642e30a309cd9c73174e4917b6c675ab6f148eda5a4e3345c3caeef64e090fc8374d27c4 + checksum: 10c0/e35a4421f445ef4f7ce362144dde143ad895391b03380fbf896fe261a445fa6b5d886989e07bf9b49e52e83f0a3f9b667cfecbc2684a9ea898c6d25daf07b392 languageName: node linkType: hard @@ -2423,6 +2464,26 @@ __metadata: languageName: node linkType: hard +"@formatjs/ts-transformer@npm:3.13.16": + version: 3.13.16 + resolution: "@formatjs/ts-transformer@npm:3.13.16" + dependencies: + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@types/json-stable-stringify": "npm:^1.0.32" + "@types/node": "npm:14 || 16 || 17 || 18" + chalk: "npm:^4.0.0" + json-stable-stringify: "npm:^1.0.1" + tslib: "npm:^2.7.0" + typescript: "npm:5" + peerDependencies: + ts-jest: ">=27" + peerDependenciesMeta: + ts-jest: + optional: true + checksum: 10c0/de03e8bc8c730f2e122970d5843762e0c5183181ba58c9759db2f1ed45fcbfbb8046dbb3318f906574f89026481b9205f5bd6fbf3f410a5e5e1754f575baa489 + languageName: node + linkType: hard + "@gamestdio/websocket@npm:^0.3.2": version: 0.3.2 resolution: "@gamestdio/websocket@npm:0.3.2" @@ -3490,7 +3551,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:*, @types/babel__core@npm:^7.1.12, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7, @types/babel__core@npm:^7.20.1": +"@types/babel__core@npm:*, @types/babel__core@npm:^7.1.12, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.1, @types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -3512,12 +3573,12 @@ __metadata: languageName: node linkType: hard -"@types/babel__helper-plugin-utils@npm:^7.10.0": - version: 7.10.2 - resolution: "@types/babel__helper-plugin-utils@npm:7.10.2" +"@types/babel__helper-plugin-utils@npm:^7.10.3": + version: 7.10.3 + resolution: "@types/babel__helper-plugin-utils@npm:7.10.3" dependencies: "@types/babel__core": "npm:*" - checksum: 10c0/1c544e33b30ccfc02254b9fe090c52880c8bb05e5406f525bfdce71ce34e93677276f788b93e9fa5e1a16f6317b97e59a07d8a92bf4726d8f4639a0045ebb590 + checksum: 10c0/c22f68e8019c1e75e42fccc6eaca94a269fa177c4544599aa084b216b879b626f63f89755a4ac2dc9054b6e9ed4e0fab1e3460d36ce20767c99aef4a3c81fce3 languageName: node linkType: hard @@ -3531,12 +3592,12 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.1.7": - version: 7.20.3 - resolution: "@types/babel__traverse@npm:7.20.3" +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.20.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" dependencies: "@babel/types": "npm:^7.20.7" - checksum: 10c0/295ed9b837e62e17ee43be0df45d90fff5208986bd43af593c9020d152d3b2c55328e038c2f8585926b63cc22f887f28bf3f4c805aa881e2dd0bdd5ead92ece0 + checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 languageName: node linkType: hard @@ -3809,6 +3870,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:14 || 16 || 17 || 18": + version: 18.19.55 + resolution: "@types/node@npm:18.19.55" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/19ffeca0086b45cba08d4585623cd0d80fbacb659debde82a4baa008fc0c25ba6c21cd721f3a9f0be74f70940694b00458cac61c89f8b2a1e55ca4322a9aad2b + languageName: node + linkType: hard + "@types/object-assign@npm:^4.0.30": version: 4.0.33 resolution: "@types/object-assign@npm:4.0.33" @@ -3986,13 +4056,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7": - version: 18.3.10 - resolution: "@types/react@npm:18.3.10" +"@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7, @types/react@npm:^18.3.11": + version: 18.3.11 + resolution: "@types/react@npm:18.3.11" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/f5be1de1b0331c1fdb33d577f4cf7f1b949d4bded5347b2351a537f03c51dade5be115e21b161dcf1b37061954d320f6a0bdf8d7b70e24eda51071fdd614383d + checksum: 10c0/ce80512246ca5bda69db85b9f4f1835189334acfb6b2c4f3eda8cabff1ff1a3ea9ce4f3b895bdbc18c94140aa45592331aa3fdeb557f525c1b048de7ce84fc0e languageName: node linkType: hard @@ -5240,21 +5310,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.16 - resolution: "babel-plugin-formatjs@npm:10.5.16" + version: 10.5.18 + resolution: "babel-plugin-formatjs@npm:10.5.18" dependencies: - "@babel/core": "npm:^7.10.4" - "@babel/helper-plugin-utils": "npm:^7.10.4" - "@babel/plugin-syntax-jsx": "npm:7" - "@babel/traverse": "npm:7" - "@babel/types": "npm:^7.12.11" - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - "@formatjs/ts-transformer": "npm:3.13.14" - "@types/babel__core": "npm:^7.1.7" - "@types/babel__helper-plugin-utils": "npm:^7.10.0" - "@types/babel__traverse": "npm:^7.1.7" - tslib: "npm:^2.4.0" - checksum: 10c0/03d9d2b0b9cdc05c011bfb417a43e5c0f557868ed84d83acbc3cb9072b7fa98f5219473d0bd61f02741c151d6f2162da363bd337522c80af14721ae37f6da86b + "@babel/core": "npm:^7.25.0" + "@babel/helper-plugin-utils": "npm:^7.25.0" + "@babel/plugin-syntax-jsx": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@formatjs/ts-transformer": "npm:3.13.16" + "@types/babel__core": "npm:^7.20.5" + "@types/babel__helper-plugin-utils": "npm:^7.10.3" + "@types/babel__traverse": "npm:^7.20.6" + tslib: "npm:^2.7.0" + checksum: 10c0/3e7753cb1837ea300f7b0d574751758330f4fe56e4f686a1ceb7acc612c0ac1353ed2a918b5af6e4dcaf579c623d56f714159a265d64b71897471a69f15910b8 languageName: node linkType: hard @@ -9843,15 +9913,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.5.14, intl-messageformat@npm:^10.3.5": - version: 10.5.14 - resolution: "intl-messageformat@npm:10.5.14" +"intl-messageformat@npm:10.7.0, intl-messageformat@npm:^10.3.5": + version: 10.7.0 + resolution: "intl-messageformat@npm:10.7.0" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/fast-memoize": "npm:2.2.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - tslib: "npm:^2.4.0" - checksum: 10c0/8ec0a60539f67039356e211bcc8d81cf1bd9d62190a72ab0e94504da92f0242fe2f94ffb512b97cc6f63782b7891874d4038536ce04631e59d762c3441c60b4b + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/fast-memoize": "npm:2.2.1" + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + tslib: "npm:^2.7.0" + checksum: 10c0/772469599fa8ab43dc933d03c75c6290220565c97afdc60cb67d036f2c51f1b3a825b2345933ee7616ecdf018b95ea7704f5ec80ded5a8efc2ce7f4b2962cae3 languageName: node linkType: hard @@ -14573,26 +14643,26 @@ __metadata: linkType: hard "react-intl@npm:^6.4.2": - version: 6.7.0 - resolution: "react-intl@npm:6.7.0" + version: 6.8.0 + resolution: "react-intl@npm:6.8.0" dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - "@formatjs/intl": "npm:2.10.5" - "@formatjs/intl-displaynames": "npm:6.6.8" - "@formatjs/intl-listformat": "npm:7.5.7" + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@formatjs/intl": "npm:2.10.8" + "@formatjs/intl-displaynames": "npm:6.6.10" + "@formatjs/intl-listformat": "npm:7.5.9" "@types/hoist-non-react-statics": "npm:^3.3.1" - "@types/react": "npm:16 || 17 || 18" + "@types/react": "npm:^18.3.11" hoist-non-react-statics: "npm:^3.3.2" - intl-messageformat: "npm:10.5.14" - tslib: "npm:^2.4.0" + intl-messageformat: "npm:10.7.0" + tslib: "npm:^2.7.0" peerDependencies: react: ^16.6.0 || 17 || 18 typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/210088bf0e934ad5f09d8e7c6d7d72682bb806583645fb333d4efd8ae55585b675ea8e47bb240140d5143ca15ecc0457c3ddc3e8ca45e9b576bce1fa2f9886b3 + checksum: 10c0/e110d8cbfc227cbed3b72b162fe8a75e824aef47eeb5a7879a5a2d9fa5dd35d2d25149ef57460fa06bca7ae106184c729e410c22bcdb349d29bb1ee35f3c5cf0 languageName: node linkType: hard @@ -17275,7 +17345,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2": +"tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.7.0": version: 2.7.0 resolution: "tslib@npm:2.7.0" checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 From c772b41c36ed9adc5650f9ce18047104e5aae444 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:38:48 +0000 Subject: [PATCH 170/550] Update dependency react-textarea-autosize to v8.5.4 (#32401) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7afd8827e4..8be263d1a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14928,15 +14928,15 @@ __metadata: linkType: hard "react-textarea-autosize@npm:^8.4.1": - version: 8.5.3 - resolution: "react-textarea-autosize@npm:8.5.3" + version: 8.5.4 + resolution: "react-textarea-autosize@npm:8.5.4" dependencies: "@babel/runtime": "npm:^7.20.13" use-composed-ref: "npm:^1.3.0" use-latest: "npm:^1.2.1" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/33d38a6d96cf584842695b50c341980944ece23a42155bf0bd1958f02396adb185c7720b88678dc677817fe111783059c0ebcdf7761644006892583b10e258ee + checksum: 10c0/ea92fda2128983c1a8e84c74706ffb4b8bfa1a19c803d210868ec031c1ac3b8ceee8028766ef5d91017265da2bdccf6a85e5b6e5d553005e839f0c47e5758b43 languageName: node linkType: hard From 27f05e9016294f18c4aa2999288884cc6e42d735 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:43:08 -0400 Subject: [PATCH 171/550] Expand coverage for `User#token_for_app` (#32434) --- spec/models/user_spec.rb | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index d28e6658f1..4393be5a4e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -387,23 +387,43 @@ RSpec.describe User do end end - describe 'token_for_app' do + describe '#token_for_app' do let(:user) { Fabricate(:user) } - let(:app) { Fabricate(:application, owner: user) } - it 'returns a token' do - expect(user.token_for_app(app)).to be_a(Doorkeeper::AccessToken) + context 'when user owns app but does not have tokens' do + let(:app) { Fabricate(:application, owner: user) } + + it 'creates and returns a persisted token' do + expect { user.token_for_app(app) } + .to change(Doorkeeper::AccessToken.where(resource_owner_id: user.id, application: app), :count).by(1) + end end - it 'persists a token' do - t = user.token_for_app(app) - expect(user.token_for_app(app)).to eql(t) + context 'when user owns app and already has tokens' do + let(:app) { Fabricate(:application, owner: user) } + let!(:token) { Fabricate :access_token, application: app, resource_owner_id: user.id } + + it 'returns a persisted token' do + expect(user.token_for_app(app)) + .to be_a(Doorkeeper::AccessToken) + .and eq(token) + end end - it 'is nil if user does not own app' do - app.update!(owner: nil) + context 'when user does not own app' do + let(:app) { Fabricate(:application) } - expect(user.token_for_app(app)).to be_nil + it 'returns nil' do + expect(user.token_for_app(app)) + .to be_nil + end + end + + context 'when app is nil' do + it 'returns nil' do + expect(user.token_for_app(nil)) + .to be_nil + end end end From e9b27852bea0472c9736f48604cba0ad46cc372a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:51:52 -0400 Subject: [PATCH 172/550] Reduce factory creation (14 -> 8) in `ActivityPub::Activity::Block` spec (#32488) --- spec/lib/activitypub/activity/block_spec.rb | 128 ++++++++------------ 1 file changed, 51 insertions(+), 77 deletions(-) diff --git a/spec/lib/activitypub/activity/block_spec.rb b/spec/lib/activitypub/activity/block_spec.rb index 6f68984018..385628852b 100644 --- a/spec/lib/activitypub/activity/block_spec.rb +++ b/spec/lib/activitypub/activity/block_spec.rb @@ -3,6 +3,8 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Block do + subject { described_class.new(json, sender) } + let(:sender) { Fabricate(:account) } let(:recipient) { Fabricate(:account) } @@ -16,93 +18,65 @@ RSpec.describe ActivityPub::Activity::Block do }.with_indifferent_access end - context 'when the recipient does not follow the sender' do - describe '#perform' do - subject { described_class.new(json, sender) } - - before do - subject.perform - end - + describe '#perform' do + context 'when the recipient does not follow the sender' do it 'creates a block from sender to recipient' do - expect(sender.blocking?(recipient)).to be true + subject.perform + + expect(sender) + .to be_blocking(recipient) end end - end - context 'when the recipient is already blocked' do - before do - sender.block!(recipient, uri: 'old') + context 'when the recipient is already blocked' do + before { sender.block!(recipient, uri: 'old') } + + it 'creates a block from sender to recipient and sets uri to last received block activity' do + subject.perform + + expect(sender) + .to be_blocking(recipient) + expect(sender.block_relationships.find_by(target_account: recipient).uri) + .to eq 'foo' + end end - describe '#perform' do - subject { described_class.new(json, sender) } + context 'when the recipient follows the sender' do + before { recipient.follow!(sender) } + + it 'creates a block from sender to recipient and ensures recipient not following sender' do + subject.perform + + expect(sender) + .to be_blocking(recipient) + expect(recipient) + .to_not be_following(sender) + end + end + + context 'when a matching undo has been received first' do + let(:undo_json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'bar', + type: 'Undo', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: json, + }.with_indifferent_access + end before do + recipient.follow!(sender) + ActivityPub::Activity::Undo.new(undo_json, sender).perform + end + + it 'does not create a block from sender to recipient and ensures recipient not following sender' do subject.perform - end - it 'creates a block from sender to recipient' do - expect(sender.blocking?(recipient)).to be true - end - - it 'sets the uri to that of last received block activity' do - expect(sender.block_relationships.find_by(target_account: recipient).uri).to eq 'foo' - end - end - end - - context 'when the recipient follows the sender' do - before do - recipient.follow!(sender) - end - - describe '#perform' do - subject { described_class.new(json, sender) } - - before do - subject.perform - end - - it 'creates a block from sender to recipient' do - expect(sender.blocking?(recipient)).to be true - end - - it 'ensures recipient is not following sender' do - expect(recipient.following?(sender)).to be false - end - end - end - - context 'when a matching undo has been received first' do - let(:undo_json) do - { - '@context': 'https://www.w3.org/ns/activitystreams', - id: 'bar', - type: 'Undo', - actor: ActivityPub::TagManager.instance.uri_for(sender), - object: json, - }.with_indifferent_access - end - - before do - recipient.follow!(sender) - ActivityPub::Activity::Undo.new(undo_json, sender).perform - end - - describe '#perform' do - subject { described_class.new(json, sender) } - - before do - subject.perform - end - - it 'does not create a block from sender to recipient' do - expect(sender.blocking?(recipient)).to be false - end - - it 'ensures recipient is not following sender' do - expect(recipient.following?(sender)).to be false + expect(sender) + .to_not be_blocking(recipient) + expect(recipient) + .to_not be_following(sender) end end end From 0e58dc90d967746d551d360dd56cb0f533090253 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:56:29 -0400 Subject: [PATCH 173/550] Use array compact style for classes in `nothing_here` helper (#32403) --- app/helpers/statuses_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index bba6d64a47..9bbb03fd82 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -12,7 +12,7 @@ module StatusesHelper }.freeze def nothing_here(extra_classes = '') - content_tag(:div, class: "nothing-here #{extra_classes}") do + tag.div(class: ['nothing-here', extra_classes]) do t('accounts.nothing_here') end end From 92c886045179f470dbba196e653d019acfdc899a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:58:33 +0000 Subject: [PATCH 174/550] Update babel monorepo to v7.25.8 (#32391) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 219 ++++++++++++++++++------------------------------------ 1 file changed, 74 insertions(+), 145 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8be263d1a3..626b7bae21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,10 +52,10 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/compat-data@npm:7.25.7" - checksum: 10c0/e5cc915abdd18d021236474a96606b2d4a915c4fb620c1ad776b8a08d91111e788cb3b7e9bad43593d4e0bfa4f06894357bcb0984102de1861b9e7322b6bc9f8 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7, @babel/compat-data@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/compat-data@npm:7.25.8" + checksum: 10c0/8b81c17580e5fb4cbb6a3c52079f8c283fc59c0c6bd2fe14cfcf9c44b32d2eaab71b02c5633e2c679f5896f73f8ac4036ba2e67a4c806e8f428e4b11f526d7f4 languageName: node linkType: hard @@ -224,7 +224,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.0, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.0, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.25.7 resolution: "@babel/helper-plugin-utils@npm:7.25.7" checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf @@ -432,7 +432,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -443,39 +443,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 - languageName: node - linkType: hard - "@babel/plugin-syntax-import-assertions@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" @@ -498,7 +465,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -531,7 +498,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -553,7 +520,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -597,18 +564,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": +"@babel/plugin-syntax-top-level-await@npm:^7.8.3": version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: @@ -653,17 +609,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.7" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/helper-remap-async-to-generator": "npm:^7.25.7" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/traverse": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/dcdd17d8cafafe0eb2edd0a46a7abe86c72235c957c8eb1157ccadb2b199572d5d1aa36a2d3bce5cb99990f7d3c6290ecf09959c62f3081c4df9ff717a1c84a4 + checksum: 10c0/1698d0757d3dc895047120346cdbe6d539dae4a7bb930caf958c3623e89c850d378d1ebd971a1a8b4cba39c8f001cd9c25a1d6f430099022ab1e87aeddb5dd88 languageName: node linkType: hard @@ -714,16 +669,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7" +"@babel/plugin-transform-class-static-block@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-class-static-block@npm:7.25.8" dependencies: "@babel/helper-create-class-features-plugin": "npm:^7.25.7" "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/cbb4b46cbd8ad10106eb2bedb5a0665661a1d1d5b6f3ab565ff454b802dab4718e02b25670fe0d40835494aedb3dc26757c06cc4da6ff3e80291c5f882269bd3 + checksum: 10c0/4f37853aef6920875022bbb2d7c6523218d9d718291464e2cacd9cc6f2c22d86a69948d8ea38f9248843bbfe9343f3fd18cf16b1615560124198bf999e3ba612 languageName: node linkType: hard @@ -801,15 +755,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7" +"@babel/plugin-transform-dynamic-import@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c733252ff20a32d9747dd081916270f5a073856597e849a5f458b12f4354499b18714f5e7049e341432851d9975077cb37effcd276c7f816faa6f5ff708dc5e1 + checksum: 10c0/9726abc1b07771a9c1e3670908ac425d21e29f54c775d10ed7a4e2bc0a18e07600f70bbc531deba3fb3ff7f6763c189200593264c6f784dac583e653b66fe754 languageName: node linkType: hard @@ -825,15 +778,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7" +"@babel/plugin-transform-export-namespace-from@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ef61fc5d54c9c8b075cbd9db62beaf295e38e08a1edb1882995105d3e959763be1631f7d7f7cb7461b702ebd0b4a601f2eb2cd6521acaf061310a3a3305fa756 + checksum: 10c0/8a2e1205dd727a96a9adef0e981d68c61b1c286480b9136e2aa67ce3e2c742be4f87feb9fb4c5548a401aba0953d43d66e9ec36a54dea6a7c15f1ee9345baf57 languageName: node linkType: hard @@ -862,15 +814,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-json-strings@npm:7.25.7" +"@babel/plugin-transform-json-strings@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/aa6e5f65c8a5f2459d7daa9b5b4ff97ff43bab21f4a8513ed84d35300b0323ec542dc101c5f11622e442dfc93b3a229c7f41ebc7645370dfec6d066bda800a0b + checksum: 10c0/2a6cf69ebe8deebc39c56adae75d609e16786dc4cbd83577eefdc838bd89ca8974671d47e2669b8e65ef9b7ace427f7c2c5a9fc6aa09247b10e141d15fee81cf languageName: node linkType: hard @@ -885,15 +836,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.7" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d610a8a2c1be83e03cce2256f29519e705dc68289c09d67f1f362d1fd80f4b36eaf2affc05710abb53a272895041e24d9e95ec73a516a23a67cb907023fbe37b + checksum: 10c0/9adc2634c94b283b682fbf71bbec553bd8448196213491a0ef9ea167993c9c36dcb2fbefbd834e113cfed843a67290131bc99e463f8702043c3f4e3a99bb807e languageName: node linkType: hard @@ -982,41 +932,38 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.7" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b35a96a79ef4895b00e4f758d3185cb17e4fbfada311894ad5f0988a55fc2c21820dc789b26a3cb8fbd620434faa516e52acb6e2da105c2edbd29de8b6b0facf + checksum: 10c0/3cb7c44cffccae42e104755acb31b4f00bc27d8c88102ae6f30dca508832f98fa5b746bead0fc7c0c6ddcf83f336829be4b64245c6c7ce26b3ef591937ec54a4 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.7" +"@babel/plugin-transform-numeric-separator@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c028ae89e6b4e1d757f8f1ebcb3b420e6559bb35002728f6f5651d5f669fbf73764adf6e3597908fa12adf8dbae683e5f74b3a7f68e8774a9663c18c0f999539 + checksum: 10c0/d23b3ebc50513f24510791ac2cad43e3c6ea08579f54dccfd4ed5e5d5084f02da0576ea42ea999fb51e1f94f42857cac96a1a29ac6728fc262fbe87ec966dc18 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.7" +"@babel/plugin-transform-object-rest-spread@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.8" dependencies: "@babel/helper-compilation-targets": "npm:^7.25.7" "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" "@babel/plugin-transform-parameters": "npm:^7.25.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e8b978d9d1020452da0d5d92f80fe57e302761dac20137bb8bf863478a4779fcd63d314db89e796125d9d76da2a38f64f012d6e0c4913815951b3eb3fba2feb6 + checksum: 10c0/058d5f5bb61068997fb78855011dd175d441da84717640852bbfd12a5919acf8d8c5a14c1debfe87d230f3f4c47c22fcad3d7fa1acd72e5e48b2fff93b6c1dd9 languageName: node linkType: hard @@ -1032,28 +979,26 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.7" +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bb609e5103780be0825a255ffe1fefbb5335aead88a46eecc2257053279ea2c45ff66b0ef1fb54302c8c8c57146e88e52f3ecb62b4c6f619218d7b3843b352d9 + checksum: 10c0/f4360e62ca4aa998db31548d0ef06836d958bcb29dee58f5c62d0c29b6b2bff1b54871195bd032825fe3dd79a4fd8275e165148c8d4b57694bcf72135c8f7d24 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.7" +"@babel/plugin-transform-optional-chaining@npm:^7.25.7, @babel/plugin-transform-optional-chaining@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.8" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/887441ada6c2bc1b789984b7531d9bc585f335ece99642886d3d9fd8aee7e6b8d4f7ca61d76b5f23477f3aa607284d5056eadaa1eb17e7b39af6b0e834cbe878 + checksum: 10c0/a1cdbfc249619fa6b37e57f81600701281629d86a57e616b0c2b29816d0c43114a2296ce089564afd3aa7870c8aad62e907658ffef2c110662af14ee23d5247f languageName: node linkType: hard @@ -1080,17 +1025,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.7" +"@babel/plugin-transform-private-property-in-object@npm:^7.25.8": + version: 7.25.8 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.8" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.25.7" "@babel/helper-create-class-features-plugin": "npm:^7.25.7" "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5ad8832ba54e2079c1f558b8680e170265e3f376424e5fbb75b17b7f08696fb0af6c96d23d92f7df3dcc559f5971a02587281fcec38a853174aa95478565f5fc + checksum: 10c0/61b5e3a4eb94caf38d6e9ff7bff1ac8927758141aaa4891036d3490866ecee53beaefd7893519fec42a4c55f33374a17fc0e49694cdaf95668082073f0fe4a79 languageName: node linkType: hard @@ -1335,10 +1279,10 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4": - version: 7.25.7 - resolution: "@babel/preset-env@npm:7.25.7" + version: 7.25.8 + resolution: "@babel/preset-env@npm:7.25.8" dependencies: - "@babel/compat-data": "npm:^7.25.7" + "@babel/compat-data": "npm:^7.25.8" "@babel/helper-compilation-targets": "npm:^7.25.7" "@babel/helper-plugin-utils": "npm:^7.25.7" "@babel/helper-validator-option": "npm:^7.25.7" @@ -1348,45 +1292,30 @@ __metadata: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.7" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.7" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" "@babel/plugin-syntax-import-assertions": "npm:^7.25.7" "@babel/plugin-syntax-import-attributes": "npm:^7.25.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.25.7" - "@babel/plugin-transform-async-generator-functions": "npm:^7.25.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.8" "@babel/plugin-transform-async-to-generator": "npm:^7.25.7" "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.7" "@babel/plugin-transform-block-scoping": "npm:^7.25.7" "@babel/plugin-transform-class-properties": "npm:^7.25.7" - "@babel/plugin-transform-class-static-block": "npm:^7.25.7" + "@babel/plugin-transform-class-static-block": "npm:^7.25.8" "@babel/plugin-transform-classes": "npm:^7.25.7" "@babel/plugin-transform-computed-properties": "npm:^7.25.7" "@babel/plugin-transform-destructuring": "npm:^7.25.7" "@babel/plugin-transform-dotall-regex": "npm:^7.25.7" "@babel/plugin-transform-duplicate-keys": "npm:^7.25.7" "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.7" - "@babel/plugin-transform-dynamic-import": "npm:^7.25.7" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.8" "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.7" - "@babel/plugin-transform-export-namespace-from": "npm:^7.25.7" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.8" "@babel/plugin-transform-for-of": "npm:^7.25.7" "@babel/plugin-transform-function-name": "npm:^7.25.7" - "@babel/plugin-transform-json-strings": "npm:^7.25.7" + "@babel/plugin-transform-json-strings": "npm:^7.25.8" "@babel/plugin-transform-literals": "npm:^7.25.7" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.7" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.8" "@babel/plugin-transform-member-expression-literals": "npm:^7.25.7" "@babel/plugin-transform-modules-amd": "npm:^7.25.7" "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" @@ -1394,15 +1323,15 @@ __metadata: "@babel/plugin-transform-modules-umd": "npm:^7.25.7" "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.7" "@babel/plugin-transform-new-target": "npm:^7.25.7" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.7" - "@babel/plugin-transform-numeric-separator": "npm:^7.25.7" - "@babel/plugin-transform-object-rest-spread": "npm:^7.25.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.8" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.8" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.8" "@babel/plugin-transform-object-super": "npm:^7.25.7" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.8" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.8" "@babel/plugin-transform-parameters": "npm:^7.25.7" "@babel/plugin-transform-private-methods": "npm:^7.25.7" - "@babel/plugin-transform-private-property-in-object": "npm:^7.25.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.8" "@babel/plugin-transform-property-literals": "npm:^7.25.7" "@babel/plugin-transform-regenerator": "npm:^7.25.7" "@babel/plugin-transform-reserved-words": "npm:^7.25.7" @@ -1423,7 +1352,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bf704a06a69420250c1de2b126cd5c859a851002c2fb2cce0910cd85a8e6755b9b31577021e94feb7e1e53519923726349aaf07580923928791583db61438fb8 + checksum: 10c0/a45cd64ca082262998f6cf508b413ff8a9e967bf33e58337a1fe41c6c939a4c25cc73cd58387792c00d43905cf5fb0ea5ef88dfdc2addf2e8133743088c86c72 languageName: node linkType: hard From b742ce9d0961d9b992fce66ba4ecb3ff414c90c0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 09:58:45 -0400 Subject: [PATCH 175/550] Reduce factory creation (17 -> 0) in `PlainTextFormatter` spec (#32487) --- spec/lib/plain_text_formatter_spec.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/lib/plain_text_formatter_spec.rb b/spec/lib/plain_text_formatter_spec.rb index b22f473d0c..4683e15093 100644 --- a/spec/lib/plain_text_formatter_spec.rb +++ b/spec/lib/plain_text_formatter_spec.rb @@ -7,7 +7,7 @@ RSpec.describe PlainTextFormatter do subject { described_class.new(status.text, status.local?).to_s } context 'when status is local' do - let(:status) { Fabricate(:status, text: '

a text by a nerd who uses an HTML tag in text

', uri: nil) } + let(:status) { Fabricate.build(:status, text: '

a text by a nerd who uses an HTML tag in text

', uri: nil) } it 'returns the raw text' do expect(subject).to eq '

a text by a nerd who uses an HTML tag in text

' @@ -15,10 +15,10 @@ RSpec.describe PlainTextFormatter do end context 'when status is remote' do - let(:remote_account) { Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') } + let(:remote_account) { Fabricate.build(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') } context 'when text contains inline HTML tags' do - let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem ipsum') } it 'strips the tags' do expect(subject).to eq 'Lorem ipsum' @@ -26,7 +26,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains

tags' do - let(:status) { Fabricate(:status, account: remote_account, text: '

Lorem

ipsum

') } + let(:status) { Fabricate.build(:status, account: remote_account, text: '

Lorem

ipsum

') } it 'inserts a newline' do expect(subject).to eq "Lorem\nipsum" @@ -34,7 +34,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains a single
tag' do - let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem
ipsum') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem
ipsum') } it 'inserts a newline' do expect(subject).to eq "Lorem\nipsum" @@ -42,7 +42,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains consecutive
tag' do - let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem


ipsum') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem


ipsum') } it 'inserts a single newline' do expect(subject).to eq "Lorem\nipsum" @@ -50,7 +50,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains HTML entity' do - let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem & ipsum ❤') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem & ipsum ❤') } it 'unescapes the entity' do expect(subject).to eq 'Lorem & ipsum ❤' @@ -58,7 +58,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains ipsum') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem ipsum') } it 'strips the tag and its contents' do expect(subject).to eq 'Lorem ipsum' @@ -66,7 +66,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains an HTML comment tags' do - let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') } + let(:status) { Fabricate.build(:status, account: remote_account, text: 'Lorem ipsum') } it 'strips the comment' do expect(subject).to eq 'Lorem ipsum' @@ -74,7 +74,7 @@ RSpec.describe PlainTextFormatter do end context 'when text contains HTML ruby tags' do - let(:status) { Fabricate(:status, account: remote_account, text: '

Lorem 明日 (Ashita) ipsum

') } + let(:status) { Fabricate.build(:status, account: remote_account, text: '

Lorem 明日 (Ashita) ipsum

') } it 'strips the comment' do expect(subject).to eq 'Lorem 明日 (Ashita) ipsum' From b78597979a71d4ce4296a96fffc1fb466c7d3c6b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 10:12:54 -0400 Subject: [PATCH 176/550] Fix missing content warning text in rss formatter (#32406) --- app/helpers/formatting_helper.rb | 78 +++++++++++++++++--------- spec/helpers/formatting_helper_spec.rb | 54 +++++++++++++++--- 2 files changed, 99 insertions(+), 33 deletions(-) diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index 7d1423e52d..2ef7d362d8 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -1,6 +1,14 @@ # frozen_string_literal: true module FormattingHelper + SYNDICATED_EMOJI_STYLES = <<~CSS.squish + height: 1.1em; + margin: -.2ex .15em .2ex; + object-fit: contain; + vertical-align: middle; + width: 1.1em; + CSS + def html_aware_format(text, local, options = {}) HtmlAwareFormatter.new(text, local, options).to_s end @@ -23,33 +31,10 @@ module FormattingHelper end def rss_status_content_format(status) - html = status_content_format(status) - - before_html = if status.spoiler_text? - tag.p do - tag.strong do - I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale) - end - - status.spoiler_text - end + tag.hr - end - - after_html = if status.preloadable_poll - tag.p do - safe_join( - status.preloadable_poll.options.map do |o| - tag.send(status.preloadable_poll.multiple? ? 'checkbox' : 'radio', o, disabled: true) - end, - tag.br - ) - end - end - prerender_custom_emojis( - safe_join([before_html, html, after_html]), + wrapped_status_content_format(status), status.emojis, - style: 'width: 1.1em; height: 1.1em; object-fit: contain; vertical-align: middle; margin: -.2ex .15em .2ex' + style: SYNDICATED_EMOJI_STYLES ).to_str end @@ -64,4 +49,47 @@ module FormattingHelper html_aware_format(field.value, field.account.local?, with_rel_me: with_rel_me, with_domains: true, multiline: false) end end + + private + + def wrapped_status_content_format(status) + safe_join [ + rss_content_preroll(status), + status_content_format(status), + rss_content_postroll(status), + ] + end + + def rss_content_preroll(status) + if status.spoiler_text? + safe_join [ + tag.p { spoiler_with_warning(status) }, + tag.hr, + ] + end + end + + def spoiler_with_warning(status) + safe_join [ + tag.strong { I18n.t('rss.content_warning', locale: available_locale_or_nil(status.language) || I18n.default_locale) }, + status.spoiler_text, + ] + end + + def rss_content_postroll(status) + if status.preloadable_poll + tag.p do + poll_option_tags(status) + end + end + end + + def poll_option_tags(status) + safe_join( + status.preloadable_poll.options.map do |option| + tag.send(status.preloadable_poll.multiple? ? 'checkbox' : 'radio', option, disabled: true) + end, + tag.br + ) + end end diff --git a/spec/helpers/formatting_helper_spec.rb b/spec/helpers/formatting_helper_spec.rb index 136a609b1c..5ff534e4eb 100644 --- a/spec/helpers/formatting_helper_spec.rb +++ b/spec/helpers/formatting_helper_spec.rb @@ -6,19 +6,57 @@ RSpec.describe FormattingHelper do include Devise::Test::ControllerHelpers describe '#rss_status_content_format' do - let(:status) { Fabricate(:status, text: 'Hello world<>', spoiler_text: 'This is a spoiler<>', poll: Fabricate(:poll, options: %w(Yes<> No))) } - let(:html) { helper.rss_status_content_format(status) } + subject { helper.rss_status_content_format(status) } - it 'renders the spoiler text' do - expect(html).to include('

This is a spoiler<>


') + context 'with a simple status' do + let(:status) { Fabricate.build :status, text: 'Hello world' } + + it 'renders the formatted elements' do + expect(parsed_result.css('p').first.text) + .to eq('Hello world') + end end - it 'renders the status text' do - expect(html).to include('

Hello world<>

') + context 'with a spoiler and an emoji and a poll' do + let(:status) { Fabricate(:status, text: 'Hello :world: <>', spoiler_text: 'This is a spoiler<>', poll: Fabricate(:poll, options: %w(Yes<> No))) } + + before { Fabricate :custom_emoji, shortcode: 'world' } + + it 'renders the formatted elements' do + expect(spoiler_node.css('strong').text) + .to eq('Content warning:') + expect(spoiler_node.text) + .to include('This is a spoiler<>') + expect(content_node.text) + .to eq('Hello <>') + expect(content_node.css('img').first.to_h.symbolize_keys) + .to include( + rel: 'emoji', + title: ':world:' + ) + expect(poll_node.css('radio').first.text) + .to eq('Yes<>') + expect(poll_node.css('radio').first.to_h.symbolize_keys) + .to include( + disabled: 'disabled' + ) + end + + def spoiler_node + parsed_result.css('p').first + end + + def content_node + parsed_result.css('p')[1] + end + + def poll_node + parsed_result.css('p').last + end end - it 'renders the poll' do - expect(html).to include('Yes<>
') + def parsed_result + Nokogiri::HTML.fragment(subject) end end end From 52bc33115d1dc0c544244aa008cb0f2c356531d1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 10:14:17 -0400 Subject: [PATCH 177/550] Add mention of encryption secrets to production sample (#32512) --- .env.production.sample | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.env.production.sample b/.env.production.sample index 0b458a1aa9..87ea031c4c 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -45,6 +45,16 @@ ES_PASS=password SECRET_KEY_BASE= OTP_SECRET= +# Encryption secrets +# ------------------ +# Must be available (and set to same values) for all server processes +# These are private/secret values, do not share outside hosting environment +# Use `bin/rails db:encryption:init` to generate fresh secrets +# ------------------ +# ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= +# ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= +# ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY= + # Web Push # -------- # Generate with `bundle exec rails mastodon:webpush:generate_vapid_key` From 28131b4b00e65826ac58a034d99b13123461940d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 10:18:20 -0400 Subject: [PATCH 178/550] Convert status embed controller to request spec (#32448) --- spec/controllers/statuses_controller_spec.rb | 72 ------------------- spec/requests/statuses/embed_spec.rb | 74 ++++++++++++++++++++ 2 files changed, 74 insertions(+), 72 deletions(-) create mode 100644 spec/requests/statuses/embed_spec.rb diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index d9702251f4..121e4aa6c6 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -736,76 +736,4 @@ RSpec.describe StatusesController do end end end - - describe 'GET #embed' do - let(:account) { Fabricate(:account) } - let(:status) { Fabricate(:status, account: account) } - - context 'when account is suspended' do - let(:account) { Fabricate(:account, suspended: true) } - - before do - get :embed, params: { account_username: account.username, id: status.id } - end - - it 'returns http gone' do - expect(response).to have_http_status(410) - end - end - - context 'when status is a reblog' do - let(:original_account) { Fabricate(:account, domain: 'example.com') } - let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } - let(:status) { Fabricate(:status, account: account, reblog: original_status) } - - before do - get :embed, params: { account_username: status.account.username, id: status.id } - end - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - - context 'when status is public' do - before do - get :embed, params: { account_username: status.account.username, id: status.id } - end - - it 'renders status successfully', :aggregate_failures do - expect(response) - .to have_http_status(200) - .and render_template(:embed) - expect(response.headers).to include( - 'Vary' => 'Accept, Accept-Language, Cookie', - 'Cache-Control' => include('public'), - 'Link' => include('activity+json') - ) - end - end - - context 'when status is private' do - let(:status) { Fabricate(:status, account: account, visibility: :private) } - - before do - get :embed, params: { account_username: status.account.username, id: status.id } - end - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - - context 'when status is direct' do - let(:status) { Fabricate(:status, account: account, visibility: :direct) } - - before do - get :embed, params: { account_username: status.account.username, id: status.id } - end - - it 'returns http not found' do - expect(response).to have_http_status(404) - end - end - end end diff --git a/spec/requests/statuses/embed_spec.rb b/spec/requests/statuses/embed_spec.rb new file mode 100644 index 0000000000..33c7ea192c --- /dev/null +++ b/spec/requests/statuses/embed_spec.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Status embed' do + describe 'GET /users/:account_username/statuses/:id/embed' do + subject { get "/users/#{account.username}/statuses/#{status.id}/embed" } + + let(:account) { Fabricate(:account) } + let(:status) { Fabricate(:status, account: account) } + + context 'when account is suspended' do + let(:account) { Fabricate(:account, suspended: true) } + + it 'returns http gone' do + subject + + expect(response) + .to have_http_status(410) + end + end + + context 'when status is a reblog' do + let(:original_account) { Fabricate(:account, domain: 'example.com') } + let(:original_status) { Fabricate(:status, account: original_account, url: 'https://example.com/123') } + let(:status) { Fabricate(:status, account: account, reblog: original_status) } + + it 'returns http not found' do + subject + + expect(response) + .to have_http_status(404) + end + end + + context 'when status is public' do + it 'renders status successfully', :aggregate_failures do + subject + + expect(response) + .to have_http_status(200) + expect(response.parsed_body.at('body.embed')) + .to be_present + expect(response.headers).to include( + 'Vary' => 'Accept, Accept-Language, Cookie', + 'Cache-Control' => include('public'), + 'Link' => include('activity+json') + ) + end + end + + context 'when status is private' do + let(:status) { Fabricate(:status, account: account, visibility: :private) } + + it 'returns http not found' do + subject + + expect(response) + .to have_http_status(404) + end + end + + context 'when status is direct' do + let(:status) { Fabricate(:status, account: account, visibility: :direct) } + + it 'returns http not found' do + subject + + expect(response) + .to have_http_status(404) + end + end + end +end From 9e8f099d38029b74d46daa7edbadeaf7057aebfc Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 10:24:12 -0400 Subject: [PATCH 179/550] Improve `app/policies` coverage (#32426) --- .../account_moderation_note_policy_spec.rb | 5 +- spec/policies/account_policy_spec.rb | 3 +- spec/policies/account_warning_policy_spec.rb | 42 ++++++++++++++ .../account_warning_preset_policy_spec.rb | 5 +- spec/policies/admin/status_policy_spec.rb | 5 +- spec/policies/announcement_policy_spec.rb | 5 +- spec/policies/appeal_policy_spec.rb | 7 +-- spec/policies/audit_log_policy_spec.rb | 20 +++++++ spec/policies/backup_policy_spec.rb | 1 - .../canonical_email_block_policy_spec.rb | 5 +- spec/policies/custom_emoji_policy_spec.rb | 1 - spec/policies/dashboard_policy_spec.rb | 20 +++++++ spec/policies/delivery_policy_spec.rb | 5 +- spec/policies/domain_allow_policy_spec.rb | 24 ++++++++ spec/policies/domain_block_policy_spec.rb | 3 +- .../email_domain_block_policy_spec.rb | 1 - .../follow_recommendation_policy_spec.rb | 5 +- spec/policies/instance_policy_spec.rb | 1 - spec/policies/invite_policy_spec.rb | 1 - spec/policies/ip_block_policy_spec.rb | 5 +- spec/policies/poll_policy_spec.rb | 36 ++++++++++++ spec/policies/preview_card_policy_spec.rb | 5 +- .../preview_card_provider_policy_spec.rb | 5 +- spec/policies/relay_policy_spec.rb | 1 - spec/policies/report_note_policy_spec.rb | 1 - spec/policies/report_policy_spec.rb | 1 - spec/policies/rule_policy_spec.rb | 5 +- spec/policies/settings_policy_spec.rb | 1 - spec/policies/software_update_policy_spec.rb | 1 - spec/policies/status_policy_spec.rb | 1 - spec/policies/tag_policy_spec.rb | 1 - spec/policies/user_policy_spec.rb | 39 ++++++++++++- spec/policies/user_role_policy_spec.rb | 56 +++++++++++++++++++ spec/policies/webhook_policy_spec.rb | 1 - spec/rails_helper.rb | 1 + 35 files changed, 264 insertions(+), 55 deletions(-) create mode 100644 spec/policies/account_warning_policy_spec.rb create mode 100644 spec/policies/audit_log_policy_spec.rb create mode 100644 spec/policies/dashboard_policy_spec.rb create mode 100644 spec/policies/domain_allow_policy_spec.rb create mode 100644 spec/policies/poll_policy_spec.rb create mode 100644 spec/policies/user_role_policy_spec.rb diff --git a/spec/policies/account_moderation_note_policy_spec.rb b/spec/policies/account_moderation_note_policy_spec.rb index 8c37acc39f..8b33a71012 100644 --- a/spec/policies/account_moderation_note_policy_spec.rb +++ b/spec/policies/account_moderation_note_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe AccountModerationNotePolicy do subject { described_class } @@ -12,13 +11,13 @@ RSpec.describe AccountModerationNotePolicy do permissions :create? do context 'when staff' do it 'grants to create' do - expect(subject).to permit(admin, described_class) + expect(subject).to permit(admin, AccountModerationNote) end end context 'when not staff' do it 'denies to create' do - expect(subject).to_not permit(john, described_class) + expect(subject).to_not permit(john, AccountModerationNote) end end end diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb index d7a21d8e39..75724e831b 100644 --- a/spec/policies/account_policy_spec.rb +++ b/spec/policies/account_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe AccountPolicy do subject { described_class } @@ -24,7 +23,7 @@ RSpec.describe AccountPolicy do end end - permissions :show?, :unsilence?, :unsensitive?, :remove_avatar?, :remove_header? do + permissions :show?, :unsilence?, :unsensitive?, :remove_avatar?, :remove_header?, :sensitive?, :warn? do context 'when staff' do it 'permits' do expect(subject).to permit(admin, alice) diff --git a/spec/policies/account_warning_policy_spec.rb b/spec/policies/account_warning_policy_spec.rb new file mode 100644 index 0000000000..9abc9d35d6 --- /dev/null +++ b/spec/policies/account_warning_policy_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AccountWarningPolicy do + subject { described_class } + + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:account) } + + permissions :show? do + context 'with an admin' do + it { is_expected.to permit(admin, AccountWarning.new) } + end + + context 'with a non-admin' do + context 'when account is not target' do + it { is_expected.to_not permit(account, AccountWarning.new) } + end + + context 'when account is target' do + it { is_expected.to permit(account, AccountWarning.new(target_account_id: account.id)) } + end + end + end + + permissions :appeal? do + context 'when account is not target' do + it { is_expected.to_not permit(account, AccountWarning.new) } + end + + context 'when account is target' do + context 'when record is appealable' do + it { is_expected.to permit(account, AccountWarning.new(target_account_id: account.id, created_at: Appeal::MAX_STRIKE_AGE.ago + 1.hour)) } + end + + context 'when record is not appealable' do + it { is_expected.to_not permit(account, AccountWarning.new(target_account_id: account.id, created_at: Appeal::MAX_STRIKE_AGE.ago - 1.hour)) } + end + end + end +end diff --git a/spec/policies/account_warning_preset_policy_spec.rb b/spec/policies/account_warning_preset_policy_spec.rb index 53e224f19f..33f2fb1187 100644 --- a/spec/policies/account_warning_preset_policy_spec.rb +++ b/spec/policies/account_warning_preset_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe AccountWarningPresetPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe AccountWarningPresetPolicy do permissions :index?, :create?, :update?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, AccountWarningPreset) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, AccountWarningPreset) end end end diff --git a/spec/policies/admin/status_policy_spec.rb b/spec/policies/admin/status_policy_spec.rb index 07af425516..4df29393e3 100644 --- a/spec/policies/admin/status_policy_spec.rb +++ b/spec/policies/admin/status_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe Admin::StatusPolicy do let(:policy) { described_class } @@ -13,13 +12,13 @@ RSpec.describe Admin::StatusPolicy do permissions :index?, :update?, :review?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, Status) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, Status) end end end diff --git a/spec/policies/announcement_policy_spec.rb b/spec/policies/announcement_policy_spec.rb index 503ffca6dc..ab0c1dbaf5 100644 --- a/spec/policies/announcement_policy_spec.rb +++ b/spec/policies/announcement_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe AnnouncementPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe AnnouncementPolicy do permissions :index?, :create?, :update?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, Announcement) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, Announcement) end end end diff --git a/spec/policies/appeal_policy_spec.rb b/spec/policies/appeal_policy_spec.rb index 1bf8ce0a0d..cdb93bf56c 100644 --- a/spec/policies/appeal_policy_spec.rb +++ b/spec/policies/appeal_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe AppealPolicy do let(:policy) { described_class } @@ -12,18 +11,18 @@ RSpec.describe AppealPolicy do permissions :index? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, Appeal) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, Appeal) end end end - permissions :reject? do + permissions :reject?, :approve? do context 'with an admin' do context 'with a pending appeal' do before { allow(appeal).to receive(:pending?).and_return(true) } diff --git a/spec/policies/audit_log_policy_spec.rb b/spec/policies/audit_log_policy_spec.rb new file mode 100644 index 0000000000..d9d9359433 --- /dev/null +++ b/spec/policies/audit_log_policy_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AuditLogPolicy do + subject { described_class } + + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:account) } + + permissions :index? do + context 'with an admin' do + it { is_expected.to permit(admin, nil) } + end + + context 'with a non-admin' do + it { is_expected.to_not permit(account, nil) } + end + end +end diff --git a/spec/policies/backup_policy_spec.rb b/spec/policies/backup_policy_spec.rb index 28cb65d789..031021d91d 100644 --- a/spec/policies/backup_policy_spec.rb +++ b/spec/policies/backup_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe BackupPolicy do subject { described_class } diff --git a/spec/policies/canonical_email_block_policy_spec.rb b/spec/policies/canonical_email_block_policy_spec.rb index f5029d9e6b..b253b439a6 100644 --- a/spec/policies/canonical_email_block_policy_spec.rb +++ b/spec/policies/canonical_email_block_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe CanonicalEmailBlockPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe CanonicalEmailBlockPolicy do permissions :index?, :show?, :test?, :create?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, CanonicalEmailBlock) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, CanonicalEmailBlock) end end end diff --git a/spec/policies/custom_emoji_policy_spec.rb b/spec/policies/custom_emoji_policy_spec.rb index cb869c7d9a..189885938c 100644 --- a/spec/policies/custom_emoji_policy_spec.rb +++ b/spec/policies/custom_emoji_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe CustomEmojiPolicy do subject { described_class } diff --git a/spec/policies/dashboard_policy_spec.rb b/spec/policies/dashboard_policy_spec.rb new file mode 100644 index 0000000000..90c71db381 --- /dev/null +++ b/spec/policies/dashboard_policy_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe DashboardPolicy do + subject { described_class } + + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:account) } + + permissions :index? do + context 'with an admin' do + it { is_expected.to permit(admin, nil) } + end + + context 'with a non-admin' do + it { is_expected.to_not permit(account, nil) } + end + end +end diff --git a/spec/policies/delivery_policy_spec.rb b/spec/policies/delivery_policy_spec.rb index bb82389eec..8bc200159a 100644 --- a/spec/policies/delivery_policy_spec.rb +++ b/spec/policies/delivery_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe DeliveryPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe DeliveryPolicy do permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, nil) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, nil) end end end diff --git a/spec/policies/domain_allow_policy_spec.rb b/spec/policies/domain_allow_policy_spec.rb new file mode 100644 index 0000000000..1d285065b8 --- /dev/null +++ b/spec/policies/domain_allow_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe DomainAllowPolicy do + subject { described_class } + + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:john) { Fabricate(:account) } + + permissions :index?, :show?, :create?, :destroy? do + context 'when admin' do + it 'permits' do + expect(subject).to permit(admin, DomainAllow) + end + end + + context 'when not admin' do + it 'denies' do + expect(subject).to_not permit(john, DomainAllow) + end + end + end +end diff --git a/spec/policies/domain_block_policy_spec.rb b/spec/policies/domain_block_policy_spec.rb index 4c89f3f374..7c77d1870d 100644 --- a/spec/policies/domain_block_policy_spec.rb +++ b/spec/policies/domain_block_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe DomainBlockPolicy do subject { described_class } @@ -9,7 +8,7 @@ RSpec.describe DomainBlockPolicy do let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } let(:john) { Fabricate(:account) } - permissions :index?, :show?, :create?, :destroy? do + permissions :index?, :show?, :create?, :destroy?, :update? do context 'when admin' do it 'permits' do expect(subject).to permit(admin, DomainBlock) diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb index 7ecff4be49..e98d65a3c7 100644 --- a/spec/policies/email_domain_block_policy_spec.rb +++ b/spec/policies/email_domain_block_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe EmailDomainBlockPolicy do subject { described_class } diff --git a/spec/policies/follow_recommendation_policy_spec.rb b/spec/policies/follow_recommendation_policy_spec.rb index ae74d5c3a8..665ed9b059 100644 --- a/spec/policies/follow_recommendation_policy_spec.rb +++ b/spec/policies/follow_recommendation_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe FollowRecommendationPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe FollowRecommendationPolicy do permissions :show?, :suppress?, :unsuppress? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, FollowRecommendation) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, FollowRecommendation) end end end diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb index a0d9a008b7..6cdc738022 100644 --- a/spec/policies/instance_policy_spec.rb +++ b/spec/policies/instance_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe InstancePolicy do subject { described_class } diff --git a/spec/policies/invite_policy_spec.rb b/spec/policies/invite_policy_spec.rb index cbe3735d80..3717a44999 100644 --- a/spec/policies/invite_policy_spec.rb +++ b/spec/policies/invite_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe InvitePolicy do subject { described_class } diff --git a/spec/policies/ip_block_policy_spec.rb b/spec/policies/ip_block_policy_spec.rb index 97bc239e9a..33ea342c10 100644 --- a/spec/policies/ip_block_policy_spec.rb +++ b/spec/policies/ip_block_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe IpBlockPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe IpBlockPolicy do permissions :index?, :show?, :create?, :update?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, IpBlock) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, IpBlock) end end end diff --git a/spec/policies/poll_policy_spec.rb b/spec/policies/poll_policy_spec.rb new file mode 100644 index 0000000000..aa1701cb06 --- /dev/null +++ b/spec/policies/poll_policy_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe PollPolicy do + subject { described_class } + + let(:account) { Fabricate(:account) } + let(:poll) { Fabricate :poll } + + permissions :vote? do + context 'when account cannot view status' do + before { poll.status.update(visibility: :private) } + + it { is_expected.to_not permit(account, poll) } + end + + context 'when account can view status' do + context 'when accounts do not block each other' do + it { is_expected.to permit(account, poll) } + end + + context 'when view blocks poll creator' do + before { Fabricate :block, account: account, target_account: poll.account } + + it { is_expected.to_not permit(account, poll) } + end + + context 'when poll creator blocks viewer' do + before { Fabricate :block, account: poll.account, target_account: account } + + it { is_expected.to_not permit(account, poll) } + end + end + end +end diff --git a/spec/policies/preview_card_policy_spec.rb b/spec/policies/preview_card_policy_spec.rb index a1944303e1..d02a6016cd 100644 --- a/spec/policies/preview_card_policy_spec.rb +++ b/spec/policies/preview_card_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe PreviewCardPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe PreviewCardPolicy do permissions :index?, :review? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, PreviewCard) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, PreviewCard) end end end diff --git a/spec/policies/preview_card_provider_policy_spec.rb b/spec/policies/preview_card_provider_policy_spec.rb index 676039a1b7..5e25b364a4 100644 --- a/spec/policies/preview_card_provider_policy_spec.rb +++ b/spec/policies/preview_card_provider_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe PreviewCardProviderPolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe PreviewCardProviderPolicy do permissions :index?, :review? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, PreviewCardProvider) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, PreviewCardProvider) end end end diff --git a/spec/policies/relay_policy_spec.rb b/spec/policies/relay_policy_spec.rb index 29ba02c26a..5983b2d2ff 100644 --- a/spec/policies/relay_policy_spec.rb +++ b/spec/policies/relay_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe RelayPolicy do subject { described_class } diff --git a/spec/policies/report_note_policy_spec.rb b/spec/policies/report_note_policy_spec.rb index b40a878887..02317f763a 100644 --- a/spec/policies/report_note_policy_spec.rb +++ b/spec/policies/report_note_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe ReportNotePolicy do subject { described_class } diff --git a/spec/policies/report_policy_spec.rb b/spec/policies/report_policy_spec.rb index 4fc4178075..67f40b5188 100644 --- a/spec/policies/report_policy_spec.rb +++ b/spec/policies/report_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe ReportPolicy do subject { described_class } diff --git a/spec/policies/rule_policy_spec.rb b/spec/policies/rule_policy_spec.rb index 5d435e38c1..3086f30446 100644 --- a/spec/policies/rule_policy_spec.rb +++ b/spec/policies/rule_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe RulePolicy do let(:policy) { described_class } @@ -11,13 +10,13 @@ RSpec.describe RulePolicy do permissions :index?, :create?, :update?, :destroy? do context 'with an admin' do it 'permits' do - expect(policy).to permit(admin, Tag) + expect(policy).to permit(admin, Rule) end end context 'with a non-admin' do it 'denies' do - expect(policy).to_not permit(john, Tag) + expect(policy).to_not permit(john, Rule) end end end diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb index 4a99314905..48821c706a 100644 --- a/spec/policies/settings_policy_spec.rb +++ b/spec/policies/settings_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe SettingsPolicy do subject { described_class } diff --git a/spec/policies/software_update_policy_spec.rb b/spec/policies/software_update_policy_spec.rb index e19ba61612..2bda84cce9 100644 --- a/spec/policies/software_update_policy_spec.rb +++ b/spec/policies/software_update_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe SoftwareUpdatePolicy do subject { described_class } diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index 36ac8d8027..538742610c 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe StatusPolicy, type: :model do subject { described_class } diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb index 35da3cc62a..23166e4669 100644 --- a/spec/policies/tag_policy_spec.rb +++ b/spec/policies/tag_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe TagPolicy do subject { described_class } diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb index 7854547d26..11a166a24e 100644 --- a/spec/policies/user_policy_spec.rb +++ b/spec/policies/user_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe UserPolicy do subject { described_class } @@ -112,4 +111,42 @@ RSpec.describe UserPolicy do end end end + + permissions :approve?, :reject? do + context 'when admin' do + context 'when user is approved' do + it { is_expected.to_not permit(admin, User.new(approved: true)) } + end + + context 'when user is not approved' do + it { is_expected.to permit(admin, User.new(approved: false)) } + end + end + + context 'when not admin' do + it { is_expected.to_not permit(john, User.new) } + end + end + + permissions :change_role? do + context 'when not admin' do + it { is_expected.to_not permit(john, User.new) } + end + + context 'when admin' do + let(:user) { User.new(role: role) } + + context 'when role of admin overrides user role' do + let(:role) { UserRole.new(position: admin.user.role.position - 10, id: 123) } + + it { is_expected.to permit(admin, user) } + end + + context 'when role of admin does not override user role' do + let(:role) { UserRole.new(position: admin.user.role.position + 10, id: 123) } + + it { is_expected.to_not permit(admin, user) } + end + end + end end diff --git a/spec/policies/user_role_policy_spec.rb b/spec/policies/user_role_policy_spec.rb new file mode 100644 index 0000000000..c48b345d68 --- /dev/null +++ b/spec/policies/user_role_policy_spec.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UserRolePolicy do + subject { described_class } + + let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + let(:account) { Fabricate(:account) } + + permissions :index?, :create? do + context 'when admin' do + it { is_expected.to permit(admin, UserRole.new) } + end + + context 'when not admin' do + it { is_expected.to_not permit(account, UserRole.new) } + end + end + + permissions :update? do + context 'when admin' do + context 'when role of admin overrides relevant role' do + it { is_expected.to permit(admin, UserRole.new(position: admin.user.role.position - 10, id: 123)) } + end + + context 'when role of admin does not override relevant role' do + it { is_expected.to_not permit(admin, UserRole.new(position: admin.user.role.position + 10, id: 123)) } + end + end + + context 'when not admin' do + it { is_expected.to_not permit(account, UserRole.new) } + end + end + + permissions :destroy? do + context 'when admin' do + context 'when role of admin overrides relevant role' do + it { is_expected.to permit(admin, UserRole.new(position: admin.user.role.position - 10)) } + end + + context 'when role of admin does not override relevant role' do + it { is_expected.to_not permit(admin, UserRole.new(position: admin.user.role.position + 10)) } + end + + context 'when everyone role' do + it { is_expected.to_not permit(admin, UserRole.everyone) } + end + end + + context 'when not admin' do + it { is_expected.to_not permit(account, UserRole.new) } + end + end +end diff --git a/spec/policies/webhook_policy_spec.rb b/spec/policies/webhook_policy_spec.rb index 96aaae2c30..9899235d83 100644 --- a/spec/policies/webhook_policy_spec.rb +++ b/spec/policies/webhook_policy_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'rails_helper' -require 'pundit/rspec' RSpec.describe WebhookPolicy do let(:policy) { described_class } diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 84cee0974f..91a2e21bbb 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -43,6 +43,7 @@ require 'paperclip/matchers' require 'capybara/rspec' require 'chewy/rspec' require 'email_spec/rspec' +require 'pundit/rspec' require 'test_prof/recipes/rspec/before_all' Rails.root.glob('spec/support/**/*.rb').each { |f| require f } From c40cd79c4d90ad0613616c59cc029ab83d55ee48 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 15 Oct 2024 10:27:46 -0400 Subject: [PATCH 180/550] Convert `admin/invites` controller specs to system specs (#32450) --- app/views/admin/invites/_invite.html.haml | 2 +- .../admin/invites_controller_spec.rb | 59 ----------------- spec/system/admin/invites_spec.rb | 63 +++++++++++++++++++ 3 files changed, 64 insertions(+), 60 deletions(-) delete mode 100644 spec/controllers/admin/invites_controller_spec.rb create mode 100644 spec/system/admin/invites_spec.rb diff --git a/app/views/admin/invites/_invite.html.haml b/app/views/admin/invites/_invite.html.haml index 53eac1d0cd..e3e5d32542 100644 --- a/app/views/admin/invites/_invite.html.haml +++ b/app/views/admin/invites/_invite.html.haml @@ -1,4 +1,4 @@ -%tr +%tr{ id: dom_id(invite) } %td .input-copy .input-copy__wrapper diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb deleted file mode 100644 index b6471e80b2..0000000000 --- a/spec/controllers/admin/invites_controller_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -require 'rails_helper' - -RSpec.describe Admin::InvitesController do - render_views - - let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } - - before do - sign_in user, scope: :user - end - - describe 'GET #index' do - subject { get :index, params: { available: true } } - - let!(:invite) { Fabricate(:invite) } - - it 'renders index page' do - expect(subject).to render_template :index - expect(response.body) - .to include(invite.code) - end - end - - describe 'POST #create' do - subject { post :create, params: { invite: { max_uses: '10', expires_in: 1800 } } } - - it 'succeeds to create a invite' do - expect { subject }.to change(Invite, :count).by(1) - expect(subject).to redirect_to admin_invites_path - expect(Invite.last).to have_attributes(user_id: user.id, max_uses: 10) - end - end - - describe 'DELETE #destroy' do - subject { delete :destroy, params: { id: invite.id } } - - let!(:invite) { Fabricate(:invite, expires_at: nil) } - - it 'expires invite' do - expect(subject).to redirect_to admin_invites_path - expect(invite.reload).to be_expired - end - end - - describe 'POST #deactivate_all' do - before { Fabricate(:invite, expires_at: nil) } - - it 'expires all invites, then redirects to admin_invites_path' do - expect { post :deactivate_all } - .to change { Invite.exists?(expires_at: nil) } - .from(true) - .to(false) - - expect(response).to redirect_to admin_invites_path - end - end -end diff --git a/spec/system/admin/invites_spec.rb b/spec/system/admin/invites_spec.rb new file mode 100644 index 0000000000..f2cee626c6 --- /dev/null +++ b/spec/system/admin/invites_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin Invites' do + describe 'Invite interaction' do + let!(:invite) { Fabricate(:invite, expires_at: nil) } + + let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + before { sign_in user } + + it 'allows invite listing and creation' do + visit admin_invites_path + + expect(page) + .to have_title(I18n.t('admin.invites.title')) + for_invite(invite) do + expect(find('input').value) + .to include(invite.code) + end + + select I18n.t('invites.max_uses', count: 10), from: max_use_field + + expect { generate_invite } + .to change(Invite, :count).by(1) + expect(user.invites.last) + .to have_attributes(max_uses: 10) + end + + it 'allows invite expiration' do + visit admin_invites_path + + for_invite(invite) do + expect { expire_invite } + .to change { invite.reload.expired? }.from(false).to(true) + end + end + + it 'allows invite deactivation' do + visit admin_invites_path + + expect { click_on I18n.t('admin.invites.deactivate_all') } + .to change { Invite.exists?(expires_at: nil) }.from(true).to(false) + end + + def for_invite(invite, &block) + within("#invite_#{invite.id}", &block) + end + + def expire_invite + click_on I18n.t('invites.delete') + end + + def generate_invite + click_on I18n.t('invites.generate') + end + + def max_use_field + I18n.t('simple_form.labels.defaults.max_uses') + end + end +end From 7a7a7cc448514609a268a2c6bceca414783579ee Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Wed, 16 Oct 2024 09:27:44 +0200 Subject: [PATCH 181/550] Add back a 6 hours mute duration option (#32522) --- app/javascript/mastodon/features/ui/components/mute_modal.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/ui/components/mute_modal.jsx b/app/javascript/mastodon/features/ui/components/mute_modal.jsx index 70d95b5931..90b88030a0 100644 --- a/app/javascript/mastodon/features/ui/components/mute_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/mute_modal.jsx @@ -116,6 +116,7 @@ export const MuteModal = ({ accountId, acct }) => {
+ From 25f8003d75515fb1c195c6f4ca2ea92a0d58163e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 16 Oct 2024 09:30:53 +0200 Subject: [PATCH 182/550] Fix only the first paragraph being displayed in some notifications (#32348) --- app/javascript/styles/mastodon/components.scss | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1f69dab7be..a20e84ce75 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -10804,21 +10804,17 @@ noscript { color: $darker-text-color; -webkit-line-clamp: 4; -webkit-box-orient: vertical; - max-height: 4 * 22px; + max-height: none; overflow: hidden; - p { - display: none; - - &:first-child { - display: initial; - } - } - p, a { color: inherit; } + + p { + margin-bottom: 8px; + } } .reply-indicator__attachments { From 5900c8c7fd3fb0f3a99f144f79d864fcdedeeca5 Mon Sep 17 00:00:00 2001 From: Christian Winther Date: Wed, 16 Oct 2024 09:44:28 +0200 Subject: [PATCH 183/550] Run migration tests against postgres 16 and 17 as well (#32416) --- .github/workflows/test-migrations.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-migrations.yml b/.github/workflows/test-migrations.yml index 6a0e67c58e..5b80fef037 100644 --- a/.github/workflows/test-migrations.yml +++ b/.github/workflows/test-migrations.yml @@ -32,6 +32,8 @@ jobs: postgres: - 14-alpine - 15-alpine + - 16-alpine + - 17-alpine services: postgres: From f8ba2122f84679b726050605f81c45b8de7380fa Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 16 Oct 2024 10:03:35 +0200 Subject: [PATCH 184/550] Explicitly install ImageMagick in CI (except for libvips tests) (#32534) --- .github/workflows/test-ruby.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index 3da53c1ae8..c05c8333b2 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -143,7 +143,7 @@ jobs: uses: ./.github/actions/setup-ruby with: ruby-version: ${{ matrix.ruby-version}} - additional-system-dependencies: ffmpeg libpam-dev + additional-system-dependencies: ffmpeg imagemagick libpam-dev - name: Load database schema run: | @@ -245,7 +245,7 @@ jobs: uses: ./.github/actions/setup-ruby with: ruby-version: ${{ matrix.ruby-version}} - additional-system-dependencies: ffmpeg libpam-dev libyaml-dev + additional-system-dependencies: ffmpeg libpam-dev - name: Load database schema run: './bin/rails db:create db:schema:load db:seed' @@ -325,7 +325,7 @@ jobs: uses: ./.github/actions/setup-ruby with: ruby-version: ${{ matrix.ruby-version}} - additional-system-dependencies: ffmpeg + additional-system-dependencies: ffmpeg imagemagick - name: Set up Javascript environment uses: ./.github/actions/setup-javascript @@ -445,7 +445,7 @@ jobs: uses: ./.github/actions/setup-ruby with: ruby-version: ${{ matrix.ruby-version}} - additional-system-dependencies: ffmpeg + additional-system-dependencies: ffmpeg imagemagick - name: Set up Javascript environment uses: ./.github/actions/setup-javascript From bfe3d49ccad3b15d3b62e9c5e574132af3155f39 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 16 Oct 2024 04:06:34 -0400 Subject: [PATCH 185/550] Add `inline_jobs` to admin/reset spec (#32517) --- spec/system/admin/reset_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/system/admin/reset_spec.rb b/spec/system/admin/reset_spec.rb index 1e787ea110..d0f70a93f0 100644 --- a/spec/system/admin/reset_spec.rb +++ b/spec/system/admin/reset_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe 'Admin::Reset' do - it 'Resets password for account user' do + it 'Resets password for account user', :inline_jobs do account = Fabricate :account sign_in admin_user visit admin_account_path(account.id) From acc1973f3ac554a06d9eefdcff71822cbe7ee927 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 08:12:43 +0000 Subject: [PATCH 186/550] New Crowdin Translations (automated) (#32533) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ml.json | 29 +++++++++++++++++++------ app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/ru.json | 13 ++++++----- config/locales/ml.yml | 19 ++++++++++++++++ config/locales/sv.yml | 10 +++++++++ 5 files changed, 59 insertions(+), 14 deletions(-) diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 35dc70cc98..66354de666 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -15,6 +15,7 @@ "account.blocked": "തടഞ്ഞു", "account.cancel_follow_request": "Withdraw follow request", "account.copy": "രൂപരേഖയിന്റെ വിലാസം പകർത്തുക", + "account.direct": "സ്വകാരൃമായിട്ടു് @{name}-ന് സൂചനപിക്കുക", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", @@ -36,7 +37,11 @@ "account.media": "മീഡിയ", "account.mention": "@{name} സൂചിപ്പിക്കുക", "account.mute": "@{name}-നെ(യെ) നിശ്ശബ്ദമാക്കൂ", + "account.mute_notifications_short": "അറിയിപ്പുകൾ മിണ്ടാതാക്കുക", + "account.mute_short": "മിണ്ടാതാക്കുക", "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു", + "account.no_bio": "വിവരണം നല്കുിയിട്ടില്ല.", + "account.open_original_page": "ആദ്യത്തു് താൾ തുറക്കുക", "account.posts": "പോസ്റ്റുകൾ", "account.posts_with_replies": "പോസ്റ്റുകളും മറുപടികളും", "account.report": "റിപ്പോർട്ട് ചെയ്യുക @{name}", @@ -83,6 +88,7 @@ "column.community": "പ്രാദേശികമായ സമയരേഖ", "column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", + "column.favourites": "പ്രിയപ്പെട്ടതു്", "column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "column.home": "ആമുഖം", "column.lists": "പട്ടികകൾ", @@ -102,6 +108,7 @@ "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം", "compose.language.change": "ഭാഷ മാറ്റുക", "compose.language.search": "ഭാഷകൾ തിരയുക...", + "compose.published.open": "തുറക്കുക", "compose_form.direct_message_warning_learn_more": "കൂടുതൽ പഠിക്കുക", "compose_form.encryption_warning": "Mastodon-ലെ പോസ്റ്റുകൾ എൻഡ്-ടു-എൻഡ് എൻക്രിപ്റ്റ് ചെയ്തവയല്ല. അതിനാൽ Mastodon-ൽ പ്രധാനപ്പെട്ട വിവരങ്ങളൊന്നും പങ്കിടരുത്.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -119,12 +126,15 @@ "confirmations.block.confirm": "തടയുക", "confirmations.delete.confirm": "മായ്ക്കുക", "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", + "confirmations.delete.title": "എഴുത്തുൾ മായ്ക്കുക?", "confirmations.delete_list.confirm": "മായ്ക്കുക", "confirmations.delete_list.message": "ഈ പട്ടിക എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", "confirmations.delete_list.title": "പട്ടിക കളയുണോ?", "confirmations.discard_edit_media.confirm": "കളയുക", + "confirmations.edit.confirm": "സംശോധിക്കുക", "confirmations.logout.confirm": "പുറത്തുകടക്കുക", "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?", + "confirmations.logout.title": "പുറത്തിറങ്ങുക?", "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക", "confirmations.redraft.confirm": "മായിച്ച് മാറ്റങ്ങൾ വരുത്തി വീണ്ടും എഴുതുക", "confirmations.reply.confirm": "മറുപടി", @@ -143,6 +153,7 @@ "disabled_account_banner.text": "നിങ്ങളുടെ {disabledAccount} എന്ന അക്കൗണ്ട് ഇപ്പോൾ പ്രവർത്തനരഹിതമാണ്.", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "domain_block_modal.title": "മേഖല തടസ്സപെടുത്തുക?", "domain_pill.username": "ഉപയോക്തൃപേരു്", "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", @@ -183,6 +194,7 @@ "follow_request.reject": "നിരസിക്കുക", "follow_suggestions.dismiss": "വീണ്ടും കാണിക്കരുതു്", "follow_suggestions.view_all": "എല്ലാം കാണുക", + "footer.privacy_policy": "സ്വകാര്യത്തനയം", "generic.saved": "സംരക്ഷിച്ചു", "getting_started.heading": "തുടക്കം കുറിക്കുക", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", @@ -197,8 +209,10 @@ "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക", "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", "home.hide_announcements": "പ്രഖ്യാപനങ്ങൾ മറയ്‌ക്കുക", + "home.pending_critical_update.link": "പുതുകൾ കാണുക", "home.show_announcements": "പ്രഖ്യാപനങ്ങൾ കാണിക്കുക", "interaction_modal.login.action": "ആമുഖം വരെ എടുത്തോണ്ടു് പോവുക", + "interaction_modal.login.prompt": "ആമുഖപ്രദാനിയുടെ മേഖലപേരു്. ഉദ: mastodon.social", "interaction_modal.on_this_server": "ഈ സെർവറീൽ", "keyboard_shortcuts.back": "തിരികെ പോകുക", "keyboard_shortcuts.blocked": "to open blocked users list", @@ -211,7 +225,7 @@ "keyboard_shortcuts.enter": "ടൂട്ട് എടുക്കാൻ", "keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ", - "keyboard_shortcuts.home": "ഹോം ടൈംലൈൻ തുറക്കുന്നതിന്", + "keyboard_shortcuts.home": "ആമുഖം സമയരേഖ തുറക്കുക", "keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.local": "പ്രാദേശിക സമയരേഖ തുറക്കാൻ", "keyboard_shortcuts.mention": "രചയിതാവിനെ സൂചിപ്പിക്കാൻ", @@ -239,6 +253,7 @@ "lists.delete": "പട്ടിക ഒഴിവാക്കുക", "lists.edit": "പട്ടിക തിരുത്തുക", "lists.edit.submit": "തലക്കെട്ട് മാറ്റുക", + "lists.exclusive": "ഈ എഴുത്തുകൾ ആമുഖം നിന്നു് മറയ്ക്കുക", "lists.new.create": "പുതിയ പട്ടിക ചേർക്കുക", "lists.replies_policy.none": "ആരുമില്ല", "lists.replies_policy.title": "ഇതിനുള്ള മറുപടികൾ കാണിക്കുക:", @@ -284,13 +299,13 @@ "notifications.mark_as_read": "എല്ലാ അറിയിപ്പുകളും വായിച്ചതായി അടയാളപ്പെടുത്തുക", "notifications_permission_banner.enable": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക", "onboarding.actions.go_to_explore": "See what's trending", - "onboarding.actions.go_to_home": "Go to your home feed", - "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", - "onboarding.follows.title": "Popular on Mastodon", + "onboarding.actions.go_to_home": "ആമുഖത്താൾ വരെ പോവ്വുക", + "onboarding.follows.lead": "", + "onboarding.follows.title": "താങ്ങളുടെ ആമുഖത്താളിന് വ്യക്തിപരമാക്കുക", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", - "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}", + "onboarding.steps.follow_people.title": "താങ്ങളുടെ ആമുഖത്താളിന് വ്യക്തിപരമാക്കുക", "onboarding.steps.publish_status.body": "Say hello to the world.", "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "Customize your profile", @@ -307,7 +322,7 @@ "privacy.public.short": "എല്ലാവര്‍ക്കും", "refresh": "പുതുക്കുക", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…", - "regeneration_indicator.sublabel": "നിങ്ങളുടെ ഹോം ഫീഡ് തയാറാക്കുന്നു!", + "regeneration_indicator.sublabel": "നിങ്ങളുടെ താങ്ങളുടെ ആമുഖത്താളിന് തയാറാക്കുന്നു!", "relative_time.days": "{number}ദിവസം", "relative_time.hours": "{number}മണി", "relative_time.just_now": "ഇപ്പോൾ", @@ -373,7 +388,7 @@ "upload_modal.preview_label": "പൂര്‍വ്വദൃശ്യം({ratio})", "upload_progress.label": "Uploading…", "video.close": "വീഡിയോ അടയ്ക്കുക", - "video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക", + "video.download": "ഫയൽ ഇറക്കുവയ്ക്കുക", "video.exit_fullscreen": "പൂർണ്ണ സ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക", "video.expand": "വീഡിയോ വികസപ്പിക്കൂ", "video.fullscreen": "പൂർണ്ണ സ്ക്രീൻ", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 9ad646b82c..5c47312522 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -781,7 +781,7 @@ "status.bookmark": "Bladwijzer toevoegen", "status.cancel_reblog_private": "Niet langer boosten", "status.cannot_reblog": "Dit bericht kan niet geboost worden", - "status.continued_thread": "Vervolgt het gesprek", + "status.continued_thread": "Vervolg van gesprek", "status.copy": "Link naar bericht kopiëren", "status.delete": "Verwijderen", "status.detailed_status": "Uitgebreide gespreksweergave", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index de1f4e0885..b4e7cc656b 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -34,7 +34,7 @@ "account.follow_back": "Подписаться в ответ", "account.followers": "Подписчики", "account.followers.empty": "На этого пользователя пока никто не подписан.", - "account.followers_counter": "{count, plural, one {{counter} последователя} other {{counter} последователей}}", + "account.followers_counter": "{count, plural, one {{counter} подписчик} few {{counter} подписчика} other {{counter} подписчиков}}", "account.following": "Подписки", "account.following_counter": "{count, plural, one {{counter} последующий} other {{counter} последующие}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", @@ -62,6 +62,7 @@ "account.requested_follow": "{name} отправил(а) вам запрос на подписку", "account.share": "Поделиться профилем @{name}", "account.show_reblogs": "Показывать продвижения от @{name}", + "account.statuses_counter": "{count, plural, one {# пост} few {# поста} many {# постов} other {# постов}}", "account.unblock": "Разблокировать @{name}", "account.unblock_domain": "Разблокировать {domain}", "account.unblock_short": "Разблокировать", @@ -77,8 +78,8 @@ "admin.dashboard.retention.cohort": "Месяц регистрации", "admin.dashboard.retention.cohort_size": "Новые пользователи", "admin.impact_report.instance_accounts": "Профили учетных записей, которые будут удалены", - "admin.impact_report.instance_followers": "Последователи, которых потеряют наши пользователи", - "admin.impact_report.instance_follows": "Последователи, которых потеряют наши пользователи", + "admin.impact_report.instance_followers": "Подписчики, которых потеряют наши пользователи", + "admin.impact_report.instance_follows": "Подписчики, которых потеряют их пользователи", "admin.impact_report.title": "Резюме воздействия", "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.", "alert.rate_limited.title": "Ограничение количества запросов", @@ -353,7 +354,7 @@ "hashtag.follow": "Подписаться на новые посты", "hashtag.unfollow": "Отписаться", "hashtags.and_other": "...и {count, plural, other {# ещё}}", - "hints.profiles.followers_may_be_missing": "Последователи для этого профиля могут отсутствовать.", + "hints.profiles.followers_may_be_missing": "Подписчики у этого профиля могут отсутствовать.", "hints.profiles.follows_may_be_missing": "Фолловеры для этого профиля могут отсутствовать.", "hints.profiles.posts_may_be_missing": "Некоторые сообщения из этого профиля могут отсутствовать.", "hints.profiles.see_more_followers": "Посмотреть больше подписчиков на {domain}", @@ -508,7 +509,7 @@ "notification.follow": "{name} подписался (-лась) на вас", "notification.follow.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", - "notification.follow_request.name_and_others": "{name} и {count, plural, one {# другие} other {# другие}} последовали за тобой", + "notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас", "notification.label.mention": "Упоминание", "notification.label.private_mention": "Частное упоминание", "notification.label.private_reply": "Частный ответ", @@ -638,7 +639,7 @@ "onboarding.steps.share_profile.title": "Поделитесь вашим профилем", "onboarding.tips.2fa": "Знаете ли вы? Вы можете защитить свой аккаунт, настроив двухфакторную аутентификацию в настройках аккаунта. Она работает с любым приложением TOTP по вашему выбору, номер телефона не требуется!", "onboarding.tips.accounts_from_other_servers": "Знали ли вы? Поскольку Mastodon децентрализован, некоторые профили, с которыми вы столкнетесь, будут размещены на серверах, отличных от вашего. И все же вы можете взаимодействовать с ними без проблем! Их сервер находится во второй половине имени пользователя!", - "onboarding.tips.migration": "Знаете ли вы? Если вы чувствуете, что {domain} не подходит вам в качестве сервера в будущем, вы можете переехать на другой сервер Mastodon без потери своих последователей. Вы даже можете разместить свой собственный сервер!", + "onboarding.tips.migration": "Знаете ли вы? Если вы чувствуете, что {domain} не подходит вам в качестве сервера в будущем, вы можете переехать на другой сервер Mastodon без потери своих подписчиков. Вы даже можете разместить свой собственный сервер!", "onboarding.tips.verification": "Знали ли вы? Вы можете подтвердить свою учетную запись, разместив ссылку на свой профиль Mastodon на собственном сайте и добавив сайт в свой профиль. Никаких сборов или документов не требуется!", "password_confirmation.exceeds_maxlength": "Срок подтверждения пароля превышает максимальную длину пароля", "password_confirmation.mismatching": "Введенные пароли не совпадают.", diff --git a/config/locales/ml.yml b/config/locales/ml.yml index bdc0475a6f..c27e5e5467 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -4,18 +4,25 @@ ml: contact_missing: സജ്ജമാക്കിയിട്ടില്ല contact_unavailable: ലഭ്യമല്ല accounts: + followers: + one: പിന്തുടരാളി + other: പിന്തുടരുന്നവർ following: പിന്തുടരുന്നു last_active: അവസാനം സജീവമായിരുന്നത് link_verified_on: സന്ധിയുടെ ഉടമസ്ഥാവസ്‌കാശം %{date} ൽ പരിശോധിക്കപ്പെട്ടു nothing_here: ഇവിടെ ഒന്നുമില്ല! posts_tab_heading: ടൂട്ടുകൾ admin: + account_moderation_notes: + create: ഒരു കുറിപ്പു് വിടുക accounts: + add_email_domain_block: ഈ ഇ-തപാൽ മേഖല തടസ്സപെടുത്തുക approve: അംഗീകരിക്കുക are_you_sure: നിങ്ങൾക്ക് ഉറപ്പാണോ? avatar: അവതാർ by_domain: മേഖല change_email: + changed_msg: ഇ-തപാൽ ശരിയായിട്ടു് മാറ്റീ! current_email: ഇപ്പോഴത്തെ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം label: മാറിയ ഇലക്ട്രോണിക് കത്തിന്റെ മേൽവിലാസം new_email: പുതിയ ഇലക്ട്രോണിക് കത്ത് @@ -24,6 +31,7 @@ ml: confirm: നിജപ്പെടുത്തുക confirmed: നിജപ്പെടുത്തി confirming: സ്ഥിരീകരിക്കുന്നു + custom: സ്വന്തമായ ഭേദഗതി delete: ഡാറ്റ ഇല്ലാതാക്കുക deleted: മായിച്ചു demote: തരം താഴ്ത്തുക @@ -34,7 +42,9 @@ ml: domain: മേഖല edit: തിരുത്തുക email: ഇമെയിൽ + email_status: ഇ-തപാൽ അവസ്ഥ header: തലക്കെട്ട് + inbox_url: ഇ-തപാല്പെട്ടി വിലാസം joined: ജോയിൻ ചെയ്‌തിരിക്കുന്നു location: all: എല്ലാം @@ -46,9 +56,18 @@ ml: all: എല്ലാം suspended: താൽക്കാലികമായി നിർത്തി title: മധ്യസ്ഥന്‍ + protocol: പെരുമാറ്റച്ചട്ടം + public: പൊതുവു് + remove_header: തലക്കെട്ടു് മാറ്റുക + resend_confirmation: + send: ഉറപ്പിക്കൽ-വിലാസം വീണ്ടും അയക്കുക reset: പുനഃക്രമീകരിക്കുക reset_password: പാസ്‌വേഡ് പുനഃക്രമീകരിക്കുക search: തിരയുക + security: സുരക്ഷ + security_measures: + only_password: രഹസ്യവാക്ക് മാത്രം + silence: അതിർ title: അക്കൗണ്ടുകൾ unconfirmed_email: സ്ഥിരീകരിക്കാത്ത ഇമെയിൽ username: ഉപയോക്തൃനാമം diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 0823e658a8..df9b80f3f8 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -899,10 +899,15 @@ sv: trends: allow: Tillåt approved: Godkänd + confirm_disallow: Är du säker på att du vill förbjuda valda taggar? disallow: Neka links: allow: Tillåt länk allow_provider: Tillåt utgivare + confirm_allow: Är du säker på att du vill tillåta valda länkar? + confirm_allow_provider: Är du säker på att du vill tillåta valda leverantörer? + confirm_disallow: Är du säker på att du vill förbjuda valda länkar? + confirm_disallow_provider: Är du säker på att du vill förbjuda valda leverantörer? description_html: Detta är länkar som för närvarande delas mycket av konton som din server ser inlägg från. Det kan hjälpa dina användare att ta reda på vad som händer i världen. Inga länkar visas offentligt tills du godkänner utgivaren. Du kan också tillåta eller avvisa enskilda länkar. disallow: Blockera länk disallow_provider: Blockera utgivare @@ -926,6 +931,10 @@ sv: statuses: allow: Tillåt inlägg allow_account: Godkänn författare + confirm_allow: Är du säker på att du vill tillåta valda statusar? + confirm_allow_account: Är du säker på att du vill tillåta valda konton? + confirm_disallow: Är du säker på att du vill förbjuda valda statusar? + confirm_disallow_account: Är du säker på att du vill förbjuda valda konton? description_html: Detta är inlägg som din server vet om som för närvarande delas och favoriseras mycket just nu. Det kan hjälpa dina nya och återvändande användare att hitta fler människor att följa. Inga inlägg visas offentligt förrän du godkänner författaren, och författaren tillåter att deras konto föreslås till andra. Du kan också tillåta eller avvisa enskilda inlägg. disallow: Tillåt inte inlägg disallow_account: Tillåt inte författare @@ -1130,6 +1139,7 @@ sv: title: Låt oss få igång dig på %{domain}. status: account_status: Kontostatus + confirming: Väntar på att e-postbekräftelsen ska slutföras. functional: Ditt konto fungerar som det ska. pending: Din ansökan inväntar granskning. Detta kan ta tid. Du kommer att få ett e-postmeddelande om din ansökan har godkänts. redirecting_to: Ditt konto är inaktivt eftersom det för närvarande dirigeras om till %{acct}. From 6c87c76e1825a377ebb87fdfcf7f5c438c1be589 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Wed, 16 Oct 2024 10:33:11 +0200 Subject: [PATCH 187/550] Add ability to group follow notifications in WebUI (#32520) --- .../mastodon/actions/notification_groups.ts | 21 ++++++++++++------- .../components/column_settings.jsx | 2 ++ .../containers/column_settings_container.js | 7 ++++--- .../components/notification_follow.tsx | 14 +++++++++++-- app/javascript/mastodon/locales/en.json | 3 ++- .../mastodon/reducers/notification_groups.ts | 11 ++++++---- app/javascript/mastodon/reducers/settings.js | 4 ++++ app/javascript/mastodon/selectors/settings.ts | 3 +++ 8 files changed, 48 insertions(+), 17 deletions(-) diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts index a359913e61..a3c8095ac4 100644 --- a/app/javascript/mastodon/actions/notification_groups.ts +++ b/app/javascript/mastodon/actions/notification_groups.ts @@ -8,6 +8,7 @@ import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; import type { ApiNotificationGroupJSON, ApiNotificationJSON, + NotificationType, } from 'mastodon/api_types/notifications'; import { allNotificationTypes } from 'mastodon/api_types/notifications'; import type { ApiStatusJSON } from 'mastodon/api_types/statuses'; @@ -15,6 +16,7 @@ import { usePendingItems } from 'mastodon/initial_state'; import type { NotificationGap } from 'mastodon/reducers/notification_groups'; import { selectSettingsNotificationsExcludedTypes, + selectSettingsNotificationsGroupFollows, selectSettingsNotificationsQuickFilterActive, selectSettingsNotificationsShows, } from 'mastodon/selectors/settings'; @@ -68,17 +70,19 @@ function dispatchAssociatedRecords( dispatch(importFetchedStatuses(fetchedStatuses)); } -const supportedGroupedNotificationTypes = ['favourite', 'reblog']; +function selectNotificationGroupedTypes(state: RootState) { + const types: NotificationType[] = ['favourite', 'reblog']; -export function shouldGroupNotificationType(type: string) { - return supportedGroupedNotificationTypes.includes(type); + if (selectSettingsNotificationsGroupFollows(state)) types.push('follow'); + + return types; } export const fetchNotifications = createDataLoadingThunk( 'notificationGroups/fetch', async (_params, { getState }) => apiFetchNotificationGroups({ - grouped_types: supportedGroupedNotificationTypes, + grouped_types: selectNotificationGroupedTypes(getState()), exclude_types: getExcludedTypes(getState()), }), ({ notifications, accounts, statuses }, { dispatch }) => { @@ -102,7 +106,7 @@ export const fetchNotificationsGap = createDataLoadingThunk( 'notificationGroups/fetchGap', async (params: { gap: NotificationGap }, { getState }) => apiFetchNotificationGroups({ - grouped_types: supportedGroupedNotificationTypes, + grouped_types: selectNotificationGroupedTypes(getState()), max_id: params.gap.maxId, exclude_types: getExcludedTypes(getState()), }), @@ -119,7 +123,7 @@ export const pollRecentNotifications = createDataLoadingThunk( 'notificationGroups/pollRecentNotifications', async (_params, { getState }) => { return apiFetchNotificationGroups({ - grouped_types: supportedGroupedNotificationTypes, + grouped_types: selectNotificationGroupedTypes(getState()), max_id: undefined, exclude_types: getExcludedTypes(getState()), // In slow mode, we don't want to include notifications that duplicate the already-displayed ones @@ -168,7 +172,10 @@ export const processNewNotificationForGroups = createAppAsyncThunk( dispatchAssociatedRecords(dispatch, [notification]); - return notification; + return { + notification, + groupedTypes: selectNotificationGroupedTypes(state), + }; }, ); diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx index ed2947c175..9616adcb93 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx +++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx @@ -38,6 +38,7 @@ class ColumnSettings extends PureComponent { const alertStr = ; const showStr = ; const soundStr = ; + const groupStr = ; const showPushSettings = pushSettings.get('browserSupport') && pushSettings.get('isSubscribed'); const pushStr = showPushSettings && ; @@ -94,6 +95,7 @@ class ColumnSettings extends PureComponent { {showPushSettings && } +
diff --git a/app/javascript/mastodon/features/notifications/containers/column_settings_container.js b/app/javascript/mastodon/features/notifications/containers/column_settings_container.js index 8bcc7ab4ef..4ac6cfa629 100644 --- a/app/javascript/mastodon/features/notifications/containers/column_settings_container.js +++ b/app/javascript/mastodon/features/notifications/containers/column_settings_container.js @@ -56,11 +56,12 @@ const mapDispatchToProps = (dispatch) => ({ } else { dispatch(changeSetting(['notifications', ...path], checked)); } - } else if(path[0] === 'groupingBeta') { - dispatch(changeSetting(['notifications', ...path], checked)); - dispatch(initializeNotifications()); } else { dispatch(changeSetting(['notifications', ...path], checked)); + + if(path[0] === 'group' && path[1] === 'follow') { + dispatch(initializeNotifications()); + } } }, diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx index 6a9a45d242..2c90777b9f 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx @@ -1,16 +1,19 @@ import { FormattedMessage } from 'react-intl'; +import { Link } from 'react-router-dom'; + import PersonAddIcon from '@/material-icons/400-24px/person_add-fill.svg?react'; import { FollowersCounter } from 'mastodon/components/counters'; import { FollowButton } from 'mastodon/components/follow_button'; import { ShortNumber } from 'mastodon/components/short_number'; +import { me } from 'mastodon/initial_state'; import type { NotificationGroupFollow } from 'mastodon/models/notification_group'; import { useAppSelector } from 'mastodon/store'; import type { LabelRenderer } from './notification_group_with_status'; import { NotificationGroupWithStatus } from './notification_group_with_status'; -const labelRenderer: LabelRenderer = (displayedName, total) => { +const labelRenderer: LabelRenderer = (displayedName, total, seeMoreHref) => { if (total === 1) return ( { return ( + seeMoreHref ? {chunks} : chunks, }} /> ); @@ -46,6 +51,10 @@ export const NotificationFollow: React.FC<{ notification: NotificationGroupFollow; unread: boolean; }> = ({ notification, unread }) => { + const username = useAppSelector( + (state) => state.accounts.getIn([me, 'username']) as string, + ); + let actions: JSX.Element | undefined; let additionalContent: JSX.Element | undefined; @@ -68,6 +77,7 @@ export const NotificationFollow: React.FC<{ timestamp={notification.latest_page_notification_at} count={notification.notifications_count} labelRenderer={labelRenderer} + labelSeeMoreHref={`/@${username}/followers`} unread={unread} actions={actions} additionalContent={additionalContent} diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 7f8dc74779..eb29c03712 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} favorited your post", "notification.favourite.name_and_others_with_link": "{name} and {count, plural, one {# other} other {# others}} favorited your post", "notification.follow": "{name} followed you", - "notification.follow.name_and_others": "{name} and {count, plural, one {# other} other {# others}} followed you", + "notification.follow.name_and_others": "{name} and {count, plural, one {# other} other {# others}} followed you", "notification.follow_request": "{name} has requested to follow you", "notification.follow_request.name_and_others": "{name} and {count, plural, one {# other} other {# others}} has requested to follow you", "notification.label.mention": "Mention", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.group": "Group", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index 91e91d7549..7a165f5fec 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -21,7 +21,6 @@ import { unmountNotifications, refreshStaleNotificationGroups, pollRecentNotifications, - shouldGroupNotificationType, } from 'mastodon/actions/notification_groups'; import { disconnectTimeline, @@ -30,6 +29,7 @@ import { import type { ApiNotificationJSON, ApiNotificationGroupJSON, + NotificationType, } from 'mastodon/api_types/notifications'; import { compareId } from 'mastodon/compare_id'; import { usePendingItems } from 'mastodon/initial_state'; @@ -205,8 +205,9 @@ function mergeGapsAround( function processNewNotification( groups: NotificationGroupsState['groups'], notification: ApiNotificationJSON, + groupedTypes: NotificationType[], ) { - if (!shouldGroupNotificationType(notification.type)) { + if (!groupedTypes.includes(notification.type)) { notification = { ...notification, group_key: `ungrouped-${notification.id}`, @@ -476,11 +477,13 @@ export const notificationGroupsReducer = createReducer( trimNotifications(state); }) .addCase(processNewNotificationForGroups.fulfilled, (state, action) => { - const notification = action.payload; - if (notification) { + if (action.payload) { + const { notification, groupedTypes } = action.payload; + processNewNotification( usePendingItems ? state.pendingGroups : state.groups, notification, + groupedTypes, ); updateLastReadId(state); trimNotifications(state); diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index e5ff2ff910..fc02ac7186 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -78,6 +78,10 @@ const initialState = ImmutableMap({ 'admin.sign_up': true, 'admin.report': true, }), + + group: ImmutableMap({ + follow: true + }), }), firehose: ImmutableMap({ diff --git a/app/javascript/mastodon/selectors/settings.ts b/app/javascript/mastodon/selectors/settings.ts index e722ad0911..ca34374167 100644 --- a/app/javascript/mastodon/selectors/settings.ts +++ b/app/javascript/mastodon/selectors/settings.ts @@ -52,4 +52,7 @@ export const selectSettingsNotificationsMinimizeFilteredBanner = ( ) => state.settings.getIn(['notifications', 'minimizeFilteredBanner']) as boolean; +export const selectSettingsNotificationsGroupFollows = (state: RootState) => + state.settings.getIn(['notifications', 'group', 'follow']) as boolean; + /* eslint-enable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ From 6ff1954bdbab3432807615c70849b181b1bef54b Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 16 Oct 2024 10:43:45 +0200 Subject: [PATCH 188/550] Change Active Record Encryption variable check to check for emptiness (#32537) --- .env.production.sample | 1 + config/initializers/active_record_encryption.rb | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.env.production.sample b/.env.production.sample index 87ea031c4c..3dd66abae4 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -50,6 +50,7 @@ OTP_SECRET= # Must be available (and set to same values) for all server processes # These are private/secret values, do not share outside hosting environment # Use `bin/rails db:encryption:init` to generate fresh secrets +# Do not change these secrets once in use, as this would cause data loss and other issues # ------------------ # ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= # ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT= diff --git a/config/initializers/active_record_encryption.rb b/config/initializers/active_record_encryption.rb index c53f16d4d1..9ae28e401b 100644 --- a/config/initializers/active_record_encryption.rb +++ b/config/initializers/active_record_encryption.rb @@ -10,7 +10,9 @@ ENV[key] = SecureRandom.hex(64) end - value = ENV.fetch(key) do + value = ENV.fetch(key, '') + + if value.blank? abort <<~MESSAGE Mastodon now requires that these variables are set: From bc2e642272eec058f153b59b155712e61bc2af7d Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Wed, 16 Oct 2024 12:40:40 +0200 Subject: [PATCH 189/550] Fix: Reword 'pick one' to 'single choice' for polls (#32397) --- .../mastodon/features/compose/components/poll_form.jsx | 2 +- app/javascript/mastodon/locales/en-GB.json | 2 +- app/javascript/mastodon/locales/en.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/poll_form.jsx b/app/javascript/mastodon/features/compose/components/poll_form.jsx index d2adc58cc0..e8d5331196 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.jsx +++ b/app/javascript/mastodon/features/compose/components/poll_form.jsx @@ -25,7 +25,7 @@ const messages = defineMessages({ minutes: { id: 'intervals.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}}' }, hours: { id: 'intervals.full.hours', defaultMessage: '{number, plural, one {# hour} other {# hours}}' }, days: { id: 'intervals.full.days', defaultMessage: '{number, plural, one {# day} other {# days}}' }, - singleChoice: { id: 'compose_form.poll.single', defaultMessage: 'Pick one' }, + singleChoice: { id: 'compose_form.poll.single', defaultMessage: 'Single choice' }, multipleChoice: { id: 'compose_form.poll.multiple', defaultMessage: 'Multiple choice' }, }); diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index d0b93d8bb8..bc8d1a419f 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Poll duration", "compose_form.poll.multiple": "Multiple choice", "compose_form.poll.option_placeholder": "Option {number}", - "compose_form.poll.single": "Pick one", + "compose_form.poll.single": "Single choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.type": "Style", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index eb29c03712..46b7d90dba 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Poll duration", "compose_form.poll.multiple": "Multiple choice", "compose_form.poll.option_placeholder": "Option {number}", - "compose_form.poll.single": "Pick one", + "compose_form.poll.single": "Single choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.type": "Style", From a0c7b317a727521a8c5d9c5af9a4d29107fd9a40 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 16 Oct 2024 08:52:06 -0400 Subject: [PATCH 190/550] Update rails to version 7.1.4.1 (#32542) --- Gemfile.lock | 106 +++++++++++++++++++++++++-------------------------- package.json | 2 +- yarn.lock | 10 ++--- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0de74c5ed6..d1ee8e0fa8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,35 +10,35 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) + actioncable (7.1.4.1) + actionpack (= 7.1.4.1) + activesupport (= 7.1.4.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + actionmailbox (7.1.4.1) + actionpack (= 7.1.4.1) + activejob (= 7.1.4.1) + activerecord (= 7.1.4.1) + activestorage (= 7.1.4.1) + activesupport (= 7.1.4.1) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.4) - actionpack (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activesupport (= 7.1.4) + actionmailer (7.1.4.1) + actionpack (= 7.1.4.1) + actionview (= 7.1.4.1) + activejob (= 7.1.4.1) + activesupport (= 7.1.4.1) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.4) - actionview (= 7.1.4) - activesupport (= 7.1.4) + actionpack (7.1.4.1) + actionview (= 7.1.4.1) + activesupport (= 7.1.4.1) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -46,15 +46,15 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.4) - actionpack (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + actiontext (7.1.4.1) + actionpack (= 7.1.4.1) + activerecord (= 7.1.4.1) + activestorage (= 7.1.4.1) + activesupport (= 7.1.4.1) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.4) - activesupport (= 7.1.4) + actionview (7.1.4.1) + activesupport (= 7.1.4.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -64,22 +64,22 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - activejob (7.1.4) - activesupport (= 7.1.4) + activejob (7.1.4.1) + activesupport (= 7.1.4.1) globalid (>= 0.3.6) - activemodel (7.1.4) - activesupport (= 7.1.4) - activerecord (7.1.4) - activemodel (= 7.1.4) - activesupport (= 7.1.4) + activemodel (7.1.4.1) + activesupport (= 7.1.4.1) + activerecord (7.1.4.1) + activemodel (= 7.1.4.1) + activesupport (= 7.1.4.1) timeout (>= 0.4.0) - activestorage (7.1.4) - actionpack (= 7.1.4) - activejob (= 7.1.4) - activerecord (= 7.1.4) - activesupport (= 7.1.4) + activestorage (7.1.4.1) + actionpack (= 7.1.4.1) + activejob (= 7.1.4.1) + activerecord (= 7.1.4.1) + activesupport (= 7.1.4.1) marcel (~> 1.0) - activesupport (7.1.4) + activesupport (7.1.4.1) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -638,20 +638,20 @@ GEM rackup (1.0.0) rack (< 3) webrick - rails (7.1.4) - actioncable (= 7.1.4) - actionmailbox (= 7.1.4) - actionmailer (= 7.1.4) - actionpack (= 7.1.4) - actiontext (= 7.1.4) - actionview (= 7.1.4) - activejob (= 7.1.4) - activemodel (= 7.1.4) - activerecord (= 7.1.4) - activestorage (= 7.1.4) - activesupport (= 7.1.4) + rails (7.1.4.1) + actioncable (= 7.1.4.1) + actionmailbox (= 7.1.4.1) + actionmailer (= 7.1.4.1) + actionpack (= 7.1.4.1) + actiontext (= 7.1.4.1) + actionview (= 7.1.4.1) + activejob (= 7.1.4.1) + activemodel (= 7.1.4.1) + activerecord (= 7.1.4.1) + activestorage (= 7.1.4.1) + activesupport (= 7.1.4.1) bundler (>= 1.15.0) - railties (= 7.1.4) + railties (= 7.1.4.1) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -666,9 +666,9 @@ GEM rails-i18n (7.0.9) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.1.4) - actionpack (= 7.1.4) - activesupport (= 7.1.4) + railties (7.1.4.1) + actionpack (= 7.1.4.1) + activesupport (= 7.1.4.1) irb rackup (>= 1.0.0) rake (>= 12.2) diff --git a/package.json b/package.json index 7a6dee1311..24770e6d25 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@formatjs/intl-pluralrules": "^5.2.2", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", - "@rails/ujs": "7.1.400", + "@rails/ujs": "7.1.401", "@reduxjs/toolkit": "^2.0.1", "@svgr/webpack": "^5.5.0", "arrow-key-navigation": "^1.2.0", diff --git a/yarn.lock b/yarn.lock index 626b7bae21..2e1ad6ade6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2803,7 +2803,7 @@ __metadata: "@formatjs/intl-pluralrules": "npm:^5.2.2" "@gamestdio/websocket": "npm:^0.3.2" "@github/webauthn-json": "npm:^2.1.1" - "@rails/ujs": "npm:7.1.400" + "@rails/ujs": "npm:7.1.401" "@reduxjs/toolkit": "npm:^2.0.1" "@svgr/webpack": "npm:^5.5.0" "@testing-library/dom": "npm:^10.2.0" @@ -3102,10 +3102,10 @@ __metadata: languageName: node linkType: hard -"@rails/ujs@npm:7.1.400": - version: 7.1.400 - resolution: "@rails/ujs@npm:7.1.400" - checksum: 10c0/181329e731b925788a530dc5bc44eb4a07ae780e20b0309fd9140ebeeca30d9432ed50be0f25ae60f10beb3aa8883f6d662e4b9c6f6cd19a32c1f42ab2505c47 +"@rails/ujs@npm:7.1.401": + version: 7.1.401 + resolution: "@rails/ujs@npm:7.1.401" + checksum: 10c0/08eae084c80e837e47cc01d0be25a431495f7dea381dcaaa4ce39a3217fac46bf87d169b3dfcf304ae16e0714de7435c2b8c5eb8d5052e3ba70ef3050a72fa3c languageName: node linkType: hard From 5103abc3ec8fa8923541ad03b94fa7924b017b6c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 17 Oct 2024 03:22:13 -0400 Subject: [PATCH 191/550] Fix trailing slash newline in changelog (#32545) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 566c474356..0fc5291d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,7 @@ The following changelog entries focus on changes visible to users, administrator ```html ``` - On the API side, this is represented by a new `authors` attribute to the `PreviewCard` entity: https://docs.joinmastodon.org/entities/PreviewCard/#authors\ + On the API side, this is represented by a new `authors` attribute to the `PreviewCard` entity: https://docs.joinmastodon.org/entities/PreviewCard/#authors \ Users can allow arbitrary domains to use `fediverse:creator` to credit them by visiting `/settings/verification`.\ This is federated as a new `attributionDomains` property in the `http://joinmastodon.org/ns` namespace, containing an array of domain names: https://docs.joinmastodon.org/spec/activitypub/#properties-used-1 - **Add in-app notifications for moderation actions and warnings** (#30065, #30082, and #30081 by @ClearlyClaire)\ From b23ff050acebeac7ce09581ad65151b361362998 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Thu, 17 Oct 2024 10:17:18 +0200 Subject: [PATCH 192/550] Fix missing or incorrect cache-control headers for Streaming server (#32551) --- streaming/index.js | 4 ++-- streaming/metrics.js | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/streaming/index.js b/streaming/index.js index 48ed56b29b..3e362f1860 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -235,7 +235,7 @@ const startServer = async () => { app.get('/favicon.ico', (_req, res) => res.status(404).end()); app.get('/api/v1/streaming/health', (_req, res) => { - res.writeHead(200, { 'Content-Type': 'text/plain' }); + res.writeHead(200, { 'Content-Type': 'text/plain', 'Cache-Control': 'private, no-store' }); res.end('OK'); }); @@ -858,7 +858,7 @@ const startServer = async () => { } res.setHeader('Content-Type', 'text/event-stream'); - res.setHeader('Cache-Control', 'no-store'); + res.setHeader('Cache-Control', 'private, no-store'); res.setHeader('Transfer-Encoding', 'chunked'); res.write(':)\n'); diff --git a/streaming/metrics.js b/streaming/metrics.js index bb6bce3f3c..263339a1ca 100644 --- a/streaming/metrics.js +++ b/streaming/metrics.js @@ -98,9 +98,11 @@ export function setupMetrics(channels, pgPool) { const requestHandler = (req, res) => { metrics.register.metrics().then((output) => { res.set('Content-Type', metrics.register.contentType); + res.set('Cache-Control', 'private, no-store'); res.end(output); }).catch((err) => { req.log.error(err, "Error collecting metrics"); + res.set('Cache-Control', 'private, no-store'); res.status(500).end(); }); }; From 009f2ebc324458209c8827eab64cb7d9c81f3404 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 10:21:51 +0200 Subject: [PATCH 193/550] New Crowdin Translations (automated) (#32553) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/ast.json | 1 + app/javascript/mastodon/locales/be.json | 1 - app/javascript/mastodon/locales/bg.json | 2 -- app/javascript/mastodon/locales/br.json | 3 ++- app/javascript/mastodon/locales/ca.json | 2 -- app/javascript/mastodon/locales/ckb.json | 1 - app/javascript/mastodon/locales/cs.json | 1 - app/javascript/mastodon/locales/cy.json | 2 -- app/javascript/mastodon/locales/da.json | 4 ++-- app/javascript/mastodon/locales/de.json | 3 ++- app/javascript/mastodon/locales/el.json | 2 -- app/javascript/mastodon/locales/en-GB.json | 2 -- app/javascript/mastodon/locales/eo.json | 5 ++-- app/javascript/mastodon/locales/es-AR.json | 5 ++-- app/javascript/mastodon/locales/es-MX.json | 11 +++++---- app/javascript/mastodon/locales/es.json | 5 ++-- app/javascript/mastodon/locales/et.json | 2 -- app/javascript/mastodon/locales/eu.json | 2 -- app/javascript/mastodon/locales/fa.json | 2 -- app/javascript/mastodon/locales/fi.json | 5 ++-- app/javascript/mastodon/locales/fil.json | 1 - app/javascript/mastodon/locales/fo.json | 5 ++-- app/javascript/mastodon/locales/fr-CA.json | 9 +++---- app/javascript/mastodon/locales/fr.json | 13 +++++----- app/javascript/mastodon/locales/fy.json | 2 -- app/javascript/mastodon/locales/ga.json | 5 ++-- app/javascript/mastodon/locales/gd.json | 2 -- app/javascript/mastodon/locales/gl.json | 5 ++-- app/javascript/mastodon/locales/he.json | 2 -- app/javascript/mastodon/locales/hi.json | 1 - app/javascript/mastodon/locales/hu.json | 5 ++-- app/javascript/mastodon/locales/ia.json | 2 -- app/javascript/mastodon/locales/id.json | 1 - app/javascript/mastodon/locales/ie.json | 1 - app/javascript/mastodon/locales/ig.json | 1 - app/javascript/mastodon/locales/io.json | 2 -- app/javascript/mastodon/locales/is.json | 5 ++-- app/javascript/mastodon/locales/it.json | 4 ++-- app/javascript/mastodon/locales/ja.json | 2 -- app/javascript/mastodon/locales/kab.json | 1 - app/javascript/mastodon/locales/ko.json | 3 ++- app/javascript/mastodon/locales/lad.json | 15 +++++++++++- app/javascript/mastodon/locales/lt.json | 3 ++- app/javascript/mastodon/locales/lv.json | 1 - app/javascript/mastodon/locales/ml.json | 25 ++++++++++++++++++++ app/javascript/mastodon/locales/ms.json | 1 - app/javascript/mastodon/locales/nl.json | 3 ++- app/javascript/mastodon/locales/nn.json | 5 ++-- app/javascript/mastodon/locales/no.json | 1 - app/javascript/mastodon/locales/pl.json | 5 ++-- app/javascript/mastodon/locales/pt-BR.json | 5 ++-- app/javascript/mastodon/locales/pt-PT.json | 2 -- app/javascript/mastodon/locales/ro.json | 1 - app/javascript/mastodon/locales/ru.json | 2 -- app/javascript/mastodon/locales/ry.json | 1 - app/javascript/mastodon/locales/sc.json | 2 -- app/javascript/mastodon/locales/sk.json | 1 - app/javascript/mastodon/locales/sl.json | 1 - app/javascript/mastodon/locales/sq.json | 3 +-- app/javascript/mastodon/locales/sr-Latn.json | 1 - app/javascript/mastodon/locales/sr.json | 1 - app/javascript/mastodon/locales/sv.json | 3 +-- app/javascript/mastodon/locales/th.json | 2 -- app/javascript/mastodon/locales/tok.json | 1 - app/javascript/mastodon/locales/tr.json | 5 ++-- app/javascript/mastodon/locales/uk.json | 3 +-- app/javascript/mastodon/locales/vi.json | 3 ++- app/javascript/mastodon/locales/zh-CN.json | 3 ++- app/javascript/mastodon/locales/zh-HK.json | 1 - app/javascript/mastodon/locales/zh-TW.json | 5 ++-- config/locales/activerecord.lad.yml | 5 ++++ config/locales/doorkeeper.sv.yml | 1 + config/locales/eo.yml | 12 ++++++++++ config/locales/es-MX.yml | 22 ++++++++--------- config/locales/hu.yml | 1 + config/locales/lad.yml | 5 ++++ config/locales/nn.yml | 10 ++++---- config/locales/ru.yml | 2 ++ config/locales/simple_form.lad.yml | 1 + config/locales/simple_form.nn.yml | 2 +- config/locales/sv.yml | 19 +++++++++++++++ 82 files changed, 184 insertions(+), 135 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index b11382cf03..6d8290f8a1 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -157,7 +157,6 @@ "compose_form.poll.duration": "مُدَّة اِستطلاع الرأي", "compose_form.poll.multiple": "متعدد الخيارات", "compose_form.poll.option_placeholder": "الخيار {number}", - "compose_form.poll.single": "اختر واحدا", "compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة", "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", "compose_form.poll.type": "الطراز", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index a7f44aeade..f2a0c22a77 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -300,6 +300,7 @@ "notifications.column_settings.admin.sign_up": "Rexistros nuevos:", "notifications.column_settings.follow": "Siguidores nuevos:", "notifications.column_settings.follow_request": "Solicitúes de siguimientu nueves:", + "notifications.column_settings.group": "Agrupar", "notifications.column_settings.mention": "Menciones:", "notifications.column_settings.poll": "Resultaos de les encuestes:", "notifications.column_settings.reblog": "Artículos compartíos:", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index d3a29eae40..eb5cd5053d 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -156,7 +156,6 @@ "compose_form.poll.duration": "Працягласць апытання", "compose_form.poll.multiple": "Множны выбар", "compose_form.poll.option_placeholder": "Варыянт {number}", - "compose_form.poll.single": "Адзін варыянт", "compose_form.poll.switch_to_multiple": "Змяніце апытанне, каб дазволіць некалькі варыянтаў адказу", "compose_form.poll.switch_to_single": "Змяніце апытанне, каб дазволіць адзіны варыянт адказу", "compose_form.poll.type": "Стыль", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 1e462ba752..3d5d8a8585 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Времетраене на анкетата", "compose_form.poll.multiple": "Множествен избор", "compose_form.poll.option_placeholder": "Избор {number}", - "compose_form.poll.single": "Подберете нещо", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", "compose_form.poll.type": "Стил", @@ -490,7 +489,6 @@ "notification.favourite": "{name} направи любима публикацията ви", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# друг} other {# други}} направиха любима ваша публикация", "notification.follow": "{name} ви последва", - "notification.follow.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} ви последваха", "notification.follow_request": "{name} поиска да ви последва", "notification.follow_request.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} поискаха да ви последват", "notification.label.mention": "Споменаване", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 79949ed91f..1f0c90efcb 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -145,7 +145,6 @@ "compose_form.poll.duration": "Pad ar sontadeg", "compose_form.poll.multiple": "Meur a choaz", "compose_form.poll.option_placeholder": "Choaz {number}", - "compose_form.poll.single": "Dibabit unan", "compose_form.poll.switch_to_multiple": "Kemmañ ar sontadeg evit aotren meur a zibab", "compose_form.poll.switch_to_single": "Kemmañ ar sontadeg evit aotren un dibab hepken", "compose_form.poll.type": "Neuz", @@ -385,6 +384,7 @@ "notification.admin.report": "Disklêriet eo bet {target} gant {name}", "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv", "notification.follow": "heuliañ a ra {name} ac'hanoc'h", + "notification.follow.name_and_others": "{name} {count, plural, one {hag # den all} two {ha # zen all} few {ha # den all} many {ha # den all} other {ha # den all}} zo o heuliañ ac'hanoc'h", "notification.follow_request": "Gant {name} eo bet goulennet ho heuliañ", "notification.moderation-warning.learn_more": "Gouzout hiroc'h", "notification.own_poll": "Echu eo ho sontadeg", @@ -399,6 +399,7 @@ "notifications.column_settings.favourite": "Muiañ-karet:", "notifications.column_settings.follow": "Heulierien nevez:", "notifications.column_settings.follow_request": "Pedadoù heuliañ nevez :", + "notifications.column_settings.group": "Strollañ", "notifications.column_settings.mention": "Menegoù:", "notifications.column_settings.poll": "Disoc'hoù ar sontadeg:", "notifications.column_settings.push": "Kemennoù push", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1b583b3204..990a3ef97d 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.multiple": "Opcions múltiples", "compose_form.poll.option_placeholder": "Opció {number}", - "compose_form.poll.single": "Trieu-ne una", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre múltiples opcions", "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", "compose_form.poll.type": "Estil", @@ -508,7 +507,6 @@ "notification.favourite": "{name} ha afavorit el teu tut", "notification.favourite.name_and_others_with_link": "{name} i {count, plural, one {# altre} other {# altres}} han afavorit la vostra publicació", "notification.follow": "{name} et segueix", - "notification.follow.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} us han seguit", "notification.follow_request": "{name} ha sol·licitat de seguir-te", "notification.follow_request.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} han demanat de seguir-vos", "notification.label.mention": "Menció", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index bea6e5ceec..469cf4410d 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -143,7 +143,6 @@ "compose_form.poll.duration": "ماوەی ڕاپرسی", "compose_form.poll.multiple": "فرە هەڵبژاردە", "compose_form.poll.option_placeholder": "بژاردەی {number}", - "compose_form.poll.single": "یەکێك هەلبژێرە", "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک", "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک", "compose_form.poll.type": "ستایڵ", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 1f2804daa5..7198bcab58 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -157,7 +157,6 @@ "compose_form.poll.duration": "Doba trvání ankety", "compose_form.poll.multiple": "Výběr z více možností", "compose_form.poll.option_placeholder": "Volba {number}", - "compose_form.poll.single": "Vyber jednu", "compose_form.poll.switch_to_multiple": "Povolit u ankety výběr více voleb", "compose_form.poll.switch_to_single": "Povolit u ankety výběr pouze jedné volby", "compose_form.poll.type": "Styl", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 43446f31e0..8645c72faa 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Cyfnod pleidlais", "compose_form.poll.multiple": "Dewis lluosog", "compose_form.poll.option_placeholder": "Dewis {number}", - "compose_form.poll.single": "Ddewis un", "compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis", "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.poll.type": "Arddull", @@ -508,7 +507,6 @@ "notification.favourite": "Ffafriodd {name} eich postiad", "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# eraill}} eich postiad", "notification.follow": "Dilynodd {name} chi", - "notification.follow.name_and_others": "Mae {name} a {count, plural, one {# other} other {# others}} wedi'ch dilyn chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# other} other {# others}} wedi gofyn i'ch dilyn chi", "notification.label.mention": "Crybwyll", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e225bb30ae..0227702d51 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Afstemningens varighed", "compose_form.poll.multiple": "Multivalg", "compose_form.poll.option_placeholder": "Valgmulighed {number}", - "compose_form.poll.single": "Vælg én", "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", "compose_form.poll.type": "Stil", @@ -508,7 +507,7 @@ "notification.favourite": "{name} favoritmarkerede dit indlæg", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# anden} other {# andre}} gjorde dit indlæg til favorit", "notification.follow": "{name} begyndte at følge dig", - "notification.follow.name_and_others": "{name} og {count, plural, one {# anden} other {# andre}} følger dig", + "notification.follow.name_and_others": "{name} og {count, plural, one {# andre} other {# andre}} begyndte at følge dig", "notification.follow_request": "{name} har anmodet om at følge dig", "notification.follow_request.name_and_others": "{name} og {count, plural, one {# anden} other {# andre}} har anmodet om at følger dig", "notification.label.mention": "Omtale", @@ -567,6 +566,7 @@ "notifications.column_settings.filter_bar.category": "Hurtigfiltreringsbjælke", "notifications.column_settings.follow": "Nye følgere:", "notifications.column_settings.follow_request": "Nye følgeanmodninger:", + "notifications.column_settings.group": "Gruppere", "notifications.column_settings.mention": "Omtaler:", "notifications.column_settings.poll": "Afstemningsresultater:", "notifications.column_settings.push": "Push-notifikationer", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index b807d93ab3..75672a60d6 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} favorisierte deinen Beitrag", "notification.favourite.name_and_others_with_link": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} favorisierten deinen Beitrag", "notification.follow": "{name} folgt dir", - "notification.follow.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} folgen dir", + "notification.follow.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} folgen dir", "notification.follow_request": "{name} möchte dir folgen", "notification.follow_request.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} möchten dir folgen", "notification.label.mention": "Erwähnung", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Filterleiste", "notifications.column_settings.follow": "Neue Follower:", "notifications.column_settings.follow_request": "Neue Follower-Anfragen:", + "notifications.column_settings.group": "Gruppieren", "notifications.column_settings.mention": "Erwähnungen:", "notifications.column_settings.poll": "Umfrageergebnisse:", "notifications.column_settings.push": "Push-Benachrichtigungen", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 2565f5da68..e362d9b89b 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Διάρκεια δημοσκόπησης", "compose_form.poll.multiple": "Πολλαπλή επιλογή", "compose_form.poll.option_placeholder": "Επιλογή {number}", - "compose_form.poll.single": "Διάλεξε ένα", "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές", "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.poll.type": "Στυλ", @@ -508,7 +507,6 @@ "notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου", "notification.favourite.name_and_others_with_link": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} αγάπησαν την ανάρτησή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", - "notification.follow.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} σε ακολούθησαν", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν", "notification.label.mention": "Επισήμανση", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index bc8d1a419f..728ca89c73 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Poll duration", "compose_form.poll.multiple": "Multiple choice", "compose_form.poll.option_placeholder": "Option {number}", - "compose_form.poll.single": "Single choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.type": "Style", @@ -508,7 +507,6 @@ "notification.favourite": "{name} favourited your post", "notification.favourite.name_and_others_with_link": "{name} and {count, plural, one {# other} other {# others}} favourited your post", "notification.follow": "{name} followed you", - "notification.follow.name_and_others": "{name} and {count, plural, one {# other} other {# others}} followed you", "notification.follow_request": "{name} has requested to follow you", "notification.follow_request.name_and_others": "{name} and {count, plural, one {# other} other {# others}} has requested to follow you", "notification.label.mention": "Mention", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index a6f6e0e85e..6beb5a9716 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Daŭro de la balotenketo", "compose_form.poll.multiple": "Multobla elekto", "compose_form.poll.option_placeholder": "Opcio {number}", - "compose_form.poll.single": "Elektu unu", + "compose_form.poll.single": "Ununura elekto", "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn", "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton", "compose_form.poll.type": "Stilo", @@ -508,7 +508,7 @@ "notification.favourite": "{name} stelumis vian afiŝon", "notification.favourite.name_and_others_with_link": "{name} kaj {count, plural, one {# alia} other {# aliaj}} ŝatis vian afiŝon", "notification.follow": "{name} eksekvis vin", - "notification.follow.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} sekvis vin", + "notification.follow.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} sekvis vin", "notification.follow_request": "{name} petis sekvi vin", "notification.follow_request.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} petis sekvi vin", "notification.label.mention": "Mencii", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Rapida filtrila breto", "notifications.column_settings.follow": "Novaj sekvantoj:", "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", + "notifications.column_settings.group": "Grupo", "notifications.column_settings.mention": "Mencioj:", "notifications.column_settings.poll": "Balotenketaj rezultoj:", "notifications.column_settings.push": "Puŝsciigoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index af0a032991..2410c278a6 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Duración de la encuesta", "compose_form.poll.multiple": "Múltiples opciones", "compose_form.poll.option_placeholder": "Opción {number}", - "compose_form.poll.single": "Elegí una", + "compose_form.poll.single": "Opción única", "compose_form.poll.switch_to_multiple": "Cambiar encuesta para permitir opciones múltiples", "compose_form.poll.switch_to_single": "Cambiar encuesta para permitir una sola opción", "compose_form.poll.type": "Estilo", @@ -508,7 +508,7 @@ "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}} marcaron tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", - "notification.follow.name_and_others": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}} te están siguiendo", + "notification.follow.name_and_others": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}} te están siguiendo", "notification.follow_request": "{name} solicitó seguirte", "notification.follow_request.name_and_others": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}} solicitaron seguirte", "notification.label.mention": "Mención", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", + "notifications.column_settings.group": "Agrupar", "notifications.column_settings.mention": "Menciones:", "notifications.column_settings.poll": "Resultados de la encuesta:", "notifications.column_settings.push": "Notificaciones push", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index d101d3bc81..2f9d1feb01 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -158,9 +158,9 @@ "compose_form.poll.duration": "Duración de la encuesta", "compose_form.poll.multiple": "Selección múltiple", "compose_form.poll.option_placeholder": "Opción {number}", - "compose_form.poll.single": "Seleccione uno", - "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones", - "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", + "compose_form.poll.single": "Selección única", + "compose_form.poll.switch_to_multiple": "Cambiar la encuesta para permitir múltiples opciones", + "compose_form.poll.switch_to_single": "Cambiar la encuesta para permitir una única opción", "compose_form.poll.type": "Estilo", "compose_form.publish": "Publicación", "compose_form.publish_form": "Publicar", @@ -508,7 +508,7 @@ "notification.favourite": "{name} marcó como favorita tu publicación", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# otro} other {# otros}} marcaron tu publicación como favorita", "notification.follow": "{name} te empezó a seguir", - "notification.follow.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} te siguieron", + "notification.follow.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} te han seguido", "notification.follow_request": "{name} ha solicitado seguirte", "notification.follow_request.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} han solicitado seguirte", "notification.label.mention": "Mención", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", + "notifications.column_settings.group": "Grupo", "notifications.column_settings.mention": "Menciones:", "notifications.column_settings.poll": "Resultados de la votación:", "notifications.column_settings.push": "Notificaciones push", @@ -644,7 +645,7 @@ "onboarding.steps.setup_profile.title": "Personaliza tu perfil", "onboarding.steps.share_profile.body": "Dile a tus amigos cómo encontrarte en Mastodon", "onboarding.steps.share_profile.title": "Comparte tu perfil", - "onboarding.tips.2fa": "¿Sabías que? Puedes proteger tu cuenta configurando la autenticación de dos factores en la configuración de su cuenta. Funciona con cualquier aplicación TOTP de su elección, ¡no necesitas número de teléfono!", + "onboarding.tips.2fa": "¿Sabías que? Puedes proteger tu cuenta configurando la autenticación de dos factores en los ajustes de su cuenta. Funciona con cualquier aplicación TOTP que elijas, ¡sin necesidad de número de teléfono!", "onboarding.tips.accounts_from_other_servers": "¿Sabías que? Como Mastodon es descentralizado, algunos perfiles que encuentras están alojados en servidores distintos del tuyo. Y sin embargo, ¡puedes interactuar con ellos! ¡Su servidor corresponde a la segunda mitad de su nombre de usuario!", "onboarding.tips.migration": "¿Sabías que? Si sientes que {domain} no es una gran elección de servidor para ti en el futuro, puedes moverte a otro servidor de Mastodon sin perder a tus seguidores. ¡Incluso puedes alojar tu propio servidor!", "onboarding.tips.verification": "¿Sabías que? Puedes verificar tu cuenta poniendo un enlace a tu perfil de Mastodon en su propio sitio web y añadiendo el sitio web a su perfil. ¡Sin necesidad de comisiones ni documentos!", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 2aeb7d47ea..fa4159abce 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Duración de la encuesta", "compose_form.poll.multiple": "Selección múltiple", "compose_form.poll.option_placeholder": "Opción {number}", - "compose_form.poll.single": "Elige uno", + "compose_form.poll.single": "Opción única", "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones", "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", "compose_form.poll.type": "Estilo", @@ -508,7 +508,7 @@ "notification.favourite": "{name} marcó como favorita tu publicación", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}} marcaron tu publicación como favorita", "notification.follow": "{name} te empezó a seguir", - "notification.follow.name_and_others": "{name} y {count, plural, one {# más} other {# más}} te siguieron", + "notification.follow.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} te siguieron", "notification.follow_request": "{name} ha solicitado seguirte", "notification.follow_request.name_and_others": "{name} y {count, plural, one {# más} other {# más}} han solicitado seguirte", "notification.label.mention": "Mención", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", + "notifications.column_settings.group": "Grupo", "notifications.column_settings.mention": "Menciones:", "notifications.column_settings.poll": "Resultados de la votación:", "notifications.column_settings.push": "Notificaciones push", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 82e7e6d67c..3c58548eb7 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Küsitluse kestus", "compose_form.poll.multiple": "Mitu vastust", "compose_form.poll.option_placeholder": "Valik {number}", - "compose_form.poll.single": "Vali üks", "compose_form.poll.switch_to_multiple": "Muuda küsitlust mitmikvaliku lubamiseks", "compose_form.poll.switch_to_single": "Muuda küsitlust ainult ühe valiku lubamiseks", "compose_form.poll.type": "Stiil", @@ -508,7 +507,6 @@ "notification.favourite": "{name} märkis su postituse lemmikuks", "notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# veel} other {# teist}} märkis su postituse lemmikuks", "notification.follow": "{name} alustas su jälgimist", - "notification.follow.name_and_others": "{name} ja {count, plural, one {# veel} other {# teist}} hakkas sind jälgima", "notification.follow_request": "{name} soovib sind jälgida", "notification.follow_request.name_and_others": "{name} ja {count, plural, one {# veel} other {# teist}} taotles sinu jälgimist", "notification.label.mention": "Mainimine", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 70ea7601fe..cd8fbeefbc 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Inkestaren iraupena", "compose_form.poll.multiple": "Aukera aniza", "compose_form.poll.option_placeholder": "{number}. aukera", - "compose_form.poll.single": "Hautatu bat", "compose_form.poll.switch_to_multiple": "Aldatu inkesta hainbat aukera onartzeko", "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", "compose_form.poll.type": "Estiloa", @@ -504,7 +503,6 @@ "notification.favourite": "{name}(e)k zure bidalketa gogoko du", "notification.favourite.name_and_others_with_link": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zure bidalketa gogoko dute", "notification.follow": "{name}(e)k jarraitzen dizu", - "notification.follow.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} jarraitu dizute", "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du", "notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute", "notification.label.mention": "Aipamena", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index ef8136da61..6afdb53746 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "مدت نظرسنجی", "compose_form.poll.multiple": "چند گزینه‌ای", "compose_form.poll.option_placeholder": "گزینهٔ {number}", - "compose_form.poll.single": "گزینش یکی", "compose_form.poll.switch_to_multiple": "تغییر نظرسنجی برای اجازه به چندین گزینه", "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", "compose_form.poll.type": "سبک", @@ -495,7 +494,6 @@ "notification.favourite": "{name} فرسته‌تان را برگزید", "notification.favourite.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرسته‌تان را برگزیدند", "notification.follow": "‫{name}‬ پی‌گیرتان شد", - "notification.follow.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} پیتان گرفتند", "notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.follow_request.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} درخواست پی‌گیریتان را دادند", "notification.label.mention": "اشاره", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index ac7ab097fa..717ea78559 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Äänestyksen kesto", "compose_form.poll.multiple": "Monivalinta", "compose_form.poll.option_placeholder": "Vaihtoehto {number}", - "compose_form.poll.single": "Valitse yksi", + "compose_form.poll.single": "Yksittäisvalinta", "compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi", "compose_form.poll.type": "Tyyli", @@ -508,7 +508,7 @@ "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}} lisäsivät julkaisusi suosikkeihinsa", "notification.follow": "{name} seurasi sinua", - "notification.follow.name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}} seurasivat sinua", + "notification.follow.name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}} seurasivat sinua", "notification.follow_request": "{name} on pyytänyt lupaa seurata sinua", "notification.follow_request.name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}} pyysivät saada seurata sinua", "notification.label.mention": "Maininta", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki", "notifications.column_settings.follow": "Uudet seuraajat:", "notifications.column_settings.follow_request": "Uudet seurantapyynnöt:", + "notifications.column_settings.group": "Ryhmitä", "notifications.column_settings.mention": "Maininnat:", "notifications.column_settings.poll": "Äänestyksen tulokset:", "notifications.column_settings.push": "Puskuilmoitukset", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index a2009d8ba3..3822fbcf85 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -118,7 +118,6 @@ "compose_form.placeholder": "Anong nangyari?", "compose_form.poll.duration": "Tagal ng botohan", "compose_form.poll.multiple": "Maraming pagpipilian", - "compose_form.poll.single": "Piliin ang isa", "compose_form.reply": "Tumugon", "compose_form.spoiler.marked": "Tanggalin ang babala sa nilalaman", "compose_form.spoiler.unmarked": "Idagdag ang babala sa nilalaman", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 5ad8ba557b..0e2bc88136 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Atkvøðugreiðslutíð", "compose_form.poll.multiple": "Fleiri valmøguleikar", "compose_form.poll.option_placeholder": "Valmøguleiki {number}", - "compose_form.poll.single": "Vel ein", + "compose_form.poll.single": "Einfalt val", "compose_form.poll.switch_to_multiple": "Broyt atkvøðugreiðslu til at loyva fleiri svarum", "compose_form.poll.switch_to_single": "Broyt atkvøðugreiðslu til einstakt svar", "compose_form.poll.type": "Stílur", @@ -508,7 +508,7 @@ "notification.favourite": "{name} dámdi postin hjá tær", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} yndisfrámerktu postin hjá tær", "notification.follow": "{name} fylgdi tær", - "notification.follow.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} fylgdu tær", + "notification.follow.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} fylgdu tær", "notification.follow_request": "{name} biður um at fylgja tær", "notification.follow_request.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} hava biðið um at fylgja tær", "notification.label.mention": "Umrøða", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Skjótfilturbjálki", "notifications.column_settings.follow": "Nýggir fylgjarar:", "notifications.column_settings.follow_request": "Nýggjar umbønir um at fylgja:", + "notifications.column_settings.group": "Bólkur", "notifications.column_settings.mention": "Umrøður:", "notifications.column_settings.poll": "Úrslit frá atkvøðugreiðslu:", "notifications.column_settings.push": "Trýstifráboðanir", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index f5ab605e3a..e73a3249cb 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -89,7 +89,7 @@ "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.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 utilisateur·rice·s non connecté·e·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.", @@ -194,7 +194,7 @@ "confirmations.reply.title": "Remplacer le message ?", "confirmations.unfollow.confirm": "Ne plus suivre", "confirmations.unfollow.message": "Voulez-vous vraiment arrêter de suivre {name}?", - "confirmations.unfollow.title": "Se désabonner de l'utilisateur ?", + "confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?", "content_warning.hide": "Masquer le message", "content_warning.show": "Afficher quand même", "conversation.delete": "Supprimer cette conversation", @@ -224,7 +224,7 @@ "domain_block_modal.title": "Bloquer le domaine ?", "domain_block_modal.you_will_lose_num_followers": "Vous allez perdre {followersCount, plural, one {{followersCountDisplay} abonné·e} other {{followersCountDisplay} abonné·e·s}} et {followingCount, plural, one {{followingCountDisplay} personne que vous suivez} other {{followingCountDisplay} personnes que vous suivez}}.", "domain_block_modal.you_will_lose_relationships": "Vous allez perdre tous les abonné·e·s et les personnes que vous suivez sur ce serveur.", - "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateurs de ce serveur.", + "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateur·rice·s 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", @@ -508,7 +508,7 @@ "notification.favourite": "{name} a ajouté votre publication à ses favoris", "notification.favourite.name_and_others_with_link": "{name} et {count, plural, one {# autre} other {# autres}} ont mis votre message en favori", "notification.follow": "{name} vous suit", - "notification.follow.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont abonné à votre compte", + "notification.follow.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} vous suivent", "notification.follow_request": "{name} a demandé à vous suivre", "notification.follow_request.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} ont demandé à vous suivre", "notification.label.mention": "Mention", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barre de filtre rapide", "notifications.column_settings.follow": "Nouveaux⋅elles abonné⋅e⋅s:", "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement:", + "notifications.column_settings.group": "Grouper", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Résultats des sondages:", "notifications.column_settings.push": "Notifications push", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 1c773d0e39..319316272b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -79,7 +79,7 @@ "admin.dashboard.retention.cohort_size": "Nouveaux comptes", "admin.impact_report.instance_accounts": "Profils de comptes que cela supprimerait", "admin.impact_report.instance_followers": "Abonnées que nos utilisateurs perdraient", - "admin.impact_report.instance_follows": "Abonnées que leurs utilisateurs perdraient", + "admin.impact_report.instance_follows": "Abonné·e·s que leurs utilisateur·rice·s perdraient", "admin.impact_report.title": "Résumé de l'impact", "alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.", "alert.rate_limited.title": "Nombre de requêtes limité", @@ -89,7 +89,7 @@ "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.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 utilisateur·rice·s non connecté·e·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.", @@ -194,7 +194,7 @@ "confirmations.reply.title": "Remplacer le message ?", "confirmations.unfollow.confirm": "Ne plus suivre", "confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name} ?", - "confirmations.unfollow.title": "Se désabonner de l'utilisateur ?", + "confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?", "content_warning.hide": "Masquer le message", "content_warning.show": "Afficher quand même", "conversation.delete": "Supprimer la conversation", @@ -224,7 +224,7 @@ "domain_block_modal.title": "Bloquer le domaine ?", "domain_block_modal.you_will_lose_num_followers": "Vous allez perdre {followersCount, plural, one {{followersCountDisplay} abonné·e} other {{followersCountDisplay} abonné·e·s}} et {followingCount, plural, one {{followingCountDisplay} personne que vous suivez} other {{followingCountDisplay} personnes que vous suivez}}.", "domain_block_modal.you_will_lose_relationships": "Vous allez perdre tous les abonné·e·s et les personnes que vous suivez sur ce serveur.", - "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateurs de ce serveur.", + "domain_block_modal.you_wont_see_posts": "Vous ne verrez plus les publications ou les notifications des utilisateur·rice·s 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", @@ -262,7 +262,7 @@ "empty_column.blocks": "Vous n’avez bloqué aucun compte pour le moment.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", - "empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en envoyez ou en recevez, elles apparaîtront ici.", + "empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en enverrez ou recevrez, elles apparaîtront ici.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", "empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !", "empty_column.favourited_statuses": "Vous n’avez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.", @@ -508,7 +508,7 @@ "notification.favourite": "{name} a ajouté votre message à ses favoris", "notification.favourite.name_and_others_with_link": "{name} et {count, plural, one {# autre} other {# autres}} ont mis votre message en favori", "notification.follow": "{name} vous suit", - "notification.follow.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont abonné à votre compte", + "notification.follow.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} vous suivent", "notification.follow_request": "{name} a demandé à vous suivre", "notification.follow_request.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} ont demandé à vous suivre", "notification.label.mention": "Mention", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barre de filtre rapide", "notifications.column_settings.follow": "Nouveaux·elles abonné·e·s :", "notifications.column_settings.follow_request": "Nouvelles demandes d’abonnement :", + "notifications.column_settings.group": "Grouper", "notifications.column_settings.mention": "Mentions :", "notifications.column_settings.poll": "Résultats des sondages :", "notifications.column_settings.push": "Notifications push", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 9fa2300fbc..0790a0dc57 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Doer fan de enkête", "compose_form.poll.multiple": "Mearkar", "compose_form.poll.option_placeholder": "Opsje {number}", - "compose_form.poll.single": "Kies ien", "compose_form.poll.switch_to_multiple": "Enkête wizigje om meardere karren ta te stean", "compose_form.poll.switch_to_single": "Enkête wizigje om in inkelde kar ta te stean", "compose_form.poll.type": "Styl", @@ -508,7 +507,6 @@ "notification.favourite": "{name} hat jo berjocht as favoryt markearre", "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe jo berjocht as favoryt markearre", "notification.follow": "{name} folget dy", - "notification.follow.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe jo folge", "notification.follow_request": "{name} hat dy in folchfersyk stjoerd", "notification.follow_request.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe frege om jo te folgjen", "notification.label.mention": "Fermelding", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 61b42e60f2..81b93816ea 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Achar suirbhéanna", "compose_form.poll.multiple": "Ilrogha", "compose_form.poll.option_placeholder": "Rogha {number}", - "compose_form.poll.single": "Roghnaigh ceann amháin", + "compose_form.poll.single": "Rogha aonair", "compose_form.poll.switch_to_multiple": "Athraigh suirbhé chun cead a thabhairt do ilrogha", "compose_form.poll.switch_to_single": "Athraigh suirbhé chun cead a thabhairt do rogha amháin", "compose_form.poll.type": "Stíl", @@ -508,7 +508,7 @@ "notification.favourite": "Is fearr le {name} do phostáil", "notification.favourite.name_and_others_with_link": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} thaitin le do phost", "notification.follow": "Lean {name} thú", - "notification.follow.name_and_others": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} a lean tú", + "notification.follow.name_and_others": "{name} agus {count, plural, one {# other} two {# eile} few {# eile} many {# eile} other {# others}} lean tú", "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint", "notification.follow_request.name_and_others": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} iarratas a dhéanamh chun tú a leanúint", "notification.label.mention": "Luaigh", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra scagairí tapa", "notifications.column_settings.follow": "Leantóirí nua:", "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:", + "notifications.column_settings.group": "Grúpa", "notifications.column_settings.mention": "Tráchtanna:", "notifications.column_settings.poll": "Torthaí suirbhéanna:", "notifications.column_settings.push": "Brúfhógraí", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 52dc7b2998..a9da2cd5ec 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Faide a’ chunntais", "compose_form.poll.multiple": "Iomadh-roghainn", "compose_form.poll.option_placeholder": "Roghainn {number}", - "compose_form.poll.single": "Aonan", "compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh", "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", "compose_form.poll.type": "Stoidhle", @@ -508,7 +507,6 @@ "notification.favourite": "Is annsa le {name} am post agad", "notification.favourite.name_and_others_with_link": "Is annsa le {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} am post agad", "notification.follow": "Tha {name} ’gad leantainn a-nis", - "notification.follow.name_and_others": "Lean {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} thu", "notification.follow_request": "Dh’iarr {name} ’gad leantainn", "notification.follow_request.name_and_others": "Dh’iarr {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} ’gad leantainn", "notification.label.mention": "Iomradh", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 27b4ad2460..5e40b0e429 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Duración da enquisa", "compose_form.poll.multiple": "Escolla múltiple", "compose_form.poll.option_placeholder": "Opción {number}", - "compose_form.poll.single": "Elixe unha", + "compose_form.poll.single": "Opción única", "compose_form.poll.switch_to_multiple": "Mudar a enquisa para permitir múltiples escollas", "compose_form.poll.switch_to_single": "Mudar a enquisa para permitir unha soa opción", "compose_form.poll.type": "Estilo", @@ -508,7 +508,7 @@ "notification.favourite": "{name} marcou como favorita a túa publicación", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# máis} other {# máis}} favoreceron a túa publicación", "notification.follow": "{name} comezou a seguirte", - "notification.follow.name_and_others": "{name} e {count, plural, one {# máis} other {# máis}} seguíronte", + "notification.follow.name_and_others": "{name} e {count, plural, one {# mais} other {# mais}} seguíronte", "notification.follow_request": "{name} solicitou seguirte", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# máis} other {# máis}} solicitaron seguirte", "notification.label.mention": "Mención", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.follow": "Novas seguidoras:", "notifications.column_settings.follow_request": "Novas peticións de seguimento:", + "notifications.column_settings.group": "Agrupar", "notifications.column_settings.mention": "Mencións:", "notifications.column_settings.poll": "Resultados da enquisa:", "notifications.column_settings.push": "Notificacións emerxentes", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index d9b0382f4a..2ad3a47f0d 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "משך הסקר", "compose_form.poll.multiple": "בחירה מרובה", "compose_form.poll.option_placeholder": "אפשרות {number}", - "compose_form.poll.single": "נא לבחור", "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.poll.type": "סוג משאל", @@ -508,7 +507,6 @@ "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.favourite.name_and_others_with_link": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}} חיבבו את הודעתך", "notification.follow": "{name} במעקב אחרייך", - "notification.follow.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} עקבו אחריך", "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.follow_request.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} ביקשו לעקוב אחריך", "notification.label.mention": "אזכור", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 4a513c1c07..e0de4c8452 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -151,7 +151,6 @@ "compose_form.poll.duration": "चुनाव की अवधि", "compose_form.poll.multiple": "बहुविकल्पी", "compose_form.poll.option_placeholder": "विकल्प {number}", - "compose_form.poll.single": "कोई एक चुनें", "compose_form.poll.switch_to_multiple": "कई विकल्पों की अनुमति देने के लिए पोल बदलें", "compose_form.poll.switch_to_single": "एक ही विकल्प के लिए अनुमति देने के लिए पोल बदलें", "compose_form.poll.type": "स्टाइल", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 0fee79f8b5..a6bd621a48 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Szavazás időtartama", "compose_form.poll.multiple": "Több lehetőség", "compose_form.poll.option_placeholder": "Válasz {number}", - "compose_form.poll.single": "Egyetlen válasz", + "compose_form.poll.single": "Feleletválasztós", "compose_form.poll.switch_to_multiple": "Szavazás megváltoztatása több választásosra", "compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra", "compose_form.poll.type": "Stílus", @@ -508,7 +508,7 @@ "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.favourite.name_and_others_with_link": "{name} és {count, plural, one {# másik} other {# másik}} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", - "notification.follow.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} követni kezdett", + "notification.follow.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} követni kezdett", "notification.follow_request": "{name} követni szeretne téged", "notification.follow_request.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} kérte, hogy követhessen", "notification.label.mention": "Említés", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Gyorsszűrő sáv", "notifications.column_settings.follow": "Új követők:", "notifications.column_settings.follow_request": "Új követési kérések:", + "notifications.column_settings.group": "Csoportosítás", "notifications.column_settings.mention": "Megemlítések:", "notifications.column_settings.poll": "Szavazási eredmények:", "notifications.column_settings.push": "Leküldéses értesítések", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index f559824738..58e978cd14 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Durata del sondage", "compose_form.poll.multiple": "Selection multiple", "compose_form.poll.option_placeholder": "Option {number}", - "compose_form.poll.single": "Seliger un", "compose_form.poll.switch_to_multiple": "Cambiar le sondage pro permitter selectiones multiple", "compose_form.poll.switch_to_single": "Cambiar le sondage pro permitter selection singule", "compose_form.poll.type": "Stilo", @@ -508,7 +507,6 @@ "notification.favourite": "{name} ha marcate tu message como favorite", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# altere} other {# alteres}} favoriva tu message", "notification.follow": "{name} te ha sequite", - "notification.follow.name_and_others": "{name} e {count, plural, one {# altere} other {# alteres}} te sequeva", "notification.follow_request": "{name} ha requestate de sequer te", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# altere} other {# alteres}} ha demandate de sequer te", "notification.label.mention": "Mention", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index f5c71d4a36..085705714e 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -155,7 +155,6 @@ "compose_form.poll.duration": "Durasi japat", "compose_form.poll.multiple": "Pilihan ganda", "compose_form.poll.option_placeholder": "Opsi {number}", - "compose_form.poll.single": "Pilih Satu", "compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda", "compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal", "compose_form.poll.type": "Gaya", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index d91c49e83f..f58cf1c71c 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -151,7 +151,6 @@ "compose_form.poll.duration": "Duration del balotation", "compose_form.poll.multiple": "Selection multiplic", "compose_form.poll.option_placeholder": "Option {number}", - "compose_form.poll.single": "Selecter un", "compose_form.poll.switch_to_multiple": "Changea li balotation por permisser multiplic selectiones", "compose_form.poll.switch_to_single": "Changea li balotation por permisser un singul selection", "compose_form.poll.type": "Stil", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index 8a8d043a6b..b8b0f1084d 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -33,7 +33,6 @@ "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.placeholder": "What is on your mind?", - "compose_form.poll.single": "Họrọ otu", "compose_form.publish_form": "Publish", "compose_form.reply": "Zaa", "compose_form.spoiler.marked": "Text is hidden behind warning", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index bfc248a845..21a8a084e7 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Votpostoduro", "compose_form.poll.multiple": "Multopla selekteso", "compose_form.poll.option_placeholder": "Selektato {number}", - "compose_form.poll.single": "Selektez un", "compose_form.poll.switch_to_multiple": "Chanjez votposto por permisar multiselektaji", "compose_form.poll.switch_to_single": "Chanjez votposto por permisar una selektajo", "compose_form.poll.type": "Stilo", @@ -508,7 +507,6 @@ "notification.favourite": "{name} favorizis tua mesajo", "notification.favourite.name_and_others_with_link": "{name} e {count, plural,one {# altru} other {# altri}} favorizis vua posto", "notification.follow": "{name} sequeskis tu", - "notification.follow.name_and_others": "{name} e {count, plural,one {# altru} other {#altri}} sequis vu", "notification.follow_request": "{name} demandas sequar vu", "notification.follow_request.name_and_others": "{name} e {count, plural,one {# altru} other {# altri}} volas sequar vu", "notification.label.mention": "Mencionez", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 19d17eaf45..a6f85304cd 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Tímalengd könnunar", "compose_form.poll.multiple": "Margir valkostir", "compose_form.poll.option_placeholder": "Valkostur {number}", - "compose_form.poll.single": "Veldu eitt", + "compose_form.poll.single": "Eitt val", "compose_form.poll.switch_to_multiple": "Breyta könnun svo hægt sé að hafa marga valkosti", "compose_form.poll.switch_to_single": "Breyta könnun svo hægt sé að hafa einn stakan valkost", "compose_form.poll.type": "Stíll", @@ -508,7 +508,7 @@ "notification.favourite": "{name} setti færsluna þína í eftirlæti", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} sett færsluna þína í eftirlæti", "notification.follow": "{name} fylgist með þér", - "notification.follow.name_and_others": "{name} og {count, plural, one {# í viðbót fylgdist} other {# í viðbót fylgdust}} með þér", + "notification.follow.name_and_others": "{name} og {count, plural, one {# í viðbót fylgdist} other {# í viðbót fylgdust}} með þér", "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.follow_request.name_and_others": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} beðið um að fylgjast með þér", "notification.label.mention": "Minnst á", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Skyndisíustika", "notifications.column_settings.follow": "Nýir fylgjendur:", "notifications.column_settings.follow_request": "Nýjar beiðnir um að fylgjast með:", + "notifications.column_settings.group": "Hópur", "notifications.column_settings.mention": "Tilvísanir:", "notifications.column_settings.poll": "Niðurstöður könnunar:", "notifications.column_settings.push": "Ýti-tilkynningar", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 885be73c62..41d233079a 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Durata del sondaggio", "compose_form.poll.multiple": "Scelta multipla", "compose_form.poll.option_placeholder": "Opzione {number}", - "compose_form.poll.single": "Scegli uno", "compose_form.poll.switch_to_multiple": "Modifica il sondaggio per consentire scelte multiple", "compose_form.poll.switch_to_single": "Modifica il sondaggio per consentire una singola scelta", "compose_form.poll.type": "Stile", @@ -508,7 +507,7 @@ "notification.favourite": "{name} ha aggiunto il tuo post ai preferiti", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# altro} other {altri #}} hanno aggiunto il tuo post ai preferiti", "notification.follow": "{name} ha iniziato a seguirti", - "notification.follow.name_and_others": "{name} e {count, plural, one {# altro} other {altri #}} hanno iniziato a seguirti", + "notification.follow.name_and_others": "{name} e {count, plural, one {# altro} other {altri #}} hanno iniziato a seguirti", "notification.follow_request": "{name} ha richiesto di seguirti", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# altro} other {altri #}} hanno richiesto di seguirti", "notification.label.mention": "Menziona", @@ -567,6 +566,7 @@ "notifications.column_settings.filter_bar.category": "Barra del filtro veloce", "notifications.column_settings.follow": "Nuovi seguaci:", "notifications.column_settings.follow_request": "Nuove richieste di seguirti:", + "notifications.column_settings.group": "Gruppo", "notifications.column_settings.mention": "Menzioni:", "notifications.column_settings.poll": "Risultati del sondaggio:", "notifications.column_settings.push": "Notifiche push", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index edab7abef9..814b2f8124 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "アンケート期間", "compose_form.poll.multiple": "複数選択", "compose_form.poll.option_placeholder": "項目{number}", - "compose_form.poll.single": "単一選択", "compose_form.poll.switch_to_multiple": "複数選択に変更", "compose_form.poll.switch_to_single": "単一選択に変更", "compose_form.poll.type": "スタイル", @@ -508,7 +507,6 @@ "notification.favourite": "{name}さんがお気に入りしました", "notification.favourite.name_and_others_with_link": "{name}さんほか{count, plural, other {#人}}がお気に入りしました", "notification.follow": "{name}さんにフォローされました", - "notification.follow.name_and_others": "{name}さんほか{count, plural, other {#人}}にフォローされました", "notification.follow_request": "{name}さんがあなたにフォローリクエストしました", "notification.follow_request.name_and_others": "{name}さんほか{count, plural, other {#人}}があなたにフォローリクエストしました", "notification.label.mention": "メンション", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 35e9be816e..9cf94f2606 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -137,7 +137,6 @@ "compose_form.poll.duration": "Tanzagt n tefrant", "compose_form.poll.multiple": "Aṭas n ufran", "compose_form.poll.option_placeholder": "Taxtiṛt {number}", - "compose_form.poll.single": "Fren yiwen", "compose_form.poll.type": "Aɣanib", "compose_form.publish": "Suffeɣ", "compose_form.publish_form": "Tasuffeɣt tamaynut", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 04e099d8bc..6b1dc6b365 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} 님이 내 게시물을 좋아합니다", "notification.favourite.name_and_others_with_link": "{name} 외 {count, plural, other {# 명}}이 내 게시물을 좋아합니다", "notification.follow": "{name} 님이 나를 팔로우했습니다", - "notification.follow.name_and_others": "{name} 외 {count, plural, other {# 명}}이 날 팔로우 했습니다", + "notification.follow.name_and_others": "{name} 외 {count, plural, other {# 명}}이 날 팔로우했습니다", "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다", "notification.follow_request.name_and_others": "{name} 외 {count, plural, other {# 명}}이 나에게 팔로우 요청을 보냈습니다", "notification.label.mention": "멘션", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "빠른 필터 막대", "notifications.column_settings.follow": "새 팔로워:", "notifications.column_settings.follow_request": "새 팔로우 요청:", + "notifications.column_settings.group": "그룹화", "notifications.column_settings.mention": "멘션:", "notifications.column_settings.poll": "설문 결과:", "notifications.column_settings.push": "푸시 알림", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index e5ff3cead0..147546c977 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Trafiko limitado", "alert.unexpected.message": "Afito un yerro no asperado.", "alert.unexpected.title": "Atyo!", + "alt_text_badge.title": "Teksto alternativo", "announcement.announcement": "Pregon", "attachments_list.unprocessed": "(no prosesado)", "audio.hide": "Eskonde audio", @@ -154,7 +155,6 @@ "compose_form.poll.duration": "Durasion de anketa", "compose_form.poll.multiple": "Multiples opsyones", "compose_form.poll.option_placeholder": "Opsyon {number}", - "compose_form.poll.single": "Eskoje uno", "compose_form.poll.switch_to_multiple": "Troka anketa para permeter a eskojer mas ke una opsyon", "compose_form.poll.switch_to_single": "Troka anketa para permeter a eskojer solo una opsyon", "compose_form.poll.type": "Estilo", @@ -334,6 +334,11 @@ "hashtag.follow": "Sige etiketa", "hashtag.unfollow": "Desige etiketa", "hashtags.and_other": "…i {count, plural, one {}other {# mas}}", + "hints.profiles.see_more_followers": "Ve mas suivantes en {domain}", + "hints.profiles.see_more_follows": "Ve mas segidos en {domain}", + "hints.profiles.see_more_posts": "Ve mas puvlikasyones en {domain}", + "hints.threads.replies_may_be_missing": "Puede mankar repuestas de otros sirvidores.", + "hints.threads.see_more": "Ve mas repuestas en {domain}", "home.column_settings.show_reblogs": "Amostra repartajasyones", "home.column_settings.show_replies": "Amostra repuestas", "home.hide_announcements": "Eskonde pregones", @@ -342,6 +347,9 @@ "home.pending_critical_update.title": "Aktualizasyon de seguridad kritika esta desponivle!", "home.show_announcements": "Amostra pregones", "ignore_notifications_modal.ignore": "Inyora avizos", + "ignore_notifications_modal.limited_accounts_title": "Inyorar avizos de kuentos moderados?", + "ignore_notifications_modal.new_accounts_title": "Inyorar avizos de kuentos muevos?", + "ignore_notifications_modal.not_followers_title": "Inyorar avizos de personas a las kualas no te sigen?", "ignore_notifications_modal.not_following_title": "Inyorar avizos de personas a las kualas no siges?", "interaction_modal.description.favourite": "Kon un kuento en Mastodon, puedes markar esta publikasyon komo favorita para ke el autor sepa ke te plaze i para guadrarla para dempues.", "interaction_modal.description.follow": "Kon un kuento en Mastodon, puedes segir a {name} para risivir sus publikasyones en tu linya temporal prinsipala.", @@ -484,6 +492,7 @@ "notification_requests.dismiss": "Kita", "notification_requests.edit_selection": "Edita", "notification_requests.exit_selection": "Fecho", + "notification_requests.maximize": "Maksimizar", "notification_requests.notifications_from": "Avizos de {name}", "notification_requests.title": "Avizos filtrados", "notification_requests.view": "Amostra avizos", @@ -498,6 +507,7 @@ "notifications.column_settings.filter_bar.category": "Vara de filtrado rapido", "notifications.column_settings.follow": "Muevos suivantes:", "notifications.column_settings.follow_request": "Muevas solisitudes de segimiento:", + "notifications.column_settings.group": "Grupo", "notifications.column_settings.mention": "Enmentaduras:", "notifications.column_settings.poll": "Rizultados de anketas:", "notifications.column_settings.push": "Avizos arrepushados", @@ -525,6 +535,7 @@ "notifications.policy.accept_hint": "Amostra en avizos", "notifications.policy.drop": "Inyora", "notifications.policy.filter": "Filtra", + "notifications.policy.filter_limited_accounts_title": "Kuentos moderados", "notifications.policy.filter_new_accounts.hint": "Kriyadas durante {days, plural, one {el ultimo diya} other {los ultimos # diyas}}", "notifications.policy.filter_new_accounts_title": "Muevos kuentos", "notifications.policy.filter_not_followers_title": "Personas ke te no sigen", @@ -657,6 +668,7 @@ "report.unfollow_explanation": "Estas sigiendo este kuento. Para no ver sus publikasyones en tu linya de tiempo, puedes deshar de segirlo.", "report_notification.attached_statuses": "{count, plural, one {{count} publikasyon} other {{count} publikasyones}} atadas", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "kontenido ilegal", "report_notification.categories.other": "Otros", "report_notification.categories.other_sentence": "otros", "report_notification.categories.spam": "Spam", @@ -731,6 +743,7 @@ "status.reblogs.empty": "Ainda nadie tiene repartajado esta publikasyon. Kuando algien lo aga, se amostrara aki.", "status.redraft": "Efasa i eskrive de muevo", "status.remove_bookmark": "Kita markador", + "status.replied_in_thread": "Arispondo en filo", "status.replied_to": "Arispondio a {name}", "status.reply": "Arisponde", "status.replyAll": "Arisponde al filo", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 043dcfb05d..60d0acf7a1 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Apklausos trukmė", "compose_form.poll.multiple": "Keli pasirinkimai", "compose_form.poll.option_placeholder": "{number} parinktis", - "compose_form.poll.single": "Pasirinkti vieną", "compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų leidžiama pasirinkti kelis pasirinkimus", "compose_form.poll.switch_to_single": "Keisti apklausą, kad būtų leidžiama pasirinkti vieną pasirinkimą", "compose_form.poll.type": "Stilius", @@ -506,6 +505,7 @@ "notification.admin.sign_up": "{name} užsiregistravo", "notification.favourite": "{name} pamėgo tavo įrašą", "notification.follow": "{name} seka tave", + "notification.follow.name_and_others": "{name} ir {count, plural, one {# kitas} few {# kiti} many {# kito} other {# kitų}} seka tave", "notification.follow_request": "{name} paprašė tave sekti", "notification.label.mention": "Paminėjimas", "notification.label.private_mention": "Privatus paminėjimas", @@ -559,6 +559,7 @@ "notifications.column_settings.filter_bar.category": "Spartaus filtro juosta", "notifications.column_settings.follow": "Nauji sekėjai:", "notifications.column_settings.follow_request": "Nauji sekimo prašymai:", + "notifications.column_settings.group": "Grupė", "notifications.column_settings.mention": "Paminėjimai:", "notifications.column_settings.poll": "Balsavimo rezultatai:", "notifications.column_settings.push": "Tiesioginiai pranešimai", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 1e973ffd3e..7d325c057d 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -153,7 +153,6 @@ "compose_form.poll.duration": "Aptaujas ilgums", "compose_form.poll.multiple": "Vairākas izvēles iespējas", "compose_form.poll.option_placeholder": "Izvēle {number}", - "compose_form.poll.single": "Jāizvēlas viens", "compose_form.poll.switch_to_multiple": "Mainīt aptaujas veidu, lai atļautu vairākas izvēles", "compose_form.poll.switch_to_single": "Mainīt aptaujas veidu, lai atļautu vienu izvēli", "compose_form.poll.type": "Stils", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 66354de666..38a425cb90 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -194,7 +194,12 @@ "follow_request.reject": "നിരസിക്കുക", "follow_suggestions.dismiss": "വീണ്ടും കാണിക്കരുതു്", "follow_suggestions.view_all": "എല്ലാം കാണുക", + "follow_suggestions.who_to_follow": "ആരേ പിന്തുടരണം", + "followed_tags": "പിന്തുടരിയതു് ചർച്ചാവിഷയങ്ങൾ", + "footer.get_app": "ഉപകരണം ലഭിക്കൂ", + "footer.invite": "ആളുകളെ ക്ഷണിക്കുക", "footer.privacy_policy": "സ്വകാര്യത്തനയം", + "footer.source_code": "ഉറവിടസങ്കേതം കാണുക", "generic.saved": "സംരക്ഷിച്ചു", "getting_started.heading": "തുടക്കം കുറിക്കുക", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", @@ -206,6 +211,8 @@ "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും", "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല", "hashtag.column_settings.tag_toggle": "ഈ എഴുത്തുപംക്തിക്ക് കൂടുതൽ ഉപനാമങ്ങൾ ചേർക്കുക", + "hashtag.follow": "ചർച്ചാവിഷയം പിന്തുടരുക", + "hashtag.unfollow": "ചർച്ചാവിഷയം പിന്തുടരരുതു്", "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക", "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക", "home.hide_announcements": "പ്രഖ്യാപനങ്ങൾ മറയ്‌ക്കുക", @@ -264,19 +271,26 @@ "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.explore": "ആരായുക", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "navigation_bar.lists": "ലിസ്റ്റുകൾ", "navigation_bar.logout": "ലോഗൗട്ട്", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", + "navigation_bar.personal": "സ്വകാര്യ", "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", + "navigation_bar.search": "തിരയുക", "navigation_bar.security": "സുരക്ഷ", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു", "notification.follow_request": "{name} നിങ്ങളെ പിന്തുടരാൻ അഭ്യർത്ഥിച്ചു", + "notification.label.reply": "മറുപടി", + "notification.moderation-warning.learn_more": "ഇനീം അറിയുക", + "notification.moderation_warning.action_silence": "താങ്ങളുടെ ഇടപാടു് പരിധിപെട്ടിരിക്കുന്നു.", "notification.own_poll": "നിങ്ങളുടെ പോൾ അവസാനിച്ചു", "notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു", "notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്‌തു", + "notification_requests.edit_selection": "പരിഷ്കരിക്കുക", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക", "notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്‌ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ", @@ -288,6 +302,7 @@ "notifications.column_settings.reblog": "ബൂസ്റ്റുകൾ:", "notifications.column_settings.sound": "ശബ്ദം പ്ലേ ചെയ്യുക", "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:", + "notifications.column_settings.update": "പരിഷ്കരണങ്ങൾ:", "notifications.filter.all": "എല്ലാം", "notifications.filter.boosts": "ബൂസ്റ്റുകൾ", "notifications.filter.follows": "പിന്തുടരുന്നു", @@ -302,6 +317,7 @@ "onboarding.actions.go_to_home": "ആമുഖത്താൾ വരെ പോവ്വുക", "onboarding.follows.lead": "", "onboarding.follows.title": "താങ്ങളുടെ ആമുഖത്താളിന് വ്യക്തിപരമാക്കുക", + "onboarding.share.title": "താങ്ങളുടെ രൂപരേഖ പങ്കിടുക", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", @@ -319,17 +335,26 @@ "poll_button.add_poll": "ഒരു പോൾ ചേർക്കുക", "poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക", "privacy.change": "ടൂട്ട് സ്വകാര്യത ക്രമീകരിക്കുക", + "privacy.private.long": "താങ്ങളെ പിന്തുടരുന്നവർ മാത്രം", + "privacy.private.short": "പിന്തുടരുന്നവർ", "privacy.public.short": "എല്ലാവര്‍ക്കും", + "privacy_policy.title": "സ്വകാര്യത്തനയം", "refresh": "പുതുക്കുക", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…", "regeneration_indicator.sublabel": "നിങ്ങളുടെ താങ്ങളുടെ ആമുഖത്താളിന് തയാറാക്കുന്നു!", "relative_time.days": "{number}ദിവസം", + "relative_time.full.just_now": "ഇപ്പോൾതന്നെ", "relative_time.hours": "{number}മണി", "relative_time.just_now": "ഇപ്പോൾ", "relative_time.today": "ഇന്ന്", "reply_indicator.cancel": "റദ്ദാക്കുക", + "report.block": "തടസ്സപെടുത്തുക", + "report.category.title_account": "രൂപരേഖ", + "report.close": "ചെയ്തു", "report.forward_hint": "ഈ അക്കൗണ്ട് മറ്റൊരു സെർവറിൽ നിന്നാണ്. റിപ്പോർട്ടിന്റെ അജ്ഞാത പകർപ്പ് അവിടെ അയയ്ക്കണോ?", + "report.next": "അടുത്തതു്", "report.placeholder": "കൂടുതൽ അഭിപ്രായങ്ങൾ", + "report.reasons.spam": "ഇതു് പാഴടക്കമാണു്", "report.submit": "സമർപ്പിക്കുക", "report.target": "Report {target}", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 749461d1a8..9dea731397 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -147,7 +147,6 @@ "compose_form.poll.duration": "Tempoh undian", "compose_form.poll.multiple": "Pelbagai pilihan", "compose_form.poll.option_placeholder": "Pilihan {number}", - "compose_form.poll.single": "Pilih satu", "compose_form.poll.switch_to_multiple": "Ubah kepada membenarkan aneka undian", "compose_form.poll.switch_to_single": "Ubah kepada undian pilihan tunggal", "compose_form.poll.type": "Gaya", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 5c47312522..8df1fc4d1f 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben jouw bericht als favoriet gemarkeerd", "notification.follow": "{name} volgt jou nu", - "notification.follow.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben je gevolgd", + "notification.follow.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} volgen jou nou", "notification.follow_request": "{name} wil jou graag volgen", "notification.follow_request.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben gevraagd om je te volgen", "notification.label.mention": "Vermelding", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Snelle filterbalk", "notifications.column_settings.follow": "Nieuwe volgers:", "notifications.column_settings.follow_request": "Nieuw volgverzoek:", + "notifications.column_settings.group": "Groeperen", "notifications.column_settings.mention": "Vermeldingen:", "notifications.column_settings.poll": "Peilingresultaten:", "notifications.column_settings.push": "Pushmeldingen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 58ed018ba0..e2a6ac9c26 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Varigheit for rundspørjing", "compose_form.poll.multiple": "Fleirval", "compose_form.poll.option_placeholder": "Alternativ {number}", - "compose_form.poll.single": "Vel ein", + "compose_form.poll.single": "Eitt val", "compose_form.poll.switch_to_multiple": "Endre rundspørjinga til å tillate fleire val", "compose_form.poll.switch_to_single": "Endre rundspørjinga til å tillate berre eitt val", "compose_form.poll.type": "Stil", @@ -508,7 +508,7 @@ "notification.favourite": "{name} markerte innlegget ditt som favoritt", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# annan} other {# andre}} favorittmerka innlegget ditt", "notification.follow": "{name} fylgde deg", - "notification.follow.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} fylgde deg", + "notification.follow.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} fylgde deg", "notification.follow_request": "{name} har bedt om å fylgja deg", "notification.follow_request.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} har spurt om å fylgja deg", "notification.label.mention": "Omtale", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Snøggfilterline", "notifications.column_settings.follow": "Nye fylgjarar:", "notifications.column_settings.follow_request": "Ny fylgjarførespurnader:", + "notifications.column_settings.group": "Gruppe", "notifications.column_settings.mention": "Omtaler:", "notifications.column_settings.poll": "Røysteresultat:", "notifications.column_settings.push": "Pushvarsel", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 1dd5df32b8..b709fbea5e 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -157,7 +157,6 @@ "compose_form.poll.duration": "Avstemningens varighet", "compose_form.poll.multiple": "Flervalg", "compose_form.poll.option_placeholder": "Valg {number}", - "compose_form.poll.single": "Velg en", "compose_form.poll.switch_to_multiple": "Endre avstemning til å tillate flere valg", "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg", "compose_form.poll.type": "Stil", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index c6555ebb76..21a1c365f0 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Czas trwania głosowania", "compose_form.poll.multiple": "Wielokrotny wybór", "compose_form.poll.option_placeholder": "Opcja {number}", - "compose_form.poll.single": "Wybierz jedną", + "compose_form.poll.single": "Jednokrotny wybór", "compose_form.poll.switch_to_multiple": "Pozwól na wybranie wielu opcji", "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji", "compose_form.poll.type": "Styl", @@ -508,7 +508,7 @@ "notification.favourite": "{name} dodaje Twój wpis do ulubionych", "notification.favourite.name_and_others_with_link": "{name} i {count, plural, one {# inna osoba polubiła twój wpis} few {# inne osoby polubiły twój wpis} other {# innych osób polubiło twój wpis}}", "notification.follow": "{name} obserwuje Cię", - "notification.follow.name_and_others": "{name} i {count, plural, one {# inna osoba cię zaobserwowała} few {# inne osoby cię zaobserwowały} other {# innych osób cię zaobserwowało}}", + "notification.follow.name_and_others": "{name} i {count, plural, one {# inna osoba cię zaobserwowała} few {# inne osoby cię zaobserwowały} other {# innych osób cię zaobserwowało}}", "notification.follow_request": "{name} chce cię zaobserwować", "notification.follow_request.name_and_others": "{name} i {count, plural, one {# inna osoba chce} few {# inne osoby chcą} other {# innych osób chce}} zaobserwować twój profil", "notification.label.mention": "Wzmianka", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", "notifications.column_settings.follow": "Nowi obserwujący:", "notifications.column_settings.follow_request": "Nowe prośby o możliwość obserwacji:", + "notifications.column_settings.group": "Grupuj", "notifications.column_settings.mention": "Wspomnienia:", "notifications.column_settings.poll": "Wyniki głosowania:", "notifications.column_settings.push": "Powiadomienia push", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index b6d2fe112e..f5b6481a83 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Duração da enquete", "compose_form.poll.multiple": "Múltipla escolha", "compose_form.poll.option_placeholder": "Opção {number}", - "compose_form.poll.single": "Escolha uma", + "compose_form.poll.single": "Única escolha", "compose_form.poll.switch_to_multiple": "Permitir múltiplas escolhas", "compose_form.poll.switch_to_single": "Opção única", "compose_form.poll.type": "Estilo", @@ -508,7 +508,7 @@ "notification.favourite": "{name} favoritou sua publicação", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# outro} other {# others}} favoritaram a publicação", "notification.follow": "{name} te seguiu", - "notification.follow.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} seguiu você", + "notification.follow.name_and_others": "{name} e {count, plural, one {# outro} other {# outros}} seguiram você", "notification.follow_request": "{name} quer te seguir", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} pediu para seguir você", "notification.label.mention": "Menção", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtro rápido", "notifications.column_settings.follow": "Seguidores:", "notifications.column_settings.follow_request": "Seguidores pendentes:", + "notifications.column_settings.group": "Grupo", "notifications.column_settings.mention": "Menções:", "notifications.column_settings.poll": "Enquetes:", "notifications.column_settings.push": "Notificações push", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 6be7e03b39..fe18444ce1 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -157,7 +157,6 @@ "compose_form.poll.duration": "Duração da sondagem", "compose_form.poll.multiple": "Escolha múltipla", "compose_form.poll.option_placeholder": "Opção {number}", - "compose_form.poll.single": "Escolha uma", "compose_form.poll.switch_to_multiple": "Alterar a sondagem para permitir várias respostas", "compose_form.poll.switch_to_single": "Alterar a sondagem para permitir uma única resposta", "compose_form.poll.type": "Estilo", @@ -503,7 +502,6 @@ "notification.favourite": "{name} assinalou a sua publicação como favorita", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# outro} other {# outros}} assinalou a sua publicação como favorita", "notification.follow": "{name} começou a seguir-te", - "notification.follow.name_and_others": "{name} e {count, plural, one {# outro} other {# outros}} começaram a segui-lo", "notification.follow_request": "{name} pediu para segui-lo", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# outro} other {# outros}} pediram para segui-lo", "notification.label.mention": "Menção", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index a61f4b0d4f..96f9eac2b3 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -138,7 +138,6 @@ "compose_form.poll.duration": "Durata sondajului", "compose_form.poll.multiple": "Alegeri multiple", "compose_form.poll.option_placeholder": "Opțiune {number}", - "compose_form.poll.single": "Alegeți unul", "compose_form.poll.switch_to_multiple": "Modifică sondajul pentru a permite mai multe opțiuni", "compose_form.poll.switch_to_single": "Modifică sondajul pentru a permite o singură opțiune", "compose_form.poll.type": "Stil", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index b4e7cc656b..46463be76f 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Продолжительность опроса", "compose_form.poll.multiple": "Несколько вариантов ответа", "compose_form.poll.option_placeholder": "Вариант {number}", - "compose_form.poll.single": "Выберите один", "compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов", "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", "compose_form.poll.type": "Стиль", @@ -507,7 +506,6 @@ "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# другие} other {# другие}} отдали предпочтение вашему посту", "notification.follow": "{name} подписался (-лась) на вас", - "notification.follow.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", "notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас", "notification.label.mention": "Упоминание", diff --git a/app/javascript/mastodon/locales/ry.json b/app/javascript/mastodon/locales/ry.json index 02d1c005cf..b55d5e7a7d 100644 --- a/app/javascript/mastodon/locales/ry.json +++ b/app/javascript/mastodon/locales/ry.json @@ -140,7 +140,6 @@ "compose_form.poll.duration": "Трывалость убзвідованя", "compose_form.poll.multiple": "Дакулько варіантув", "compose_form.poll.option_placeholder": "Варіант {number}", - "compose_form.poll.single": "Уберіт єден", "compose_form.poll.switch_to_multiple": "Змінити убзвідованя обы поволити дакулько варіантув", "compose_form.poll.switch_to_single": "Змінити убзвідованя обы поволити лишек єден варіант", "compose_form.poll.type": "Стіл", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 227a7483a7..71bcaef7ab 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -157,7 +157,6 @@ "compose_form.poll.duration": "Longària de su sondàgiu", "compose_form.poll.multiple": "Sèberu mùltiplu", "compose_form.poll.option_placeholder": "Optzione {number}", - "compose_form.poll.single": "Sèbera·nde una", "compose_form.poll.switch_to_multiple": "Muda su sondàgiu pro permìtere multi-optziones", "compose_form.poll.switch_to_single": "Muda su sondàgiu pro permìtere un'optzione isceti", "compose_form.poll.type": "Istile", @@ -458,7 +457,6 @@ "notification.favourite": "{name} at marcadu comente a preferidu s'istadu tuo", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant marcadu sa publicatzione tua comente preferida", "notification.follow": "{name} ti sighit", - "notification.follow.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ti sighint", "notification.follow_request": "{name} at dimandadu de ti sighire", "notification.follow_request.name_and_others": "{name} e {count, plural, one {un'àtera persone} other {àteras # persones}} ant pedidu de ti sighire", "notification.label.mention": "Mèntovu", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index da3b1eaefd..ffca0914e5 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -155,7 +155,6 @@ "compose_form.poll.duration": "Trvanie ankety", "compose_form.poll.multiple": "Viacero možností", "compose_form.poll.option_placeholder": "Možnosť {number}", - "compose_form.poll.single": "Jediný výber", "compose_form.poll.switch_to_multiple": "Zmeniť anketu a povoliť viaceré možnosti", "compose_form.poll.switch_to_single": "Zmeniť anketu na jediný povolený výber", "compose_form.poll.type": "Typ", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 71bee6822b..32626b80f9 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -155,7 +155,6 @@ "compose_form.poll.duration": "Trajanje ankete", "compose_form.poll.multiple": "Več možnosti", "compose_form.poll.option_placeholder": "Možnost {number}", - "compose_form.poll.single": "Izberite eno možnost", "compose_form.poll.switch_to_multiple": "Spremenite anketo, da omogočite več izbir", "compose_form.poll.switch_to_single": "Spremenite anketo, da omogočite eno izbiro", "compose_form.poll.type": "Slog", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 182f018873..e38ea796f6 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Kohëzgjatje pyetësori", "compose_form.poll.multiple": "Shumë zgjedhje", "compose_form.poll.option_placeholder": "Mundësia {number}", - "compose_form.poll.single": "Zgjidhni një", + "compose_form.poll.single": "Zgjedhje njëshe", "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje", "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje", "compose_form.poll.type": "Stil", @@ -508,7 +508,6 @@ "notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer", "notification.favourite.name_and_others_with_link": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}} i vunë shenjë postimit tuaj si të parapëlqyer", "notification.follow": "{name} zuri t’ju ndjekë", - "notification.follow.name_and_others": "Ju ndoqi {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "notification.follow_request": "{name} ka kërkuar t’ju ndjekë", "notification.follow_request.name_and_others": "Ka kërkuar t’ju ndjekë {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "notification.label.mention": "Përmendje", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 1053d581c3..4a33c2f5ca 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -154,7 +154,6 @@ "compose_form.poll.duration": "Trajanje ankete", "compose_form.poll.multiple": "Višestruki izbor", "compose_form.poll.option_placeholder": "Opcija {number}", - "compose_form.poll.single": "Odaberite jedno", "compose_form.poll.switch_to_multiple": "Promenite anketu da biste omogućili više izbora", "compose_form.poll.switch_to_single": "Promenite anketu da biste omogućili jedan izbor", "compose_form.poll.type": "Stil", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 9529c41fe3..d80411859e 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -154,7 +154,6 @@ "compose_form.poll.duration": "Трајање анкете", "compose_form.poll.multiple": "Вишеструки избор", "compose_form.poll.option_placeholder": "Опција {number}", - "compose_form.poll.single": "Одаберите једно", "compose_form.poll.switch_to_multiple": "Промените анкету да бисте омогућили више избора", "compose_form.poll.switch_to_single": "Промените анкету да бисте омогућили један избор", "compose_form.poll.type": "Стил", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 31ded957b5..d9d4da4ad0 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Varaktighet för omröstning", "compose_form.poll.multiple": "Flera val", "compose_form.poll.option_placeholder": "Alternativ {number}", - "compose_form.poll.single": "Välj en", + "compose_form.poll.single": "Enval", "compose_form.poll.switch_to_multiple": "Ändra enkät för att tillåta flera val", "compose_form.poll.switch_to_single": "Ändra enkät för att tillåta ett enda val", "compose_form.poll.type": "Stil", @@ -508,7 +508,6 @@ "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.favourite.name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}} har favoritmarkerat ditt inlägg", "notification.follow": "{name} följer dig", - "notification.follow.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} följer dig", "notification.follow_request": "{name} har begärt att följa dig", "notification.follow_request.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har bett att följa dig", "notification.label.mention": "Nämn", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index ab93358f6f..d05840aa83 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "ระยะเวลาการสำรวจความคิดเห็น", "compose_form.poll.multiple": "หลายตัวเลือก", "compose_form.poll.option_placeholder": "ตัวเลือก {number}", - "compose_form.poll.single": "เลือกอย่างใดอย่างหนึ่ง", "compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก", "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดียว", "compose_form.poll.type": "ลักษณะ", @@ -508,7 +507,6 @@ "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.favourite.name_and_others_with_link": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", - "notification.follow.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ติดตามคุณ", "notification.follow_request": "{name} ได้ขอติดตามคุณ", "notification.follow_request.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ขอติดตามคุณ", "notification.label.mention": "การกล่าวถึง", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index ba5395b7bd..2cf7f1929a 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -117,7 +117,6 @@ "compose_form.poll.duration": "tenpo pana", "compose_form.poll.multiple": "pana mute", "compose_form.poll.option_placeholder": "ken nanpa {number}", - "compose_form.poll.single": "pana pi wan taso", "compose_form.poll.switch_to_multiple": "o ante e nasin pana. pana mute o ken", "compose_form.poll.switch_to_single": "o ante e nasin pana. pana wan taso o lon", "compose_form.poll.type": "nasin", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 937b3e8e19..dae573370a 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Anket süresi", "compose_form.poll.multiple": "Çoktan seçmeli", "compose_form.poll.option_placeholder": "Seçenek {number}", - "compose_form.poll.single": "Birini seç", + "compose_form.poll.single": "Tekli seçim", "compose_form.poll.switch_to_multiple": "Birden çok seçeneğe izin vermek için anketi değiştir", "compose_form.poll.switch_to_single": "Tek bir seçeneğe izin vermek için anketi değiştir", "compose_form.poll.type": "Stil", @@ -508,7 +508,7 @@ "notification.favourite": "{name} gönderinizi beğendi", "notification.favourite.name_and_others_with_link": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} gönderinizi beğendi", "notification.follow": "{name} seni takip etti", - "notification.follow.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} sizi takip etti", + "notification.follow.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} sizi takip etti", "notification.follow_request": "{name} size takip isteği gönderdi", "notification.follow_request.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} size takip etme isteği gönderdi", "notification.label.mention": "Bahsetme", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", "notifications.column_settings.follow": "Yeni takipçiler:", "notifications.column_settings.follow_request": "Yeni takip istekleri:", + "notifications.column_settings.group": "Grupla", "notifications.column_settings.mention": "Bahsetmeler:", "notifications.column_settings.poll": "Anket sonuçları:", "notifications.column_settings.push": "Anlık bildirimler", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5a9d388f0b..66392afd79 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -158,7 +158,6 @@ "compose_form.poll.duration": "Тривалість опитування", "compose_form.poll.multiple": "Кілька варіантів", "compose_form.poll.option_placeholder": "Варіант {number}", - "compose_form.poll.single": "Виберіть варіант", "compose_form.poll.switch_to_multiple": "Дозволити вибір декількох відповідей", "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", "compose_form.poll.type": "Стиль", @@ -508,7 +507,6 @@ "notification.favourite": "Ваш допис сподобався {name}", "notification.favourite.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} вподобали ваш допис", "notification.follow": "{name} підписалися на вас", - "notification.follow.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} стежать за вами", "notification.follow_request": "{name} відправили запит на підписку", "notification.follow_request.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} надсилають вам запит на стеження", "notification.label.mention": "Згадка", @@ -567,6 +565,7 @@ "notifications.column_settings.filter_bar.category": "Панель швидкого фільтра", "notifications.column_settings.follow": "Нові підписники:", "notifications.column_settings.follow_request": "Нові запити на підписку:", + "notifications.column_settings.group": "Група", "notifications.column_settings.mention": "Згадки:", "notifications.column_settings.poll": "Результати опитування:", "notifications.column_settings.push": "Push-сповіщення", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 9c886790b0..1daeada1a2 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} thích tút của bạn", "notification.favourite.name_and_others_with_link": "{name} và {count, plural, other {# người khác}} đã thích tút của bạn", "notification.follow": "{name} theo dõi bạn", - "notification.follow.name_and_others": "{name} và {count, plural, other {# người khác}} đã theo dõi bạn", + "notification.follow.name_and_others": "{name} và {count, plural, other {# người khác}} theo dõi bạn", "notification.follow_request": "{name} yêu cầu theo dõi bạn", "notification.follow_request.name_and_others": "{name} và {count, plural, other {# người khác}} đã yêu cầu theo dõi bạn", "notification.label.mention": "Lượt nhắc", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Thanh lọc nhanh", "notifications.column_settings.follow": "Người theo dõi:", "notifications.column_settings.follow_request": "Yêu cầu theo dõi:", + "notifications.column_settings.group": "Nhóm", "notifications.column_settings.mention": "Lượt nhắc đến:", "notifications.column_settings.poll": "Kết quả bình chọn:", "notifications.column_settings.push": "Thông báo đẩy", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index df237fa239..3b1e6b813d 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -508,7 +508,7 @@ "notification.favourite": "{name} 喜欢了你的嘟文", "notification.favourite.name_and_others_with_link": "{name} 和 {count, plural, other {另外 # 人}} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", - "notification.follow.name_and_others": "{name} 和 {count, plural, other {另外 # 人}} 关注了你", + "notification.follow.name_and_others": "{name} 和 {count, plural, other {另外 # 人}} 关注了你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.follow_request.name_and_others": "{name} 和 {count, plural, other {另外 # 人}} 向你发送了关注请求", "notification.label.mention": "提及", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "快速筛选栏", "notifications.column_settings.follow": "新粉丝:", "notifications.column_settings.follow_request": "新关注请求:", + "notifications.column_settings.group": "分组", "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票结果:", "notifications.column_settings.push": "推送通知", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index a081e55897..62a43fa7e4 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -151,7 +151,6 @@ "compose_form.poll.duration": "投票期限", "compose_form.poll.multiple": "多選", "compose_form.poll.option_placeholder": "選項 {number}", - "compose_form.poll.single": "選擇一個", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_single": "變更投票為限定單一選項", "compose_form.poll.type": "風格", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e93f7d5180..388e09fc98 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "投票期限", "compose_form.poll.multiple": "多選", "compose_form.poll.option_placeholder": "選項 {number}", - "compose_form.poll.single": "選擇一個", + "compose_form.poll.single": "單一選擇", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_single": "變更投票為允許單一選項", "compose_form.poll.type": "投票方式", @@ -508,7 +508,7 @@ "notification.favourite": "{name} 已將您的嘟文加入最愛", "notification.favourite.name_and_others_with_link": "{name} 與{count, plural, other {其他 # 個人}}已將您的嘟文加入最愛", "notification.follow": "{name} 已跟隨您", - "notification.follow.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已跟隨您", + "notification.follow.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已跟隨您", "notification.follow_request": "{name} 要求跟隨您", "notification.follow_request.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已請求跟隨您", "notification.label.mention": "提及", @@ -567,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "快速過濾器", "notifications.column_settings.follow": "新的跟隨者:", "notifications.column_settings.follow_request": "新的跟隨請求:", + "notifications.column_settings.group": "群組", "notifications.column_settings.mention": "提及:", "notifications.column_settings.poll": "投票結果:", "notifications.column_settings.push": "推播通知", diff --git a/config/locales/activerecord.lad.yml b/config/locales/activerecord.lad.yml index 31e0223cca..8fd23b53fe 100644 --- a/config/locales/activerecord.lad.yml +++ b/config/locales/activerecord.lad.yml @@ -15,6 +15,11 @@ lad: user/invite_request: text: Razon errors: + attributes: + domain: + invalid: no es un nombre de domeno valido + messages: + invalid_domain_on_line: "%{value} no es un nombre de domeno valido" models: account: attributes: diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index 2a22edf673..ca8271ebf1 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -60,6 +60,7 @@ sv: error: title: Ett fel har uppstått new: + prompt_html: "%{client_name} vill ha behörighet att komma åt ditt konto. Godkänn bara denna begäran om du känner igen och litar på källan." review_permissions: Granska behörigheter title: Godkännande krävs show: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 629edd9380..9a3ba24562 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -61,6 +61,7 @@ eo: demote: Degradi destroyed_msg: Datumoj de %{username} nun enviciĝis por esti forigita baldaǔ disable: Frostigi + disable_sign_in_token_auth: Malebligu retpoŝtan ĵeton-aŭtentikigon disable_two_factor_authentication: Malŝalti 2FA-n disabled: Frostigita display_name: Montrata nomo @@ -69,6 +70,7 @@ eo: email: Retpoŝto email_status: Stato de retpoŝto enable: Malfrostigi + enable_sign_in_token_auth: Ebligu retpoŝtan ĵeton-aŭtentikigon enabled: Ebligita enabled_msg: Sukcese malfrostigis konton de %{username} followers: Sekvantoj @@ -179,17 +181,21 @@ eo: confirm_user: Konfirmi uzanton create_account_warning: Krei averton create_announcement: Krei Anoncon + create_canonical_email_block: Krei retpoŝtan blokon create_custom_emoji: Krei Propran Emoĝion create_domain_allow: Krei Domajnan Permeson create_domain_block: Krei Blokadon De Domajno + create_email_domain_block: Krei retpoŝtan domajnan blokon create_ip_block: Krei IP-regulon create_unavailable_domain: Krei Nehaveblan Domajnon create_user_role: Krei Rolon demote_user: Malpromocii Uzanton destroy_announcement: Forigi Anoncon + destroy_canonical_email_block: Forigi retpoŝtan blokon destroy_custom_emoji: Forigi Propran Emoĝion destroy_domain_allow: Forigi Domajnan Permeson destroy_domain_block: Forigi blokadon de domajno + destroy_email_domain_block: Forigi retpoŝtan domajnan blokon destroy_instance: Forigi Domajnon destroy_ip_block: Forigi IP-regulon destroy_status: Forigi Afiŝon @@ -433,6 +439,7 @@ eo: title: Bloki novan retpoŝtan domajnon not_permitted: Ne permesita resolved_through_html: Solvis tra %{domain} + title: Blokis retpoŝtajn domajnojn export_domain_allows: new: title: Importi domajnpermesojn @@ -585,6 +592,9 @@ eo: actions_description_remote_html: Decidu kiun klopodon por solvi ĉi tiun raporton. Ĉi tiu efikas kiel nur via servilo komuniki per ĉi tiu fora konto kaj trakti ĝian enhavon. actions_no_posts: Ĉi tiu raporto havas neniujn rilatajn afiŝojn por forigi add_to_report: Aldoni pli al raporto + already_suspended_badges: + local: Jam malakceptita sur ĉi tiu servilo + remote: Jam malakceptita sur ilia servilo are_you_sure: Ĉu vi certas? assign_to_self: Asigni al mi assigned: Asignita kontrolanto @@ -850,6 +860,7 @@ eo: name: Nomo newest: Plej novaj oldest: Plej malnovaj + open: Vidu publike reset: Restartigi review: La statuso de la recenzo search: Serĉi @@ -1072,6 +1083,7 @@ eo: set_new_password: Elekti novan pasvorton setup: link_not_received: Ĉu vi ne ricevis ligilon? + new_confirmation_instructions_sent: Vi ricevos novan retpoŝton kun la konfirma ligilo post kelkaj minutoj! title: Kontrolu vian retpoŝta enirkesto sign_in: preamble_html: Ensalutu per via detaloj de %{domain}. Se via konto gastigantigas sur malsama servilo, vi ne povas ensaluti ĉi tie. diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 097c5c8152..5b44ed85d6 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -263,10 +263,10 @@ es-MX: destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" - disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" + disable_sign_in_token_auth_user_html: "%{name} desactivó la autenticación por token de correo electrónico para %{target}" disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" enable_custom_emoji_html: "%{name} activó el emoji %{target}" - enable_sign_in_token_auth_user_html: "%{name} ha habilitado la autenticación por token de correo electrónico para %{target}" + enable_sign_in_token_auth_user_html: "%{name} activó autenticación por token de correo electrónico para %{target}" enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam" promote_user_html: "%{name} promoción al usuario %{target}" @@ -274,7 +274,7 @@ es-MX: reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} eliminó el avatar de %{target}" reopen_report_html: "%{name} reabrió el informe %{target}" - resend_user_html: "%{name} ha reenviado el correo de confirmación para %{target}" + resend_user_html: "%{name} reenvió correo electrónico de confirmación para %{target}" reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}" resolve_report_html: "%{name} resolvió el informe %{target}" sensitive_account_html: "%{name} marcó la multimedia de %{target} como sensible" @@ -1557,9 +1557,9 @@ es-MX: poll: subject: Una encuesta de %{name} ha terminado reblog: - body: "%{name} ha retooteado tu estado:" - subject: "%{name} ha retooteado tu estado" - title: Nueva difusión + body: 'Tu publicación fue impulsada por %{name}:' + subject: "%{name} ha impulsado tu publicación" + title: Nuevo impulso status: subject: "%{name} acaba de publicar" update: @@ -1771,7 +1771,7 @@ es-MX: direct: Las publicaciones que son visibles solo para los usuarios mencionados no pueden fijarse limit: Ya has fijado el número máximo de publicaciones ownership: El toot de alguien más no puede fijarse - reblog: Un boost no puede fijarse + reblog: No se puede fijar una publicación impulsada title: "%{name}: «%{quote}»" visibilities: direct: Directa @@ -1787,9 +1787,9 @@ es-MX: exceptions: Excepciones explanation: Debido a que la eliminación de mensajes es una operación costosa, esto se hace lentamente, a lo largo de un tiempo, cuando el servidor no está ocupado. Por este motivo, puede que tus publicaciones sean borradas algo después de que alcancen el umbral de tiempo especificado. ignore_favs: Ignorar favoritos - ignore_reblogs: Ignorar reblogueos + ignore_reblogs: Ignorar impulsos interaction_exceptions: Excepciones basadas en interacciones - interaction_exceptions_explanation: Ten en cuenta que no hay garantía de que se eliminen las publicaciones que están por debajo de los umbrales de favoritos o de reblogueos si los han superado en algún momento. + interaction_exceptions_explanation: Ten en cuenta que no se garantiza la eliminación de las publicaciones si bajan del umbral de favoritos o de impulso después de haberlos superado una vez. keep_direct: Mantener mensajes directos keep_direct_hint: No elimina ninguno de tus mensajes directos keep_media: Mantener publicaciones con multimedia adjunto @@ -1814,7 +1814,7 @@ es-MX: min_age_label: Umbral de tiempo min_favs: Mantener mensajes con un número de favoritos mayor que min_favs_hint: No borra ninguna de las publicaciones que hayan recibido al menos esta cantidad de favoritos. Deja en blanco para eliminar publicaciones sin importar el número de favoritos - min_reblogs: Mantener publicaciones reblogueadas más de + min_reblogs: Mantener publicaciones impulsadas más de min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos stream_entries: sensitive_content: Contenido sensible @@ -1922,7 +1922,7 @@ es-MX: checklist_subtitle: 'Comencemos en esta nueva frontera social:' checklist_title: Lista de bienvenida edit_profile_action: Personalizar - edit_profile_step: Aumenta tus interacciones con un perfil completo. + edit_profile_step: Aumenta tus interacciones completando tu perfil. edit_profile_title: Personaliza tu perfil explanation: Aquí hay algunos consejos para empezar feature_action: Leer más diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 15c632adc9..aad90b3ac3 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -21,6 +21,7 @@ hu: one: Bejegyzés other: Bejegyzés posts_tab_heading: Bejegyzés + self_follow_error: A saját fiók nem követhető admin: account_actions: action: Művelet végrehajtása diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 5a015b2192..ad241856a4 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -46,6 +46,7 @@ lad: title: Troka la posta elektronika de %{username} change_role: changed_msg: Rolo trokado kon sukseso! + edit_roles: Administra reglas de utilizadores label: Troka rolo no_role: Sin rolo title: Troka rolo para %{username} @@ -882,11 +883,14 @@ lad: tags: moderation: pending_review: Revizion esta asperando + reviewed: Revizado title: Estado + unreviewed: No revizado usable: Uzavle name: Nombre newest: Mas muevos oldest: Mas viejos + open: Ve puvlikamente reset: Reinisya review: Estado de revizion search: Bushka @@ -1885,6 +1889,7 @@ lad: instructions_html: Kopia i apega este kodiche en el HTML de tu sitio web. Estonses, adjusta el adreso de tu sitio web en uno de los kutis adisyonales de tu profil dizde la seksyon "Edita profil" i guadra los trokamyentos. verification: Verifikasyon verified_links: Tus atadijos verifikados + website_verification: Verifikasyon de sityo web webauthn_credentials: add: Adjusta mueva yave de sigurita create: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index b28cf30162..59bc242dcb 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -690,10 +690,10 @@ nn: moderation: Moderering special: Særskild delete: Slett - description_html: Med brukarrollar kan du kontrollera kva funksjonar og område av Mastodon brukarane dine har tilgong til. + description_html: Med brukarroller kan du kontrollera kva funksjonar og område av Mastodon brukarane dine har tilgang til. edit: Endr rollen '%{name}' everyone: Standard-tillatelser - everyone_full_description_html: Dette er grunnrollen som påverkar alle brukarar, jamvel dei utan ei tilsett rolle. Alle andre rollar arvar tillatingar frå denne. + everyone_full_description_html: Dette er grunnrolla som påverkar alle brukarar, jamvel dei utan ei tildelt rolle. Alle andre rollar arvar tilgangsløve frå denne. permissions_count: one: "%{count} tillatelse" other: "%{count} tillatelser" @@ -719,7 +719,7 @@ nn: manage_reports: Handtere rapporteringar manage_reports_description: Let brukarar gjennomgå rapportar og utføre modereringshandlingar i samsvar med desse manage_roles: Handsam roller - manage_roles_description: Tillet at brukarar handsamar og tilset rollar under deira eiga + manage_roles_description: Tillet at brukarar handsamar og tildeler roller som er lågare enn dera eiga manage_rules: Handtere reglar manage_rules_description: Let brukarar endre reglane for tenaren manage_settings: Handtere innstillingar @@ -738,7 +738,7 @@ nn: view_dashboard_description: Gir brukere tilgang til dashbordet og ulike metrikker view_devops: DevOps view_devops_description: Gir brukere tilgang til Sidekiq og pgHero-dashbord - title: Rollar + title: Roller rules: add_new: Legg til regel delete: Slett @@ -1417,7 +1417,7 @@ nn: one: 1 bruk other: "%{count} bruk" max_uses_prompt: Inga grense - prompt: Generer og del lenkjer med andre for å gje tilgong til denne tenaren + prompt: Generer og del lenkjer med andre for å gje tilgang til denne tenaren table: expires_at: Vert ugyldig uses: Bruk diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 25ca703732..d70499ae17 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -901,6 +901,8 @@ ru: message_html: Вы не определили правила сервера. sidekiq_process_check: message_html: Ни один Sidekiq не запущен для %{value} очереди(-ей). Пожалуйста, просмотрите настройки Sidekiq + software_version_check: + message_html: Доступно обновление для Mastodon. software_version_critical_check: action: Посмотреть доступные обновления message_html: Доступно критическое обновление Mastodon, пожалуйста, обновитесь как можно скорее. diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml index 94e387107a..de37005312 100644 --- a/config/locales/simple_form.lad.yml +++ b/config/locales/simple_form.lad.yml @@ -307,6 +307,7 @@ lad: listable: Permite ke esta etiketa apareska en bushkedas i sujestyones name: Etiketa trendable: Permite ke esta etiketa apareska en trendes + usable: Permite ke publikasyones uzen esta etiketa lokalmente user: role: Rolo time_zone: Zona de tiempo diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index ddd5ed8995..271c384391 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -137,7 +137,7 @@ nn: highlighted: Dette gjer rolla synleg offentleg name: Offentleg namn på rolla, dersom rolla skal visast som eit emblem permissions_as_keys: Brukarar med denne rolla vil ha tilgang til... - position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan kun utførast på rollar med lågare prioritet + position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan berre utførast på roller med lågare prioritet webhook: events: Vel hendingar å senda template: Skriv di eiga JSON nyttelast ved å bruka variabel interpolering. La stå tom for standard JSON. diff --git a/config/locales/sv.yml b/config/locales/sv.yml index df9b80f3f8..b79820310c 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -263,8 +263,10 @@ sv: destroy_user_role_html: "%{name} raderade rollen %{target}" disable_2fa_user_html: "%{name} inaktiverade tvåfaktorsautentiseringskrav för användaren %{target}" disable_custom_emoji_html: "%{name} inaktiverade emoji %{target}" + disable_sign_in_token_auth_user_html: "%{name} inaktiverade e-posttokenautentisering för %{target}" disable_user_html: "%{name} stängde av inloggning för användaren %{target}" enable_custom_emoji_html: "%{name} aktiverade emoji %{target}" + enable_sign_in_token_auth_user_html: "%{name} aktiverade e-posttokenautentisering för %{target}" enable_user_html: "%{name} aktiverade inloggning för användaren %{target}" memorialize_account_html: "%{name} gjorde %{target}'s konto till en minnessida" promote_user_html: "%{name} befordrade användaren %{target}" @@ -272,6 +274,7 @@ sv: reject_user_html: "%{name} avvisade registrering från %{target}" remove_avatar_user_html: "%{name} tog bort %{target}'s avatar" reopen_report_html: "%{name} öppnade rapporten igen %{target}" + resend_user_html: "%{name} skickade bekräftelsemail för %{target} på nytt" reset_password_user_html: "%{name} återställ användarens lösenord %{target}" resolve_report_html: "%{name} löste rapporten %{target}" sensitive_account_html: "%{name} markerade %{target}'s media som känsligt" @@ -432,6 +435,7 @@ sv: attempts_over_week: one: "%{count} försök under den senaste veckan" other: "%{count} registreringsförsök under den senaste veckan" + created_msg: Blockerade e-postdomänen delete: Radera dns: types: @@ -440,8 +444,12 @@ sv: new: create: Skapa domän resolve: Slå upp domän + title: Blockera ny e-postdomän + no_email_domain_block_selected: Inga blockeringar av e-postdomäner ändrades eftersom inga valdes not_permitted: Ej tillåtet + resolved_dns_records_hint_html: Domännamnet ger uppslag till följande MX-domäner, vilka är ytterst ansvariga för att e-post tas emot. Att blockera en MX-domän blockerar även registreringar från alla e-postadresser som använder samma MX-domän, även om det synliga domännamnet är annorlunda. Var noga med att inte blockera stora e-postleverantörer. resolved_through_html: Uppslagen genom %{domain} + title: Blockerade e-postdomäner export_domain_allows: new: title: Importera domäntillåtelser @@ -595,7 +603,9 @@ sv: resolve_description_html: Ingen åtgärd vidtas mot det rapporterade kontot, ingen prick registreras och rapporten stängs. silence_description_html: Kontot kommer endast synas för de som redan följer den eller manuellt söker på den, vilket dramatiskt minskar dess räckvidd. Kan alltid ångras. Stänger alla anmälningar mot detta konto. suspend_description_html: Kontot och allt dess innehåll kommer att vara oåtkomligt och så småningom tas bort, det kommer inte gå att interagera med kontot. Kan ångras inom 30 dagar. Stänger alla anmälningar mot detta konto. + actions_description_html: Välj vilken åtgärd som skall vidtas för att lösa denna rapport. Om du vidtar en bestraffningsåtgärd mot det rapporterade kontot kommer en e-postnotis att skickas till dem, förutom om du valt kategorin Skräppost. actions_description_remote_html: Bestäm vilka åtgärder som ska vidtas för att lösa denna rapport. Detta kommer bara att påverka hur din server kommunicerar med detta fjärrkonto och hanterar dess innehåll. + actions_no_posts: Denna rapport har inga associerade inlägg att ta bort add_to_report: Lägg till mer i rapporten already_suspended_badges: local: Redan avstängd på denna server @@ -659,6 +669,7 @@ sv: delete_data_html: Ta bort @%{acct}s profil och innehåll om 30 dagar ifall deras avstängning inte tagits bort under tiden preview_preamble_html: "@%{acct} kommer få en varning med följande innehåll:" record_strike_html: Registrera en varning mot @%{acct} för att hjälpa dig eskalera vid framtida överträdelser från detta konto + send_email_html: Skicka @%{acct} ett varningsmejl warning_placeholder: Valfri ytterligare resonemang för modereringsåtgärd. target_origin: Ursprung för anmält konto title: Anmälningar @@ -698,6 +709,7 @@ sv: manage_appeals: Hantera överklaganden manage_appeals_description: Tillåter användare att granska överklaganden av modereringsåtgärder manage_blocks: Hantera blockeringar + manage_blocks_description: Tillåter användare att blockera e-postleverantörer och IP-adresser manage_custom_emojis: Hantera egna emojier manage_custom_emojis_description: Tillåter användare att hantera egna emojier på servern manage_federation: Hantera federering @@ -715,6 +727,7 @@ sv: manage_taxonomies: Hantera taxonomier manage_taxonomies_description: Tillåter användare att granska trendande innehåll och uppdatera inställningar för hashtaggar manage_user_access: Hantera användaråtkomst + manage_user_access_description: Tillåter användare att inaktivera andra användares tvåfaktorsautentisering, ändra deras e-postadress samt återställa deras lösenord manage_users: Hantera användare manage_users_description: Tillåter användare att granska användares data och utföra modereringsåtgärder på dessa manage_webhooks: Hantera webhooks @@ -789,6 +802,7 @@ sv: destroyed_msg: Webbplatsuppladdningen har raderats! software_updates: critical_update: Kritiskt — vänligen uppdatera omgående + description: Det rekommenderas att hålla din Mastodon-installation uppdaterad för att ta nytta av de senaste fixarna och funktionerna. Dessutom är det ibland viktigt att uppdatera Mastodon i tid för att undvika säkerhetsproblem. Av dessa skäl kontrollerar Mastodon efter uppdateringar var 30:e minut och meddelar dig i enlighet med dina e-postaviseringsinställningar. documentation_link: Läs mer release_notes: Ändringslogg title: Tillgängliga uppdateringar @@ -899,6 +913,7 @@ sv: trends: allow: Tillåt approved: Godkänd + confirm_allow: Är du säker på att du vill tillåta valda taggar? confirm_disallow: Är du säker på att du vill förbjuda valda taggar? disallow: Neka links: @@ -1348,6 +1363,10 @@ sv: merge_long: Behåll befintliga uppgifter och lägg till nya overwrite: Skriv över overwrite_long: Ersätt de nuvarande uppgifterna med de nya + overwrite_preambles: + bookmarks_html: + one: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}. + other: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}. preface: Du kan importera data som du exporterat från en annan instans, till exempel en lista över personer du följer eller blockerar. recent_imports: Nyligen importerade states: From 8b5650962557726c8b1dfca6ccc4b41d96a693b6 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 17 Oct 2024 11:03:08 +0200 Subject: [PATCH 194/550] Add more explicit explanations about author attribution and `fediverse:creator` (#32383) --- app/javascript/styles/mastodon/forms.scss | 2 + .../settings/verifications/show.html.haml | 47 +++++++++++-------- config/locales/en.yml | 4 +- config/locales/simple_form.en.yml | 4 +- 4 files changed, 35 insertions(+), 22 deletions(-) diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 957a283522..641fb19a57 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -23,6 +23,8 @@ code { position: relative; overflow: hidden; height: 160px; + max-width: 566px; + margin-inline: auto; &::after { content: ''; diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index 560807f27c..4def10e595 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -38,25 +38,34 @@ %p.lead= t('author_attribution.hint_html') - .fields-row - .fields-row__column.fields-row__column-6 - .fields-group - = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4 } - .fields-row__column.fields-row__column-6 - .fields-group.fade-out-top - %div - .status-card.expanded.bottomless - .status-card__image - = image_tag frontend_asset_url('images/preview.png'), alt: '', class: 'status-card__image-image' - .status-card__content - %span.status-card__host - %span= t('author_attribution.s_blog', name: display_name(@account)) - · - %time.time-ago{ datetime: 1.year.ago.to_date.iso8601 } - %strong.status-card__title= t('author_attribution.example_title') - .more-from-author - = logo_as_symbol(:icon) - = t('author_attribution.more_from_html', name: link_to(root_url, class: 'story__details__shared__author-link') { image_tag(@account.avatar.url, class: 'account__avatar', width: 16, height: 16, alt: '') + tag.bdi(display_name(@account)) }) + .fields-group.fade-out-top + %div + .status-card.expanded.bottomless + .status-card__image + = image_tag frontend_asset_url('images/preview.png'), alt: '', class: 'status-card__image-image' + .status-card__content + %span.status-card__host + %span= t('author_attribution.s_blog', name: display_name(@account)) + · + %time.time-ago{ datetime: 1.year.ago.to_date.iso8601 } + %strong.status-card__title= t('author_attribution.example_title') + .more-from-author + = logo_as_symbol(:icon) + = t('author_attribution.more_from_html', name: link_to(root_url, class: 'story__details__shared__author-link') { image_tag(@account.avatar.url, class: 'account__avatar', width: 16, height: 16, alt: '') + tag.bdi(display_name(@account)) }) + + %h4= t('verification.here_is_how') + + %p.lead= t('author_attribution.instructions') + + .input-copy.lead + .input-copy__wrapper + = copyable_input value: tag.meta(name: 'fediverse:creator', content: "@#{@account.local_username_and_domain}") + %button{ type: :button }= t('generic.copy') + + %p.lead= t('author_attribution.then_instructions') + + .fields-group + = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4 } .actions = f.button :button, t('generic.save_changes'), type: :submit diff --git a/config/locales/en.yml b/config/locales/en.yml index c88ef3fa20..e9c8822d5a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1166,9 +1166,11 @@ en: use_security_key: Use security key author_attribution: example_title: Sample text - hint_html: Control how you're credited when links are shared on Mastodon. + hint_html: Are you writing news or blog articles outside of Mastodon? Control how you get credited when they are shared on Mastodon. + instructions: 'Make sure this code is in your article''s HTML:' more_from_html: More from %{name} s_blog: "%{name}'s Blog" + then_instructions: Then, add the domain name of the publication in the field below. title: Author attribution challenge: confirm: Continue diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 8f6137c8c1..25de9f5910 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -3,7 +3,7 @@ en: simple_form: hints: account: - attribution_domains_as_text: Protects from false attributions. + attribution_domains_as_text: One per line. Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -144,7 +144,7 @@ en: url: Where events will be sent to labels: account: - attribution_domains_as_text: Only allow specific websites + attribution_domains_as_text: Websites allowed to credit you discoverable: Feature profile and posts in discovery algorithms fields: name: Label From bd6c96f73742101df842cf21574a3bbe0c1371e0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 18 Oct 2024 03:19:37 -0400 Subject: [PATCH 195/550] Fix broken i18n in text welcome mailer tags area (#32571) --- app/helpers/application_helper.rb | 5 +++++ app/views/application/mailer/_hashtag.html.haml | 3 +-- app/views/user_mailer/welcome.text.erb | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8f9a433d82..4caf0398fe 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -244,6 +244,11 @@ module ApplicationHelper tag.input(type: :text, maxlength: 999, spellcheck: false, readonly: true, **options) end + def recent_tag_usage(tag) + people = tag.history.aggregate(2.days.ago.to_date..Time.zone.today).accounts + I18n.t 'user_mailer.welcome.hashtags_recent_count', people: number_with_delimiter(people), count: people + end + private def storage_host_var diff --git a/app/views/application/mailer/_hashtag.html.haml b/app/views/application/mailer/_hashtag.html.haml index b740ba31b9..0fe7117bc4 100644 --- a/app/views/application/mailer/_hashtag.html.haml +++ b/app/views/application/mailer/_hashtag.html.haml @@ -17,5 +17,4 @@ %span.email-mini-hashtag-img-span = image_tag full_asset_url(account.avatar.url), alt: '', width: 16, height: 16 %td - - people = hashtag.history.aggregate(2.days.ago.to_date..Time.zone.today).accounts - %p= t('user_mailer.welcome.hashtags_recent_count', people: number_with_delimiter(people), count: people) + %p= recent_tag_usage(hashtag) diff --git a/app/views/user_mailer/welcome.text.erb b/app/views/user_mailer/welcome.text.erb index d9da2997da..144d44b842 100644 --- a/app/views/user_mailer/welcome.text.erb +++ b/app/views/user_mailer/welcome.text.erb @@ -53,7 +53,7 @@ <%= t('user_mailer.welcome.hashtags_subtitle') %> <%- @tags.each do |tag| %> -* #<%= tag.display_name %> · <%= t('user_mailer.welcome.hashtags_recent_count', people: number_with_delimiter(tag.history.aggregate(2.days.ago.to_date..Time.zone.today).accounts)) %> +* #<%= tag.display_name %> · <%= recent_tag_usage(tag) %> <%= tag_url(tag) %> <%- end %> From 0f37b7d6acd2a7666ce56354d9196da2ec02da81 Mon Sep 17 00:00:00 2001 From: hota Date: Fri, 18 Oct 2024 16:40:08 +0900 Subject: [PATCH 196/550] Fix column-settings spacing in local timeline in advanced view (#32567) --- .../community_timeline/components/column_settings.jsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx b/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx index 15381b589d..73927b612d 100644 --- a/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx +++ b/app/javascript/mastodon/features/community_timeline/components/column_settings.jsx @@ -21,9 +21,11 @@ class ColumnSettings extends PureComponent { return (
-
- } /> -
+
+
+ } /> +
+
); } From 8eae0d067db940d88a834128a9b6c022e29b9b28 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 09:56:43 +0200 Subject: [PATCH 197/550] New Crowdin Translations (automated) (#32573) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/cy.json | 3 +++ app/javascript/mastodon/locales/he.json | 3 +++ app/javascript/mastodon/locales/it.json | 1 + app/javascript/mastodon/locales/ja.json | 2 +- app/javascript/mastodon/locales/ml.json | 30 +++++++++++++++++++++++++ config/locales/ca.yml | 1 - config/locales/cy.yml | 4 +++- config/locales/da.yml | 4 +++- config/locales/de.yml | 6 +++-- config/locales/en-GB.yml | 1 - config/locales/eo.yml | 4 ++++ config/locales/es-AR.yml | 4 +++- config/locales/es-MX.yml | 4 +++- config/locales/es.yml | 4 +++- config/locales/et.yml | 1 - config/locales/fa.yml | 1 - config/locales/fi.yml | 6 +++-- config/locales/fo.yml | 4 +++- config/locales/fr-CA.yml | 1 - config/locales/fr.yml | 1 - config/locales/fy.yml | 1 - config/locales/ga.yml | 1 - config/locales/gd.yml | 1 - config/locales/gl.yml | 4 +++- config/locales/he.yml | 4 +++- config/locales/hu.yml | 1 - config/locales/ia.yml | 1 - config/locales/is.yml | 4 +++- config/locales/it.yml | 4 +++- config/locales/ja.yml | 1 - config/locales/ko.yml | 1 - config/locales/lt.yml | 4 +++- config/locales/nl.yml | 4 +++- config/locales/nn.yml | 1 - config/locales/pl.yml | 4 +++- config/locales/pt-BR.yml | 4 +++- config/locales/pt-PT.yml | 1 - config/locales/ru.yml | 1 - config/locales/simple_form.ar.yml | 1 - config/locales/simple_form.bg.yml | 2 -- config/locales/simple_form.ca.yml | 2 -- config/locales/simple_form.cy.yml | 4 ++-- config/locales/simple_form.da.yml | 4 ++-- config/locales/simple_form.de.yml | 4 ++-- config/locales/simple_form.el.yml | 2 -- config/locales/simple_form.en-GB.yml | 2 -- config/locales/simple_form.eo.yml | 2 -- config/locales/simple_form.es-AR.yml | 4 ++-- config/locales/simple_form.es-MX.yml | 4 ++-- config/locales/simple_form.es.yml | 4 ++-- config/locales/simple_form.et.yml | 2 -- config/locales/simple_form.fa.yml | 2 -- config/locales/simple_form.fi.yml | 4 ++-- config/locales/simple_form.fo.yml | 4 ++-- config/locales/simple_form.fr-CA.yml | 2 -- config/locales/simple_form.fr.yml | 2 -- config/locales/simple_form.fy.yml | 2 -- config/locales/simple_form.ga.yml | 2 -- config/locales/simple_form.gd.yml | 2 -- config/locales/simple_form.gl.yml | 4 ++-- config/locales/simple_form.he.yml | 4 ++-- config/locales/simple_form.hu.yml | 2 -- config/locales/simple_form.ia.yml | 1 - config/locales/simple_form.io.yml | 2 -- config/locales/simple_form.is.yml | 4 ++-- config/locales/simple_form.it.yml | 4 ++-- config/locales/simple_form.ja.yml | 2 -- config/locales/simple_form.ko.yml | 2 -- config/locales/simple_form.lt.yml | 4 ++-- config/locales/simple_form.lv.yml | 2 -- config/locales/simple_form.nl.yml | 4 ++-- config/locales/simple_form.nn.yml | 2 -- config/locales/simple_form.pl.yml | 4 ++-- config/locales/simple_form.pt-BR.yml | 4 ++-- config/locales/simple_form.ru.yml | 2 -- config/locales/simple_form.sq.yml | 2 -- config/locales/simple_form.sv.yml | 2 -- config/locales/simple_form.th.yml | 2 -- config/locales/simple_form.tr.yml | 4 ++-- config/locales/simple_form.uk.yml | 2 -- config/locales/simple_form.vi.yml | 4 ++-- config/locales/simple_form.zh-CN.yml | 4 ++-- config/locales/simple_form.zh-TW.yml | 4 ++-- config/locales/sq.yml | 1 - config/locales/th.yml | 1 - config/locales/tr.yml | 4 +++- config/locales/uk.yml | 2 +- config/locales/vi.yml | 4 +++- config/locales/zh-CN.yml | 4 +++- config/locales/zh-TW.yml | 4 +++- 90 files changed, 145 insertions(+), 130 deletions(-) diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 8645c72faa..723e8ae37d 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Cyfnod pleidlais", "compose_form.poll.multiple": "Dewis lluosog", "compose_form.poll.option_placeholder": "Dewis {number}", + "compose_form.poll.single": "Dewis unigol", "compose_form.poll.switch_to_multiple": "Newid pleidlais i adael mwy nag un dewis", "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.poll.type": "Arddull", @@ -507,6 +508,7 @@ "notification.favourite": "Ffafriodd {name} eich postiad", "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# eraill}} eich postiad", "notification.follow": "Dilynodd {name} chi", + "notification.follow.name_and_others": "Mae {name} a {count, plural, zero {}one {# other} two {# others} few {# others} many {# others} other {# others}} nawr yn eich dilyn chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# other} other {# others}} wedi gofyn i'ch dilyn chi", "notification.label.mention": "Crybwyll", @@ -565,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "Bar hidlo cyflym", "notifications.column_settings.follow": "Dilynwyr newydd:", "notifications.column_settings.follow_request": "Ceisiadau dilyn newydd:", + "notifications.column_settings.group": "Grŵp", "notifications.column_settings.mention": "Crybwylliadau:", "notifications.column_settings.poll": "Canlyniadau pleidlais:", "notifications.column_settings.push": "Hysbysiadau gwthiadwy", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 2ad3a47f0d..be1dde6528 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "משך הסקר", "compose_form.poll.multiple": "בחירה מרובה", "compose_form.poll.option_placeholder": "אפשרות {number}", + "compose_form.poll.single": "בחירה יחידה", "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר", "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר", "compose_form.poll.type": "סוג משאל", @@ -507,6 +508,7 @@ "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.favourite.name_and_others_with_link": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}} חיבבו את הודעתך", "notification.follow": "{name} במעקב אחרייך", + "notification.follow.name_and_others": "{name} ועוד {count, plural,one {מישהו} other {# אחרים}} החלו לעקוב אחריך", "notification.follow_request": "{name} ביקשו לעקוב אחריך", "notification.follow_request.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} ביקשו לעקוב אחריך", "notification.label.mention": "אזכור", @@ -565,6 +567,7 @@ "notifications.column_settings.filter_bar.category": "שורת סינון מהיר", "notifications.column_settings.follow": "עוקבים חדשים:", "notifications.column_settings.follow_request": "בקשות מעקב חדשות:", + "notifications.column_settings.group": "קבוצה", "notifications.column_settings.mention": "פניות:", "notifications.column_settings.poll": "תוצאות סקר:", "notifications.column_settings.push": "התראות בדחיפה", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 41d233079a..44040cc716 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Durata del sondaggio", "compose_form.poll.multiple": "Scelta multipla", "compose_form.poll.option_placeholder": "Opzione {number}", + "compose_form.poll.single": "Scelta singola", "compose_form.poll.switch_to_multiple": "Modifica il sondaggio per consentire scelte multiple", "compose_form.poll.switch_to_single": "Modifica il sondaggio per consentire una singola scelta", "compose_form.poll.type": "Stile", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 814b2f8124..9aea55ec3f 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -779,7 +779,7 @@ "status.bookmark": "ブックマーク", "status.cancel_reblog_private": "ブースト解除", "status.cannot_reblog": "この投稿はブーストできません", - "status.continued_thread": "つり下げ投稿", + "status.continued_thread": "続きのスレッド", "status.copy": "投稿へのリンクをコピー", "status.delete": "削除", "status.detailed_status": "詳細な会話ビュー", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index 38a425cb90..b7a2ad2a3f 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -82,6 +82,7 @@ "closed_registrations.other_server_instructions": "Mastodon വികേന്ദ്രീകൃത സംവിധാനം ആയതിനാൽ, നിങ്ങൾക്ക് മറ്റൊരു സെർവറിൽ ഒരു അക്കൗണ്ട് ഉണ്ടാക്കിയും ഇതുമായി ആശയവിനിമയം നടത്താൻ സാധിക്കുന്നതാണ്.", "closed_registrations_modal.description": "{domain} ഇൽ ഇപ്പോൾ അക്കൗണ്ട് ഉണ്ടാക്കാൻ സാധിക്കുന്നതല്ല, Mastodon ഉപയോഗിക്കുന്നതിനായി നിങ്ങൾക്ക് {domain}-ൽ പ്രത്യേകമായി ഒരു അക്കൗണ്ട് ആവശ്യമില്ല എന്നത് ദയവായി ഓർക്കുക.", "closed_registrations_modal.find_another_server": "മറ്റൊരു സെർവർ കണ്ടെത്തുക", + "closed_registrations_modal.title": "മാസ്റ്റഡോണിൽ ചേർക്കൽ", "column.about": "അപ്ലിക്കേഷനെക്കുറിച്ച്", "column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "column.bookmarks": "ബുക്ക്മാർക്കുകൾ", @@ -106,6 +107,7 @@ "column_subheading.settings": "ക്രമീകരണങ്ങള്‍", "community.column_settings.local_only": "പ്രാദേശികം മാത്രം", "community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം", + "community.column_settings.remote_only": "വിദൂര മാത്രം", "compose.language.change": "ഭാഷ മാറ്റുക", "compose.language.search": "ഭാഷകൾ തിരയുക...", "compose.published.open": "തുറക്കുക", @@ -115,11 +117,16 @@ "compose_form.lock_disclaimer.lock": "ലോക്കുചെയ്തു", "compose_form.placeholder": "നിങ്ങളുടെ മനസ്സിൽ എന്താണ്?", "compose_form.poll.duration": "തിരഞ്ഞെടുപ്പിന്റെ സമയദൈർഖ്യം", + "compose_form.poll.multiple": "ഒരുപാടു് സാധ്യതകൾ", + "compose_form.poll.option_placeholder": "സാധ്യത {number}", + "compose_form.poll.single": "ഒറ്റ സാധ്യത", "compose_form.poll.switch_to_multiple": "വോട്ടെടുപ്പിൽ ഒന്നിലധികം ചോയ്‌സുകൾ ഉൾപ്പെടുതുക", "compose_form.poll.switch_to_single": "വോട്ടെടുപ്പിൽ ഒരൊറ്റ ചോയ്‌സ്‌ മാത്രം ആക്കുക", + "compose_form.poll.type": "രീതി", "compose_form.publish": "അയക്കുക", "compose_form.publish_form": "Publish", "compose_form.reply": "മറുപടി", + "compose_form.save_changes": "കാലാനുസ്യതമാക്കുക", "compose_form.spoiler.marked": "എഴുത്ത് മുന്നറിയിപ്പിനാൽ മറച്ചിരിക്കുന്നു", "compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല", "confirmation_modal.cancel": "റദ്ദാക്കുക", @@ -150,6 +157,7 @@ "directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.new_arrivals": "പുതിയ വരവുകൾ", "directory.recently_active": "അടുത്തിടെയായി സജീവമായ", + "disabled_account_banner.account_settings": "ഇടപാടു് ക്രമീകരങ്ങൾ", "disabled_account_banner.text": "നിങ്ങളുടെ {disabledAccount} എന്ന അക്കൗണ്ട് ഇപ്പോൾ പ്രവർത്തനരഹിതമാണ്.", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -185,10 +193,15 @@ "empty_column.notifications": "നിങ്ങൾക്ക് ഇതുവരെ ഒരു അറിയിപ്പുകളും ഇല്ല. മറ്റുള്ളവരുമായി ഇടപെട്ട് സംഭാഷണത്തിന് തുടക്കം കുറിക്കു.", "empty_column.public": "ഇവിടെ ഒന്നുമില്ലല്ലോ! ഇവിടെ നിറയ്ക്കാൻ എന്തെങ്കിലും പരസ്യമായി എഴുതുകയോ മറ്റ് ഉപഭോക്താക്കളെ പിന്തുടരുകയോ ചെയ്യുക", "errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക", + "explore.search_results": "തിരയൽ ഫലങ്ങൾ", "explore.suggested_follows": "ആൾക്കാർ", "explore.title": "പര്യവേക്ഷണം നടത്തുക", "explore.trending_links": "വാര്‍ത്ത", + "explore.trending_statuses": "എഴുത്തുകൾ", + "explore.trending_tags": "ചർച്ചാവിഷയങ്ങൾ", + "filter_modal.added.review_and_configure_title": "അരിക്കൽ ക്രമീകരങ്ങൾ", "filter_modal.select_filter.prompt_new": "പുതിയ വിഭാഗം: {name}", + "filter_modal.select_filter.search": "തിരയുക അല്ലെങ്കിൽ നിർമാണിക്കുക", "firehose.all": "എല്ലാം", "follow_request.authorize": "ചുമതലപ്പെടുത്തുക", "follow_request.reject": "നിരസിക്കുക", @@ -196,10 +209,12 @@ "follow_suggestions.view_all": "എല്ലാം കാണുക", "follow_suggestions.who_to_follow": "ആരേ പിന്തുടരണം", "followed_tags": "പിന്തുടരിയതു് ചർച്ചാവിഷയങ്ങൾ", + "footer.directory": "രൂപരേഖ നാമഗൃഹസൂചി", "footer.get_app": "ഉപകരണം ലഭിക്കൂ", "footer.invite": "ആളുകളെ ക്ഷണിക്കുക", "footer.privacy_policy": "സ്വകാര്യത്തനയം", "footer.source_code": "ഉറവിടസങ്കേതം കാണുക", + "footer.status": "അവസ്ഥ", "generic.saved": "സംരക്ഷിച്ചു", "getting_started.heading": "തുടക്കം കുറിക്കുക", "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ", @@ -220,7 +235,10 @@ "home.show_announcements": "പ്രഖ്യാപനങ്ങൾ കാണിക്കുക", "interaction_modal.login.action": "ആമുഖം വരെ എടുത്തോണ്ടു് പോവുക", "interaction_modal.login.prompt": "ആമുഖപ്രദാനിയുടെ മേഖലപേരു്. ഉദ: mastodon.social", + "interaction_modal.no_account_yet": "മാസ്റ്റഡോണിൽ ഇല്ലേ?", "interaction_modal.on_this_server": "ഈ സെർവറീൽ", + "interaction_modal.title.favourite": "പ്രിയപ്പെട്ട {name}-ന്റെ എഴുതു്", + "interaction_modal.title.follow": "{name}-െ പിന്തുടരുക", "keyboard_shortcuts.back": "തിരികെ പോകുക", "keyboard_shortcuts.blocked": "to open blocked users list", "keyboard_shortcuts.boost": "ബൂസ്റ്റ് ചെയ്യുക", @@ -255,6 +273,8 @@ "lightbox.close": "അടയ്ക്കുക", "lightbox.next": "അടുത്തത്", "lightbox.previous": "പുറകോട്ട്", + "limited_account_hint.action": "എന്നാലും രൂപരേഖ കാണിക്കുക", + "link_preview.author": "{name}-നിന്നു്", "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക", "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക", "lists.delete": "പട്ടിക ഒഴിവാക്കുക", @@ -262,9 +282,11 @@ "lists.edit.submit": "തലക്കെട്ട് മാറ്റുക", "lists.exclusive": "ഈ എഴുത്തുകൾ ആമുഖം നിന്നു് മറയ്ക്കുക", "lists.new.create": "പുതിയ പട്ടിക ചേർക്കുക", + "lists.new.title_placeholder": "പുതിയ പട്ടിക തലക്കെട്ടു്", "lists.replies_policy.none": "ആരുമില്ല", "lists.replies_policy.title": "ഇതിനുള്ള മറുപടികൾ കാണിക്കുക:", "lists.subheading": "എന്റെ പട്ടികകൾ", + "media_gallery.hide": "മറയ്ക്കുക", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ", @@ -272,6 +294,7 @@ "navigation_bar.discover": "കണ്ടെത്തുക", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.explore": "ആരായുക", + "navigation_bar.favourites": "പ്രിയപ്പെട്ടതു്", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "navigation_bar.lists": "ലിസ്റ്റുകൾ", "navigation_bar.logout": "ലോഗൗട്ട്", @@ -290,16 +313,19 @@ "notification.own_poll": "നിങ്ങളുടെ പോൾ അവസാനിച്ചു", "notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു", "notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്‌തു", + "notification_requests.accept": "സ്വീകരിക്കുക", "notification_requests.edit_selection": "പരിഷ്കരിക്കുക", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക", "notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്‌ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ", "notifications.column_settings.follow": "പുതിയ പിന്തുടരുന്നവർ:", "notifications.column_settings.follow_request": "പുതിയ പിന്തുടരൽ അഭ്യർത്ഥനകൾ:", + "notifications.column_settings.group": "കൂട്ടം", "notifications.column_settings.mention": "സൂചനകൾ:", "notifications.column_settings.poll": "പോൾ ഫലങ്ങൾ:", "notifications.column_settings.push": "പുഷ് അറിയിപ്പുകൾ", "notifications.column_settings.reblog": "ബൂസ്റ്റുകൾ:", + "notifications.column_settings.show": "എഴുത്തുപംക്തിയിൽ കാണിക്കുക", "notifications.column_settings.sound": "ശബ്ദം പ്ലേ ചെയ്യുക", "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:", "notifications.column_settings.update": "പരിഷ്കരണങ്ങൾ:", @@ -312,6 +338,9 @@ "notifications.grant_permission": "അനുമതി നൽകുക.", "notifications.group": "{count} അറിയിപ്പുകൾ", "notifications.mark_as_read": "എല്ലാ അറിയിപ്പുകളും വായിച്ചതായി അടയാളപ്പെടുത്തുക", + "notifications.policy.filter": "അരിക്കൽ", + "notifications.policy.filter_new_accounts_title": "പുതിയ ഇടപാടുകൾ", + "notifications.policy.filter_not_followers_title": "താങ്ങളെ പിന്തുടരാത്തതു് ആൾക്കാർ", "notifications_permission_banner.enable": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "ആമുഖത്താൾ വരെ പോവ്വുക", @@ -330,6 +359,7 @@ "picture_in_picture.restore": "തിരികെ വയ്ക്കുക", "poll.closed": "അടച്ചു", "poll.refresh": "പുതുക്കുക", + "poll.reveal": "ഫലങ്ങൾ കാണുക", "poll.vote": "വോട്ട് ചെയ്യുക", "poll.voted": "ഈ ഉത്തരത്തിനായി നിങ്ങൾ വോട്ട് ചെയ്തു", "poll_button.add_poll": "ഒരു പോൾ ചേർക്കുക", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index cc2da496a6..9d861fa30c 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1166,7 +1166,6 @@ ca: use_security_key: Usa clau de seguretat author_attribution: example_title: Text d'exemple - hint_html: Controleu com se us acredita quan els enllaços es comparteixen a Mastodon. more_from_html: Més de %{name} s_blog: Blog de %{name} title: Atribució d'autor diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 85136004ea..2d6a0eb38d 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1238,9 +1238,11 @@ cy: use_security_key: Defnyddiwch allwedd diogelwch author_attribution: example_title: Testun enghreifftiol - hint_html: Rheolwch sut rydych chi'n cael eich canmol pan fydd dolenni'n cael eu rhannu ar Mastodon. + hint_html: Ydych chi'n ysgrifennu erthyglau newyddion neu flog y tu allan i Mastodon? Rheolwch sut y byddwch yn cael eich cydnabod pan fyddan nhw'n cael eu rhannu ar Mastodon. + instructions: 'Gwnewch yn siŵr fod y cod hwn yn HTML eich erthygl:' more_from_html: Mwy gan %{name} s_blog: Blog %{name} + then_instructions: Yna, ychwanegwch enw parth y cyhoeddiad yn y maes isod. title: Priodoliad awdur challenge: confirm: Parhau diff --git a/config/locales/da.yml b/config/locales/da.yml index 923102c11f..6447afb493 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1166,9 +1166,11 @@ da: use_security_key: Brug sikkerhedsnøgle author_attribution: example_title: Eksempeltekst - hint_html: Styrer, hvordan man krediteres, når links deles på Mastodon. + hint_html: Skriver du nyheder eller blogartikler uden for Mastodon? Styr, hvordan man bliver krediteret, når disse deles på Mastodon. + instructions: 'Sørg for, at denne kode er i artikelens HTML:' more_from_html: Flere fra %{name} s_blog: "%{name}s blog" + then_instructions: Tilføj dernæst publikationsdomænenavnet i feltet nedenfor. title: Forfattertilskrivning challenge: confirm: Fortsæt diff --git a/config/locales/de.yml b/config/locales/de.yml index cfd0d6510e..323579f25f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1166,9 +1166,11 @@ de: use_security_key: Sicherheitsschlüssel verwenden author_attribution: example_title: Beispieltext - hint_html: Bestimme, wie du Anerkennungen durch geteilte Links auf Mastodon handhaben möchtest. + hint_html: Schreibst du außerhalb von Mastodon Nachrichtenartikel oder betreibst du einen Blog? Bestimme, wie du Anerkennungen durch geteilte Links auf Mastodon handhaben möchtest. + instructions: 'Der nachfolgende Code muss im HTML-Code deines Artikels sein:' more_from_html: Mehr von %{name} s_blog: Blog von %{name} + then_instructions: Ergänze die Domain, auf der deine Inhalte veröffentlicht werden in das unten stehende Feld. title: Anerkennung als Autor*in challenge: confirm: Fortfahren @@ -1967,7 +1969,7 @@ de: extra_instructions_html: Hinweis: Der Link auf deiner Website kann unsichtbar sein. Der wichtige Teil ist rel="me", wodurch das Nachahmen von Personen auf Websites mit nutzergenerierten Inhalten verhindert wird. Du kannst auch ein link-Tag statt a im Header auf der Seite verwenden, jedoch muss der HTML-Code ohne das Ausführen von JavaScript zugänglich sein. here_is_how: So funktioniert’s hint_html: "Alle können ihre Identität auf Mastodon verifizieren. Basierend auf offenen Standards – jetzt und für immer kostenlos. Alles, was du brauchst, ist eine eigene Website. Wenn du von deinem Profil auf diese Website verlinkst, überprüfen wir, ob die Website zu deinem Profil zurückverlinkt, und zeigen einen visuellen Hinweis an." - instructions_html: Kopiere den unten stehenden Code und füge ihn in das HTML deiner Website ein. Trage anschließend die Adresse deiner Website in ein Zusatzfeld auf deinem Profil ein und speichere die Änderungen. Die Zusatzfelder befinden sich im Reiter „Profil bearbeiten“. + instructions_html: Kopiere den unten stehenden Code und füge ihn in den HTML-Code deiner Website ein. Trage anschließend die Adresse deiner Website in ein Zusatzfeld auf deinem Profil ein und speichere die Änderungen. Die Zusatzfelder befinden sich im Reiter „Profil bearbeiten“. verification: Verifizierung verified_links: Deine verifizierten Links website_verification: Website-Verifizierung diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 65b2e6f71a..fb284479f2 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1165,7 +1165,6 @@ en-GB: use_security_key: Use security key author_attribution: example_title: Sample text - hint_html: Control how you're credited when links are shared on Mastodon. more_from_html: More from %{name} s_blog: "%{name}'s Blog" title: Author attribution diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 9a3ba24562..3d63ecd01d 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -977,6 +977,8 @@ eo: body: "%{target} apelacias kontroldecido de %{action_taken_by} de %{date}, kiu estas %{type}. Ĝi skribis:" next_steps: Vi povas aprobi apelacion por malfari kontroldecidon au ignori. subject: "%{username} apelacias kontroldecidon ĉe %{instance}" + new_critical_software_updates: + body: Novaj gravaj versioj de Mastodon estis publikigitaj, vi eble volas ĝisdatigi kiel eble plej baldaŭ! new_pending_account: body: La detaloj de la nova konto estas ĉi-sube. Vi povas akcepti aŭ malakcepti tiun aliĝilon. subject: Nova konto atendas por recenzo en %{instance} (%{username}) @@ -986,6 +988,7 @@ eo: subject: Nova signalo por %{instance} (#%{id}) new_software_updates: body: Novaj versioj de Mastodon estis publikigitaj, vi eble volas ĝisdatigi! + subject: Novaj versioj de Mastodon disponeblas por %{instance}! new_trends: body: 'La eroj bezonas kontrolon antau ol ili povas montritas publike:' new_trending_links: @@ -1033,6 +1036,7 @@ eo: apply_for_account: Peti konton captcha_confirmation: help_html: Se vi havas problemojn solvi la CAPTCHA, vi povas kontakti nin per %{email} kaj ni povas helpi vin. + hint_html: Nur unu plia afero! Ni devas konfirmi, ke vi estas homo (tio estas por ke ni povu konservi la spamon ekstere!). Solvu la CAPTCHA sube kaj alklaku "Daŭrigu". title: Sekureckontrolo confirmations: clicking_this_link: alklakante ĉi tiun ligilon diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 04ff7880a1..a27ba1a548 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1166,9 +1166,11 @@ es-AR: use_security_key: Usar la llave de seguridad author_attribution: example_title: Texto de ejemplo - hint_html: Controlá cómo se te da crédito cuando los enlaces son compartidos en Mastodon. + hint_html: "¿Escribes noticias o artículos de blog fuera de Mastodon? Controla cómo se te acredita cuando se comparten en Mastodon." + instructions: 'Asegúrate de que este código está en el HTML de tu artículo:' more_from_html: Más de %{name} s_blog: Blog de %{name} + then_instructions: A continuación, añade el nombre de dominio de la publicación en el campo inferior. title: Atribución del autor challenge: confirm: Continuar diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 5b44ed85d6..fef805680a 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1166,9 +1166,11 @@ es-MX: use_security_key: Usar la clave de seguridad author_attribution: example_title: Texto de ejemplo - hint_html: Controla cómo se te dará atribución cuando se compartan enlaces en Mastodon. + hint_html: "¿Estás escribiendo artículos de noticias o blogs fuera de Mastodon? Controla cómo te acreditan cuando se comparten en Mastodon." + instructions: 'Asegúrate de que este código esté en el HTML de tu artículo:' more_from_html: Más de %{name} s_blog: Blog de %{name} + then_instructions: A continuación, añade el nombre de dominio de la publicación en el campo inferior. title: Atribución del autor challenge: confirm: Continuar diff --git a/config/locales/es.yml b/config/locales/es.yml index 47d32c62c8..8690c1cdfb 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1166,9 +1166,11 @@ es: use_security_key: Usar la clave de seguridad author_attribution: example_title: Texto de ejemplo - hint_html: Controla cómo se te dará atribución cuando se compartan enlaces en Mastodon. + hint_html: "¿Escribes noticias o artículos de blog fuera de Mastodon? Controla cómo se te acredita cuando se comparten en Mastodon." + instructions: 'Asegúrate de que este código está en el HTML de tu artículo:' more_from_html: Más de %{name} s_blog: Blog de %{name} + then_instructions: A continuación, añade el nombre de dominio de la publicación en el campo inferior. title: Atribución del autor challenge: confirm: Continuar diff --git a/config/locales/et.yml b/config/locales/et.yml index 4d231ae764..1a679af87f 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1166,7 +1166,6 @@ et: use_security_key: Kasuta turvavõtit author_attribution: example_title: Näidistekst - hint_html: Määra, kuidas sind krediteeritakse, kui linke Mastodonis jagatakse. more_from_html: Rohkem kasutajalt %{name} s_blog: Kasutaja %{name} blogi title: Autori tunnustamine diff --git a/config/locales/fa.yml b/config/locales/fa.yml index fbfd78b6d4..3083bc13cb 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -961,7 +961,6 @@ fa: use_security_key: استفاده از کلید امنیتی author_attribution: example_title: متن نمونه - hint_html: واپایش چگونگی اعتبار دادن به شما هنگام هم‌رسانی پیوندها روی ماستودون. more_from_html: بیش‌تر از %{name} s_blog: بلاگ %{name} title: اعتباردهی به نگارنده diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 52ea0b374c..2f9a76c80d 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1166,9 +1166,11 @@ fi: use_security_key: Käytä suojausavainta author_attribution: example_title: Esimerkkiteksti - hint_html: Määrää, kuinka tulet tunnustetuksi, kun Mastodonissa jaetaan linkkejä. + hint_html: Kirjoitatko uutisia tai blogitekstejä Mastodonin ulkopuolella? Määrää, kuinka tulet tunnustetuksi, kun niitä jaetaan Mastodonissa. + instructions: 'Varmista, että artikkelisi HTML:ssä on tämä koodi:' more_from_html: Lisää tekijältä %{name} s_blog: Käyttäjän %{name} blogi + then_instructions: Lisää sitten julkaisun verkkotunnus seuraavaan tekstikenttään. title: Tekijän tunnustus challenge: confirm: Jatka @@ -1965,7 +1967,7 @@ fi: signed_in_as: 'Kirjautunut tilillä:' verification: extra_instructions_html: Vinkki: Verkkosivustollasi oleva linkki voi olla myös näkymätön. Olennainen osuus on rel="me", joka estää toiseksi henkilöksi tekeytymisen verkkosivustoilla, joilla on käyttäjien luomaa sisältöä. Voit käyttää jopa link-elementtiä sivun head-osassa elementin a sijaan, mutta HTML:n pitää olla käytettävissä ilman JavaScript-koodin suorittamista. - here_is_how: Näin voit tehdä sen + here_is_how: Näin se onnistuu hint_html: "Henkilöllisyyden vahvistaminen on Mastodonissa jokaisen käyttäjän ulottuvilla. Se perustuu avoimiin standardeihin ja on maksutonta nyt ja aina. Tarvitset vain henkilökohtaisen verkkosivuston, jonka perusteella sinut voidaan tunnistaa. Kun teet linkin tuolle verkkosivulle profiilistasi, tarkistamme, että verkkosivustolla on linkki takaisin profiiliisi, ja näytämme profiilissasi visuaalisen ilmaisimen." instructions_html: Kopioi ja liitä seuraava koodi verkkosivustosi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin profiilisi lisäkentistä ”Muokkaa profiilia” -välilehdellä ja tallenna muutokset. verification: Vahvistus diff --git a/config/locales/fo.yml b/config/locales/fo.yml index fcf3eb031e..3ade3007f4 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1166,9 +1166,11 @@ fo: use_security_key: Brúka trygdarlykil author_attribution: example_title: Tekstadømi - hint_html: Kanna, hvussu tú verður viðurkend/ur, tá ið onnur deila slóðir á Mastodon. + hint_html: Skrivar tú tíðindi ella greinar til bloggin uttanfyri Mastodon? Her kanst tú stýra, hvussu tú verður tilsipað/ur, tá ið títt tilfar verður deilt á Mastodon. + instructions: 'Tryggja tær, at henda kota er í HTML''inum á tíni grein:' more_from_html: Meiri frá %{name} s_blog: Bloggurin hjá %{name} + then_instructions: Skriva síðani økisnavnið, har tað verður lagt út, í teigin niðanfyri. title: Ískoyti høvundans challenge: confirm: Hald á diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index eea31e9fbf..3c771d4c64 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -1169,7 +1169,6 @@ fr-CA: use_security_key: Utiliser la clé de sécurité author_attribution: example_title: Exemple de texte - hint_html: Déterminez la façon dont vous êtes crédité lorsque des liens sont partagés sur Mastodon. more_from_html: Plus via %{name} s_blog: Blog de %{name} title: Attribution de l'auteur·e diff --git a/config/locales/fr.yml b/config/locales/fr.yml index cbe0ae0407..58fc63fc1b 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1169,7 +1169,6 @@ fr: use_security_key: Utiliser la clé de sécurité author_attribution: example_title: Exemple de texte - hint_html: Déterminez la façon dont vous êtes crédité lorsque des liens sont partagés sur Mastodon. more_from_html: Plus via %{name} s_blog: Blog de %{name} title: Attribution de l'auteur·e diff --git a/config/locales/fy.yml b/config/locales/fy.yml index d63d2ac2aa..8ccedd2be1 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -1165,7 +1165,6 @@ fy: use_security_key: Befeiligingskaai brûke author_attribution: example_title: Faorbyldtekst - hint_html: Bepaal hoe’t wy jo fermelde, wannear’t jo keppelingen op Mastodon dield wurde. more_from_html: Mear fan %{name} s_blog: Weblog fan %{name} title: Auteur-attribúsje diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 83ac6ce910..0657f827d1 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1220,7 +1220,6 @@ ga: use_security_key: Úsáid eochair shlándála author_attribution: example_title: Téacs samplach - hint_html: Rialú conas a chuirtear chun sochair tú nuair a roinntear naisc ar Mastodon. more_from_html: Tuilleadh ó %{name} s_blog: Blag %{name} title: Leithdháil an údair diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 32aa3e2347..3495a070ec 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1202,7 +1202,6 @@ gd: use_security_key: Cleachd iuchair tèarainteachd author_attribution: example_title: Ball-sampaill teacsa - hint_html: Stùirich mar a thèid iomradh a thoirt ort nuair a thèid ceangal a cho-roinneadh air Mastodon. more_from_html: Barrachd o %{name} s_blog: Bloga aig %{name} title: Aithris air an ùghdar diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 3ee93bf731..a4f63a50e0 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1166,9 +1166,11 @@ gl: use_security_key: Usa chave de seguridade author_attribution: example_title: Texto de mostra - hint_html: Controla o xeito en que te acreditan cando se comparten ligazóns en Mastodon. + hint_html: Escribes novas ou artigos nun blog alleos a Mastodon? Xestiona o xeito en que podes dar crédito da túa autoría cando os compartes en Mastodon. + instructions: 'Pon coidado en que este código apareza no HTML do teu artigo:' more_from_html: Máis de %{name} s_blog: Blog de %{name} + then_instructions: Despois engade o nome de dominio da publicación no campo inferior. title: Atribución da autoría challenge: confirm: Continuar diff --git a/config/locales/he.yml b/config/locales/he.yml index 54b6b6f38d..10b4611b9a 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1202,9 +1202,11 @@ he: use_security_key: שימוש במפתח אבטחה author_attribution: example_title: טקסט לדוגמה - hint_html: בחירה איך תקבלו קרדיטציה כאשר קישורים משותפים דרך מסטודון. + hint_html: האם יש לך בלוג או טור חדשות שמתפרסם מחוץ למסטודון? ניתן לשלוט איך יוצג הקרדיט שלך כשמשתפים את הלינק במסטודון. + instructions: 'ודאו כי הקוד הזה נכלל בקוד ה־HTML של המאמרים שלכם:' more_from_html: עוד מאת %{name} s_blog: הבלוג של %{name} + then_instructions: לאחר מכן, הוסיפו את שם המתחם של האתר המפרסם בשדה למטה. title: ייחוס למפרסם challenge: confirm: המשך diff --git a/config/locales/hu.yml b/config/locales/hu.yml index aad90b3ac3..4f18e3b4d4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1166,7 +1166,6 @@ hu: use_security_key: Biztonsági kulcs használata author_attribution: example_title: Mintaszöveg - hint_html: Szabályozd, hogyan hivatkoznak rád, amikor linket osztanak meg Mastodonon. more_from_html: 'Több tőle: %{name}' s_blog: "%{name} blogja" title: Szerző forrásmegjelölése diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 70dfa658b2..843e8724b9 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -1166,7 +1166,6 @@ ia: use_security_key: Usar clave de securitate author_attribution: example_title: Texto de exemplo - hint_html: Controlar como tu es accreditate quando ligamines es compartite sur Mastodon. more_from_html: Plus de %{name} s_blog: Blog de %{name} title: Attribution de autor diff --git a/config/locales/is.yml b/config/locales/is.yml index ed08663b5a..c50b3dd20d 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1170,9 +1170,11 @@ is: use_security_key: Nota öryggislykil author_attribution: example_title: Sýnitexti - hint_html: Stýrðu hvernig framlög þín birtast þegar tenglum er deilt á Mastodon. + hint_html: Ertu að skrifa fréttir eða bloggfærslur utan Mastodon? Stýrðu því hvernig vitnað er í þig þegar þeim er deilt á Mastodon. + instructions: 'Gakktu úr skugga um að þessi kóði sé í HTML greinarinnar þinnar:' more_from_html: Meira frá %{name} s_blog: Bloggsvæði hjá %{name} + then_instructions: Síðan skaltu bæta lénsheiti útgefandans í reitinn hér fyrir neðan. title: Framlag höfundar challenge: confirm: Halda áfram diff --git a/config/locales/it.yml b/config/locales/it.yml index 22bfd7df24..e18cb0e8f6 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1168,9 +1168,11 @@ it: use_security_key: Usa la chiave di sicurezza author_attribution: example_title: Testo di esempio - hint_html: Controlla come sei viene accreditato quando i link sono condivisi su Mastodon. + hint_html: Stai scrivendo notizie o articoli di blog al di fuori di Mastodon? Controlla come vieni accreditato quando vengono condivisi su Mastodon. + instructions: 'Assicurati che questo codice sia presente nell''HTML del tuo articolo:' more_from_html: Altro da %{name} s_blog: Blog di %{name} + then_instructions: Quindi, aggiungi il nome di dominio della pubblicazione nel campo sottostante. title: Attribuzione autore challenge: confirm: Continua diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 8bd8b46f30..66791a622d 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1148,7 +1148,6 @@ ja: use_security_key: セキュリティキーを使用 author_attribution: example_title: サンプルテキスト - hint_html: Mastodonでリンクが共有されたときのクレジットの表示方法を管理する。 more_from_html: "%{name} のその他の情報" s_blog: "%{name} のブログ" title: 著者の帰属 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4a39cce4ce..43944fe0f6 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1150,7 +1150,6 @@ ko: use_security_key: 보안 키 사용 author_attribution: example_title: 예시 텍스트 - hint_html: 링크가 마스토돈에 공유될 때 내가 어떻게 표시될 지를 제어합니다. more_from_html: "%{name}의 게시물 더 보기" s_blog: "%{name}의 블로그" title: 작성자 기여 diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 3b63ba6dcf..8ba3bad070 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -817,9 +817,11 @@ lt: view_strikes: Peržiūrėti ankstesnius savo paskyros pažeidimus author_attribution: example_title: Teksto pavyzdys - hint_html: Valdyk, kaip esi nurodomas (-a), kai nuorodos bendrinamos platformoje „Mastodon“. + hint_html: Ar rašote naujienas ar tinklaraščio straipsnius už „Mastodon“ ribų? Valdykite, kaip būsite nurodomi, kai jais bus bendrinama platformoje „Mastodon“. + instructions: 'Įsitikinkite, kad šis kodas yra jūsų straipsnio HTML:' more_from_html: Daugiau iš %{name} s_blog: "%{name} tinklaraštis" + then_instructions: Tada toliau esančiame lauke įrašykite leidinio domeno vardą. title: Autoriaus (-ės) atribucija challenge: hint_html: "Patarimas: artimiausią valandą daugiau neprašysime tavo slaptažodžio." diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 968dcc3e7c..1af30bca98 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1166,9 +1166,11 @@ nl: use_security_key: Beveiligingssleutel gebruiken author_attribution: example_title: Voorbeeldtekst - hint_html: Bepaal hoe we je vermelden, wanneer jouw links op Mastodon worden gedeeld. + hint_html: Schrijf je nieuws- of blogartikelen buiten Mastodon? Bepaal hoe je geattribueerd wordt als deze gedeeld worden op Mastodon. + instructions: 'Zorg ervoor dat deze code in de HTML van je artikel zit:' more_from_html: Meer van %{name} s_blog: De weblog van %{name} + then_instructions: Voeg vervolgens de domeinnaam van de publicatie toe in het onderstaande veld. title: Auteur-attributie challenge: confirm: Doorgaan diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 59bc242dcb..e6edc2c4b2 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1166,7 +1166,6 @@ nn: use_security_key: Bruk sikkerhetsnøkkel author_attribution: example_title: Eksempeltekst - hint_html: Kontroller korleis du blir kreditert når nokon deler lenker på Mastodon. more_from_html: Meir frå %{name} s_blog: Bloggen til %{name} title: Forfattarkreditering diff --git a/config/locales/pl.yml b/config/locales/pl.yml index ba1f4812e9..d50a042a22 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1202,9 +1202,11 @@ pl: use_security_key: Użyj klucza bezpieczeństwa author_attribution: example_title: Przykładowy tekst - hint_html: Kontroluj przypisy do twoich wpisów widoczne na Mastodonie. + hint_html: Piszesz wiadomości albo bloga poza Mastodonem? Kontroluj jak będą ci przypisywane podczas dizielenia się nimi na Mastodonie. + instructions: 'Upewnij się, że ten kod jest w HTMLu twojego artykułu:' more_from_html: Więcej od %{name} s_blog: Blog %{name} + then_instructions: Potem, dodaj domenę publikacji do pola poniżej. title: Przypis do autora challenge: confirm: Kontynuuj diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 8e806f670c..8b2feb5193 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1166,9 +1166,11 @@ pt-BR: use_security_key: Usar chave de segurança author_attribution: example_title: Texto de amostra - hint_html: Controle como você é creditado quando links são compartilhados no Mastodon. + hint_html: Você está escrevendo notícias ou artigos de blogs fora do Mastodon? Controle como você é credenciado quando eles forem compartilhados no Mastodon. + instructions: 'Certifique-se que este código esteja no HTML do artigo:' more_from_html: Mais de %{name} s_blog: Blog do %{name} + then_instructions: Então, adicione o nome de domínio da publicação no campo abaixo. title: Atribuição de autoria challenge: confirm: Continuar diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 68217113d2..1761ec3f0c 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -1162,7 +1162,6 @@ pt-PT: use_security_key: Usar chave de segurança author_attribution: example_title: Texto de exemplo - hint_html: Controle a forma como é creditado quando as hiperligações são partilhadas no Mastodon. more_from_html: Mais de %{name} s_blog: Blog de %{name} title: Atribuição de autor diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d70499ae17..b7a10269fa 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -1198,7 +1198,6 @@ ru: use_security_key: Использовать ключ безопасности author_attribution: example_title: Образец текста - hint_html: Контролируйте, как вы будете отмечены при обмене ссылками на Mastodon. more_from_html: Больше от %{name} s_blog: "%{name}'S Блог" title: Авторская атрибуция diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index b591cdca57..0a665fb784 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -3,7 +3,6 @@ ar: simple_form: hints: account: - attribution_domains_as_text: يحمي من الإسناد الزائف. discoverable: يمكن عرض مشاركاتك العامة وملفك الشخصي أو التوصية به في مختلف مناطق ماستدون ويمكن اقتراح ملفك الشخصي على مستخدمين آخرين. display_name: اسمك الكامل أو اسمك المرح. fields: صفحتك الرئيسية، ضمائرك، عمرك، أي شيء تريده. diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 7b7d92995b..2690f07141 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,7 +3,6 @@ bg: simple_form: hints: account: - attribution_domains_as_text: Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. @@ -144,7 +143,6 @@ bg: url: До къде ще се изпращат събитията labels: account: - attribution_domains_as_text: Позволяване само на особени уебсайтове discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 7b651470bf..c628bebaad 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,7 +3,6 @@ ca: simple_form: hints: account: - attribution_domains_as_text: Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -144,7 +143,6 @@ ca: url: On els esdeveniments seran enviats labels: account: - attribution_domains_as_text: Permet només webs específics discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 56d1f873dc..dedd50504b 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,7 +3,7 @@ cy: simple_form: hints: account: - attribution_domains_as_text: Yn amddiffyn rhag priodoliadau ffug. + attribution_domains_as_text: Un i bob llinell. Yn amddiffyn rhag cydnabyddiaethau ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. @@ -144,7 +144,7 @@ cy: url: I ble bydd digwyddiadau'n cael eu hanfon labels: account: - attribution_domains_as_text: Dim ond yn caniatáu gwefannau penodol + attribution_domains_as_text: Gwefannau sy'n cael caniatâd i'ch cydnabod chi discoverable: Proffil nodwedd a phostiadau mewn algorithmau darganfod fields: name: Label diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index e7b8fe337a..25cf670ea9 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,7 +3,7 @@ da: simple_form: hints: account: - attribution_domains_as_text: Beskytter mod falske tilskrivninger. + attribution_domains_as_text: Ét pr. linje. Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -144,7 +144,7 @@ da: url: Hvor begivenheder sendes til labels: account: - attribution_domains_as_text: Tillad kun bestemte websteder + attribution_domains_as_text: Websteder, man må krediteres af discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index f7e55f1a7b..08d5331151 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,7 +3,7 @@ de: simple_form: hints: account: - attribution_domains_as_text: Dadurch können falsche Zuschreibungen unterbunden werden. + attribution_domains_as_text: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -144,7 +144,7 @@ de: url: Wohin Ereignisse gesendet werden labels: account: - attribution_domains_as_text: Nur ausgewählte Websites zulassen + attribution_domains_as_text: Websites, die dich anerkennen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index d46e764a44..9dcac5c160 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -3,7 +3,6 @@ el: simple_form: hints: account: - attribution_domains_as_text: Προστατεύει από ψευδείς ιδιότητες. discoverable: Οι δημόσιες δημοσιεύσεις και το προφίλ σου μπορεί να εμφανίζονται ή να συνιστώνται σε διάφορους τομείς του Mastodon και το προφίλ σου μπορεί να προτείνεται σε άλλους χρήστες. display_name: Το πλήρες ή το αστείο σου όνομα. fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες. @@ -144,7 +143,6 @@ el: url: Πού θα σταλούν τα γεγονότα labels: account: - attribution_domains_as_text: Να επιτρέπονται μόνο συγκεκριμένες ιστοσελίδες discoverable: Παροχή προφίλ και αναρτήσεων σε αλγορίθμους ανακάλυψης fields: name: Περιγραφή diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index b802fd532f..e20249e6bc 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,7 +3,6 @@ en-GB: simple_form: hints: account: - attribution_domains_as_text: Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -144,7 +143,6 @@ en-GB: url: Where events will be sent to labels: account: - attribution_domains_as_text: Only allow specific websites discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 0d02969b4d..cfb5578f5d 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,7 +3,6 @@ eo: simple_form: hints: account: - attribution_domains_as_text: Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -139,7 +138,6 @@ eo: url: Kien eventoj sendotas labels: account: - attribution_domains_as_text: Permesi nur specifajn retejojn discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index d06d09761a..98254c5e99 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,7 +3,7 @@ es-AR: simple_form: hints: account: - attribution_domains_as_text: Protege de atribuciones falsas. + attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -144,7 +144,7 @@ es-AR: url: Adónde serán enviados los eventos labels: account: - attribution_domains_as_text: Solo permitir sitios web específicos + attribution_domains_as_text: Sitios web autorizados a acreditarte discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 8c84e35a4d..9d7809ef3a 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,7 +3,7 @@ es-MX: simple_form: hints: account: - attribution_domains_as_text: Protege frente atribuciones fraudulentas. + attribution_domains_as_text: One per line. Protects from false attributions. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu nick. fields: Tu página de inicio, pronombres, edad, todo lo que quieras. @@ -144,7 +144,7 @@ es-MX: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Solo permitir sitios web específicos + attribution_domains_as_text: Sitios web autorizados para acreditarte discoverable: Destacar el perfil y las publicaciones en el algoritmo de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index b22701aae7..8bc2c5f65c 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -3,7 +3,7 @@ es: simple_form: hints: account: - attribution_domains_as_text: Protege frente atribuciones fraudulentas. + attribution_domains_as_text: Una por línea. Protege de falsas atribuciones. discoverable: Tu perfil y publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu apodo. fields: Tu carta de presentación, pronombres, edad, lo que quieras. @@ -144,7 +144,7 @@ es: url: Donde los eventos serán enviados labels: account: - attribution_domains_as_text: Solo permitir sitios web específicos + attribution_domains_as_text: Sitios web autorizados a acreditarte discoverable: Destacar perfil y publicaciones en algoritmos de descubrimiento fields: name: Etiqueta diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 8d045cfcfe..4a9245682d 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -3,7 +3,6 @@ et: simple_form: hints: account: - attribution_domains_as_text: Kaitseb valede omistuste eest. discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele. display_name: Su täisnimi või naljanimi. fields: Su koduleht, sugu, vanus. Mistahes, mida soovid. @@ -144,7 +143,6 @@ et: url: Kuhu sündmused saadetakse labels: account: - attribution_domains_as_text: Luba vaid kindlad veebilehed discoverable: Tõsta postitused ja profiil avastamise algoritmides esile fields: name: Nimetus diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index fdaa156e5d..6121467768 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,7 +3,6 @@ fa: simple_form: hints: account: - attribution_domains_as_text: محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -123,7 +122,6 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: - attribution_domains_as_text: اجازه فقط به پایگاه‌های وب خاص discoverable: معرّفی نمایه و فرسته‌ها در الگوریتم‌های کشف fields: name: برچسب diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 5c85367dbb..8c914295fe 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -3,7 +3,7 @@ fi: simple_form: hints: account: - attribution_domains_as_text: Suojaa vääriltä tunnustuksilta. + attribution_domains_as_text: Yksi riviä kohti. Suojaa vääriltä tunnustuksilta. discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille. display_name: Koko nimesi tai lempinimesi. fields: Verkkosivustosi, pronominisi, ikäsi ja mitä ikinä haluatkaan ilmoittaa. @@ -144,7 +144,7 @@ fi: url: Mihin tapahtumat lähetetään labels: account: - attribution_domains_as_text: Salli vain tietyt verkkosivustot + attribution_domains_as_text: Verkkosivustot, jotka voivat antaa sinulle tunnustusta discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index afcd3b39ac..e45183df99 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,7 +3,7 @@ fo: simple_form: hints: account: - attribution_domains_as_text: Verjir fyri følskum ískoytum. + attribution_domains_as_text: Eitt á hvørja reglu. Tað verjir fyri skeivum tilsipingum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -144,7 +144,7 @@ fo: url: Hvar hendingar verða sendar til labels: account: - attribution_domains_as_text: Loyv einans ávísum heimasíðum + attribution_domains_as_text: Heimasíður, sum hava loyvi at sipa til tín discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index 90a268f411..d2ce30ec8e 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -3,7 +3,6 @@ fr-CA: simple_form: hints: account: - attribution_domains_as_text: Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom cool. fields: Votre page d'accueil, pronoms, âge, tout ce que vous voulez. @@ -144,7 +143,6 @@ fr-CA: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Autoriser uniquement des sites Web spécifiques discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 370f5c1e46..626032600a 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,7 +3,6 @@ fr: simple_form: hints: account: - attribution_domains_as_text: Protège contre les fausses attributions. discoverable: Vos messages publics et votre profil peuvent être mis en avant ou recommandés dans diverses parties de Mastodon et votre profil peut être suggéré à d’autres utilisateurs. display_name: Votre nom complet ou votre nom rigolo. fields: Votre page personnelle, vos pronoms, votre âge, ce que vous voulez. @@ -144,7 +143,6 @@ fr: url: Là où les événements seront envoyés labels: account: - attribution_domains_as_text: Autoriser uniquement des sites Web spécifiques discoverable: Autoriser des algorithmes de découverte à mettre en avant votre profil et vos messages fields: name: Étiquette diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 11b56bd50d..8a753dcc89 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,7 +3,6 @@ fy: simple_form: hints: account: - attribution_domains_as_text: Beskermet tsjin net korrekte attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -144,7 +143,6 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: - attribution_domains_as_text: Allinnich bepaalde websites tastean discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 772f996ca6..7c125b165a 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -3,7 +3,6 @@ ga: simple_form: hints: account: - attribution_domains_as_text: Cosnaíonn sé ó sannadh bréagach. discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile. display_name: D'ainm iomlán nó d'ainm spraoi. fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat. @@ -144,7 +143,6 @@ ga: url: An áit a seolfar imeachtaí chuig labels: account: - attribution_domains_as_text: Ná ceadaigh ach láithreáin ghréasáin ar leith discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana fields: name: Lipéad diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index de585c7a21..9b6c156de7 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -3,7 +3,6 @@ gd: simple_form: hints: account: - attribution_domains_as_text: Dìonadh seo o bhuaidh-aithrisean cearra. discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch. display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. @@ -144,7 +143,6 @@ gd: url: Far an dèid na tachartasan a chur labels: account: - attribution_domains_as_text: Na ceadaich ach làraichean-lìnn sònraichte discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh fields: name: Leubail diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index cddeae5cee..b29a071e80 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,7 +3,7 @@ gl: simple_form: hints: account: - attribution_domains_as_text: Protéxete de falsas atribucións. + attribution_domains_as_text: Un por liña. Protéxete das atribucións falsas. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -144,7 +144,7 @@ gl: url: A onde se enviarán os eventos labels: account: - attribution_domains_as_text: Permitir só os sitios web indicados + attribution_domains_as_text: Sitios web que poden acreditarte discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 1feebb0d69..d8d6af5e99 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,7 +3,7 @@ he: simple_form: hints: account: - attribution_domains_as_text: הגנה מייחוסים שקריים. + attribution_domains_as_text: אחד בכל שורה. יגן מפני יחוס מטעה. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -144,7 +144,7 @@ he: url: היעד שאליו יישלחו אירועים labels: account: - attribution_domains_as_text: רק אתרים מסויימים יאושרו + attribution_domains_as_text: אתרים המורשים לייחס אליך מאמרים discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 383bdd0760..545fd4a8e9 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,7 +3,6 @@ hu: simple_form: hints: account: - attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -144,7 +143,6 @@ hu: url: Ahová az eseményket küldjük labels: account: - attribution_domains_as_text: Csak meghatározott weboldalak engedélyezése discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index dc5aad57ae..85fa74f1ed 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -142,7 +142,6 @@ ia: url: Ubi le eventos essera inviate labels: account: - attribution_domains_as_text: Solmente permitter sitos web specific discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 5cbbd9d06e..1df5008195 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -3,7 +3,6 @@ io: simple_form: hints: account: - attribution_domains_as_text: Protektas de falsa akreditaji. discoverable: Vua publika posti e profilo povas remarkesar o rekomendesar en diferanta parti di Mastodon e vua profilo povas sugestesar ad altra uzanti. display_name: Vua tota nomo o vua gaya nomo. fields: Vua retsituo, pronomi, evo, irgo quan vu volas. @@ -144,7 +143,6 @@ io: url: Ibe eventi sendesos labels: account: - attribution_domains_as_text: Nur permisas specifika retsitui discoverable: Inkluzar profilo e posti en trovado-algoritmi fields: name: Etiketo diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 6f3a4fe8a5..40ae267a06 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,7 +3,7 @@ is: simple_form: hints: account: - attribution_domains_as_text: Ver fyrir fölskum tilvísunum í höfunda. + attribution_domains_as_text: Eitt á hverja línu. Ver fyrir röngum tilvísunum. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -144,7 +144,7 @@ is: url: Hvert atburðir verða sendir labels: account: - attribution_domains_as_text: Einungis leyfa tiltekin vefsvæði + attribution_domains_as_text: Vefsvæði sem mega vitna í þig discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 7ed4c0d004..c36fce36f7 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,7 +3,7 @@ it: simple_form: hints: account: - attribution_domains_as_text: Protegge da false attribuzioni. + attribution_domains_as_text: Uno per riga. Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -144,7 +144,7 @@ it: url: Dove gli eventi saranno inviati labels: account: - attribution_domains_as_text: Consenti solo siti web specifici + attribution_domains_as_text: Siti web autorizzati ad accreditarti discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 809d2eaa9a..6ce16b6448 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,7 +3,6 @@ ja: simple_form: hints: account: - attribution_domains_as_text: 誤った帰属から保護します。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -144,7 +143,6 @@ ja: url: イベントの送信先 labels: account: - attribution_domains_as_text: 特定のウェブサイトのみを許可します discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index a649b4ec5a..fee07fa5e0 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -3,7 +3,6 @@ ko: simple_form: hints: account: - attribution_domains_as_text: 가짜 기여로부터 보호합니다. discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다 display_name: 진짜 이름 또는 재미난 이름. fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들. @@ -144,7 +143,6 @@ ko: url: 이벤트가 어디로 전송될 지 labels: account: - attribution_domains_as_text: 특정 웹사이트만 허용하기 discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기 fields: name: 라벨 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 5d3a02993b..de3dd2f31c 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,7 +3,7 @@ lt: simple_form: hints: account: - attribution_domains_as_text: Apsaugo nuo klaidingų atributų. + attribution_domains_as_text: Po vieną eilutėje. Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -107,7 +107,7 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: - attribution_domains_as_text: Leisti tik konkrečias svetaines + attribution_domains_as_text: Svetainės, kuriuose leidžiama jus nurodyti discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 523e9a5fcc..4303ba9b41 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -3,7 +3,6 @@ lv: simple_form: hints: account: - attribution_domains_as_text: Aizsargā no nepatiesa attiecinājuma. discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem. display_name: Tavs pilnais vārds vai tavs joku vārds. fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies. @@ -144,7 +143,6 @@ lv: url: Kur notikumi tiks nosūtīti labels: account: - attribution_domains_as_text: Ļaut tikai noteiktas tīmekļvietnes discoverable: Funkcijas profils un ziņas atklāšanas algoritmos fields: name: Marķējums diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index bf30cdb1bf..afd3624785 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,7 +3,7 @@ nl: simple_form: hints: account: - attribution_domains_as_text: Beschermt tegen onjuiste attributies. + attribution_domains_as_text: Eén per regel. Beschermt tegen valse attribueringen. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. @@ -144,7 +144,7 @@ nl: url: Waar gebeurtenissen naartoe worden verzonden labels: account: - attribution_domains_as_text: Alleen bepaalde websites toestaan + attribution_domains_as_text: Websites doe jou credit mogen geven discoverable: Jouw account en berichten laten uitlichten door Mastodon fields: name: Label diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 271c384391..f963d3bc72 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,7 +3,6 @@ nn: simple_form: hints: account: - attribution_domains_as_text: Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -144,7 +143,6 @@ nn: url: Kvar hendingar skal sendast labels: account: - attribution_domains_as_text: Tillat berre visse nettstader discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index bb404e56c9..c5ff55c15d 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -3,7 +3,7 @@ pl: simple_form: hints: account: - attribution_domains_as_text: Chroni przed fałszywym przypisaniem wpisów. + attribution_domains_as_text: Jedna na linię. Chroni przed fałszywym przypisaniem wpisów. discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom. display_name: Twoje imię lub pseudonim. fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek… @@ -144,7 +144,7 @@ pl: url: Dokąd będą wysłane zdarzenia labels: account: - attribution_domains_as_text: Zezwól tylko na konkretne strony + attribution_domains_as_text: Strony które mogą ci przypisywać autorstwo. discoverable: Udostępniaj profil i wpisy funkcjom odkrywania fields: name: Nazwa diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 96bc219e8e..16d7cfe445 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -3,7 +3,7 @@ pt-BR: simple_form: hints: account: - attribution_domains_as_text: Protege de atribuições falsas. + attribution_domains_as_text: Um por linha. Protege de falsas atribuições. discoverable: Suas publicações e perfil públicos podem ser destaques ou recomendados em várias áreas de Mastodon, e seu perfil pode ser sugerido a outros usuários. display_name: Seu nome completo ou apelido. fields: Sua página inicial, pronomes, idade ou qualquer coisa que quiser. @@ -144,7 +144,7 @@ pt-BR: url: Aonde os eventos serão enviados labels: account: - attribution_domains_as_text: Permitir apenas sites específicos + attribution_domains_as_text: Sites permitidos para credenciar você discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 3ff746451b..1bdffc6f1d 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,7 +3,6 @@ ru: simple_form: hints: account: - attribution_domains_as_text: Защищает от ложных атрибуций. discoverable: Ваши публичные сообщения и профиль могут быть показаны или рекомендованы в различных разделах Mastodon, и ваш профиль может быть предложен другим пользователям. display_name: Ваше полное имя или псевдоним. fields: Ваша домашняя страница, местоимения, возраст - все, что угодно. @@ -144,7 +143,6 @@ ru: url: Куда события будут отправляться labels: account: - attribution_domains_as_text: Разрешить только определенные сайты discoverable: Профиль и сообщения в алгоритмах обнаружения fields: name: Пункт diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 169f4a02de..3d86557282 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,7 +3,6 @@ sq: simple_form: hints: account: - attribution_domains_as_text: Mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -144,7 +143,6 @@ sq: url: Ku do të dërgohen aktet labels: account: - attribution_domains_as_text: Lejo vetëm sajte specifikë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index c588c9c071..297e96a2bd 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,7 +3,6 @@ sv: simple_form: hints: account: - attribution_domains_as_text: Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -144,7 +143,6 @@ sv: url: Dit händelser kommer skickas labels: account: - attribution_domains_as_text: Tillåt endast specifika webbplatser discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 1ecd672a97..8bd782c140 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -3,7 +3,6 @@ th: simple_form: hints: account: - attribution_domains_as_text: ปกป้องจากการระบุแหล่งที่มาที่ผิด discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ @@ -144,7 +143,6 @@ th: url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: - attribution_domains_as_text: อนุญาตเฉพาะเว็บไซต์ที่เฉพาะเจาะจงเท่านั้น discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ fields: name: ป้ายชื่อ diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index d90b97bf9b..5aed566626 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,7 +3,7 @@ tr: simple_form: hints: account: - attribution_domains_as_text: Sahte atıflardan korur. + attribution_domains_as_text: Her satırda bir tanesi. Sahte atıflardan korur. discoverable: Herkese açık gönderileriniz ve profiliniz Mastodon'un çeşitli kısımlarında öne çıkarılabilir veya önerilebilir ve profiliniz başka kullanıcılara önerilebilir. display_name: Tam adınız veya kullanıcı adınız. fields: Ana sayfanız, zamirleriniz, yaşınız, istediğiniz herhangi bir şey. @@ -144,7 +144,7 @@ tr: url: Olayların gönderileceği yer labels: account: - attribution_domains_as_text: Yalnızca belirli websitelerine izin ver + attribution_domains_as_text: Size atıf verebilecek websiteleri discoverable: Profil ve gönderileri keşif algoritmalarında kullan fields: name: Etiket diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index b584a6cada..e2a1562b53 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,7 +3,6 @@ uk: simple_form: hints: account: - attribution_domains_as_text: Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -144,7 +143,6 @@ uk: url: Куди надсилатимуться події labels: account: - attribution_domains_as_text: Дозволити лише на певних вебсайтах discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 8330ec3de4..2b1d84f595 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -3,7 +3,7 @@ vi: simple_form: hints: account: - attribution_domains_as_text: Bảo vệ khỏi những sự gán ghép sai. + attribution_domains_as_text: Mỗi cái một dòng. Bảo vệ khỏi những sự gán ghép sai. discoverable: Hồ sơ và tút công khai của bạn được đề xuất cho những người dùng Mastodon khác. display_name: Tên đầy đủ hoặc biệt danh đều được. fields: Trang blog của bạn, nghề nghiệp, tuổi hoặc bất cứ thứ gì. @@ -144,7 +144,7 @@ vi: url: Nơi những sự kiện được gửi đến labels: account: - attribution_domains_as_text: Chỉ cho phép các website đặc biệt + attribution_domains_as_text: Các trang web được ghi nhận cho bạn discoverable: Cho phép khám phá hồ sơ fields: name: Nhãn diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 419cb99abb..6586c372ef 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -3,7 +3,7 @@ zh-CN: simple_form: hints: account: - attribution_domains_as_text: 保护作品免受虚假署名。 + attribution_domains_as_text: 每行一个域名。这样就可以保护作品免受虚假署名。 discoverable: 您的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,您的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 @@ -144,7 +144,7 @@ zh-CN: url: 事件将被发往的目的地 labels: account: - attribution_domains_as_text: 仅允许特定网站 + attribution_domains_as_text: 授权展示你的署名的网站 discoverable: 在发现算法中展示你的个人资料和嘟文 fields: name: 标签 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index a5bc683634..289a24f122 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,7 +3,7 @@ zh-TW: simple_form: hints: account: - attribution_domains_as_text: 偽造署名保護。 + attribution_domains_as_text: 每行一個。以保護偽造署名。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -144,7 +144,7 @@ zh-TW: url: 事件會被傳送至何處 labels: account: - attribution_domains_as_text: 僅允許特定網站 + attribution_domains_as_text: 允許對您予與信譽之網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index fdeb959f88..c113308eea 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1159,7 +1159,6 @@ sq: use_security_key: Përdor kyç sigurie author_attribution: example_title: Tekst shembull - hint_html: Kontrolloni se si vlerësoheni, kur ndahen lidhje me të tjerë në Mastodon. more_from_html: Më tepër nga %{name} s_blog: Blogu i %{name} title: Atribuim autorësh diff --git a/config/locales/th.yml b/config/locales/th.yml index dd57a8df7f..2c21687a46 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1148,7 +1148,6 @@ th: use_security_key: ใช้กุญแจความปลอดภัย author_attribution: example_title: ข้อความตัวอย่าง - hint_html: ควบคุมวิธีที่ให้เครดิตแก่คุณเมื่อมีการแบ่งปันลิงก์ใน Mastodon more_from_html: เพิ่มเติมจาก %{name} s_blog: บล็อกของ %{name} title: การระบุแหล่งที่มาผู้สร้าง diff --git a/config/locales/tr.yml b/config/locales/tr.yml index ee74f237ee..942ee2fbf2 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1166,9 +1166,11 @@ tr: use_security_key: Güvenlik anahtarını kullan author_attribution: example_title: Örnek metin - hint_html: Mastodon'da bağlantılar paylaşıldığında nasıl tanınmak istediğinizi denetleyin. + hint_html: Mastodon dışında haber veya günlük yazıları mı yazıyorsunuz? Bu yazılar Mastodon'da paylaşıldığında size nasıl atıf yapılacağını denetleyin. + instructions: 'Bu kodun yazınızın HTML''sinde olduğundan emin olun:' more_from_html: "%{name} kişisinden daha fazlası" s_blog: "%{name} kişisinin Günlüğü" + then_instructions: Daha sonra, yayının alan adını aşağıda sahaya girin. title: Yazar atıfı challenge: confirm: Devam et diff --git a/config/locales/uk.yml b/config/locales/uk.yml index dec4299fb9..ab50ac4dee 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1202,9 +1202,9 @@ uk: use_security_key: Використовувати ключ безпеки author_attribution: example_title: Зразок тексту - hint_html: Контроль авторства поширених посилань на Mastodon. more_from_html: Більше від %{name} s_blog: Блог %{name} + then_instructions: Потім додайте доменне ім'я публікації у поле нижче. title: Атрибути авторства challenge: confirm: Далі diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 097e573efa..00431ba425 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1148,9 +1148,11 @@ vi: use_security_key: Dùng khóa bảo mật author_attribution: example_title: Văn bản mẫu - hint_html: Kiểm soát cách bạn được ghi nhận khi chia sẻ liên kết trên Mastodon. + hint_html: Bạn là nhà báo hoặc blogger bên ngoài Mastodon? Kiểm soát cách bạn được ghi nhận khi chúng được chia sẻ trên Mastodon. + instructions: 'Đặt mã này trong HTML bài viết:' more_from_html: Viết bởi %{name} s_blog: "%{name}'s Blog" + then_instructions: Sau đó, thêm URL của báo/blog trong trường bên dưới. title: Ghi nhận người đăng challenge: confirm: Tiếp tục diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 025bc2b6dd..209683e21c 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1148,9 +1148,11 @@ zh-CN: use_security_key: 使用安全密钥 author_attribution: example_title: 示例文本 - hint_html: 控制在 Mastodon 上分享的链接如何显示你的署名。 + hint_html: 你是否在 Mastodon 之外撰写新闻或博客文章?控制它们被分享到 Mastodon 时的署名方式。 + instructions: 请确保将这段代码放在您文章的 HTML 中: more_from_html: 来自 %{name} 的更多内容 s_blog: "%{name} 的博客" + then_instructions: 然后,在下面的文本框中添加你用于发布文章的域名。 title: 作者归属 challenge: confirm: 继续 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c461aabcdc..d8fef10816 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1150,9 +1150,11 @@ zh-TW: use_security_key: 使用安全金鑰 author_attribution: example_title: 範例文字 - hint_html: 控制如何於 Mastodon 上分享連結時註明您的貢獻。 + hint_html: 您是否正於 Mastodon 之外撰寫新聞或部落格文章?控制當它們於 Mastodon 上分享時您如何獲得信譽。 + instructions: 確認您文章 HTML 內容中包含此份程式碼: more_from_html: 來自 %{name} 之更多內容 s_blog: "%{name} 的部落格" + then_instructions: 接著,將發表處網域加入以下欄位中。 title: 作者署名 challenge: confirm: 繼續 From 2391937e11d2dd1ce4da9073511ee0f85a3f63f9 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 18 Oct 2024 12:21:25 +0200 Subject: [PATCH 198/550] Fix follow recommendation moderation page default language when using regional variant (#32580) --- app/models/follow_recommendation_filter.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/follow_recommendation_filter.rb b/app/models/follow_recommendation_filter.rb index 62a02eba5a..f3b0fd319b 100644 --- a/app/models/follow_recommendation_filter.rb +++ b/app/models/follow_recommendation_filter.rb @@ -11,7 +11,7 @@ class FollowRecommendationFilter attr_reader :params, :language def initialize(params) - @language = params.delete('language') || I18n.locale + @language = usable_language(params.delete('language') || I18n.locale) @params = params end @@ -22,4 +22,15 @@ class FollowRecommendationFilter Account.includes(:account_stat).joins(:follow_recommendation).merge(FollowRecommendation.localized(@language).order(rank: :desc)) end end + + private + + def usable_language(locale) + return locale if Trends.available_locales.include?(locale) + + locale = locale.to_s.split(/[_-]/).first + return locale if Trends.available_locales.include?(locale) + + nil + end end From 1fc165de02d79294c8a218f5fa82bcd477484ca1 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 18 Oct 2024 12:51:05 +0200 Subject: [PATCH 199/550] Remove ability to get embed code for remote posts (#32578) --- app/javascript/mastodon/components/status_action_bar.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status_action_bar.jsx b/app/javascript/mastodon/components/status_action_bar.jsx index 75531abf56..94cd7e3e07 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -264,7 +264,7 @@ class StatusActionBar extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.share), action: this.handleShareClick }); } - if (publicStatus && (signedIn || !isRemote)) { + if (publicStatus && !isRemote) { menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed }); } From fb6d7ed4752ec94ce414de6e78cdaf3f7515f9e9 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 21 Oct 2024 09:08:18 +0200 Subject: [PATCH 200/550] Replace `execCommand` for copying text with the modern `clipboard` API (#32598) --- app/javascript/entrypoints/public.tsx | 35 +++++++++++---------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/app/javascript/entrypoints/public.tsx b/app/javascript/entrypoints/public.tsx index d33e00d5da..c1e8418014 100644 --- a/app/javascript/entrypoints/public.tsx +++ b/app/javascript/entrypoints/public.tsx @@ -327,31 +327,24 @@ Rails.delegate(document, '.input-copy button', 'click', ({ target }) => { if (!input) return; - const oldReadOnly = input.readOnly; - - input.readOnly = false; - input.focus(); - input.select(); - input.setSelectionRange(0, input.value.length); - - try { - if (document.execCommand('copy')) { - input.blur(); - + navigator.clipboard + .writeText(input.value) + .then(() => { const parent = target.parentElement; - if (!parent) return; - parent.classList.add('copied'); + if (parent) { + parent.classList.add('copied'); - setTimeout(() => { - parent.classList.remove('copied'); - }, 700); - } - } catch (err) { - console.error(err); - } + setTimeout(() => { + parent.classList.remove('copied'); + }, 700); + } - input.readOnly = oldReadOnly; + return true; + }) + .catch((error: unknown) => { + console.error(error); + }); }); const toggleSidebar = () => { From 52af99ce778495cf843be8fdf4de7e9a5f393889 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:27:09 +0200 Subject: [PATCH 201/550] Update dependency libvips to v8.15.5 (#32596) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a5e35025ae..bb29ad21fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -191,7 +191,7 @@ FROM build AS libvips # libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"] # renovate: datasource=github-releases depName=libvips packageName=libvips/libvips -ARG VIPS_VERSION=8.15.3 +ARG VIPS_VERSION=8.15.5 # libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"] ARG VIPS_URL=https://github.com/libvips/libvips/releases/download From a19a120769ee5a20851aaca42b98c96e9d659b78 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:27:27 +0200 Subject: [PATCH 202/550] Update DefinitelyTyped types (non-major) (#32278) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e1ad6ade6..a4d65ef53e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3756,9 +3756,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.195": - version: 4.17.9 - resolution: "@types/lodash@npm:4.17.9" - checksum: 10c0/54de935e835508b5f835a5dfaedd2b9a299685a21d11e9c5cd2dde57331d03bc2f98b71d2424ca8460f447ecd55a673e45ccdb70e58f9f72745710f6b91abc60 + version: 4.17.12 + resolution: "@types/lodash@npm:4.17.12" + checksum: 10c0/106008f628ea3c74ed7ee7842dee79e230c84e3721ac38c293700031adb5bd130113048c22f476dbde0d0c119506b0fc447d4bd62eca922682d11e00e1377967 languageName: node linkType: hard @@ -3883,11 +3883,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18.2.4": - version: 18.3.0 - resolution: "@types/react-dom@npm:18.3.0" + version: 18.3.1 + resolution: "@types/react-dom@npm:18.3.1" dependencies: "@types/react": "npm:*" - checksum: 10c0/6c90d2ed72c5a0e440d2c75d99287e4b5df3e7b011838cdc03ae5cd518ab52164d86990e73246b9d812eaf02ec351d74e3b4f5bd325bf341e13bf980392fd53b + checksum: 10c0/8b416551c60bb6bd8ec10e198c957910cfb271bc3922463040b0d57cf4739cdcd24b13224f8d68f10318926e1ec3cd69af0af79f0291b599a992f8c80d47f1eb languageName: node linkType: hard From 8e39cc921877fde1aab24c872125767b0a85cae6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:28:01 +0200 Subject: [PATCH 203/550] Update Yarn to v4.5.1 (#32586) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- streaming/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 24770e6d25..a37b766ef0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/mastodon", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.0", + "packageManager": "yarn@4.5.1", "engines": { "node": ">=18" }, diff --git a/streaming/package.json b/streaming/package.json index d573c9b284..585c4be4e1 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/streaming", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.0", + "packageManager": "yarn@4.5.1", "engines": { "node": ">=18" }, From 35da47c857ccf6c3aee27af6d2ce9a402dbc3a3e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 07:28:35 +0000 Subject: [PATCH 204/550] Update devDependencies (non-major) (#32603) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index a4d65ef53e..e7c733ded1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2196,8 +2196,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.2.15 - resolution: "@formatjs/cli@npm:6.2.15" + version: 6.3.0 + resolution: "@formatjs/cli@npm:6.3.0" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2226,7 +2226,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/e947aa7f3994251392fe15673752a8d8e3c8a30733bb49de5e617d45a327a3e1d16419e2d6b01f7ef2cbe86e2946024342d5b3301e6a8f17de3de9e2e7aedb29 + checksum: 10c0/9a803eacbcf2060c8b3cedcf9eef1300df73722eeadaebf7282ff0e9cc41bdcb98d60cea46c297fb9060a07ccd56d44f70247d659827086a55a1d0787e6bd545 languageName: node linkType: hard @@ -3425,8 +3425,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.0.0": - version: 6.5.0 - resolution: "@testing-library/jest-dom@npm:6.5.0" + version: 6.6.2 + resolution: "@testing-library/jest-dom@npm:6.6.2" dependencies: "@adobe/css-tools": "npm:^4.4.0" aria-query: "npm:^5.0.0" @@ -3435,7 +3435,7 @@ __metadata: dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.21" redent: "npm:^3.0.0" - checksum: 10c0/fd5936a547f04608d8de15a7de3ae26516f21023f8f45169b10c8c8847015fd20ec259b7309f08aa1031bcbc37c6e5e6f532d1bb85ef8f91bad654193ec66a4c + checksum: 10c0/1c51390f97063ce8b06a7267534aac0d6ac9b1f27042a0ae43ca52d886b32c9d2b0ff85e62e7cfeb7e1f089ef03c4d75fda4f2b7b1f08afb4bdb09a5d56566d9 languageName: node linkType: hard @@ -13220,7 +13220,7 @@ __metadata: languageName: node linkType: hard -"pino-abstract-transport@npm:^1.0.0, pino-abstract-transport@npm:^1.2.0": +"pino-abstract-transport@npm:^1.2.0": version: 1.2.0 resolution: "pino-abstract-transport@npm:1.2.0" dependencies: @@ -13230,6 +13230,15 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:^2.0.0": + version: 2.0.0 + resolution: "pino-abstract-transport@npm:2.0.0" + dependencies: + split2: "npm:^4.0.0" + checksum: 10c0/02c05b8f2ffce0d7c774c8e588f61e8b77de8ccb5f8125afd4a7325c9ea0e6af7fb78168999657712ae843e4462bb70ac550dfd6284f930ee57f17f486f25a9f + languageName: node + linkType: hard + "pino-http@npm:^10.0.0": version: 10.3.0 resolution: "pino-http@npm:10.3.0" @@ -13243,8 +13252,8 @@ __metadata: linkType: hard "pino-pretty@npm:^11.0.0": - version: 11.2.2 - resolution: "pino-pretty@npm:11.2.2" + version: 11.3.0 + resolution: "pino-pretty@npm:11.3.0" dependencies: colorette: "npm:^2.0.7" dateformat: "npm:^4.6.3" @@ -13254,7 +13263,7 @@ __metadata: joycon: "npm:^3.1.1" minimist: "npm:^1.2.6" on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:^1.0.0" + pino-abstract-transport: "npm:^2.0.0" pump: "npm:^3.0.0" readable-stream: "npm:^4.0.0" secure-json-parse: "npm:^2.4.0" @@ -13262,7 +13271,7 @@ __metadata: strip-json-comments: "npm:^3.1.1" bin: pino-pretty: bin.js - checksum: 10c0/3ce1769907886a5584f6c8123d9bc987712ad10a375797733a0fe95a238df587dac8e2b709bab291c4e30d41b0cf65808c708c96f8eb98b2778b6df60afa7e66 + checksum: 10c0/8e4d842bfce5fa3fc69d3a6adb1bca873051e000f0fb4879ae1cc5d1410387b2464a7208f6ecc70ec49bb149a9617ec233cb3ec7a5f017ec141cb482d79917c2 languageName: node linkType: hard From 2e0bb35cf70c903467b1daf2fee7f6e718f5871c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 09:29:09 +0200 Subject: [PATCH 205/550] Update dependency brakeman to v6.2.2 (#32587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d1ee8e0fa8..264f49a37c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -137,7 +137,7 @@ GEM blurhash (0.1.8) bootsnap (1.18.4) msgpack (~> 1.2) - brakeman (6.2.1) + brakeman (6.2.2) racc browser (5.3.1) brpoplpush-redis_script (0.1.3) From 650f224328bd1e1e1da9616776b96a894860be7f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 07:29:32 +0000 Subject: [PATCH 206/550] Update dependency faker to v3.5.1 (#32588) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 264f49a37c..40db30cb52 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -233,7 +233,7 @@ GEM tzinfo excon (0.111.0) fabrication (2.31.0) - faker (3.4.2) + faker (3.5.1) i18n (>= 1.8.11, < 2) faraday (1.10.3) faraday-em_http (~> 1.0) From 4a65fa74fa1b9ce81563c4f63651aa7d86dbced8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 07:29:51 +0000 Subject: [PATCH 207/550] Update dependency aws-sdk-s3 to v1.169.0 (#32552) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 40db30cb52..e437760ed1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -100,17 +100,17 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.983.0) - aws-sdk-core (3.209.1) + aws-partitions (1.992.0) + aws-sdk-core (3.210.0) aws-eventstream (~> 1, >= 1.3.0) - aws-partitions (~> 1, >= 1.651.0) + aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.94.0) - aws-sdk-core (~> 3, >= 3.207.0) + aws-sdk-kms (1.95.0) + aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.167.0) - aws-sdk-core (~> 3, >= 3.207.0) + aws-sdk-s3 (1.169.0) + aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.10.0) From 11a63b2db6146a5bc4d85b5c1b56ccd932a212ea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:03:44 +0200 Subject: [PATCH 208/550] Update eslint (non-major) (#32279) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renaud Chaput --- app/javascript/mastodon/components/button.tsx | 2 +- .../mastodon/components/short_number.tsx | 1 + .../components/notification_follow.tsx | 2 + .../notification_group_with_status.tsx | 1 + yarn.lock | 296 ++++++++---------- 5 files changed, 127 insertions(+), 175 deletions(-) diff --git a/app/javascript/mastodon/components/button.tsx b/app/javascript/mastodon/components/button.tsx index 3e720f7cee..b349a83f2b 100644 --- a/app/javascript/mastodon/components/button.tsx +++ b/app/javascript/mastodon/components/button.tsx @@ -1,4 +1,4 @@ -import type { PropsWithChildren } from 'react'; +import type { PropsWithChildren, JSX } from 'react'; import { useCallback } from 'react'; import classNames from 'classnames'; diff --git a/app/javascript/mastodon/components/short_number.tsx b/app/javascript/mastodon/components/short_number.tsx index a0b523aaad..37201a5e1d 100644 --- a/app/javascript/mastodon/components/short_number.tsx +++ b/app/javascript/mastodon/components/short_number.tsx @@ -1,4 +1,5 @@ import { memo } from 'react'; +import type { JSX } from 'react'; import { FormattedMessage, FormattedNumber } from 'react-intl'; diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx index 2c90777b9f..78ba260fa9 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_follow.tsx @@ -1,3 +1,5 @@ +import type { JSX } from 'react'; + import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx index 91f8ae2d40..861556620f 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_group_with_status.tsx @@ -1,4 +1,5 @@ import { useMemo } from 'react'; +import type { JSX } from 'react'; import classNames from 'classnames'; diff --git a/yarn.lock b/yarn.lock index e7c733ded1..9717740712 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2116,14 +2116,14 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.48.0": - version: 0.48.0 - resolution: "@es-joy/jsdoccomment@npm:0.48.0" +"@es-joy/jsdoccomment@npm:~0.49.0": + version: 0.49.0 + resolution: "@es-joy/jsdoccomment@npm:0.49.0" dependencies: comment-parser: "npm:1.4.1" esquery: "npm:^1.6.0" jsdoc-type-pratt-parser: "npm:~4.1.0" - checksum: 10c0/8d87c7c0426fade009c30ab429d4ede53fd253d40b55079c02bdacdaa4c0fe904aaea5e3084cd98052f2bed6b3030c381d84f4a3251b343a71fee6f681a08bee + checksum: 10c0/16717507d557d37e7b59456fedeefbe0a3bc93aa2d9c043d5db91e24e076509b6fcb10ee6fd1dafcb0c5bbe50ae329b45de5b83541cb5994a98c9e862a45641e languageName: node linkType: hard @@ -2162,10 +2162,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 languageName: node linkType: hard @@ -2436,14 +2436,14 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" + "@humanwhocodes/object-schema": "npm:^2.0.3" debug: "npm:^4.3.1" minimatch: "npm:^3.0.5" - checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e languageName: node linkType: hard @@ -2454,10 +2454,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.2 - resolution: "@humanwhocodes/object-schema@npm:2.0.2" - checksum: 10c0/6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c languageName: node linkType: hard @@ -4170,14 +4170,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^8.0.0": - version: 8.1.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.1.0" + version: 8.10.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.10.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.1.0" - "@typescript-eslint/type-utils": "npm:8.1.0" - "@typescript-eslint/utils": "npm:8.1.0" - "@typescript-eslint/visitor-keys": "npm:8.1.0" + "@typescript-eslint/scope-manager": "npm:8.10.0" + "@typescript-eslint/type-utils": "npm:8.10.0" + "@typescript-eslint/utils": "npm:8.10.0" + "@typescript-eslint/visitor-keys": "npm:8.10.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -4188,25 +4188,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/7bbeae588f859b59c34d6a76cac06ef0fa605921b40c5d3b65b94829984280ea84c4dd3f5cb9ce2eb326f5563e9abb4c90ebff05c47f83f4def296c2ea1fa86c + checksum: 10c0/4b77ba9c865a2a14e238cd330b5901f0274b8ce1c13324fccd0339b8eea82a50a4709394c903fd8cd5bd0d3aebace0761ff9a4a19fa20b00bb61349b7671c035 languageName: node linkType: hard "@typescript-eslint/parser@npm:^8.0.0": - version: 8.1.0 - resolution: "@typescript-eslint/parser@npm:8.1.0" + version: 8.10.0 + resolution: "@typescript-eslint/parser@npm:8.10.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.1.0" - "@typescript-eslint/types": "npm:8.1.0" - "@typescript-eslint/typescript-estree": "npm:8.1.0" - "@typescript-eslint/visitor-keys": "npm:8.1.0" + "@typescript-eslint/scope-manager": "npm:8.10.0" + "@typescript-eslint/types": "npm:8.10.0" + "@typescript-eslint/typescript-estree": "npm:8.10.0" + "@typescript-eslint/visitor-keys": "npm:8.10.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/b94b2d3ab5ca505484d100701fad6a04a5dc8d595029bac1b9f5b8a4a91d80fd605b0f65d230b36a97ab7e5d55eeb0c28af2ab63929a3e4ab8fdefd2a548c36b + checksum: 10c0/7becb2457c085c239838d301796074b790f46dd38c9fbc14ec1dec8e993c7115cd8a66cdc07983c3a68a2dd92e24e8acc49d69a4ebcc29e9869957eb52d1cb74 languageName: node linkType: hard @@ -4220,28 +4220,28 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/scope-manager@npm:8.1.0" +"@typescript-eslint/scope-manager@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/scope-manager@npm:8.10.0" dependencies: - "@typescript-eslint/types": "npm:8.1.0" - "@typescript-eslint/visitor-keys": "npm:8.1.0" - checksum: 10c0/2bcf8cd176a1819bddcae16c572e7da8fba821b995a91cd53d64d8d6b85a17f5a895522f281ba57e34929574bddd4d6684ee3e545ec4e8096be4c3198e253a9a + "@typescript-eslint/types": "npm:8.10.0" + "@typescript-eslint/visitor-keys": "npm:8.10.0" + checksum: 10c0/b8bb8635c4d6c00a3578d6265e3ee0f5d96d0c9dee534ed588aa411c3f4497fd71cce730c3ae7571e52453d955b191bc9edcc47c9af21a20c90e9a20f2371108 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/type-utils@npm:8.1.0" +"@typescript-eslint/type-utils@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/type-utils@npm:8.10.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.1.0" - "@typescript-eslint/utils": "npm:8.1.0" + "@typescript-eslint/typescript-estree": "npm:8.10.0" + "@typescript-eslint/utils": "npm:8.10.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/62753941c4136e8d2daa72fe0410dea48e5317a6f12ece6382ca85e29912bd1b3f739b61d1060fc0a1f8c488dfc905beab4c8b8497951a21c3138a659c7271ec + checksum: 10c0/1af8fce8394279e6ac7bcef449a132072ee36e374c8d557564246ffe7150230844901ca0305e29525bf37c87010e03bf8bedec76fccbfe1e41931cb4f274e208 languageName: node linkType: hard @@ -4252,10 +4252,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/types@npm:8.1.0" - checksum: 10c0/ceade44455f45974e68956016c4d1c6626580732f7f9675e14ffa63db80b551752b0df596b20473dae9f0dc6ed966e17417dc2cf36e1a82b6ab0edc97c5eaa50 +"@typescript-eslint/types@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/types@npm:8.10.0" + checksum: 10c0/f27dd43c8383e02e914a254257627e393dfc0f08b0f74a253c106813ae361f090271b2f3f2ef588fa3ca1329897d873da595bb5641fe8e3091b25eddca24b5d2 languageName: node linkType: hard @@ -4278,14 +4278,14 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.1.0" +"@typescript-eslint/typescript-estree@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.10.0" dependencies: - "@typescript-eslint/types": "npm:8.1.0" - "@typescript-eslint/visitor-keys": "npm:8.1.0" + "@typescript-eslint/types": "npm:8.10.0" + "@typescript-eslint/visitor-keys": "npm:8.10.0" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" + fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" @@ -4293,21 +4293,21 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a7bc8275df1c79c4cb14ef086c56674316dd4907efec53eddca35d0b5220428b69c82178ce2d95138da2e398269c8bd0764cae8020a36417e411e35c3c47bc4b + checksum: 10c0/535a740fe25be0e28fe68c41e3264273d1e5169c9f938e08cc0e3415c357726f43efa44621960108c318fc3305c425d29f3223b6e731d44d67f84058a8947304 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/utils@npm:8.1.0" +"@typescript-eslint/utils@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/utils@npm:8.10.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.1.0" - "@typescript-eslint/types": "npm:8.1.0" - "@typescript-eslint/typescript-estree": "npm:8.1.0" + "@typescript-eslint/scope-manager": "npm:8.10.0" + "@typescript-eslint/types": "npm:8.10.0" + "@typescript-eslint/typescript-estree": "npm:8.10.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10c0/c95503a6bdcd98b1ff04d1adbf46377b2036b1c510d90a4a056401f996f775f06c3108c95fb81cd6babc9c97b73b91b8e848f0337bc508de8a49c993582f0e75 + checksum: 10c0/a21a2933517176abd00fcd5d8d80023e35dc3d89d5746bbac43790b4e984ab1f371117db08048bce7f42d54c64f4e0e35161149f8f34fd25a27bff9d1110fd16 languageName: node linkType: hard @@ -4338,13 +4338,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.1.0": - version: 8.1.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.1.0" +"@typescript-eslint/visitor-keys@npm:8.10.0": + version: 8.10.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.10.0" dependencies: - "@typescript-eslint/types": "npm:8.1.0" + "@typescript-eslint/types": "npm:8.10.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/b7544dbb0eec1ddbfcd95c04b51b9a739c2e768c16d1c88508f976a2b0d1bc02fefb7491930e06e48073a5c07c6f488cd8403bba3a8b918888b93a88d5ac3869 + checksum: 10c0/14721c4ac939640d5fd1ee1b6eeb07604b11a6017e319e21dcc71e7aac2992341fc7ae1992d977bad4433b6a1d0d1c0c279e6927316b26245f6e333f922fa458 languageName: node linkType: hard @@ -4834,7 +4834,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.3.0, aria-query@npm:^5.0.0": +"aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -4843,12 +4843,10 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:~5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: "npm:^2.0.5" - checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e languageName: node linkType: hard @@ -4873,7 +4871,7 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": +"array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: @@ -7059,32 +7057,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.0.5": - version: 2.2.3 - resolution: "deep-equal@npm:2.2.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.5" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.2" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.13" - checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f - languageName: node - linkType: hard - "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -7758,26 +7730,9 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 - languageName: node - linkType: hard - -"es-iterator-helpers@npm:^1.0.19": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" +"es-iterator-helpers@npm:^1.0.19, es-iterator-helpers@npm:^1.1.0": + version: 1.1.0 + resolution: "es-iterator-helpers@npm:1.1.0" dependencies: call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" @@ -7786,14 +7741,14 @@ __metadata: es-set-tostringtag: "npm:^2.0.3" function-bind: "npm:^1.1.2" get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" + globalthis: "npm:^1.0.4" has-property-descriptors: "npm:^1.0.2" has-proto: "npm:^1.0.3" has-symbols: "npm:^1.0.3" internal-slot: "npm:^1.0.7" - iterator.prototype: "npm:^1.1.2" + iterator.prototype: "npm:^1.1.3" safe-array-concat: "npm:^1.1.2" - checksum: 10c0/ae8f0241e383b3d197383b9842c48def7fce0255fb6ed049311b686ce295595d9e389b466f6a1b7d4e7bb92d82f5e716d6fae55e20c1040249bf976743b038c5 + checksum: 10c0/84d6c240c7da6e62323b336cb1497781546dab16bebdbd879ccfdf588979712d3e941d41165b6c2ffce5a03a7b929d4e6131d3124d330da1a0e2bfa1da7cd99f languageName: node linkType: hard @@ -8002,10 +7957,10 @@ __metadata: linkType: hard "eslint-plugin-jsdoc@npm:^50.0.0": - version: 50.2.2 - resolution: "eslint-plugin-jsdoc@npm:50.2.2" + version: 50.4.3 + resolution: "eslint-plugin-jsdoc@npm:50.4.3" dependencies: - "@es-joy/jsdoccomment": "npm:~0.48.0" + "@es-joy/jsdoccomment": "npm:~0.49.0" are-docs-informative: "npm:^0.0.2" comment-parser: "npm:1.4.1" debug: "npm:^4.3.6" @@ -8018,15 +7973,15 @@ __metadata: synckit: "npm:^0.9.1" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/f41d30246f6a4b6acb55e8cd75cf4fc256315e141ab25f7740fa6fa58cdd24e08cb672b4a350da93aeb126d210bd25981310a50f97cfb108f6a7ce8668b6b90a + checksum: 10c0/96067f8fc3553371e9afdc6d03c166228bfd3cb004fcd70c4357d49185732f384351e20f44c21b0a13ea318c8aabbd584b627804f62a2a80376507646708a786 languageName: node linkType: hard "eslint-plugin-jsx-a11y@npm:~6.10.0": - version: 6.10.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.0" + version: 6.10.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.1" dependencies: - aria-query: "npm:~5.1.3" + aria-query: "npm:^5.3.2" array-includes: "npm:^3.1.8" array.prototype.flatmap: "npm:^1.3.2" ast-types-flow: "npm:^0.0.8" @@ -8034,17 +7989,17 @@ __metadata: axobject-query: "npm:^4.1.0" damerau-levenshtein: "npm:^1.0.8" emoji-regex: "npm:^9.2.2" - es-iterator-helpers: "npm:^1.0.19" + es-iterator-helpers: "npm:^1.1.0" hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^3.3.5" language-tags: "npm:^1.0.9" minimatch: "npm:^3.1.2" object.fromentries: "npm:^2.0.8" safe-regex-test: "npm:^1.0.3" - string.prototype.includes: "npm:^2.0.0" + string.prototype.includes: "npm:^2.0.1" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 10c0/9f8e29a3317fb6a82e2ecd333fe0fab3a69fff786d087eb65dc723d6e954473ab681d14a252d7cb2971f5e7f68816cb6f7731766558e1833a77bd73af1b5ab34 + checksum: 10c0/25bf28e3db4f6789c5d4f9300fc6fc54faca19ecc537d0f46e9c873f80ed37103a033e1f716f608fab5f5813dd38af65a9a6ae2e29dd079763ce539ebecf998e languageName: node linkType: hard @@ -8067,8 +8022,8 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.33.2": - version: 7.35.2 - resolution: "eslint-plugin-react@npm:7.35.2" + version: 7.37.1 + resolution: "eslint-plugin-react@npm:7.37.1" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" @@ -8090,7 +8045,7 @@ __metadata: string.prototype.repeat: "npm:^1.0.0" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10c0/5f891f5a77e902a0ca8d10b23d0b800e90a09400187febe5986c5078d6277baa4b974d6acdbba25baae065dbcf12eb9241b5f5782527d0780314c2ee5006a8af + checksum: 10c0/13cf55666f16d2ca45b14aad1b0e14741d1817679c86d20aff0bc1e802439a8541f40a42c4c8e3486ffb710f1bcc2f3e56697f2b5f724306a7fca174e1ad6433 languageName: node linkType: hard @@ -8129,14 +8084,14 @@ __metadata: linkType: hard "eslint@npm:^8.41.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" + version: 8.57.1 + resolution: "eslint@npm:8.57.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint/js": "npm:8.57.1" + "@humanwhocodes/config-array": "npm:^0.13.0" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" "@ungap/structured-clone": "npm:^1.2.0" @@ -8172,7 +8127,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 + checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 languageName: node linkType: hard @@ -8970,7 +8925,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -9165,12 +9120,13 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" +"globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" dependencies: - define-properties: "npm:^1.1.3" - checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 languageName: node linkType: hard @@ -9817,7 +9773,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": +"internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" dependencies: @@ -9933,7 +9889,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -9943,7 +9899,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": +"is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" dependencies: @@ -10208,7 +10164,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": +"is-map@npm:^2.0.1": version: 2.0.3 resolution: "is-map@npm:2.0.3" checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc @@ -10333,7 +10289,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": +"is-set@npm:^2.0.1": version: 2.0.3 resolution: "is-set@npm:2.0.3" checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 @@ -10560,16 +10516,16 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" +"iterator.prototype@npm:^1.1.3": + version: 1.1.3 + resolution: "iterator.prototype@npm:1.1.3" dependencies: define-properties: "npm:^1.2.1" get-intrinsic: "npm:^1.2.1" has-symbols: "npm:^1.0.3" reflect.getprototypeof: "npm:^1.0.4" set-function-name: "npm:^2.0.1" - checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + checksum: 10c0/68b0320c14291fbb3d8ed5a17e255d3127e7971bec19108076667e79c9ff4c7d69f99de4b0b3075c789c3f318366d7a0a35bb086eae0f2cf832dd58465b2f9e6 languageName: node linkType: hard @@ -12529,7 +12485,7 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.0.1, object-is@npm:^1.1.5": +"object-is@npm:^1.0.1": version: 1.1.6 resolution: "object-is@npm:1.1.6" dependencies: @@ -15118,7 +15074,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": +"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" dependencies: @@ -16336,15 +16292,6 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 - languageName: node - linkType: hard - "stream-browserify@npm:^2.0.1": version: 2.0.2 resolution: "stream-browserify@npm:2.0.2" @@ -16429,13 +16376,14 @@ __metadata: languageName: node linkType: hard -"string.prototype.includes@npm:^2.0.0": - version: 2.0.0 - resolution: "string.prototype.includes@npm:2.0.0" +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10c0/32dff118c9e9dcc87e240b05462fa8ee7248d9e335c0015c1442fe18152261508a2146d9bb87ddae56abab69148a83c61dfaea33f53853812a6a2db737689ed2 + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + checksum: 10c0/25ce9c9b49128352a2618fbe8758b46f945817a58a4420f4799419e40a8d28f116e176c7590d767d5327a61e75c8f32c86171063f48e389b9fdd325f1bd04ee5 languageName: node linkType: hard @@ -18280,7 +18228,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: From 29f98b361f77778d9e5675078a9276575cd1cb03 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:03:59 +0200 Subject: [PATCH 209/550] Update dependency ruby-prof to v1.7.1 (#32599) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e437760ed1..f73f43fee4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -761,7 +761,7 @@ GEM rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) rubocop-rspec (~> 3, >= 3.0.1) - ruby-prof (1.7.0) + ruby-prof (1.7.1) ruby-progressbar (1.13.0) ruby-saml (1.17.0) nokogiri (>= 1.13.10) From e05f9fed333bb7316e818e19c7f599e721afb050 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:04:30 +0000 Subject: [PATCH 210/550] Update dependency pino to v9.5.0 (#32511) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9717740712..7b1cd2a7e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13176,16 +13176,6 @@ __metadata: languageName: node linkType: hard -"pino-abstract-transport@npm:^1.2.0": - version: 1.2.0 - resolution: "pino-abstract-transport@npm:1.2.0" - dependencies: - readable-stream: "npm:^4.0.0" - split2: "npm:^4.0.0" - checksum: 10c0/b4ab59529b7a91f488440147fc58ee0827a6c1c5ca3627292339354b1381072c1a6bfa9b46d03ad27872589e8477ecf74da12cf286e1e6b665ac64a3b806bf07 - languageName: node - linkType: hard - "pino-abstract-transport@npm:^2.0.0": version: 2.0.0 resolution: "pino-abstract-transport@npm:2.0.0" @@ -13239,13 +13229,13 @@ __metadata: linkType: hard "pino@npm:^9.0.0": - version: 9.4.0 - resolution: "pino@npm:9.4.0" + version: 9.5.0 + resolution: "pino@npm:9.5.0" dependencies: atomic-sleep: "npm:^1.0.0" fast-redact: "npm:^3.1.1" on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:^1.2.0" + pino-abstract-transport: "npm:^2.0.0" pino-std-serializers: "npm:^7.0.0" process-warning: "npm:^4.0.0" quick-format-unescaped: "npm:^4.0.3" @@ -13255,7 +13245,7 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10c0/12a3d74968964d92b18ca7d6095a3c5b86478dc22264a37486d64e102085ed08820fcbe75e640acc3542fdf2937a34e5050b624f98e6ac62dd10f5e1328058a2 + checksum: 10c0/b06590c5f4da43df59905af1aac344432b43154c4c1569ebea168e7ae7fd0a4181ccabb769a6568cf3e781e1d1b9df13d65b3603e25ebb05539bcb02ea04215e languageName: node linkType: hard From 40b4f73c189ae2d3e16db58baab4caa5d40ffc3c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 21 Oct 2024 04:07:07 -0400 Subject: [PATCH 211/550] Pre-import Rails 7.2 generated config minor changes (#30579) --- config/environments/development.rb | 7 ++----- config/environments/production.rb | 12 +++++------- config/environments/test.rb | 6 +++--- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/config/environments/development.rb b/config/environments/development.rb index 74f0913da2..f5f22a3c1f 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -16,7 +16,7 @@ Rails.application.configure do # Show full error reports. config.consider_all_requests_local = true - # Enable server timing + # Enable server timing. config.server_timing = true # Enable/disable caching. By default caching is disabled. @@ -77,9 +77,6 @@ Rails.application.configure do # Annotate rendered view with file names. # config.action_view.annotate_rendered_view_with_filenames = true - # Uncomment if you wish to allow Action Cable access from any origin. - # config.action_cable.disable_request_forgery_protection = true - config.action_mailer.default_options = { from: 'notifications@localhost' } # If using a Heroku, Vagrant or generic remote development environment, @@ -90,7 +87,7 @@ Rails.application.configure do # TODO: Remove once devise-two-factor data migration complete config.x.otp_secret = ENV.fetch('OTP_SECRET', '1fc2b87989afa6351912abeebe31ffc5c476ead9bf8b3d74cbc4a302c7b69a45b40b1bbef3506ddad73e942e15ed5ca4b402bf9a66423626051104f4b5f05109') - # Raise error when a before_action's only/except options reference missing actions + # Raise error when a before_action's only/except options reference missing actions. config.action_controller.raise_on_missing_callback_actions = true end diff --git a/config/environments/production.rb b/config/environments/production.rb index 5129b73e41..1cf752f3b2 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -15,17 +15,14 @@ Rails.application.configure do config.eager_load = true # Full error reports are disabled and caching is turned on. - config.consider_all_requests_local = false + config.consider_all_requests_local = false config.action_controller.perform_caching = true - config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present? + config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present? # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files). # config.require_master_key = true - # Compress CSS using a preprocessor. - # config.assets.css_compressor = :sass - # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false @@ -42,6 +39,7 @@ Rails.application.configure do # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. config.force_ssl = true + # Skip http-to-https redirect for the default health check endpoint. config.ssl_options = { redirect: { exclude: ->(request) { request.path.start_with?('/health') || request.headers['Host'].end_with?('.onion') || request.headers['Host'].end_with?('.i2p') }, @@ -60,7 +58,7 @@ Rails.application.configure do config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache # Use a real queuing backend for Active Job (and separate queues per environment). - # config.active_job.queue_adapter = :resque + # config.active_job.queue_adapter = :resque # config.active_job.queue_name_prefix = "mastodon_production" config.action_mailer.perform_caching = false @@ -70,7 +68,7 @@ Rails.application.configure do # config.action_mailer.raise_delivery_errors = false # Enable locale fallbacks for I18n (makes lookups for any locale fall back to - # English when a translation cannot be found). + # the I18n.default_locale when a translation cannot be found). # This setting would typically be `true` to use the `I18n.default_locale`. # Some locales are missing translation entries and would have errors: # https://github.com/mastodon/mastodon/pull/24727 diff --git a/config/environments/test.rb b/config/environments/test.rb index 716bf8d31f..eb29ab1e17 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -22,11 +22,11 @@ Rails.application.configure do config.assets_digest = false # Show full error reports and disable caching. - config.consider_all_requests_local = true + config.consider_all_requests_local = true config.action_controller.perform_caching = false config.cache_store = :memory_store - # Raise exceptions instead of rendering exception templates. + # Render exception templates for rescuable exceptions and raise for other exceptions. config.action_dispatch.show_exceptions = :rescuable # Disable request forgery protection in test environment. @@ -70,7 +70,7 @@ Rails.application.configure do # Annotate rendered view with file names. # config.action_view.annotate_rendered_view_with_filenames = true - # Raise error when a before_action's only/except options reference missing actions + # Raise error when a before_action's only/except options reference missing actions. config.action_controller.raise_on_missing_callback_actions = true end From bd850d1ec0c6bb34fff93efe18a216ba0114a1b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:22:07 +0200 Subject: [PATCH 212/550] Update dependency @reduxjs/toolkit to v2.3.0 (#32497) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7b1cd2a7e8..38385bf8aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3110,8 +3110,8 @@ __metadata: linkType: hard "@reduxjs/toolkit@npm:^2.0.1": - version: 2.2.8 - resolution: "@reduxjs/toolkit@npm:2.2.8" + version: 2.3.0 + resolution: "@reduxjs/toolkit@npm:2.3.0" dependencies: immer: "npm:^10.0.3" redux: "npm:^5.0.1" @@ -3125,7 +3125,7 @@ __metadata: optional: true react-redux: optional: true - checksum: 10c0/bf1356d71bfb82e5a181692c79c19b7bc19355260a9966f6562604c995f0cd0ce1154177ccd14095e8b319e73f64cfe86a4e46a83d24edba7876d4ae71fd5ae0 + checksum: 10c0/414e90b706331385a2122fc79e33f90c59a9caf9a59419f1bfd7f5e594bc8e4987902fd1bccbc53eb96d22c65ec2981ff5581f3d2df3ecd381a630f391edfc3e languageName: node linkType: hard From 699f75bb350f80545f37f80796d08feaec8525c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:23:46 +0200 Subject: [PATCH 213/550] Update dependency eslint-plugin-react-hooks to v5 (#32425) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a37b766ef0..047dbbb806 100644 --- a/package.json +++ b/package.json @@ -183,7 +183,7 @@ "eslint-plugin-jsx-a11y": "~6.10.0", "eslint-plugin-promise": "~7.1.0", "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^5.0.0", "husky": "^9.0.11", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", diff --git a/yarn.lock b/yarn.lock index 38385bf8aa..5ed241b03e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2870,7 +2870,7 @@ __metadata: eslint-plugin-jsx-a11y: "npm:~6.10.0" eslint-plugin-promise: "npm:~7.1.0" eslint-plugin-react: "npm:^7.33.2" - eslint-plugin-react-hooks: "npm:^4.6.0" + eslint-plugin-react-hooks: "npm:^5.0.0" file-loader: "npm:^6.2.0" fuzzysort: "npm:^3.0.0" glob: "npm:^10.2.6" @@ -8012,12 +8012,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.6.0": - version: 4.6.2 - resolution: "eslint-plugin-react-hooks@npm:4.6.2" +"eslint-plugin-react-hooks@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-plugin-react-hooks@npm:5.0.0" peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10c0/4844e58c929bc05157fb70ba1e462e34f1f4abcbc8dd5bbe5b04513d33e2699effb8bca668297976ceea8e7ebee4e8fc29b9af9d131bcef52886feaa2308b2cc + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 10c0/bcb74b421f32e4203a7100405b57aab85526be4461e5a1da01bc537969a30012d2ee209a2c2a6cac543833a27188ce1e6ad71e4628d0bb4a2e5365cad86c5002 languageName: node linkType: hard From 4d5b2de6c8a8e574899f488f47ea0433117458a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 10:24:42 +0200 Subject: [PATCH 214/550] Update dependency mime-types to '~> 3.6.0' (#32215) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index bcb19421ab..104fd266b8 100644 --- a/Gemfile +++ b/Gemfile @@ -61,7 +61,7 @@ gem 'irb', '~> 1.8' gem 'kaminari', '~> 1.2' gem 'link_header', '~> 0.0' gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' -gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar' +gem 'mime-types', '~> 3.6.0', require: 'mime/types/columnar' gem 'nokogiri', '~> 1.15' gem 'oj', '~> 3.14' gem 'ox', '~> 2.14' diff --git a/Gemfile.lock b/Gemfile.lock index f73f43fee4..957146b16b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -429,9 +429,10 @@ GEM azure-storage-blob (~> 2.0.1) hashie (~> 5.0) memory_profiler (1.1.0) - mime-types (3.5.2) + mime-types (3.6.0) + logger mime-types-data (~> 3.2015) - mime-types-data (3.2024.0820) + mime-types-data (3.2024.1001) mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.25.1) @@ -970,7 +971,7 @@ DEPENDENCIES mario-redis-lock (~> 1.2) md-paperclip-azure (~> 2.2) memory_profiler - mime-types (~> 3.5.0) + mime-types (~> 3.6.0) net-http (~> 0.4.0) net-ldap (~> 0.18) nokogiri (~> 1.15) From 36f1ec164d6f92f5229fed386947d3536bdffee5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:29:23 +0000 Subject: [PATCH 215/550] Update dependency ubuntu to v24 (#32280) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-i18n.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index 5a1c051966..7c1004329c 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -18,7 +18,7 @@ permissions: jobs: check-i18n: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 From bb0532530666d877cae6345ce6a11c041b01fc7b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:37:51 +0000 Subject: [PATCH 216/550] Update dependency eslint-plugin-formatjs to v5 (#32087) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 187 +++++---------------------------------------------- 2 files changed, 18 insertions(+), 171 deletions(-) diff --git a/package.json b/package.json index 047dbbb806..d144b0c156 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,7 @@ "eslint": "^8.41.0", "eslint-define-config": "^2.0.0", "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-formatjs": "^4.10.1", + "eslint-plugin-formatjs": "^5.0.0", "eslint-plugin-import": "~2.30.0", "eslint-plugin-jsdoc": "^50.0.0", "eslint-plugin-jsx-a11y": "~6.10.0", diff --git a/yarn.lock b/yarn.lock index 5ed241b03e..5ef3562340 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2230,16 +2230,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.0.0": - version: 2.0.0 - resolution: "@formatjs/ecma402-abstract@npm:2.0.0" - dependencies: - "@formatjs/intl-localematcher": "npm:0.5.4" - tslib: "npm:^2.4.0" - checksum: 10c0/94cba291aeadffa3ca416087c2c2352c8a741bb4dcb7f47f15c247b1f043ffcef1af5b20a1b7578fbba9e704fc5f1c079923f3537a273d50162be62f8037625c - languageName: node - linkType: hard - "@formatjs/ecma402-abstract@npm:2.2.0": version: 2.2.0 resolution: "@formatjs/ecma402-abstract@npm:2.2.0" @@ -2271,27 +2261,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.7.8": - version: 2.7.8 - resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/icu-skeleton-parser": "npm:1.8.2" - tslib: "npm:^2.4.0" - checksum: 10c0/a3b759a825fb22ffd7b906f6a07b1a079bbc34f72c745de2c2514e439c4bb75bc1a9442eba1bac7ff3ea3010e12076374cd755ad12116b1d066cc90da5fbcbc9 - languageName: node - linkType: hard - -"@formatjs/icu-skeleton-parser@npm:1.8.2": - version: 1.8.2 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - tslib: "npm:^2.4.0" - checksum: 10c0/9b15013acc47b8d560b52942e3dab2abaaa9c5a4410bbd1d490a4b22bf5ca36fdd88b71f241d05479bddf856d0d1d57b7ecc9e79738497ac518616aa6d4d0015 - languageName: node - linkType: hard - "@formatjs/icu-skeleton-parser@npm:1.8.4": version: 1.8.4 resolution: "@formatjs/icu-skeleton-parser@npm:1.8.4" @@ -2324,15 +2293,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.5.4": - version: 0.5.4 - resolution: "@formatjs/intl-localematcher@npm:0.5.4" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/c9ff5d34ca8b6fe59f8f303a3cc31a92d343e095a6987e273e5cc23f0fe99feb557a392a05da95931c7d24106acb6988e588d00ddd05b0934005aafd7fdbafe6 - languageName: node - linkType: hard - "@formatjs/intl-localematcher@npm:0.5.5": version: 0.5.5 resolution: "@formatjs/intl-localematcher@npm:0.5.5" @@ -2373,26 +2333,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.14": - version: 3.13.14 - resolution: "@formatjs/ts-transformer@npm:3.13.14" - dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - "@types/json-stable-stringify": "npm:^1.0.32" - "@types/node": "npm:14 || 16 || 17" - chalk: "npm:^4.0.0" - json-stable-stringify: "npm:^1.0.1" - tslib: "npm:^2.4.0" - typescript: "npm:5" - peerDependencies: - ts-jest: ">=27" - peerDependenciesMeta: - ts-jest: - optional: true - checksum: 10c0/38450cfce3ec5132f3548c1e9ab098909ca8d2db2b8b6b4b5bb87aa59a4ca1a19bbf6d339ace39bcc931fa80d9946b4c7cf039c9574069b317ae015cd6963bd3 - languageName: node - linkType: hard - "@formatjs/ts-transformer@npm:3.13.16": version: 3.13.16 resolution: "@formatjs/ts-transformer@npm:3.13.16" @@ -2864,7 +2804,7 @@ __metadata: eslint: "npm:^8.41.0" eslint-define-config: "npm:^2.0.0" eslint-import-resolver-typescript: "npm:^3.5.5" - eslint-plugin-formatjs: "npm:^4.10.1" + eslint-plugin-formatjs: "npm:^5.0.0" eslint-plugin-import: "npm:~2.30.0" eslint-plugin-jsdoc: "npm:^50.0.0" eslint-plugin-jsx-a11y: "npm:~6.10.0" @@ -3574,13 +3514,13 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:7 || 8": - version: 8.56.10 - resolution: "@types/eslint@npm:8.56.10" +"@types/eslint@npm:9": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 10c0/674349d6c342c3864d70f4d5a9965f96fb253801532752c8c500ad6a1c2e8b219e01ccff5dc8791dcb58b5483012c495708bb9f3ff929f5c9322b3da126c15d3 + checksum: 10c0/69ba24fee600d1e4c5abe0df086c1a4d798abf13792d8cfab912d76817fe1a894359a1518557d21237fbaf6eda93c5ab9309143dee4c59ef54336d1b3570420e languageName: node linkType: hard @@ -3734,7 +3674,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -3792,13 +3732,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:14 || 16 || 17": - version: 17.0.45 - resolution: "@types/node@npm:17.0.45" - checksum: 10c0/0db377133d709b33a47892581a21a41cd7958f22723a3cc6c71d55ac018121382de42fbfc7970d5ae3e7819dbe5f40e1c6a5174aedf7e7964e9cb8fa72b580b0 - languageName: node - linkType: hard - "@types/node@npm:14 || 16 || 17 || 18": version: 18.19.55 resolution: "@types/node@npm:18.19.55" @@ -4019,13 +3952,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.5.0": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -4210,16 +4136,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.10.0": version: 8.10.0 resolution: "@typescript-eslint/scope-manager@npm:8.10.0" @@ -4245,13 +4161,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.10.0": version: 8.10.0 resolution: "@typescript-eslint/types@npm:8.10.0" @@ -4259,25 +4168,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.10.0": version: 8.10.0 resolution: "@typescript-eslint/typescript-estree@npm:8.10.0" @@ -4311,33 +4201,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.18.1": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.10.0": version: 8.10.0 resolution: "@typescript-eslint/visitor-keys@npm:8.10.0" @@ -7907,24 +7770,24 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-formatjs@npm:^4.10.1": - version: 4.13.3 - resolution: "eslint-plugin-formatjs@npm:4.13.3" +"eslint-plugin-formatjs@npm:^5.0.0": + version: 5.1.1 + resolution: "eslint-plugin-formatjs@npm:5.1.1" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - "@formatjs/ts-transformer": "npm:3.13.14" - "@types/eslint": "npm:7 || 8" + "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@formatjs/ts-transformer": "npm:3.13.16" + "@types/eslint": "npm:9" "@types/picomatch": "npm:^2.3.0" - "@typescript-eslint/utils": "npm:^6.18.1" + "@typescript-eslint/utils": "npm:8.10.0" emoji-regex: "npm:^10.2.1" magic-string: "npm:^0.30.0" picomatch: "npm:^2.3.1" - tslib: "npm:2.6.2" + tslib: "npm:^2.7.0" typescript: "npm:5" unicode-emoji-utils: "npm:^1.2.0" peerDependencies: - eslint: 7 || 8 - checksum: 10c0/5e98f487a097189e3bdc64b678d19f4c83502c32d7c89a8959eda4ed9cb664bf16f13ad8871be89ca192cb39c1007d6a158c39bbf5b23c56962d949dbe9abfab + eslint: 9 + checksum: 10c0/b0cf41208fe1bdcd4e7879c0a7099273753ec1e2c5a855c0989679690a740b92123d1625cea7ce862a19412a588fd16e42c0c196807021f13462585ace719dc1 languageName: node linkType: hard @@ -12008,15 +11871,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac - languageName: node - linkType: hard - "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -17193,7 +17047,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": +"ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: @@ -17214,13 +17068,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb - languageName: node - linkType: hard - "tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.7.0": version: 2.7.0 resolution: "tslib@npm:2.7.0" From 346cdb998c8b8519292a0a1633a28a3938665f44 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 22 Oct 2024 10:31:53 +0200 Subject: [PATCH 217/550] Fix 'unknown' media attachment type rendering (#32613) --- app/javascript/mastodon/components/status.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 46926b4aae..4792136368 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -449,7 +449,7 @@ class Status extends ImmutablePureComponent { } else if (status.get('media_attachments').size > 0) { const language = status.getIn(['translation', 'language']) || status.get('language'); - if (['image', 'gifv'].includes(status.getIn(['media_attachments', 0, 'type'])) || status.get('media_attachments').size > 1) { + if (['image', 'gifv', 'unknown'].includes(status.getIn(['media_attachments', 0, 'type'])) || status.get('media_attachments').size > 1) { media = ( {Component => ( From f8a66e99150e50ac7e74f3b68e2881bc0c983ffe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 10:36:32 +0200 Subject: [PATCH 218/550] Update formatjs monorepo (#32612) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 122 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 42 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5ef3562340..baf0dec9ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2261,6 +2261,17 @@ __metadata: languageName: node linkType: hard +"@formatjs/icu-messageformat-parser@npm:2.8.0": + version: 2.8.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.8.0" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.0" + "@formatjs/icu-skeleton-parser": "npm:1.8.4" + tslib: "npm:^2.7.0" + checksum: 10c0/f8cf835817529ec5c7aed55e60c2584ffe78b6d7f079526e2809af4fdd32d85c4569a01e806861e4352bb5ca996116ea5006870d7e40e01c79878df345e8ba4d + languageName: node + linkType: hard + "@formatjs/icu-skeleton-parser@npm:1.8.4": version: 1.8.4 resolution: "@formatjs/icu-skeleton-parser@npm:1.8.4" @@ -2271,25 +2282,25 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.6.10": - version: 6.6.10 - resolution: "@formatjs/intl-displaynames@npm:6.6.10" +"@formatjs/intl-displaynames@npm:6.7.0": + version: 6.7.0 + resolution: "@formatjs/intl-displaynames@npm:6.7.0" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" "@formatjs/intl-localematcher": "npm:0.5.5" tslib: "npm:^2.7.0" - checksum: 10c0/e4158f67fc0d6c2345d05b85183aef480fc86c68b60643abdd143ddc66a2203acfcf1b3dc4619658479e54c971c878a2548db34e08f3b035348686f088bf03c4 + checksum: 10c0/d4814ca580ab261681d2926c3d0df26c445df8e18891dff5cc6363f3c7ea9db393ed1056d8c5ab9277b5fb5e40d44444e7f92935f64f8282c8859c9dab8caabf languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.5.9": - version: 7.5.9 - resolution: "@formatjs/intl-listformat@npm:7.5.9" +"@formatjs/intl-listformat@npm:7.6.0": + version: 7.6.0 + resolution: "@formatjs/intl-listformat@npm:7.6.0" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" "@formatjs/intl-localematcher": "npm:0.5.5" tslib: "npm:^2.7.0" - checksum: 10c0/b5041de4d6e011f36ba4b54406aae9aef763f8bc8b22364bdc8447d0b8b3e553111d117b02f801c31f2ab2c0d3abc086bd90db1b83c000babb99316cd15be5e2 + checksum: 10c0/8732f492d0faa3d3c633fc9247af6953c15ca8ae9a7cc7de620afa86bbdcb8a92a8a76e36aaf2dbc1fb25d1e9c0ed48c9031926caef9900f68d18772b7e8ce29 languageName: node linkType: hard @@ -2303,33 +2314,33 @@ __metadata: linkType: hard "@formatjs/intl-pluralrules@npm:^5.2.2": - version: 5.2.16 - resolution: "@formatjs/intl-pluralrules@npm:5.2.16" + version: 5.2.17 + resolution: "@formatjs/intl-pluralrules@npm:5.2.17" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" "@formatjs/intl-localematcher": "npm:0.5.5" tslib: "npm:^2.7.0" - checksum: 10c0/2250a96a74a153a5f1e771233c366c42005efd71ac5ff665891a308ce78a68f85709f8c892d28a1e334f974252bfb3407f6a64da616c3adbeb158310ef73d71b + checksum: 10c0/d1389821d8b853433ba4b3b7c1b5c08244d6b2dc5f3e54cc171336c8e6ab545b9eb0f388ce98f1245879693bf3068ffc4df2e5f1c7dee0a1e87a058a5c4ce8fc languageName: node linkType: hard -"@formatjs/intl@npm:2.10.8": - version: 2.10.8 - resolution: "@formatjs/intl@npm:2.10.8" +"@formatjs/intl@npm:2.10.9": + version: 2.10.9 + resolution: "@formatjs/intl@npm:2.10.9" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" "@formatjs/fast-memoize": "npm:2.2.1" - "@formatjs/icu-messageformat-parser": "npm:2.7.10" - "@formatjs/intl-displaynames": "npm:6.6.10" - "@formatjs/intl-listformat": "npm:7.5.9" - intl-messageformat: "npm:10.7.0" + "@formatjs/icu-messageformat-parser": "npm:2.8.0" + "@formatjs/intl-displaynames": "npm:6.7.0" + "@formatjs/intl-listformat": "npm:7.6.0" + intl-messageformat: "npm:10.7.1" tslib: "npm:^2.7.0" peerDependencies: typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/e35a4421f445ef4f7ce362144dde143ad895391b03380fbf896fe261a445fa6b5d886989e07bf9b49e52e83f0a3f9b667cfecbc2684a9ea898c6d25daf07b392 + checksum: 10c0/9be5c6e7e8371904789d0771ee97f04cdf16de3f6f4aa01998b3f8c64aa36d9bf91c491ebf95fa2dc6ec16a7d1bb6e3738ddbec02005c199e786133eb0e5795b languageName: node linkType: hard @@ -2353,6 +2364,26 @@ __metadata: languageName: node linkType: hard +"@formatjs/ts-transformer@npm:3.13.17": + version: 3.13.17 + resolution: "@formatjs/ts-transformer@npm:3.13.17" + dependencies: + "@formatjs/icu-messageformat-parser": "npm:2.8.0" + "@types/json-stable-stringify": "npm:^1.0.32" + "@types/node": "npm:14 || 16 || 17 || 18 || 20" + chalk: "npm:^4.0.0" + json-stable-stringify: "npm:^1.0.1" + tslib: "npm:^2.7.0" + typescript: "npm:5" + peerDependencies: + ts-jest: ">=27" + peerDependenciesMeta: + ts-jest: + optional: true + checksum: 10c0/1619f771d8aa69cf63f05199ebc28b57a5e0850b64dc9c2bd0df73d8f388a3323c47f13bcc742a51a7560349591282d88695e6fb9a646b0e7d4f7d0b07e2c5c0 + languageName: node + linkType: hard + "@gamestdio/websocket@npm:^0.3.2": version: 0.3.2 resolution: "@gamestdio/websocket@npm:0.3.2" @@ -3723,12 +3754,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 20.8.10 - resolution: "@types/node@npm:20.8.10" +"@types/node@npm:*, @types/node@npm:14 || 16 || 17 || 18 || 20": + version: 20.16.13 + resolution: "@types/node@npm:20.16.13" dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/caaa3ae9294f1bfdacb029a916c64af63cbcea613a52f53ea86f93c91779859af177b2b68113ef835194519f5e76cadda08559929b68297f1a8a568c207f9f66 + undici-types: "npm:~6.19.2" + checksum: 10c0/7f4fd7176db0802c62e11ebbf7a66d0248e2dc8ec9153d9fc8bcb164d9aed581d91c407046c823c522e60d0babfdc24a1618dba7f2c6920ef1a24e1d416c9550 languageName: node linkType: hard @@ -5100,21 +5131,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.18 - resolution: "babel-plugin-formatjs@npm:10.5.18" + version: 10.5.19 + resolution: "babel-plugin-formatjs@npm:10.5.19" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.10" - "@formatjs/ts-transformer": "npm:3.13.16" + "@formatjs/icu-messageformat-parser": "npm:2.8.0" + "@formatjs/ts-transformer": "npm:3.13.17" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:^2.7.0" - checksum: 10c0/3e7753cb1837ea300f7b0d574751758330f4fe56e4f686a1ceb7acc612c0ac1353ed2a918b5af6e4dcaf579c623d56f714159a265d64b71897471a69f15910b8 + checksum: 10c0/29d1e1fe8c97412a1c6c95dde3753ea28ddbe39040aaead90c67106422ce12dad363aee47a2729f685807bacf7f422ef607f015b325203a8201249b74e84bab3 languageName: node linkType: hard @@ -9661,15 +9692,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.0, intl-messageformat@npm:^10.3.5": - version: 10.7.0 - resolution: "intl-messageformat@npm:10.7.0" +"intl-messageformat@npm:10.7.1, intl-messageformat@npm:^10.3.5": + version: 10.7.1 + resolution: "intl-messageformat@npm:10.7.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" "@formatjs/fast-memoize": "npm:2.2.1" - "@formatjs/icu-messageformat-parser": "npm:2.7.10" + "@formatjs/icu-messageformat-parser": "npm:2.8.0" tslib: "npm:^2.7.0" - checksum: 10c0/772469599fa8ab43dc933d03c75c6290220565c97afdc60cb67d036f2c51f1b3a825b2345933ee7616ecdf018b95ea7704f5ec80ded5a8efc2ce7f4b2962cae3 + checksum: 10c0/b9383a2c0ce7888d34fa7bbb4ba7cc139ea77a372bd9268412e97e8a1357ebd1880beb04affdbd7175ae27db2a57024f21e804b34f2b159fd1c3d221f69c40d4 languageName: node linkType: hard @@ -14381,18 +14412,18 @@ __metadata: linkType: hard "react-intl@npm:^6.4.2": - version: 6.8.0 - resolution: "react-intl@npm:6.8.0" + version: 6.8.1 + resolution: "react-intl@npm:6.8.1" dependencies: "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.10" - "@formatjs/intl": "npm:2.10.8" - "@formatjs/intl-displaynames": "npm:6.6.10" - "@formatjs/intl-listformat": "npm:7.5.9" + "@formatjs/icu-messageformat-parser": "npm:2.8.0" + "@formatjs/intl": "npm:2.10.9" + "@formatjs/intl-displaynames": "npm:6.7.0" + "@formatjs/intl-listformat": "npm:7.6.0" "@types/hoist-non-react-statics": "npm:^3.3.1" "@types/react": "npm:^18.3.11" hoist-non-react-statics: "npm:^3.3.2" - intl-messageformat: "npm:10.7.0" + intl-messageformat: "npm:10.7.1" tslib: "npm:^2.7.0" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14400,7 +14431,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/e110d8cbfc227cbed3b72b162fe8a75e824aef47eeb5a7879a5a2d9fa5dd35d2d25149ef57460fa06bca7ae106184c729e410c22bcdb349d29bb1ee35f3c5cf0 + checksum: 10c0/4ffdf8fd6e82c10de7d1e195336c8bc98fab5f6bc7fde548f7df553caf05677d632977c3287e9b72915f8a01ed98ff8246fdfccea2f7048902f46a596a0db4b2 languageName: node linkType: hard @@ -17253,6 +17284,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" From 16597fa73547f5f894342711ad081a36bd34ee03 Mon Sep 17 00:00:00 2001 From: Eugene Alvin Villar Date: Tue, 22 Oct 2024 16:41:40 +0800 Subject: [PATCH 219/550] Fix tl language native name (#32606) --- app/helpers/languages_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 394202e39a..0a8ebcde54 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -162,7 +162,7 @@ module LanguagesHelper th: ['Thai', 'ไทย'].freeze, ti: ['Tigrinya', 'ትግርኛ'].freeze, tk: ['Turkmen', 'Türkmen'].freeze, - tl: ['Tagalog', 'Wikang Tagalog'].freeze, + tl: ['Tagalog', 'Tagalog'].freeze, tn: ['Tswana', 'Setswana'].freeze, to: ['Tonga', 'faka Tonga'].freeze, tr: ['Turkish', 'Türkçe'].freeze, From 18659f8163e146a7fea17a2800f039c9a47b7683 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Tue, 22 Oct 2024 08:46:32 -0400 Subject: [PATCH 220/550] Fix that blocking was not working on link timeline (#32625) --- app/models/link_feed.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/link_feed.rb b/app/models/link_feed.rb index 32efb331b6..29ea430cc0 100644 --- a/app/models/link_feed.rb +++ b/app/models/link_feed.rb @@ -19,6 +19,8 @@ class LinkFeed < PublicFeed scope.merge!(discoverable) scope.merge!(attached_to_preview_card) + scope.merge!(account_filters_scope) if account? + scope.merge!(language_scope) if account&.chosen_languages.present? scope.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) end From 029c99bd7b5bca19b11d63a09c3e71b86306dad4 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 22 Oct 2024 14:49:10 +0200 Subject: [PATCH 221/550] Do not change follow counters when already following (#32622) --- app/javascript/mastodon/reducers/accounts.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/reducers/accounts.ts b/app/javascript/mastodon/reducers/accounts.ts index 5a9cc7220c..2001353b2e 100644 --- a/app/javascript/mastodon/reducers/accounts.ts +++ b/app/javascript/mastodon/reducers/accounts.ts @@ -57,7 +57,10 @@ export const accountsReducer: Reducer = ( return state.setIn([action.payload.id, 'hidden'], false); else if (importAccounts.match(action)) return normalizeAccounts(state, action.payload.accounts); - else if (followAccountSuccess.match(action)) { + else if ( + followAccountSuccess.match(action) && + !action.payload.alreadyFollowing + ) { return state .update(action.payload.relationship.id, (account) => account?.update('followers_count', (n) => n + 1), From 6d2f865862dcadcc6046c2b81df25e51bae134a0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 02:39:19 -0400 Subject: [PATCH 222/550] Add coverage for `AccountAlias` validations (#31936) --- spec/models/account_alias_spec.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/models/account_alias_spec.rb b/spec/models/account_alias_spec.rb index fc8c6bd250..17c83967a4 100644 --- a/spec/models/account_alias_spec.rb +++ b/spec/models/account_alias_spec.rb @@ -8,4 +8,26 @@ RSpec.describe AccountAlias do it { is_expected.to normalize(:acct).from(' @username@domain ').to('username@domain') } end end + + describe 'Validations' do + subject { described_class.new(account:) } + + let(:account) { Fabricate :account } + + it { is_expected.to_not allow_values(nil, '').for(:uri).against(:acct).with_message(not_found_message) } + + it { is_expected.to_not allow_values(account_uri).for(:uri).against(:acct).with_message(self_move_message) } + + def account_uri + ActivityPub::TagManager.instance.uri_for(subject.account) + end + + def not_found_message + I18n.t('migrations.errors.not_found') + end + + def self_move_message + I18n.t('migrations.errors.move_to_self') + end + end end From 0a4a73f9a67d5dc80a66d192af2b89cac41563a1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 02:40:29 -0400 Subject: [PATCH 223/550] Add coverage for `api/v1/domain_blocks/preview` endpoint (#32303) --- .../api/v1/domain_blocks/previews_spec.rb | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/requests/api/v1/domain_blocks/previews_spec.rb diff --git a/spec/requests/api/v1/domain_blocks/previews_spec.rb b/spec/requests/api/v1/domain_blocks/previews_spec.rb new file mode 100644 index 0000000000..eb191f436b --- /dev/null +++ b/spec/requests/api/v1/domain_blocks/previews_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Domain Blocks Previews API' do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:scopes) { 'write:blocks' } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + let(:account) { Fabricate(:account, user: user) } + + describe 'GET /api/v1/domain_blocks/preview' do + subject { get '/api/v1/domain_blocks/preview', params: { domain: domain }, headers: headers } + + let(:domain) { 'host.example' } + + before do + Fabricate :follow, account: account, target_account: Fabricate(:account, domain: domain) + Fabricate :follow, target_account: account, account: Fabricate(:account, domain: domain) + end + + it_behaves_like 'forbidden for wrong scope', 'write:statuses' + + it 'returns http success and follower counts' do + subject + + expect(response) + .to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(response.parsed_body) + .to include(followers_count: 1) + .and include(following_count: 1) + end + end +end From 67403e7b01f22c3089c7062f9f4e8e861357c377 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 02:41:07 -0400 Subject: [PATCH 224/550] Add coverage for ActivityPub likes/shares endpoints (#32305) --- spec/requests/activitypub/likes_spec.rb | 25 ++++++++++++++++++++++++ spec/requests/activitypub/shares_spec.rb | 25 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 spec/requests/activitypub/likes_spec.rb create mode 100644 spec/requests/activitypub/shares_spec.rb diff --git a/spec/requests/activitypub/likes_spec.rb b/spec/requests/activitypub/likes_spec.rb new file mode 100644 index 0000000000..d780ad5168 --- /dev/null +++ b/spec/requests/activitypub/likes_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'ActivityPub Likes' do + let(:account) { Fabricate(:account) } + let(:status) { Fabricate :status, account: account } + + before { Fabricate :favourite, status: status } + + describe 'GET /accounts/:account_username/statuses/:status_id/likes' do + it 'returns http success and activity json types and correct items count' do + get account_status_likes_path(account, status) + + expect(response) + .to have_http_status(200) + expect(response.media_type) + .to eq 'application/activity+json' + + expect(response.parsed_body) + .to include(type: 'Collection') + .and include(totalItems: 1) + end + end +end diff --git a/spec/requests/activitypub/shares_spec.rb b/spec/requests/activitypub/shares_spec.rb new file mode 100644 index 0000000000..956bc7d201 --- /dev/null +++ b/spec/requests/activitypub/shares_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'ActivityPub Shares' do + let(:account) { Fabricate(:account) } + let(:status) { Fabricate :status, account: account } + + before { Fabricate :status, reblog: status } + + describe 'GET /accounts/:account_username/statuses/:status_id/shares' do + it 'returns http success and activity json types and correct items count' do + get account_status_shares_path(account, status) + + expect(response) + .to have_http_status(200) + expect(response.media_type) + .to eq 'application/activity+json' + + expect(response.parsed_body) + .to include(type: 'Collection') + .and include(totalItems: 1) + end + end +end From 1f3722904fd328b7a1490a58304779521acc52df Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 02:42:57 -0400 Subject: [PATCH 225/550] Top off coverage for `Appeal` model (#32464) --- spec/models/appeal_spec.rb | 89 +++++++++++++++++++++++++++++++++----- 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/spec/models/appeal_spec.rb b/spec/models/appeal_spec.rb index 7e324582ed..e974ff9254 100644 --- a/spec/models/appeal_spec.rb +++ b/spec/models/appeal_spec.rb @@ -4,20 +4,85 @@ require 'rails_helper' RSpec.describe Appeal do describe 'Validations' do - it 'validates text length is under limit' do - appeal = Fabricate.build( - :appeal, - strike: Fabricate(:account_warning), - text: 'a' * described_class::TEXT_LENGTH_LIMIT * 2 - ) + subject { Fabricate.build :appeal, strike: Fabricate(:account_warning) } - expect(appeal).to_not be_valid - expect(appeal).to model_have_error_on_field(:text) + it { is_expected.to validate_length_of(:text).is_at_most(described_class::TEXT_LENGTH_LIMIT) } + + context 'with a strike created too long ago' do + let(:strike) { Fabricate.build :account_warning, created_at: 100.days.ago } + + it { is_expected.to_not allow_values(strike).for(:strike).against(:base).on(:create) } end end - describe 'scopes' do - describe 'approved' do + describe 'Query methods' do + describe '#pending?' do + subject { Fabricate.build :appeal, approved_at:, rejected_at: } + + context 'with not approved and not rejected' do + let(:approved_at) { nil } + let(:rejected_at) { nil } + + it { expect(subject).to be_pending } + end + + context 'with approved and rejected' do + let(:approved_at) { 1.day.ago } + let(:rejected_at) { 1.day.ago } + + it { expect(subject).to_not be_pending } + end + + context 'with approved and not rejected' do + let(:approved_at) { 1.day.ago } + let(:rejected_at) { nil } + + it { expect(subject).to_not be_pending } + end + + context 'with not approved and rejected' do + let(:approved_at) { nil } + let(:rejected_at) { 1.day.ago } + + it { expect(subject).to_not be_pending } + end + end + + describe '#approved?' do + subject { Fabricate.build :appeal, approved_at: } + + context 'with not approved' do + let(:approved_at) { nil } + + it { expect(subject).to_not be_approved } + end + + context 'with approved' do + let(:approved_at) { 1.day.ago } + + it { expect(subject).to be_approved } + end + end + + describe '#rejected?' do + subject { Fabricate.build :appeal, rejected_at: } + + context 'with not rejected' do + let(:rejected_at) { nil } + + it { expect(subject).to_not be_rejected } + end + + context 'with rejected' do + let(:rejected_at) { 1.day.ago } + + it { expect(subject).to be_rejected } + end + end + end + + describe 'Scopes' do + describe '.approved' do let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) } let(:not_approved_appeal) { Fabricate(:appeal, approved_at: nil) } @@ -27,7 +92,7 @@ RSpec.describe Appeal do end end - describe 'rejected' do + describe '.rejected' do let(:rejected_appeal) { Fabricate(:appeal, rejected_at: 10.days.ago) } let(:not_rejected_appeal) { Fabricate(:appeal, rejected_at: nil) } @@ -37,7 +102,7 @@ RSpec.describe Appeal do end end - describe 'pending' do + describe '.pending' do let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) } let(:rejected_appeal) { Fabricate(:appeal, rejected_at: 10.days.ago) } let(:pending_appeal) { Fabricate(:appeal, rejected_at: nil, approved_at: nil) } From c0f46e90314f0cec405974bc7e14d818ed380248 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 03:46:55 -0400 Subject: [PATCH 226/550] Fortify coverage for `Follow` model (#32472) --- spec/models/follow_spec.rb | 81 +++++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 14 deletions(-) diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb index f22bd6ea88..8684170dcf 100644 --- a/spec/models/follow_spec.rb +++ b/spec/models/follow_spec.rb @@ -3,27 +3,26 @@ require 'rails_helper' RSpec.describe Follow do - let(:alice) { Fabricate(:account, username: 'alice') } - let(:bob) { Fabricate(:account, username: 'bob') } - - describe 'validations' do - subject { described_class.new(account: alice, target_account: bob, rate_limit: true) } - + describe 'Associations' do it { is_expected.to belong_to(:account).required } it { is_expected.to belong_to(:target_account).required } + end - it 'is invalid if account already follows too many people' do - alice.update(following_count: FollowLimitValidator::LIMIT) + describe 'Validations' do + subject { Fabricate.build :follow, rate_limit: true } - expect(subject).to_not be_valid - expect(subject).to model_have_error_on_field(:base) + let(:account) { Fabricate(:account) } + + context 'when account follows too many people' do + before { account.update(following_count: FollowLimitValidator::LIMIT) } + + it { is_expected.to_not allow_value(account).for(:account).against(:base) } end - it 'is valid if account is only on the brink of following too many people' do - alice.update(following_count: FollowLimitValidator::LIMIT - 1) + context 'when account is on brink of following too many people' do + before { account.update(following_count: FollowLimitValidator::LIMIT - 1) } - expect(subject).to be_valid - expect(subject).to_not model_have_error_on_field(:base) + it { is_expected.to allow_value(account).for(:account).against(:base) } end end @@ -54,4 +53,58 @@ RSpec.describe Follow do expect(account.requested?(target_account)).to be true end end + + describe '#local?' do + it { is_expected.to_not be_local } + end + + describe 'Callbacks' do + describe 'Setting a URI' do + context 'when URI exists' do + subject { Fabricate.build :follow, uri: 'https://uri/value' } + + it 'does not change' do + expect { subject.save } + .to not_change(subject, :uri) + end + end + + context 'when URI is blank' do + subject { Fabricate.build :follow, uri: nil } + + it 'populates the value' do + expect { subject.save } + .to change(subject, :uri).to(be_present) + end + end + end + + describe 'Maintaining counters' do + subject { Fabricate.build :follow, account:, target_account: } + + let(:account) { Fabricate :account } + let(:target_account) { Fabricate :account } + + before do + account.account_stat.update following_count: 123 + target_account.account_stat.update followers_count: 123 + end + + describe 'saving the follow' do + it 'increments counters' do + expect { subject.save } + .to change(account, :following_count).by(1) + .and(change(target_account, :followers_count).by(1)) + end + end + + describe 'destroying the follow' do + it 'decrements counters' do + expect { subject.destroy } + .to change(account, :following_count).by(-1) + .and(change(target_account, :followers_count).by(-1)) + end + end + end + end end From bd0c826a3dd6dfb4602c573e826a49bb440c4ac8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 03:47:46 -0400 Subject: [PATCH 227/550] Simplify model validation specs for `Announcement` (#32481) --- spec/models/announcement_spec.rb | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/spec/models/announcement_spec.rb b/spec/models/announcement_spec.rb index 8bd1e74b29..884b352cb5 100644 --- a/spec/models/announcement_spec.rb +++ b/spec/models/announcement_spec.rb @@ -67,18 +67,30 @@ RSpec.describe Announcement do it { is_expected.to validate_presence_of(:text) } describe 'ends_at' do - it 'validates presence when starts_at is present' do - record = Fabricate.build(:announcement, starts_at: 1.day.ago) + context 'when starts_at is present' do + subject { Fabricate.build :announcement, starts_at: 1.day.ago } - expect(record).to_not be_valid - expect(record.errors[:ends_at]).to be_present + it { is_expected.to validate_presence_of(:ends_at) } end - it 'does not validate presence when starts_at is missing' do - record = Fabricate.build(:announcement, starts_at: nil) + context 'when starts_at is missing' do + subject { Fabricate.build :announcement, starts_at: nil } - expect(record).to be_valid - expect(record.errors[:ends_at]).to_not be_present + it { is_expected.to_not validate_presence_of(:ends_at) } + end + end + + describe 'starts_at' do + context 'when ends_at is present' do + subject { Fabricate.build :announcement, ends_at: 1.day.ago } + + it { is_expected.to validate_presence_of(:starts_at) } + end + + context 'when ends_at is missing' do + subject { Fabricate.build :announcement, ends_at: nil } + + it { is_expected.to_not validate_presence_of(:starts_at) } end end end From d1b20ea8f70ecc44f78315c1bba1f7e16c0bfa15 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 03:50:20 -0400 Subject: [PATCH 228/550] Worker specs coverage increase (#32541) --- .../account_conversation_fabricator.rb | 7 ++++ spec/workers/account_refresh_worker_spec.rb | 10 +++-- .../followers_synchronization_worker_spec.rb | 33 ++++++++++++++++ spec/workers/push_conversation_worker_spec.rb | 26 ++++++++++++- spec/workers/push_update_worker_spec.rb | 28 ++++++++++++-- .../remote_account_refresh_worker_spec.rb | 38 +++++++++++++++++++ .../remove_featured_tag_worker_spec.rb | 31 +++++++++++++-- spec/workers/resolve_account_worker_spec.rb | 28 +++++++++++++- 8 files changed, 186 insertions(+), 15 deletions(-) create mode 100644 spec/fabricators/account_conversation_fabricator.rb create mode 100644 spec/workers/activitypub/followers_synchronization_worker_spec.rb create mode 100644 spec/workers/remote_account_refresh_worker_spec.rb diff --git a/spec/fabricators/account_conversation_fabricator.rb b/spec/fabricators/account_conversation_fabricator.rb new file mode 100644 index 0000000000..6145ed8254 --- /dev/null +++ b/spec/fabricators/account_conversation_fabricator.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +Fabricator(:account_conversation) do + account + conversation + status_ids { [Fabricate(:status).id] } +end diff --git a/spec/workers/account_refresh_worker_spec.rb b/spec/workers/account_refresh_worker_spec.rb index 3e88e8db28..4408ef77a9 100644 --- a/spec/workers/account_refresh_worker_spec.rb +++ b/spec/workers/account_refresh_worker_spec.rb @@ -7,9 +7,7 @@ RSpec.describe AccountRefreshWorker do let(:service) { instance_double(ResolveAccountService, call: true) } describe '#perform' do - before do - allow(ResolveAccountService).to receive(:new).and_return(service) - end + before { stub_service } context 'when account does not exist' do it 'returns immediately without processing' do @@ -48,5 +46,11 @@ RSpec.describe AccountRefreshWorker do (Account::BACKGROUND_REFRESH_INTERVAL + 3.days).ago end end + + def stub_service + allow(ResolveAccountService) + .to receive(:new) + .and_return(service) + end end end diff --git a/spec/workers/activitypub/followers_synchronization_worker_spec.rb b/spec/workers/activitypub/followers_synchronization_worker_spec.rb new file mode 100644 index 0000000000..0847b247e3 --- /dev/null +++ b/spec/workers/activitypub/followers_synchronization_worker_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::FollowersSynchronizationWorker do + let(:worker) { described_class.new } + let(:service) { instance_double(ActivityPub::SynchronizeFollowersService, call: true) } + + describe '#perform' do + before { stub_service } + + let(:account) { Fabricate(:account, domain: 'host.example') } + let(:url) { 'https://sync.url' } + + it 'sends the status to the service' do + worker.perform(account.id, url) + + expect(service).to have_received(:call).with(account, url) + end + + it 'returns nil for non-existent record' do + result = worker.perform(123_123_123, url) + + expect(result).to be(true) + end + end + + def stub_service + allow(ActivityPub::SynchronizeFollowersService) + .to receive(:new) + .and_return(service) + end +end diff --git a/spec/workers/push_conversation_worker_spec.rb b/spec/workers/push_conversation_worker_spec.rb index d651059c9a..a98c603c17 100644 --- a/spec/workers/push_conversation_worker_spec.rb +++ b/spec/workers/push_conversation_worker_spec.rb @@ -6,8 +6,30 @@ RSpec.describe PushConversationWorker do let(:worker) { described_class.new } describe 'perform' do - it 'runs without error for missing record' do - expect { worker.perform(nil) }.to_not raise_error + context 'with missing values' do + it 'runs without error' do + expect { worker.perform(nil) } + .to_not raise_error + end + end + + context 'with valid records' do + let(:account_conversation) { Fabricate :account_conversation } + + before { allow(redis).to receive(:publish) } + + it 'pushes message to timeline' do + expect { worker.perform(account_conversation.id) } + .to_not raise_error + + expect(redis) + .to have_received(:publish) + .with(redis_key, anything) + end + + def redis_key + "timeline:direct:#{account_conversation.account_id}" + end end end end diff --git a/spec/workers/push_update_worker_spec.rb b/spec/workers/push_update_worker_spec.rb index 6206ab5986..f3e0a128df 100644 --- a/spec/workers/push_update_worker_spec.rb +++ b/spec/workers/push_update_worker_spec.rb @@ -6,11 +6,31 @@ RSpec.describe PushUpdateWorker do let(:worker) { described_class.new } describe 'perform' do - it 'runs without error for missing record' do - account_id = nil - status_id = nil + context 'with missing values' do + it 'runs without error' do + expect { worker.perform(nil, nil) } + .to_not raise_error + end + end - expect { worker.perform(account_id, status_id) }.to_not raise_error + context 'with valid records' do + let(:account) { Fabricate :account } + let(:status) { Fabricate :status } + + before { allow(redis).to receive(:publish) } + + it 'pushes message to timeline' do + expect { worker.perform(account.id, status.id) } + .to_not raise_error + + expect(redis) + .to have_received(:publish) + .with(redis_key, anything) + end + + def redis_key + "timeline:#{account.id}" + end end end end diff --git a/spec/workers/remote_account_refresh_worker_spec.rb b/spec/workers/remote_account_refresh_worker_spec.rb new file mode 100644 index 0000000000..9938d971b9 --- /dev/null +++ b/spec/workers/remote_account_refresh_worker_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe RemoteAccountRefreshWorker do + let(:worker) { described_class.new } + let(:service) { instance_double(ActivityPub::FetchRemoteAccountService, call: true) } + + describe '#perform' do + before { stub_service } + + let(:account) { Fabricate(:account, domain: 'host.example') } + + it 'sends the status to the service' do + worker.perform(account.id) + + expect(service).to have_received(:call).with(account.uri) + end + + it 'returns nil for non-existent record' do + result = worker.perform(123_123_123) + + expect(result).to be_nil + end + + it 'returns nil for a local record' do + account = Fabricate :account, domain: nil + result = worker.perform(account) + expect(result).to be_nil + end + + def stub_service + allow(ActivityPub::FetchRemoteAccountService) + .to receive(:new) + .and_return(service) + end + end +end diff --git a/spec/workers/remove_featured_tag_worker_spec.rb b/spec/workers/remove_featured_tag_worker_spec.rb index 7866824ee7..a8a5bcea81 100644 --- a/spec/workers/remove_featured_tag_worker_spec.rb +++ b/spec/workers/remove_featured_tag_worker_spec.rb @@ -4,12 +4,35 @@ require 'rails_helper' RSpec.describe RemoveFeaturedTagWorker do let(:worker) { described_class.new } + let(:service) { instance_double(RemoveFeaturedTagService, call: true) } describe 'perform' do - it 'runs without error for missing record' do - account_id = nil - featured_tag_id = nil - expect { worker.perform(account_id, featured_tag_id) }.to_not raise_error + context 'with missing values' do + it 'runs without error' do + expect { worker.perform(nil, nil) } + .to_not raise_error + end + end + + context 'with real records' do + before { stub_service } + + let(:account) { Fabricate :account } + let(:featured_tag) { Fabricate :featured_tag } + + it 'calls the service for processing' do + worker.perform(account.id, featured_tag.id) + + expect(service) + .to have_received(:call) + .with(be_an(Account), be_an(FeaturedTag)) + end + + def stub_service + allow(RemoveFeaturedTagService) + .to receive(:new) + .and_return(service) + end end end end diff --git a/spec/workers/resolve_account_worker_spec.rb b/spec/workers/resolve_account_worker_spec.rb index de349adacb..58c2c12129 100644 --- a/spec/workers/resolve_account_worker_spec.rb +++ b/spec/workers/resolve_account_worker_spec.rb @@ -4,10 +4,34 @@ require 'rails_helper' RSpec.describe ResolveAccountWorker do let(:worker) { described_class.new } + let(:service) { instance_double(ResolveAccountService, call: true) } describe 'perform' do - it 'runs without error for missing record' do - expect { worker.perform(nil) }.to_not raise_error + context 'with missing values' do + it 'runs without error' do + expect { worker.perform(nil) } + .to_not raise_error + end + end + + context 'with a URI' do + before { stub_service } + + let(:uri) { 'https://host/path/value' } + + it 'initiates account resolution' do + worker.perform(uri) + + expect(service) + .to have_received(:call) + .with(uri) + end + + def stub_service + allow(ResolveAccountService) + .to receive(:new) + .and_return(service) + end end end end From 05f23df3b7ceff2e9debac5f6232271620b78447 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Wed, 23 Oct 2024 10:02:31 +0200 Subject: [PATCH 229/550] Add endpoint to remove web push subscription (#32626) --- .../api/web/push_subscriptions_controller.rb | 9 ++- app/models/web/push_subscription.rb | 2 + app/workers/web/push_notification_worker.rb | 12 +++- config/routes/api.rb | 2 +- .../api/web/push_subscriptions_spec.rb | 55 +++++++++++++++++++ .../web/push_notification_worker_spec.rb | 1 + 6 files changed, 76 insertions(+), 5 deletions(-) create mode 100644 spec/requests/api/web/push_subscriptions_spec.rb diff --git a/app/controllers/api/web/push_subscriptions_controller.rb b/app/controllers/api/web/push_subscriptions_controller.rb index 167d16fc4d..f515961427 100644 --- a/app/controllers/api/web/push_subscriptions_controller.rb +++ b/app/controllers/api/web/push_subscriptions_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::Web::PushSubscriptionsController < Api::Web::BaseController - before_action :require_user! + before_action :require_user!, except: :destroy before_action :set_push_subscription, only: :update before_action :destroy_previous_subscriptions, only: :create, if: :prior_subscriptions? after_action :update_session_with_subscription, only: :create @@ -17,6 +17,13 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer end + def destroy + push_subscription = ::Web::PushSubscription.find_by_token_for(:unsubscribe, params[:id]) + push_subscription&.destroy + + head 200 + end + private def active_session diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb index 9d30881bf3..656040d2ce 100644 --- a/app/models/web/push_subscription.rb +++ b/app/models/web/push_subscription.rb @@ -29,6 +29,8 @@ class Web::PushSubscription < ApplicationRecord delegate :locale, to: :associated_user + generates_token_for :unsubscribe, expires_in: Web::PushNotificationWorker::TTL + def pushable?(notification) policy_allows_notification?(notification) && alert_enabled_for_notification_type?(notification) end diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb index e771928ef3..824e7b5940 100644 --- a/app/workers/web/push_notification_worker.rb +++ b/app/workers/web/push_notification_worker.rb @@ -2,10 +2,11 @@ class Web::PushNotificationWorker include Sidekiq::Worker + include RoutingHelper sidekiq_options queue: 'push', retry: 5 - TTL = 48.hours.to_s + TTL = 48.hours URGENCY = 'normal' def perform(subscription_id, notification_id) @@ -23,12 +24,13 @@ class Web::PushNotificationWorker request.add_headers( 'Content-Type' => 'application/octet-stream', - 'Ttl' => TTL, + 'Ttl' => TTL.to_s, 'Urgency' => URGENCY, 'Content-Encoding' => 'aesgcm', 'Encryption' => "salt=#{Webpush.encode64(payload.fetch(:salt)).delete('=')}", 'Crypto-Key' => "dh=#{Webpush.encode64(payload.fetch(:server_public_key)).delete('=')};#{web_push_request.crypto_key_header}", - 'Authorization' => web_push_request.authorization_header + 'Authorization' => web_push_request.authorization_header, + 'Unsubscribe-URL' => subscription_url ) request.perform do |response| @@ -72,4 +74,8 @@ class Web::PushNotificationWorker def request_pool RequestPool.current end + + def subscription_url + api_web_push_subscription_url(id: @subscription.generate_token_for(:unsubscribe)) + end end diff --git a/config/routes/api.rb b/config/routes/api.rb index 46907a1ce2..57ce3ba9fd 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -346,7 +346,7 @@ namespace :api, format: false do namespace :web do resource :settings, only: [:update] resources :embeds, only: [:show] - resources :push_subscriptions, only: [:create] do + resources :push_subscriptions, only: [:create, :destroy] do member do put :update end diff --git a/spec/requests/api/web/push_subscriptions_spec.rb b/spec/requests/api/web/push_subscriptions_spec.rb new file mode 100644 index 0000000000..a903dc6f89 --- /dev/null +++ b/spec/requests/api/web/push_subscriptions_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'API Web Push Subscriptions' do + describe 'DELETE /api/web/push_subscriptions/:id' do + subject { delete api_web_push_subscription_path(token) } + + context 'when the subscription exists' do + let!(:web_push_subscription) do + Fabricate(:web_push_subscription) + end + let(:token) do + web_push_subscription.generate_token_for(:unsubscribe) + end + + it 'deletes the subscription' do + expect { subject } + .to change(Web::PushSubscription, :count).by(-1) + + expect(response).to have_http_status(200) + end + end + + context 'when the subscription does not exist' do + let(:web_push_subscription) do + Fabricate(:web_push_subscription) + end + let(:token) do + web_push_subscription.generate_token_for(:unsubscribe) + end + + before do + token # memoize before destroying the record + web_push_subscription.destroy! + end + + it 'does nothing' do + subject + + expect(response).to have_http_status(200) + end + end + + context 'when the token is invalid' do + let(:token) { 'invalid--invalid' } + + it 'does nothing' do + subject + + expect(response).to have_http_status(200) + end + end + end +end diff --git a/spec/workers/web/push_notification_worker_spec.rb b/spec/workers/web/push_notification_worker_spec.rb index 7f836d99e4..4993d467b3 100644 --- a/spec/workers/web/push_notification_worker_spec.rb +++ b/spec/workers/web/push_notification_worker_spec.rb @@ -61,6 +61,7 @@ RSpec.describe Web::PushNotificationWorker do 'Ttl' => '172800', 'Urgency' => 'normal', 'Authorization' => 'WebPush jwt.encoded.payload', + 'Unsubscribe-URL' => %r{/api/web/push_subscriptions/}, }, body: "+\xB8\xDBT}\u0013\xB6\xDD.\xF9\xB0\xA7\xC8Ҁ\xFD\x99#\xF7\xAC\x83\xA4\xDB,\u001F\xB5\xB9w\x85>\xF7\xADr" ) From 393f0a0159f8c12316e903979f6a506e44ea2b50 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 23 Oct 2024 11:47:23 +0200 Subject: [PATCH 230/550] Redesign Content Warning and filters (#32543) --- .../mastodon/components/content_warning.tsx | 2 +- .../mastodon/components/filter_warning.tsx | 9 ++-- .../mastodon/components/status_banner.tsx | 15 ++++--- app/javascript/mastodon/locales/en.json | 3 +- .../styles/mastodon/components.scss | 41 +++++++------------ 5 files changed, 33 insertions(+), 37 deletions(-) diff --git a/app/javascript/mastodon/components/content_warning.tsx b/app/javascript/mastodon/components/content_warning.tsx index df8afca74d..c1c879b55d 100644 --- a/app/javascript/mastodon/components/content_warning.tsx +++ b/app/javascript/mastodon/components/content_warning.tsx @@ -8,7 +8,7 @@ export const ContentWarning: React.FC<{

diff --git a/app/javascript/mastodon/components/filter_warning.tsx b/app/javascript/mastodon/components/filter_warning.tsx index 4305e43038..5eaaac4ba3 100644 --- a/app/javascript/mastodon/components/filter_warning.tsx +++ b/app/javascript/mastodon/components/filter_warning.tsx @@ -10,13 +10,16 @@ export const FilterWarning: React.FC<{

{chunks}, + }} />

diff --git a/app/javascript/mastodon/components/status_banner.tsx b/app/javascript/mastodon/components/status_banner.tsx index 8ff17a9b2e..d25c05d6db 100644 --- a/app/javascript/mastodon/components/status_banner.tsx +++ b/app/javascript/mastodon/components/status_banner.tsx @@ -1,8 +1,8 @@ import { FormattedMessage } from 'react-intl'; export enum BannerVariant { - Yellow = 'yellow', - Blue = 'blue', + Warning = 'warning', + Filter = 'filter', } export const StatusBanner: React.FC<{ @@ -11,9 +11,9 @@ export const StatusBanner: React.FC<{ expanded?: boolean; onClick?: () => void; }> = ({ children, variant, expanded, onClick }) => ( -
+ ) : variant === BannerVariant.Warning ? ( + ) : ( )} -
+ ); diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 46b7d90dba..f2d37e67a6 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Unfollow user?", "content_warning.hide": "Hide post", "content_warning.show": "Show anyway", + "content_warning.show_more": "Show more", "conversation.delete": "Delete conversation", "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "filter_warning.matches_filter": "Matches filter “{title}”", + "filter_warning.matches_filter": "Matches filter “{title}”", "filtered_notifications_banner.pending_requests": "From {count, plural, =0 {no one} one {one person} other {# people}} you may know", "filtered_notifications_banner.title": "Filtered notifications", "firehose.all": "All", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index a20e84ce75..673e47f429 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -11109,19 +11109,21 @@ noscript { } .content-warning { + display: block; box-sizing: border-box; background: rgba($ui-highlight-color, 0.05); color: $secondary-text-color; - border-top: 1px solid; - border-bottom: 1px solid; - border-color: rgba($ui-highlight-color, 0.15); + border: 1px solid rgba($ui-highlight-color, 0.15); + border-radius: 8px; padding: 8px (5px + 8px); position: relative; font-size: 15px; line-height: 22px; + cursor: pointer; p { margin-bottom: 8px; + font-weight: 500; } .link-button { @@ -11130,31 +11132,16 @@ noscript { font-weight: 500; } - &::before, - &::after { - content: ''; - display: block; - position: absolute; - height: 100%; - background: url('../images/warning-stripes.svg') repeat-y; - width: 5px; - top: 0; - } + &--filter { + color: $darker-text-color; - &::before { - border-start-start-radius: 4px; - border-end-start-radius: 4px; - inset-inline-start: 0; - } + p { + font-weight: normal; + } - &::after { - border-start-end-radius: 4px; - border-end-end-radius: 4px; - inset-inline-end: 0; - } - - &--filter::before, - &--filter::after { - background-image: url('../images/filter-stripes.svg'); + .filter-name { + font-weight: 500; + color: $secondary-text-color; + } } } From c3e684b715a9e59344201c87ccdf94ed00d796aa Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:25:49 -0400 Subject: [PATCH 231/550] Remove unused svg logos (#32581) --- app/javascript/images/logo_full.svg | 1 - app/javascript/images/logo_transparent.svg | 1 - 2 files changed, 2 deletions(-) delete mode 100644 app/javascript/images/logo_full.svg delete mode 100644 app/javascript/images/logo_transparent.svg diff --git a/app/javascript/images/logo_full.svg b/app/javascript/images/logo_full.svg deleted file mode 100644 index 03bcf93e39..0000000000 --- a/app/javascript/images/logo_full.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/javascript/images/logo_transparent.svg b/app/javascript/images/logo_transparent.svg deleted file mode 100644 index a1e7b403e0..0000000000 --- a/app/javascript/images/logo_transparent.svg +++ /dev/null @@ -1 +0,0 @@ - From fae1de699cf10879fa66881acb13422b69949b80 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:26:51 -0400 Subject: [PATCH 232/550] Remove duplicate indexes from database (#32454) --- db/migrate/20241014010506_remove_duplicate_indexes.rb | 10 ++++++++++ db/schema.rb | 6 +----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20241014010506_remove_duplicate_indexes.rb diff --git a/db/migrate/20241014010506_remove_duplicate_indexes.rb b/db/migrate/20241014010506_remove_duplicate_indexes.rb new file mode 100644 index 0000000000..50e0e6ffcf --- /dev/null +++ b/db/migrate/20241014010506_remove_duplicate_indexes.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class RemoveDuplicateIndexes < ActiveRecord::Migration[7.1] + def change + remove_index :account_aliases, :account_id + remove_index :account_relationship_severance_events, :account_id + remove_index :custom_filter_statuses, :status_id + remove_index :webauthn_credentials, :user_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 68067841e0..5f7b3a3305 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_10_07_071624) do +ActiveRecord::Schema[7.1].define(version: 2024_10_14_010506) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -21,7 +21,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_07_071624) do t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.index ["account_id", "uri"], name: "index_account_aliases_on_account_id_and_uri", unique: true - t.index ["account_id"], name: "index_account_aliases_on_account_id" end create_table "account_conversations", force: :cascade do |t| @@ -99,7 +98,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_07_071624) do 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" end @@ -397,7 +395,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_07_071624) do t.datetime "updated_at", null: false t.index ["custom_filter_id"], name: "index_custom_filter_statuses_on_custom_filter_id" t.index ["status_id", "custom_filter_id"], name: "index_custom_filter_statuses_on_status_id_and_custom_filter_id", unique: true - t.index ["status_id"], name: "index_custom_filter_statuses_on_status_id" end create_table "custom_filters", force: :cascade do |t| @@ -1202,7 +1199,6 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_07_071624) do t.datetime "updated_at", precision: nil, null: false t.index ["external_id"], name: "index_webauthn_credentials_on_external_id", unique: true t.index ["user_id", "nickname"], name: "index_webauthn_credentials_on_user_id_and_nickname", unique: true - t.index ["user_id"], name: "index_webauthn_credentials_on_user_id" end create_table "webhooks", force: :cascade do |t| From 2f906ed55ab0b9887a3aee66dc8c29cf7c1d7545 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:29:01 -0400 Subject: [PATCH 233/550] Constants for account refresh (#32420) --- app/models/account.rb | 6 ++++-- spec/models/account_spec.rb | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 708415b6ee..957ccc73c4 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -65,6 +65,8 @@ class Account < ApplicationRecord ) BACKGROUND_REFRESH_INTERVAL = 1.week.freeze + REFRESH_DEADLINE = 6.hours + STALE_THRESHOLD = 1.day DEFAULT_FIELDS_SIZE = 4 INSTANCE_ACTOR_ID = -99 @@ -229,13 +231,13 @@ class Account < ApplicationRecord end def possibly_stale? - last_webfingered_at.nil? || last_webfingered_at <= 1.day.ago + last_webfingered_at.nil? || last_webfingered_at <= STALE_THRESHOLD.ago end def schedule_refresh_if_stale! return unless last_webfingered_at.present? && last_webfingered_at <= BACKGROUND_REFRESH_INTERVAL.ago - AccountRefreshWorker.perform_in(rand(6.hours.to_i), id) + AccountRefreshWorker.perform_in(rand(REFRESH_DEADLINE), id) end def refresh! diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index a8f6ed7493..d129ef280d 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -208,16 +208,16 @@ RSpec.describe Account do end end - context 'when last_webfingered_at is more than 24 hours before' do - let(:last_webfingered_at) { 25.hours.ago } + context 'when last_webfingered_at is before the threshold' do + let(:last_webfingered_at) { (described_class::STALE_THRESHOLD + 1.hour).ago } it 'returns true' do expect(account.possibly_stale?).to be true end end - context 'when last_webfingered_at is less than 24 hours before' do - let(:last_webfingered_at) { 23.hours.ago } + context 'when last_webfingered_at is after the threshold' do + let(:last_webfingered_at) { (described_class::STALE_THRESHOLD - 1.hour).ago } it 'returns false' do expect(account.possibly_stale?).to be false From a850be4ad3da31f3bc8a708da539499a9b2e1746 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:30:09 -0400 Subject: [PATCH 234/550] Match ruby version in lockfile to version in `.ruby-version` (#31995) --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 957146b16b..f5264e8db2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1058,7 +1058,7 @@ DEPENDENCIES xorcist (~> 1.1) RUBY VERSION - ruby 3.3.4p94 + ruby 3.3.5p100 BUNDLED WITH - 2.5.18 + 2.5.22 From 5a4f4f3e8361c4155a2c83aa70f4fba6b9f901f6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:31:03 -0400 Subject: [PATCH 235/550] Remove single-use `ProfileStories` method (#31164) --- spec/support/stories/profile_stories.rb | 14 +------------- spec/system/profile_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/spec/support/stories/profile_stories.rb b/spec/support/stories/profile_stories.rb index 07eaaca9fb..43a8e170cc 100644 --- a/spec/support/stories/profile_stories.rb +++ b/spec/support/stories/profile_stories.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module ProfileStories - attr_reader :bob, :alice, :alice_bio + attr_reader :bob def fill_in_auth_details(email, password) fill_in 'user_email', with: email @@ -31,18 +31,6 @@ module ProfileStories bob.update!(role: UserRole.find_by!(name: 'Admin')) end - def with_alice_as_local_user - @alice_bio = '@alice and @bob are fictional characters commonly used as' \ - 'placeholder names in #cryptology, as well as #science and' \ - 'engineering 📖 literature. Not affiliated with @pepe.' - - @alice = Fabricate( - :user, - email: 'alice@example.com', password: password, confirmed_at: confirmed_at, - account: Fabricate(:account, username: 'alice', note: @alice_bio) - ) - end - def confirmed_at @confirmed_at ||= Time.zone.now end diff --git a/spec/system/profile_spec.rb b/spec/system/profile_spec.rb index 7e3cbfd334..a05a146fef 100644 --- a/spec/system/profile_spec.rb +++ b/spec/system/profile_spec.rb @@ -11,10 +11,10 @@ RSpec.describe 'Profile' do before do as_a_logged_in_user - with_alice_as_local_user + Fabricate(:user, account: Fabricate(:account, username: 'alice')) end - it 'I can view Annes public account' do + it 'I can view public account page for Alice' do visit account_path('alice') expect(subject).to have_title("alice (@alice@#{local_domain})") From 35f008aa2a16240dc20d543ecc1089aa19332a00 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 09:32:18 -0400 Subject: [PATCH 236/550] Move translation service config to `config_for` yml (#30663) --- app/lib/translation_service.rb | 20 +++++++++++++++----- config/application.rb | 2 ++ config/translation.yml | 7 +++++++ 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 config/translation.yml diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb index bfe5de44f8..ee268d7a7c 100644 --- a/app/lib/translation_service.rb +++ b/app/lib/translation_service.rb @@ -8,17 +8,27 @@ class TranslationService class UnexpectedResponseError < Error; end def self.configured - if ENV['DEEPL_API_KEY'].present? - TranslationService::DeepL.new(ENV.fetch('DEEPL_PLAN', 'free'), ENV['DEEPL_API_KEY']) - elsif ENV['LIBRE_TRANSLATE_ENDPOINT'].present? - TranslationService::LibreTranslate.new(ENV['LIBRE_TRANSLATE_ENDPOINT'], ENV['LIBRE_TRANSLATE_API_KEY']) + if configuration.deepl[:api_key].present? + TranslationService::DeepL.new( + configuration.deepl[:plan], + configuration.deepl[:api_key] + ) + elsif configuration.libre_translate[:endpoint].present? + TranslationService::LibreTranslate.new( + configuration.libre_translate[:endpoint], + configuration.libre_translate[:api_key] + ) else raise NotConfiguredError end end def self.configured? - ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present? + configuration.deepl[:api_key].present? || configuration.libre_translate[:endpoint].present? + end + + def self.configuration + Rails.configuration.x.translation end def languages diff --git a/config/application.rb b/config/application.rb index 5e2f44453d..0641113982 100644 --- a/config/application.rb +++ b/config/application.rb @@ -109,6 +109,8 @@ module Mastodon end end + config.x.translation = config_for(:translation) + config.to_prepare do Doorkeeper::AuthorizationsController.layout 'modal' Doorkeeper::AuthorizedApplicationsController.layout 'admin' diff --git a/config/translation.yml b/config/translation.yml new file mode 100644 index 0000000000..e074c5d0f2 --- /dev/null +++ b/config/translation.yml @@ -0,0 +1,7 @@ +shared: + deepl: + api_key: <%= ENV.fetch('DEEPL_API_KEY', nil) %> + plan: <%= ENV.fetch('DEEPL_PLAN', 'free') %> + libre_translate: + api_key: <%= ENV.fetch('LIBRE_TRANSLATE_API_KEY', nil) %> + endpoint: <%= ENV.fetch('LIBRE_TRANSLATE_ENDPOINT', nil) %> From 97b18d10b42bb61baeec4a5612036e170af33874 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 23 Oct 2024 10:25:43 -0400 Subject: [PATCH 237/550] Move hcaptcha service config to `config_for` yml (#30662) --- app/controllers/concerns/auth/captcha_concern.rb | 2 +- app/helpers/admin/settings_helper.rb | 2 +- config/application.rb | 1 + config/captcha.yml | 3 +++ 4 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 config/captcha.yml diff --git a/app/controllers/concerns/auth/captcha_concern.rb b/app/controllers/concerns/auth/captcha_concern.rb index cfd93978ce..c01da21249 100644 --- a/app/controllers/concerns/auth/captcha_concern.rb +++ b/app/controllers/concerns/auth/captcha_concern.rb @@ -10,7 +10,7 @@ module Auth::CaptchaConcern end def captcha_available? - ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present? + Rails.configuration.x.captcha.secret_key.present? && Rails.configuration.x.captcha.site_key.present? end def captcha_enabled? diff --git a/app/helpers/admin/settings_helper.rb b/app/helpers/admin/settings_helper.rb index 6937331e1a..9b950d5a63 100644 --- a/app/helpers/admin/settings_helper.rb +++ b/app/helpers/admin/settings_helper.rb @@ -2,7 +2,7 @@ module Admin::SettingsHelper def captcha_available? - ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present? + Rails.configuration.x.captcha.secret_key.present? && Rails.configuration.x.captcha.site_key.present? end def login_activity_title(activity) diff --git a/config/application.rb b/config/application.rb index 0641113982..f94366d36f 100644 --- a/config/application.rb +++ b/config/application.rb @@ -109,6 +109,7 @@ module Mastodon end end + config.x.captcha = config_for(:captcha) config.x.translation = config_for(:translation) config.to_prepare do diff --git a/config/captcha.yml b/config/captcha.yml new file mode 100644 index 0000000000..a9f54588c7 --- /dev/null +++ b/config/captcha.yml @@ -0,0 +1,3 @@ +shared: + secret_key: <%= ENV.fetch('HCAPTCHA_SECRET_KEY', nil) %> + site_key: <%= ENV.fetch('HCAPTCHA_SITE_KEY', nil) %> From d11231a420cf80c3f924233d398002639cac0f8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Oct 2024 09:28:22 +0200 Subject: [PATCH 238/550] Change design of rich text elements in web UI (#32633) --- app/javascript/images/quote.svg | 3 + .../styles/mastodon-light/variables.scss | 3 + app/javascript/styles/mastodon/rich_text.scss | 74 +++++++++++++++++-- app/javascript/styles/mastodon/variables.scss | 3 + 4 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 app/javascript/images/quote.svg diff --git a/app/javascript/images/quote.svg b/app/javascript/images/quote.svg new file mode 100644 index 0000000000..ae6fbbe04a --- /dev/null +++ b/app/javascript/images/quote.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss index 76bdc4022e..777c622ace 100644 --- a/app/javascript/styles/mastodon-light/variables.scss +++ b/app/javascript/styles/mastodon-light/variables.scss @@ -76,4 +76,7 @@ body { --background-color-tint: rgba(255, 255, 255, 80%); --background-filter: blur(10px); --on-surface-color: #{transparentize($ui-base-color, 0.65)}; + --rich-text-container-color: rgba(255, 216, 231, 100%); + --rich-text-text-color: rgba(114, 47, 83, 100%); + --rich-text-decorations-color: rgba(255, 175, 212, 100%); } diff --git a/app/javascript/styles/mastodon/rich_text.scss b/app/javascript/styles/mastodon/rich_text.scss index c57db26e03..52412274b6 100644 --- a/app/javascript/styles/mastodon/rich_text.scss +++ b/app/javascript/styles/mastodon/rich_text.scss @@ -2,9 +2,29 @@ .e-content, .edit-indicator__content, .reply-indicator__content { + code { + background: var(--rich-text-container-color); + padding: 4px; + border-radius: 4px; + color: var(--rich-text-text-color); + font-size: 0.85em; + } + + pre { + background: var(--rich-text-container-color); + padding: 8px; + border-radius: 4px; + color: var(--rich-text-text-color); + + code { + padding: 0; + background: transparent; + } + } + pre, blockquote { - margin-bottom: 20px; + margin-bottom: 22px; white-space: pre-wrap; unicode-bidi: plaintext; @@ -14,19 +34,45 @@ } blockquote { - padding-inline-start: 10px; - border-inline-start: 3px solid $darker-text-color; - color: $darker-text-color; + padding-inline-start: 32px; + color: var(--rich-text-text-color); white-space: normal; + position: relative; - p:last-child { + &::before { + display: block; + content: ''; + width: 24px; + height: 20px; + mask-image: url('../images/quote.svg'); + background-color: var(--rich-text-decorations-color); + position: absolute; + inset-inline-start: 0; + top: 0; + } + + blockquote { + margin-top: 4px; + border-inline-start: 3px solid var(--rich-text-decorations-color); + padding-inline-start: 16px; + + &::before { + display: none; + } + } + + p:last-of-type { margin-bottom: 0; } } & > ul, & > ol { - margin-bottom: 20px; + margin-bottom: 22px; + + &:last-child { + margin-bottom: 0; + } } b, @@ -41,7 +87,15 @@ ul, ol { - margin-inline-start: 2em; + padding-inline-start: 24px; + + li { + padding-inline-start: 8px; + + &::marker { + text-align: end; + } + } p { margin: 0; @@ -49,7 +103,11 @@ } ul { - list-style-type: disc; + list-style-type: '•'; + + li::marker { + text-align: start; + } } ol { diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index baaec5f58f..fe36e16631 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -116,4 +116,7 @@ $font-monospace: 'mastodon-font-monospace' !default; --error-background-color: #{darken($error-red, 16%)}; --error-active-background-color: #{darken($error-red, 12%)}; --on-error-color: #fff; + --rich-text-container-color: rgba(87, 24, 60, 100%); + --rich-text-text-color: rgba(255, 175, 212, 100%); + --rich-text-decorations-color: rgba(128, 58, 95, 100%); } From 745c4f900af31ef1282fd4ac6b982293fea5bed6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 04:02:54 -0400 Subject: [PATCH 239/550] Remove unused `ApplicationHelper#visibility_icon` helper method (#32644) --- app/helpers/application_helper.rb | 12 ------------ spec/helpers/application_helper_spec.rb | 22 ---------------------- 2 files changed, 34 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4caf0398fe..e36de19255 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -120,18 +120,6 @@ module ApplicationHelper inline_svg_tag 'check.svg' end - def visibility_icon(status) - if status.public_visibility? - material_symbol('globe', title: I18n.t('statuses.visibilities.public')) - elsif status.unlisted_visibility? - material_symbol('lock_open', title: I18n.t('statuses.visibilities.unlisted')) - elsif status.private_visibility? || status.limited_visibility? - material_symbol('lock', title: I18n.t('statuses.visibilities.private')) - elsif status.direct_visibility? - material_symbol('alternate_email', title: I18n.t('statuses.visibilities.direct')) - end - end - def interrelationships_icon(relationships, account_id) if relationships.following[account_id] && relationships.followed_by[account_id] material_symbol('sync_alt', title: I18n.t('relationships.mutual'), class: 'active passive') diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 0f78dc82f5..ffcc5b81b6 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -227,28 +227,6 @@ RSpec.describe ApplicationHelper do end end - describe 'visibility_icon' do - it 'returns a globe icon for a public visible status' do - result = helper.visibility_icon Status.new(visibility: 'public') - expect(result).to match(/globe/) - end - - it 'returns an unlock icon for a unlisted visible status' do - result = helper.visibility_icon Status.new(visibility: 'unlisted') - expect(result).to match(/lock_open/) - end - - it 'returns a lock icon for a private visible status' do - result = helper.visibility_icon Status.new(visibility: 'private') - expect(result).to match(/lock/) - end - - it 'returns an at icon for a direct visible status' do - result = helper.visibility_icon Status.new(visibility: 'direct') - expect(result).to match(/alternate_email/) - end - end - describe 'title' do it 'returns site title on production environment' do Setting.site_title = 'site title' From 5c910dc82eb07a0e69e7788280321383405f8196 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 04:04:29 -0400 Subject: [PATCH 240/550] Add coverage for `DatabaseHelper` primary/replica methods (#32642) --- spec/helpers/database_helper_spec.rb | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 spec/helpers/database_helper_spec.rb diff --git a/spec/helpers/database_helper_spec.rb b/spec/helpers/database_helper_spec.rb new file mode 100644 index 0000000000..9ea398bf4c --- /dev/null +++ b/spec/helpers/database_helper_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe DatabaseHelper do + context 'when a replica is enabled' do + around do |example| + ClimateControl.modify REPLICA_DB_NAME: 'prod-relay-quantum-tunnel-mirror' do + example.run + end + end + + before { allow(ApplicationRecord).to receive(:connected_to) } + + describe '#with_read_replica' do + it 'uses the replica for connections' do + helper.with_read_replica { _x = 1 } + + expect(ApplicationRecord) + .to have_received(:connected_to).with(role: :reading, prevent_writes: true) + end + end + + describe '#with_primary' do + it 'uses the primary for connections' do + helper.with_primary { _x = 1 } + + expect(ApplicationRecord) + .to have_received(:connected_to).with(role: :writing) + end + end + end + + context 'when a replica is not enabled' do + around do |example| + ClimateControl.modify REPLICA_DB_NAME: nil do + example.run + end + end + + before { allow(ApplicationRecord).to receive(:connected_to) } + + describe '#with_read_replica' do + it 'does not use the replica for connections' do + helper.with_read_replica { _x = 1 } + + expect(ApplicationRecord) + .to_not have_received(:connected_to).with(role: :reading, prevent_writes: true) + end + end + + describe '#with_primary' do + it 'does not use the primary for connections' do + helper.with_primary { _x = 1 } + + expect(ApplicationRecord) + .to_not have_received(:connected_to).with(role: :writing) + end + end + end +end From 67504dbf9c51f458a912d98106ef7b5ae79d63fc Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 08:43:40 -0400 Subject: [PATCH 241/550] Simplify uniqueness validation spec for `IpBlock` (#32066) --- spec/models/ip_block_spec.rb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index ac9f5db601..b85856780a 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -3,18 +3,13 @@ require 'rails_helper' RSpec.describe IpBlock do - describe 'validations' do + describe 'Validations' do + subject { Fabricate.build :ip_block } + it { is_expected.to validate_presence_of(:ip) } it { is_expected.to validate_presence_of(:severity) } - it 'validates ip uniqueness', :aggregate_failures do - described_class.create!(ip: '127.0.0.1', severity: :no_access) - - ip_block = described_class.new(ip: '127.0.0.1', severity: :no_access) - - expect(ip_block).to_not be_valid - expect(ip_block).to model_have_error_on_field(:ip) - end + it { is_expected.to validate_uniqueness_of(:ip) } end describe '#to_log_human_identifier' do From b16435e79f2b695a58effcadc5077ceedd559507 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 08:44:13 -0400 Subject: [PATCH 242/550] Explore more resplendent model validation specs for `Form::AdminSettings` (#32465) --- spec/models/form/admin_settings_spec.rb | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/spec/models/form/admin_settings_spec.rb b/spec/models/form/admin_settings_spec.rb index 6080b9e081..73106f2b69 100644 --- a/spec/models/form/admin_settings_spec.rb +++ b/spec/models/form/admin_settings_spec.rb @@ -3,33 +3,17 @@ require 'rails_helper' RSpec.describe Form::AdminSettings do - describe 'validations' do + describe 'Validations' do describe 'site_contact_username' do context 'with no accounts' do - it 'is not valid' do - setting = described_class.new(site_contact_username: 'Test') - setting.valid? - - expect(setting).to model_have_error_on_field(:site_contact_username) - end + it { is_expected.to_not allow_value('Test').for(:site_contact_username) } end context 'with an account' do before { Fabricate(:account, username: 'Glorp') } - it 'is not valid when account doesnt match' do - setting = described_class.new(site_contact_username: 'Test') - setting.valid? - - expect(setting).to model_have_error_on_field(:site_contact_username) - end - - it 'is valid when account matches' do - setting = described_class.new(site_contact_username: 'Glorp') - setting.valid? - - expect(setting).to_not model_have_error_on_field(:site_contact_username) - end + it { is_expected.to_not allow_value('Test').for(:site_contact_username) } + it { is_expected.to allow_value('Glorp').for(:site_contact_username) } end end end From dea6c454fdc1de099918ab4cca33ec397f9f9ce0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 08:47:06 -0400 Subject: [PATCH 243/550] Contribute more coverage for `Account` model (#32474) --- spec/models/account_spec.rb | 160 ++++++++++++++---------------------- 1 file changed, 62 insertions(+), 98 deletions(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index d129ef280d..bd897a2999 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -752,26 +752,42 @@ RSpec.describe Account do end end - describe '#prepare_contents' do - subject { Fabricate.build :account, domain: domain, note: ' padded note ', display_name: ' padded name ' } + describe 'Callbacks' do + describe 'Stripping content when required' do + context 'with a remote account' do + subject { Fabricate.build :account, domain: 'host.example', note: ' note ', display_name: ' display name ' } - context 'with local account' do - let(:domain) { nil } - - it 'strips values' do - expect { subject.valid? } - .to change(subject, :note).to('padded note') - .and(change(subject, :display_name).to('padded name')) + it 'preserves content' do + expect { subject.valid? } + .to not_change(subject, :note) + .and not_change(subject, :display_name) + end end - end - context 'with remote account' do - let(:domain) { 'host.example' } + context 'with a local account' do + subject { Fabricate.build :account, domain: nil, note:, display_name: } - it 'preserves values' do - expect { subject.valid? } - .to not_change(subject, :note) - .and(not_change(subject, :display_name)) + context 'with populated fields' do + let(:note) { ' note ' } + let(:display_name) { ' display name ' } + + it 'strips content' do + expect { subject.valid? } + .to change(subject, :note).to('note') + .and change(subject, :display_name).to('display name') + end + end + + context 'with empty fields' do + let(:note) { nil } + let(:display_name) { nil } + + it 'preserves content' do + expect { subject.valid? } + .to not_change(subject, :note) + .and not_change(subject, :display_name) + end + end end end end @@ -826,22 +842,19 @@ RSpec.describe Account do end end - describe 'validations' do + describe 'Validations' do it { is_expected.to validate_presence_of(:username) } - context 'when is local' do - it 'is invalid if the username is not unique in case-insensitive comparison among local accounts' do - _account = Fabricate(:account, username: 'the_doctor') - non_unique_account = Fabricate.build(:account, username: 'the_Doctor') - non_unique_account.valid? - expect(non_unique_account).to model_have_error_on_field(:username) + context 'when account is local' do + subject { Fabricate.build :account, domain: nil } + + context 'with an existing differently-cased username account' do + before { Fabricate :account, username: 'the_doctor' } + + it { is_expected.to_not allow_value('the_Doctor').for(:username) } end - it 'is invalid if the username is reserved' do - account = Fabricate.build(:account, username: 'support') - account.valid? - expect(account).to model_have_error_on_field(:username) - end + it { is_expected.to_not allow_value('support').for(:username) } it 'is valid when username is reserved but record has already been created' do account = Fabricate.build(:account, username: 'support') @@ -849,9 +862,10 @@ RSpec.describe Account do expect(account.valid?).to be true end - it 'is valid if we are creating an instance actor account with a period' do - account = Fabricate.build(:account, id: described_class::INSTANCE_ACTOR_ID, actor_type: 'Application', locked: true, username: 'example.com') - expect(account.valid?).to be true + context 'with the instance actor' do + subject { Fabricate.build :account, id: described_class::INSTANCE_ACTOR_ID, actor_type: 'Application', locked: true } + + it { is_expected.to allow_value('example.com').for(:username) } end it 'is valid if we are creating a possibly-conflicting instance actor account' do @@ -860,81 +874,31 @@ RSpec.describe Account do expect(instance_account.valid?).to be true end - it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do - account = Fabricate.build(:account, username: 'the-doctor') - account.valid? - expect(account).to model_have_error_on_field(:username) - end + it { is_expected.to_not allow_values('the-doctor', 'the.doctor').for(:username) } - it 'is invalid if the username contains a period' do - account = Fabricate.build(:account, username: 'the.doctor') - account.valid? - expect(account).to model_have_error_on_field(:username) - end + it { is_expected.to validate_length_of(:username).is_at_most(described_class::USERNAME_LENGTH_LIMIT) } + it { is_expected.to validate_length_of(:display_name).is_at_most(described_class::DISPLAY_NAME_LENGTH_LIMIT) } - it 'is invalid if the username is longer than the character limit' do - account = Fabricate.build(:account, username: username_over_limit) - account.valid? - expect(account).to model_have_error_on_field(:username) - end - - it 'is invalid if the display name is longer than the character limit' do - account = Fabricate.build(:account, display_name: display_name_over_limit) - account.valid? - expect(account).to model_have_error_on_field(:display_name) - end - - it 'is invalid if the note is longer than the character limit' do - account = Fabricate.build(:account, note: account_note_over_limit) - account.valid? - expect(account).to model_have_error_on_field(:note) - end + it { is_expected.to_not allow_values(account_note_over_limit).for(:note) } end - context 'when is remote' do - it 'is invalid if the username is same among accounts in the same normalized domain' do - Fabricate(:account, domain: 'にゃん', username: 'username') - account = Fabricate.build(:account, domain: 'xn--r9j5b5b', username: 'username') - account.valid? - expect(account).to model_have_error_on_field(:username) + context 'when account is remote' do + subject { Fabricate.build :account, domain: 'host.example' } + + context 'when a normalized domain account exists' do + subject { Fabricate.build :account, domain: 'xn--r9j5b5b' } + + before { Fabricate(:account, domain: 'にゃん', username: 'username') } + + it { is_expected.to_not allow_values('username', 'Username').for(:username) } end - it 'is invalid if the username is not unique in case-insensitive comparison among accounts in the same normalized domain' do - Fabricate(:account, domain: 'にゃん', username: 'username') - account = Fabricate.build(:account, domain: 'xn--r9j5b5b', username: 'Username') - account.valid? - expect(account).to model_have_error_on_field(:username) - end + it { is_expected.to allow_values('the-doctor', username_over_limit).for(:username) } + it { is_expected.to_not allow_values('the doctor').for(:username) } - it 'is valid even if the username contains hyphens' do - account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor') - account.valid? - expect(account).to_not model_have_error_on_field(:username) - end + it { is_expected.to allow_values(display_name_over_limit).for(:display_name) } - it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do - account = Fabricate.build(:account, domain: 'domain', username: 'the doctor') - account.valid? - expect(account).to model_have_error_on_field(:username) - end - - it 'is valid even if the username is longer than the character limit' do - account = Fabricate.build(:account, domain: 'domain', username: username_over_limit) - account.valid? - expect(account).to_not model_have_error_on_field(:username) - end - - it 'is valid even if the display name is longer than the character limit' do - account = Fabricate.build(:account, domain: 'domain', display_name: display_name_over_limit) - account.valid? - expect(account).to_not model_have_error_on_field(:display_name) - end - - it 'is valid even if the note is longer than the character limit' do - account = Fabricate.build(:account, domain: 'domain', note: account_note_over_limit) - account.valid? - expect(account).to_not model_have_error_on_field(:note) - end + it { is_expected.to allow_values(account_note_over_limit).for(:note) } end def username_over_limit From 37bcbeab4aead09c4884827b8a7625c5070ab192 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Oct 2024 08:52:38 -0400 Subject: [PATCH 244/550] Simplify model validation spec in AccountModerationNote/ReportNote (#31792) --- spec/models/account_moderation_note_spec.rb | 31 +++++++++------------ spec/models/report_note_spec.rb | 31 +++++++++------------ 2 files changed, 26 insertions(+), 36 deletions(-) diff --git a/spec/models/account_moderation_note_spec.rb b/spec/models/account_moderation_note_spec.rb index 079774c492..f3bcff4cd6 100644 --- a/spec/models/account_moderation_note_spec.rb +++ b/spec/models/account_moderation_note_spec.rb @@ -3,29 +3,24 @@ require 'rails_helper' RSpec.describe AccountModerationNote do - describe 'chronological scope' do - it 'returns account moderation notes oldest to newest' do - account = Fabricate(:account) - note1 = Fabricate(:account_moderation_note, target_account: account) - note2 = Fabricate(:account_moderation_note, target_account: account) + describe 'Scopes' do + describe '.chronological' do + it 'returns account moderation notes oldest to newest' do + account = Fabricate(:account) + note1 = Fabricate(:account_moderation_note, target_account: account) + note2 = Fabricate(:account_moderation_note, target_account: account) - expect(account.targeted_moderation_notes.chronological).to eq [note1, note2] + expect(account.targeted_moderation_notes.chronological).to eq [note1, note2] + end end end - describe 'validations' do - it 'is invalid if the content is empty' do - report = Fabricate.build(:account_moderation_note, content: '') - expect(report.valid?).to be false - end + describe 'Validations' do + subject { Fabricate.build :account_moderation_note } - it 'is invalid if content is longer than character limit' do - report = Fabricate.build(:account_moderation_note, content: comment_over_limit) - expect(report.valid?).to be false - end - - def comment_over_limit - Faker::Lorem.paragraph_by_chars(number: described_class::CONTENT_SIZE_LIMIT * 2) + describe 'content' do + it { is_expected.to_not allow_value('').for(:content) } + it { is_expected.to validate_length_of(:content).is_at_most(described_class::CONTENT_SIZE_LIMIT) } end end end diff --git a/spec/models/report_note_spec.rb b/spec/models/report_note_spec.rb index 417971c9a1..0d1c0f619e 100644 --- a/spec/models/report_note_spec.rb +++ b/spec/models/report_note_spec.rb @@ -3,29 +3,24 @@ require 'rails_helper' RSpec.describe ReportNote do - describe 'chronological scope' do - it 'returns report notes oldest to newest' do - report = Fabricate(:report) - note1 = Fabricate(:report_note, report: report) - note2 = Fabricate(:report_note, report: report) + describe 'Scopes' do + describe '.chronological' do + it 'returns report notes oldest to newest' do + report = Fabricate(:report) + note1 = Fabricate(:report_note, report: report) + note2 = Fabricate(:report_note, report: report) - expect(report.notes.chronological).to eq [note1, note2] + expect(report.notes.chronological).to eq [note1, note2] + end end end - describe 'validations' do - it 'is invalid if the content is empty' do - report = Fabricate.build(:report_note, content: '') - expect(report.valid?).to be false - end + describe 'Validations' do + subject { Fabricate.build :report_note } - it 'is invalid if content is longer than character limit' do - report = Fabricate.build(:report_note, content: comment_over_limit) - expect(report.valid?).to be false - end - - def comment_over_limit - Faker::Lorem.paragraph_by_chars(number: described_class::CONTENT_SIZE_LIMIT * 2) + describe 'content' do + it { is_expected.to_not allow_value('').for(:content) } + it { is_expected.to validate_length_of(:content).is_at_most(described_class::CONTENT_SIZE_LIMIT) } end end end From e5be4bf8d887bffd6f660ec86b13515a593f21d4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 03:55:33 -0400 Subject: [PATCH 245/550] Simplify model validation specs for `PreviewCard` (#32469) --- spec/models/preview_card_spec.rb | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/spec/models/preview_card_spec.rb b/spec/models/preview_card_spec.rb index c0bc2b6e0e..0fe76c37b0 100644 --- a/spec/models/preview_card_spec.rb +++ b/spec/models/preview_card_spec.rb @@ -9,26 +9,10 @@ RSpec.describe PreviewCard do end end - describe 'validations' do - describe 'urls' do - it 'allows http schemes' do - record = described_class.new(url: 'http://example.host/path') - - expect(record).to be_valid - end - - it 'allows https schemes' do - record = described_class.new(url: 'https://example.host/path') - - expect(record).to be_valid - end - - it 'does not allow javascript: schemes' do - record = described_class.new(url: 'javascript:alert()') - - expect(record).to_not be_valid - expect(record).to model_have_error_on_field(:url) - end + describe 'Validations' do + describe 'url' do + it { is_expected.to allow_values('http://example.host/path', 'https://example.host/path').for(:url) } + it { is_expected.to_not allow_value('javascript:alert()').for(:url) } end end end From 4134ccdbe06b1c34ba28910c9d608a949c69dba3 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 03:55:45 -0400 Subject: [PATCH 246/550] Simplify model validation specs for `WebauthnCredential` (#32466) --- spec/models/webauthn_credential_spec.rb | 48 ++++--------------------- 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/spec/models/webauthn_credential_spec.rb b/spec/models/webauthn_credential_spec.rb index c4105d9150..067c696c13 100644 --- a/spec/models/webauthn_credential_spec.rb +++ b/spec/models/webauthn_credential_spec.rb @@ -3,53 +3,17 @@ require 'rails_helper' RSpec.describe WebauthnCredential do - describe 'validations' do + describe 'Validations' do + subject { Fabricate.build :webauthn_credential } + it { is_expected.to validate_presence_of(:external_id) } it { is_expected.to validate_presence_of(:public_key) } it { is_expected.to validate_presence_of(:nickname) } it { is_expected.to validate_presence_of(:sign_count) } - it 'is invalid if already exist a webauthn credential with the same external id' do - Fabricate(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw') - new_webauthn_credential = Fabricate.build(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw') + it { is_expected.to validate_uniqueness_of(:external_id) } + it { is_expected.to validate_uniqueness_of(:nickname).scoped_to(:user_id) } - new_webauthn_credential.valid? - - expect(new_webauthn_credential).to model_have_error_on_field(:external_id) - end - - it 'is invalid if user already registered a webauthn credential with the same nickname' do - user = Fabricate(:user) - Fabricate(:webauthn_credential, user_id: user.id, nickname: 'USB Key') - new_webauthn_credential = Fabricate.build(:webauthn_credential, user_id: user.id, nickname: 'USB Key') - - new_webauthn_credential.valid? - - expect(new_webauthn_credential).to model_have_error_on_field(:nickname) - end - - it 'is invalid if sign_count is not a number' do - webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: 'invalid sign_count') - - webauthn_credential.valid? - - expect(webauthn_credential).to model_have_error_on_field(:sign_count) - end - - it 'is invalid if sign_count is negative number' do - webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: -1) - - webauthn_credential.valid? - - expect(webauthn_credential).to model_have_error_on_field(:sign_count) - end - - it 'is invalid if sign_count is greater than the limit' do - webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: (described_class::SIGN_COUNT_LIMIT * 2)) - - webauthn_credential.valid? - - expect(webauthn_credential).to model_have_error_on_field(:sign_count) - end + it { is_expected.to validate_numericality_of(:sign_count).only_integer.is_greater_than_or_equal_to(0).is_less_than_or_equal_to(described_class::SIGN_COUNT_LIMIT - 1) } end end From 2e3bbb6861553f624ef2dc01d46620638ff6b33b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 03:58:41 -0400 Subject: [PATCH 247/550] Move account suspension related coverage to concern spec (#32432) --- spec/models/account_spec.rb | 66 ------------------- .../concerns/account/suspensions_spec.rb | 65 ++++++++++++++++++ 2 files changed, 65 insertions(+), 66 deletions(-) create mode 100644 spec/models/concerns/account/suspensions_spec.rb diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index bd897a2999..7a5deed599 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -10,64 +10,6 @@ RSpec.describe Account do let(:bob) { Fabricate(:account, username: 'bob') } - describe '#suspended_locally?' do - context 'when the account is not suspended' do - it 'returns false' do - expect(subject.suspended_locally?).to be false - end - end - - context 'when the account is suspended locally' do - before do - subject.update!(suspended_at: 1.day.ago, suspension_origin: :local) - end - - it 'returns true' do - expect(subject.suspended_locally?).to be true - end - end - - context 'when the account is suspended remotely' do - before do - subject.update!(suspended_at: 1.day.ago, suspension_origin: :remote) - end - - it 'returns false' do - expect(subject.suspended_locally?).to be false - end - end - end - - describe '#suspend!' do - it 'marks the account as suspended and creates a deletion request' do - expect { subject.suspend! } - .to change(subject, :suspended?).from(false).to(true) - .and change(subject, :suspended_locally?).from(false).to(true) - .and(change { AccountDeletionRequest.exists?(account: subject) }.from(false).to(true)) - end - - context 'when the account is of a local user' do - subject { local_user_account } - - let!(:local_user_account) { Fabricate(:user, email: 'foo+bar@domain.org').account } - - it 'creates a canonical domain block' do - subject.suspend! - expect(CanonicalEmailBlock.block?(subject.user_email)).to be true - end - - context 'when a canonical domain block already exists for that email' do - before do - Fabricate(:canonical_email_block, email: subject.user_email) - end - - it 'does not raise an error' do - expect { subject.suspend! }.to_not raise_error - end - end - end - end - describe '#follow!' do it 'creates a follow' do follow = subject.follow!(bob) @@ -1049,14 +991,6 @@ RSpec.describe Account do end end - describe 'suspended' do - it 'returns an array of accounts who are suspended' do - suspended_account = Fabricate(:account, suspended: true) - _account = Fabricate(:account, suspended: false) - expect(described_class.suspended).to contain_exactly(suspended_account) - end - end - describe 'searchable' do let!(:suspended_local) { Fabricate(:account, suspended: true, username: 'suspended_local') } let!(:suspended_remote) { Fabricate(:account, suspended: true, domain: 'example.org', username: 'suspended_remote') } diff --git a/spec/models/concerns/account/suspensions_spec.rb b/spec/models/concerns/account/suspensions_spec.rb new file mode 100644 index 0000000000..3d71f1b723 --- /dev/null +++ b/spec/models/concerns/account/suspensions_spec.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Account::Suspensions do + subject { Fabricate(:account) } + + describe '.suspended' do + let!(:suspended_account) { Fabricate :account, suspended: true } + + before { Fabricate :account, suspended: false } + + it 'returns accounts that are suspended' do + expect(Account.suspended) + .to contain_exactly(suspended_account) + end + end + + describe '#suspended_locally?' do + context 'when the account is not suspended' do + it { is_expected.to_not be_suspended_locally } + end + + context 'when the account is suspended locally' do + before { subject.update!(suspended_at: 1.day.ago, suspension_origin: :local) } + + it { is_expected.to be_suspended_locally } + end + + context 'when the account is suspended remotely' do + before { subject.update!(suspended_at: 1.day.ago, suspension_origin: :remote) } + + it { is_expected.to_not be_suspended_locally } + end + end + + describe '#suspend!' do + it 'marks the account as suspended and creates a deletion request' do + expect { subject.suspend! } + .to change(subject, :suspended?).from(false).to(true) + .and change(subject, :suspended_locally?).from(false).to(true) + .and(change { AccountDeletionRequest.exists?(account: subject) }.from(false).to(true)) + end + + context 'when the account is of a local user' do + subject { local_user_account } + + let!(:local_user_account) { Fabricate(:user, email: 'foo+bar@domain.org').account } + + it 'creates a canonical domain block' do + expect { subject.suspend! } + .to change { CanonicalEmailBlock.block?(subject.user_email) }.from(false).to(true) + end + + context 'when a canonical domain block already exists for that email' do + before { Fabricate(:canonical_email_block, email: subject.user_email) } + + it 'does not raise an error' do + expect { subject.suspend! } + .to_not raise_error + end + end + end + end +end From 2a13d6824c4e390b16e2f2d4cd18e4bfd93e0166 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 03:59:31 -0400 Subject: [PATCH 248/550] Use `subject` for `FeedManager` lib spec (#32486) --- spec/lib/feed_manager_spec.rb | 160 +++++++++++++++++----------------- 1 file changed, 81 insertions(+), 79 deletions(-) diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 679309bd11..1d70499674 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -3,6 +3,8 @@ require 'rails_helper' RSpec.describe FeedManager do + subject { described_class.instance } + before do |example| unless example.metadata[:skip_stub] stub_const 'FeedManager::MAX_ITEMS', 10 @@ -32,26 +34,26 @@ RSpec.describe FeedManager do it 'returns false for followee\'s status' do status = Fabricate(:status, text: 'Hello world', account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, status, bob)).to be false + expect(subject.filter?(:home, status, bob)).to be false end it 'returns false for reblog by followee' do status = Fabricate(:status, text: 'Hello world', account: jeff) reblog = Fabricate(:status, reblog: status, account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, reblog, bob)).to be false + expect(subject.filter?(:home, reblog, bob)).to be false end it 'returns true for post from account who blocked me' do status = Fabricate(:status, text: 'Hello, World', account: alice) alice.block!(bob) - expect(described_class.instance.filter?(:home, status, bob)).to be true + expect(subject.filter?(:home, status, bob)).to be true end it 'returns true for post from blocked account' do status = Fabricate(:status, text: 'Hello, World', account: alice) bob.block!(alice) - expect(described_class.instance.filter?(:home, status, bob)).to be true + expect(subject.filter?(:home, status, bob)).to be true end it 'returns true for reblog by followee of blocked account' do @@ -59,7 +61,7 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: alice) bob.follow!(alice) bob.block!(jeff) - expect(described_class.instance.filter?(:home, reblog, bob)).to be true + expect(subject.filter?(:home, reblog, bob)).to be true end it 'returns true for reblog by followee of muted account' do @@ -67,7 +69,7 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: alice) bob.follow!(alice) bob.mute!(jeff) - expect(described_class.instance.filter?(:home, reblog, bob)).to be true + expect(subject.filter?(:home, reblog, bob)).to be true end it 'returns true for reblog by followee of someone who is blocking recipient' do @@ -75,14 +77,14 @@ RSpec.describe FeedManager do reblog = Fabricate(:status, reblog: status, account: alice) bob.follow!(alice) jeff.block!(bob) - expect(described_class.instance.filter?(:home, reblog, bob)).to be true + expect(subject.filter?(:home, reblog, bob)).to be true end it 'returns true for reblog from account with reblogs disabled' do status = Fabricate(:status, text: 'Hello world', account: jeff) reblog = Fabricate(:status, reblog: status, account: alice) bob.follow!(alice, reblogs: false) - expect(described_class.instance.filter?(:home, reblog, bob)).to be true + expect(subject.filter?(:home, reblog, bob)).to be true end it 'returns false for reply by followee to another followee' do @@ -90,49 +92,49 @@ RSpec.describe FeedManager do reply = Fabricate(:status, text: 'Nay', thread: status, account: alice) bob.follow!(alice) bob.follow!(jeff) - expect(described_class.instance.filter?(:home, reply, bob)).to be false + expect(subject.filter?(:home, reply, bob)).to be false end it 'returns false for reply by followee to recipient' do status = Fabricate(:status, text: 'Hello world', account: bob) reply = Fabricate(:status, text: 'Nay', thread: status, account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, reply, bob)).to be false + expect(subject.filter?(:home, reply, bob)).to be false end it 'returns false for reply by followee to self' do status = Fabricate(:status, text: 'Hello world', account: alice) reply = Fabricate(:status, text: 'Nay', thread: status, account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, reply, bob)).to be false + expect(subject.filter?(:home, reply, bob)).to be false end it 'returns true for reply by followee to non-followed account' do status = Fabricate(:status, text: 'Hello world', account: jeff) reply = Fabricate(:status, text: 'Nay', thread: status, account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, reply, bob)).to be true + expect(subject.filter?(:home, reply, bob)).to be true end it 'returns true for the second reply by followee to a non-federated status' do reply = Fabricate(:status, text: 'Reply 1', reply: true, account: alice) second_reply = Fabricate(:status, text: 'Reply 2', thread: reply, account: alice) bob.follow!(alice) - expect(described_class.instance.filter?(:home, second_reply, bob)).to be true + expect(subject.filter?(:home, second_reply, bob)).to be true end it 'returns false for status by followee mentioning another account' do bob.follow!(alice) jeff.follow!(alice) status = PostStatusService.new.call(alice, text: 'Hey @jeff') - expect(described_class.instance.filter?(:home, status, bob)).to be false + expect(subject.filter?(:home, status, bob)).to be false end it 'returns true for status by followee mentioning blocked account' do bob.block!(jeff) bob.follow!(alice) status = PostStatusService.new.call(alice, text: 'Hey @jeff') - expect(described_class.instance.filter?(:home, status, bob)).to be true + expect(subject.filter?(:home, status, bob)).to be true end it 'returns true for reblog of a personally blocked domain' do @@ -140,19 +142,19 @@ RSpec.describe FeedManager do alice.follow!(jeff) status = Fabricate(:status, text: 'Hello world', account: bob) reblog = Fabricate(:status, reblog: status, account: jeff) - expect(described_class.instance.filter?(:home, reblog, alice)).to be true + expect(subject.filter?(:home, reblog, alice)).to be true end it 'returns true for German post when follow is set to English only' do alice.follow!(bob, languages: %w(en)) status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') - expect(described_class.instance.filter?(:home, status, alice)).to be true + expect(subject.filter?(:home, status, alice)).to be true end it 'returns false for German post when follow is set to German' do alice.follow!(bob, languages: %w(de)) status = Fabricate(:status, text: 'Hallo Welt', account: bob, language: 'de') - expect(described_class.instance.filter?(:home, status, alice)).to be false + expect(subject.filter?(:home, status, alice)).to be false end it 'returns true for post from followee on exclusive list' do @@ -161,7 +163,7 @@ RSpec.describe FeedManager do list.accounts << bob allow(List).to receive(:where).and_return(list) status = Fabricate(:status, text: 'I post a lot', account: bob) - expect(described_class.instance.filter?(:home, status, alice)).to be true + expect(subject.filter?(:home, status, alice)).to be true end it 'returns true for reblog from followee on exclusive list' do @@ -171,7 +173,7 @@ RSpec.describe FeedManager do allow(List).to receive(:where).and_return(list) status = Fabricate(:status, text: 'I post a lot', account: bob) reblog = Fabricate(:status, reblog: status, account: jeff) - expect(described_class.instance.filter?(:home, reblog, alice)).to be true + expect(subject.filter?(:home, reblog, alice)).to be true end it 'returns false for post from followee on non-exclusive list' do @@ -179,7 +181,7 @@ RSpec.describe FeedManager do alice.follow!(bob) list.accounts << bob status = Fabricate(:status, text: 'I post a lot', account: bob) - expect(described_class.instance.filter?(:home, status, alice)).to be false + expect(subject.filter?(:home, status, alice)).to be false end it 'returns false for reblog from followee on non-exclusive list' do @@ -188,7 +190,7 @@ RSpec.describe FeedManager do list.accounts << jeff status = Fabricate(:status, text: 'I post a lot', account: bob) reblog = Fabricate(:status, reblog: status, account: jeff) - expect(described_class.instance.filter?(:home, reblog, alice)).to be false + expect(subject.filter?(:home, reblog, alice)).to be false end end @@ -196,27 +198,27 @@ RSpec.describe FeedManager do it 'returns true for status that mentions blocked account' do bob.block!(jeff) status = PostStatusService.new.call(alice, text: 'Hey @jeff') - expect(described_class.instance.filter?(:mentions, status, bob)).to be true + expect(subject.filter?(:mentions, status, bob)).to be true end it 'returns true for status that replies to a blocked account' do status = Fabricate(:status, text: 'Hello world', account: jeff) reply = Fabricate(:status, text: 'Nay', thread: status, account: alice) bob.block!(jeff) - expect(described_class.instance.filter?(:mentions, reply, bob)).to be true + expect(subject.filter?(:mentions, reply, bob)).to be true end it 'returns false for status by limited account who recipient is not following' do status = Fabricate(:status, text: 'Hello world', account: alice) alice.silence! - expect(described_class.instance.filter?(:mentions, status, bob)).to be false + expect(subject.filter?(:mentions, status, bob)).to be false end it 'returns false for status by followed limited account' do status = Fabricate(:status, text: 'Hello world', account: alice) alice.silence! bob.follow!(alice) - expect(described_class.instance.filter?(:mentions, status, bob)).to be false + expect(subject.filter?(:mentions, status, bob)).to be false end end end @@ -228,7 +230,7 @@ RSpec.describe FeedManager do members = Array.new(described_class::MAX_ITEMS) { |count| [count, count] } redis.zadd("feed:home:#{account.id}", members) - described_class.instance.push_to_home(account, status) + subject.push_to_home(account, status) expect(redis.zcard("feed:home:#{account.id}")).to eq described_class::MAX_ITEMS end @@ -239,7 +241,7 @@ RSpec.describe FeedManager do reblogged = Fabricate(:status) reblog = Fabricate(:status, reblog: reblogged) - expect(described_class.instance.push_to_home(account, reblog)).to be true + expect(subject.push_to_home(account, reblog)).to be true end it 'does not save a new reblog of a recent status' do @@ -247,9 +249,9 @@ RSpec.describe FeedManager do reblogged = Fabricate(:status) reblog = Fabricate(:status, reblog: reblogged) - described_class.instance.push_to_home(account, reblogged) + subject.push_to_home(account, reblogged) - expect(described_class.instance.push_to_home(account, reblog)).to be false + expect(subject.push_to_home(account, reblog)).to be false end it 'saves a new reblog of an old status' do @@ -257,14 +259,14 @@ RSpec.describe FeedManager do reblogged = Fabricate(:status) reblog = Fabricate(:status, reblog: reblogged) - described_class.instance.push_to_home(account, reblogged) + subject.push_to_home(account, reblogged) # Fill the feed with intervening statuses described_class::REBLOG_FALLOFF.times do - described_class.instance.push_to_home(account, Fabricate(:status)) + subject.push_to_home(account, Fabricate(:status)) end - expect(described_class.instance.push_to_home(account, reblog)).to be true + expect(subject.push_to_home(account, reblog)).to be true end it 'does not save a new reblog of a recently-reblogged status' do @@ -273,10 +275,10 @@ RSpec.describe FeedManager do reblogs = Array.new(2) { Fabricate(:status, reblog: reblogged) } # The first reblog will be accepted - described_class.instance.push_to_home(account, reblogs.first) + subject.push_to_home(account, reblogs.first) # The second reblog should be ignored - expect(described_class.instance.push_to_home(account, reblogs.last)).to be false + expect(subject.push_to_home(account, reblogs.last)).to be false end it 'saves a new reblog of a recently-reblogged status when previous reblog has been deleted' do @@ -285,15 +287,15 @@ RSpec.describe FeedManager do old_reblog = Fabricate(:status, reblog: reblogged) # The first reblog should be accepted - expect(described_class.instance.push_to_home(account, old_reblog)).to be true + expect(subject.push_to_home(account, old_reblog)).to be true # The first reblog should be successfully removed - expect(described_class.instance.unpush_from_home(account, old_reblog)).to be true + expect(subject.unpush_from_home(account, old_reblog)).to be true reblog = Fabricate(:status, reblog: reblogged) # The second reblog should be accepted - expect(described_class.instance.push_to_home(account, reblog)).to be true + expect(subject.push_to_home(account, reblog)).to be true end it 'does not save a new reblog of a multiply-reblogged-then-unreblogged status' do @@ -302,14 +304,14 @@ RSpec.describe FeedManager do reblogs = Array.new(3) { Fabricate(:status, reblog: reblogged) } # Accept the reblogs - described_class.instance.push_to_home(account, reblogs[0]) - described_class.instance.push_to_home(account, reblogs[1]) + subject.push_to_home(account, reblogs[0]) + subject.push_to_home(account, reblogs[1]) # Unreblog the first one - described_class.instance.unpush_from_home(account, reblogs[0]) + subject.unpush_from_home(account, reblogs[0]) # The last reblog should still be ignored - expect(described_class.instance.push_to_home(account, reblogs.last)).to be false + expect(subject.push_to_home(account, reblogs.last)).to be false end it 'saves a new reblog of a long-ago-reblogged status' do @@ -318,15 +320,15 @@ RSpec.describe FeedManager do reblogs = Array.new(2) { Fabricate(:status, reblog: reblogged) } # The first reblog will be accepted - described_class.instance.push_to_home(account, reblogs.first) + subject.push_to_home(account, reblogs.first) # Fill the feed with intervening statuses described_class::REBLOG_FALLOFF.times do - described_class.instance.push_to_home(account, Fabricate(:status)) + subject.push_to_home(account, Fabricate(:status)) end # The second reblog should also be accepted - expect(described_class.instance.push_to_home(account, reblogs.last)).to be true + expect(subject.push_to_home(account, reblogs.last)).to be true end end @@ -334,9 +336,9 @@ RSpec.describe FeedManager do account = Fabricate(:account) reblog = Fabricate(:status) status = Fabricate(:status, reblog: reblog) - described_class.instance.push_to_home(account, status) + subject.push_to_home(account, status) - expect(described_class.instance.push_to_home(account, reblog)).to be false + expect(subject.push_to_home(account, reblog)).to be false end end @@ -359,9 +361,9 @@ RSpec.describe FeedManager do it "does not push when the given status's reblog is already inserted" do reblog = Fabricate(:status) status = Fabricate(:status, reblog: reblog) - described_class.instance.push_to_list(list, status) + subject.push_to_list(list, status) - expect(described_class.instance.push_to_list(list, reblog)).to be false + expect(subject.push_to_list(list, reblog)).to be false end context 'when replies policy is set to no replies' do @@ -371,19 +373,19 @@ RSpec.describe FeedManager do it 'pushes statuses that are not replies' do status = Fabricate(:status, text: 'Hello world', account: bob) - expect(described_class.instance.push_to_list(list, status)).to be true + expect(subject.push_to_list(list, status)).to be true end it 'pushes statuses that are replies to list owner' do status = Fabricate(:status, text: 'Hello world', account: owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end it 'does not push replies to another member of the list' do status = Fabricate(:status, text: 'Hello world', account: alice) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be false + expect(subject.push_to_list(list, reply)).to be false end end @@ -394,25 +396,25 @@ RSpec.describe FeedManager do it 'pushes statuses that are not replies' do status = Fabricate(:status, text: 'Hello world', account: bob) - expect(described_class.instance.push_to_list(list, status)).to be true + expect(subject.push_to_list(list, status)).to be true end it 'pushes statuses that are replies to list owner' do status = Fabricate(:status, text: 'Hello world', account: owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end it 'pushes replies to another member of the list' do status = Fabricate(:status, text: 'Hello world', account: alice) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end it 'does not push replies to someone not a member of the list' do status = Fabricate(:status, text: 'Hello world', account: eve) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be false + expect(subject.push_to_list(list, reply)).to be false end end @@ -423,25 +425,25 @@ RSpec.describe FeedManager do it 'pushes statuses that are not replies' do status = Fabricate(:status, text: 'Hello world', account: bob) - expect(described_class.instance.push_to_list(list, status)).to be true + expect(subject.push_to_list(list, status)).to be true end it 'pushes statuses that are replies to list owner' do status = Fabricate(:status, text: 'Hello world', account: owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end it 'pushes replies to another member of the list' do status = Fabricate(:status, text: 'Hello world', account: alice) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end it 'pushes replies to someone not a member of the list' do status = Fabricate(:status, text: 'Hello world', account: eve) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) - expect(described_class.instance.push_to_list(list, reply)).to be true + expect(subject.push_to_list(list, reply)).to be true end end end @@ -451,9 +453,9 @@ RSpec.describe FeedManager do account = Fabricate(:account, id: 0) reblog = Fabricate(:status) status = Fabricate(:status, reblog: reblog) - described_class.instance.push_to_home(account, status) + subject.push_to_home(account, status) - described_class.instance.merge_into_home(account, reblog.account) + subject.merge_into_home(account, reblog.account) expect(redis.zscore('feed:home:0', reblog.id)).to be_nil end @@ -466,14 +468,14 @@ RSpec.describe FeedManager do reblogged = Fabricate(:status) status = Fabricate(:status, reblog: reblogged) - described_class.instance.push_to_home(receiver, reblogged) - described_class::REBLOG_FALLOFF.times { described_class.instance.push_to_home(receiver, Fabricate(:status)) } - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, reblogged) + described_class::REBLOG_FALLOFF.times { subject.push_to_home(receiver, Fabricate(:status)) } + subject.push_to_home(receiver, status) # The reblogging status should show up under normal conditions. expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to include(status.id.to_s) - described_class.instance.unpush_from_home(receiver, status) + subject.unpush_from_home(receiver, status) # Restore original status expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to_not include(status.id.to_s) @@ -484,12 +486,12 @@ RSpec.describe FeedManager do reblogged = Fabricate(:status) status = Fabricate(:status, reblog: reblogged) - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, status) # The reblogging status should show up under normal conditions. expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to eq [status.id.to_s] - described_class.instance.unpush_from_home(receiver, status) + subject.unpush_from_home(receiver, status) expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to be_empty end @@ -499,14 +501,14 @@ RSpec.describe FeedManager do reblogs = Array.new(3) { Fabricate(:status, reblog: reblogged) } reblogs.each do |reblog| - described_class.instance.push_to_home(receiver, reblog) + subject.push_to_home(receiver, reblog) end # The reblogging status should show up under normal conditions. expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to eq [reblogs.first.id.to_s] reblogs[0...-1].each do |reblog| - described_class.instance.unpush_from_home(receiver, reblog) + subject.unpush_from_home(receiver, reblog) end expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to eq [reblogs.last.id.to_s] @@ -515,10 +517,10 @@ RSpec.describe FeedManager do it 'sends push updates' do status = Fabricate(:status) - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, status) allow(redis).to receive_messages(publish: nil) - described_class.instance.unpush_from_home(receiver, status) + subject.unpush_from_home(receiver, status) deletion = Oj.dump(event: :delete, payload: status.id.to_s) expect(redis).to have_received(:publish).with("timeline:#{receiver.id}", deletion) @@ -532,9 +534,9 @@ RSpec.describe FeedManager do it 'leaves a tagged status' do status = Fabricate(:status) status.tags << tag - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, status) - described_class.instance.unmerge_tag_from_home(tag, receiver) + subject.unmerge_tag_from_home(tag, receiver) expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to_not include(status.id.to_s) end @@ -545,9 +547,9 @@ RSpec.describe FeedManager do status = Fabricate(:status, account: followee) status.tags << tag - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, status) - described_class.instance.unmerge_tag_from_home(tag, receiver) + subject.unmerge_tag_from_home(tag, receiver) expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to include(status.id.to_s) end @@ -555,9 +557,9 @@ RSpec.describe FeedManager do it 'remains a tagged status written by receiver' do status = Fabricate(:status, account: receiver) status.tags << tag - described_class.instance.push_to_home(receiver, status) + subject.push_to_home(receiver, status) - described_class.instance.unmerge_tag_from_home(tag, receiver) + subject.unmerge_tag_from_home(tag, receiver) expect(redis.zrange("feed:home:#{receiver.id}", 0, -1)).to include(status.id.to_s) end @@ -588,7 +590,7 @@ RSpec.describe FeedManager do end it 'correctly cleans the home timeline' do - described_class.instance.clear_from_home(account, target_account) + subject.clear_from_home(account, target_account) expect(redis.zrange("feed:home:#{account.id}", 0, -1)).to eq [status_from_followed_account_first.id.to_s, status_from_followed_account_next.id.to_s] end From 86132f7dd3d41d777090d283b83d371246e0220e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 04:00:58 -0400 Subject: [PATCH 249/550] Provide `establish_policy` helper method in `AccountStatusesCleanupPolicy` spec (#32490) --- .../account_statuses_cleanup_policy_spec.rb | 91 ++++++------------- 1 file changed, 27 insertions(+), 64 deletions(-) diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb index c142a0359a..114ebb38fe 100644 --- a/spec/models/account_statuses_cleanup_policy_spec.rb +++ b/spec/models/account_statuses_cleanup_policy_spec.rb @@ -339,14 +339,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep DMs and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = true - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy(keep_direct: true) } it 'returns every old status except does not return the old direct message for deletion' do expect(subject.pluck(:id)) @@ -356,14 +349,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep self-bookmarked toots and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = true - end + before { establish_policy(keep_self_bookmark: true) } it 'returns every old status but does not return the old self-bookmarked message for deletion' do expect(subject.pluck(:id)) @@ -373,14 +359,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep self-faved toots and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = true - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy(keep_self_fav: true) } it 'returns every old status but does not return the old self-faved message for deletion' do expect(subject.pluck(:id)) @@ -390,14 +369,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep toots with media and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = true - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy(keep_media: true) } it 'returns every old status but does not return the old message with media for deletion' do expect(subject.pluck(:id)) @@ -407,14 +379,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep toots with polls and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = true - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy(keep_polls: true) } it 'returns every old status but does not return the old poll message for deletion' do expect(subject.pluck(:id)) @@ -424,14 +389,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep pinned toots and reject everything else' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = true - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy(keep_pinned: true) } it 'returns every old status but does not return the old pinned message for deletion' do expect(subject.pluck(:id)) @@ -441,14 +399,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is to not keep any special messages' do - before do - account_statuses_cleanup_policy.keep_direct = false - account_statuses_cleanup_policy.keep_pinned = false - account_statuses_cleanup_policy.keep_polls = false - account_statuses_cleanup_policy.keep_media = false - account_statuses_cleanup_policy.keep_self_fav = false - account_statuses_cleanup_policy.keep_self_bookmark = false - end + before { establish_policy } it 'returns every old status but does not return the recent or unrelated statuses' do expect(subject.pluck(:id)) @@ -459,14 +410,7 @@ RSpec.describe AccountStatusesCleanupPolicy do end context 'when policy is set to keep every category of toots' do - before do - account_statuses_cleanup_policy.keep_direct = true - account_statuses_cleanup_policy.keep_pinned = true - account_statuses_cleanup_policy.keep_polls = true - account_statuses_cleanup_policy.keep_media = true - account_statuses_cleanup_policy.keep_self_fav = true - account_statuses_cleanup_policy.keep_self_bookmark = true - end + before { establish_policy(keep_direct: true, keep_pinned: true, keep_polls: true, keep_media: true, keep_self_fav: true, keep_self_bookmark: true) } it 'returns normal statuses and does not return unrelated old status' do expect(subject.pluck(:id)) @@ -502,5 +446,24 @@ RSpec.describe AccountStatusesCleanupPolicy do .and include(very_old_status.id, faved_primary.id, reblogged_primary.id, reblogged_secondary.id) end end + + private + + def establish_policy(options = {}) + default_policy_options.merge(options).each do |attribute, value| + account_statuses_cleanup_policy.send :"#{attribute}=", value + end + end + + def default_policy_options + { + keep_direct: false, + keep_media: false, + keep_pinned: false, + keep_polls: false, + keep_self_bookmark: false, + keep_self_fav: false, + } + end end end From 15f6336cddcf342ad7c6b79e443d1a39bee3f7a1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 04:02:13 -0400 Subject: [PATCH 250/550] Simplify model validation specs for `AccountMigration` (#32494) --- spec/models/account_migration_spec.rb | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/spec/models/account_migration_spec.rb b/spec/models/account_migration_spec.rb index d658915ce3..b92771e8f5 100644 --- a/spec/models/account_migration_spec.rb +++ b/spec/models/account_migration_spec.rb @@ -9,8 +9,8 @@ RSpec.describe AccountMigration do end end - describe 'validations' do - subject { described_class.new(account: source_account, acct: target_acct) } + describe 'Validations' do + subject { Fabricate.build :account_migration, account: source_account } let(:source_account) { Fabricate(:account) } let(:target_acct) { target_account.acct } @@ -26,9 +26,7 @@ RSpec.describe AccountMigration do allow(service_double).to receive(:call).with(target_acct, anything).and_return(target_account) end - it 'passes validations' do - expect(subject).to be_valid - end + it { is_expected.to allow_value(target_account.acct).for(:acct) } end context 'with unresolvable account' do @@ -40,17 +38,13 @@ RSpec.describe AccountMigration do allow(service_double).to receive(:call).with(target_acct, anything).and_return(nil) end - it 'has errors on acct field' do - expect(subject).to model_have_error_on_field(:acct) - end + it { is_expected.to_not allow_value(target_acct).for(:acct) } end context 'with a space in the domain part' do let(:target_acct) { 'target@remote. org' } - it 'has errors on acct field' do - expect(subject).to model_have_error_on_field(:acct) - end + it { is_expected.to_not allow_value(target_acct).for(:acct) } end end end From 66c047151572d126b815622a6f935f4c745b625e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 04:35:07 -0400 Subject: [PATCH 251/550] Enrich coverage for `IpBlock` model (#32471) --- app/models/ip_block.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index d6242efbf7..5ed4d2a846 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -36,9 +36,14 @@ class IpBlock < ApplicationRecord class << self def blocked?(remote_ip) - blocked_ips_map = Rails.cache.fetch(CACHE_KEY) { FastIpMap.new(IpBlock.where(severity: :no_access).pluck(:ip)) } blocked_ips_map.include?(remote_ip) end + + private + + def blocked_ips_map + Rails.cache.fetch(CACHE_KEY) { FastIpMap.new(severity_no_access.pluck(:ip)) } + end end private From 9464281f2964ca1d3d39f2ab72ed8f07e7900eca Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 04:41:24 -0400 Subject: [PATCH 252/550] Simplify model validation specs for `AccountStatusCleanupPolicy` (#32495) --- spec/models/account_statuses_cleanup_policy_spec.rb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb index 114ebb38fe..9bbbefa08e 100644 --- a/spec/models/account_statuses_cleanup_policy_spec.rb +++ b/spec/models/account_statuses_cleanup_policy_spec.rb @@ -5,13 +5,12 @@ require 'rails_helper' RSpec.describe AccountStatusesCleanupPolicy do let(:account) { Fabricate(:account, username: 'alice', domain: nil) } - describe 'validation' do - it 'disallow remote accounts' do - account.update(domain: 'example.com') - account_statuses_cleanup_policy = Fabricate.build(:account_statuses_cleanup_policy, account: account) - account_statuses_cleanup_policy.valid? - expect(account_statuses_cleanup_policy).to model_have_error_on_field(:account) - end + describe 'Validations' do + subject { Fabricate.build :account_statuses_cleanup_policy } + + let(:remote_account) { Fabricate(:account, domain: 'example.com') } + + it { is_expected.to_not allow_value(remote_account).for(:account) } end describe 'save hooks' do From 1775e151ecc93ee21c993303a6b51f89f24fd2d1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 25 Oct 2024 04:42:14 -0400 Subject: [PATCH 253/550] Simplify model validation specs for `DomainAllow` (#32496) --- spec/models/domain_allow_spec.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spec/models/domain_allow_spec.rb b/spec/models/domain_allow_spec.rb index d8f438f07e..fbb324657e 100644 --- a/spec/models/domain_allow_spec.rb +++ b/spec/models/domain_allow_spec.rb @@ -6,11 +6,10 @@ RSpec.describe DomainAllow do describe 'Validations' do it { is_expected.to validate_presence_of(:domain) } - it 'is invalid if the same normalized domain already exists' do - _domain_allow = Fabricate(:domain_allow, domain: 'にゃん') - domain_allow_with_normalized_value = Fabricate.build(:domain_allow, domain: 'xn--r9j5b5b') - domain_allow_with_normalized_value.valid? - expect(domain_allow_with_normalized_value).to model_have_error_on_field(:domain) + context 'when a normalized domain exists' do + before { Fabricate(:domain_allow, domain: 'にゃん') } + + it { is_expected.to_not allow_value('xn--r9j5b5b').for(:domain) } end end end From 0970cf818a5791206872703be8edcc9edb07edac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:04:53 +0200 Subject: [PATCH 254/550] Update dependency pg to v1.5.9 (#32655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f5264e8db2..cf60b23bc9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -591,7 +591,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.5.8) + pg (1.5.9) pghero (3.6.1) activerecord (>= 6.1) premailer (1.27.0) From 097942a291913b984e7bf86403e7506e52ce6dca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:15:22 +0200 Subject: [PATCH 255/550] Update dependency pg to v8.13.1 (#32650) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index baf0dec9ef..96c30cfe79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12971,8 +12971,8 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.13.0 - resolution: "pg@npm:8.13.0" + version: 8.13.1 + resolution: "pg@npm:8.13.1" dependencies: pg-cloudflare: "npm:^1.1.1" pg-connection-string: "npm:^2.7.0" @@ -12988,7 +12988,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/1521189063d2293d62f3fac61e797a3096a62a69668c223827d00b83c17a320805f31f0b5316feb80f8d9eed0c6c32f95146d8aca866af05816a66fd2ba8e32a + checksum: 10c0/c13bc661cbdb115337bc8519254836faf4bd79106dfd7ed588c8ece8c8b2dd3b7376bfec9a9a2f7646fa095b0b310cec77a83c3ba2ea4872331446eb93fd9055 languageName: node linkType: hard From 5f58357bbe73fde0ca9b0e0c07b35117bc6d2f96 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:15:46 +0200 Subject: [PATCH 256/550] Update opentelemetry-ruby (non-major) (#32631) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 4 ++-- Gemfile.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index 104fd266b8..6f4559b00f 100644 --- a/Gemfile +++ b/Gemfile @@ -111,8 +111,8 @@ group :opentelemetry do gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false gem 'opentelemetry-instrumentation-pg', '~> 0.29.0', require: false - gem 'opentelemetry-instrumentation-rack', '~> 0.24.1', require: false - gem 'opentelemetry-instrumentation-rails', '~> 0.31.0', require: false + gem 'opentelemetry-instrumentation-rack', '~> 0.25.0', require: false + gem 'opentelemetry-instrumentation-rails', '~> 0.32.0', require: false gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false gem 'opentelemetry-sdk', '~> 1.4', require: false diff --git a/Gemfile.lock b/Gemfile.lock index cf60b23bc9..8421f06588 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -504,7 +504,7 @@ GEM opentelemetry-semantic_conventions opentelemetry-helpers-sql-obfuscation (0.2.0) opentelemetry-common (~> 0.21) - opentelemetry-instrumentation-action_mailer (0.1.0) + opentelemetry-instrumentation-action_mailer (0.2.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.1) opentelemetry-instrumentation-base (~> 0.22.1) @@ -522,7 +522,7 @@ GEM opentelemetry-instrumentation-active_model_serializers (0.20.2) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_record (0.7.3) + opentelemetry-instrumentation-active_record (0.8.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_support (0.6.0) @@ -554,16 +554,16 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-helpers-sql-obfuscation opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.24.6) + opentelemetry-instrumentation-rack (0.25.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.31.2) + opentelemetry-instrumentation-rails (0.32.0) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-action_mailer (~> 0.1.0) + opentelemetry-instrumentation-action_mailer (~> 0.2.0) opentelemetry-instrumentation-action_pack (~> 0.9.0) opentelemetry-instrumentation-action_view (~> 0.7.0) opentelemetry-instrumentation-active_job (~> 0.7.0) - opentelemetry-instrumentation-active_record (~> 0.7.0) + opentelemetry-instrumentation-active_record (~> 0.8.0) opentelemetry-instrumentation-active_support (~> 0.6.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-redis (0.25.7) @@ -992,8 +992,8 @@ DEPENDENCIES opentelemetry-instrumentation-http_client (~> 0.22.3) opentelemetry-instrumentation-net_http (~> 0.22.4) opentelemetry-instrumentation-pg (~> 0.29.0) - opentelemetry-instrumentation-rack (~> 0.24.1) - opentelemetry-instrumentation-rails (~> 0.31.0) + opentelemetry-instrumentation-rack (~> 0.25.0) + opentelemetry-instrumentation-rails (~> 0.32.0) opentelemetry-instrumentation-redis (~> 0.25.3) opentelemetry-instrumentation-sidekiq (~> 0.25.2) opentelemetry-sdk (~> 1.4) From 60b0ad07714ecd4a361a47559e72ced43453cb4b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:17:22 +0000 Subject: [PATCH 257/550] Update dependency postcss-preset-env to v10.0.8 (#32647) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 519 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 269 insertions(+), 250 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96c30cfe79..3951c1c8cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1462,13 +1462,13 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/cascade-layer-name-parser@npm:2.0.2" +"@csstools/cascade-layer-name-parser@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.3" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-parser-algorithms": ^3.0.3 "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/2cc840445328400bb3e1e4186e6081e6519a23d9abde36a16c95892b6ad75155b3af3410d79fdda1c53a068384f970cabff4b5f5ba6867578168cbd3419016c8 + checksum: 10c0/a0f0d6c94122d0a82b0da94ee2619915a9e6e98211de6e1f28afebe34332a29cab1b7905a34b6e5c1df30a125df9f9860ce5fa960c676484417d4ef2c4db4757 languageName: node linkType: hard @@ -1479,35 +1479,35 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/css-calc@npm:2.0.2" +"@csstools/css-calc@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/css-calc@npm:2.0.3" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-parser-algorithms": ^3.0.3 "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/b36e655b4abc8ea39b300725e33cd43b1875d759dd60bee8155bf7841065615a7f24cf53199382e30aa10bb137f64021043e4af7e11b7199b674a6e6cf3ccd01 + checksum: 10c0/a3dacda66bde67edab0f2384e85462dcd46b5bb62bc2a6396f0577a006d9ad59eae270353cbd6fe1a5f7081d0546fe4b1fd9b2df242758da54ec8b7022296570 languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/css-color-parser@npm:3.0.3" +"@csstools/css-color-parser@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-color-parser@npm:3.0.4" dependencies: "@csstools/color-helpers": "npm:^5.0.1" - "@csstools/css-calc": "npm:^2.0.2" + "@csstools/css-calc": "npm:^2.0.3" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-parser-algorithms": ^3.0.3 "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/02367ffc222254132c47f9cbc856f65fe0b81ee4a5e7381251b95c4064138b5ed99a5e5a79c0c8689f9e75e3d900f94773258a161a97f467c3f0420838c10e04 + checksum: 10c0/8f05264254d3768e45e46ce10e9355fe8ca0f6e4d2f648a22572f46c6d05b2378c37c2e5d970ed3b7bdfa0b152ea2af0c56a0556249bd85973aee9db7b091aa7 languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/css-parser-algorithms@npm:3.0.2" +"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-parser-algorithms@npm:3.0.3" peerDependencies: "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/246afbf518ee9eaa24ed7f083360eb66884f1172fd4f8c663bff8c6099de2a8abd1e2a31d5b6fe42e010277d238469d780cff62bc7fdc6a52e7a90626b8924dc + checksum: 10c0/c1e634384affb10c3726a36f090867247005a2a470cb223de88debeab07921b78c0e7875e7847d90949c2b0ba88a290c71565f1839f7739c21a5bf1c870e137d languageName: node linkType: hard @@ -1528,82 +1528,82 @@ __metadata: languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/media-query-list-parser@npm:4.0.0" +"@csstools/media-query-list-parser@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/media-query-list-parser@npm:4.0.1" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.2 + "@csstools/css-parser-algorithms": ^3.0.3 "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/416417bcfd84c18a2df8dc77f31c87830e151dc20530fe7f0d8f13a0848b1a9090858abdf7792d82bf2edb41ddedb7b57b34eb78b68b5c10755ae02c019e496a + checksum: 10c0/037f57520b6ca7d58ba1d71a477bd99bdbe3a6d8e7b972ed0f436d649e574f5b429e54fc47d0272daa2ac24ffb819bd9d260a90e154c4a265b8ee4d1cfb1d279 languageName: node linkType: hard -"@csstools/postcss-cascade-layers@npm:^5.0.0": - version: 5.0.0 - resolution: "@csstools/postcss-cascade-layers@npm:5.0.0" +"@csstools/postcss-cascade-layers@npm:^5.0.1": + version: 5.0.1 + resolution: "@csstools/postcss-cascade-layers@npm:5.0.1" dependencies: - "@csstools/selector-specificity": "npm:^4.0.0" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b608c69c12671682676598e451dcd79bfc6f5030a4e17b4d1bf9659e531f1daf03526be023f9aafdc952ecc87c87b04f379a763309e3eadb2140572cd4aa5b60 + checksum: 10c0/5cc3c6f220d9216f7ab16e716a20d6db845f127c917521e6236342bfa871accd63eb662a04c1e24a28e396412dcb47b1c4abccc490b88e4010cd704d14a702f1 languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-color-function@npm:4.0.3" +"@csstools/postcss-color-function@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-color-function@npm:4.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c994660ca0e2652755d9ad181c8cb46a07220c972086c97c843fa9bacf690be10c642770f898aeec4acc47c2b718dfc7372107285a678361f34d84d9e9c11e0c + checksum: 10c0/e7735c6d7c84f039c84dc1b180410aa4db7c404d55477c2e7872bc8306a3150bf37883583ec080ebd8b40b765f700cc78892d61dc167578f76e324543d551c04 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.3" +"@csstools/postcss-color-mix-function@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/4ba358eb9030fc485bfe2922d897eeb712725762cc399eaba60ba665c84dc3e56a4d5a52dfb320093c0b217d32fedb9b5197fa45738cade53d9afcbefdadf04f + checksum: 10c0/3e01f04853e49c9f69ee0538b817209b630649844039ee5b195cfbae94d41cf6e0d8a50a3d02dbe066f84855eefa1b7047f6750e4744858519978468577e567f languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-content-alt-text@npm:2.0.2" +"@csstools/postcss-content-alt-text@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.3" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e52d40f6567b9b23b32a6c40f9b2a74d57f99a9921b4cae015f51f72453474236c760bb13120682f8815698a615e0ad7bed22314c29dca89c34b5480d83a7a6d + checksum: 10c0/0389292a1ba11483f58db1bdd38cc774b0ec18c73f03d1db5f4a1f38edc861bb8b8d750b5c5b3615a98aaf995c0464dcfd6db5421888be0f868548c69455b5b3 languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.2" +"@csstools/postcss-exponential-functions@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.3" dependencies: - "@csstools/css-calc": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/034ff89089872f63a6b00bda670c5ff11361babd221ed3e441dde969a718059e5d44ab0ed331868f137bb205331b808ecbcc4cb641d5c945238ebca28aa3ed59 + checksum: 10c0/690ac6c5ec72e085160401100cc8465a040fd70d59efadf61ef767094edac28bbb2653f53ea7cfa47d8220d0be0b9e23c3e3c2b80d9e93ad07b1db8031163d70 languageName: node linkType: hard @@ -1619,46 +1619,46 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.3" +"@csstools/postcss-gamut-mapping@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/21f5708f63e9c3b7603f8b72b5f288e0a021e9710a6abf4aaa713ff4d04bae057d1861e1f28d7670ea39ba463ac04f1507876d4a11178934e7cc7a1c6a780084 + checksum: 10c0/60c6ff13cc71a0cda7ce184fa8b42924975f2bd05e3bc096059de853ae01d48e36f27d02d7e6286d9e8c4eb4dfd526f7c302ff51be19c5f7949dd6079915a3a9 languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.3": - version: 5.0.3 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.3" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.4": + version: 5.0.4 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/062d27148438309c940a1973bfc7d42a06caa9397bf2382c7a61979f5be3d6f3fae1bc8ddf94d2dd8e6c807e0530a9e76179510266aaddc439677bf79447a765 + checksum: 10c0/3b6aa4404851be09a083f35b596acc7e3f74f525386dcd2887720438638ca1893f79e699e5dad0e3a35487cb9527e08d0dcd29f1331f87800f53c13423321d6e languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-hwb-function@npm:4.0.3" +"@csstools/postcss-hwb-function@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-hwb-function@npm:4.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/faf2bfbafeec765391e37c7a5cbc7b4647d9ab1ffa51e922c7dfffa545c3d436d15604dfdfb9d7684e760042e62bb42e0243dd4ebd8c3c14694a9f7be4e57b30 + checksum: 10c0/2460cc7e6324f0793d12976de175ff33344c3410ff7a04ca8a5ce0560ee3354d1d8034f9f07c0759c2b7e222a4681d02298f6a29c2a326c76b33060830da83b4 languageName: node linkType: hard @@ -1684,29 +1684,29 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^5.0.0": - version: 5.0.0 - resolution: "@csstools/postcss-is-pseudo-class@npm:5.0.0" +"@csstools/postcss-is-pseudo-class@npm:^5.0.1": + version: 5.0.1 + resolution: "@csstools/postcss-is-pseudo-class@npm:5.0.1" dependencies: - "@csstools/selector-specificity": "npm:^4.0.0" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/738eb84728b24bfe19ca06ccf6ff773a423552df2f31c87704ce79da4abfd2ccf2a45d5d6d3e11e71e42cc3d92eb35a856209b9cd6116c879acf15ac75454683 + checksum: 10c0/3aaab18ebb2dcf5565efa79813eaa987d40de1e086765358524392a09631c68ad1ee952e6aff8f42513b2c18ab84891787e065fe287f696128498fc641520b6c languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.5": - version: 2.0.5 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.5" +"@csstools/postcss-light-dark-function@npm:^2.0.6": + version: 2.0.6 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.6" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/80635ee312d2a8f42aa5ce6792f1dc4a71199c384c66a3270d37e998d96db55beaa6836d689cda3b7e4828227960582fae04659ba5e4e0f64fd4543cbf15c6ab + checksum: 10c0/f3e93b58a23f0f01c9d032a892070a18e3393e60997e1d2b57c5bddb2cb36f7ee6cbaeaeb3d531b065a545a03e54d86567d34b45eddf85ed48ac360eb4ab66cd languageName: node linkType: hard @@ -1760,30 +1760,30 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.2": - version: 2.0.2 - resolution: "@csstools/postcss-media-minmax@npm:2.0.2" +"@csstools/postcss-media-minmax@npm:^2.0.3": + version: 2.0.3 + resolution: "@csstools/postcss-media-minmax@npm:2.0.3" dependencies: - "@csstools/css-calc": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.0" + "@csstools/media-query-list-parser": "npm:^4.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/83cf10742884fca3baa7ae26e2cb34123ce5a022622390566c139b4587ea8583fab00acbb85545786b36398e2201d2a94301e0fae805e55f375f1b5c38f67ce8 + checksum: 10c0/87c1ed6fe6ed487125e383ae7bc356ba0f68885c41cd129b85c323af69255031a8ac7b2e994d4f9b6b65d6a9f6833aeb1301ca230b592547825aedb3e3acab4b languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.2" +"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.3" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.0" + "@csstools/media-query-list-parser": "npm:^4.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/3ac4073d2e958bfb24ae45f673070dd805f0fcf07bc8d00a9a98f596d1096e7be282c8d8e87df3abde90f33fcbe2c7705e972b8c1a58e43ec44729f470b76096 + checksum: 10c0/3bbadd5c79ff2102b4a2e0f107d7f3cbb89d2840b935915531d0a1bfc711d58386e6e234fccb9b4abb37e48f07cdfaa4dd66b5c795dfac9e317fa8b5cfd38e06 languageName: node linkType: hard @@ -1810,18 +1810,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-oklab-function@npm:4.0.3" +"@csstools/postcss-oklab-function@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-oklab-function@npm:4.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/650bcb4f664308972588a8f789f806d63c4069e2e008cfc3b5c80bf9df992c62972dce279b8f434c7f78823e97095942ee4f0e37bc549258887213e72acb7ef8 + checksum: 10c0/4fd2a5c22ebaf69053e005d9d009ccb41b6879f0246677159bfb6a28208e90af857446c443d34fe3efdaf50bccdd67b16fcd0c1e7c52961396a48bd84e45311f languageName: node linkType: hard @@ -1836,42 +1836,42 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.3" +"@csstools/postcss-relative-color-syntax@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c241fe6b725d775f6d2085be1dff3868d189b176fa91ab1eb1133e30e30c8151bded4e50d17a845edd0bdd0a7adf9e8883cb2634fea3394872591fe9ad2a7e86 + checksum: 10c0/f2ae6f9053e976e2431d08bdc5aa40ca5242754e23370abdfd7b6087d7ed56037e46911d1be801cf7e760aa8aee94bcab6a46f4f68696cf6befacf707c1534b7 languageName: node linkType: hard -"@csstools/postcss-scope-pseudo-class@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-scope-pseudo-class@npm:4.0.0" +"@csstools/postcss-scope-pseudo-class@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-scope-pseudo-class@npm:4.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/a6f562df1417c6f257c0fec95babf4cea99a25622573a2dbcfb416e2fcb8e1e53561127f5e7277d19fcb2a4603bdbc64dd6a4c416429623503c604050c99229a + checksum: 10c0/6a0ca50fae655f4498200d1ce298ca794c85fbe2e3fd5d6419843254f055df5007a973e09b5f1e78e376c02b54278e411516c8d824300c68b265d3e5b311d7ee languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.2" +"@csstools/postcss-stepped-value-functions@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.3" dependencies: - "@csstools/css-calc": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/444a27d725bc7a8e1554469e8ac69e248ff525b728fbe058523b0f1aefcff80ca707f543d21fead0a22d51603b1669190fb01f0f2dcd599a01768a37e0d62bc3 + checksum: 10c0/31af5a650d4b2de97d3a3ef77e7ad0777b3f013f7463e23455ac31ffc946d2f79f365a1fdead52c7c535176232ab57f6f086ecdbeca1bb0b250161b1302e8c8c languageName: node linkType: hard @@ -1887,16 +1887,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.2": - version: 4.0.2 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.2" +"@csstools/postcss-trigonometric-functions@npm:^4.0.3": + version: 4.0.3 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.3" dependencies: - "@csstools/css-calc": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/eaecb2ea891162e4fcbbccf4f660c99e9e59f21937b70fe6aec3b51441eff2a12c1a2dc13fff426722629a7929919fd866311eaa68d74ee9d1f5387a23502fe2 + checksum: 10c0/a13dd72c00e45e6db16c03e135f1cd1b2b412e83b7681696b49feef3a4c36ab80f5f806f3589d33405e2d14dd0dfb13572ec12007ebe3d294077b0bd3d645b2b languageName: node linkType: hard @@ -1909,12 +1909,12 @@ __metadata: languageName: node linkType: hard -"@csstools/selector-resolve-nested@npm:^2.0.0": - version: 2.0.0 - resolution: "@csstools/selector-resolve-nested@npm:2.0.0" +"@csstools/selector-resolve-nested@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/selector-resolve-nested@npm:3.0.0" peerDependencies: - postcss-selector-parser: ^6.1.0 - checksum: 10c0/10516fd1db5e0a3963063caa57d24eeb1d1f69fcb63f0b5aec5d7a44f8b36ff07b1eded3012e8a9b92fc1f484e1a5a9def0cf57d788aa7f944ee79877837cc77 + postcss-selector-parser: ^7.0.0 + checksum: 10c0/2b01c36b3fa81388d5bddd8db962766465d76b021a815c8bb5a48c3a42c530154cc155fc496707ade627dbba6745eb8ecd9fa840c1972133c0f7d8811e0a959d languageName: node linkType: hard @@ -1927,6 +1927,15 @@ __metadata: languageName: node linkType: hard +"@csstools/selector-specificity@npm:^5.0.0": + version: 5.0.0 + resolution: "@csstools/selector-specificity@npm:5.0.0" + peerDependencies: + postcss-selector-parser: ^7.0.0 + checksum: 10c0/186b444cabcdcdeb553bfe021f80c58bfe9ef38dcc444f2b1f34a5aab9be063ab4e753022b2d5792049c041c28cfbb78e4b707ec398459300e402030d35c07eb + languageName: node + linkType: hard + "@csstools/utilities@npm:^2.0.0": version: 2.0.0 resolution: "@csstools/utilities@npm:2.0.0" @@ -6493,14 +6502,14 @@ __metadata: languageName: node linkType: hard -"css-blank-pseudo@npm:^7.0.0": - version: 7.0.0 - resolution: "css-blank-pseudo@npm:7.0.0" +"css-blank-pseudo@npm:^7.0.1": + version: 7.0.1 + resolution: "css-blank-pseudo@npm:7.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/74c6c0af773a8d2c8c5a53bcfc2b2c06f9c3fd4a8bd756b7aafc102b91a1060b179a4f0aa21475b54685b62bfd9724fee90778dd992b42e0cd3ea3698132af92 + checksum: 10c0/46c3d3a611972fdb0c264db7c0b34fe437bc4300961d11945145cf04962f52a545a6ef55bc8ff4afd82b605bd692b4970f2b54582616dea00441105e725d4618 languageName: node linkType: hard @@ -6520,16 +6529,16 @@ __metadata: languageName: node linkType: hard -"css-has-pseudo@npm:^7.0.0": - version: 7.0.0 - resolution: "css-has-pseudo@npm:7.0.0" +"css-has-pseudo@npm:^7.0.1": + version: 7.0.1 + resolution: "css-has-pseudo@npm:7.0.1" dependencies: - "@csstools/selector-specificity": "npm:^4.0.0" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2c72602ca9bcdb3afe2cce3b014e7dd17548658904c17560042ebf4bd6727b1ed8706961b1f44bff43bbdb8dc932c30a0b29f536c353df858e300e68e163b872 + checksum: 10c0/13789b08b70169204be786d652190356ace9313099d3656bd2fc38afbdd28f3d9620f0e0b07425480961b7a1ec789794961d0472f205b959d3f64c9a78ce511c languageName: node linkType: hard @@ -6665,10 +6674,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^8.1.1": - version: 8.1.1 - resolution: "cssdb@npm:8.1.1" - checksum: 10c0/d60facfad3bca70e21100fc35b9205cb9d3d0ac642f44f0a687e54bf787f21c43d28ce2d17fcd405f67950fb4709516108fe1f3cb15df570eff1007b5fbbc787 +"cssdb@npm:^8.1.2": + version: 8.1.2 + resolution: "cssdb@npm:8.1.2" + checksum: 10c0/056149e713a78921f56d9ef0cd734577cedb93c27966c3d0eab01956a2aa8d3c260a911766064b57ded8b4d9c55dd5275626cbb022ccd8d2d0b93b53fefd1603 languageName: node linkType: hard @@ -13184,14 +13193,14 @@ __metadata: languageName: node linkType: hard -"postcss-attribute-case-insensitive@npm:^7.0.0": - version: 7.0.0 - resolution: "postcss-attribute-case-insensitive@npm:7.0.0" +"postcss-attribute-case-insensitive@npm:^7.0.1": + version: 7.0.1 + resolution: "postcss-attribute-case-insensitive@npm:7.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/ce2a96bc29f59a6113953f1f72bfa2d4d34e54b194ff4d49aad0d548aa738835afaf479f22060a2605952b842f63aeae278b44e41f8f3a05731df28d08e2df97 + checksum: 10c0/48945abe2024e2d2e4c37d30b8c1aaf37af720f24f6a996f7ea7e7ed33621f5c22cf247ed22028c0c922de040c58c0802729bc39b903cb1693f4b63c0b49da34 languageName: node linkType: hard @@ -13218,18 +13227,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-color-functional-notation@npm:7.0.3" +"postcss-color-functional-notation@npm:^7.0.4": + version: 7.0.4 + resolution: "postcss-color-functional-notation@npm:7.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5e04c81002512c960784043c096bc91ebc76b8fddb9259a2418b0e121eb65042944cc0f78946f6b7e5774ff1fee087849019655e4848af1f88879e3ab9ff7c17 + checksum: 10c0/1e39c47f27610ebf6a6308cfea2904fbe1f157b13654325ada23153a944666722c6132b53dfc7660632406a636479dda68eeb97a246c2e593ad6eed1e9bf838d languageName: node linkType: hard @@ -13283,57 +13292,57 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.3": - version: 11.0.3 - resolution: "postcss-custom-media@npm:11.0.3" +"postcss-custom-media@npm:^11.0.4": + version: 11.0.4 + resolution: "postcss-custom-media@npm:11.0.4" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.0" + "@csstools/media-query-list-parser": "npm:^4.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/bd3f0cf17d7422385d26afed510dc2acebb1d8c25fce13e2bbee1c49cdc7fe95ebe7f50b89ef0a88ebdd5f6826e89d99e26b905881ceff788df655670dba93d8 + checksum: 10c0/31e82e5802f6933a15f5fcf64ff41c8107af9c1d5dcba3c4422a6de3fac77bce9e3dc4ed2b79ae7f6ae460549c5da5a013669af05c1ae21549dbb09b66a9492d languageName: node linkType: hard -"postcss-custom-properties@npm:^14.0.2": - version: 14.0.2 - resolution: "postcss-custom-properties@npm:14.0.2" +"postcss-custom-properties@npm:^14.0.3": + version: 14.0.3 + resolution: "postcss-custom-properties@npm:14.0.3" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/ea2e0cb60c558bb1afb4e601dcc64a38e1b28e5df3e47b83b858fc12d909d0e3453013e6b368fc05a7db7098ffcdc702a30a92f1a3c0ef67dfb97bf089021f1a + checksum: 10c0/878ffd171ab9bbbba711930cf1b5bd48a12779e3b45d69f41366c2f65d84518f9338a92a277c0e390518c9e12272e06892cdc6575783bcdecfa6d26ebde3d043 languageName: node linkType: hard -"postcss-custom-selectors@npm:^8.0.2": - version: 8.0.2 - resolution: "postcss-custom-selectors@npm:8.0.2" +"postcss-custom-selectors@npm:^8.0.3": + version: 8.0.3 + resolution: "postcss-custom-selectors@npm:8.0.3" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.2" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.3" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/81673ffb0874f63c0f5e14315a5808259ec80ae8452aaf10d28112d30a9aaabbf61d13edb02f8be2965f44b943968c7eda051a1693da436ef157e77fcff0d752 + checksum: 10c0/3acdada43e385c23130f1dde41b189acc7739e5bbd14751ae28b2bd97b0d97f30c2a53da4f9558d108a893cc48717f76b28395a9ff38dcbbe3c3a1721ee4a68a languageName: node linkType: hard -"postcss-dir-pseudo-class@npm:^9.0.0": - version: 9.0.0 - resolution: "postcss-dir-pseudo-class@npm:9.0.0" +"postcss-dir-pseudo-class@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-dir-pseudo-class@npm:9.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/debae71bf508c0e494ebb1892ce6b3c1c4eeb6b23231180151a93920a12fec771815510cdec54db54605e090ae56af9f07c68ef6a61260d0c837adc719f9e1e4 + checksum: 10c0/da9d3387648c5c3161a653d354c8f3e70a299108df3977e8aa65cf10793e4dd58a2711b3426cd63716245b13584ca8d95adcd6e10e3c9adbc61d08743e2d8690 languageName: node linkType: hard @@ -13388,25 +13397,25 @@ __metadata: languageName: node linkType: hard -"postcss-focus-visible@npm:^10.0.0": - version: 10.0.0 - resolution: "postcss-focus-visible@npm:10.0.0" +"postcss-focus-visible@npm:^10.0.1": + version: 10.0.1 + resolution: "postcss-focus-visible@npm:10.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b86b825bac597092b300127c2686c0669ce0766165716ecda42f298f21ca69dda721e44917732cbcb2611a4ab650f1231bf8c5d4d07c9daefef815329251ae8a + checksum: 10c0/c5ecc8536a708a49a99d0abd68a88a160664e6c832c808db8edd9f0221e7017a258daa87e49daf2cb098cb037005d46cf492403c8c9c92ad8835d30adaccf665 languageName: node linkType: hard -"postcss-focus-within@npm:^9.0.0": - version: 9.0.0 - resolution: "postcss-focus-within@npm:9.0.0" +"postcss-focus-within@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-focus-within@npm:9.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/1d6f1b4f4d12e23a2824f394652d520942f00fd582d3016c933a492fe0ba38aaf26bc1855576878aaeaeda1d6fc38da39bb51e8e6470c50ef03f3ea9a286b3d1 + checksum: 10c0/d6ab49d2a7f33485a9e137dc77ec92c5619a3ec92e1e672734fc604853ff1f3c0c189085c12461614be4fcb03ea0347d91791a45986a18d50b5228d161eda57a languageName: node linkType: hard @@ -13440,18 +13449,18 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-lab-function@npm:7.0.3" +"postcss-lab-function@npm:^7.0.4": + version: 7.0.4 + resolution: "postcss-lab-function@npm:7.0.4" dependencies: - "@csstools/css-color-parser": "npm:^3.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.3" "@csstools/css-tokenizer": "npm:^3.0.2" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c50a73a9ed54b4194998c4627599d1f42074235f572edbbcdb0e00717f3ae2121dc8378d917792b281860c5650a617d923823da6f395515f610b5760d115354d + checksum: 10c0/79ce3cc20484aef0e0bbc2d18c8f91d7362226a3db52f06a931ac8e1c58ffbc60876c6439f364093e5f16ef92260a420230cfb2a9e7b95c6c11e6f7d57626260 languageName: node linkType: hard @@ -13608,16 +13617,16 @@ __metadata: languageName: node linkType: hard -"postcss-nesting@npm:^13.0.0": - version: 13.0.0 - resolution: "postcss-nesting@npm:13.0.0" +"postcss-nesting@npm:^13.0.1": + version: 13.0.1 + resolution: "postcss-nesting@npm:13.0.1" dependencies: - "@csstools/selector-resolve-nested": "npm:^2.0.0" - "@csstools/selector-specificity": "npm:^4.0.0" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/selector-resolve-nested": "npm:^3.0.0" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b82a3c7010f7c6097bd3f3fe6c03f3f3af9a63a58e255f120dadd506a0ea9444aeeaba994f2a3fa34fb26e666dc72032edf5786c5fbdade790b02ad07d91ef95 + checksum: 10c0/549307c272cdd4cb5105d8fbcd582f15a1cb74e5bba240b05b27f77fe0422730be966699a49a9ad15fd9d1bc551c1edbaefb21a69686a9b131b585dbc9d90ebf languageName: node linkType: hard @@ -13772,84 +13781,84 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.7 - resolution: "postcss-preset-env@npm:10.0.7" + version: 10.0.8 + resolution: "postcss-preset-env@npm:10.0.8" dependencies: - "@csstools/postcss-cascade-layers": "npm:^5.0.0" - "@csstools/postcss-color-function": "npm:^4.0.3" - "@csstools/postcss-color-mix-function": "npm:^3.0.3" - "@csstools/postcss-content-alt-text": "npm:^2.0.2" - "@csstools/postcss-exponential-functions": "npm:^2.0.2" + "@csstools/postcss-cascade-layers": "npm:^5.0.1" + "@csstools/postcss-color-function": "npm:^4.0.4" + "@csstools/postcss-color-mix-function": "npm:^3.0.4" + "@csstools/postcss-content-alt-text": "npm:^2.0.3" + "@csstools/postcss-exponential-functions": "npm:^2.0.3" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.3" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.3" - "@csstools/postcss-hwb-function": "npm:^4.0.3" + "@csstools/postcss-gamut-mapping": "npm:^2.0.4" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.4" + "@csstools/postcss-hwb-function": "npm:^4.0.4" "@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-initial": "npm:^2.0.0" - "@csstools/postcss-is-pseudo-class": "npm:^5.0.0" - "@csstools/postcss-light-dark-function": "npm:^2.0.5" + "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" + "@csstools/postcss-light-dark-function": "npm:^2.0.6" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" "@csstools/postcss-logical-viewport-units": "npm:^3.0.2" - "@csstools/postcss-media-minmax": "npm:^2.0.2" - "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.2" + "@csstools/postcss-media-minmax": "npm:^2.0.3" + "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.3" "@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.3" + "@csstools/postcss-oklab-function": "npm:^4.0.4" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.3" - "@csstools/postcss-scope-pseudo-class": "npm:^4.0.0" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.2" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.4" + "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.3" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.2" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.3" "@csstools/postcss-unset-value": "npm:^4.0.0" autoprefixer: "npm:^10.4.19" browserslist: "npm:^4.23.1" - css-blank-pseudo: "npm:^7.0.0" - css-has-pseudo: "npm:^7.0.0" + css-blank-pseudo: "npm:^7.0.1" + css-has-pseudo: "npm:^7.0.1" css-prefers-color-scheme: "npm:^10.0.0" - cssdb: "npm:^8.1.1" - postcss-attribute-case-insensitive: "npm:^7.0.0" + cssdb: "npm:^8.1.2" + postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.3" + postcss-color-functional-notation: "npm:^7.0.4" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" - postcss-custom-media: "npm:^11.0.3" - postcss-custom-properties: "npm:^14.0.2" - postcss-custom-selectors: "npm:^8.0.2" - postcss-dir-pseudo-class: "npm:^9.0.0" + postcss-custom-media: "npm:^11.0.4" + postcss-custom-properties: "npm:^14.0.3" + postcss-custom-selectors: "npm:^8.0.3" + postcss-dir-pseudo-class: "npm:^9.0.1" postcss-double-position-gradients: "npm:^6.0.0" - postcss-focus-visible: "npm:^10.0.0" - postcss-focus-within: "npm:^9.0.0" + postcss-focus-visible: "npm:^10.0.1" + postcss-focus-within: "npm:^9.0.1" postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.3" + postcss-lab-function: "npm:^7.0.4" postcss-logical: "npm:^8.0.0" - postcss-nesting: "npm:^13.0.0" + postcss-nesting: "npm:^13.0.1" postcss-opacity-percentage: "npm:^3.0.0" postcss-overflow-shorthand: "npm:^6.0.0" postcss-page-break: "npm:^3.0.4" postcss-place: "npm:^10.0.0" - postcss-pseudo-class-any-link: "npm:^10.0.0" + postcss-pseudo-class-any-link: "npm:^10.0.1" postcss-replace-overflow-wrap: "npm:^4.0.0" - postcss-selector-not: "npm:^8.0.0" + postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/f789000e0504fd827e854bb0feb8b4c218d381314e4d863c5a36df925df412d0844c912952fe27892a320433640aeaff03ee94a3057b42011bf5d32b3963f333 + checksum: 10c0/3f7dc8eb2e7f4e7a5eee0a9456972a5b18bd40109d1aa3328f60cd645d352f3a70c83c507ea58f83b820153b0f5c3f14af3f376573c56599c36d5739c943b6f1 languageName: node linkType: hard -"postcss-pseudo-class-any-link@npm:^10.0.0": - version: 10.0.0 - resolution: "postcss-pseudo-class-any-link@npm:10.0.0" +"postcss-pseudo-class-any-link@npm:^10.0.1": + version: 10.0.1 + resolution: "postcss-pseudo-class-any-link@npm:10.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8357716e0ba0f01c70dba65a1efd268f610249ac2fbd41833e5e87dc19ffa7911c8d5e234d0d7c77d94ba6cdfa04fe7f0f98461c34f64cdbb59abd9737ab7d32 + checksum: 10c0/95e883996e87baf14fc09d25f9a763a2e9d599eb3b9c6b736e83a8c3d0b55841bcb886bccdf51b5b7fefc128cbd0187ad8841f59878f85bd1613642e592d7673 languageName: node linkType: hard @@ -13910,18 +13919,18 @@ __metadata: languageName: node linkType: hard -"postcss-selector-not@npm:^8.0.0": - version: 8.0.0 - resolution: "postcss-selector-not@npm:8.0.0" +"postcss-selector-not@npm:^8.0.1": + version: 8.0.1 + resolution: "postcss-selector-not@npm:8.0.1" dependencies: - postcss-selector-parser: "npm:^6.1.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/677f2cd9d0cd481d276663b57001b2ba96db94ad5bba397f277e53d560ccb074b27c21792deff44720a9f2d96da85fa34f438bb1d33198305b5866b35f1a4708 + checksum: 10c0/491ea3dcc421cd90135be786078521605e2062fb93624ea8813cfd5ba0d35143f931e2e608d5f20effd5ea7d3f4786d2afea2afa42d117779a0288e135f132b6 languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.2": +"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.2": version: 6.1.2 resolution: "postcss-selector-parser@npm:6.1.2" dependencies: @@ -13931,6 +13940,16 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:^7.0.0": + version: 7.0.0 + resolution: "postcss-selector-parser@npm:7.0.0" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/e96e096afcce70bf5c97789f5ea09d7415ae5eb701d82b05b5e8532885d31363b484fcb1ca9488c9a331f30508d9e5bb6c3109eb2eb5067ef3d3919f9928cd9d + languageName: node + linkType: hard + "postcss-svgo@npm:^7.0.1": version: 7.0.1 resolution: "postcss-svgo@npm:7.0.1" From aa29e42cf8ceedbd65778f73e508f8180042c33c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:17:41 +0000 Subject: [PATCH 258/550] Update babel monorepo to v7.25.9 (#32628) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 1274 ++++++++++++++++++++++++++--------------------------- 1 file changed, 633 insertions(+), 641 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3951c1c8cb..5b563d52d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,127 +42,127 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/code-frame@npm:7.25.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/code-frame@npm:7.25.9" dependencies: - "@babel/highlight": "npm:^7.25.7" + "@babel/highlight": "npm:^7.25.9" picocolors: "npm:^1.0.0" - checksum: 10c0/14825c298bdec914caf3d24d1383b6d4cd6b030714686004992f4fc251831ecf432236652896f99d5d341f17170ae9a07b58d8d7b15aa0df8cfa1c5a7d5474bc + checksum: 10c0/88562eba0eeb5960b7004e108790aa00183d90cbbe70ce10dad01c2c48141d2ef54d6dcd0c678cc1e456de770ffeb68e28559f4d222c01a110c79aea8733074b languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.7, @babel/compat-data@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/compat-data@npm:7.25.8" - checksum: 10c0/8b81c17580e5fb4cbb6a3c52079f8c283fc59c0c6bd2fe14cfcf9c44b32d2eaab71b02c5633e2c679f5896f73f8ac4036ba2e67a4c806e8f428e4b11f526d7f4 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/compat-data@npm:7.25.9" + checksum: 10c0/8d9fc2074311ce61aaf5bccf740a808644d19d4859caf5fa46d8a7186a1ee0b0d8cbbc23f9371f8b397e84a885bdeab58d5f22d6799ddde55973252aac351a27 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0": - version: 7.25.8 - resolution: "@babel/core@npm:7.25.8" + version: 7.25.9 + resolution: "@babel/core@npm:7.25.9" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helpers": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.8" - "@babel/template": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.8" + "@babel/code-frame": "npm:^7.25.9" + "@babel/generator": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helpers": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/8411ea506e6f7c8a39ab5c1524b00589fa3b087edb47389708f7fe07170929192171734666e3ea10b95a951643a531a6d09eedfe071572c9ea28516646265086 + checksum: 10c0/40d3064ebe906f65ed4153a0f4d75c679a19e4d71e425035b7bbe2d292a9167274f1a0d908d4d6c8f484fcddeb10bd91e0c7878fdb3dfad1bb00f6a319ce431d languageName: node linkType: hard -"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/generator@npm:7.25.7" +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/generator@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.25.7" + "@babel/types": "npm:^7.25.9" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10c0/c03a26c79864d60d04ce36b649c3fa0d6fd7b2bf6a22e22854a0457aa09206508392dd73ee40e7bc8d50b3602f9ff068afa47770cda091d332e7db1ca382ee96 + checksum: 10c0/fca49a1440ac550bb835a73c0e8314849cd493a468a5431ca7f9dbb3d3443e3a1a6dcba2426752e8a97cc2feed4a3b7a0c639e1c45871c4a9dd0c994f08dd25a languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.25.7" +"@babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.25.7" - checksum: 10c0/2f020b0fa9d336b5778485cc2de3141561ec436a7591b685457a5bcdae4ce41d9ddee68169c95504e0789e5a4327e73b8b7e72e5b60e82e96d730c4d19255248 + "@babel/types": "npm:^7.25.9" + checksum: 10c0/095b6ba50489d797733abebc4596a81918316a99e3632755c9f02508882912b00c2ae5e468532a25a5c2108d109ddbe9b7da78333ee7cc13817fc50c00cf06fe languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.7" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/e9dc5a7920a1d74150dec53ccd5e34f2b31ae307df7cdeec6289866f7bda97ecb1328b49a7710ecde5db5b6daad768c904a030f9a0fa3184963b0017622c42aa + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/a6068bb813e7f72d12b72edeecb99167f60cd7964cacedfb60e01fff5e7bed4a5a7f4f7414de7cf352a1b71487df5f8dab8c2b5230de4ad5aea16adf32e14219 languageName: node linkType: hard -"@babel/helper-builder-react-jsx@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-builder-react-jsx@npm:7.25.7" +"@babel/helper-builder-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-builder-react-jsx@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/f8123a76e8c3fcdbb24cc14bfefc80e4c7bf58112ab26bea3247298748c674cbaee70591c362d0d881e4d88154ea4809b145f3ddcf96221cf55ba27bfde535c6 + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/99d6e87eede0971f25b5e638220f5f966c56c03f6a6278a693c73ac0a31acddb86110208a89d948aa337c8cf7998fb317c00e8baf2e9fa0a42b9207b977dc9c6 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-compilation-targets@npm:7.25.7" +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/705be7e5274a3fdade68e3e2cf42e2b600316ab52794e13b91299a16f16c926f15886b6e9d6df20eb943ccc1cdba5a363d4766f8d01e47b8e6f4e01175f5e66c + checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.7" +"@babel/helper-create-class-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-member-expression-to-functions": "npm:^7.25.7" - "@babel/helper-optimise-call-expression": "npm:^7.25.7" - "@babel/helper-replace-supers": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/405c3c1a137acda1206380a96993cf2cfd808b3bee1c11c4af47ee0f03a20858497aa53394d6adc5431793c543be5e02010620e871a5ab39d938ae90a54b50f2 + checksum: 10c0/b2bdd39f38056a76b9ba00ec5b209dd84f5c5ebd998d0f4033cf0e73d5f2c357fbb49d1ce52db77a2709fb29ee22321f84a5734dc9914849bdfee9ad12ce8caf languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.7" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" regexpu-core: "npm:^6.1.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/75919fd5a67cd7be8497b56f7b9ed6b4843cb401956ba8d403aa9ae5b005bc28e35c7f27e704d820edbd1154394ed7a7984d4719916795d89d716f6980fe8bd4 + checksum: 10c0/3adc60a758febbf07d65a15eaccab1f7b9fcc55e7141e59122f13c9f81fc0d1cce4525b7f4af50285d27c93b34c859fd2c39c39820c5fb92211898c3bbdc77ef languageName: node linkType: hard @@ -181,223 +181,223 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.25.7" +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/1e948162ab48d84593a7c6ec9570d14c906146f1697144fc369c59dbeb00e4a062da67dd06cb0d8f98a044cd8389002dcf2ab6f5613d99c35748307846ec63fc + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-imports@npm:7.25.7" +"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/0fd0c3673835e5bf75558e184bcadc47c1f6dd2fe2016d53ebe1e5a6ae931a44e093015c2f9a6651c1a89f25c76d9246710c2b0b460b95ee069c464f2837fa2c + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-transforms@npm:7.25.7" +"@babel/helper-module-transforms@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-transforms@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-simple-access": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-simple-access": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/f37fa7d1d4df21690535b278468cbd5faf0133a3080f282000cfa4f3ffc9462a1458f866b04b6a2f2d1eec4691236cba9a867da61270dab3ab19846e62f05090 + checksum: 10c0/cd005e7585806845d79c5c0ca9e8926f186b430b0a558dad08a3611365eaad3ac587672b0d903530117dec454f48b6bdc3d164b19ea1b71ca1b4eb3be7b452ef languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.25.7" +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.25.7" - checksum: 10c0/19b4cc7e77811b1fedca4928dbc14026afef913c2ba4142e5e110ebdcb5c3b2efc0f0fbee9f362c23a194674147b9d627adea71c289b9be08b9067bc0085308b + "@babel/types": "npm:^7.25.9" + checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.0, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.25.7 - resolution: "@babel/helper-plugin-utils@npm:7.25.7" - checksum: 10c0/241f8cf3c5b7700e91cab7cfe5b432a3c710ae3cd5bb96dc554da536a6d25f5b9f000cc0c0917501ceb4f76ba92599ee3beb25e10adaf96be59f8df89a842faf +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.0, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.7" +"@babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-wrap-function": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-wrap-function": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/972d84876adce6ab61c87a2df47e1afc790b73cff0d1767d0a1c5d9f7aa5e91d8c581a272b66b2051a26cfbb167d8a780564705e488e3ce1f477f1c15059bc5f + checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-replace-supers@npm:7.25.7" +"@babel/helper-replace-supers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-replace-supers@npm:7.25.9" dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.25.7" - "@babel/helper-optimise-call-expression": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/761d64ee74429f7326a6aa65e2cd5bfcb8de9e3bc3f1efb14b8f610d2410f003b0fca52778dc801d49ff8fbc90b057e8f51b27c62b0b05c95eaf23140ca1287b + checksum: 10c0/0b40d7d2925bd3ba4223b3519e2e4d2456d471ad69aa458f1c1d1783c80b522c61f8237d3a52afc9e47c7174129bbba650df06393a6787d5722f2ec7f223c3f4 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-simple-access@npm:7.25.7" +"@babel/helper-simple-access@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-simple-access@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/eed1b499bfb4f613c18debd61517e3de77b6da2727ca025aa05ac81599e0269f1dddb5237db04e8bb598115d015874752e0a7f11ff38672d74a4976097417059 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/3f1bcdb88ee3883ccf86959869a867f6bbf8c4737cd44fb9f799c38e54f67474590bc66802500ae9fe18161792875b2cfb7ec15673f48ed6c8663f6d09686ca8 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.7" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/5804adb893849a9d8cfb548e3812566a81d95cb0c9a10d66b52912d13f488e577c33063bf19bc06ac70e6333162a7370d67ba1a1c3544d37fb50d5f4a00db4de + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-string-parser@npm:7.25.7" - checksum: 10c0/73ef2ceb81f8294678a0afe8ab0103729c0370cac2e830e0d5128b03be5f6a2635838af31d391d763e3c5a4460ed96f42fd7c9b552130670d525be665913bc4c +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-identifier@npm:7.25.7" - checksum: 10c0/07438e5bf01ab2882a15027fdf39ac3b0ba1b251774a5130917907014684e2f70fef8fd620137ca062c4c4eedc388508d2ea7a3a7d9936a32785f4fe116c68c0 +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-option@npm:7.25.7" - checksum: 10c0/12ed418c8e3ed9ed44c8c80d823f4e42d399b5eb2e423adccb975e31a31a008cd3b5d8eab688b31f740caff4a1bb28fe06ea2fa7d635aee34cc0ad6995d50f0a +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-wrap-function@npm:7.25.7" +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" dependencies: - "@babel/template": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/b5d412f72697f4a4ce4cb9784fbaf82501c63cf95066c0eadd3179e3439cbbf0aa5fa4858d93590083671943cd357aeb87286958df34aa56fdf8a4c9dea39755 + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 languageName: node linkType: hard -"@babel/helpers@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helpers@npm:7.25.7" +"@babel/helpers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helpers@npm:7.25.9" dependencies: - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/3b3ae9e373bd785414195ef8f59976a69d5a6ebe0ef2165fdcc5165e5c3ee09e0fcee94bb457df2ddb8c0532e4146d0a9b7a96b3497399a4bff4ffe196b30228 + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/4354fbf050291937d0f127f6f927a0c471b604524e0767516fefb91dc36427f25904dd0d2b2b3bbc66bce1894c680cc37eac9ab46970d70f24bf3e53375612de languageName: node linkType: hard -"@babel/highlight@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/highlight@npm:7.25.7" +"@babel/highlight@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/highlight@npm:7.25.9" dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.9" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/1f5894fdb0a0af6101fb2822369b2eeeae32cbeae2ef73ff73fc6a0a4a20471565cd9cfa589f54ed69df66adeca7c57266031ca9134b7bd244d023a488d419aa + checksum: 10c0/ae0ed93c151b85a07df42936117fa593ce91563a22dfc8944a90ae7088c9679645c33e00dcd20b081c1979665d65f986241172dae1fc9e5922692fc3ff685a49 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/parser@npm:7.25.8" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/parser@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.25.8" + "@babel/types": "npm:^7.25.9" bin: parser: ./bin/babel-parser.js - checksum: 10c0/a1a13845b7e8dda4c970791814a4bbf60004969882f18f470e260ad822d2e1f8941948f851e9335895563610f240fa6c98481ce8019865e469502bbf21daafa4 + checksum: 10c0/143faff8a72331be5ed94080e0f4645cbeea814fb488cd9210154083735f67cb66fde32f6a4a80efd6c4cdf12c6f8b50995a465846093c7f65c5da8d7829627c languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.7" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/c6ba97c39973897a2ab021c4a77221e1e93e853a5811d498db325da1bd692e41fa521db6d91bb709ccafd4e54ddd00869ffb35846923c3ccd49d46124b316904 + checksum: 10c0/7aab47fcbb8c1ddc195a3cd66609edcad54c5022f018db7de40185f0182950389690e953e952f117a1737b72f665ff02ad30de6c02b49b97f1d8f4ccdffedc34 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.7" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/ac284868bf410f952c6959b0d77708464127160416f003b05c8127d30e64792d671abc167ebf778b17707e32174223ea8d3ff487276991fa90297d92f0dac6e2 + checksum: 10c0/3a652b3574ca62775c5f101f8457950edc540c3581226579125da535d67765f41ad7f0e6327f8efeb2540a5dad5bb0c60a89fb934af3f67472e73fb63612d004 languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.7" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/1bffc0a20c8c82b4c77515eb4c99b961b38184116f008bb42bed4e12d3379ba7b2bc6cf299bcea8118d645bb7a5e0caa83969842f16dd1fce49fb3a050e4ac65 + checksum: 10c0/18fc9004104a150f9f5da9f3307f361bc3104d16778bb593b7523d5110f04a8df19a2587e6bdd5e726fb1d397191add45223f4f731bb556c33f14f2779d596e8 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.13.0 - checksum: 10c0/32223f012614a0b2657579317ded7d0d09af2aa316285715c5012f974d0f15c2ce2fe0d8e80fdd9bac6c10c21c93cc925a9dfd6c8e21ce7ba1a9fe06a58088b4 + checksum: 10c0/3f6c8781a2f7aa1791a31d2242399ca884df2ab944f90c020b6f112fb19f05fa6dad5be143d274dad1377e40415b63d24d5489faf5060b9c4a99e55d8f0c317c languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.7" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/aa2ee7a5954d187de6cbcca0e0b64cfb79c4d224c332d1eb1e0e4afd92ef1a1f4bc4af24f66154097ccb348c08121a875456f47baed220b1b9e93584e6a19b65 + checksum: 10c0/02b365f0cc4df8b8b811c68697c93476da387841e5f153fe42766f34241b685503ea51110d5ed6df7132759820b93e48d9fa3743cffc091eed97c19f7e5fe272 languageName: node linkType: hard @@ -443,25 +443,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" +"@babel/plugin-syntax-import-assertions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0fee0d971f3c654749fdf92e09b6556bba26ab014c8e99b7252f6a7f1ca108f17edd7ceefb5401d7b7008e98ab1b6f8c3c6a5db72862e7c7b2fcd649d000d690 + checksum: 10c0/f5a022b8a7f3585cf1586535224b06ae380983d3c14f7127b82792ef50cd8194047080540c8abec7aa8f8bfe7d774d71a1ee91f4fd3fa0277f7ffe2d3c6c4977 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.7" +"@babel/plugin-syntax-import-attributes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fe00cdb96fd289ab126830a98e1dcf5ab7b529a6ef1c01a72506b5e7b1197d6e46c3c4d029cd90d1d61eb9a15ef77c282d156d0c02c7e32f168bb09d84150db4 + checksum: 10c0/bbdf97ba088c3d482492f6c3376422752b1723ce32e3ac11b000faf3c942d68e418c8a911431cb05d5e300d008cc37cd5518e89807a5813c2ac8fdd82d171f8d languageName: node linkType: hard @@ -487,14 +487,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.25.0, @babel/plugin-syntax-jsx@npm:^7.25.7, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" +"@babel/plugin-syntax-jsx@npm:^7.25.0, @babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/17db499c31fcfaa94d5408726d943955d51d478353d1e2dd84eda6024f7e3d104b9456a77f8aabfae0db7f4dc32f810d08357112f7fcbe305e7c9fcf5b3cac13 + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c languageName: node linkType: hard @@ -575,14 +575,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.25.7, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.7" +"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ed51fd81a5cf571a89fc4cf4c0e3b0b91285c367237374c133d2e5e718f3963cfa61b81997df39220a8837dc99f9e9a8ab7701d259c09fae379e4843d9db60c2 + checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 languageName: node linkType: hard @@ -598,454 +598,454 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.7" +"@babel/plugin-transform-arrow-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c8d75ead93f130bf113b6d29493aca695092661ef039336d2a227169c3b7895aa5e9bcc548c42a95a6eaaaf49e512317b00699940bd40ccefd77443e703d3935 + checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.8" +"@babel/plugin-transform-async-generator-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-remap-async-to-generator": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1698d0757d3dc895047120346cdbe6d539dae4a7bb930caf958c3623e89c850d378d1ebd971a1a8b4cba39c8f001cd9c25a1d6f430099022ab1e87aeddb5dd88 + checksum: 10c0/e3fcb9fc3d6ab6cbd4fcd956b48c17b5e92fe177553df266ffcd2b2c1f2f758b893e51b638e77ed867941e0436487d2b8b505908d615c41799241699b520dec6 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.7" +"@babel/plugin-transform-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-remap-async-to-generator": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1dbefba9c1455f7a92b8c59a93c622091db945294c936fc2c09b1648308c5b4cb2ecaae92baae0d07a324ab890a8a2ee27ceb046bc120932845d27aede275821 + checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.7" +"@babel/plugin-transform-block-scoped-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b1e77492295d1b271ef850a81b0404cf3d0dd6a2bcbeab28a0fd99e61c6de4bda91dff583bb42138eec61bf71282bdd3b1bebcb53b7e373035e77fd6ba66caeb + checksum: 10c0/e92ba0e3d72c038513844d8fca1cc8437dcb35cd42778e97fd03cb8303380b201468611e7ecfdcae3de33473b2679fe2de1552c5f925d112c5693425cf851f10 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.7" +"@babel/plugin-transform-block-scoping@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b2057e00535cd0e8bd5ee5d4640aa2e952564aeafb1bcf4e7b6de33442422877bb0ca8669ad0a48262ec077271978c61eae87b6b3bc8f472d830fa781d6f7e44 + checksum: 10c0/a76e30becb6c75b4d87a2cd53556fddb7c88ddd56bfadb965287fd944810ac159aa8eb5705366fc37336041f63154ed9fab3862fb10482a45bf5ede63fd55fda languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.7" +"@babel/plugin-transform-class-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1f41e6934b20ad3e05df63959cff9bc600ff3119153b9acbbd44c1731e7df04866397e6e17799173f4c53cdee6115e155632859aee20bf47ec7dcef3f2168a47 + checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-class-static-block@npm:7.25.8" +"@babel/plugin-transform-class-static-block@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/4f37853aef6920875022bbb2d7c6523218d9d718291464e2cacd9cc6f2c22d86a69948d8ea38f9248843bbfe9343f3fd18cf16b1615560124198bf999e3ba612 + checksum: 10c0/696a3a8acde79d6fee4f685ee1353bf483c4cd50a38e586a1a044268df72d87f9b1a3b7c473def6cde836aa69931fd5a75560bb9ee3a635ebde8911575ed49ca languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-classes@npm:7.25.7" +"@babel/plugin-transform-classes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-replace-supers": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8121781e1d8acd80e6169019106f73a399475ad9c895c1988a344dfed5a6ddd340938ac55123dc1e423bb8f25f255f5d11031116ad756ba3c314595a97c973af + checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.25.7" +"@babel/plugin-transform-computed-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7ad0a1c126f50935a02e77d438ebc39078a9d644b3a60de60bec32c5d9f49e7f2b193fcecb8c61bb1bc3cdd4af1e93f72d022d448511fa76a171527c633cd1bf + checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-destructuring@npm:7.25.7" +"@babel/plugin-transform-destructuring@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a563123b2fb267e03aa50104005f00b56226a685938906c42c1b251462e0cc9fc89e587d5656d3324159071eb8ebda8c68a6011f11d5a00fb1436cb5a5411b7b + checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.7" +"@babel/plugin-transform-dotall-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7f1db3ec20b7fae46db4a9c4c257d75418b0896b72c0a3de20b3044f952801480f0a2e75ebb0d64f13e8cd4db0e49aa42c5c0edff372b23c41679b1ea5dd3ed4 + checksum: 10c0/7c3471ae5cf7521fd8da5b03e137e8d3733fc5ee4524ce01fb0c812f0bb77cb2c9657bc8a6253186be3a15bb4caa8974993c7ddc067f554ecc6a026f0a3b5e12 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.7" +"@babel/plugin-transform-duplicate-keys@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b4079981e2db19737a0f1a00254e7388e2d3c01ce36e9fd826e4d86d3c1755339495e29c71fd7c84a068201ec24687328d48f3bf53b32b6d6224f51d9a34da74 + checksum: 10c0/d0c74894b9bf6ff2a04189afffb9cd43d87ebd7b7943e51a827c92d2aaa40fa89ac81565a2fd6fbeabf9e38413a9264c45862eee2b017f1d49046cc3c8ff06b4 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.7" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/e4946090ff6d88d54b78265ee653079ec34c117ac046e22f66f7c4ac44249cdc2dfca385bc5bf4386db668b9948eeb12985589500188bc252e684c7714c31475 + checksum: 10c0/a8039a6d2b90e011c7b30975edee47b5b1097cf3c2f95ec1f5ddd029898d783a995f55f7d6eb8d6bb8873c060fb64f9f1ccba938dfe22d118d09cf68e0cd3bf6 languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.8" +"@babel/plugin-transform-dynamic-import@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9726abc1b07771a9c1e3670908ac425d21e29f54c775d10ed7a4e2bc0a18e07600f70bbc531deba3fb3ff7f6763c189200593264c6f784dac583e653b66fe754 + checksum: 10c0/5e643a8209072b668350f5788f23c64e9124f81f958b595c80fecca6561086d8ef346c04391b9e5e4cad8b8cbe22c258f0cd5f4ea89b97e74438e7d1abfd98cf languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.7" +"@babel/plugin-transform-exponentiation-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c8537b9f3cddc5a8d3710f6980196dc7a0f4389f8f82617312a5f7b8b15bcd8ddaeba783c687c3ac6031eb0a4ba0bc380a98da6bf7efe98e225602a98ad42a1e + checksum: 10c0/3b42f65bab3fee28c385115ce6bcb6ba544dff187012df408a432c9fb44c980afd898911020c723dc1c9257aaf3d7d0131ad83ba15102bf30ad9a86fc2a8a912 languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.8" +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8a2e1205dd727a96a9adef0e981d68c61b1c286480b9136e2aa67ce3e2c742be4f87feb9fb4c5548a401aba0953d43d66e9ec36a54dea6a7c15f1ee9345baf57 + checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-for-of@npm:7.25.7" +"@babel/plugin-transform-for-of@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-for-of@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/08a37a1742368a422d095c998ed76f60f6bf3f9cc060033be121d803fd2dddc08fe543e48ee49c022bdc9ed80893ca79d084958d83d30684178b088774754277 + checksum: 10c0/bf11abc71934a1f369f39cd7a33cf3d4dc5673026a53f70b7c1238c4fcc44e68b3ca1bdbe3db2076f60defb6ffe117cbe10b90f3e1a613b551d88f7c4e693bbe languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-function-name@npm:7.25.7" +"@babel/plugin-transform-function-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ca98e1116c0ada7211ed43e4b7f21ca15f95bbbdad70f2fbe1ec2d90a97daedf9f22fcb0a25c8b164a5e394f509f2e4d1f7609d26dc938a58d37c5ee9b80088a + checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-json-strings@npm:7.25.8" +"@babel/plugin-transform-json-strings@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2a6cf69ebe8deebc39c56adae75d609e16786dc4cbd83577eefdc838bd89ca8974671d47e2669b8e65ef9b7ace427f7c2c5a9fc6aa09247b10e141d15fee81cf + checksum: 10c0/00bc2d4751dfc9d44ab725be16ee534de13cfd7e77dfb386e5dac9e48101ce8fcbc5971df919dc25b3f8a0fa85d6dc5f2a0c3cf7ec9d61c163d9823c091844f0 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-literals@npm:7.25.7" +"@babel/plugin-transform-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c2c2488102f33e566f45becdcb632e53bd052ecfb2879deb07a614b3e9437e3b624c3b16d080096d50b0b622edebd03e438acbf9260bcc41167897963f64560e + checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.8" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9adc2634c94b283b682fbf71bbec553bd8448196213491a0ef9ea167993c9c36dcb2fbefbd834e113cfed843a67290131bc99e463f8702043c3f4e3a99bb807e + checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.7" +"@babel/plugin-transform-member-expression-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d6936b98ae4d3daed850dc4e064042ea4375f815219ba9d8591373bf1fba4cfdb5be42623ae8882f2d666cc34af650a4855e2a5ad89e3c235d73a6f172f9969c + checksum: 10c0/91d17b451bcc5ea9f1c6f8264144057ade3338d4b92c0b248366e4db3a7790a28fd59cc56ac433a9627a9087a17a5684e53f4995dd6ae92831cb72f1bd540b54 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-modules-amd@npm:7.25.7" +"@babel/plugin-transform-modules-amd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c0bc999206c3834c090e6559a6c8a55d7672d3573104e832223ebe7df99bd1b82fc850e15ba32f512c84b0db1cdb613b66fa60abe9abb9c7e8dcbff91649b356 + checksum: 10c0/849957d9484d0a2d93331226ed6cf840cee7d57454549534c447c93f8b839ef8553eae9877f8f550e3c39f14d60992f91244b2e8e7502a46064b56c5d68ba855 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.7" +"@babel/plugin-transform-modules-commonjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-simple-access": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2f1c945fc3c9b690b0ddcf2c80156b2e4fbf2cf15aac43ac8fe6e4b34125869528839a53d07c564e62e4aed394ebdc1d2c3b796b547374455522581c11b7599c + checksum: 10c0/6ce771fb04d4810257fc8900374fece877dacaed74b05eaa16ad9224b390f43795c4d046cbe9ae304e1eb5aad035d37383895e3c64496d647c2128d183916e74 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.7" +"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/95eaea7082636710c61e49e58b3907e85ec79db4327411d3784f28592509fbe94a53cc3d20a36a1cf245efc6d3f0017eae15b45ffd645c1ab949bb4e1670e6bb + checksum: 10c0/8299e3437542129c2684b86f98408c690df27db4122a79edded4782cf04e755d6ecb05b1e812c81a34224a81e664303392d5f3c36f3d2d51fdc99bb91c881e9a languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-modules-umd@npm:7.25.7" +"@babel/plugin-transform-modules-umd@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8849ab04eecdb73cd37e2d7289449fa5256331832b0304c220b2a6aaa12e2d2dd87684f2813412d1fc5bdb3d6b55cc08c6386d3273fe05a65177c09bee5b6769 + checksum: 10c0/fa11a621f023e2ac437b71d5582f819e667c94306f022583d77da9a8f772c4128861a32bbb63bef5cba581a70cd7dbe87a37238edaafcfacf889470c395e7076 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.7" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/eb55fec55dc930cd122911f3e4a421320fa8b1b4de85bfd7ef11b46c611ec69b0213c114a6e1c6bc224d6b954ff183a0caa7251267d5258ecc0f00d6d9ca1d52 + checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-new-target@npm:7.25.7" +"@babel/plugin-transform-new-target@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-new-target@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8e5dce6d027e0f3fd394578ea1af7f515de157793a15c23a5aad7034a6d8a4005ef280238e67a232bb4dd4fafd3a264fed462deb149128ddd9ce59ff6f575cff + checksum: 10c0/7b5f1b7998f1cf183a7fa646346e2f3742e5805b609f28ad5fee22d666a15010f3e398b7e1ab78cddb7901841a3d3f47135929af23d54e8bf4ce69b72051f71e languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.8" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/3cb7c44cffccae42e104755acb31b4f00bc27d8c88102ae6f30dca508832f98fa5b746bead0fc7c0c6ddcf83f336829be4b64245c6c7ce26b3ef591937ec54a4 + checksum: 10c0/eb623db5be078a1c974afe7c7797b0309ba2ea9e9237c0b6831ade0f56d8248bb4ab3432ab34495ff8c877ec2fe412ff779d1e9b3c2b8139da18e1753d950bc3 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.8" +"@babel/plugin-transform-numeric-separator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d23b3ebc50513f24510791ac2cad43e3c6ea08579f54dccfd4ed5e5d5084f02da0576ea42ea999fb51e1f94f42857cac96a1a29ac6728fc262fbe87ec966dc18 + checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.8" +"@babel/plugin-transform-object-rest-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-transform-parameters": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/058d5f5bb61068997fb78855011dd175d441da84717640852bbfd12a5919acf8d8c5a14c1debfe87d230f3f4c47c22fcad3d7fa1acd72e5e48b2fff93b6c1dd9 + checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-object-super@npm:7.25.7" +"@babel/plugin-transform-object-super@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-super@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-replace-supers": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7f2968d4da997101b63fd3b74445c9b16f56bd32cd8a0a16c368af9d3e983e7675c1b05d18601f32307cb06e7d884ee11d13ff18a1f6830c0db243a9a852afab + checksum: 10c0/0348d00e76f1f15ada44481a76e8c923d24cba91f6e49ee9b30d6861eb75344e7f84d62a18df8a6f9e9a7eacf992f388174b7f9cc4ce48287bcefca268c07600 languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.8" +"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f4360e62ca4aa998db31548d0ef06836d958bcb29dee58f5c62d0c29b6b2bff1b54871195bd032825fe3dd79a4fd8275e165148c8d4b57694bcf72135c8f7d24 + checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.25.7, @babel/plugin-transform-optional-chaining@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.8" +"@babel/plugin-transform-optional-chaining@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a1cdbfc249619fa6b37e57f81600701281629d86a57e616b0c2b29816d0c43114a2296ce089564afd3aa7870c8aad62e907658ffef2c110662af14ee23d5247f + checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-parameters@npm:7.25.7" +"@babel/plugin-transform-parameters@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-parameters@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b40ba70278842ce1e800d7ab400df730994941550da547ef453780023bd61a9b8acf4b9fb8419c1b5bcbe09819a1146ff59369db11db07eb71870bef86a12422 + checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.7" +"@babel/plugin-transform-private-methods@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/92e076f63f7c4696e1321dafdd56c4212eb41784cdadba0ebc39091f959a76d357c3df61a6c668be81d6b6ad8964ee458e85752ab0c6cfbbaf2066903edda732 + checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.25.8": - version: 7.25.8 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.8" +"@babel/plugin-transform-private-property-in-object@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-create-class-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/61b5e3a4eb94caf38d6e9ff7bff1ac8927758141aaa4891036d3490866ecee53beaefd7893519fec42a4c55f33374a17fc0e49694cdaf95668082073f0fe4a79 + checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.25.7" +"@babel/plugin-transform-property-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6d5bccdc772207906666ad5201bd91e4e132e1d806dbcf4163a1d08e18c57cc3795578c4e10596514bcd6afaf9696f478ea4f0dea890176d93b9cb077b9e5c55 + checksum: 10c0/1639e35b2438ccf3107af760d34e6a8e4f9acdd3ae6186ae771a6e3029bd59dfe778e502d67090f1185ecda5c16addfed77561e39c518a3f51ff10d41790e106 languageName: node linkType: hard @@ -1060,290 +1060,290 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-react-display-name@npm:7.25.7" +"@babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a0c537cc7c328ed7468d3b6a37bf0d9cb15d94afcdf3f2849ce6e5a68494fc61f0fa4fc529482a6b95b00f3c5c734f310bf18085293bff40702789f06c816f36 + checksum: 10c0/63a0f962d64e71baf87c212755419e25c637d2d95ea6fdc067df26b91e606ae186442ae815b99a577eca9bf5404d9577ecad218a3cf42d0e9e286ca7b003a992 languageName: node linkType: hard "@babel/plugin-transform-react-inline-elements@npm:^7.21.0": - version: 7.25.7 - resolution: "@babel/plugin-transform-react-inline-elements@npm:7.25.7" + version: 7.25.9 + resolution: "@babel/plugin-transform-react-inline-elements@npm:7.25.9" dependencies: - "@babel/helper-builder-react-jsx": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-builder-react-jsx": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/de85180c09002083cb330ef28d5b31b44e6ac6565c700b603be76e629f5a92c59ff69f79c08cc1dbd2dd1f271f44fe8d4c751deaf66c059ba721aa3cb43c881e + checksum: 10c0/d745bcfa8e51acc497b5ea2ff2fc4215cd39ebdb54703f2973962e3818a4829081ebc9e7818db28f90d1295e0b02e140986509ba48eef8aaa9de8c09b9434646 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.7" +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.25.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a3dc14644d09a6d22875af7b5584393ab53e467e0531cd192fc6242504dacaffa421e89265ba7f84fd4edef2b7b100d2e2ebf092a4dce2b55cf9c5fe29390c18 + checksum: 10c0/c0b92ff9eb029620abf320ff74aae182cea87524723d740fb48a4373d0d16bddf5edbe1116e7ba341332a5337e55c2ceaee8b8cad5549e78af7f4b3cfe77debb languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-react-jsx@npm:7.25.7" +"@babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/plugin-syntax-jsx": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6766b0357b8bbfcb77fca5350f06cf822c89bbe75ddcaea24614601ef23957504da24e76597d743038ce8fa081373b0663c8ad0c86d7c7226e8185f0680b8b56 + checksum: 10c0/5c9947e8ed141f7606f54da3e05eea1074950c5b8354c39df69cb7f43cb5a83c6c9d7973b24bc3d89341c8611f8ad50830a98ab10d117d850e6bdd8febdce221 languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.7" +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d92c9b511850fb6dea71966a0d4f313d67e317db7fc3633a7ff2e27d6df2e95cbc91c4c25abdb6c8db651fcda842a0cb7433835a8a9d4a3fdc5d452068428101 + checksum: 10c0/7c8eac04644ad19dcd71bb8e949b0ae22b9e548fa4a58e545d3d0342f647fb89db7f8789a7c5b8074d478ce6d3d581eaf47dd4b36027e16fd68211c383839abc languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.25.7" +"@babel/plugin-transform-regenerator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7ee3a57c4050bc908ef7ac392d810826b294970a7182f4ec34a8ca93dbe36deb21bc862616d46a6f3d881d6b5749930e1679e875b638a00866d844a4250df212 + checksum: 10c0/eef3ffc19f7d291b863635f32b896ad7f87806d9219a0d3404a470219abcfc5b43aabecd691026c48e875b965760d9c16abee25e6447272233f30cd07f453ec7 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-reserved-words@npm:7.25.7" +"@babel/plugin-transform-reserved-words@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/920c98130daff6c1288fb13a9a2d2e45863bba93e619cb88d90e1f5b5cb358a3ee8880a425a3adb1b4bd5dbb6bd0500eea3370fc612633045eec851b08cc586c + checksum: 10c0/8b028b80d1983e3e02f74e21924323cc66ba930e5c5758909a122aa7d80e341b8b0f42e1698e42b50d47a6ba911332f584200b28e1a4e2104b7514d9dc011e96 languageName: node linkType: hard "@babel/plugin-transform-runtime@npm:^7.22.4": - version: 7.25.7 - resolution: "@babel/plugin-transform-runtime@npm:7.25.7" + version: 7.25.9 + resolution: "@babel/plugin-transform-runtime@npm:7.25.9" dependencies: - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.10.6" babel-plugin-polyfill-regenerator: "npm:^0.6.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/9b2514e9079361ac8e7e500ffd522dad869d61a3894302da7e29bbac80de00276c8a1b4394d1dcf0b51c57b2c854919928df9648be336139fdf1d6ecd6d1bb32 + checksum: 10c0/888a4998ba0a2313de347954c9a8dfeccbff0633c69d33aee385b8878eba2b429dbfb00c3cc04f6bca454b9be8afa01ebbd73defb7fbbb6e2d3086205c07758b languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.7" +"@babel/plugin-transform-shorthand-properties@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/4250f89a0072f0f400be7a2e3515227b8e2518737899bd57d497e5173284a0e05d812e4a3c219ffcd484e9fa9a01c19fce5acd77bbb898f4d594512c56701eb4 + checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-spread@npm:7.25.7" +"@babel/plugin-transform-spread@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/258bd1b52388cd7425d0ae25fa39538734f7540ea503a1d8a72211d33f6f214cb4e3b73d6cd03016cbcff5d41169f1e578b9ea331965ad224d223591983e90a7 + checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.7" +"@babel/plugin-transform-sticky-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0e466cfc3ca1e0db4bb11eb630215b0e1f43066d7678325e5ddadcf5a118b2351a528f67205729c32ac5b78ab68ab7f40517dd33bcb1fb6b456509f5f54ce097 + checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-template-literals@npm:7.25.7" +"@babel/plugin-transform-template-literals@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a3455303b6841cb536ac66d1a2d03c194b9f371519482d8d1e8edbd33bf5ca7cdd5db1586b2b0ea5f909ebf74a0eafacf0fb28d257e4905445282dcdccfa6139 + checksum: 10c0/5144da6036807bbd4e9d2a8b92ae67a759543929f34f4db9b463448a77298f4a40bf1e92e582db208fe08ee116224806a3bd0bed75d9da404fc2c0af9e6da540 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.7" +"@babel/plugin-transform-typeof-symbol@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ce1a0744a900b05de1372a70508c4148f17eb941c482da26eb369b9f0347570dce45470c8a86d907bc3a0443190344da1e18489ecfecb30388ab6178e8a9916b + checksum: 10c0/2b19fd88608589d9bc6b607ff17b06791d35c67ef3249f4659283454e6a9984241e3bd4c4eb72bb8b3d860a73223f3874558b861adb7314aa317c1c6a2f0cafb languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-typescript@npm:7.25.7" +"@babel/plugin-transform-typescript@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-typescript@npm:7.25.9" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.7" - "@babel/helper-create-class-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.7" - "@babel/plugin-syntax-typescript": "npm:^7.25.7" + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5fa839b9560221698edff5e00b5cccc658c7875efaa7971c66d478f5b026770f12dd47b1be024463a44f9e29b4e14e8ddddbf4a2b324b0b94f58370dd5ae7195 + checksum: 10c0/c607ddb45f7e33cfcb928aad05cb1b18b1ecb564d2329d8f8e427f75192511aa821dee42d26871f1bdffbd883853e150ba81436664646c6e6b13063e65ce1475 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.7" +"@babel/plugin-transform-unicode-escapes@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8b1f71fda0a832c6e26ba4c00f99e9033e6f9b36ced542a512921f4ad861a70e2fec2bd54a91a5ca2efa46aaa8c8893e4c602635c4ef172bd3ed6eef3178c70b + checksum: 10c0/615c84d7c53e1575d54ba9257e753e0b98c5de1e3225237d92f55226eaab8eb5bceb74df43f50f4aa162b0bbcc934ed11feafe2b60b8ec4934ce340fad4b8828 languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.7" +"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b4bfcf7529138d00671bf5cdfe606603d52cfe57ec1be837da57683f404fc0b0c171834a02515eb03379e5c806121866d097b90e31cb437d21d0ea59368ad82b + checksum: 10c0/1685836fc38af4344c3d2a9edbd46f7c7b28d369b63967d5b83f2f6849ec45b97223461cea3d14cc3f0be6ebb284938e637a5ca3955c0e79c873d62f593d615c languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.7" +"@babel/plugin-transform-unicode-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/73ae34c02ea8b7ac7e4efa690f8c226089c074e3fef658d2a630ad898a93550d84146ce05e073c271c8b2bbba61cbbfd5a2002a7ea940dcad3274e5b5dcb6bcf + checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.7" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/39e45ae3db7adfc3457b1d6ba5608ffbace957ad019785967e5357a6639f261765bda12363f655d39265f5a2834af26327037751420191d0b73152ccc7ce3c35 + checksum: 10c0/56ee04fbe236b77cbcd6035cbf0be7566d1386b8349154ac33244c25f61170c47153a9423cd1d92855f7d6447b53a4a653d9e8fd1eaeeee14feb4b2baf59bd9f languageName: node linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4": - version: 7.25.8 - resolution: "@babel/preset-env@npm:7.25.8" + version: 7.25.9 + resolution: "@babel/preset-env@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.25.8" - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.7" - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.7" + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.25.7" - "@babel/plugin-syntax-import-attributes": "npm:^7.25.7" + "@babel/plugin-syntax-import-assertions": "npm:^7.25.9" + "@babel/plugin-syntax-import-attributes": "npm:^7.25.9" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" - "@babel/plugin-transform-arrow-functions": "npm:^7.25.7" - "@babel/plugin-transform-async-generator-functions": "npm:^7.25.8" - "@babel/plugin-transform-async-to-generator": "npm:^7.25.7" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.7" - "@babel/plugin-transform-block-scoping": "npm:^7.25.7" - "@babel/plugin-transform-class-properties": "npm:^7.25.7" - "@babel/plugin-transform-class-static-block": "npm:^7.25.8" - "@babel/plugin-transform-classes": "npm:^7.25.7" - "@babel/plugin-transform-computed-properties": "npm:^7.25.7" - "@babel/plugin-transform-destructuring": "npm:^7.25.7" - "@babel/plugin-transform-dotall-regex": "npm:^7.25.7" - "@babel/plugin-transform-duplicate-keys": "npm:^7.25.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.7" - "@babel/plugin-transform-dynamic-import": "npm:^7.25.8" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.7" - "@babel/plugin-transform-export-namespace-from": "npm:^7.25.8" - "@babel/plugin-transform-for-of": "npm:^7.25.7" - "@babel/plugin-transform-function-name": "npm:^7.25.7" - "@babel/plugin-transform-json-strings": "npm:^7.25.8" - "@babel/plugin-transform-literals": "npm:^7.25.7" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.8" - "@babel/plugin-transform-member-expression-literals": "npm:^7.25.7" - "@babel/plugin-transform-modules-amd": "npm:^7.25.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" - "@babel/plugin-transform-modules-systemjs": "npm:^7.25.7" - "@babel/plugin-transform-modules-umd": "npm:^7.25.7" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.7" - "@babel/plugin-transform-new-target": "npm:^7.25.7" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.8" - "@babel/plugin-transform-numeric-separator": "npm:^7.25.8" - "@babel/plugin-transform-object-rest-spread": "npm:^7.25.8" - "@babel/plugin-transform-object-super": "npm:^7.25.7" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.8" - "@babel/plugin-transform-optional-chaining": "npm:^7.25.8" - "@babel/plugin-transform-parameters": "npm:^7.25.7" - "@babel/plugin-transform-private-methods": "npm:^7.25.7" - "@babel/plugin-transform-private-property-in-object": "npm:^7.25.8" - "@babel/plugin-transform-property-literals": "npm:^7.25.7" - "@babel/plugin-transform-regenerator": "npm:^7.25.7" - "@babel/plugin-transform-reserved-words": "npm:^7.25.7" - "@babel/plugin-transform-shorthand-properties": "npm:^7.25.7" - "@babel/plugin-transform-spread": "npm:^7.25.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.25.7" - "@babel/plugin-transform-template-literals": "npm:^7.25.7" - "@babel/plugin-transform-typeof-symbol": "npm:^7.25.7" - "@babel/plugin-transform-unicode-escapes": "npm:^7.25.7" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.7" - "@babel/plugin-transform-unicode-regex": "npm:^7.25.7" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.7" + "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.9" + "@babel/plugin-transform-async-to-generator": "npm:^7.25.9" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9" + "@babel/plugin-transform-block-scoping": "npm:^7.25.9" + "@babel/plugin-transform-class-properties": "npm:^7.25.9" + "@babel/plugin-transform-class-static-block": "npm:^7.25.9" + "@babel/plugin-transform-classes": "npm:^7.25.9" + "@babel/plugin-transform-computed-properties": "npm:^7.25.9" + "@babel/plugin-transform-destructuring": "npm:^7.25.9" + "@babel/plugin-transform-dotall-regex": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-keys": "npm:^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-dynamic-import": "npm:^7.25.9" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.9" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-for-of": "npm:^7.25.9" + "@babel/plugin-transform-function-name": "npm:^7.25.9" + "@babel/plugin-transform-json-strings": "npm:^7.25.9" + "@babel/plugin-transform-literals": "npm:^7.25.9" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9" + "@babel/plugin-transform-member-expression-literals": "npm:^7.25.9" + "@babel/plugin-transform-modules-amd": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-systemjs": "npm:^7.25.9" + "@babel/plugin-transform-modules-umd": "npm:^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9" + "@babel/plugin-transform-new-target": "npm:^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.9" + "@babel/plugin-transform-numeric-separator": "npm:^7.25.9" + "@babel/plugin-transform-object-rest-spread": "npm:^7.25.9" + "@babel/plugin-transform-object-super": "npm:^7.25.9" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.9" + "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + "@babel/plugin-transform-private-methods": "npm:^7.25.9" + "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" + "@babel/plugin-transform-property-literals": "npm:^7.25.9" + "@babel/plugin-transform-regenerator": "npm:^7.25.9" + "@babel/plugin-transform-reserved-words": "npm:^7.25.9" + "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" + "@babel/plugin-transform-spread": "npm:^7.25.9" + "@babel/plugin-transform-sticky-regex": "npm:^7.25.9" + "@babel/plugin-transform-template-literals": "npm:^7.25.9" + "@babel/plugin-transform-typeof-symbol": "npm:^7.25.9" + "@babel/plugin-transform-unicode-escapes": "npm:^7.25.9" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-regex": "npm:^7.25.9" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.9" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.10.6" @@ -1352,7 +1352,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a45cd64ca082262998f6cf508b413ff8a9e967bf33e58337a1fe41c6c939a4c25cc73cd58387792c00d43905cf5fb0ea5ef88dfdc2addf2e8133743088c86c72 + checksum: 10c0/b8b391e3fe69918a2a4f4366034113bd6f57c9748974dbe1b807a728bc41434f1e003cb4204ca63a2a01cbb7c05ba96036261b64756243374374353931d346e6 languageName: node linkType: hard @@ -1370,33 +1370,33 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.22.3": - version: 7.25.7 - resolution: "@babel/preset-react@npm:7.25.7" + version: 7.25.9 + resolution: "@babel/preset-react@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" - "@babel/plugin-transform-react-display-name": "npm:^7.25.7" - "@babel/plugin-transform-react-jsx": "npm:^7.25.7" - "@babel/plugin-transform-react-jsx-development": "npm:^7.25.7" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b133b1a2f46c70a337d8b1ef442e09e3dbdaecb0d6bed8f1cb64dfddc31c16e248b017385ab909caeebd8462111c9c0e1c5409deb10f2be5cb5bcfdaa4d27718 + checksum: 10c0/c294b475ee741f01f63ea0d828862811c453fabc6023f01814ce983bc316388e9d73290164d2b1384c2684db9c330803a3d4d2170285b105dcbacd483329eb93 languageName: node linkType: hard "@babel/preset-typescript@npm:^7.21.5": - version: 7.25.7 - resolution: "@babel/preset-typescript@npm:7.25.7" + version: 7.25.9 + resolution: "@babel/preset-typescript@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" - "@babel/plugin-syntax-jsx": "npm:^7.25.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.25.7" - "@babel/plugin-transform-typescript": "npm:^7.25.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" + "@babel/plugin-transform-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8dc1258e3c5230bbe42ff9811f08924509238e6bd32fa0b7b0c0a6c5e1419512a8e1f733e1b114454d367b7c164beca2cf33acf2ed9e0d99be010c1c5cdbef0c + checksum: 10c0/cbcc5b4bf2891e367627338961113febbe58d361e9a03bd2c8340ede914870f74db35ee367cfd8d0fca0872149bfb58b090d0a4815de7c05d0a8abb3d961eead languageName: node linkType: hard @@ -1410,48 +1410,47 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.7 - resolution: "@babel/runtime@npm:7.25.7" + version: 7.25.9 + resolution: "@babel/runtime@npm:7.25.9" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/86b7829d2fc9343714a9afe92757cf96c4dc799006ca61d73cda62f4b9e29bfa1ce36794955bc6cb4c188f5b10db832c949339895e1bbe81a69022d9d578ce29 + checksum: 10c0/d1727a47eab67b8a742cbf1ef336a20c3d906fe65d6316d073c72479125addfa4358c44dd7b95d114f241b93409b134fad7cea43f3bf8ca7e2ef344177eb72d8 languageName: node linkType: hard -"@babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": - version: 7.25.7 - resolution: "@babel/template@npm:7.25.7" +"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10c0/8ae9e36e4330ee83d4832531d1d9bec7dc2ef6a2a8afa1ef1229506fd60667abcb17f306d1c3d7e582251270597022990c845d5d69e7add70a5aea66720decb9 + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab languageName: node linkType: hard -"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/traverse@npm:7.25.7" +"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" + "@babel/code-frame": "npm:^7.25.9" + "@babel/generator": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/75d73e52c507a7a7a4c7971d6bf4f8f26fdd094e0d3a0193d77edf6a5efa36fc3db91ec5cc48e8b94e6eb5d5ad21af0a1040e71309172851209415fd105efb1a + checksum: 10c0/e90be586a714da4adb80e6cb6a3c5cfcaa9b28148abdafb065e34cc109676fc3db22cf98cd2b2fff66ffb9b50c0ef882cab0f466b6844be0f6c637b82719bba1 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.7, @babel/types@npm:^7.25.8, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.25.8 - resolution: "@babel/types@npm:7.25.8" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.25.9 + resolution: "@babel/types@npm:7.25.9" dependencies: - "@babel/helper-string-parser": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/55ca2d6df6426c98db2769ce884ce5e9de83a512ea2dd7bcf56c811984dc14351cacf42932a723630c5afcff2455809323decd645820762182f10b7b5252b59f + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/33890d08bcb06b26a3a60e4c6c996cbdf2b8d8a3c212664de659c2775f80b002c5f2bceedaa309c384ff5e99bd579794fe6a7e41de07df70246f43c55016d349 languageName: node linkType: hard @@ -16981,13 +16980,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 - languageName: node - linkType: hard - "to-object-path@npm:^0.3.0": version: 0.3.0 resolution: "to-object-path@npm:0.3.0" From 3aa38841bd1bf76b0c2ecccce241c186db1aa397 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:36:14 +0200 Subject: [PATCH 259/550] Update formatjs monorepo (#32651) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 238 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 140 insertions(+), 98 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5b563d52d6..cfe57e724c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2249,6 +2249,17 @@ __metadata: languageName: node linkType: hard +"@formatjs/ecma402-abstract@npm:2.2.1": + version: 2.2.1 + resolution: "@formatjs/ecma402-abstract@npm:2.2.1" + dependencies: + "@formatjs/fast-memoize": "npm:2.2.2" + "@formatjs/intl-localematcher": "npm:0.5.6" + tslib: "npm:2" + checksum: 10c0/bb0b01282368d201d9bcfb3232963af90069f6048da5824d38a674118fd49a0cb92b05d19d2526fe6d035428b2e47e1abd671bb59a673317f1418e67974253fa + languageName: node + linkType: hard + "@formatjs/fast-memoize@npm:2.2.1": version: 2.2.1 resolution: "@formatjs/fast-memoize@npm:2.2.1" @@ -2258,6 +2269,15 @@ __metadata: languageName: node linkType: hard +"@formatjs/fast-memoize@npm:2.2.2": + version: 2.2.2 + resolution: "@formatjs/fast-memoize@npm:2.2.2" + dependencies: + tslib: "npm:2" + checksum: 10c0/cebbf632a6ed8798ed67dba59d05be8bbe81c9ada7bcbc8ce69798fbaa5e0117c35792f212097d28b8b06fb99cf73bdbc7754702c06cda34f847e5082814643b + languageName: node + linkType: hard + "@formatjs/icu-messageformat-parser@npm:2.7.10": version: 2.7.10 resolution: "@formatjs/icu-messageformat-parser@npm:2.7.10" @@ -2269,14 +2289,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.8.0": - version: 2.8.0 - resolution: "@formatjs/icu-messageformat-parser@npm:2.8.0" +"@formatjs/icu-messageformat-parser@npm:2.9.1": + version: 2.9.1 + resolution: "@formatjs/icu-messageformat-parser@npm:2.9.1" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/icu-skeleton-parser": "npm:1.8.4" - tslib: "npm:^2.7.0" - checksum: 10c0/f8cf835817529ec5c7aed55e60c2584ffe78b6d7f079526e2809af4fdd32d85c4569a01e806861e4352bb5ca996116ea5006870d7e40e01c79878df345e8ba4d + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/icu-skeleton-parser": "npm:1.8.5" + tslib: "npm:2" + checksum: 10c0/53554edc7d41f6bd737dc3bb3e03dcd4b4081b4fc9a70383612b87993c1639747d1d3827d8ebb13f8bf3566c60442549a0a42df4959699eef76633d4c7b49b25 languageName: node linkType: hard @@ -2290,25 +2310,35 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.7.0": - version: 6.7.0 - resolution: "@formatjs/intl-displaynames@npm:6.7.0" +"@formatjs/icu-skeleton-parser@npm:1.8.5": + version: 1.8.5 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.5" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/intl-localematcher": "npm:0.5.5" - tslib: "npm:^2.7.0" - checksum: 10c0/d4814ca580ab261681d2926c3d0df26c445df8e18891dff5cc6363f3c7ea9db393ed1056d8c5ab9277b5fb5e40d44444e7f92935f64f8282c8859c9dab8caabf + "@formatjs/ecma402-abstract": "npm:2.2.1" + tslib: "npm:2" + checksum: 10c0/3e5ddd26e5dc983547320ca09b4a5daa692a00c15382e85474a9a539c223b581dba2290708d71aae12589c3ddd053b3bfd0dab0a07a11c44033fb313605566bc languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.6.0": - version: 7.6.0 - resolution: "@formatjs/intl-listformat@npm:7.6.0" +"@formatjs/intl-displaynames@npm:6.8.1": + version: 6.8.1 + resolution: "@formatjs/intl-displaynames@npm:6.8.1" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/intl-localematcher": "npm:0.5.5" - tslib: "npm:^2.7.0" - checksum: 10c0/8732f492d0faa3d3c633fc9247af6953c15ca8ae9a7cc7de620afa86bbdcb8a92a8a76e36aaf2dbc1fb25d1e9c0ed48c9031926caef9900f68d18772b7e8ce29 + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/intl-localematcher": "npm:0.5.6" + tslib: "npm:2" + checksum: 10c0/6d39c7bbc3cf0b1398463d662662e5c7c8b873fe977e93b7d702a337f1ed639246492b71b7138c1f193df9e1045add5609edb3fd3efc76c6174ce134c02a186f + languageName: node + linkType: hard + +"@formatjs/intl-listformat@npm:7.7.1": + version: 7.7.1 + resolution: "@formatjs/intl-listformat@npm:7.7.1" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/intl-localematcher": "npm:0.5.6" + tslib: "npm:2" + checksum: 10c0/9ac38d34956ee8018c000bbd594c84f1de283d18441f1376b072658844735a4ebee61ac4711f824dd0a89f4a855acfc7a24159e4cd8a4747609b1d2153316a61 languageName: node linkType: hard @@ -2321,34 +2351,43 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-pluralrules@npm:^5.2.2": - version: 5.2.17 - resolution: "@formatjs/intl-pluralrules@npm:5.2.17" +"@formatjs/intl-localematcher@npm:0.5.6": + version: 0.5.6 + resolution: "@formatjs/intl-localematcher@npm:0.5.6" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/intl-localematcher": "npm:0.5.5" - tslib: "npm:^2.7.0" - checksum: 10c0/d1389821d8b853433ba4b3b7c1b5c08244d6b2dc5f3e54cc171336c8e6ab545b9eb0f388ce98f1245879693bf3068ffc4df2e5f1c7dee0a1e87a058a5c4ce8fc + tslib: "npm:2" + checksum: 10c0/39fc454641b7871f4b37416a01c7851624db6f1bf6cdcd5c854dfe06b95c0ca7540ec7c803a654140fc3f1c758596a684de8054bc95c4d6c7962091c251f5671 languageName: node linkType: hard -"@formatjs/intl@npm:2.10.9": - version: 2.10.9 - resolution: "@formatjs/intl@npm:2.10.9" +"@formatjs/intl-pluralrules@npm:^5.2.2": + version: 5.3.1 + resolution: "@formatjs/intl-pluralrules@npm:5.3.1" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/fast-memoize": "npm:2.2.1" - "@formatjs/icu-messageformat-parser": "npm:2.8.0" - "@formatjs/intl-displaynames": "npm:6.7.0" - "@formatjs/intl-listformat": "npm:7.6.0" - intl-messageformat: "npm:10.7.1" - tslib: "npm:^2.7.0" + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/intl-localematcher": "npm:0.5.6" + tslib: "npm:2" + checksum: 10c0/71a87aa81d5d69d56dca0636144f8f9714176b95fe3bc92ae1e455322c09b5b09ba0018315d81def00e89fc95e4fbffe41110104c86eb189ba6d58ac09efa48c + languageName: node + linkType: hard + +"@formatjs/intl@npm:2.10.11": + version: 2.10.11 + resolution: "@formatjs/intl@npm:2.10.11" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/fast-memoize": "npm:2.2.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@formatjs/intl-displaynames": "npm:6.8.1" + "@formatjs/intl-listformat": "npm:7.7.1" + intl-messageformat: "npm:10.7.3" + tslib: "npm:2" peerDependencies: typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/9be5c6e7e8371904789d0771ee97f04cdf16de3f6f4aa01998b3f8c64aa36d9bf91c491ebf95fa2dc6ec16a7d1bb6e3738ddbec02005c199e786133eb0e5795b + checksum: 10c0/83baa76d1194dbaae38c21d28cdc4e1ce024f8c49a37e2c02629a9f6afe18912f640435e346fae11af7d8128dac6355b36b93cff37685542ab3095edf3ec6d19 languageName: node linkType: hard @@ -2372,23 +2411,23 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.17": - version: 3.13.17 - resolution: "@formatjs/ts-transformer@npm:3.13.17" +"@formatjs/ts-transformer@npm:3.13.20": + version: 3.13.20 + resolution: "@formatjs/ts-transformer@npm:3.13.20" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.8.0" - "@types/json-stable-stringify": "npm:^1.0.32" + "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@types/json-stable-stringify": "npm:1" "@types/node": "npm:14 || 16 || 17 || 18 || 20" - chalk: "npm:^4.0.0" - json-stable-stringify: "npm:^1.0.1" - tslib: "npm:^2.7.0" + chalk: "npm:4" + json-stable-stringify: "npm:1" + tslib: "npm:2" typescript: "npm:5" peerDependencies: ts-jest: ">=27" peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/1619f771d8aa69cf63f05199ebc28b57a5e0850b64dc9c2bd0df73d8f388a3323c47f13bcc742a51a7560349591282d88695e6fb9a646b0e7d4f7d0b07e2c5c0 + checksum: 10c0/0c1a203ce2e0efc24b9c1fc087771330f9630ebb4220e34dd2fffe64d5ee94816554df8ed8402a54dd588c186617765efb6c200a3373cf1d5dfb093ba8d70416 languageName: node linkType: hard @@ -3627,7 +3666,7 @@ __metadata: languageName: node linkType: hard -"@types/hoist-non-react-statics@npm:^3.3.1": +"@types/hoist-non-react-statics@npm:3, @types/hoist-non-react-statics@npm:^3.3.1": version: 3.3.5 resolution: "@types/hoist-non-react-statics@npm:3.3.5" dependencies: @@ -3720,10 +3759,10 @@ __metadata: languageName: node linkType: hard -"@types/json-stable-stringify@npm:^1.0.32": - version: 1.0.35 - resolution: "@types/json-stable-stringify@npm:1.0.35" - checksum: 10c0/67b50a86478f932c932ba21515b80700a8844d55e0656b3abe2c32c41c1c405c70fcd10b30ff8f38d1869871af2deae63ffdea54ce72cc2ee92e94a9d1cf2b6f +"@types/json-stable-stringify@npm:1, @types/json-stable-stringify@npm:^1.0.32": + version: 1.1.0 + resolution: "@types/json-stable-stringify@npm:1.1.0" + checksum: 10c0/8f69944701510243cd3a83aa44363a8a4d366f11a659b258f69fb3ad0f94ab1e2533206a2c929ac7fd18784d201b663b3f02a45934f545c926f051d8cb4df095 languageName: node linkType: hard @@ -5139,21 +5178,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.19 - resolution: "babel-plugin-formatjs@npm:10.5.19" + version: 10.5.22 + resolution: "babel-plugin-formatjs@npm:10.5.22" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.8.0" - "@formatjs/ts-transformer": "npm:3.13.17" + "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@formatjs/ts-transformer": "npm:3.13.20" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" - tslib: "npm:^2.7.0" - checksum: 10c0/29d1e1fe8c97412a1c6c95dde3753ea28ddbe39040aaead90c67106422ce12dad363aee47a2729f685807bacf7f422ef607f015b325203a8201249b74e84bab3 + tslib: "npm:2" + checksum: 10c0/c35ec81d89eb228d23d3d62e7e4d0e5d7216f0d09f91b1dc3c46e049c5515a201fcfe77c1079924c6bfb9883b2941af91431f479a0f5a24a0574b695f18b64bc languageName: node linkType: hard @@ -5809,6 +5848,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:4, chalk@npm:^4.0, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + "chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -5830,16 +5879,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - "chalk@npm:~5.3.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" @@ -9259,7 +9298,7 @@ __metadata: languageName: node linkType: hard -"hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": +"hoist-non-react-statics@npm:3, hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: @@ -9700,15 +9739,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.1, intl-messageformat@npm:^10.3.5": - version: 10.7.1 - resolution: "intl-messageformat@npm:10.7.1" +"intl-messageformat@npm:10.7.3, intl-messageformat@npm:^10.3.5": + version: 10.7.3 + resolution: "intl-messageformat@npm:10.7.3" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/fast-memoize": "npm:2.2.1" - "@formatjs/icu-messageformat-parser": "npm:2.8.0" - tslib: "npm:^2.7.0" - checksum: 10c0/b9383a2c0ce7888d34fa7bbb4ba7cc139ea77a372bd9268412e97e8a1357ebd1880beb04affdbd7175ae27db2a57024f21e804b34f2b159fd1c3d221f69c40d4 + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/fast-memoize": "npm:2.2.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.1" + tslib: "npm:2" + checksum: 10c0/7ddd118c04023c9ecdf9a2270753abd876e90a428d5106ce8373622ddefe72ff1daa33993b12065a3339b7f838e9266c3db9048aa7dd20012c8703c6ebe26fd4 languageName: node linkType: hard @@ -11126,12 +11165,15 @@ __metadata: languageName: node linkType: hard -"json-stable-stringify@npm:^1.0.1": - version: 1.0.2 - resolution: "json-stable-stringify@npm:1.0.2" +"json-stable-stringify@npm:1, json-stable-stringify@npm:^1.0.1": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" jsonify: "npm:^0.0.1" - checksum: 10c0/502d021c3c59c09587faa40d7693d77c00460fd6c68bae95d6e35804909ec8c4aec71b136d3a09df61a7ebf803eb6e820f23ede76b77e74b8b02c76afb2ada8c + object-keys: "npm:^1.1.1" + checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde languageName: node linkType: hard @@ -14430,26 +14472,26 @@ __metadata: linkType: hard "react-intl@npm:^6.4.2": - version: 6.8.1 - resolution: "react-intl@npm:6.8.1" + version: 6.8.4 + resolution: "react-intl@npm:6.8.4" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.0" - "@formatjs/icu-messageformat-parser": "npm:2.8.0" - "@formatjs/intl": "npm:2.10.9" - "@formatjs/intl-displaynames": "npm:6.7.0" - "@formatjs/intl-listformat": "npm:7.6.0" - "@types/hoist-non-react-statics": "npm:^3.3.1" + "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@formatjs/intl": "npm:2.10.11" + "@formatjs/intl-displaynames": "npm:6.8.1" + "@formatjs/intl-listformat": "npm:7.7.1" + "@types/hoist-non-react-statics": "npm:3" "@types/react": "npm:^18.3.11" - hoist-non-react-statics: "npm:^3.3.2" - intl-messageformat: "npm:10.7.1" - tslib: "npm:^2.7.0" + hoist-non-react-statics: "npm:3" + intl-messageformat: "npm:10.7.3" + tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/4ffdf8fd6e82c10de7d1e195336c8bc98fab5f6bc7fde548f7df553caf05677d632977c3287e9b72915f8a01ed98ff8246fdfccea2f7048902f46a596a0db4b2 + checksum: 10c0/a6b417c1cfb36ffe38645fe9daaaf3e1a25660468b8dbd4ccf386be063cc7c0fdeecc3c0490c671721408696b6578262b8db5882d00b76d4ec48d94601b14eab languageName: node linkType: hard @@ -17110,10 +17152,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.7.0": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 +"tslib@npm:2, tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.2, tslib@npm:^2.7.0": + version: 2.8.0 + resolution: "tslib@npm:2.8.0" + checksum: 10c0/31e4d14dc1355e9b89e4d3c893a18abb7f90b6886b089c2da91224d0a7752c79f3ddc41bc1aa0a588ac895bd97bb99c5bc2bfdb2f86de849f31caeb3ba79bbe5 languageName: node linkType: hard From 77cd16f4ee7ab807df6fffb1538a6659a8182a9e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 09:44:02 +0000 Subject: [PATCH 260/550] Update dependency opentelemetry-instrumentation-active_job to v0.7.8 (#32657) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8421f06588..103bd80b81 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -516,7 +516,7 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.1) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.7) + opentelemetry-instrumentation-active_job (0.7.8) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_model_serializers (0.20.2) From 9074c1fac930db91dbf7fb6aad4b73f628b11e94 Mon Sep 17 00:00:00 2001 From: Jonny Saunders Date: Sun, 27 Oct 2024 21:55:18 -0700 Subject: [PATCH 261/550] Use `likes` and `shares` totalItems on status creations and updates (#32620) --- app/lib/activitypub/activity/create.rb | 13 ++++ app/lib/activitypub/parser/status_parser.rb | 8 +++ app/models/status.rb | 26 +++++++- app/models/status_stat.rb | 27 ++++++-- app/serializers/rest/status_serializer.rb | 4 +- .../process_status_update_service.rb | 15 +++++ ..._untrusted_reblogs_count_to_status_stat.rb | 8 +++ db/schema.rb | 4 +- spec/lib/activitypub/activity/create_spec.rb | 26 ++++++++ spec/lib/activitypub/activity/update_spec.rb | 64 +++++++++++++++++++ spec/models/status_spec.rb | 50 +++++++++++++++ spec/requests/api/v1/trends/statuses_spec.rb | 36 +++++++++++ .../rest/status_serializer_spec.rb | 55 ++++++++++++++++ spec/spec_helper.rb | 4 +- 14 files changed, 326 insertions(+), 14 deletions(-) create mode 100644 db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb create mode 100644 spec/serializers/rest/status_serializer_spec.rb diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index d04f7226a0..85a66c6852 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -53,6 +53,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity ApplicationRecord.transaction do @status = Status.create!(@params) attach_tags(@status) + attach_counts(@status) end resolve_thread(@status) @@ -166,6 +167,18 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end end + def attach_counts(status) + likes = @status_parser.favourites_count + shares = @status_parser.reblogs_count + return if likes.nil? && shares.nil? + + status.status_stat.tap do |status_stat| + status_stat.untrusted_reblogs_count = shares unless shares.nil? + status_stat.untrusted_favourites_count = likes unless likes.nil? + status_stat.save if status_stat.changed? + end + end + def process_tags return if @object['tag'].nil? diff --git a/app/lib/activitypub/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb index 2940aea44b..3d2be3c66c 100644 --- a/app/lib/activitypub/parser/status_parser.rb +++ b/app/lib/activitypub/parser/status_parser.rb @@ -93,6 +93,14 @@ class ActivityPub::Parser::StatusParser lang.presence && NORMALIZED_LOCALE_NAMES.fetch(lang.downcase.to_sym, lang) end + def favourites_count + @object.dig(:likes, :totalItems) + end + + def reblogs_count + @object.dig(:shares, :totalItems) + end + private def raw_language_code diff --git a/app/models/status.rb b/app/models/status.rb index e0630733d8..f0a4f50ff6 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -303,12 +303,34 @@ class Status < ApplicationRecord status_stat&.favourites_count || 0 end + # Reblogs count received from an external instance + def untrusted_reblogs_count + status_stat&.untrusted_reblogs_count unless local? + end + + # Favourites count received from an external instance + def untrusted_favourites_count + status_stat&.untrusted_favourites_count unless local? + end + def increment_count!(key) - update_status_stat!(key => public_send(key) + 1) + if key == :favourites_count && !untrusted_favourites_count.nil? + update_status_stat!(favourites_count: favourites_count + 1, untrusted_favourites_count: untrusted_favourites_count + 1) + elsif key == :reblogs_count && !untrusted_reblogs_count.nil? + update_status_stat!(reblogs_count: reblogs_count + 1, untrusted_reblogs_count: untrusted_reblogs_count + 1) + else + update_status_stat!(key => public_send(key) + 1) + end end def decrement_count!(key) - update_status_stat!(key => [public_send(key) - 1, 0].max) + if key == :favourites_count && !untrusted_favourites_count.nil? + update_status_stat!(favourites_count: [favourites_count - 1, 0].max, untrusted_favourites_count: [untrusted_favourites_count - 1, 0].max) + elsif key == :reblogs_count && !untrusted_reblogs_count.nil? + update_status_stat!(reblogs_count: [reblogs_count - 1, 0].max, untrusted_reblogs_count: [untrusted_reblogs_count - 1, 0].max) + else + update_status_stat!(key => [public_send(key) - 1, 0].max) + end end def trendable? diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb index 47aa144777..14a02071a7 100644 --- a/app/models/status_stat.rb +++ b/app/models/status_stat.rb @@ -4,18 +4,24 @@ # # Table name: status_stats # -# id :bigint(8) not null, primary key -# status_id :bigint(8) not null -# replies_count :bigint(8) default(0), not null -# reblogs_count :bigint(8) default(0), not null -# favourites_count :bigint(8) default(0), not null -# created_at :datetime not null -# updated_at :datetime not null +# id :bigint(8) not null, primary key +# status_id :bigint(8) not null +# replies_count :bigint(8) default(0), not null +# reblogs_count :bigint(8) default(0), not null +# favourites_count :bigint(8) default(0), not null +# created_at :datetime not null +# updated_at :datetime not null +# untrusted_favourites_count :bigint(8) +# untrusted_reblogs_count :bigint(8) # class StatusStat < ApplicationRecord belongs_to :status, inverse_of: :status_stat + before_validation :clamp_untrusted_counts + + MAX_UNTRUSTED_COUNT = 100_000_000 + def replies_count [attributes['replies_count'], 0].max end @@ -27,4 +33,11 @@ class StatusStat < ApplicationRecord def favourites_count [attributes['favourites_count'], 0].max end + + private + + def clamp_untrusted_counts + self.untrusted_favourites_count = untrusted_favourites_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_favourites_count.present? + self.untrusted_reblogs_count = untrusted_reblogs_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_reblogs_count.present? + end end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index e17e8c823e..e108c789c7 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -84,11 +84,11 @@ class REST::StatusSerializer < ActiveModel::Serializer end def reblogs_count - relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count + object.untrusted_reblogs_count || relationships&.attributes_map&.dig(object.id, :reblogs_count) || object.reblogs_count end def favourites_count - relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count + object.untrusted_favourites_count || relationships&.attributes_map&.dig(object.id, :favourites_count) || object.favourites_count end def favourited diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 141ad24e92..1c7584b769 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -43,6 +43,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService update_poll! update_immediate_attributes! update_metadata! + update_counts! create_edits! end @@ -62,6 +63,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService with_redis_lock("create:#{@uri}") do update_poll!(allow_significant_changes: false) queue_poll_notifications! + update_counts! end end @@ -239,6 +241,19 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end end + def update_counts! + likes = @status_parser.favourites_count + shares = @status_parser.reblogs_count + return if likes.nil? && shares.nil? + + @status.status_stat.tap do |status_stat| + status_stat.untrusted_reblogs_count = shares unless shares.nil? + status_stat.untrusted_favourites_count = likes unless likes.nil? + + status_stat.save if status_stat.changed? + end + end + def expected_type? equals_or_includes_any?(@json['type'], %w(Note Question)) end diff --git a/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb b/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb new file mode 100644 index 0000000000..e34caff240 --- /dev/null +++ b/db/migrate/20241022214312_add_untrusted_favourites_count_and_untrusted_reblogs_count_to_status_stat.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddUntrustedFavouritesCountAndUntrustedReblogsCountToStatusStat < ActiveRecord::Migration[7.1] + def change + add_column :status_stats, :untrusted_favourites_count, :bigint, null: true + add_column :status_stats, :untrusted_reblogs_count, :bigint, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 5f7b3a3305..bea9ad46be 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_10_14_010506) do +ActiveRecord::Schema[7.1].define(version: 2024_10_22_214312) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1008,6 +1008,8 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_14_010506) do t.bigint "favourites_count", default: 0, null: false t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false + t.bigint "untrusted_favourites_count" + t.bigint "untrusted_reblogs_count" t.index ["status_id"], name: "index_status_stats_on_status_id", unique: true end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index bdc8fd9d51..9482a30959 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -928,6 +928,32 @@ RSpec.describe ActivityPub::Activity::Create do expect(poll.votes.first).to be_nil end end + + context 'with counts' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, + type: 'Note', + content: 'Lorem ipsum', + likes: { + id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar', '/likes'].join, + type: 'Collection', + totalItems: 50, + }, + shares: { + id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar', '/shares'].join, + type: 'Collection', + totalItems: 100, + }, + } + end + + it 'uses the counts from the created object' do + status = sender.statuses.first + expect(status.untrusted_favourites_count).to eq 50 + expect(status.untrusted_reblogs_count).to eq 100 + end + end end context 'when object URI uses bearcaps' do diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb index 87e96d2d1b..b829f3a5ad 100644 --- a/spec/lib/activitypub/activity/update_spec.rb +++ b/spec/lib/activitypub/activity/update_spec.rb @@ -115,5 +115,69 @@ RSpec.describe ActivityPub::Activity::Update do expect(status.edited_at).to be_nil end end + + context 'with a Note object' do + let(:updated) { nil } + let(:favourites) { 50 } + let(:reblogs) { 100 } + + let!(:status) { Fabricate(:status, uri: 'https://example.com/statuses/poll', account: sender) } + let(:json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Update', + actor: sender.uri, + object: { + type: 'Note', + id: status.uri, + content: 'Foo', + updated: updated, + likes: { + id: "#{status.uri}/likes", + type: 'Collection', + totalItems: favourites, + }, + shares: { + id: "#{status.uri}/shares", + type: 'Collection', + totalItems: reblogs, + }, + }, + }.with_indifferent_access + end + + shared_examples 'updates counts' do + it 'updates the reblog count' do + expect(status.untrusted_reblogs_count).to eq reblogs + end + + it 'updates the favourites count' do + expect(status.untrusted_favourites_count).to eq favourites + end + end + + context 'with an implicit update' do + before do + status.update!(uri: ActivityPub::TagManager.instance.uri_for(status)) + subject.perform + end + + it_behaves_like 'updates counts' + end + + context 'with an explicit update' do + let(:favourites) { 150 } + let(:reblogs) { 200 } + let(:updated) { Time.now.utc.iso8601 } + + before do + status.update!(uri: ActivityPub::TagManager.instance.uri_for(status)) + subject.perform + end + + it_behaves_like 'updates counts' + end + end end end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 90f5968438..36b13df815 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -164,6 +164,31 @@ RSpec.describe Status do end end + describe '#untrusted_reblogs_count' do + before do + alice.update(domain: 'example.com') + subject.status_stat.tap do |status_stat| + status_stat.untrusted_reblogs_count = 0 + status_stat.save + end + subject.save + end + + it 'is incremented by the number of reblogs' do + Fabricate(:status, account: bob, reblog: subject) + Fabricate(:status, account: alice, reblog: subject) + + expect(subject.untrusted_reblogs_count).to eq 2 + end + + it 'is decremented when reblog is removed' do + reblog = Fabricate(:status, account: bob, reblog: subject) + expect(subject.untrusted_reblogs_count).to eq 1 + reblog.destroy + expect(subject.untrusted_reblogs_count).to eq 0 + end + end + describe '#replies_count' do it 'is the number of replies' do Fabricate(:status, account: bob, thread: subject) @@ -194,6 +219,31 @@ RSpec.describe Status do end end + describe '#untrusted_favourites_count' do + before do + alice.update(domain: 'example.com') + subject.status_stat.tap do |status_stat| + status_stat.untrusted_favourites_count = 0 + status_stat.save + end + subject.save + end + + it 'is incremented by favorites' do + Fabricate(:favourite, account: bob, status: subject) + Fabricate(:favourite, account: alice, status: subject) + + expect(subject.untrusted_favourites_count).to eq 2 + end + + it 'is decremented when favourite is removed' do + favourite = Fabricate(:favourite, account: bob, status: subject) + expect(subject.untrusted_favourites_count).to eq 1 + favourite.destroy + expect(subject.untrusted_favourites_count).to eq 0 + end + end + describe '#proper' do it 'is itself for original statuses' do expect(subject.proper).to eq subject diff --git a/spec/requests/api/v1/trends/statuses_spec.rb b/spec/requests/api/v1/trends/statuses_spec.rb index fe00c9c645..414d7651b9 100644 --- a/spec/requests/api/v1/trends/statuses_spec.rb +++ b/spec/requests/api/v1/trends/statuses_spec.rb @@ -39,6 +39,42 @@ RSpec.describe 'API V1 Trends Statuses' do end Trends::Statuses.new(threshold: 1, decay_threshold: -1).refresh end + + context 'with a comically inflated external interactions count' do + def prepare_fake_trends + fake_remote_account = Fabricate(:account, domain: 'other.com') + fake_status = Fabricate(:status, account: fake_remote_account, text: 'I am a big faker', trendable: true, language: 'en') + fake_status.status_stat.tap do |status_stat| + status_stat.reblogs_count = 0 + status_stat.favourites_count = 0 + status_stat.untrusted_reblogs_count = 1_000_000_000 + status_stat.untrusted_favourites_count = 1_000_000_000 + status_stat.save + end + real_remote_account = Fabricate(:account, domain: 'other.com') + real_status = Fabricate(:status, account: real_remote_account, text: 'I make real friends online', trendable: true, language: 'en') + real_status.status_stat.tap do |status_stat| + status_stat.reblogs_count = 10 + status_stat.favourites_count = 10 + status_stat.untrusted_reblogs_count = 10 + status_stat.untrusted_favourites_count = 10 + status_stat.save + end + Trends.statuses.add(fake_status, 100) + Trends.statuses.add(real_status, 101) + Trends::Statuses.new(threshold: 1, decay_threshold: 1).refresh + end + + it 'ignores the feeble attempts at deception' do + prepare_fake_trends + stub_const('Api::BaseController::DEFAULT_STATUSES_LIMIT', 10) + get '/api/v1/trends/statuses' + + expect(response).to have_http_status(200) + expect(response.parsed_body.length).to eq(1) + expect(response.parsed_body[0]['content']).to eq('I make real friends online') + end + end end end end diff --git a/spec/serializers/rest/status_serializer_spec.rb b/spec/serializers/rest/status_serializer_spec.rb new file mode 100644 index 0000000000..e96d1fbe67 --- /dev/null +++ b/spec/serializers/rest/status_serializer_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::StatusSerializer do + subject do + serialized_record_json( + status, + described_class, + options: { + scope: current_user, + scope_name: :current_user, + } + ) + end + + let(:current_user) { Fabricate(:user) } + let(:alice) { Fabricate(:account, username: 'alice') } + let(:bob) { Fabricate(:account, username: 'bob', domain: 'other.com') } + let(:status) { Fabricate(:status, account: alice) } + + context 'with a remote status' do + let(:status) { Fabricate(:status, account: bob) } + + before do + status.status_stat.tap do |status_stat| + status_stat.reblogs_count = 10 + status_stat.favourites_count = 20 + status_stat.save + end + end + + context 'with only trusted counts' do + it 'shows the trusted counts' do + expect(subject['reblogs_count']).to eq(10) + expect(subject['favourites_count']).to eq(20) + end + end + + context 'with untrusted counts' do + before do + status.status_stat.tap do |status_stat| + status_stat.untrusted_reblogs_count = 30 + status_stat.untrusted_favourites_count = 40 + status_stat.save + end + end + + it 'shows the untrusted counts' do + expect(subject['reblogs_count']).to eq(30) + expect(subject['favourites_count']).to eq(40) + end + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2a27544407..13683e404e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -34,8 +34,8 @@ RSpec.configure do |config| end end -def serialized_record_json(record, serializer, adapter: nil) - options = { serializer: serializer } +def serialized_record_json(record, serializer, adapter: nil, options: {}) + options[:serializer] = serializer options[:adapter] = adapter if adapter.present? JSON.parse( ActiveModelSerializers::SerializableResource.new( From 1edb527072b8004b0ac25157d49f992b697ff800 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 28 Oct 2024 03:34:58 -0400 Subject: [PATCH 262/550] Enhance coverage for `StatusPin` model (#32515) --- app/models/status_pin.rb | 12 ++- spec/models/status_pin_spec.rb | 140 ++++++++++++++++++++------------- 2 files changed, 94 insertions(+), 58 deletions(-) diff --git a/app/models/status_pin.rb b/app/models/status_pin.rb index dae4a5b4e6..83711dde42 100644 --- a/app/models/status_pin.rb +++ b/app/models/status_pin.rb @@ -17,11 +17,17 @@ class StatusPin < ApplicationRecord validates_with StatusPinValidator - after_destroy :invalidate_cleanup_info + after_destroy :invalidate_cleanup_info, if: %i(account_matches_status_account? account_local?) + + delegate :local?, to: :account, prefix: true + + private def invalidate_cleanup_info - return unless status&.account_id == account_id && account.local? - account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unpin) end + + def account_matches_status_account? + status&.account_id == account_id + end end diff --git a/spec/models/status_pin_spec.rb b/spec/models/status_pin_spec.rb index da375009ae..1501d43cc4 100644 --- a/spec/models/status_pin_spec.rb +++ b/spec/models/status_pin_spec.rb @@ -3,70 +3,100 @@ require 'rails_helper' RSpec.describe StatusPin do - describe 'validations' do - it 'allows pins of own statuses' do - account = Fabricate(:account) - status = Fabricate(:status, account: account) + describe 'Validations' do + subject { Fabricate.build :status_pin } - expect(described_class.new(account: account, status: status).save).to be true - end + context 'with an account pinning statuses' do + subject { Fabricate.build :status_pin, account: account } - it 'does not allow pins of statuses by someone else' do - account = Fabricate(:account) - status = Fabricate(:status) + let(:account) { Fabricate(:account) } - expect(described_class.new(account: account, status: status).save).to be false - end + context 'with a self-owned status' do + let(:status) { Fabricate(:status, account: account) } - it 'does not allow pins of reblogs' do - account = Fabricate(:account) - status = Fabricate(:status, account: account) - reblog = Fabricate(:status, reblog: status) - - expect(described_class.new(account: account, status: reblog).save).to be false - end - - it 'does allow pins of direct statuses' do - account = Fabricate(:account) - status = Fabricate(:status, account: account, visibility: :private) - - expect(described_class.new(account: account, status: status).save).to be true - end - - it 'does not allow pins of direct statuses' do - account = Fabricate(:account) - status = Fabricate(:status, account: account, visibility: :direct) - - expect(described_class.new(account: account, status: status).save).to be false - end - - context 'with a pin limit' do - before { stub_const('StatusPinValidator::PIN_LIMIT', 2) } - - it 'does not allow pins above the max' do - account = Fabricate(:account) - - Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) - - pin = described_class.new(account: account, status: Fabricate(:status, account: account)) - expect(pin.save) - .to be(false) - - expect(pin.errors[:base]) - .to contain_exactly(I18n.t('statuses.pin_errors.limit')) + it { is_expected.to allow_value(status).for(:status) } end - it 'allows pins above the max for remote accounts' do - account = Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') + context 'with a status from someone else' do + let(:status) { Fabricate(:status) } - Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) + it { is_expected.to_not allow_value(status).for(:status).against(:base) } + end - pin = described_class.new(account: account, status: Fabricate(:status, account: account)) - expect(pin.save) - .to be(true) + context 'with a reblog status' do + let(:status) { Fabricate(:status, reblog: Fabricate(:status, account: account)) } - expect(pin.errors[:base]) - .to be_empty + it { is_expected.to_not allow_value(status).for(:status).against(:base) } + end + + context 'with a private status' do + let(:status) { Fabricate(:status, account: account, visibility: :private) } + + it { is_expected.to allow_value(status).for(:status).against(:base) } + end + + context 'with a direct status' do + let(:status) { Fabricate(:status, account: account, visibility: :direct) } + + it { is_expected.to_not allow_value(status).for(:status).against(:base) } + end + end + + context 'with a validator pin limit' do + before { stub_const('StatusPinValidator::PIN_LIMIT', 2) } + + context 'with a local account at the limit' do + let(:account) { Fabricate :account } + + before { Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) } + + it { is_expected.to_not allow_value(account).for(:account).against(:base).with_message(I18n.t('statuses.pin_errors.limit')) } + end + + context 'with a remote account at the limit' do + let(:account) { Fabricate :account, domain: 'remote.test' } + + before { Fabricate.times(StatusPinValidator::PIN_LIMIT, :status_pin, account: account) } + + it { is_expected.to allow_value(account).for(:account) } + end + end + end + + describe 'Callbacks' do + describe 'Invalidating status via policy' do + subject { Fabricate :status_pin, status: Fabricate(:status, account: account), account: account } + + context 'with a local account that owns the status and has a policy' do + let(:account) { Fabricate :account, domain: nil } + + before do + Fabricate :account_statuses_cleanup_policy, account: account + account.statuses_cleanup_policy.record_last_inspected(subject.status.id + 1_024) + end + + it 'calls the invalidator on destroy' do + expect { subject.destroy } + .to change(account.statuses_cleanup_policy, :last_inspected) + end + end + + context 'with a local account that owns the status and does not have a policy' do + let(:account) { Fabricate :account, domain: nil } + + it 'does not call the invalidator on destroy' do + expect { subject.destroy } + .to_not change(account, :updated_at) + end + end + + context 'with a remote account' do + let(:account) { Fabricate :account, domain: 'host.example' } + + it 'does not call the invalidator on destroy' do + expect { subject.destroy } + .to_not change(account, :updated_at) + end end end end From d547bf2f1e4198d6d5b8c8b200e7287bf03e9961 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 28 Oct 2024 03:37:32 -0400 Subject: [PATCH 263/550] Update rails to version 7.1.4.2 (#32670) --- Gemfile.lock | 106 +++++++++++++++++++++++++-------------------------- package.json | 2 +- yarn.lock | 10 ++--- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 103bd80b81..4c9ccaabd1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,35 +10,35 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (7.1.4.1) - actionpack (= 7.1.4.1) - activesupport (= 7.1.4.1) + actioncable (7.1.4.2) + actionpack (= 7.1.4.2) + activesupport (= 7.1.4.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.4.1) - actionpack (= 7.1.4.1) - activejob (= 7.1.4.1) - activerecord (= 7.1.4.1) - activestorage (= 7.1.4.1) - activesupport (= 7.1.4.1) + actionmailbox (7.1.4.2) + actionpack (= 7.1.4.2) + activejob (= 7.1.4.2) + activerecord (= 7.1.4.2) + activestorage (= 7.1.4.2) + activesupport (= 7.1.4.2) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.4.1) - actionpack (= 7.1.4.1) - actionview (= 7.1.4.1) - activejob (= 7.1.4.1) - activesupport (= 7.1.4.1) + actionmailer (7.1.4.2) + actionpack (= 7.1.4.2) + actionview (= 7.1.4.2) + activejob (= 7.1.4.2) + activesupport (= 7.1.4.2) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.4.1) - actionview (= 7.1.4.1) - activesupport (= 7.1.4.1) + actionpack (7.1.4.2) + actionview (= 7.1.4.2) + activesupport (= 7.1.4.2) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -46,15 +46,15 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.4.1) - actionpack (= 7.1.4.1) - activerecord (= 7.1.4.1) - activestorage (= 7.1.4.1) - activesupport (= 7.1.4.1) + actiontext (7.1.4.2) + actionpack (= 7.1.4.2) + activerecord (= 7.1.4.2) + activestorage (= 7.1.4.2) + activesupport (= 7.1.4.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.4.1) - activesupport (= 7.1.4.1) + actionview (7.1.4.2) + activesupport (= 7.1.4.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -64,22 +64,22 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - activejob (7.1.4.1) - activesupport (= 7.1.4.1) + activejob (7.1.4.2) + activesupport (= 7.1.4.2) globalid (>= 0.3.6) - activemodel (7.1.4.1) - activesupport (= 7.1.4.1) - activerecord (7.1.4.1) - activemodel (= 7.1.4.1) - activesupport (= 7.1.4.1) + activemodel (7.1.4.2) + activesupport (= 7.1.4.2) + activerecord (7.1.4.2) + activemodel (= 7.1.4.2) + activesupport (= 7.1.4.2) timeout (>= 0.4.0) - activestorage (7.1.4.1) - actionpack (= 7.1.4.1) - activejob (= 7.1.4.1) - activerecord (= 7.1.4.1) - activesupport (= 7.1.4.1) + activestorage (7.1.4.2) + actionpack (= 7.1.4.2) + activejob (= 7.1.4.2) + activerecord (= 7.1.4.2) + activesupport (= 7.1.4.2) marcel (~> 1.0) - activesupport (7.1.4.1) + activesupport (7.1.4.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -639,20 +639,20 @@ GEM rackup (1.0.0) rack (< 3) webrick - rails (7.1.4.1) - actioncable (= 7.1.4.1) - actionmailbox (= 7.1.4.1) - actionmailer (= 7.1.4.1) - actionpack (= 7.1.4.1) - actiontext (= 7.1.4.1) - actionview (= 7.1.4.1) - activejob (= 7.1.4.1) - activemodel (= 7.1.4.1) - activerecord (= 7.1.4.1) - activestorage (= 7.1.4.1) - activesupport (= 7.1.4.1) + rails (7.1.4.2) + actioncable (= 7.1.4.2) + actionmailbox (= 7.1.4.2) + actionmailer (= 7.1.4.2) + actionpack (= 7.1.4.2) + actiontext (= 7.1.4.2) + actionview (= 7.1.4.2) + activejob (= 7.1.4.2) + activemodel (= 7.1.4.2) + activerecord (= 7.1.4.2) + activestorage (= 7.1.4.2) + activesupport (= 7.1.4.2) bundler (>= 1.15.0) - railties (= 7.1.4.1) + railties (= 7.1.4.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -667,9 +667,9 @@ GEM rails-i18n (7.0.9) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.1.4.1) - actionpack (= 7.1.4.1) - activesupport (= 7.1.4.1) + railties (7.1.4.2) + actionpack (= 7.1.4.2) + activesupport (= 7.1.4.2) irb rackup (>= 1.0.0) rake (>= 12.2) diff --git a/package.json b/package.json index d144b0c156..f907dc4f6c 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@formatjs/intl-pluralrules": "^5.2.2", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", - "@rails/ujs": "7.1.401", + "@rails/ujs": "7.1.402", "@reduxjs/toolkit": "^2.0.1", "@svgr/webpack": "^5.5.0", "arrow-key-navigation": "^1.2.0", diff --git a/yarn.lock b/yarn.lock index cfe57e724c..b8f9d50cf6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2821,7 +2821,7 @@ __metadata: "@formatjs/intl-pluralrules": "npm:^5.2.2" "@gamestdio/websocket": "npm:^0.3.2" "@github/webauthn-json": "npm:^2.1.1" - "@rails/ujs": "npm:7.1.401" + "@rails/ujs": "npm:7.1.402" "@reduxjs/toolkit": "npm:^2.0.1" "@svgr/webpack": "npm:^5.5.0" "@testing-library/dom": "npm:^10.2.0" @@ -3120,10 +3120,10 @@ __metadata: languageName: node linkType: hard -"@rails/ujs@npm:7.1.401": - version: 7.1.401 - resolution: "@rails/ujs@npm:7.1.401" - checksum: 10c0/08eae084c80e837e47cc01d0be25a431495f7dea381dcaaa4ce39a3217fac46bf87d169b3dfcf304ae16e0714de7435c2b8c5eb8d5052e3ba70ef3050a72fa3c +"@rails/ujs@npm:7.1.402": + version: 7.1.402 + resolution: "@rails/ujs@npm:7.1.402" + checksum: 10c0/ccab74b8013ed8a8ab8d7497d0fa510a6ec079725b5fcf679936d80c342940e462b60243ad2cb98128f29db5708a094e319767e8f33a18eb63ceb745de63d1e0 languageName: node linkType: hard From 48f6f46072f009a4e6e2c434a94b90fd58017c25 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:20:47 +0100 Subject: [PATCH 264/550] Update dependency react-select to v5.8.2 (#32661) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b8f9d50cf6..eb509cfdc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14652,8 +14652,8 @@ __metadata: linkType: hard "react-select@npm:^5.7.3": - version: 5.8.1 - resolution: "react-select@npm:5.8.1" + version: 5.8.2 + resolution: "react-select@npm:5.8.2" dependencies: "@babel/runtime": "npm:^7.12.0" "@emotion/cache": "npm:^11.4.0" @@ -14667,7 +14667,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/0fd73e1e472105f980e09c86f0e6adbdc9f2f5c1befa275b08c71653becdd1829f596155a81b5085cb86f18b20bf4f4cc439ab5fe23e68f326e169dcfe00ccf6 + checksum: 10c0/3089b8bfb23f556a7b1de07ea654fc5f5976f531a731a0231bbcbc195afb9294c36f49d712712f2deefc13eb6d7ede4aa1d80cb45b80afd3e26fde2f09db35eb languageName: node linkType: hard From c3919289d2d1b4bcb74b789533debd109bf77f9b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:21:01 +0100 Subject: [PATCH 265/550] Update DefinitelyTyped types (non-major) (#32674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index eb509cfdc4..ac78bdc5a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3725,12 +3725,12 @@ __metadata: linkType: hard "@types/jest@npm:^29.5.2": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: expect: "npm:^29.0.0" pretty-format: "npm:^29.0.0" - checksum: 10c0/9c31af0b155387b9860908830de63c6b79011d7c87c8b61b39da124e26e55423dd51b006749aafe4f0ef3a065016619a1f93ef4b055157d43727f448e67824b7 + checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed languageName: node linkType: hard @@ -3997,12 +3997,12 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7, @types/react@npm:^18.3.11": - version: 18.3.11 - resolution: "@types/react@npm:18.3.11" + version: 18.3.12 + resolution: "@types/react@npm:18.3.12" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/ce80512246ca5bda69db85b9f4f1835189334acfb6b2c4f3eda8cabff1ff1a3ea9ce4f3b895bdbc18c94140aa45592331aa3fdeb557f525c1b048de7ce84fc0e + checksum: 10c0/8bae8d9a41619804561574792e29112b413044eb0d53746dde2b9720c1f9a59f71c895bbd7987cd8ce9500b00786e53bc032dced38cddf42910458e145675290 languageName: node linkType: hard @@ -4135,8 +4135,8 @@ __metadata: linkType: hard "@types/webpack@npm:^4.41.33": - version: 4.41.39 - resolution: "@types/webpack@npm:4.41.39" + version: 4.41.40 + resolution: "@types/webpack@npm:4.41.40" dependencies: "@types/node": "npm:*" "@types/tapable": "npm:^1" @@ -4144,7 +4144,7 @@ __metadata: "@types/webpack-sources": "npm:*" anymatch: "npm:^3.0.0" source-map: "npm:^0.6.0" - checksum: 10c0/740420d092abb80b70263b02609bde209801b060d8e6f3a399a129945cb09182c2ce63dc816908bfbcdb123b35dc4c4fb51367aac2b5974537694cac2631db21 + checksum: 10c0/ecd530e5db4c21ec61795eec538026f96c126323836249a83e72805afd1d0b1141fc781f14d4a59d77f877523384b4c5d79dc391cfb901e7a781a9aa085f8198 languageName: node linkType: hard From 6a5a59c28ca081554026e13c0e71763c0fdc033c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:21:24 +0000 Subject: [PATCH 266/550] Update dependency @formatjs/cli to v6.3.5 (#32675) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ac78bdc5a2..4ef44a7591 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2204,8 +2204,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.3.0 - resolution: "@formatjs/cli@npm:6.3.0" + version: 6.3.5 + resolution: "@formatjs/cli@npm:6.3.5" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2234,7 +2234,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/9a803eacbcf2060c8b3cedcf9eef1300df73722eeadaebf7282ff0e9cc41bdcb98d60cea46c297fb9060a07ccd56d44f70247d659827086a55a1d0787e6bd545 + checksum: 10c0/f3fd57de6df3ef0cfa668813c49acd7dcbecbf52444f30e8edec4ee7bc2d8c47c2e6fb4b7ce3c9c5b4595bdf8416c37953ebb05b400f99874a7f810943f6265b languageName: node linkType: hard From 0426cb78f7f162c0ff46c61081ada5025875874b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:23:13 +0000 Subject: [PATCH 267/550] New Crowdin Translations (automated) (#32589) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/be.json | 1 - app/javascript/mastodon/locales/br.json | 2 + app/javascript/mastodon/locales/ca.json | 4 +- app/javascript/mastodon/locales/cy.json | 43 +++---- app/javascript/mastodon/locales/da.json | 3 +- app/javascript/mastodon/locales/de.json | 9 +- app/javascript/mastodon/locales/el.json | 1 - app/javascript/mastodon/locales/en-GB.json | 1 - app/javascript/mastodon/locales/eo.json | 7 +- app/javascript/mastodon/locales/es-AR.json | 5 +- app/javascript/mastodon/locales/es-MX.json | 3 +- app/javascript/mastodon/locales/es.json | 5 +- app/javascript/mastodon/locales/et.json | 1 - app/javascript/mastodon/locales/eu.json | 1 - app/javascript/mastodon/locales/fa.json | 18 ++- app/javascript/mastodon/locales/fi.json | 3 +- app/javascript/mastodon/locales/fo.json | 3 +- app/javascript/mastodon/locales/fr-CA.json | 2 +- app/javascript/mastodon/locales/fr.json | 2 +- app/javascript/mastodon/locales/fy.json | 1 - app/javascript/mastodon/locales/ga.json | 3 +- app/javascript/mastodon/locales/gd.json | 4 +- app/javascript/mastodon/locales/gl.json | 3 +- app/javascript/mastodon/locales/he.json | 3 +- app/javascript/mastodon/locales/hu.json | 3 +- app/javascript/mastodon/locales/ia.json | 1 - app/javascript/mastodon/locales/id.json | 9 ++ app/javascript/mastodon/locales/io.json | 1 - app/javascript/mastodon/locales/is.json | 3 +- app/javascript/mastodon/locales/it.json | 3 +- app/javascript/mastodon/locales/ja.json | 16 ++- app/javascript/mastodon/locales/ko.json | 3 +- app/javascript/mastodon/locales/la.json | 3 + app/javascript/mastodon/locales/lt.json | 4 +- app/javascript/mastodon/locales/lv.json | 24 ++-- app/javascript/mastodon/locales/nl.json | 3 +- app/javascript/mastodon/locales/nn.json | 1 - app/javascript/mastodon/locales/no.json | 1 - app/javascript/mastodon/locales/pl.json | 3 +- app/javascript/mastodon/locales/pt-BR.json | 3 +- app/javascript/mastodon/locales/pt-PT.json | 3 +- app/javascript/mastodon/locales/ru.json | 5 +- app/javascript/mastodon/locales/sk.json | 3 +- app/javascript/mastodon/locales/sq.json | 3 +- app/javascript/mastodon/locales/sv.json | 9 +- app/javascript/mastodon/locales/th.json | 11 +- app/javascript/mastodon/locales/tr.json | 3 +- app/javascript/mastodon/locales/uk.json | 7 +- app/javascript/mastodon/locales/vi.json | 3 +- app/javascript/mastodon/locales/zh-CN.json | 3 +- app/javascript/mastodon/locales/zh-HK.json | 10 ++ app/javascript/mastodon/locales/zh-TW.json | 41 +++---- config/locales/activerecord.fa.yml | 6 + config/locales/devise.eo.yml | 2 + config/locales/doorkeeper.eo.yml | 4 + config/locales/doorkeeper.lv.yml | 19 +-- config/locales/doorkeeper.th.yml | 1 + config/locales/es-AR.yml | 6 +- config/locales/fa.yml | 127 ++++++++++++++++++++- config/locales/ga.yml | 3 + config/locales/hu.yml | 3 + config/locales/ja.yml | 3 + config/locales/ko.yml | 3 + config/locales/lv.yml | 78 +++++++------ config/locales/nn.yml | 34 ++++++ config/locales/simple_form.eo.yml | 2 + config/locales/simple_form.es-MX.yml | 2 +- config/locales/simple_form.fa.yml | 4 + config/locales/simple_form.ga.yml | 2 + config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.ja.yml | 2 + config/locales/simple_form.ko.yml | 2 + config/locales/simple_form.lv.yml | 4 +- config/locales/simple_form.nl.yml | 2 +- config/locales/simple_form.nn.yml | 2 + config/locales/simple_form.sq.yml | 2 + config/locales/simple_form.sv.yml | 2 + config/locales/simple_form.th.yml | 2 + config/locales/simple_form.uk.yml | 2 + config/locales/sk.yml | 5 + config/locales/sq.yml | 3 + config/locales/sv.yml | 41 ++++++- config/locales/th.yml | 29 +++++ config/locales/uk.yml | 2 + config/locales/vi.yml | 6 +- 86 files changed, 544 insertions(+), 174 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 6d8290f8a1..54ed1cb8c8 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -301,7 +301,6 @@ "filter_modal.select_filter.subtitle": "استخدم فئة موجودة أو قم بإنشاء فئة جديدة", "filter_modal.select_filter.title": "تصفية هذا المنشور", "filter_modal.title.status": "تصفية منشور", - "filter_warning.matches_filter": "يطابق عامل التصفية \"{title}\"", "filtered_notifications_banner.title": "الإشعارات المصفاة", "firehose.all": "الكل", "firehose.local": "هذا الخادم", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index eb5cd5053d..8423e36ba0 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -300,7 +300,6 @@ "filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую", "filter_modal.select_filter.title": "Фільтраваць гэты допіс", "filter_modal.title.status": "Фільтраваць допіс", - "filter_warning.matches_filter": "Адпавядае фільтру \"{title}\"", "filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце", "filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні", "firehose.all": "Усе", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 1f0c90efcb..575bc56724 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -171,6 +171,7 @@ "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?", "confirmations.unfollow.confirm": "Diheuliañ", "confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name} ?", + "content_warning.show_more": "Diskouez muioc'h", "conversation.delete": "Dilemel ar gaozeadenn", "conversation.mark_as_read": "Merkañ evel lennet", "conversation.open": "Gwelout ar gaozeadenn", @@ -249,6 +250,7 @@ "filter_modal.select_filter.subtitle": "Implijout ur rummad a zo anezhañ pe krouiñ unan nevez", "filter_modal.select_filter.title": "Silañ an toud-mañ", "filter_modal.title.status": "Silañ un toud", + "filter_warning.matches_filter": "A glot gant ar sil “{title}”", "firehose.all": "Pep tra", "firehose.local": "Ar servijer-mañ", "firehose.remote": "Servijerioù all", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 990a3ef97d..678f4da175 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Durada de l'enquesta", "compose_form.poll.multiple": "Opcions múltiples", "compose_form.poll.option_placeholder": "Opció {number}", + "compose_form.poll.single": "Única opció", "compose_form.poll.switch_to_multiple": "Canvia l’enquesta per a permetre múltiples opcions", "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", "compose_form.poll.type": "Estil", @@ -304,7 +305,6 @@ "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea'n una de nova", "filter_modal.select_filter.title": "Filtra aquest tut", "filter_modal.title.status": "Filtra un tut", - "filter_warning.matches_filter": "Coincideix amb el filtre “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {De ningú} one {D'una persona} other {De # persones}} que potser coneixes", "filtered_notifications_banner.title": "Notificacions filtrades", "firehose.all": "Tots", @@ -507,6 +507,7 @@ "notification.favourite": "{name} ha afavorit el teu tut", "notification.favourite.name_and_others_with_link": "{name} i {count, plural, one {# altre} other {# altres}} han afavorit la vostra publicació", "notification.follow": "{name} et segueix", + "notification.follow.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} us han seguit", "notification.follow_request": "{name} ha sol·licitat de seguir-te", "notification.follow_request.name_and_others": "{name} i {count, plural, one {# altre} other {# altres}} han demanat de seguir-vos", "notification.label.mention": "Menció", @@ -565,6 +566,7 @@ "notifications.column_settings.filter_bar.category": "Barra ràpida de filtres", "notifications.column_settings.follow": "Nous seguidors:", "notifications.column_settings.follow_request": "Noves sol·licituds de seguiment:", + "notifications.column_settings.group": "Agrupa", "notifications.column_settings.mention": "Mencions:", "notifications.column_settings.poll": "Resultats de l’enquesta:", "notifications.column_settings.push": "Notificacions push", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 723e8ae37d..3c4a6aa40c 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -36,7 +36,7 @@ "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", "account.followers_counter": "{count, plural, one {{counter} dilynwr} two {{counter} ddilynwr} other {{counter} dilynwyr}}", "account.following": "Yn dilyn", - "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter}}}", + "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter} arall}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.go_to_profile": "Mynd i'r proffil", "account.hide_reblogs": "Cuddio hybiau gan @{name}", @@ -62,7 +62,7 @@ "account.requested_follow": "Mae {name} wedi gwneud cais i'ch dilyn", "account.share": "Rhannwch broffil @{name}", "account.show_reblogs": "Dangos hybiau gan @{name}", - "account.statuses_counter": "{count, plural, one {{counter} post} two {{counter} bost} few {{counter} phost} many {{counter} post} other {{counter} post}}", + "account.statuses_counter": "{count, plural, one {{counter} postiad} two {{counter} bostiad} few {{counter} phostiad} many {{counter} postiad} other {{counter} postiad}}", "account.unblock": "Dadflocio @{name}", "account.unblock_domain": "Dadflocio parth {domain}", "account.unblock_short": "Dadflocio", @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Dad-ddilyn defnyddiwr?", "content_warning.hide": "Cuddio'r postiad", "content_warning.show": "Dangos beth bynnag", + "content_warning.show_more": "Dangos rhagor", "conversation.delete": "Dileu sgwrs", "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", @@ -305,8 +306,8 @@ "filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd", "filter_modal.select_filter.title": "Hidlo'r postiad hwn", "filter_modal.title.status": "Hidlo postiad", - "filter_warning.matches_filter": "Yn cydweddu'r hidlydd “{title}”", - "filtered_notifications_banner.pending_requests": "Gan {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod", + "filter_warning.matches_filter": "Yn cyd-fynd â'r hidlydd “ {title} ”", + "filtered_notifications_banner.pending_requests": "Oddi wrth {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod", "filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo", "firehose.all": "Popeth", "firehose.local": "Gweinydd hwn", @@ -349,12 +350,12 @@ "hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain", "hashtag.column_settings.tag_mode.none": "Dim o'r rhain", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", - "hashtag.counter_by_accounts": "{cyfrif, lluosog, un {{counter} cyfranogwr} arall {{counter} cyfranogwr}}", + "hashtag.counter_by_accounts": "{count, plural, one {{counter} cyfranogwr} other {{counter} cyfranogwr}}", "hashtag.counter_by_uses": "{count, plural, one {postiad {counter}} other {postiad {counter}}}", - "hashtag.counter_by_uses_today": "{cyfrif, lluosog, un {{counter} postiad} arall {{counter} postiad}} heddiw", + "hashtag.counter_by_uses_today": "{count, plural, one {{counter} postiad} other {{counter} postiad}} heddiw", "hashtag.follow": "Dilyn hashnod", "hashtag.unfollow": "Dad-ddilyn hashnod", - "hashtags.and_other": "…a {count, plural, other {# more}}", + "hashtags.and_other": "…a {count, plural, other {# arall}}", "hints.profiles.followers_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.", "hints.profiles.follows_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.", "hints.profiles.posts_may_be_missing": "Mae'n bosibl bod rhai postiadau y proffil hwn ar goll.", @@ -442,7 +443,7 @@ "limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan gymedrolwyr {domain}.", "link_preview.author": "Gan {name}", "link_preview.more_from_author": "Mwy gan {name}", - "link_preview.shares": "{count, plural, one {{counter} ostiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}", + "link_preview.shares": "{count, plural, one {{counter} postiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}", "lists.account.add": "Ychwanegu at restr", "lists.account.remove": "Tynnu o'r rhestr", "lists.delete": "Dileu rhestr", @@ -499,18 +500,18 @@ "navigation_bar.security": "Diogelwch", "not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.", "notification.admin.report": "Adroddwyd ar {name} {target}", - "notification.admin.report_account": "{name} reported {count, plural, one {un postiad} other {# postiad}} from {target} for {category}", - "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un postiad} two {# bostiad} few {# phost} other {# postiad}} gan {target}", + "notification.admin.report_account": "Adroddodd {name} {count, plural, one {un postiad} other {# postiad}} gan {target} oherwydd {category}", + "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un postiad} two {# bostiad} few {# postiad} other {# postiad}} gan {target}", "notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}", "notification.admin.report_statuses_other": "Adroddodd {name} {target}", "notification.admin.sign_up": "Cofrestrodd {name}", - "notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # eraill}}", + "notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}", "notification.favourite": "Ffafriodd {name} eich postiad", - "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# eraill}} eich postiad", + "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# arall}} eich postiad", "notification.follow": "Dilynodd {name} chi", - "notification.follow.name_and_others": "Mae {name} a {count, plural, zero {}one {# other} two {# others} few {# others} many {# others} other {# others}} nawr yn eich dilyn chi", + "notification.follow.name_and_others": "Mae {name} a {count, plural, zero {}one {# arall} two {# arall} few {# arall} many {# others} other {# arall}} nawr yn eich dilyn chi", "notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn", - "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# other} other {# others}} wedi gofyn i'ch dilyn chi", + "notification.follow_request.name_and_others": "Mae {name} a{count, plural, one {# arall} other {# arall}} wedi gofyn i'ch dilyn chi", "notification.label.mention": "Crybwyll", "notification.label.private_mention": "Crybwyll preifat", "notification.label.private_reply": "Ateb preifat", @@ -529,7 +530,7 @@ "notification.own_poll": "Mae eich pleidlais wedi dod i ben", "notification.poll": "Mae arolwg y gwnaethoch bleidleisio ynddo wedi dod i ben", "notification.reblog": "Hybodd {name} eich post", - "notification.reblog.name_and_others_with_link": "Mae {name} a {count, plural, one {# other} other {# others}} wedi hybu eich postiad", + "notification.reblog.name_and_others_with_link": "Mae {name} a {count, plural, one {# arall} other {# arall}} wedi hybu eich postiad", "notification.relationships_severance_event": "Wedi colli cysylltiad â {name}", "notification.relationships_severance_event.account_suspension": "Mae gweinyddwr o {from} wedi atal {target}, sy'n golygu na allwch dderbyn diweddariadau ganddynt mwyach na rhyngweithio â nhw.", "notification.relationships_severance_event.domain_block": "Mae gweinyddwr o {from} wedi blocio {target}, gan gynnwys {followersCount} o'ch dilynwyr a {followingCount, plural, one {# cyfrif} other {# cyfrif}} arall rydych chi'n ei ddilyn.", @@ -538,9 +539,9 @@ "notification.status": "{name} newydd ei bostio", "notification.update": "Golygodd {name} bostiad", "notification_requests.accept": "Derbyn", - "notification_requests.accept_multiple": "{count, plural, one {Accept # request…} other {Accept # requests…}}", - "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Accept request} other {Accept requests}}", - "notification_requests.confirm_accept_multiple.message": "Rydych ar fin derbyn {count, plural, one {one notification request} other {# notification requests}}. Ydych chi'n siŵr eich bod am barhau?", + "notification_requests.accept_multiple": "{count, plural, one {Derbyn # cais…} other {Derbyn # cais…}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Derbyn cais} other {Derbyn cais}}", + "notification_requests.confirm_accept_multiple.message": "Rydych ar fin derbyn {count, plural, one {un cais hysbysiad} other {# cais hysbysiad}}. Ydych chi'n siŵr eich bod am barhau?", "notification_requests.confirm_accept_multiple.title": "Derbyn ceisiadau hysbysu?", "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Diystyru cais} other {Diystyru ceisiadau}}", "notification_requests.confirm_dismiss_multiple.message": "Rydych ar fin diystyru {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. Fyddwch chi ddim yn gallu cyrchu {count, plural, one {it} other {them}} yn hawdd eto. Ydych chi'n yn siŵr eich bod am fwrw ymlaen?", @@ -689,7 +690,7 @@ "relative_time.minutes": "{number} munud", "relative_time.seconds": "{number} eiliad", "relative_time.today": "heddiw", - "reply_indicator.attachments": "{count, plural, one {# attachment} arall {# attachments}}", + "reply_indicator.attachments": "{count, plural, one {# atodiad} other {# atodiad}}", "reply_indicator.cancel": "Canslo", "reply_indicator.poll": "Arolwg", "report.block": "Blocio", @@ -732,7 +733,7 @@ "report.thanks.title_actionable": "Diolch am adrodd, byddwn yn ymchwilio i hyn.", "report.unfollow": "Dad-ddilyn @{name}", "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich ffrwd gartref mwyach, dad-ddilynwch nhw.", - "report_notification.attached_statuses": "{count, plural, one {{count} postiad} arall {{count} postiad}} atodwyd", + "report_notification.attached_statuses": "{count, plural, one {{count} postiad} other {{count} postiad}} wedi'i atodi", "report_notification.categories.legal": "Cyfreithiol", "report_notification.categories.legal_sentence": "cynnwys anghyfreithlon", "report_notification.categories.other": "Arall", @@ -812,7 +813,7 @@ "status.reblog": "Hybu", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", "status.reblogged_by": "Hybodd {name}", - "status.reblogs": "{count, plural, one {hwb} other {hwb}}", + "status.reblogs": "{count, plural, one {# hwb} other {# hwb}}", "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu ac ailddrafftio", "status.remove_bookmark": "Tynnu nod tudalen", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 0227702d51..f8a1f2ad65 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -196,6 +196,7 @@ "confirmations.unfollow.title": "Følg ikke længere bruger?", "content_warning.hide": "Skjul indlæg", "content_warning.show": "Vis alligevel", + "content_warning.show_more": "Vis flere", "conversation.delete": "Slet samtale", "conversation.mark_as_read": "Markér som læst", "conversation.open": "Vis samtale", @@ -304,7 +305,7 @@ "filter_modal.select_filter.subtitle": "Vælg en eksisterende kategori eller opret en ny", "filter_modal.select_filter.title": "Filtrér dette indlæg", "filter_modal.title.status": "Filtrér et indlæg", - "filter_warning.matches_filter": "Matcher filteret “{title}”", + "filter_warning.matches_filter": "Matcher filteret “{title}”", "filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {én person} other {# personer}}, man måske kender", "filtered_notifications_banner.title": "Filtrerede notifikationer", "firehose.all": "Alle", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 75672a60d6..a02f13aef0 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Profil entfolgen?", "content_warning.hide": "Beitrag ausblenden", "content_warning.show": "Trotzdem anzeigen", + "content_warning.show_more": "Mehr anzeigen", "conversation.delete": "Unterhaltung löschen", "conversation.mark_as_read": "Als gelesen markieren", "conversation.open": "Unterhaltung anzeigen", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Einem vorhandenen Filter hinzufügen oder einen neuen erstellen", "filter_modal.select_filter.title": "Diesen Beitrag filtern", "filter_modal.title.status": "Beitrag per Filter ausblenden", - "filter_warning.matches_filter": "Übereinstimmend mit dem Filter „{title}“", + "filter_warning.matches_filter": "Übereinstimmend mit dem Filter „{title}“", "filtered_notifications_banner.pending_requests": "Von {count, plural, =0 {keinem, den} one {einer Person, die} other {# Personen, die}} du möglicherweise kennst", "filtered_notifications_banner.title": "Gefilterte Benachrichtigungen", "firehose.all": "Alles", @@ -598,15 +599,15 @@ "notifications.policy.filter": "Filtern", "notifications.policy.filter_hint": "An gefilterte Benachrichtigungen im Posteingang senden", "notifications.policy.filter_limited_accounts_hint": "Durch Server-Moderator*innen eingeschränkt", - "notifications.policy.filter_limited_accounts_title": "Moderierte Konten", + "notifications.policy.filter_limited_accounts_title": "moderierten Konten", "notifications.policy.filter_new_accounts.hint": "Innerhalb {days, plural, one {des letzten Tages} other {der letzten # Tagen}} erstellt", - "notifications.policy.filter_new_accounts_title": "Neuen Konten", + "notifications.policy.filter_new_accounts_title": "neuen Konten", "notifications.policy.filter_not_followers_hint": "Einschließlich Profilen, die dir seit weniger als {days, plural, one {einem Tag} other {# Tagen}} folgen", "notifications.policy.filter_not_followers_title": "Profilen, die mir nicht folgen", "notifications.policy.filter_not_following_hint": "Bis du sie manuell genehmigst", "notifications.policy.filter_not_following_title": "Profilen, denen ich nicht folge", "notifications.policy.filter_private_mentions_hint": "Solange sie keine Antwort auf deine Erwähnung ist oder du dem Profil nicht folgst", - "notifications.policy.filter_private_mentions_title": "Unerwünschten privaten Erwähnungen", + "notifications.policy.filter_private_mentions_title": "unerwünschten privaten Erwähnungen", "notifications.policy.title": "Benachrichtigungen verwalten von …", "notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen", "notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index e362d9b89b..40517f8340 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα", "filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης", "filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης", - "filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “{title}”", "filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις", "filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις", "firehose.all": "Όλα", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 728ca89c73..d482ec21dd 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", - "filter_warning.matches_filter": "Matches filter “{title}”", "filtered_notifications_banner.pending_requests": "From {count, plural, =0 {no one} one {one person} other {# people}} you may know", "filtered_notifications_banner.title": "Filtered notifications", "firehose.all": "All", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 6beb5a9716..0c91182285 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -2,7 +2,7 @@ "about.blocks": "Administritaj serviloj", "about.contact": "Kontakto:", "about.disclaimer": "Mastodon estas libera, malfermitkoda programo kaj varmarko de la firmao Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Kialo ne disponebla", + "about.domain_blocks.no_reason_available": "Kialo ne disponeblas", "about.domain_blocks.preamble": "Mastodon ĝenerale rajtigas vidi la enhavojn de uzantoj el aliaj serviloj en la fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.", "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.", "about.domain_blocks.silenced.title": "Limigita", @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Ĉu ĉesi sekvi uzanton?", "content_warning.hide": "Kaŝi afiŝon", "content_warning.show": "Montri ĉiukaze", + "content_warning.show_more": "Montri pli", "conversation.delete": "Forigi konversacion", "conversation.mark_as_read": "Marku kiel legita", "conversation.open": "Vidi konversacion", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Uzu ekzistantan kategorion aŭ kreu novan", "filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon", "filter_modal.title.status": "Filtri afiŝon", - "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”", + "filter_warning.matches_filter": "Filtrilo de kongruoj “{title}”", "filtered_notifications_banner.pending_requests": "El {count, plural, =0 {neniu} one {unu persono} other {# homoj}} vi eble konas", "filtered_notifications_banner.title": "Filtritaj sciigoj", "firehose.all": "Ĉiuj", @@ -567,7 +568,7 @@ "notifications.column_settings.filter_bar.category": "Rapida filtrila breto", "notifications.column_settings.follow": "Novaj sekvantoj:", "notifications.column_settings.follow_request": "Novaj petoj de sekvado:", - "notifications.column_settings.group": "Grupo", + "notifications.column_settings.group": "Grupigi", "notifications.column_settings.mention": "Mencioj:", "notifications.column_settings.poll": "Balotenketaj rezultoj:", "notifications.column_settings.push": "Puŝsciigoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 2410c278a6..55e64faba5 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "¿Dejar de seguir al usuario?", "content_warning.hide": "Ocultar mensaje", "content_warning.show": "Mostrar de todos modos", + "content_warning.show_more": "Mostrar más", "conversation.delete": "Eliminar conversación", "conversation.mark_as_read": "Marcar como leída", "conversation.open": "Ver conversación", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", "filter_modal.select_filter.title": "Filtrar este mensaje", "filter_modal.title.status": "Filtrar un mensaje", - "filter_warning.matches_filter": "Coincide con el filtro “{title}”", + "filter_warning.matches_filter": "Coincide con el filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que podrías conocer", "filtered_notifications_banner.title": "Notificaciones filtradas", "firehose.all": "Todos", @@ -856,7 +857,7 @@ "upload_form.description": "Agregá una descripción para personas con dificultades visuales", "upload_form.drag_and_drop.instructions": "Para recoger un archivo multimedia, pulsá la barra espaciadora o la tecla Enter. Mientras arrastrás, usá las teclas de flecha para mover el archivo multimedia en cualquier dirección. Volvé a pulsar la barra espaciadora o la tecla Enter para soltar el archivo multimedia en su nueva posición, o pulsá la tecla Escape para cancelar.", "upload_form.drag_and_drop.on_drag_cancel": "Se canceló el arrastre. Se eliminó el archivo adjunto {item}.", - "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} ha sido eliminado.", + "upload_form.drag_and_drop.on_drag_end": "El archivo adjunto {item} fue soltado.", "upload_form.drag_and_drop.on_drag_over": "El archivo adjunto {item} fue movido.", "upload_form.drag_and_drop.on_drag_start": "Se ha recogido el archivo adjunto {item}.", "upload_form.edit": "Editar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 2f9d1feb01..f4e0352450 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "¿Dejar de seguir al usuario?", "content_warning.hide": "Ocultar publicación", "content_warning.show": "Mostrar de todos modos", + "content_warning.show_more": "Mostrar más", "conversation.delete": "Borrar conversación", "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", "filter_modal.select_filter.title": "Filtrar esta publicación", "filter_modal.title.status": "Filtrar una publicación", - "filter_warning.matches_filter": "Coincide con el filtro “{title}”", + "filter_warning.matches_filter": "Coincide con el filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# people}} que puede que tú conozcas", "filtered_notifications_banner.title": "Notificaciones filtradas", "firehose.all": "Todas", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index fa4159abce..30a4b91fa2 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "¿Dejar de seguir al usuario?", "content_warning.hide": "Ocultar publicación", "content_warning.show": "Mostrar de todos modos", + "content_warning.show_more": "Mostrar más", "conversation.delete": "Borrar conversación", "conversation.mark_as_read": "Marcar como leído", "conversation.open": "Ver conversación", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Usar una categoría existente o crear una nueva", "filter_modal.select_filter.title": "Filtrar esta publicación", "filter_modal.title.status": "Filtrar una publicación", - "filter_warning.matches_filter": "Coincide con el filtro “{title}”", + "filter_warning.matches_filter": "Coincide con el filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nadie} one {una persona} other {# personas}} que puede que conozcas", "filtered_notifications_banner.title": "Notificaciones filtradas", "firehose.all": "Todas", @@ -567,7 +568,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow_request": "Nuevas solicitudes de seguimiento:", - "notifications.column_settings.group": "Grupo", + "notifications.column_settings.group": "Agrupar", "notifications.column_settings.mention": "Menciones:", "notifications.column_settings.poll": "Resultados de la votación:", "notifications.column_settings.push": "Notificaciones push", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 3c58548eb7..c360a3aa23 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus", "filter_modal.select_filter.title": "Filtreeri seda postitust", "filter_modal.title.status": "Postituse filtreerimine", - "filter_warning.matches_filter": "Sobib filtriga “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {Mitte üheltki inimeselt} one {Ühelt inimeselt} other {# inimeselt}}, keda võid teada", "filtered_notifications_banner.title": "Filtreeritud teavitused", "firehose.all": "Kõik", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index cd8fbeefbc..c8349dc6a1 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -302,7 +302,6 @@ "filter_modal.select_filter.subtitle": "Hautatu lehendik dagoen kategoria bat edo sortu berria", "filter_modal.select_filter.title": "Iragazi bidalketa hau", "filter_modal.title.status": "Iragazi bidalketa bat", - "filter_warning.matches_filter": "“{title}” iragazkiarekin bat dator", "filtered_notifications_banner.pending_requests": "Ezagutu dezakezun {count, plural, =0 {inoren} one {pertsona baten} other {# pertsonen}}", "filtered_notifications_banner.title": "Iragazitako jakinarazpenak", "firehose.all": "Guztiak", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 6afdb53746..3bc96cf9f2 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "مدت نظرسنجی", "compose_form.poll.multiple": "چند گزینه‌ای", "compose_form.poll.option_placeholder": "گزینهٔ {number}", + "compose_form.poll.single": "تک گزینه‌ای", "compose_form.poll.switch_to_multiple": "تغییر نظرسنجی برای اجازه به چندین گزینه", "compose_form.poll.switch_to_single": "تبدیل به نظرسنجی تک‌گزینه‌ای", "compose_form.poll.type": "سبک", @@ -195,7 +196,7 @@ "confirmations.unfollow.message": "مطمئنید که می‌خواهید به پی‌گیری از {name} پایان دهید؟", "confirmations.unfollow.title": "ناپی‌گیری کاربر؟", "content_warning.hide": "نهفتن فرسته", - "content_warning.show": "نمایش به هر روی", + "content_warning.show": "در هر صورت نشان داده شود", "conversation.delete": "حذف گفتگو", "conversation.mark_as_read": "علامت‌گذاری به عنوان خوانده شده", "conversation.open": "دیدن گفتگو", @@ -221,6 +222,7 @@ "domain_block_modal.they_cant_follow": "هیچ‌کسی از این کارساز نمی‌تواند پیتان بگیرد.", "domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شده‌اند.", "domain_block_modal.title": "انسداد دامنه؟", + "domain_block_modal.you_will_lose_num_followers": "تعداد {followersCount, plural,other {{followersCount}}} پی‌گیرنده و {followingCount, plural,other {{followingCount}}} شخص پی‌گرفته شده را از دست خواهید داد.", "domain_block_modal.you_will_lose_relationships": "شما تمام پیگیرکنندگان و افرادی که از این کارساز پیگیری می‌کنید را از دست خواهید داد.", "domain_block_modal.you_wont_see_posts": "فرسته‌ها یا آگاهی‌ها از کاربران روی این کارساز را نخواهید دید.", "domain_pill.activitypub_lets_connect": "این به شما اجازه می‌دهد تا نه تنها در ماستودون، بلکه در برنامه‌های اجتماعی مختلف نیز با افراد ارتباط برقرار کرده و تعامل داشته باشید.", @@ -302,7 +304,6 @@ "filter_modal.select_filter.subtitle": "استفاده از یک دستهً موجود یا ایجاد دسته‌ای جدید", "filter_modal.select_filter.title": "پالایش این فرسته", "filter_modal.title.status": "پالایش یک فرسته", - "filter_warning.matches_filter": "مطابق با پالایهٔ «{title}»", "filtered_notifications_banner.pending_requests": "از {count, plural, =0 {هیچ‌کسی} one {فردی} other {# نفر}} که ممکن است بشناسید", "filtered_notifications_banner.title": "آگاهی‌های پالوده", "firehose.all": "همه", @@ -367,6 +368,7 @@ "home.pending_critical_update.link": "دیدن به‌روز رسانی‌ها", "home.pending_critical_update.title": "به‌روز رسانی امنیتی بحرانی موجود است!", "home.show_announcements": "نمایش اعلامیه‌ها", + "ignore_notifications_modal.filter_instead": "به جایش پالوده شود", "ignore_notifications_modal.ignore": "چشم‌پوشی از آگاهی‌ها", "ignore_notifications_modal.limited_accounts_title": "چشم‌پوشی از آگاهی‌های حساب‌های نظارت شده؟", "ignore_notifications_modal.new_accounts_title": "چشم‌پوشی از آگاهی‌های حساب‌های جدید؟", @@ -428,6 +430,8 @@ "lightbox.close": "بستن", "lightbox.next": "بعدی", "lightbox.previous": "قبلی", + "lightbox.zoom_in": "بزرگ‌نمایی به اندازهٔ اصلی", + "lightbox.zoom_out": "بزرگ نمایی برای برازش", "limited_account_hint.action": "به هر روی نمایه نشان داده شود", "limited_account_hint.title": "این نمایه از سوی ناظم‌های {domain} پنهان شده.", "link_preview.author": "از {name}", @@ -455,6 +459,7 @@ "mute_modal.hide_options": "گزینه‌های نهفتن", "mute_modal.indefinite": "تا وقتی ناخموشش کنم", "mute_modal.show_options": "نمایش گزینه‌ها", + "mute_modal.they_can_mention_and_follow": "می‌توانند به شما اشاره کرده و پیتان بگیرند، ولی نخواهید دیدشان.", "mute_modal.they_wont_know": "نخواهند دانست که خموش شده‌اند.", "mute_modal.title": "خموشی کاربر؟", "mute_modal.you_wont_see_mentions": "فرسته‌هایی که به او اشاره کرده‌اند را نخواهید دید.", @@ -494,6 +499,7 @@ "notification.favourite": "{name} فرسته‌تان را برگزید", "notification.favourite.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرسته‌تان را برگزیدند", "notification.follow": "‫{name}‬ پی‌گیرتان شد", + "notification.follow.name_and_others": "{name} و {count, plural, other {#}} نفر دیگر پیتان گرفتند", "notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.follow_request.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} درخواست پی‌گیریتان را دادند", "notification.label.mention": "اشاره", @@ -501,6 +507,7 @@ "notification.label.private_reply": "پاسخ خصوصی", "notification.label.reply": "پاسخ", "notification.mention": "اشاره", + "notification.mentioned_you": "‫{name}‬ از شما نام برد", "notification.moderation-warning.learn_more": "بیشتر بدانید", "notification.moderation_warning": "هشداری مدیریتی گرفته‌اید", "notification.moderation_warning.action_delete_statuses": "برخی از فرسته‌هایتان برداشته شدند.", @@ -519,7 +526,10 @@ "notification.status": "{name} چیزی فرستاد", "notification.update": "{name} فرسته‌ای را ویرایش کرد", "notification_requests.accept": "پذیرش", + "notification_requests.confirm_accept_multiple.button": "پذیرش {count, plural,one {درخواست} other {درخواست‌ها}}", + "notification_requests.confirm_accept_multiple.message": "در حال پذیرش {count, plural,one {یک}other {#}} درخواست آگاهی هستید. مطمئنید که می‌خواهید ادامه دهید؟", "notification_requests.confirm_accept_multiple.title": "پذیرش درخواست‌های آگاهی؟", + "notification_requests.confirm_dismiss_multiple.button": "رد {count, plural,one {درخواست} other {درخواست‌ها}}", "notification_requests.confirm_dismiss_multiple.title": "رد کردن درخواست‌های آگاهی؟", "notification_requests.dismiss": "دورانداختن", "notification_requests.edit_selection": "ویرایش", @@ -540,6 +550,7 @@ "notifications.column_settings.filter_bar.category": "نوار پالایش سریع", "notifications.column_settings.follow": "پی‌گیرندگان جدید:", "notifications.column_settings.follow_request": "درخواست‌های جدید پی‌گیری:", + "notifications.column_settings.group": "گروه", "notifications.column_settings.mention": "اشاره‌ها:", "notifications.column_settings.poll": "نتایج نظرسنجی:", "notifications.column_settings.push": "آگاهی‌های ارسالی", @@ -595,7 +606,7 @@ "onboarding.profile.discoverable_hint": "خواسته‌اید روی ماستودون کشف شوید. ممکن است فرسته‌هایتان در نتیحهٔ جست‌وجوها و فرسته‌های داغ ظاهر شده و نمایه‌تان به افرادی با علایق مشابهتان پیشنهاد شود.", "onboarding.profile.display_name": "نام نمایشی", "onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…", - "onboarding.profile.lead": "همواره می‌توانید این مورد را در تنظیمات که گزینه‌ّای شخصی سازی بیش‌تری نیز دارد کامل کنید.", + "onboarding.profile.lead": "همواره می‌توانید این مورد را در تنظیمات که گزینه‌های شخصی سازی بیش‌تری نیز دارد کامل کنید.", "onboarding.profile.note": "درباره شما", "onboarding.profile.note_hint": "می‌توانید افراد دیگر را @نام‌بردن یا #برچسب بزنید…", "onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده", @@ -760,6 +771,7 @@ "status.edit": "ویرایش", "status.edited": "آخرین ویرایش {date}", "status.edited_x_times": "{count, plural, one {{count} مرتبه} other {{count} مرتبه}} ویرایش شد", + "status.embed": "گرفتن کد تعبیه", "status.favourite": "برگزیده‌", "status.favourites": "{count, plural, one {برگزیده} other {برگزیده}}", "status.filter": "پالایش این فرسته", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 717ea78559..37f3b87e84 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Lopetetaanko käyttäjän seuraaminen?", "content_warning.hide": "Piilota julkaisu", "content_warning.show": "Näytä kuitenkin", + "content_warning.show_more": "Näytä lisää", "conversation.delete": "Poista keskustelu", "conversation.mark_as_read": "Merkitse luetuksi", "conversation.open": "Näytä keskustelu", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi", "filter_modal.select_filter.title": "Suodata tämä julkaisu", "filter_modal.title.status": "Suodata julkaisu", - "filter_warning.matches_filter": "Vastaa suodatinta ”{title}”", + "filter_warning.matches_filter": "Vastaa suodatinta ”{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {Ei keneltäkään, jonka} one {Yhdeltä käyttäjältä, jonka} other {# käyttäjältä, jotka}} saatat tuntea", "filtered_notifications_banner.title": "Suodatetut ilmoitukset", "firehose.all": "Kaikki", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 0e2bc88136..921f38468c 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Gevst at fylgja brúkara?", "content_warning.hide": "Fjal post", "content_warning.show": "Vís kortini", + "content_warning.show_more": "Vís meiri", "conversation.delete": "Strika samrøðu", "conversation.mark_as_read": "Merk sum lisið", "conversation.open": "Vís samrøðu", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Brúka ein verandi bólk ella skapa ein nýggjan", "filter_modal.select_filter.title": "Filtrera hendan postin", "filter_modal.title.status": "Filtrera ein post", - "filter_warning.matches_filter": "Samsvarar við filtrið “{title}”", + "filter_warning.matches_filter": "Samsvarar við filtrið “{title}”", "filtered_notifications_banner.pending_requests": "Frá {count, plural, =0 {ongum} one {einum persóni} other {# persónum}}, sum tú kanska kennir", "filtered_notifications_banner.title": "Filtreraðar fráboðanir", "firehose.all": "Allar", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index e73a3249cb..65bbc25c21 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -305,7 +305,6 @@ "filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle", "filter_modal.select_filter.title": "Filtrer cette publication", "filter_modal.title.status": "Filtrer une publication", - "filter_warning.matches_filter": "Correspond au filtre « {title} »", "filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître", "filtered_notifications_banner.title": "Notifications filtrées", "firehose.all": "Tout", @@ -856,6 +855,7 @@ "upload_form.description": "Décrire pour les malvoyants", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", + "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 319316272b..ed751c244b 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -305,7 +305,6 @@ "filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou créez-en une nouvelle", "filter_modal.select_filter.title": "Filtrer ce message", "filter_modal.title.status": "Filtrer un message", - "filter_warning.matches_filter": "Correspond au filtre « {title} »", "filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître", "filtered_notifications_banner.title": "Notifications filtrées", "firehose.all": "Tout", @@ -856,6 +855,7 @@ "upload_form.description": "Décrire pour les malvoyant·e·s", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", + "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 0790a0dc57..e1c090cb0c 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje", "filter_modal.select_filter.title": "Dit berjocht filterje", "filter_modal.title.status": "In berjocht filterje", - "filter_warning.matches_filter": "Komt oerien mei filter ‘{title}’", "filtered_notifications_banner.pending_requests": "Fan {count, plural, =0 {net ien} one {ien persoan} other {# persoanen}} dy’t jo mooglik kinne", "filtered_notifications_banner.title": "Filtere meldingen", "firehose.all": "Alles", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 81b93816ea..aa7892163b 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Dílean ​​an t-úsáideoir?", "content_warning.hide": "Folaigh postáil", "content_warning.show": "Taispeáin ar aon nós", + "content_warning.show_more": "Taispeáin níos mó", "conversation.delete": "Scrios comhrá", "conversation.mark_as_read": "Marcáil mar léite", "conversation.open": "Féach ar comhrá", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Bain úsáid as catagóir reatha nó cruthaigh ceann nua", "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo", "filter_modal.title.status": "Déan scagadh ar phostáil", - "filter_warning.matches_filter": "Meaitseálann an scagaire “{title}”", + "filter_warning.matches_filter": "Meaitseálann an scagaire “{title}”", "filtered_notifications_banner.pending_requests": "Ó {count, plural, =0 {duine ar bith} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b’fhéidir go bhfuil aithne agat orthu", "filtered_notifications_banner.title": "Fógraí scagtha", "firehose.all": "Gach", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index a9da2cd5ec..47a9033440 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Faide a’ chunntais", "compose_form.poll.multiple": "Iomadh-roghainn", "compose_form.poll.option_placeholder": "Roghainn {number}", + "compose_form.poll.single": "Aon taghadh", "compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh", "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", "compose_form.poll.type": "Stoidhle", @@ -304,7 +305,6 @@ "filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr", "filter_modal.select_filter.title": "Criathraich am post seo", "filter_modal.title.status": "Criathraich post", - "filter_warning.matches_filter": "A’ maidseadh na criathraige “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {Chan eil gin ann} one {O # neach} two {O # neach} few {O # daoine} other {O # duine}} air a bheil thu eòlach ’s dòcha", "filtered_notifications_banner.title": "Brathan criathraichte", "firehose.all": "Na h-uile", @@ -507,6 +507,7 @@ "notification.favourite": "Is annsa le {name} am post agad", "notification.favourite.name_and_others_with_link": "Is annsa le {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} am post agad", "notification.follow": "Tha {name} ’gad leantainn a-nis", + "notification.follow.name_and_others": "Lean {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} thu", "notification.follow_request": "Dh’iarr {name} ’gad leantainn", "notification.follow_request.name_and_others": "Dh’iarr {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} ’gad leantainn", "notification.label.mention": "Iomradh", @@ -565,6 +566,7 @@ "notifications.column_settings.filter_bar.category": "Bàr-criathraidh luath", "notifications.column_settings.follow": "Luchd-leantainn ùr:", "notifications.column_settings.follow_request": "Iarrtasan leantainn ùra:", + "notifications.column_settings.group": "Buidheann", "notifications.column_settings.mention": "Iomraidhean:", "notifications.column_settings.poll": "Toraidhean cunntais-bheachd:", "notifications.column_settings.push": "Brathan putaidh", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 5e40b0e429..a772dbc0f7 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Deixar de seguir á usuaria?", "content_warning.hide": "Agochar publicación", "content_warning.show": "Mostrar igualmente", + "content_warning.show_more": "Mostrar máis", "conversation.delete": "Eliminar conversa", "conversation.mark_as_read": "Marcar como lido", "conversation.open": "Ver conversa", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Usar unha categoría existente ou crear unha nova", "filter_modal.select_filter.title": "Filtrar esta publicación", "filter_modal.title.status": "Filtrar unha publicación", - "filter_warning.matches_filter": "Debido ao filtro “{title}”", + "filter_warning.matches_filter": "Concorda co filtro «{title}»", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguén} one {unha persoa} other {# persoas}} que igual coñeces", "filtered_notifications_banner.title": "Notificacións filtradas", "firehose.all": "Todo", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index be1dde6528..087eed9030 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "לבטל מעקב אחר המשתמש.ת?", "content_warning.hide": "הסתרת חיצרוץ", "content_warning.show": "להציג בכל זאת", + "content_warning.show_more": "הצג עוד", "conversation.delete": "מחיקת שיחה", "conversation.mark_as_read": "סמן כנקרא", "conversation.open": "צפו בשיחה", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה", "filter_modal.select_filter.title": "סינון ההודעה הזו", "filter_modal.title.status": "סנן הודעה", - "filter_warning.matches_filter": "תואם לסנן “{title}”", + "filter_warning.matches_filter": "תואם לסנן “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural,=0 {אין בקשות ממשתמשים }one {בקשה אחת ממישהו/מישהי }two {יש בקשותיים ממשתמשים }other {יש # בקשות ממשתמשים }}שאולי מוכרים לך", "filtered_notifications_banner.title": "התראות מסוננות", "firehose.all": "הכל", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index a6bd621a48..af0d83954d 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Megszünteted a felhasználó követését?", "content_warning.hide": "Bejegyzés elrejtése", "content_warning.show": "Megjelenítés mindenképp", + "content_warning.show_more": "Több megjelenítése", "conversation.delete": "Beszélgetés törlése", "conversation.mark_as_read": "Megjelölés olvasottként", "conversation.open": "Beszélgetés megtekintése", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Válassz egy meglévő kategóriát, vagy hozz létre egy újat", "filter_modal.select_filter.title": "E bejegyzés szűrése", "filter_modal.title.status": "Egy bejegyzés szűrése", - "filter_warning.matches_filter": "Megfelel a szűrőnek: „{title}”", + "filter_warning.matches_filter": "Megfelel a szűrőnek: „{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {senkitől} one {egy valószínűleg ismerős személytől} other {# valószínűleg ismerős személytől}}", "filtered_notifications_banner.title": "Szűrt értesítések", "firehose.all": "Összes", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 58e978cd14..e41d390a3f 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove", "filter_modal.select_filter.title": "Filtrar iste message", "filter_modal.title.status": "Filtrar un message", - "filter_warning.matches_filter": "Corresponde al filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nemo} one {un persona} other {# personas}} que tu pote cognoscer", "filtered_notifications_banner.title": "Notificationes filtrate", "firehose.all": "Toto", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 085705714e..4b43363960 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -85,6 +85,7 @@ "alert.rate_limited.title": "Jumlah akses dibatasi", "alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.", "alert.unexpected.title": "Ups!", + "alt_text_badge.title": "Teks Alternatif", "announcement.announcement": "Pengumuman", "attachments_list.unprocessed": "(tidak diproses)", "audio.hide": "Sembunyikan audio", @@ -97,6 +98,8 @@ "block_modal.title": "Blokir pengguna?", "block_modal.you_wont_see_mentions": "Anda tidak akan melihat kiriman yang menyebutkan mereka.", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", + "boost_modal.reblog": "Pacu kiriman?", + "boost_modal.undo_reblog": "Jangan pacu kiriman?", "bundle_column_error.copy_stacktrace": "Salin laporan kesalahan", "bundle_column_error.error.body": "Laman yang diminta tidak dapat ditampilkan. Mungkin karena sebuah kutu dalam kode kami, atau masalah kompatibilitas peramban.", "bundle_column_error.error.title": "Oh, tidak!", @@ -155,6 +158,7 @@ "compose_form.poll.duration": "Durasi japat", "compose_form.poll.multiple": "Pilihan ganda", "compose_form.poll.option_placeholder": "Opsi {number}", + "compose_form.poll.single": "Pilihan tunggal", "compose_form.poll.switch_to_multiple": "Ubah japat menjadi pilihan ganda", "compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal", "compose_form.poll.type": "Gaya", @@ -218,6 +222,7 @@ "domain_block_modal.they_cant_follow": "Tidak ada seorangpun dari server ini yang dapat mengikuti anda.", "domain_block_modal.they_wont_know": "Mereka tidak akan tahu bahwa mereka diblokir.", "domain_block_modal.title": "Blokir domain?", + "domain_block_modal.you_will_lose_relationships": "Kamu akan kehilangan semua pengikut dan orang yang kamu ikuti dari server ini.", "domain_block_modal.you_wont_see_posts": "Anda tidak akan melihat postingan atau notifikasi dari pengguna di server ini.", "domain_pill.activitypub_lets_connect": "Ini memungkinkan anda terhubung dan berinteraksi dengan orang-orang tidak hanya di Mastodon, tetapi juga di berbagai aplikasi sosial.", "domain_pill.activitypub_like_language": "ActivityPub seperti bahasa yang digunakan Mastodon dengan jejaring sosial lainnya.", @@ -231,6 +236,7 @@ "domain_pill.who_you_are": ".", "domain_pill.your_handle": "Nama pengguna anda:", "domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers, too.", + "domain_pill.your_username": "Pengenal unik anda di server ini. Itu memungkinkan dapat mencari pengguna dengan nama yang sama di server lain.", "embed.instructions": "Sematkan kiriman ini di situs web Anda dengan menyalin kode di bawah ini.", "embed.preview": "Tampilan akan seperti ini nantinya:", "emoji_button.activity": "Aktivitas", @@ -293,6 +299,7 @@ "filter_modal.select_filter.subtitle": "Gunakan kategori yang sudah ada atau buat yang baru", "filter_modal.select_filter.title": "Saring kiriman ini", "filter_modal.title.status": "Saring sebuah kiriman", + "filtered_notifications_banner.title": "Notifikasi yang disaring", "firehose.all": "Semua", "firehose.local": "Server Ini", "firehose.remote": "Server Lain", @@ -301,6 +308,7 @@ "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.", "follow_suggestions.curated_suggestion": "Pilihan staf", "follow_suggestions.dismiss": "Jangan tampilkan lagi", + "follow_suggestions.friends_of_friends_longer": "Populer di antara orang yang anda ikuti", "follow_suggestions.hints.featured": "Profil ini telah dipilih sendiri oleh tim {domain}.", "follow_suggestions.hints.friends_of_friends": "Profil ini populer di kalangan orang yang anda ikuti.", "follow_suggestions.personalized_suggestion": "Saran yang dipersonalisasi", @@ -308,6 +316,7 @@ "follow_suggestions.popular_suggestion_longer": "Populer di {domain}", "follow_suggestions.similar_to_recently_followed_longer": "Serupa dengan profil yang baru Anda ikuti", "follow_suggestions.view_all": "Lihat semua", + "follow_suggestions.who_to_follow": "Siapa yang harus diikuti", "followed_tags": "Tagar yang diikuti", "footer.about": "Tentang", "footer.directory": "Direktori profil", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 21a8a084e7..f9173b65f9 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -304,7 +304,6 @@ "filter_modal.select_filter.subtitle": "Usez disponebla grupo o kreez novajo", "filter_modal.select_filter.title": "Filtragez ca posto", "filter_modal.title.status": "Filtragez posto", - "filter_warning.matches_filter": "Sama kam filtrilo \"{title}\"", "filtered_notifications_banner.pending_requests": "De {count, plural,=0 {nulu} one {1 persono} other {# personi}} quan vu forsan konocas", "filtered_notifications_banner.title": "Filtrilita savigi", "firehose.all": "Omno", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index a6f85304cd..d1601c7634 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Hætta að fylgjast með viðkomandi?", "content_warning.hide": "Fela færslu", "content_warning.show": "Birta samt", + "content_warning.show_more": "Sýna meira", "conversation.delete": "Eyða samtali", "conversation.mark_as_read": "Merkja sem lesið", "conversation.open": "Skoða samtal", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Notaðu fyrirliggjandi flokk eða útbúðu nýjan", "filter_modal.select_filter.title": "Sía þessa færslu", "filter_modal.title.status": "Sía færslu", - "filter_warning.matches_filter": "Samsvarar síunni“{title}”", + "filter_warning.matches_filter": "Samsvarar síunni “{title}”", "filtered_notifications_banner.pending_requests": "Frá {count, plural, =0 {engum} one {einum aðila} other {# manns}} sem þú gætir þekkt", "filtered_notifications_banner.title": "Síaðar tilkynningar", "firehose.all": "Allt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 44040cc716..68201e18de 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Smettere di seguire l'utente?", "content_warning.hide": "Nascondi post", "content_warning.show": "Mostra comunque", + "content_warning.show_more": "Mostra di più", "conversation.delete": "Elimina conversazione", "conversation.mark_as_read": "Segna come letto", "conversation.open": "Visualizza conversazione", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Usa una categoria esistente o creane una nuova", "filter_modal.select_filter.title": "Filtra questo post", "filter_modal.title.status": "Filtra un post", - "filter_warning.matches_filter": "Corrisponde al filtro \"{title}\"", + "filter_warning.matches_filter": "Corrisponde al filtro “{title}”", "filtered_notifications_banner.pending_requests": "Da {count, plural, =0 {nessuno} one {una persona} other {# persone}} che potresti conoscere", "filtered_notifications_banner.title": "Notifiche filtrate", "firehose.all": "Tutto", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 9aea55ec3f..c0ef224b70 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "アンケート期間", "compose_form.poll.multiple": "複数選択", "compose_form.poll.option_placeholder": "項目{number}", + "compose_form.poll.single": "単一選択", "compose_form.poll.switch_to_multiple": "複数選択に変更", "compose_form.poll.switch_to_single": "単一選択に変更", "compose_form.poll.type": "スタイル", @@ -195,7 +196,8 @@ "confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?", "confirmations.unfollow.title": "フォローを解除しようとしています", "content_warning.hide": "内容を隠す", - "content_warning.show": "承知の上で表示", + "content_warning.show": "承知して表示", + "content_warning.show_more": "続きを表示", "conversation.delete": "会話を削除", "conversation.mark_as_read": "既読にする", "conversation.open": "会話を表示", @@ -304,7 +306,7 @@ "filter_modal.select_filter.subtitle": "既存のカテゴリーを使用するか新規作成します", "filter_modal.select_filter.title": "この投稿をフィルターする", "filter_modal.title.status": "投稿をフィルターする", - "filter_warning.matches_filter": "フィルター「{title}」に一致する投稿です", + "filter_warning.matches_filter": "フィルター「{title}」に一致する投稿", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {すべて完了しました} other {#人の通知がブロックされています}}", "filtered_notifications_banner.title": "保留中の通知", "firehose.all": "すべて", @@ -503,12 +505,13 @@ "notification.admin.report_statuses": "{name}さんが{target}さんを「{category}」として通報しました", "notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました", "notification.admin.sign_up": "{name}さんがサインアップしました", - "notification.admin.sign_up.name_and_others": "{name}さんほか{count, plural, other {#人}}がサインアップしました", + "notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました", "notification.favourite": "{name}さんがお気に入りしました", - "notification.favourite.name_and_others_with_link": "{name}さんほか{count, plural, other {#人}}がお気に入りしました", + "notification.favourite.name_and_others_with_link": "{name}さんとほか{count, plural, other {#人}}がお気に入りしました", "notification.follow": "{name}さんにフォローされました", + "notification.follow.name_and_others": "{name}さんとほか{count, plural, other {#人}}にフォローされました", "notification.follow_request": "{name}さんがあなたにフォローリクエストしました", - "notification.follow_request.name_and_others": "{name}さんほか{count, plural, other {#人}}があなたにフォローリクエストしました", + "notification.follow_request.name_and_others": "{name}さんとほか{count, plural, other {#人}}があなたにフォローリクエストしました", "notification.label.mention": "メンション", "notification.label.private_mention": "非公開の返信 (メンション)", "notification.label.private_reply": "非公開の返信", @@ -527,7 +530,7 @@ "notification.own_poll": "アンケートが終了しました", "notification.poll": "投票したアンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", - "notification.reblog.name_and_others_with_link": "{name}さんほか{count, plural, other {#人}}にブーストされました", + "notification.reblog.name_and_others_with_link": "{name}さんとほか{count, plural, other {#人}}がブーストしました", "notification.relationships_severance_event": "{name} との関係が失われました", "notification.relationships_severance_event.account_suspension": "{from} の管理者が {target} さんを停止したため、今後このユーザーとの交流や新しい投稿の受け取りができなくなりました。", "notification.relationships_severance_event.domain_block": "{from} の管理者が {target} をブロックしました。これにより{followersCount}フォロワーと{followingCount, plural, other {#フォロー}}が失われました。", @@ -565,6 +568,7 @@ "notifications.column_settings.filter_bar.category": "クイックフィルターバー:", "notifications.column_settings.follow": "新しいフォロワー:", "notifications.column_settings.follow_request": "新しいフォローリクエスト:", + "notifications.column_settings.group": "グループ", "notifications.column_settings.mention": "返信:", "notifications.column_settings.poll": "アンケート結果:", "notifications.column_settings.push": "プッシュ通知", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 6b1dc6b365..532fc01ab1 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "사용자를 언팔로우 할까요?", "content_warning.hide": "게시물 숨기기", "content_warning.show": "무시하고 보기", + "content_warning.show_more": "더 보기", "conversation.delete": "대화 삭제", "conversation.mark_as_read": "읽은 상태로 표시", "conversation.open": "대화 보기", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "기존의 카테고리를 사용하거나 새로 하나를 만듧니다", "filter_modal.select_filter.title": "이 게시물을 필터", "filter_modal.title.status": "게시물 필터", - "filter_warning.matches_filter": "\"{title}\" 필터에 걸림", + "filter_warning.matches_filter": "\"{title}\" 필터에 걸림", "filtered_notifications_banner.pending_requests": "알 수도 있는 {count, plural, =0 {0 명} one {한 명} other {# 명}}의 사람들로부터", "filtered_notifications_banner.title": "걸러진 알림", "firehose.all": "모두", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index ac95b590e3..55678dbdf8 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -13,6 +13,8 @@ "account.edit_profile": "Recolere notionem", "account.featured_tags.last_status_never": "Nulla contributa", "account.featured_tags.title": "Hashtag notātī {name}", + "account.followers_counter": "{count, plural, one {{counter} sectator} other {{counter} sectatores}}", + "account.following_counter": "{count, plural, one {{counter} sectans} other {{counter} sectans}}", "account.moved_to": "{name} significavit eum suam rationem novam nunc esse:", "account.muted": "Confutatus", "account.requested_follow": "{name} postulavit ut te sequeretur", @@ -230,6 +232,7 @@ "search_results.all": "Omnis", "server_banner.active_users": "Usūrāriī āctīvī", "server_banner.administered_by": "Administratur:", + "server_banner.is_one_of_many": "{domain} est unum ex multis independentibus servientibus Mastodon quos adhibere potes ut participes in fediverso.", "sign_in_banner.sign_in": "Sign in", "status.admin_status": "Open this status in the moderation interface", "status.block": "Impedire @{name}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 60d0acf7a1..b2740b0165 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Apklausos trukmė", "compose_form.poll.multiple": "Keli pasirinkimai", "compose_form.poll.option_placeholder": "{number} parinktis", + "compose_form.poll.single": "Vienas pasirinkimas", "compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų leidžiama pasirinkti kelis pasirinkimus", "compose_form.poll.switch_to_single": "Keisti apklausą, kad būtų leidžiama pasirinkti vieną pasirinkimą", "compose_form.poll.type": "Stilius", @@ -196,6 +197,7 @@ "confirmations.unfollow.title": "Nebesekti naudotoją?", "content_warning.hide": "Slėpti įrašą", "content_warning.show": "Rodyti vis tiek", + "content_warning.show_more": "Rodyti daugiau", "conversation.delete": "Ištrinti pokalbį", "conversation.mark_as_read": "Žymėti kaip skaitytą", "conversation.open": "Peržiūrėti pokalbį", @@ -304,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Naudok esamą kategoriją arba sukurk naują.", "filter_modal.select_filter.title": "Filtruoti šį įrašą", "filter_modal.title.status": "Filtruoti įrašą", - "filter_warning.matches_filter": "Atitinka filtrą „{title}“", + "filter_warning.matches_filter": "Atitinka filtrą „{title}“", "filtered_notifications_banner.pending_requests": "Iš {count, plural, =0 {nė vieno} one {žmogaus} few {# žmonių} many {# žmonių} other {# žmonių}}, kuriuos galbūt pažįsti", "filtered_notifications_banner.title": "Filtruojami pranešimai", "firehose.all": "Visi", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 7d325c057d..d7507ee884 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -146,7 +146,7 @@ "compose.saved.body": "Ziņa saglabāta.", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", "compose_form.encryption_warning": "Mastodon ieraksti nav pilnībā šifrēti. Nedalies ar jebkādu jutīgu informāciju caur Mastodon!", - "compose_form.hashtag_warning": "Šī ziņa netiks norādīta zem nevienas atsauces, jo tā nav publiska. Tikai publiskās ziņās var meklēt pēc atsauces.", + "compose_form.hashtag_warning": "Šis ieraksts netiks uzrādīts nevienā tēmturī, jo tas nav redzams visiem. Tikai visiem redzamos ierakstus var meklēt pēc tēmtura.", "compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot, lai redzētu tikai sekotājiem paredzētos ierakstus.", "compose_form.lock_disclaimer.lock": "slēgts", "compose_form.placeholder": "Kas Tev padomā?", @@ -208,7 +208,7 @@ "dismissable_banner.dismiss": "Atcelt", "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.", "dismissable_banner.explore_statuses": "Šie ir ieraksti, kas šodien gūst arvien lielāku ievērību visā sociālajā tīklā. Augstāk tiek kārtoti jaunāki ieraksti, kuri tiek vairāk pastiprināti un ievietoti izlasēs.", - "dismissable_banner.explore_tags": "Šie tēmturi šobrīd kļūst arvien populārāki cilvēku vidū šajā un citos decentralizētā tīkla serveros.", + "dismissable_banner.explore_tags": "Šie ir tēmturi, kas šodien gūst uzmanību sabiedriskajā tīmeklī. Tēmturi, kurus izmanto vairāk dažādu cilvēku, tiek vērtēti augstāk.", "dismissable_banner.public_timeline": "Šie ir jaunākie publiskie ieraksti no lietotājiem sociālajā tīmeklī, kuriem {domain} seko cilvēki.", "domain_block_modal.block": "Bloķēt serveri", "domain_block_modal.they_cant_follow": "Neviens šajā serverī nevar Tev sekot.", @@ -246,7 +246,7 @@ "empty_column.favourited_statuses": "Tev vēl nav iecienītāko ierakstu. Kad pievienosi kādu izlasei, tas tiks parādīts šeit.", "empty_column.favourites": "Šo ziņu neviens vēl nav pievienojis izlasei. Kad kāds to izdarīs, tas parādīsies šeit.", "empty_column.follow_requests": "Šobrīd Tev nav sekošanas pieprasījumu. Kad saņemsi kādu, tas parādīsies šeit.", - "empty_column.followed_tags": "Tu vēl neesi sekojis nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.", + "empty_column.followed_tags": "Tu vēl neseko nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.", "empty_column.hashtag": "Ar šo tēmturi nekas nav atrodams.", "empty_column.home": "Tava mājas laikjosla ir tukša. Seko vairāk cilvēkiem, lai to piepildītu!", "empty_column.list": "Pagaidām šajā sarakstā nekā nav. Kad šī saraksta dalībnieki ievietos jaunus ierakstus, tie parādīsies šeit.", @@ -282,7 +282,6 @@ "filter_modal.select_filter.subtitle": "Izmanto esošu kategoriju vai izveido jaunu", "filter_modal.select_filter.title": "Filtrēt šo ziņu", "filter_modal.title.status": "Filtrēt ziņu", - "filter_warning.matches_filter": "Atbilst filtram “{title}”", "firehose.all": "Visi", "firehose.local": "Šis serveris", "firehose.remote": "Citi serveri", @@ -315,8 +314,8 @@ "hashtag.column_settings.tag_mode.all": "Visi no šiem", "hashtag.column_settings.tag_mode.any": "Kāds no šiem", "hashtag.column_settings.tag_mode.none": "Neviens no šiem", - "hashtag.column_settings.tag_toggle": "Pievienot kolonnai papildu tēmturus", - "hashtag.counter_by_accounts": "{count, plural, one {{counter} dalībnieks} other {{counter} dalībnieki}}", + "hashtag.column_settings.tag_toggle": "Iekļaut šajā kolonnā papildu birkas", + "hashtag.counter_by_accounts": "{count, plural, zero{{counter} dalībnieku} one {{counter} dalībnieks} other {{counter} dalībnieki}}", "hashtag.counter_by_uses": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}}", "hashtag.counter_by_uses_today": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}} šodien", "hashtag.follow": "Sekot tēmturim", @@ -412,6 +411,7 @@ "mute_modal.show_options": "Parādīt iespējas", "mute_modal.title": "Apklusināt lietotāju?", "navigation_bar.about": "Par", + "navigation_bar.administration": "Pārvaldība", "navigation_bar.advanced_interface": "Atvērt paplašinātā tīmekļa saskarnē", "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", @@ -428,6 +428,7 @@ "navigation_bar.follows_and_followers": "Sekojamie un sekotāji", "navigation_bar.lists": "Saraksti", "navigation_bar.logout": "Iziet", + "navigation_bar.moderation": "Satura pārraudzība", "navigation_bar.mutes": "Apklusinātie lietotāji", "navigation_bar.opened_in_classic_interface": "Ieraksti, konti un citas noteiktas lapas pēc noklusējuma tiek atvērtas klasiskajā tīmekļa saskarnē.", "navigation_bar.personal": "Personīgie", @@ -443,9 +444,11 @@ "notification.follow": "{name} uzsāka Tev sekot", "notification.follow_request": "{name} nosūtīja Tev sekošanas pieprasījumu", "notification.moderation-warning.learn_more": "Uzzināt vairāk", + "notification.moderation_warning": "Ir saņemts satura pārraudzības brīdinājums", "notification.moderation_warning.action_delete_statuses": "Daži no Taviem ierakstiem tika noņemti.", "notification.moderation_warning.action_disable": "Tavs konts tika atspējots.", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Daži no Taviem ierakstiem tika atzīmēti kā jutīgi.", + "notification.moderation_warning.action_none": "Konts ir saņēmis satura pārraudzības brīdinājumu.", "notification.moderation_warning.action_sensitive": "Tavi ieraksti turpmāk tiks atzīmēti kā jutīgi.", "notification.moderation_warning.action_silence": "Tavs konts tika ierobežots.", "notification.moderation_warning.action_suspend": "Tava konta darbība tika apturēta.", @@ -554,7 +557,8 @@ "privacy.private.long": "Tikai Tavi sekotāji", "privacy.private.short": "Sekotāji", "privacy.public.long": "Jebkurš Mastodon un ārpus tā", - "privacy.public.short": "Publiska", + "privacy.public.short": "Redzams visiem", + "privacy.unlisted.additional": "Šis uzvedas tieši kā publisks, izņemot to, ka ieraksts neparādīsies tiešraides barotnēs vai tēmturos, izpētē vai Mastodon meklēšanā, pat ja esi to norādījis visa konta ietvaros.", "privacy.unlisted.long": "Mazāk algoritmisku fanfaru", "privacy_policy.last_updated": "Pēdējo reizi atjaunināta {date}", "privacy_policy.title": "Privātuma politika", @@ -652,9 +656,9 @@ "sign_in_banner.create_account": "Izveidot kontu", "sign_in_banner.sign_in": "Pieteikties", "sign_in_banner.sso_redirect": "Piesakies vai Reģistrējies", - "status.admin_account": "Atvērt @{name} moderēšanas saskarni", - "status.admin_domain": "Atvērt {domain} moderēšanas saskarni", - "status.admin_status": "Atvērt šo ziņu moderācijas saskarnē", + "status.admin_account": "Atvērt @{name} satura pārraudzības saskarni", + "status.admin_domain": "Atvērt {domain} satura pārraudzības saskarni", + "status.admin_status": "Atvērt šo ziņu satura pārraudzības saskarnē", "status.block": "Bloķēt @{name}", "status.bookmark": "Grāmatzīme", "status.cancel_reblog_private": "Nepastiprināt", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8df1fc4d1f..e7add2e8c7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Gebruiker ontvolgen?", "content_warning.hide": "Bericht verbergen", "content_warning.show": "Alsnog tonen", + "content_warning.show_more": "Meer tonen", "conversation.delete": "Gesprek verwijderen", "conversation.mark_as_read": "Als gelezen markeren", "conversation.open": "Gesprek tonen", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Een bestaande categorie gebruiken of een nieuwe aanmaken", "filter_modal.select_filter.title": "Dit bericht filteren", "filter_modal.title.status": "Een bericht filteren", - "filter_warning.matches_filter": "Komt overeen met filter “{title}”", + "filter_warning.matches_filter": "Komt overeen met filter \"{title}\"", "filtered_notifications_banner.pending_requests": "Van {count, plural, =0 {niemand} one {een persoon} other {# personen}} die je mogelijk kent", "filtered_notifications_banner.title": "Gefilterde meldingen", "firehose.all": "Alles", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index e2a6ac9c26..6bd16f3cfd 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -305,7 +305,6 @@ "filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny", "filter_modal.select_filter.title": "Filtrer dette innlegget", "filter_modal.title.status": "Filtrer eit innlegg", - "filter_warning.matches_filter": "Passar med filteret «{title}»", "filtered_notifications_banner.pending_requests": "Frå {count, plural, =0 {ingen} one {éin person} other {# personar}} du kanskje kjenner", "filtered_notifications_banner.title": "Filtrerte varslingar", "firehose.all": "Alle", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index b709fbea5e..9a5f379797 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -301,7 +301,6 @@ "filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny", "filter_modal.select_filter.title": "Filtrer dette innlegget", "filter_modal.title.status": "Filtrer et innlegg", - "filter_warning.matches_filter": "Passer med filteret «{title}»", "filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {en person} other {# folk}} du kanskje kjenner", "filtered_notifications_banner.title": "Filtrerte varsler", "firehose.all": "Alt", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 21a1c365f0..5867d6c1a0 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Przestać obserwować?", "content_warning.hide": "Ukryj wpis", "content_warning.show": "Pokaż mimo to", + "content_warning.show_more": "Rozwiń", "conversation.delete": "Usuń konwersację", "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz konwersację", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Użyj istniejącej kategorii lub utwórz nową", "filter_modal.select_filter.title": "Filtruj ten wpis", "filter_modal.title.status": "Filtruj wpis", - "filter_warning.matches_filter": "Pasuje do filtra \"{title}\"", + "filter_warning.matches_filter": "Pasuje do filtra \"{title}\"", "filtered_notifications_banner.pending_requests": "Od {count, plural, =0 {żadnej osoby którą możesz znać} one {# osoby którą możesz znać} other {# osób które możesz znać}}", "filtered_notifications_banner.title": "Powiadomienia filtrowane", "firehose.all": "Wszystko", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index f5b6481a83..28c6a07e01 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Deixar de seguir o usuário?", "content_warning.hide": "Ocultar post", "content_warning.show": "Mostrar mesmo assim", + "content_warning.show_more": "Mostrar mais", "conversation.delete": "Excluir conversa", "conversation.mark_as_read": "Marcar como lida", "conversation.open": "Ver conversa", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova", "filter_modal.select_filter.title": "Filtrar esta publicação", "filter_modal.title.status": "Filtrar uma publicação", - "filter_warning.matches_filter": "Correspondente ao filtro “{title}”", + "filter_warning.matches_filter": "Corresponder filtro “{title}”", "filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça", "filtered_notifications_banner.title": "Notificações filtradas", "firehose.all": "Tudo", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index fe18444ce1..a4f2e27401 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -301,7 +301,6 @@ "filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova", "filter_modal.select_filter.title": "Filtrar esta publicação", "filter_modal.title.status": "Filtrar uma publicação", - "filter_warning.matches_filter": "Corresponde ao filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer", "filtered_notifications_banner.title": "Notificações filtradas", "firehose.all": "Todas", @@ -773,7 +772,7 @@ "status.bookmark": "Guardar nos marcadores", "status.cancel_reblog_private": "Deixar de reforçar", "status.cannot_reblog": "Não é possível partilhar esta publicação", - "status.continued_thread": "Continuação da conserva", + "status.continued_thread": "Continuação da conversa", "status.copy": "Copiar hiperligação para a publicação", "status.delete": "Eliminar", "status.detailed_status": "Vista pormenorizada da conversa", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 46463be76f..2a985a1f84 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -36,7 +36,7 @@ "account.followers.empty": "На этого пользователя пока никто не подписан.", "account.followers_counter": "{count, plural, one {{counter} подписчик} few {{counter} подписчика} other {{counter} подписчиков}}", "account.following": "Подписки", - "account.following_counter": "{count, plural, one {{counter} последующий} other {{counter} последующие}}", + "account.following_counter": "{count, plural, one {# подписка} many {# подписок} other {# подписки}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.go_to_profile": "Перейти к профилю", "account.hide_reblogs": "Скрыть продвижения от @{name}", @@ -303,8 +303,7 @@ "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", "filter_modal.select_filter.title": "Фильтровать этот пост", "filter_modal.title.status": "Фильтровать пост", - "filter_warning.matches_filter": "Соответствует фильтру \"{title}\"", - "filtered_notifications_banner.pending_requests": "Вы можете знать {count, plural, =0 {ни один} one {один человек} other {# люди}}", + "filtered_notifications_banner.pending_requests": "Вы можете знать {count, plural, =0 {ни одного человека} one {одного человека} other {# человек}}", "filtered_notifications_banner.title": "Отфильтрованные уведомления", "firehose.all": "Все", "firehose.local": "Текущий сервер", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ffca0914e5..a1bcdb9ff9 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -155,6 +155,7 @@ "compose_form.poll.duration": "Trvanie ankety", "compose_form.poll.multiple": "Viacero možností", "compose_form.poll.option_placeholder": "Možnosť {number}", + "compose_form.poll.single": "Jediná voľba", "compose_form.poll.switch_to_multiple": "Zmeniť anketu a povoliť viaceré možnosti", "compose_form.poll.switch_to_single": "Zmeniť anketu na jediný povolený výber", "compose_form.poll.type": "Typ", @@ -290,7 +291,6 @@ "filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú", "filter_modal.select_filter.title": "Filtrovanie tohto príspevku", "filter_modal.title.status": "Filtrovanie príspevku", - "filter_warning.matches_filter": "Zhody triedenia “{title}”", "filtered_notifications_banner.title": "Filtrované oznámenia", "firehose.all": "Všetko", "firehose.local": "Tento server", @@ -404,6 +404,7 @@ "limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.", "link_preview.author": "Autor: {name}", "link_preview.more_from_author": "Viac od {name}", + "link_preview.shares": "{count, plural, one {{counter} príspevok} other {{counter} príspevkov}}", "lists.account.add": "Pridať do zoznamu", "lists.account.remove": "Odstrániť zo zoznamu", "lists.delete": "Vymazať zoznam", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index e38ea796f6..c0199d0078 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Të ndalet ndjekja e përdoruesit?", "content_warning.hide": "Fshihe postimin", "content_warning.show": "Shfaqe, sido qoftë", + "content_warning.show_more": "Shfaq më tepër", "conversation.delete": "Fshije bisedën", "conversation.mark_as_read": "Vëri shenjë si të lexuar", "conversation.open": "Shfaq bisedën", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Përdorni një kategori ekzistuese, ose krijoni një të re", "filter_modal.select_filter.title": "Filtroje këtë postim", "filter_modal.title.status": "Filtroni një postim", - "filter_warning.matches_filter": "Ka përkim me filtrin “{title}”", + "filter_warning.matches_filter": "Ka përkim me filtrin “{title}”", "filtered_notifications_banner.pending_requests": "Nga {count, plural, =0 {askush} one {një person} other {# vetë}} që mund të njihni", "filtered_notifications_banner.title": "Njoftime të filtruar", "firehose.all": "Krejt", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index d9d4da4ad0..eae02649a1 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -22,7 +22,7 @@ "account.cancel_follow_request": "Återkalla din begäran om att få följa", "account.copy": "Kopiera länk till profil", "account.direct": "Nämn @{name} privat", - "account.disable_notifications": "Sluta notifiera mig när @{name} gör inlägg", + "account.disable_notifications": "Sluta meddela mig när @{name} skriver ett inlägg", "account.domain_blocked": "Domän blockerad", "account.edit_profile": "Redigera profil", "account.enable_notifications": "Notifiera mig när @{name} gör inlägg", @@ -44,7 +44,7 @@ "account.joined_short": "Gick med", "account.languages": "Ändra vilka språk du helst vill se i ditt flöde", "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}", - "account.locked_info": "För detta konto har ägaren valt att manuellt godkänna vem som kan följa hen.", + "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa det.", "account.media": "Media", "account.mention": "Nämn @{name}", "account.moved_to": "{name} har indikerat att hen har ett nytt konto:", @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Avfölj %s?", "content_warning.hide": "Dölj inlägg", "content_warning.show": "Visa ändå", + "content_warning.show_more": "Visa mer", "conversation.delete": "Radera konversation", "conversation.mark_as_read": "Markera som läst", "conversation.open": "Visa konversation", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny", "filter_modal.select_filter.title": "Filtrera detta inlägg", "filter_modal.title.status": "Filtrera ett inlägg", - "filter_warning.matches_filter": "Matchar filtret \"{title}\"", + "filter_warning.matches_filter": "Matchar filtret \"{title}\"", "filtered_notifications_banner.pending_requests": "Från {count, plural, =0 {ingen} one {en person} other {# personer}} du kanske känner", "filtered_notifications_banner.title": "Filtrerade aviseringar", "firehose.all": "Allt", @@ -508,6 +509,7 @@ "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.favourite.name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}} har favoritmarkerat ditt inlägg", "notification.follow": "{name} följer dig", + "notification.follow.name_and_others": "{name} och {count, plural, one {# annan} other {# andra}} följer dig", "notification.follow_request": "{name} har begärt att följa dig", "notification.follow_request.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har bett att följa dig", "notification.label.mention": "Nämn", @@ -566,6 +568,7 @@ "notifications.column_settings.filter_bar.category": "Snabbfilter", "notifications.column_settings.follow": "Nya följare:", "notifications.column_settings.follow_request": "Ny följ-förfrågan:", + "notifications.column_settings.group": "Gruppera", "notifications.column_settings.mention": "Omnämningar:", "notifications.column_settings.poll": "Omröstningsresultat:", "notifications.column_settings.push": "Push-aviseringar", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index d05840aa83..9e845c35e7 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "ระยะเวลาการสำรวจความคิดเห็น", "compose_form.poll.multiple": "หลายตัวเลือก", "compose_form.poll.option_placeholder": "ตัวเลือก {number}", + "compose_form.poll.single": "ตัวเลือกเดียว", "compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก", "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดียว", "compose_form.poll.type": "ลักษณะ", @@ -196,6 +197,7 @@ "confirmations.unfollow.title": "เลิกติดตามผู้ใช้?", "content_warning.hide": "ซ่อนโพสต์", "content_warning.show": "แสดงต่อไป", + "content_warning.show_more": "แสดงเพิ่มเติม", "conversation.delete": "ลบการสนทนา", "conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว", "conversation.open": "ดูการสนทนา", @@ -304,7 +306,7 @@ "filter_modal.select_filter.subtitle": "ใช้หมวดหมู่ที่มีอยู่หรือสร้างหมวดหมู่ใหม่", "filter_modal.select_filter.title": "กรองโพสต์นี้", "filter_modal.title.status": "กรองโพสต์", - "filter_warning.matches_filter": "ตรงกับตัวกรอง “{title}”", + "filter_warning.matches_filter": "ตรงกับตัวกรอง “{title}”", "filtered_notifications_banner.pending_requests": "จาก {count, plural, =0 {ไม่มีใคร} other {# คน}} ที่คุณอาจรู้จัก", "filtered_notifications_banner.title": "การแจ้งเตือนที่กรองอยู่", "firehose.all": "ทั้งหมด", @@ -507,6 +509,7 @@ "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.favourite.name_and_others_with_link": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", + "notification.follow.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ติดตามคุณ", "notification.follow_request": "{name} ได้ขอติดตามคุณ", "notification.follow_request.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ขอติดตามคุณ", "notification.label.mention": "การกล่าวถึง", @@ -565,6 +568,7 @@ "notifications.column_settings.filter_bar.category": "แถบตัวกรองด่วน", "notifications.column_settings.follow": "ผู้ติดตามใหม่:", "notifications.column_settings.follow_request": "คำขอติดตามใหม่:", + "notifications.column_settings.group": "จัดกลุ่ม", "notifications.column_settings.mention": "การกล่าวถึง:", "notifications.column_settings.poll": "ผลลัพธ์การสำรวจความคิดเห็น:", "notifications.column_settings.push": "การแจ้งเตือนแบบผลัก", @@ -851,6 +855,11 @@ "upload_error.poll": "ไม่อนุญาตการอัปโหลดไฟล์โดยมีการสำรวจความคิดเห็น", "upload_form.audio_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้คนที่พิการทางการมองเห็นหรือมีสายตาเลือนราง", + "upload_form.drag_and_drop.instructions": "หากต้องการเลือกไฟล์สื่อ ให้กดปุ่มที Space หรือ Enter บนแป้นพิมพ์ เมื่อเลือกไฟล์ได้แล้ว ก็สามารถใช้ปุ่มลูกศรเพื่อเลื่อนไฟล์ไปในทิศทางที่ต้องการได้ เมื่อต้องการวางไฟล์ในตำแหน่งใหม่ ให้กดปุ่ม Space หรือ Enter ดูอีกครั้ง หรือหากต้องการยกเลิกการเลือก ให้กดปุ่ม Esc ได้", + "upload_form.drag_and_drop.on_drag_cancel": "การลากไฟล์นั้นหยุดชะงัก ไฟล์ที่กำลังแนบมาถูกยกเลิก {item} ได้ถูกลบทิ้งแล้ว", + "upload_form.drag_and_drop.on_drag_end": "ไฟล์แนบ {item} ได้ถูกยกเลิกแล้ว", + "upload_form.drag_and_drop.on_drag_over": "ไฟล์แนบ {item} ได้ถูกย้ายไปแล้ว", + "upload_form.drag_and_drop.on_drag_start": "ได้รับไฟล์แนบเรียบร้อยแล้ว {item}.", "upload_form.edit": "แก้ไข", "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ", "upload_form.video_description": "อธิบายสำหรับผู้คนที่พิการทางการได้ยิน ได้ยินไม่ชัด พิการทางการมองเห็น หรือมีสายตาเลือนราง", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index dae573370a..fbbe76b431 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Kullanıcıyı takipten çık?", "content_warning.hide": "Gönderiyi gizle", "content_warning.show": "Yine de göster", + "content_warning.show_more": "Daha fazla göster", "conversation.delete": "Sohbeti sil", "conversation.mark_as_read": "Okundu olarak işaretle", "conversation.open": "Sohbeti görüntüle", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Mevcut bir kategoriyi kullan veya yeni bir tane oluştur", "filter_modal.select_filter.title": "Bu gönderiyi süzgeçle", "filter_modal.title.status": "Bir gönderi süzgeçle", - "filter_warning.matches_filter": "“{title}” filtresiyle eşleşiyor", + "filter_warning.matches_filter": "“{title}” filtresiyle eşleşiyor", "filtered_notifications_banner.pending_requests": "Bildiğiniz {count, plural, =0 {hiç kimseden} one {bir kişiden} other {# kişiden}}", "filtered_notifications_banner.title": "Filtrelenmiş bildirimler", "firehose.all": "Tümü", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 66392afd79..9afa5816aa 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Тривалість опитування", "compose_form.poll.multiple": "Кілька варіантів", "compose_form.poll.option_placeholder": "Варіант {number}", + "compose_form.poll.single": "Один вибір", "compose_form.poll.switch_to_multiple": "Дозволити вибір декількох відповідей", "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", "compose_form.poll.type": "Стиль", @@ -196,6 +197,7 @@ "confirmations.unfollow.title": "Відписатися від користувача?", "content_warning.hide": "Сховати допис", "content_warning.show": "Усе одно показати", + "content_warning.show_more": "Показати більше", "conversation.delete": "Видалити бесіду", "conversation.mark_as_read": "Позначити як прочитане", "conversation.open": "Переглянути бесіду", @@ -304,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Використати наявну категорію або створити нову", "filter_modal.select_filter.title": "Фільтрувати цей допис", "filter_modal.title.status": "Фільтрувати допис", - "filter_warning.matches_filter": "Збігається з фільтром “{title}”", + "filter_warning.matches_filter": "Збігається з фільтром “{title}”", "filtered_notifications_banner.pending_requests": "Від {count, plural, =0 {жодної особи} one {однієї особи} few {# осіб} many {# осіб} other {# особи}}, котрих ви можете знати", "filtered_notifications_banner.title": "Відфільтровані сповіщення", "firehose.all": "Всі", @@ -507,6 +509,7 @@ "notification.favourite": "Ваш допис сподобався {name}", "notification.favourite.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} вподобали ваш допис", "notification.follow": "{name} підписалися на вас", + "notification.follow.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} стежать за вами", "notification.follow_request": "{name} відправили запит на підписку", "notification.follow_request.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} надсилають вам запит на стеження", "notification.label.mention": "Згадка", @@ -565,7 +568,7 @@ "notifications.column_settings.filter_bar.category": "Панель швидкого фільтра", "notifications.column_settings.follow": "Нові підписники:", "notifications.column_settings.follow_request": "Нові запити на підписку:", - "notifications.column_settings.group": "Група", + "notifications.column_settings.group": "Групувати", "notifications.column_settings.mention": "Згадки:", "notifications.column_settings.poll": "Результати опитування:", "notifications.column_settings.push": "Push-сповіщення", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1daeada1a2..0fcd3e43dd 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Bỏ theo dõi", "content_warning.hide": "Ẩn lại", "content_warning.show": "Nhấn để xem", + "content_warning.show_more": "Hiện thêm", "conversation.delete": "Xóa tin nhắn này", "conversation.mark_as_read": "Đánh dấu là đã đọc", "conversation.open": "Xem toàn bộ tin nhắn", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "Sử dụng một danh mục hiện có hoặc tạo một danh mục mới", "filter_modal.select_filter.title": "Lọc tút này", "filter_modal.title.status": "Lọc một tút", - "filter_warning.matches_filter": "Khớp bộ lọc “{title}”", + "filter_warning.matches_filter": "Khớp bộ lọc “{title}”", "filtered_notifications_banner.pending_requests": "Từ {count, plural, =0 {không ai} other {# người}} bạn có thể biết", "filtered_notifications_banner.title": "Thông báo đã lọc", "firehose.all": "Toàn bộ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 3b1e6b813d..f8da5933ae 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "是否取消关注用户?", "content_warning.hide": "隐藏嘟文", "content_warning.show": "仍然显示", + "content_warning.show_more": "显示更多", "conversation.delete": "删除对话", "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "使用一个已存在类别,或创建一个新类别", "filter_modal.select_filter.title": "过滤此嘟文", "filter_modal.title.status": "过滤一条嘟文", - "filter_warning.matches_filter": "命中过滤规则 “{title}”", + "filter_warning.matches_filter": "命中过滤规则 “{title}”", "filtered_notifications_banner.pending_requests": "来自你可能认识的 {count, plural, =0 {0 个人} other {# 个人}}", "filtered_notifications_banner.title": "通知(已过滤)", "firehose.all": "全部", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 62a43fa7e4..8acd6df078 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -11,6 +11,7 @@ "about.not_available": "本伺服器尚未提供這資訊。", "about.powered_by": "由 {mastodon} 提供之去中心化社交媒體", "about.rules": "伺服器規則", + "account.account_note_header": "個人筆記", "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機械人", "account.badges.group": "群組", @@ -33,6 +34,7 @@ "account.follow_back": "追蹤對方", "account.followers": "追蹤者", "account.followers.empty": "尚未有人追蹤這位使用者。", + "account.followers_counter": "{count, plural, other {{counter} 個追蹤者}}", "account.following": "正在追蹤", "account.follows.empty": "這位使用者尚未追蹤任何人。", "account.go_to_profile": "前往個人檔案", @@ -81,6 +83,7 @@ "alert.rate_limited.title": "已限速", "alert.unexpected.message": "發生意外錯誤。", "alert.unexpected.title": "失敗!", + "alt_text_badge.title": "替代文字", "announcement.announcement": "公告", "attachments_list.unprocessed": "(未處理)", "audio.hide": "隱藏音訊", @@ -151,6 +154,7 @@ "compose_form.poll.duration": "投票期限", "compose_form.poll.multiple": "多選", "compose_form.poll.option_placeholder": "選項 {number}", + "compose_form.poll.single": "單一選擇", "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項", "compose_form.poll.switch_to_single": "變更投票為限定單一選項", "compose_form.poll.type": "風格", @@ -168,6 +172,7 @@ "confirmations.delete.title": "刪除帖文?", "confirmations.delete_list.confirm": "刪除", "confirmations.delete_list.message": "你確定要永久刪除這列表嗎?", + "confirmations.delete_list.title": "刪除列表?", "confirmations.discard_edit_media.confirm": "捨棄", "confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?", "confirmations.edit.confirm": "編輯", @@ -182,6 +187,9 @@ "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?", "confirmations.unfollow.confirm": "取消追蹤", "confirmations.unfollow.message": "真的不要繼續追蹤 {name} 了嗎?", + "confirmations.unfollow.title": "取消追蹤使用者?", + "content_warning.hide": "隱藏嘟文", + "content_warning.show": "仍要顯示", "conversation.delete": "刪除對話", "conversation.mark_as_read": "標為已讀", "conversation.open": "檢視對話", @@ -343,6 +351,7 @@ "home.pending_critical_update.link": "查看更新", "home.pending_critical_update.title": "有重要的安全更新!", "home.show_announcements": "顯示公告", + "ignore_notifications_modal.ignore": "忽略推播通知", "interaction_modal.description.favourite": "有了 Mastodon 的帳號,你便可以把這篇帖文加入最愛,讓作者知道你欣賞他的作品,並可以稍後再閱讀。", "interaction_modal.description.follow": "在 Mastodon 上有個帳號的話,您可以追蹤 {name} 以於首頁時間軸接收他們的帖文。", "interaction_modal.description.reblog": "在 Mastodon 上有個帳號的話,您可以向自己的追縱者們轉發此帖文。", @@ -417,6 +426,7 @@ "lists.subheading": "列表", "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "載入中…", + "media_gallery.hide": "隱藏", "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", "mute_modal.hide_from_notifications": "隱藏通知", "mute_modal.hide_options": "隱藏選項", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 388e09fc98..8903573dec 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -1,7 +1,7 @@ { "about.blocks": "被限制的伺服器", "about.contact": "聯絡我們:", - "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 的註冊商標。", + "about.disclaimer": "Mastodon 是一個自由的開源軟體,是 Mastodon gGmbH 之註冊商標。", "about.domain_blocks.no_reason_available": "無法存取的原因", "about.domain_blocks.preamble": "Mastodon 基本上允許您瀏覽聯邦宇宙中任何伺服器的內容並與使用者互動。以下是在本伺服器上設定的例外。", "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確搜尋或主動跟隨對方。", @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "是否取消跟隨該使用者?", "content_warning.hide": "隱藏嘟文", "content_warning.show": "仍要顯示", + "content_warning.show_more": "顯示更多", "conversation.delete": "刪除對話", "conversation.mark_as_read": "標記為已讀", "conversation.open": "檢視對話", @@ -305,7 +306,7 @@ "filter_modal.select_filter.subtitle": "使用既有的類別或是新增", "filter_modal.select_filter.title": "過濾此嘟文", "filter_modal.title.status": "過濾一則嘟文", - "filter_warning.matches_filter": "匹配過濾器「{title}」", + "filter_warning.matches_filter": "符合過濾器「{title}」", "filtered_notifications_banner.pending_requests": "來自您可能認識的 {count, plural, =0 {0 人} other {# 人}}", "filtered_notifications_banner.title": "已過濾之推播通知", "firehose.all": "全部", @@ -396,9 +397,9 @@ "interaction_modal.title.follow": "跟隨 {name}", "interaction_modal.title.reblog": "轉嘟 {name} 的嘟文", "interaction_modal.title.reply": "回覆 {name} 的嘟文", - "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", - "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", - "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", + "intervals.full.days": "{number, plural, other {# 天}}", + "intervals.full.hours": "{number, plural, other {# 小時}}", + "intervals.full.minutes": "{number, plural, other {# 分鐘}}", "keyboard_shortcuts.back": "上一頁", "keyboard_shortcuts.blocked": "開啟「封鎖使用者」列表", "keyboard_shortcuts.boost": "轉嘟", @@ -457,7 +458,7 @@ "lists.replies_policy.title": "顯示回覆:", "lists.search": "搜尋您跟隨之使用者", "lists.subheading": "您的列表", - "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}", + "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "正在載入...", "media_gallery.hide": "隱藏", "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", @@ -499,8 +500,8 @@ "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 已檢舉 {target}", - "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}} ", - "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}} ", + "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}}", + "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}}", "notification.admin.report_statuses": "{name} 已檢舉 {target} 關於 {category}", "notification.admin.report_statuses_other": "{name} 已檢舉 {target}", "notification.admin.sign_up": "{name} 已經註冊", @@ -655,11 +656,11 @@ "poll.closed": "已關閉", "poll.refresh": "重新整理", "poll.reveal": "檢視結果", - "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}", - "poll.total_votes": "{count, plural, one {# 個投票} other {# 個投票}}", + "poll.total_people": "{count, plural, other {# 個人}}", + "poll.total_votes": "{count, plural, other {# 張票}}", "poll.vote": "投票", "poll.voted": "您已對此問題投票", - "poll.votes": "{votes, plural, one {# 張票} other {# 張票}}", + "poll.votes": "{votes, plural, other {# 張票}}", "poll_button.add_poll": "新增投票", "poll_button.remove_poll": "移除投票", "privacy.change": "調整嘟文隱私狀態", @@ -680,10 +681,10 @@ "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!", "relative_time.days": "{number} 天", "relative_time.full.days": "{number, plural, other {# 天}}前", - "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前", + "relative_time.full.hours": "{number, plural, other {# 小時}}前", "relative_time.full.just_now": "剛剛", - "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前", - "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", + "relative_time.full.minutes": "{number, plural, other {# 分鐘}}前", + "relative_time.full.seconds": "{number, plural, other {# 秒}}前", "relative_time.hours": "{number} 小時前", "relative_time.just_now": "剛剛", "relative_time.minutes": "{number} 分鐘前", @@ -793,7 +794,7 @@ "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "取得嵌入程式碼", "status.favourite": "最愛", - "status.favourites": "{count, plural, other {# 則最愛}}", + "status.favourites": "{count, plural, other {則最愛}}", "status.filter": "過濾此嘟文", "status.history.created": "{name} 於 {date} 建立", "status.history.edited": "{name} 於 {date} 修改", @@ -812,7 +813,7 @@ "status.reblog": "轉嘟", "status.reblog_private": "依照原嘟可見性轉嘟", "status.reblogged_by": "{name} 已轉嘟", - "status.reblogs": "{count, plural, other {# 則轉嘟}}", + "status.reblogs": "{count, plural, other {則轉嘟}}", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.redraft": "刪除並重新編輯", "status.remove_bookmark": "移除書籤", @@ -837,11 +838,11 @@ "subscribed_languages.target": "變更 {target} 的訂閱語言", "tabs_bar.home": "首頁", "tabs_bar.notifications": "通知", - "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}", - "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}", - "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}", + "time_remaining.days": "剩餘 {number, plural, other {# 天}}", + "time_remaining.hours": "剩餘{number, plural, other {# 小時}}", + "time_remaining.minutes": "剩餘{number, plural, other {# 分鐘}}", "time_remaining.moments": "剩餘時間", - "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}", + "time_remaining.seconds": "剩餘{number, plural, other {# 秒}}", "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}於過去 {days, plural, one {日} other {{days} 日}} 之間", "trends.trending_now": "現正熱門趨勢", "ui.beforeunload": "如果離開 Mastodon,您的草稿將會不見。", diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml index 3d1e8012bf..81e54ed3a9 100644 --- a/config/locales/activerecord.fa.yml +++ b/config/locales/activerecord.fa.yml @@ -15,6 +15,12 @@ fa: user/invite_request: text: دلیل errors: + attributes: + domain: + invalid: نام دامنهٔ معتبری نیست + messages: + invalid_domain_on_line: "%{value} نام دامنهٔ معتبری نیست" + too_many_lines: بیش از کران %{limit} خط است models: account: attributes: diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index 88514ab5e2..754fa01550 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -53,12 +53,14 @@ eo: subtitle: Dupaŝa aŭtentigo por via konto estas malŝaltita. title: 2FA estas malŝaltita two_factor_enabled: + explanation: Tokeno generita de la parigita TOTP-aplikaĵo estos necesa por ensaluti. subject: 'Mastodon: Dufaktora aŭtentigo ebligita' subtitle: Dupaŝa aŭtentigo por via konto estas ŝaltita. title: 2FA aktivigita two_factor_recovery_codes_changed: explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj. subject: 'Mastodon: Reakiraj kodoj de dufaktora aŭtentigo rekreitaj' + subtitle: La antaŭaj restarigaj kodoj estis malvalidigitaj kaj novaj estis generitaj. title: Reakiraj kodoj de 2FA estas ŝanĝitaj unlock_instructions: subject: 'Mastodon: Instrukcioj por malŝlosi' diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 12e120f8be..36a5ed1974 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -60,6 +60,7 @@ eo: error: title: Eraro okazis new: + prompt_html: "%{client_name} ŝatus permeson aliri vian konton. Nur aprobu ĉi tiun peton se vi rekonas kaj fidas ĉi tiun fonton." review_permissions: Revizu permesojn title: Rajtigo bezonata show: @@ -82,6 +83,7 @@ eo: access_denied: La posedanto de la rimedo aŭ de la rajtiga servilo rifuzis vian peton. credential_flow_not_configured: La sendado de la identigiloj de la posedanto de la rimedo malsukcesis ĉar Doorkeeper.configure.resource_owner_from_credentials ne estis agordita. invalid_client: Klienta aŭtentigo malsukcesa pro nekonata kliento, neniu klienta aŭtentigo inkluzivita, aŭ nesubtenata aŭtentiga metodo. + invalid_code_challenge_method: La koda defia metodo devas esti S256, ebenaĵo estas nesubtenata. invalid_grant: La rajtiga konsento ne estas valida, ne plu estas valida, estis forigita, ne kongruas kun la plusenda URI uzita en la aŭtentiga peto, aŭ estis sendita al alia kliento. invalid_redirect_uri: La plusenda URI uzita ne estas valida. invalid_request: @@ -134,6 +136,7 @@ eo: media: Plurmediaj aldonaĵoj mutes: Silentigitaj notifications: Sciigoj + profile: Via Mastodon-profilo push: Puŝsciigoj reports: Raportoj search: Serĉi @@ -164,6 +167,7 @@ eo: admin:write:reports: plenumi agojn de kontrolo sur signaloj crypto: uzi fin-al-finan ĉifradon follow: ŝanĝi rilatojn al aliaj kontoj + profile: legu nur la profilinformojn de via konto push: ricevi viajn puŝ-sciigojn read: legi ĉiujn datumojn de via konto read:accounts: vidi la informojn de la kontoj diff --git a/config/locales/doorkeeper.lv.yml b/config/locales/doorkeeper.lv.yml index 55e288a9d6..af892d79fa 100644 --- a/config/locales/doorkeeper.lv.yml +++ b/config/locales/doorkeeper.lv.yml @@ -60,6 +60,7 @@ lv: error: title: Radās kļūda new: + prompt_html: "%{client_name} vēlas atļauju piekļūt Tavam kontam. Apstiprini šo pieprasījumu tikai tad, ja atpazīsti un uzticies šim avotam!" review_permissions: Pārskatīt atļaujas title: Nepieciešama autorizācija show: @@ -119,9 +120,9 @@ lv: write: Tikai rakstīšanas piekļuve title: accounts: Konti - admin/accounts: Kontu administrēšana + admin/accounts: Kontu pārvaldīšana admin/all: Visas administrēšanas funkcijas - admin/reports: Ziņojumu administrēšana + admin/reports: Ziņojumu pārvaldīšana all: Pilna piekļuve tavam Mastodon kontam blocks: Bloķētie bookmarks: Grāmatzīmes @@ -157,13 +158,13 @@ lv: admin:read:ip_blocks: lasīt sensitīvu informāciju par visiem IP blokiem admin:read:reports: lasīt sensitīvu informāciju no visiem pārskatiem un kontiem, par kuriem ziņots admin:write: modificēt visus datus uz servera - admin:write:accounts: veikt moderācijas darbības kontos - admin:write:canonical_email_blocks: veikt regulēšanas darbības kanoniskajos e-pasta blokos - admin:write:domain_allows: veikt moderēšanas darbības domēna atļaujā - admin:write:domain_blocks: veikt moderēšanas darbības domēna blokos - admin:write:email_domain_blocks: veikt moderēšanas darbības e-pasta domēna blokos - admin:write:ip_blocks: veikt moderēšanas darbības IP blokos - admin:write:reports: veikt moderācijas darbības pārskatos + admin:write:accounts: veikt satura pārraudzības darbības kontos + admin:write:canonical_email_blocks: veikt satura pārraudzības darbības kanoniskajos e-pasta blokos + admin:write:domain_allows: veikt satura pārraudzības darbības domēna atļaujā + admin:write:domain_blocks: veikt satura pārraudzības darbības domēna blokos + admin:write:email_domain_blocks: veikt satura pārraudzības darbības e-pasta domēna blokos + admin:write:ip_blocks: veikt satura pārraudzības darbības IP blokos + admin:write:reports: veikt satura pārraudzības darbības pārskatos crypto: lieto pilnīgu šifrēšanu follow: mainīt konta attiecības profile: lasīt tikai Tava konta profila informāciju diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index e7ed0ba8a3..2dfc72cd6c 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -60,6 +60,7 @@ th: error: title: เกิดข้อผิดพลาด new: + prompt_html: "%{client_name} ร้องขอสิทธิ์ในการเข้าถึงข้อมูลในบัญชีของคุณ อนุมัติคำขอนี้ได้ก็ต่อเมื่อคุณมั่นใจและเชื่อถือในแหล่งที่มาของข้อมูลนี้" review_permissions: ตรวจทานสิทธิอนุญาต title: ต้องการการอนุญาต show: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index a27ba1a548..79bfdfbdbf 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1166,11 +1166,11 @@ es-AR: use_security_key: Usar la llave de seguridad author_attribution: example_title: Texto de ejemplo - hint_html: "¿Escribes noticias o artículos de blog fuera de Mastodon? Controla cómo se te acredita cuando se comparten en Mastodon." - instructions: 'Asegúrate de que este código está en el HTML de tu artículo:' + hint_html: "¿Escribís artículos de noticias o de blog fuera de Mastodon? Controlá cómo se te acredita cuando se comparten en Mastodon." + instructions: 'Asegurate de que este código está en el HTML de tu artículo:' more_from_html: Más de %{name} s_blog: Blog de %{name} - then_instructions: A continuación, añade el nombre de dominio de la publicación en el campo inferior. + then_instructions: Luego, agregá el nombre de dominio de la publicación en el campo de abajo. title: Atribución del autor challenge: confirm: Continuar diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 3083bc13cb..603cfe8de1 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -190,9 +190,11 @@ fa: create_user_role: ایجاد نقش demote_user: تنزل کاربر destroy_announcement: حذف اعلامیه + destroy_canonical_email_block: حذف انسداد رایانامه destroy_custom_emoji: حذف اموجی سفارشی destroy_domain_allow: حذف اجازهٔ دامنه destroy_domain_block: حذف انسداد دامنه + destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه destroy_instance: پاکسازی دامنه destroy_ip_block: حذف قاعدهٔ آی‌پی destroy_status: حذف وضعیت @@ -200,8 +202,10 @@ fa: destroy_user_role: نابودی نقش disable_2fa_user: از کار انداختن ورود دومرحله‌ای disable_custom_emoji: از کار انداختن اموجی سفارشی + disable_sign_in_token_auth_user: از کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر disable_user: از کار انداختن کاربر enable_custom_emoji: به کار انداختن اموجی سفارشی + enable_sign_in_token_auth_user: به کار انداختن تأیید هویت ژتون رایانامه‌ای برای کاربر enable_user: به کار انداختن کاربر memorialize_account: یادسپاری حساب promote_user: ترفیع کاربر @@ -231,20 +235,26 @@ fa: approve_appeal_html: "%{name} درخواست تجدیدنظر تصمیم مدیر را از %{target} پذیرفت" approve_user_html: "%{name} ثبت نام %{target} را تایید کرد" assigned_to_self_report_html: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت" + change_email_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را عوض کرد" change_role_user_html: "%{name} نقش %{target} را تغییر داد" + confirm_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را تأیید کرد" create_account_warning_html: "%{name} هشداری برای %{target} فرستاد" create_announcement_html: "%{name} اعلامیه‌ای جدید ایجاد کرد %{target}" + create_canonical_email_block_html: "%{name} رایانامه با درهم‌ریزی %{target} را مسدود کرد" create_custom_emoji_html: "%{name} اموجی تازهٔ %{target} را بارگذاشت" create_domain_allow_html: "%{name} دامنهٔ %{target} را مجاز کرد" create_domain_block_html: "%{name} دامنهٔ %{target} را مسدود کرد" + create_email_domain_block_html: "%{name} دامنهٔ رایانامهٔ %{target} را مسدود کرد" create_ip_block_html: "%{name} برای آی‌پی %{target} قانونی ایجاد کرد" create_unavailable_domain_html: "%{name} تحویل محتوا به دامنه %{target} را متوقف کرد" create_user_role_html: "%{name} نقش %{target} را ایجاد کرد" demote_user_html: "%{name} کاربر %{target} را تنزل داد" destroy_announcement_html: "%{name} اعلامیهٔ %{target} را حذف کرد" + destroy_canonical_email_block_html: "%{name} رایانامه با درهم‌ریزی %{target} را نامسدود کرد" destroy_custom_emoji_html: "%{name} شکلک %{target} را حذف کرد" destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت" destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد" + destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت" destroy_instance_html: "%{name} دامنه %{target} را پاکسازی کرد" destroy_ip_block_html: "%{name} قاعدهٔ آی‌پی %{target} را حذف کرد" destroy_status_html: "%{name} وضعیت %{target} را برداشت" @@ -252,8 +262,10 @@ fa: destroy_user_role_html: "%{name} نقش %{target} را حذف کرد" disable_2fa_user_html: "%{name} ضرورت ورود دو مرحله‌ای را برای کاربر %{target} غیر فعال کرد" disable_custom_emoji_html: "%{name} شکلک %{target} را غیرفعال کرد" + disable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} غیرفعال کرد" disable_user_html: "%{name} ورود را برای کاربر %{target} غیرفعال کرد" enable_custom_emoji_html: "%{name} شکلک %{target} را فعال کرد" + enable_sign_in_token_auth_user_html: "%{name}، احراز هویت با توکن رایانامه را برای %{target} فعال کرد" enable_user_html: "%{name} ورود را برای کاربر %{target} فعال کرد" memorialize_account_html: "%{name} حساب %{target} را تبدیل به صفحهٔ یادمان کرد" promote_user_html: "%{name} کاربر %{target} را ترفیع داد" @@ -478,6 +490,7 @@ fa: instance_followers_measure: پی‌گیرندگانمان در آن‌جا instance_follows_measure: پی‌گیرندگانشان در این‌جا instance_languages_dimension: زبان‌های برتر + instance_media_attachments_measure: پیوست‌های رسانه‌ای ذخیره شده instance_reports_measure: گزارش‌ها درباره‌شان instance_statuses_measure: فرسته‌های ذخیره شده delivery: @@ -565,6 +578,9 @@ fa: other_description_html: دیدن انتخاب های بیشتر برای کنترل رفتار حساب و سفارشی سازی ارتباط با حساب گزارش شده. resolve_description_html: هیچ کنشی علیه حساب گزارش شده انجام نخواهد شد. هیچ شکایتی ضبط نشده و گزارش بسته خواهد شد. add_to_report: افزودن بیش‌تر به گزارش + already_suspended_badges: + local: از پیش روی این کارساز معلّق شده + remote: از پیش روی کارسازشان معلّق شده are_you_sure: مطمئنید؟ assign_to_self: به عهدهٔ من بگذار assigned: مدیر عهده‌دار @@ -574,6 +590,7 @@ fa: comment: none: هیچ confirm: تأیید + confirm_action: تأیید کنش مدیریتی برای ‪@%{acct}‬ created_at: گزارش‌شده delete_and_resolve: حذف فرسته‌ها forwarded: هدایت شده @@ -594,6 +611,7 @@ fa: report: 'گزارش #%{id}' reported_account: حساب گزارش‌شده reported_by: گزارش از طرف + reported_with_application: گزارش شده با برنامه resolved: حل‌شده resolved_msg: گزارش با موفقیت حل شد! skip_to_actions: پرش به کنش‌ها @@ -665,6 +683,8 @@ fa: title: ظاهر branding: title: ویژندگی + content_retention: + danger_zone: منطقهٔ خطر default_noindex: title: درخواست خروج از اندیس‌گذاری پیش‌گزیدهٔ موتور جست‌وجو discovery: @@ -752,6 +772,9 @@ fa: message_html: هیچ قانون کارسازی تعریف نکرده‌اید. sidekiq_process_check: message_html: صف(های) %{value} فاقد هیچونه فرایند Sidekiq هستند. لطفا تنظیمات Sidekiq خود را بازبینی کنید + software_version_check: + action: دیدن به‌روز رسانی‌های موجود + message_html: به‌روز رسانی ماستودون موجود است. software_version_critical_check: action: مشاهده به‌روزرسانی‌های موجود message_html: یک به‌روزرسانی حیاتی ماستودون موجود است، لطفا در اسرع وقت به‌روزرسانی کنید. @@ -775,16 +798,27 @@ fa: trendable: قابل داغ شدن unreviewed: بررسی نشده usable: قابل استفاده + name: نام + newest: جدیدترین + oldest: قدیمی‌ترین + open: دیدن عمومی + reset: بازنشانی review: وضعیت بازبینی + search: جست‌وجو + title: برچسب‌ها updated_msg: تنظیمات برچسب‌ها با موفقیت به‌روز شد title: مدیریت trends: allow: اجازه approved: تأیید شده + confirm_allow: مطمئنید که می‌خواهید برچسب‌های گزیده را مجاز کنید؟ + confirm_disallow: مطمئنید که می‌خواهید برچسب‌های گزیده را ممنوع کنید؟ disallow: اجازه ندادن links: allow: اجازه به پیوند allow_provider: اجازه به ناشر + confirm_allow: مطمئنید که می‌خواهید پیوندهای گزیده را مجاز کنید؟ + confirm_allow_provider: مطمئنید که می‌خواهید فراهم‌کننده‌های گزیده را مجاز کنید؟ confirm_disallow: مطمئنید که می خواهید پیوندهای گزیده را ممنوع کنید؟ confirm_disallow_provider: مطمئنید که می خواهید فراهم کننده‌های گزیده را ممنوع کنید؟ disallow: اجازه ندادن به پیوند @@ -792,18 +826,32 @@ fa: no_link_selected: هیچ پیوندی تغییر نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند publishers: no_publisher_selected: هیچ ناشری تغییر نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند + shared_by_over_week: + one: هم‌رسانده به دست یک نفر در هفتهٔ گذشته + other: هم‌رسانده به دست %{count} نفر در هفتهٔ گذشته title: پیوندهای داغ + usage_comparison: امروز %{today} بار هم‌رسانی شده. در مقایسه با %{yesterday} بار دیروز not_allowed_to_trend: اجازهٔ داغ شدن ندارد + only_allowed: فقط مجازها pending_review: بازبینی منتظر preview_card_providers: + allowed: پیوندها از این ناشر می‌توانند داغ شوند + rejected: پیوندها از این ناشر داغ نخواهند شد title: ناشران rejected: رد شده statuses: allow: اجازه به فرسته allow_account: اجازه به نگارنده + confirm_allow: مطمئنید که می‌خواهید وضعیت‌های گزیده را مجاز کنید؟ + confirm_allow_account: مطمئنید که می‌خواهید حساب‌های گزیده را مجاز کنید؟ + confirm_disallow: مطمئنید که می‌خواهید وضعیت‌های گزیده را ممنوع کنید؟ + confirm_disallow_account: مطمئنید که می‌خواهید حساب‌های گزیده را ممنوع کنید؟ disallow: ممنوع کردن فرسته disallow_account: ممنوع کردن نگارنده no_status_selected: هیچ فرستهٔ داغی تغییری نکرد زیرا هیچ‌کدام از آن‌ها انتخاب نشده بودند + shared_by: + one: یک بار برگزیده یا هم‌رسانی شده + other: "%{friendly_count} بار برگزیده یا هم‌رسانی شده" title: فرسته‌های داغ tags: current_score: امتیاز کنونی %{score} @@ -812,8 +860,9 @@ fa: tag_languages_dimension: زبان‌های برتر tag_servers_dimension: کارسازهای برتر tag_servers_measure: کارسازهای گوناگون - tag_uses_measure: کل استفاده‌ّا + tag_uses_measure: کل استفاده‌ها listable: می‌تواند پیشنهاد شود + no_tag_selected: هیچ برچسبی تغییر نکرد زیرا هیچ‌کدام گزیده نبودند not_listable: پیشنهاد نخواهد شد not_usable: غیر قابل استفاده title: برچسب‌های پرطرفدار @@ -908,7 +957,9 @@ fa: title: بررسی های امنیتی confirmations: awaiting_review_title: ثبت‌نامتان دارد بررسی می‌شود + clicking_this_link: زدن این پیوند login_link: ورود + proceed_to_login_html: می‌توانید به %{login_link} ادامه دهید. welcome_title: خوش آمدید، %{name}! delete_account: پاک‌کردن حساب delete_account_html: اگر می‌خواهید حساب خود را پاک کنید، از این‌جا پیش بروید. از شما درخواست تأیید خواهد شد. @@ -930,6 +981,7 @@ fa: or_log_in_with: یا ورود به وسیلهٔ privacy_policy_agreement_html: سیاست محرمانگی را خوانده و پذیرفته‌ام progress: + confirm: تأیید رایانامه details: جزئیات شما review: بررسی ما rules: پذیرش قوانین @@ -943,6 +995,7 @@ fa: rules: accept: پذیرفتن back: بازگشت + invited_by: 'با سپاس از دعوتی از این فرد دریافت کرده‌اید می‌توانید به %{domain} بپیوندید:' title_invited: شما دعوت شده اید. security: امنیت set_new_password: تعین گذرواژه جدید @@ -952,17 +1005,23 @@ fa: title: صندوق ورودیتان را بررسی کنید sign_in: title: ورود به %{domain} + sign_up: + title: بیایید روی %{domain} برپایتان کنیم. status: account_status: وضعیت حساب + confirming: منتظر کامل شدن تأیید رایانامه. functional: حسابتان کاملاً قابل استفاده است. + pending: درخواستتان منتظر بازبینی مسئولان است. ممکن است کمی طول بکشد. اگر درخواستتان پذیرفته شود رایانامه‌ای خواهید گرفت. redirecting_to: حساب شما غیرفعال است زیرا هم‌اکنون به %{acct} منتقل شده است. view_strikes: دیدن شکایت‌های گذشته از حسابتان too_fast: فرم با سرعت بسیار زیادی فرستاده شد، دوباره تلاش کنید. use_security_key: استفاده از کلید امنیتی author_attribution: example_title: متن نمونه + instructions: 'مطمئن شوید این کد در HTML مقاله‌تان وجود دارد:' more_from_html: بیش‌تر از %{name} s_blog: بلاگ %{name} + then_instructions: سپس نام دامنهٔ مقاله را در زمینهٔ زیر بیفزایید. title: اعتباردهی به نگارنده challenge: confirm: ادامه @@ -1000,6 +1059,9 @@ fa: before: 'پیش از ادامه،‌ لطفاً نکته‌های زیر را به دقت بخوانید:' caches: ممکن است محتواهایی که دیگر کارسازها ذخیره کرده‌اند، همچنان باقی بماند data_removal: نوشته‌ها و داده‌های شما برای همیشه پاک خواهند شد + email_change_html: می‌توانید بدون حذف حسابتان نشانی رایانامه‌تان را تغییر دهید + email_contact_html: اگر هنوز نرسیده، می‌توانید برای راهنمایی به %{email} رایانامه دهید + email_reconfirmation_html: اگر رایانامهٔ تأیید را نگرفته‌اید، می‌توانید دوباره درخواستش دهید irreversible: شما نخواهید توانست حساب خود را بازیابی یا فعال‌سازی کنید more_details_html: برای اطلاعات بیشتر سیاست رازداری را ببینید. username_available: نام کاربری شما دوباره در دسترس خواهد بود @@ -1092,8 +1154,10 @@ fa: deprecated_api_multiple_keywords: این پارامترها نمی‌توانند از این برنامه تغییر یابند؛ چرا که به بیش از یک کلیدواژهٔ پالایه اعمال می‌شود. از برنامه‌ای جدیدتر یا میانای وب استفاده کنید. invalid_context: زمینه‌ای موجود نیست یا نامعتبر است index: + contexts: پالایه‌ها در %{contexts} delete: پاک‌کردن empty: هیچ پالایه‌ای ندارید. + expires_in: در %{distance} منقضی می شود expires_on: در %{date} منقضی می شود keywords: one: "%{count} کلیدواژه" @@ -1116,6 +1180,9 @@ fa: title: فرسته‌های پالوده generic: all: همه + all_items_on_page_selected_html: + one: "%{count} مورد در این صفحه گزیده شده." + other: همهٔ %{count} مورد این صفحه گزیده شده‌اند. all_matching_items_selected_html: one: "%{count} مورد مطابق با جست‌وجویتان گزیده شده." other: "%{count} مورد مطابق با جست‌وجویتان گزیده شدند." @@ -1137,6 +1204,9 @@ fa: other: یک چیزی هنوز درست نیست! لطفاً %{count} خطای زیر را ببینید imports: errors: + empty: پروندهٔ خالی CSV + incompatible_type: ناسازگار با گونهٔ درون‌ریزی گزیده + invalid_csv_file: 'پروندهٔ CSV نامعتبر. خطا: %{error}' over_rows_processing_limit: دارای بیش از %{count} ردیف too_large: حجم فایل خیلی بزرگ است failures: شکست‌ها @@ -1214,7 +1284,15 @@ fa: title: تاریخچهٔ تأیید هویت mail_subscriptions: unsubscribe: + action: بله. لغو اشتراک complete: لغو اشتراک شد + emails: + notification_emails: + favourite: رایانامه‌های آگاهی برگزیدن + follow: رایانامه‌های آگاهی پی‌گیری + follow_request: رایانامه‌های درخواست پی‌گیری + mention: رایانامه‌های آگاهی اشاره + reblog: رایانامه‌های آگاهی تقویت title: لغو اشتراک media_attachments: validations: @@ -1295,6 +1373,7 @@ fa: update: subject: "%{name} فرسته‌ای را ویرایست" notifications: + administration_emails: آگاهی‌های رایانامه‌ای مدیر email_events: رویدادها برای آگاهی‌های رایانامه‌ای email_events_hint: 'گزینش رویدادهایی که می‌خواهید برایشان آگاهی دریافت کنید:' number: @@ -1352,12 +1431,16 @@ fa: errors: limit_reached: تجاوز از کران واکنش‌های مختلف unrecognized_emoji: شکلک شناخته‌شده‌ای نیست + redirects: + prompt: اگر به این پویند اطمینان دارید برای ادامه بزنید. + title: دارید %{instance} را ترک می‌کنید. relationships: activity: فعالیت حساب confirm_follow_selected_followers: آیا مطمئنید که می خواهید دنبال کننده های انتخابی را دنبال کنید؟ confirm_remove_selected_followers: آیا شما واقعا می خواهید دنبال کننده های انتخابی را حذف کنید؟ confirm_remove_selected_follows: آیا شما واقعا می خواهید دنبال شده های انتخابی را حذف کنید؟ dormant: غیرفعال + follow_failure: نتوانست برخی از حساب‌های گزیده را پی بگیرد. follow_selected_followers: پیگیری پیگیران انتخاب شده followers: پی‌گیران following: پی می‌گیرد @@ -1462,7 +1545,7 @@ fa: domain_block: تعلیق کارساز (%{target_name}) user_domain_block: "%{target_name} را مسدود کردید" lost_followers: پی‌گیرندگان از دست رفته - lost_follows: پی‌گرفته‌ّای از دست رفته + lost_follows: پی‌گرفته‌های از دست رفته preamble: وقتی دامنه‌ای را مسدود کرده یا ناظرانتان تصمیم به تعلیق کارسازی دوردست می‌گیرند، ممکن است پی‌گیران و پی‌گرفته‌هایتان را از دست بدهید. با این حال قادرید سیاهه‌هایی از ارتباط‌های قطع شده را برای بررسی و درون‌ریزی احتمالی روی کارسازی دیگر بار بگیرید. purged: اطّلاعات دربارهٔ این کارساز به دست مدیران کارسازتان پاک سازی شده. type: رویداد @@ -1571,16 +1654,23 @@ fa: webauthn: کلیدهای امنیتی user_mailer: appeal_approved: + action: تنظیمات حساب explanation: درخواست تجدیدنظر اخطار علیه حساب شما در %{strike_date} که در %{appeal_date} ارسال کرده‌اید، پذیرفته شده است. حساب شما بار دیگر در وضعیت خوبی قرار دارد. subject: درخواست تجدیدنظر شما در %{date} پذیرفته شد + subtitle: حسابتان دوباره در وضعیت مناسب است. title: درخواست تجدیدنظر پذیرفته شد appeal_rejected: explanation: درخواست تجدیدنظر اخطار علیه حساب شما در %{strike_date} که در %{appeal_date} ارسال کرده‌اید، رد شده است. subject: درخواست تجدیدنظر شما در %{date} رد شده است + subtitle: درخواست تجدیدنظرتان رد شد. title: درخواست تجدیدنظر رد شد backup_ready: + explanation: درخواست پشتیبانی کامل از حساب ماستودونتان کردید. + extra: اکنون آمادهٔ بارگیری است! subject: بایگانی شما آمادهٔ دریافت است title: گرفتن بایگانی + failed_2fa: + details: 'جزییات تلاش‌ها برای ورد:' suspicious_sign_in: change_password: تغییر گذرواژه‌تان details: 'جزییات ورود:' @@ -1592,8 +1682,11 @@ fa: spam: هرزنامه reason: 'دلیل:' subject: + delete_statuses: فرسته‌هایتان روی %{acct} برداشته شده‌اند disable: حساب %{acct} شما متوقف شده است + mark_statuses_as_sensitive: فرسته‌هایتان روی %{acct} به عنوان حسّاس علامت خورده‌اند none: هشدار برای %{acct} + sensitive: فرسته‌هایتان روی %{acct} از اکنون به عنوان حسّاس علامت خواهند خورد silence: حساب %{acct} شما محدود شده است suspend: حساب %{acct} شما معلق شده است title: @@ -1609,11 +1702,39 @@ fa: apps_ios_action: بارگیری روی فروشگاه کاره apps_step: بارگیری کارهٔ رسمیمان. apps_title: کاره‌های ماستودون + checklist_subtitle: 'بیایید روی این مرز اجتماعی جدید راهتان بیندازیم:' + checklist_title: سیاههٔ بررسی خوش‌آمد edit_profile_action: شخصی سازی + edit_profile_step: تقویت تعامل‌هایتان با داشتن نمایه‌ای جامع. + edit_profile_title: شخصی سازی نمایه‌تان explanation: نکته‌هایی که برای آغاز کار به شما کمک می‌کنند + feature_action: دانشتن بیش‌تر + feature_audience: ماستودون بدون حضور فرد میانی، فرصتی منحصربه‌فرد برای مدیریت مخاطبان ارائه می‌کند. ماستودونی که روی زیرساخت خودتان استقرار یافته باشد، می‌گذارد بدون بودن زیر واپایش کسی غیر از خودتان، دیگر کارسازهای برخط ماستودون را دنبال کرده و به دست آن‌ها دنبال شوید. + feature_audience_title: مخاطبان‌تان را با اطمینان بسازید + feature_control: شما بهتر از هر کسی دیگری می‌دونید که چه می‌خواهید ببینید. هیچ الگوریتم یا تبلیغی وقت شما را تلف نمی‌کند. تنها با یک حساب، هر کسی را روی هر کارساز ماستودون دیگری دنبال کرده و فرسته‌هایشان را به ترتیب زمانی دریافت کنید. گوشهٔ دنج اینترنتی خودتان را بیشتر شبیه خودتان کنید. + feature_control_title: کنترل خط زمانی‌تان را به دست بگیرید + feature_creativity: ماستودون از فرسته‌های تصویری، ویدئویی و شنیداری، توضیحات دسترس‌پذیری، نظرسنجی، هشدار محتوا، تصاویر نمایهٔ پویا، شکلک‌های سفارشی، کنترل برش تصاویر بندانگشتی و بسیاری موارد دیگر پشتیبانی می‌کند تا به شما برای ابزار کردن خود در فضای برخط کمک کند. چه بخواهید یک اثر هنری، موسیقی یا پادکست منتشر کنید، ماستودون در خدمت شماست. + feature_creativity_title: خلاقیت بی‌همتا + feature_moderation: ماستودن، تصمیم‌گیری را به شما باز می‌گرداند. هر کارساز قوانین و شرایط استفاده خاص خودش را وضع می‌کند که فقط به صورت محلی اعمال می‌شود و نه به صورت از بالا به پایین در سکوهای اجتماعی شرکتی. این موضوع باعث افزایش انعطاف در پاسخ‌گویی به نیازهای گروه‌های مختلف می‌شود. به کارسازی با قوانین مورد پسندتان بپیوندید، و یا نمونه خود را میزبانی کنید. + feature_moderation_title: نظارت به شکلی که باید باشد follow_action: پی‌گیری + follow_step: You curate your own feed. Lets fill it with interesting people. + follow_title: شخصی سازی خوراک خانگیتان + follows_subtitle: پی گرفتن حساب‌های شناخته شده + follows_title: افرادی برای پی‌گیری + follows_view_more: دیدن افرادی بیش‌تر برای پی‌گیری + hashtags_recent_count: + one: "%{people} نفر در ۲ روز اخیر" + other: "%{people} نفر در ۲ روز اخیر" + hashtags_subtitle: کشف گرایه‌ها در ۲ روز گذشته + hashtags_title: برچسب‌های داغ + hashtags_view_more: دیدن برچسب‌های داغ بیش‌تر post_action: ایجاد + post_step: سلام کردن به جهان با متن، عکس، ویدیو یا نظرسنجی. + post_title: ساخت نخستین نظرسنجیتان share_action: هم‌رسانی + share_step: بگذارید دوستانتان بدانند چگونه روی ماستودون بیابندتان. + share_title: هم‌رسانی نمایهٔ ماستودونتان sign_in_action: ورود subject: به ماستودون خوش آمدید title: خوش آمدید، کاربر %{name}! @@ -1622,6 +1743,8 @@ fa: go_to_sso_account_settings: به تنظیمات حساب فراهمگر هوبتتان بروید invalid_otp_token: کد ورود دومرحله‌ای نامعتبر است otp_lost_help_html: اگر شما دسترسی به هیچ‌کدامشان ندارید، باید با ایمیل %{email} تماس بگیرید + rate_limited: تلاش ّای هویت‌سنجی بیش از حد. لطفاً بعداً دوباره تلاش کنید. + seamless_external_login: با خدمتی خارجی وارد شده‌اید، برای همین تنظیمات رایانامه و گذرواژه در دسترس نیستند. signed_in_as: 'واردشده به نام:' verification: extra_instructions_html: نکته: پیوند روی پایگاه وبتان می‌تواند نامرئی باشد. بخش مهم rel="me" است که از جعل هویت روی پایگاه‌هایی با محتوای تولید شده به دست کاربر جلوگیری می‌کند. حتا می‌توانید به جای برچسب a از برچسب link در سرایند صفحه استفاده کنید؛ ولی HTML باید بدون اجرای جاوااسکریپت در دسترس باشد. diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 0657f827d1..5e5ecb238e 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1220,8 +1220,11 @@ ga: use_security_key: Úsáid eochair shlándála author_attribution: example_title: Téacs samplach + hint_html: An bhfuil tú ag scríobh altanna nuachta nó blag lasmuigh de Mastodon? Rialú conas a gheobhaidh tú creidmheas nuair a roinntear iad ar Mastodon. + instructions: 'Cinntigh go bhfuil an cód seo i HTML d''alt:' more_from_html: Tuilleadh ó %{name} s_blog: Blag %{name} + then_instructions: Ansin, cuir ainm fearainn an fhoilseacháin sa réimse thíos. title: Leithdháil an údair challenge: confirm: Lean ar aghaidh diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 4f18e3b4d4..47bd24fccf 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1166,8 +1166,11 @@ hu: use_security_key: Biztonsági kulcs használata author_attribution: example_title: Mintaszöveg + hint_html: Mastodonon kívül írsz híreket vagy blogbejegyzéseket? Szabályozd, hogyan tüntethetnek fel szerzőként, amikor Mastodonon osztják meg őket. + instructions: 'Győződj meg róla, hogy ez a kód a cikked HTML-jében van:' more_from_html: 'Több tőle: %{name}' s_blog: "%{name} blogja" + then_instructions: Aztán add meg a publikáció domain-nevét az alábbi mezőben. title: Szerző forrásmegjelölése challenge: confirm: Folytatás diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 66791a622d..a70ae680e4 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1148,8 +1148,11 @@ ja: use_security_key: セキュリティキーを使用 author_attribution: example_title: サンプルテキスト + hint_html: Mastodonの外でニュースやブログなどを執筆しているユーザーは、Mastodonで自分の記事が共有されたときに著者情報を表示させることができます。 + instructions: 以下のコードを自分の記事のHTMLに貼り付けます。 more_from_html: "%{name} のその他の情報" s_blog: "%{name} のブログ" + then_instructions: その後、記事の公開に使用しているドメイン名を以下の入力欄に追加してください。 title: 著者の帰属 challenge: confirm: 続ける diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 43944fe0f6..6bff1703e6 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1150,8 +1150,11 @@ ko: use_security_key: 보안 키 사용 author_attribution: example_title: 예시 텍스트 + hint_html: 마스토돈 밖에서 뉴스나 블로그 글을 쓰시나요? 마스토돈에 공유되었을 때 어떻게 표시될지를 제어하세요. + instructions: '이 코드가 글의 HTML 안에 포함되는지 확인하세요:' more_from_html: "%{name}의 게시물 더 보기" s_blog: "%{name}의 블로그" + then_instructions: 그리고 발행처의 도메인 네임을 아래 입력란에 추가하세요. title: 작성자 기여 challenge: confirm: 계속 diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 908b15e851..9e95155110 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -29,11 +29,11 @@ lv: action: Veikt darbību already_silenced: Šis konts jau ir ierobežots. already_suspended: Šis konts jau ir aizturēts. - title: Veikt moderācijas darbību %{acct} + title: Veikt satura pārraudzības darbību %{acct} account_moderation_notes: create: Atstāt piezīmi - created_msg: Moderācijas piezīme ir veiksmīgi izveidota! - destroyed_msg: Moderācijas piezīme ir veiksmīgi iznīcināta! + created_msg: Satura pārraudzības piezīme ir veiksmīgi izveidota. + destroyed_msg: Satura pārraudzības piezīme ir veiksmīgi iznīcināta. accounts: add_email_domain_block: Liegt e-pasta domēnu approve: Apstiprināt @@ -96,12 +96,12 @@ lv: moderation: active: Aktīvie all: Visi - disabled: Atspējots + disabled: Atspējota pending: Gaida - silenced: Ierobežotie - suspended: Apturētie - title: Moderācija - moderation_notes: Moderācijas piezīmes + silenced: Ierobežoti + suspended: Apturēti + title: Satura pārraudzība + moderation_notes: Satura pārraudzības piezīmes most_recent_activity: Pati pēdējā darbība most_recent_ip: Pati pēdējā IP no_account_selected: Neviens konts netika mainīts, jo neviens netika atlasīts @@ -236,7 +236,7 @@ lv: update_status: Atjaunināt ziņu update_user_role: Atjaunināt lomu actions: - approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}" + approve_appeal_html: "%{name} apstiprināja satura pārraudzības lēmuma iebildumu no %{target}" approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}" assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev" change_email_user_html: "%{name} nomainīja lietotāja %{target} e-pasta adresi" @@ -267,7 +267,7 @@ lv: enable_user_html: "%{name} iespējoja pieteikšanos lietotājam %{target}" memorialize_account_html: "%{name} pārvērta %{target} kontu par atmiņas lapu" promote_user_html: "%{name} paaugstināja lietotāju %{target}" - reject_appeal_html: "%{name} noraidīja moderācijas lēmuma apelāciju no %{target}" + reject_appeal_html: "%{name} noraidīja satura pārraudzības lēmuma iebildumu no %{target}" reject_user_html: "%{name} noraidīja reģistrēšanos no %{target}" remove_avatar_user_html: "%{name} noņēma %{target} profila attēlu" reopen_report_html: "%{name} atkārtoti atvēra ziņojumu %{target}" @@ -362,9 +362,9 @@ lv: other: "%{count}ziņojumi gaida" zero: "%{count}ziņojumi gaida" pending_tags_html: - one: "%{count}tēmturis gaida" - other: "%{count}tēmturi gaida" - zero: "%{count}tēmturi gaida" + one: "%{count} tēmturis rindā" + other: "%{count} tēmturi rindā" + zero: "%{count} tēmturu rindā" pending_users_html: one: "%{count}lietotājs gaida" other: "%{count}lietotāji gaida" @@ -409,7 +409,7 @@ lv: import: Importēt new: create: Izveodot bloku - hint: Domēna bloķēšana netraucēs izveidot kontu ierakstus datu bāzē, bet ar atpakaļejošu datumu un automātiski tiks piemērotas noteiktas moderēšanas metodes šajos kontos. + hint: Domēna aizturēšana netraucēs izveidot kontu ierakstus datubāzē, bet šajos kontos ar atpakaļejošu datumu un automātiski tiks piemērotas noteikti satura pārraudzības veidi. severity: desc_html: "Ierobežojums padarīs ziņas no šī domēna kontiem neredzamas ikvienam, kas tiem neseko. Apturēšana no tava servera noņems visu šī domēna kontu saturu, multividi un profila datus. Izmanto Nav, ja vēlies vienkārši noraidīt multivides failus." noop: Neviens @@ -532,7 +532,7 @@ lv: moderation: all: Visas limited: Ierobežotās - title: Moderācija + title: Satura pārraudzība private_comment: Privāts komentārs public_comment: Publisks komentārs purge: Iztīrīt @@ -619,7 +619,7 @@ lv: none: Neviens comment_description_html: 'Lai sniegtu vairāk informācijas, %{name} rakstīja:' confirm: Apstiprināt - confirm_action: Apstipriniet regulēšanas darbību pret @%{acct} + confirm_action: Apstiprināt satura pārraudzības darbību pret @%{acct} created_at: Ziņoti delete_and_resolve: Izdzēst rakstus forwarded: Pārsūtīti @@ -667,7 +667,7 @@ lv: delete_data_html: Dzēsiet lietotāja @%{acct} profilu un saturu pēc 30 dienām, ja vien to darbība pa šo laiku netiks atcelta preview_preamble_html: "@%{acct} saņems brīdinājumu ar šādu saturu:" record_strike_html: Ierakstiet brīdinājumu pret @%{acct}, lai palīdzētu jums izvērst turpmākus pārkāpumus no šī konta - warning_placeholder: Izvēles papildu pamatojums regulēšanas darbībai. + warning_placeholder: Izvēles papildu pamatojums satura pārraudzības darbībai. target_origin: Ziņotā konta izcelsme title: Ziņojumi unassign: Atsaukt @@ -682,10 +682,10 @@ lv: other: "%{count} lietotāji" zero: "%{count} lietotāju" categories: - administration: Administrēšana + administration: Pārvaldība devops: DevOps invites: Uzaicinājumi - moderation: Moderācija + moderation: Satura pārraudzība special: Īpašās delete: Dzēst description_html: Izmantojot lietotāju lomas, vari pielāgot, kurām Mastodon funkcijām un apgabaliem var piekļūt tavi lietotāji. @@ -706,7 +706,7 @@ lv: manage_announcements: Pārvaldīt Paziņojumus manage_announcements_description: Ļauj lietotājiem pārvaldīt paziņojumus serverī manage_appeals: Pārvaldīt Pārsūdzības - manage_appeals_description: Ļauj lietotājiem izskatīt apelācijas pret regulēšanas darbībām + manage_appeals_description: Ļauj lietotājiem pārskatīt iebildumus pret satura pārraudzības darbībām manage_blocks: Pārvaldīt Bloķus manage_custom_emojis: Pārvaldīt Pielāgotās Emocijzīmes manage_custom_emojis_description: Ļauj lietotājiem pārvaldīt pielāgotās emocijzīmes serverī @@ -715,7 +715,7 @@ lv: manage_invites: Pārvaldīt Uzaicinājumus manage_invites_description: Ļauj lietotājiem pārlūkot un deaktivizēt uzaicinājuma saites manage_reports: Pārvaldīt Pārskatus - manage_reports_description: Ļauj lietotājiem pārskatīt pārskatus un veikt pret tiem regulēšanas darbības + manage_reports_description: Ļauj lietotājiem pārskatīt ziņojumus un veikt pret tiem satura pārraudzības darbības manage_roles: Pārvaldīt Lomas manage_roles_description: Ļauj lietotājiem pārvaldīt un piešķirt lomas, kas ir zemākas par viņu lomu manage_rules: Pārvaldīt Noteikumus @@ -723,10 +723,10 @@ lv: manage_settings: Pārvaldīt Iestatījumus manage_settings_description: Ļauj lietotājiem mainīt vietnes iestatījumus manage_taxonomies: Pārvaldīt Taksonomijas - manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālāko saturu un atjaunināt atsauces iestatījumus + manage_taxonomies_description: Ļauj lietotājiem pārskatīt aktuālāko saturu un atjaunināt tēmturu iestatījumus manage_user_access: Pārvaldīt Lietotāju Piekļuves manage_users: Pārvaldīt Lietotājus - manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem regulēšanas darbības + manage_users_description: Ļauj lietotājiem skatīt citu lietotāju informāciju un veikt pret viņiem satura pārraudzības darbības manage_webhooks: Pārvaldīt Tīmekļa Aizķeres manage_webhooks_description: Ļauj lietotājiem iestatīt tīmekļa aizķeres administratīviem pasākumiem view_audit_log: Skatīt Audita Žurnālu @@ -779,6 +779,7 @@ lv: disabled: Nevienam users: Vietējiem reģistrētiem lietotājiem registrations: + moderation_recommandation: Lūgums nodrošināt, ka Tev ir pieņemama un atsaucīga satura pārraudzības komanda, pirms padari reģistrēšanos visiem pieejamu. preamble: Kontrolē, kurš var izveidot kontu tavā serverī. title: Reģistrācijas registrations_mode: @@ -786,6 +787,7 @@ lv: approved: Reģistrācijai nepieciešams apstiprinājums none: Neviens nevar reģistrēties open: Jebkurš var reģistrēties + warning_hint: Mēs iesakām izmantot "Nepieciešams reģistrēšanās apstiprinājums", izņemot, ja esi pārliecināts, ka Tava satura pārraudzības komanda var laicīgi apstrādāt mēstules un ļaunprātīgas reģistrācijas. security: authorized_fetch: Pieprasīt autentifikāciju no federētajiem serveriem authorized_fetch_hint: Pieprasot autentifikāciju no federētajiem serveriem, tiek nodrošināta stingrāka gan lietotāja līmeņa, gan servera līmeņa bloku izpilde. Tomēr tas ir saistīts ar izpildes sodu, samazina tavu atbilžu sasniedzamību un var radīt saderības problēmas ar dažiem federētajiem pakalpojumiem. Turklāt tas netraucēs īpašiem dalībniekiem ienest tavas publiskās ziņas un kontus. @@ -889,6 +891,8 @@ lv: review_requested: Pieprasīta pārskatīšana reviewed: Pārskatīts title: Stāvoklis + unreviewed: Nepārskatīts + usable: Izmantojams name: Nosaukums newest: Jaunākie oldest: Vecākie @@ -897,7 +901,7 @@ lv: search: Meklēt title: Tēmturi updated_msg: Tēmtura iestatījumi ir veiksmīgi atjaunināti - title: Administrēšana + title: Pārvaldība trends: allow: Atļaut approved: Apstiprināts @@ -1001,9 +1005,9 @@ lv: sensitive: lai atzīmētu viņu kontu kā sensitīvu silence: lai ierobežotu viņu kontu suspend: lai apturētu viņu kontu - body: "%{target} pārsūdzēja %{action_taken_by} moderēšanas lēmumu no %{date}, kas bija %{type}. Viņi rakstīja:" - next_steps: Varat apstiprināt apelāciju, lai atsauktu regulēšanas lēmumu, vai ignorēt to. - subject: "%{username} pārsūdz moderēšanas lēmumu par %{instance}" + body: "%{target} iebilst %{action_taken_by} satura pārraudzības lēmumam no %{date}, kas bija %{type}. Viņi rakstīja:" + next_steps: Vari apstiprināt iebildumu, lai atsauktu satura pārraudzības lēmumu, vai neņemt to vērā. + subject: "%{username} iebilst satura pārraudzības lēmumam par %{instance}" new_critical_software_updates: body: Ir izlaistas jaunas Mastodon svarīgās versijas, iespējams, vēlēsies to atjaunināt pēc iespējas ātrāk! subject: "%{instance} ir pieejami svarīgi Mastodon atjauninājumi!" @@ -1456,7 +1460,7 @@ lv: other_data: Nekādi citi dati netiks automātiski pārvietoti redirect: Tava pašreizējā konta profils tiks atjaunināts ar novirzīšanas paziņojumu un tiks izslēgts no meklēšanas moderation: - title: Moderācija + title: Satura pārraudzība move_handler: carry_blocks_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji bloķējis. carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis. @@ -1498,6 +1502,7 @@ lv: update: subject: "%{name} laboja ierakstu" notifications: + administration_emails: Pārvaldītāju e-pasta paziņojumi email_events_hint: 'Atlasi notikumus, par kuriem vēlies saņemt paziņojumus:' number: human: @@ -1546,7 +1551,7 @@ lv: reach: Sasniedzamība reach_hint_html: Kontrolē, vai vēlies, lai tevi atklātu un sekotu jauni cilvēki. Vai vēlies, lai tavas ziņas tiktu parādītas ekrānā Izpēte? Vai vēlies, lai citi cilvēki tevi redzētu savos ieteikumos? Vai vēlies automātiski pieņemt visus jaunos sekotājus vai arī tev ir pilnīga kontrole pār katru? search: Meklēt - search_hint_html: Kontrolē, kā vēlies tikt atrasts. Vai vēlies, lai cilvēki tevi atrod pēc tā, ko esi publiski publicējis? Vai vēlies, lai cilvēki ārpus Mastodon atrastu tavu profilu, meklējot tīmeklī? Lūdzu, ņem vērā, ka nevar garantēt publiskas informācijas pilnīgu izslēgšanu no visām meklētājprogrammām. + search_hint_html: Nosaki, kā vēlies tikt atrasts! Vai vēlies, lai cilvēki Tevi atrod pēc tā, par ko esi veicis visiem redzamus ierakstus? Vai vēlies, lai cilvēki ārpus Mastodon atrastu Tavu profilu, meklējot tīmeklī? Lūdzu, ņem vērā, ka nevar nodrošināt visiem redzamas informācijas pilnīgu izslēgšanu no visām meklētājiem! title: Privātums un sasniedzamība privacy_policy: title: Privātuma Politika @@ -1583,8 +1588,8 @@ lv: rss: content_warning: 'Satura brīdinājums:' descriptions: - account: Publiskas ziņas no @%{acct} - tag: 'Publiskas ziņas ar atzīmi #%{hashtag}' + account: Visiem redzami ieraksti no @%{acct} + tag: 'Visiem redzami ieraksti ar tēmturi #%{hashtag}' scheduled_statuses: over_daily_limit: Tu esi pārsniedzis šodien ieplānoto %{limit} ziņu ierobežojumu over_total_limit: Tu esi pārsniedzis ieplānoto %{limit} ziņu ierobežojumu @@ -1658,7 +1663,7 @@ lv: relationships: Sekojamie un sekotāji severed_relationships: Pārtrauktās attiecības statuses_cleanup: Automātiska ziņu dzēšana - strikes: Moderācijas aizrādījumi + strikes: Satura pārraudzības aizrādījumi two_factor_authentication: Divpakāpju autentifikācija webauthn_authentication: Drošības atslēgas severed_relationships: @@ -1687,7 +1692,7 @@ lv: disallowed_hashtags: one: 'saturēja neatļautu tēmturi: %{tags}' other: 'saturēja neatļautus tēmturus: %{tags}' - zero: 'neatļauti tēmturi: %{tags}' + zero: 'saturēja neatļautus tēmturus: %{tags}' edited_at_html: Labots %{date} errors: in_reply_not_found: Šķiet, ka ziņa, uz kuru tu mēģini atbildēt, nepastāv. @@ -1705,7 +1710,7 @@ lv: public: Publisks public_long: Visi var redzēt unlisted: Nerindota - unlisted_long: Redzama visiem, bet nav iekļauta publiskajās ziņu lentās + unlisted_long: Redzams visiem, bet nav uzskaitīts visiem pieejamās laika joslās statuses_cleanup: enabled: Automātiski dzēst vecās ziņas enabled_hint: Automātiski izdzēš tavas ziņas, tiklīdz tās sasniedz noteiktu vecuma slieksni, ja vien tās neatbilst kādam no tālāk norādītajiem izņēmumiem @@ -1838,7 +1843,8 @@ lv: explanation: Šeit ir daži padomi, kā sākt darbu feature_action: Uzzināt vairāk feature_creativity: Mastodon nodrošina skaņas, video un attēlu ierakstus, pieejamības aprakstus, aptaujas, satura brīdinājumus, animētus profila attēlus, pielāgotas emocijzīmes, sīktēlu apgriešanas vadīklas un vēl, lai palīdzētu Tev sevi izpaust tiešsaistē. Vai Tu izplati savu mākslu, mūziku vai aplādes, Mastodon ir šeit ar Tevi. - feature_moderation_title: Moderēšana, kādai tai būtu jābūt + feature_moderation: Mastodon nodod lēmumu pieņemšanu atpakaļ Tavās rokās. Katrs serveris izveido savus noteikumus un nosacījumus, kas tiek nodrošināti vietēji, ne kā lieliem uzņēmumiem piederošos sabiedriskajos medijiem, padarot katru serveri par vispielāgojamāko un visatsaucīgāko dažādu cilvēku kopu vajadzībām. Pievienojies serverim, kura noteikumiem Tu piekrīti, vai izvieto savu! + feature_moderation_title: Satura pārraudzība, kādai tai būtu jābūt follow_action: Sekot follow_step: Sekošana aizraujošiem cilvēkiem ir viss, par ko ir Mastodon. follow_title: Pielāgo savu mājas barotni @@ -1849,7 +1855,7 @@ lv: one: "%{people} cilvēks pēdējās 2 dienās" other: "%{people} cilvēki pēdējās 2 dienās" zero: "%{people} cilvēku pēdējās divās dienās" - hashtags_subtitle: Izpēti, kas pēdējās divās dienāš ir piesasitījis cilvēku uzmanību + hashtags_subtitle: Izpēti, kas pēdējās divās dienās ir piesasitījis cilvēku uzmanību hashtags_title: Izplatīti tēmturi hashtags_view_more: Skatīt vairāk izplatītu tēmturu post_action: Rakstīt diff --git a/config/locales/nn.yml b/config/locales/nn.yml index e6edc2c4b2..9ec4f29f42 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -1166,8 +1166,11 @@ nn: use_security_key: Bruk sikkerhetsnøkkel author_attribution: example_title: Eksempeltekst + hint_html: Skriv du nyhende eller blogginnlegg utanfor Mastodon? Her kan du kontrollera korleis du blir kreditert når artiklane dine blir delte på Mastodon. + instructions: 'Sjå til at denne koden er i HTML-koden i artikkelen din:' more_from_html: Meir frå %{name} s_blog: Bloggen til %{name} + then_instructions: Så legg du til domenenamnet for publikasjonen i feltet under. title: Forfattarkreditering challenge: confirm: Hald fram @@ -1369,6 +1372,37 @@ nn: blocking_html: one: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkonto frå %{filename}. other: Du skal til å byta ut blokkeringslista di med opp til %{count} brukarkontoar frå %{filename}. + bookmarks_html: + one: Du skal til å byta ut bokmerka dine med opp til %{count} innlegg frå %{filename}. + other: Du skal til å byta ut bokmerka dine med opp til %{count} innlegg frå %{filename}. + domain_blocking_html: + one: Du skal til å byta ut domeneblokkeringslista di med opp til %{count} domene frå %{filename}. + other: Du skal til å byta ut domeneblokkeringslista di med opp til %{count} domene frå %{filename}. + following_html: + one: Du skal til å fylgja opp til %{count} brukarkonto frå %{filename} og slutta å fylgja alle andre. + other: Du skal til å fylgja opp til %{count} brukarkontoar frå %{filename} og slutta å fylgja alle andre. + muting_html: + one: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkonto frå %{filename}. + other: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkontoar frå %{filename}. + preambles: + blocking_html: + one: Du skal til å blokkera opp til %{count} brukarkonto frå %{filename}. + other: Du skal til å blokkera opp til %{count} brukarkontoar frå %{filename}. + bookmarks_html: + one: Du er i ferd med å leggja til opp til %{count} innlegg frå %{filename} til bokmerka dine. + other: Du er i ferd med å leggja til opp til %{count} innlegg frå %{filename} til bokmerka dine. + domain_blocking_html: + one: Du skal til å blokkera opp til %{count} domene frå %{filename}. + other: Du skal til å blokkera opp til %{count} domene frå %{filename}. + following_html: + one: Du er i ferd med å fylgja opp til %{count} brukarkonto frå %{filename}. + other: Du er i ferd med å fylgja opp til %{count} brukarkontoar frå %{filename}. + lists_html: + one: Du er i ferd med å leggja til opptil %{count} konto frå %{filename} til i listene dine. Nye lister vil blir oppretta om ingen lister finst frå før. + other: Du er i ferd med å leggja til opptil %{count} kontoar frå %{filename} til i listene dine. Nye lister vil blir oppretta om ingen lister finst frå før. + muting_html: + one: Du er i ferd med å dempa opp til %{count} brukarkonto frå %{filename}. + other: Du er i ferd med å dempa opp til %{count} brukarkontoar frå %{filename}. preface: Du kan henta inn data som du har eksportert frå ein annan tenar, som t.d. ei liste over folka du fylgjer eller blokkerer. recent_imports: Siste importar states: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index cfb5578f5d..184f1120bd 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -3,6 +3,7 @@ eo: simple_form: hints: account: + attribution_domains_as_text: Unu por linio. Protektas kontraŭ falsaj atribuoj. discoverable: Viaj publikaj afiŝoj kaj profilo povas esti prezentitaj aŭ rekomenditaj en diversaj lokoj de Mastodon kaj via profilo povas esti proponita al aliaj uzantoj. display_name: Via plena nomo aŭ via kromnomo. fields: Via retpaĝo, pronomoj, aĝo, ĉio, kion vi volas. @@ -138,6 +139,7 @@ eo: url: Kien eventoj sendotas labels: account: + attribution_domains_as_text: Retejoj permesitaj krediti vin discoverable: Elstarigi profilon kaj afiŝojn en eltrovantaj algoritmoj fields: name: Etikedo diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 9d7809ef3a..2b5d22aee8 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -3,7 +3,7 @@ es-MX: simple_form: hints: account: - attribution_domains_as_text: One per line. Protects from false attributions. + attribution_domains_as_text: Uno por línea. Protege contra atribuciones falsas. discoverable: Tu perfil y las publicaciones públicas pueden ser destacadas o recomendadas en varias áreas de Mastodon y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu nick. fields: Tu página de inicio, pronombres, edad, todo lo que quieras. diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 6121467768..f51a4ce8bf 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -3,6 +3,7 @@ fa: simple_form: hints: account: + attribution_domains_as_text: یکی در هر خط. محافظت از اعتباردهی‌های اشتباه. discoverable: ممکن است نمایه و فرسته‌های عمومیتان در جاهای مختلف ماستودون نمایانده و توصیه شود و نمایه‌تان به دیگر کاربران پیشنهاد شود. display_name: نام کامل یا باحالتان. fields: صفحهٔ خانگی، تلفّظ، سن و هرچیزی که دوست دارید. @@ -90,6 +91,7 @@ fa: site_short_description: شرحی کوتاه برای کمک به شناسایی یکتای کارسازتان. چه‌کسی می‌گرداندش و برای چه کسیست؟ site_terms: از سیاست محرمانگی خوتان استفاده کرده یا برای استفاده از سیاست پیش‌گزیده خالی بگذارید. می‌تواند در قالب مارک‌دون باشد. site_title: چگونه مردم ممکن است به کارساز شما علاوه بر نام دامنه آن مراجعه کنند. + theme: زمینه‌ای که بینندگان خارج شده و کاربران جدید می‌بینند. form_challenge: current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید imports: @@ -122,6 +124,7 @@ fa: url: جایی که رویدادها فرستاده می‌شوند labels: account: + attribution_domains_as_text: پابگاه‌های وبی که اجازهٔ اعتبار دهی به شما را دارند discoverable: معرّفی نمایه و فرسته‌ها در الگوریتم‌های کشف fields: name: برچسب @@ -227,6 +230,7 @@ fa: bootstrap_timeline_accounts: پیشنهاد همیشگی این حساب‌ها به کاربران جدید closed_registrations_message: پیام سفارشی هنگام در دسترس نبودن ثبت‌نام‌ها custom_css: سبک CSS سفارشی + favicon: نمادک mascot: نشان سفارشی (قدیمی) media_cache_retention_period: دورهٔ نگه‌داری انبارهٔ رسانه peers_api_enabled: انتشار سیاههٔ کارسازهای کشف شده در API diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 7c125b165a..f8257a9da9 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -3,6 +3,7 @@ ga: simple_form: hints: account: + attribution_domains_as_text: Ceann in aghaidh an líne. Cosnaíonn sé ó sannadh bréagach. discoverable: Seans go mbeidh do phostálacha poiblí agus do phróifíl le feiceáil nó molta i réimsí éagsúla de Mastodon agus is féidir do phróifíl a mholadh d’úsáideoirí eile. display_name: D'ainm iomlán nó d'ainm spraoi. fields: Do leathanach baile, forainmneacha, aois, rud ar bith is mian leat. @@ -143,6 +144,7 @@ ga: url: An áit a seolfar imeachtaí chuig labels: account: + attribution_domains_as_text: Tá cead ag suíomhanna Gréasáin creidmheas a thabhairt duit discoverable: Próifíl gné agus postálacha in halgartaim fionnachtana fields: name: Lipéad diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 545fd4a8e9..230965fe87 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,6 +3,7 @@ hu: simple_form: hints: account: + attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -143,6 +144,7 @@ hu: url: Ahová az eseményket küldjük labels: account: + attribution_domains_as_text: Weboldalak, melyek szerzőként tüntethetnek fel discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 6ce16b6448..27e98341cb 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -3,6 +3,7 @@ ja: simple_form: hints: account: + attribution_domains_as_text: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。 discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。 display_name: フルネーム、ハンドルネームなど fields: ホームページ、代名詞、年齢など何でも構いません。 @@ -143,6 +144,7 @@ ja: url: イベントの送信先 labels: account: + attribution_domains_as_text: あなたの著者表示を許可するwebサイト discoverable: アカウントを見つけやすくする fields: name: ラベル diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index fee07fa5e0..c40814d61b 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -3,6 +3,7 @@ ko: simple_form: hints: account: + attribution_domains_as_text: 한 줄에 하나씩. 가짜 기여로부터 보호합니다. discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다 display_name: 진짜 이름 또는 재미난 이름. fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들. @@ -143,6 +144,7 @@ ko: url: 이벤트가 어디로 전송될 지 labels: account: + attribution_domains_as_text: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들 discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기 fields: name: 라벨 diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 4303ba9b41..974008b5eb 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -3,6 +3,7 @@ lv: simple_form: hints: account: + attribution_domains_as_text: Viens katrā līnijā. Aizsargā no nepatiesa attiecinājuma. discoverable: Tavas publiskās ziņas un profils var tikt piedāvāti vai ieteikti dažādās Mastodon vietās, un tavs profils var tikt ieteikts citiem lietotājiem. display_name: Tavs pilnais vārds vai tavs joku vārds. fields: Tava mājas lapa, vietniekvārdi, vecums, viss, ko vēlies. @@ -18,7 +19,7 @@ lv: text: Vari izmantot ziņu sintaksi, piemēram, URL, atsauces un pieminējumus title: Neobligāts. Saņēmējam nav redzams admin_account_action: - include_statuses: Lietotājs redzēs, kuras ziņas izraisījušas moderācijas darbību vai brīdinājumu + include_statuses: Lietotājs redzēs, kuras ziņas izraisījušas satura pārraudzības darbību vai brīdinājumu send_email_notification: Lietotājs saņems paskaidrojumu par to, kas notika ar viņa kontu text_html: Neobligāts. Tu vari lietot ziņu sintaksi. Lai ietaupītu laiku, tu vari pievienot brīdinājuma sākotnējos iestatījumus type_html: Izvēlies, ko darīt ar %{acct} @@ -143,6 +144,7 @@ lv: url: Kur notikumi tiks nosūtīti labels: account: + attribution_domains_as_text: Tīmekļvietnes, kurām ir tiesības uzskaitīt Tevi discoverable: Funkcijas profils un ziņas atklāšanas algoritmos fields: name: Marķējums diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index afd3624785..7280ba6d80 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -213,7 +213,7 @@ nl: setting_default_privacy: Zichtbaarheid van nieuwe berichten setting_default_sensitive: Media altijd als gevoelig markeren setting_delete_modal: Vraag voor het verwijderen van een bericht een bevestiging - setting_disable_hover_cards: Profielvoorbeelden door eroverheen te zweven uitschakelen + setting_disable_hover_cards: Hover-kaarten met profielvoorbeelden uitschakelen setting_disable_swiping: Swipebewegingen uitschakelen setting_display_media: Mediaweergave setting_display_media_default: Standaard diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index f963d3bc72..46b7af4bdb 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,6 +3,7 @@ nn: simple_form: hints: account: + attribution_domains_as_text: Ein per line. Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -143,6 +144,7 @@ nn: url: Kvar hendingar skal sendast labels: account: + attribution_domains_as_text: Nettstader som har lov å kreditera deg discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 3d86557282..1ca9037e63 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,6 +3,7 @@ sq: simple_form: hints: account: + attribution_domains_as_text: Një për rresht. Kjo mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -143,6 +144,7 @@ sq: url: Ku do të dërgohen aktet labels: account: + attribution_domains_as_text: Sajte të lejuar t’ju japin hakë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 297e96a2bd..36d1def012 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -3,6 +3,7 @@ sv: simple_form: hints: account: + attribution_domains_as_text: En per rad. Skyddar mot falska attributioner. discoverable: Dina offentliga inlägg och din profil kan komma att presenteras eller rekommenderas inom olika områden av Mastodon och din profil kan komma att föreslås till andra användare. display_name: Ditt fullständiga namn eller ditt roliga namn. fields: Din hemsida, ditt pronomen, din ålder, vadhelst du vill. @@ -143,6 +144,7 @@ sv: url: Dit händelser kommer skickas labels: account: + attribution_domains_as_text: Webbplatser som får kreditera dig discoverable: Presentera profil och inlägg med upptäcktsalgoritmer fields: name: Etikett diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8bd782c140..f8f4d3f119 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -3,6 +3,7 @@ th: simple_form: hints: account: + attribution_domains_as_text: หนึ่งรายการต่อบรรทัด ปกป้องจากการระบุแหล่งที่มาที่ผิด discoverable: อาจแสดงหรือแนะนำโพสต์และโปรไฟล์สาธารณะของคุณในพื้นที่ต่าง ๆ ของ Mastodon และอาจเสนอแนะโปรไฟล์ของคุณให้กับผู้ใช้อื่น ๆ display_name: ชื่อเต็มของคุณหรือชื่อแบบสนุกสนานของคุณ fields: หน้าแรก, สรรพนาม, อายุของคุณ สิ่งใดก็ตามที่คุณต้องการ @@ -143,6 +144,7 @@ th: url: ที่ซึ่งจะส่งเหตุการณ์ไปยัง labels: account: + attribution_domains_as_text: เว็บไซต์ที่ได้รับอนุญาตให้ให้เครดิตคุณ discoverable: แสดงโปรไฟล์และโพสต์ในอัลกอริทึมการค้นพบ fields: name: ป้ายชื่อ diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index e2a1562b53..74dcd3f908 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,6 +3,7 @@ uk: simple_form: hints: account: + attribution_domains_as_text: Один на рядок. Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -143,6 +144,7 @@ uk: url: Куди надсилатимуться події labels: account: + attribution_domains_as_text: Сайти дозволяють вам вказувати ваше авторство discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 399ecc061a..6ef78a8f21 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -49,6 +49,7 @@ sk: title: Zmeň email pre %{username} change_role: changed_msg: Postavenie úspešne zmenené! + edit_roles: Spravuj role užívateľov label: Zmeň pozíciu no_role: Žiadna pozícia title: Zmeň pozíciu pre %{username} @@ -61,6 +62,7 @@ sk: demote: Degraduj destroyed_msg: "%{username} je teraz zaradený do fronty na okamžité vymazanie" disable: Zablokuj + disable_sign_in_token_auth: Vypni overovanie e-mailovým tokenom disable_two_factor_authentication: Vypni dvoj-faktorové overovanie disabled: Blokovaný display_name: Ukáž meno @@ -69,6 +71,7 @@ sk: email: Email email_status: Stav emailu enable: Povoľ + enable_sign_in_token_auth: Povoľ overovania e-mailovým tokenom enabled: Povolený enabled_msg: Úspešne rozmrazené konto %{username} followers: Sledujúci @@ -822,6 +825,7 @@ sk: prefix_invited_by_user: "@%{name} ťa pozýva na tento Mastodon server!" prefix_sign_up: Zaregistruj sa na Mastodone už dnes! suffix: S účtom budeš môcť nasledovať ľudí, posielať príspevky, a vymieňať si správy s užívateľmi z hocijakého Mastodon servera a viac! + didnt_get_confirmation: Neobdržal/a si odkaz na potvrdenie? dont_have_your_security_key: Nemáš svoj bezpečnostný kľúč? forgot_password: Zabudnuté heslo? invalid_reset_password_token: Token na obnovu hesla vypršal. Prosím vypítaj si nový. @@ -832,6 +836,7 @@ sk: migrate_account_html: Ak si želáš presmerovať tento účet na nejaký iný, môžeš si to nastaviť tu. or_log_in_with: Alebo prihlás s progress: + confirm: Potvrď email details: Tvoje údaje rules: Súhlas s pravidlami register: Zaregistruj sa diff --git a/config/locales/sq.yml b/config/locales/sq.yml index c113308eea..980eff1aa5 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1159,8 +1159,11 @@ sq: use_security_key: Përdor kyç sigurie author_attribution: example_title: Tekst shembull + hint_html: Shkruani lajme, apo artikuj blogu jashtë Mastodon-it? Kontrolloni se si ju jepet hakë, kur ndahen me të tjerët në Mastodon. + instructions: 'Sigurohuni që ky kod të jetë në HTML-në e artikullit tuaj:' more_from_html: Më tepër nga %{name} s_blog: Blogu i %{name} + then_instructions: Mandej, shtoni te fusha më poshtë emrin e përkatësisë së botimit. title: Atribuim autorësh challenge: confirm: Vazhdo diff --git a/config/locales/sv.yml b/config/locales/sv.yml index b79820310c..f3ce6443f6 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -542,7 +542,7 @@ sv: total_followed_by_them: Följs av dem total_followed_by_us: Följs av oss total_reported: Rapporter om dem - total_storage: Media-bilagor + total_storage: Mediebilagor totals_time_period_hint_html: Totalsummorna som visas nedan inkluderar data för all tid. unknown_instance: Det finns för närvarande inga uppgifter om denna domän på denna server. invites: @@ -893,6 +893,7 @@ sv: message_html: "Din objektlagring är felkonfigurerad. Sekretessen för dina användare är i riskzonen." tags: moderation: + not_trendable: Kan inte trenda not_usable: Inte användbar pending_review: Väntar på granskning review_requested: Granskning begärd @@ -904,6 +905,7 @@ sv: name: Namn newest: Nyaste oldest: Äldsta + open: Visa offentligt reset: Återställ review: Granskningsstatus search: Sök @@ -1164,8 +1166,11 @@ sv: use_security_key: Använd säkerhetsnyckel author_attribution: example_title: Exempeltext + hint_html: Skriver du nyheter eller bloggartiklar utanför Mastodon? Kontrollera hur du får krediteras när de delas på Mastodon. + instructions: 'Se till att den här koden finns i din artikels HTML:' more_from_html: Mer från %{name} s_blog: "%{name}s blogg" + then_instructions: Lägg sedan till domännamnet för publikationen i fältet nedan. title: Författarattribution challenge: confirm: Fortsätt @@ -1364,9 +1369,43 @@ sv: overwrite: Skriv över overwrite_long: Ersätt de nuvarande uppgifterna med de nya overwrite_preambles: + blocking_html: + one: Du är på väg att ersätta din blockeringslista med upp till %{count} konto från %{filename}. + other: Du är på väg att ersätta din blockeringslista med upp till %{count} konton från %{filename}. bookmarks_html: one: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}. other: Du är på väg att ersätta din blockeringslista med upp till %{count} inlägg från %{filename}. + domain_blocking_html: + one: Du är på väg att ersätta din blockeringslista med upp till %{count} domän från %{filename}. + other: Du är på väg att ersätta din blockeringslista med upp till %{count} domäner från %{filename}. + following_html: + one: Du är på väg till följ upp till %{count} konto från %{filename} och sluta följa någon annan. + other: Du är på väg till följ upp till %{count} konton från %{filename} och sluta följa någon annan. + lists_html: + one: Du är på väg att ersätta dina listor med innehållet i %{filename}. Upp till %{count} konto kommer att läggas till i nya listor. + other: Du är på väg att ersätta dina listor med innehållet i %{filename}. Upp till %{count} konton kommer att läggas till i nya listor. + muting_html: + one: Du är på väg att ersätta din lista med tystade konton med upp till %{count} konto från %{filename}. + other: Du är på väg att ersätta din lista med tystade konton med upp till %{count} konton från %{filename}. + preambles: + blocking_html: + one: Du är på väg att blockera med upp till %{count} konto från %{filename}. + other: Du är på väg att blockera med upp till %{count} konton från %{filename}. + bookmarks_html: + one: Du håller på att lägga upp till %{count} inlägg från %{filename} till dina bokmärken. + other: Du håller på att lägga upp till %{count} inlägg från %{filename} till dina bokmärken. + domain_blocking_html: + one: Du är på väg att blockera upp till %{count} domän från %{filename}. + other: Du är på väg att blockera upp till %{count} domäner från %{filename}. + following_html: + one: Du är på väg att följa upp till %{count} konto från %{filename}. + other: Du är på väg att följa upp till %{count} konton från %{filename}. + lists_html: + one: Du håller på att lägga upp till %{count} konto från %{filename} till dina listor. Nya listor kommer att skapas om det inte finns någon lista att lägga till. + other: Du håller på att lägga upp till %{count} konton från %{filename} till dina listor. Nya listor kommer att skapas om det inte finns någon lista att lägga till. + muting_html: + one: Du är på väg att tysta upp till %{count} konto från %{filename}. + other: Du är på väg att tysta upp till %{count} konton från %{filename}. preface: Du kan importera data som du exporterat från en annan instans, till exempel en lista över personer du följer eller blockerar. recent_imports: Nyligen importerade states: diff --git a/config/locales/th.yml b/config/locales/th.yml index 2c21687a46..cdc56d98ce 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1148,8 +1148,11 @@ th: use_security_key: ใช้กุญแจความปลอดภัย author_attribution: example_title: ข้อความตัวอย่าง + hint_html: คุณเขียนข่าวหรือลงบทความที่อื่นๆที่นอกจาก Mastodon บ้างไหม? ถ้าหากคุณเขียนอยู่ล่ะก็ คุณสามารถบอกได้นะว่าอยากให้คนอื่นให้เครดิตคุณยังไงเวลาแชร์ไปที่ Mastodon นะ + instructions: 'โปรดตรวจสอบให้แน่ใจว่าโค้ดนี้ได้มีอยู่ในบทความของคุณแล้ว HTML:' more_from_html: เพิ่มเติมจาก %{name} s_blog: บล็อกของ %{name} + then_instructions: จากนั้น ให้เพิ่มใส่ชื่อเว็บไซต์ของสิ่งพิมพ์ลงไปในช่องว่างข้างล่าง title: การระบุแหล่งที่มาผู้สร้าง challenge: confirm: ดำเนินการต่อ @@ -1340,6 +1343,32 @@ th: merge_long: เก็บระเบียนที่มีอยู่และเพิ่มระเบียนใหม่ overwrite: เขียนทับ overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ + overwrite_preambles: + blocking_html: + other: คุณกำลังจะ แทนที่รายการการปิดกั้นของคุณ ด้วยมากถึง %{count} บัญชี จาก %{filename} + bookmarks_html: + other: คุณกำลังจะ แทนที่ที่คั่นหน้าของคุณ ด้วยมากถึง %{count} โพสต์ จาก %{filename} + domain_blocking_html: + other: คุณกำลังจะ แทนที่รายการการปิดกั้นโดเมนของคุณ ด้วยมากถึง %{count} โดเมน จาก %{filename} + following_html: + other: คุณกำลังจะ ติดตาม มากถึง %{count} บัญชี จาก %{filename} และ หยุดการติดตามคนอื่นใด + lists_html: + other: คุณกำลังจะ แทนที่รายการของคุณ ด้วยเนื้อหาของ %{filename} จะเพิ่มมากถึง %{count} บัญชี ไปยังรายการใหม่ + muting_html: + other: คุณกำลังจะ แทนที่รายการบัญชีที่ซ่อนอยู่ของคุณ ด้วยมากถึง %{count} บัญชี จาก %{filename} + preambles: + blocking_html: + other: คุณกำลังจะ ปิดกั้น มากถึง %{count} บัญชี จาก %{filename} + bookmarks_html: + other: คุณกำลังจะเพิ่มมากถึง %{count} โพสต์ จาก %{filename} ไปยัง ที่คั่นหน้า ของคุณ + domain_blocking_html: + other: คุณกำลังจะ ปิดกั้น มากถึง %{count} โดเมน จาก %{filename} + following_html: + other: คุณกำลังจะ ติดตาม มากถึง %{count} บัญชี จาก %{filename} + lists_html: + other: คุณกำลังจะเพิ่มมากถึง %{count} บัญชี จาก %{filename} ไปยัง รายการ ของคุณ จะสร้างรายการใหม่หากไม่มีรายการที่จะเพิ่มไปยัง + muting_html: + other: คุณกำลังจะ ซ่อน มากถึง %{count} บัญชี จาก %{filename} preface: คุณสามารถนำเข้าข้อมูลที่คุณได้ส่งออกจากเซิร์ฟเวอร์อื่น เช่น รายการผู้คนที่คุณกำลังติดตามหรือกำลังปิดกั้น recent_imports: การนำเข้าล่าสุด states: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ab50ac4dee..e6a765267f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1202,6 +1202,8 @@ uk: use_security_key: Використовувати ключ безпеки author_attribution: example_title: Зразок тексту + hint_html: Ви пишете новини чи статті в блозі за межами Mastodon? Контролюйте, як вони підписуються, коли ними діляться на Mastodon. + instructions: 'Переконайтесь, що цей код розміщено в HTML-коді вашої статті:' more_from_html: Більше від %{name} s_blog: Блог %{name} then_instructions: Потім додайте доменне ім'я публікації у поле нижче. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 00431ba425..172ce55a3d 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -832,8 +832,8 @@ vi: sensitive: "%{name} đã đánh dấu %{target} là nhạy cảm" silence: "%{name} đã ẩn %{target}" suspend: "%{name} đã vô hiệu hóa %{target}" - appeal_approved: Đã khiếu nại - appeal_pending: Đang kháng cáo + appeal_approved: Khiếu nại được chấp nhận + appeal_pending: Đang khiếu nại appeal_rejected: Khiếu nại bị từ chối system_checks: database_schema_check: @@ -1148,7 +1148,7 @@ vi: use_security_key: Dùng khóa bảo mật author_attribution: example_title: Văn bản mẫu - hint_html: Bạn là nhà báo hoặc blogger bên ngoài Mastodon? Kiểm soát cách bạn được ghi nhận khi chúng được chia sẻ trên Mastodon. + hint_html: Bạn là nhà báo hoặc blogger bên ngoài Mastodon? Kiểm soát cách bài viết của bạn được ghi nhận khi chia sẻ trên Mastodon. instructions: 'Đặt mã này trong HTML bài viết:' more_from_html: Viết bởi %{name} s_blog: "%{name}'s Blog" From dc0b1948beea5eed657bc32a3a7deaab0d41c693 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Mon, 28 Oct 2024 14:27:37 +0100 Subject: [PATCH 268/550] Feat: Implement interaction modal for Polls (#32609) --- app/javascript/mastodon/components/poll.jsx | 12 +++++++++--- .../mastodon/components/status_content.jsx | 2 +- app/javascript/mastodon/containers/poll_container.js | 12 ++++++++++++ .../mastodon/features/interaction_modal/index.jsx | 8 +++++++- app/javascript/mastodon/locales/en.json | 2 ++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/components/poll.jsx b/app/javascript/mastodon/components/poll.jsx index 7b836f00b1..06b09f5b35 100644 --- a/app/javascript/mastodon/components/poll.jsx +++ b/app/javascript/mastodon/components/poll.jsx @@ -41,12 +41,14 @@ const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => { class Poll extends ImmutablePureComponent { static propTypes = { identity: identityContextPropShape, - poll: ImmutablePropTypes.map, + poll: ImmutablePropTypes.map.isRequired, + status: ImmutablePropTypes.map.isRequired, lang: PropTypes.string, intl: PropTypes.object.isRequired, disabled: PropTypes.bool, refresh: PropTypes.func, onVote: PropTypes.func, + onInteractionModal: PropTypes.func, }; state = { @@ -117,7 +119,11 @@ class Poll extends ImmutablePureComponent { return; } - this.props.onVote(Object.keys(this.state.selected)); + if (this.props.identity.signedIn) { + this.props.onVote(Object.keys(this.state.selected)); + } else { + this.props.onInteractionModal('vote', this.props.status); + } }; handleRefresh = () => { @@ -232,7 +238,7 @@ class Poll extends ImmutablePureComponent {
- {!showResults && } + {!showResults && } {!showResults && <> · } {showResults && !this.props.disabled && <> · } {votesCount} diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx index 3316be8350..4950c896f9 100644 --- a/app/javascript/mastodon/components/status_content.jsx +++ b/app/javascript/mastodon/components/status_content.jsx @@ -245,7 +245,7 @@ class StatusContent extends PureComponent { ); const poll = !!status.get('poll') && ( - + ); if (this.props.onClick) { diff --git a/app/javascript/mastodon/containers/poll_container.js b/app/javascript/mastodon/containers/poll_container.js index 8482345431..db378cba7c 100644 --- a/app/javascript/mastodon/containers/poll_container.js +++ b/app/javascript/mastodon/containers/poll_container.js @@ -2,6 +2,7 @@ import { connect } from 'react-redux'; import { debounce } from 'lodash'; +import { openModal } from 'mastodon/actions/modal'; import { fetchPoll, vote } from 'mastodon/actions/polls'; import Poll from 'mastodon/components/poll'; @@ -17,6 +18,17 @@ const mapDispatchToProps = (dispatch, { pollId }) => ({ onVote (choices) { dispatch(vote(pollId, choices)); }, + + onInteractionModal (type, status) { + dispatch(openModal({ + modalType: 'INTERACTION', + modalProps: { + type, + accountId: status.getIn(['account', 'id']), + url: status.get('uri'), + }, + })); + } }); const mapStateToProps = (state, { pollId }) => ({ diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index 723e27ae1c..446cc2586a 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -9,6 +9,7 @@ import { connect } from 'react-redux'; import { throttle, escapeRegExp } from 'lodash'; +import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; @@ -340,7 +341,7 @@ class InteractionModal extends React.PureComponent { static propTypes = { displayNameHtml: PropTypes.string, url: PropTypes.string, - type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']), + type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow', 'vote']), onSignupClick: PropTypes.func.isRequired, signupUrl: PropTypes.string.isRequired, }; @@ -377,6 +378,11 @@ class InteractionModal extends React.PureComponent { title = ; actionDescription = ; break; + case 'vote': + icon = ; + title = ; + actionDescription = ; + break; } let signupButton; diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index f2d37e67a6..e91d6e52fc 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.vote": "With an account on Mastodon, you can vote in this poll.", "interaction_modal.login.action": "Take me home", "interaction_modal.login.prompt": "Domain of your home server, e.g. mastodon.social", "interaction_modal.no_account_yet": "Not on Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.vote": "Vote in {name}'s poll", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", From b1d3c645255db900de0a7ed3b1bd1e033c21cae8 Mon Sep 17 00:00:00 2001 From: Hugo Gameiro Date: Mon, 28 Oct 2024 13:32:56 +0000 Subject: [PATCH 269/550] Fix and improve batch attachment deletion handling when using OpenStack Swift (#32637) --- app/lib/attachment_batch.rb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/lib/attachment_batch.rb b/app/lib/attachment_batch.rb index 32ccb0b13c..374abfac49 100644 --- a/app/lib/attachment_batch.rb +++ b/app/lib/attachment_batch.rb @@ -77,10 +77,22 @@ class AttachmentBatch when :fog logger.debug { "Deleting #{attachment.path(style)}" } + retries = 0 begin attachment.send(:directory).files.new(key: attachment.path(style)).destroy - rescue Fog::Storage::OpenStack::NotFound - # Ignore failure to delete a file that has already been deleted + rescue Fog::OpenStack::Storage::NotFound + logger.debug "Will ignore because file is not found #{attachment.path(style)}" + rescue => e + retries += 1 + + if retries < MAX_RETRY + logger.debug "Retry #{retries}/#{MAX_RETRY} after #{e.message}" + sleep 2**retries + retry + else + logger.error "Batch deletion from fog failed after #{e.message}" + raise e + end end when :azure logger.debug { "Deleting #{attachment.path(style)}" } From 6f5eb22135d24c6e9669989a89c643fe343173bf Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 28 Oct 2024 09:41:56 -0400 Subject: [PATCH 270/550] Mailer header partial access cleanup (#32585) --- app/views/application/mailer/_heading.html.haml | 12 ++++++------ app/views/notification_mailer/favourite.html.haml | 5 ++++- app/views/notification_mailer/follow.html.haml | 5 ++++- .../notification_mailer/follow_request.html.haml | 5 ++++- app/views/notification_mailer/mention.html.haml | 5 ++++- app/views/notification_mailer/reblog.html.haml | 5 ++++- app/views/user_mailer/appeal_approved.html.haml | 5 ++++- app/views/user_mailer/appeal_rejected.html.haml | 5 ++++- app/views/user_mailer/backup_ready.html.haml | 5 ++++- .../user_mailer/confirmation_instructions.html.haml | 4 +++- app/views/user_mailer/email_changed.html.haml | 5 ++++- app/views/user_mailer/failed_2fa.html.haml | 5 ++++- app/views/user_mailer/password_change.html.haml | 5 ++++- .../reconfirmation_instructions.html.haml | 4 +++- .../reset_password_instructions.html.haml | 5 ++++- app/views/user_mailer/suspicious_sign_in.html.haml | 5 ++++- app/views/user_mailer/two_factor_disabled.html.haml | 5 ++++- app/views/user_mailer/two_factor_enabled.html.haml | 5 ++++- .../two_factor_recovery_codes_changed.html.haml | 5 ++++- app/views/user_mailer/warning.html.haml | 4 +++- .../user_mailer/webauthn_credential_added.html.haml | 5 ++++- .../webauthn_credential_deleted.html.haml | 5 ++++- app/views/user_mailer/webauthn_disabled.html.haml | 5 ++++- app/views/user_mailer/webauthn_enabled.html.haml | 5 ++++- app/views/user_mailer/welcome.html.haml | 4 +++- 25 files changed, 98 insertions(+), 30 deletions(-) diff --git a/app/views/application/mailer/_heading.html.haml b/app/views/application/mailer/_heading.html.haml index 9fc5dc7471..8b1f3f9ffc 100644 --- a/app/views/application/mailer/_heading.html.haml +++ b/app/views/application/mailer/_heading.html.haml @@ -1,13 +1,13 @@ +-# locals: (title:, image_url: nil, subtitle: nil) %table.email-w-full.email-header-heading-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-header-heading-td %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr - - if defined?(heading_image_url) + - if image_url %td.email-header-heading-img-td - = image_tag heading_image_url, alt: '', width: 56, height: 56 + = image_tag image_url, alt: '', width: 56, height: 56 %td.email-header-heading-txt-td - - if defined?(heading_title) - %h1= heading_title - - if defined?(heading_subtitle) - %p= heading_subtitle + %h1= title + - if subtitle + %p= subtitle diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml index 62c0a39abe..ec2a048ba7 100644 --- a/app/views/notification_mailer/favourite.html.haml +++ b/app/views/notification_mailer/favourite.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('notification_mailer.favourite.title'), heading_subtitle: t('notification_mailer.favourite.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/favorite.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/favorite.png'), + subtitle: t('notification_mailer.favourite.body', name: @account.pretty_acct), + title: t('notification_mailer.favourite.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/notification_mailer/follow.html.haml b/app/views/notification_mailer/follow.html.haml index 8247aa5b44..4e23f7fae7 100644 --- a/app/views/notification_mailer/follow.html.haml +++ b/app/views/notification_mailer/follow.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('notification_mailer.follow.title'), heading_subtitle: t('notification_mailer.follow.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/user.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/user.png'), + subtitle: t('notification_mailer.follow.body', name: @account.pretty_acct), + title: t('notification_mailer.follow.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/notification_mailer/follow_request.html.haml b/app/views/notification_mailer/follow_request.html.haml index 9344ef7eb3..13a5cf87e8 100644 --- a/app/views/notification_mailer/follow_request.html.haml +++ b/app/views/notification_mailer/follow_request.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('notification_mailer.follow_request.title'), heading_subtitle: t('notification_mailer.follow_request.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/follow.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/follow.png'), + subtitle: t('notification_mailer.follow_request.body', name: @account.pretty_acct), + title: t('notification_mailer.follow_request.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/notification_mailer/mention.html.haml b/app/views/notification_mailer/mention.html.haml index 83fa5086a6..419d0b76ea 100644 --- a/app/views/notification_mailer/mention.html.haml +++ b/app/views/notification_mailer/mention.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('notification_mailer.mention.title'), heading_subtitle: t('notification_mailer.mention.body', name: @status.account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/mention.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/mention.png'), + subtitle: t('notification_mailer.mention.body', name: @status.account.pretty_acct), + title: t('notification_mailer.mention.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/notification_mailer/reblog.html.haml b/app/views/notification_mailer/reblog.html.haml index f91c678cf5..f097211bc5 100644 --- a/app/views/notification_mailer/reblog.html.haml +++ b/app/views/notification_mailer/reblog.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('notification_mailer.reblog.title'), heading_subtitle: t('notification_mailer.reblog.body', name: @account.pretty_acct), heading_image_url: frontend_asset_url('images/mailer-new/heading/boost.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/boost.png'), + subtitle: t('notification_mailer.reblog.body', name: @account.pretty_acct), + title: t('notification_mailer.reblog.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/appeal_approved.html.haml b/app/views/user_mailer/appeal_approved.html.haml index 54e9a94a54..2da3e0d3eb 100644 --- a/app/views/user_mailer/appeal_approved.html.haml +++ b/app/views/user_mailer/appeal_approved.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('user_mailer.appeal_approved.title'), heading_subtitle: t('user_mailer.appeal_approved.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/appeal-approved.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/appeal-approved.png'), + subtitle: t('user_mailer.appeal_approved.subtitle'), + title: t('user_mailer.appeal_approved.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/appeal_rejected.html.haml b/app/views/user_mailer/appeal_rejected.html.haml index b493712b05..6f9282507b 100644 --- a/app/views/user_mailer/appeal_rejected.html.haml +++ b/app/views/user_mailer/appeal_rejected.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('user_mailer.appeal_rejected.title'), heading_subtitle: t('user_mailer.appeal_rejected.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/appeal-rejected.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/appeal-rejected.png'), + subtitle: t('user_mailer.appeal_rejected.subtitle'), + title: t('user_mailer.appeal_rejected.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/backup_ready.html.haml b/app/views/user_mailer/backup_ready.html.haml index 99a48e7fdb..c25f0b45dd 100644 --- a/app/views/user_mailer/backup_ready.html.haml +++ b/app/views/user_mailer/backup_ready.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('user_mailer.backup_ready.title'), heading_subtitle: t('user_mailer.backup_ready.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/archive.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/archive.png'), + subtitle: t('user_mailer.backup_ready.explanation'), + title: t('user_mailer.backup_ready.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/confirmation_instructions.html.haml b/app/views/user_mailer/confirmation_instructions.html.haml index 13e68c722b..d3e3e8f930 100644 --- a/app/views/user_mailer/confirmation_instructions.html.haml +++ b/app/views/user_mailer/confirmation_instructions.html.haml @@ -1,5 +1,7 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.confirmation_instructions.title'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/email.png'), + title: t('devise.mailer.confirmation_instructions.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/email_changed.html.haml b/app/views/user_mailer/email_changed.html.haml index 71678ad029..33e35a314b 100644 --- a/app/views/user_mailer/email_changed.html.haml +++ b/app/views/user_mailer/email_changed.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.email_changed.title'), heading_subtitle: t('devise.mailer.email_changed.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/email.png'), + subtitle: t('devise.mailer.email_changed.explanation'), + title: t('devise.mailer.email_changed.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/failed_2fa.html.haml b/app/views/user_mailer/failed_2fa.html.haml index e1da35ce06..edac8ef63b 100644 --- a/app/views/user_mailer/failed_2fa.html.haml +++ b/app/views/user_mailer/failed_2fa.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('user_mailer.failed_2fa.title'), heading_subtitle: t('user_mailer.failed_2fa.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/login.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/login.png'), + subtitle: t('user_mailer.failed_2fa.explanation'), + title: t('user_mailer.failed_2fa.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/password_change.html.haml b/app/views/user_mailer/password_change.html.haml index 44c8c0dcaf..350f5bd996 100644 --- a/app/views/user_mailer/password_change.html.haml +++ b/app/views/user_mailer/password_change.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.password_change.title'), heading_subtitle: t('devise.mailer.password_change.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/password.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/password.png'), + subtitle: t('devise.mailer.password_change.explanation'), + title: t('devise.mailer.password_change.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/reconfirmation_instructions.html.haml b/app/views/user_mailer/reconfirmation_instructions.html.haml index 854887a7e0..6f6954f705 100644 --- a/app/views/user_mailer/reconfirmation_instructions.html.haml +++ b/app/views/user_mailer/reconfirmation_instructions.html.haml @@ -1,5 +1,7 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.reconfirmation_instructions.title'), heading_image_url: frontend_asset_url('images/mailer-new/heading/email.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/email.png'), + title: t('devise.mailer.reconfirmation_instructions.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/reset_password_instructions.html.haml b/app/views/user_mailer/reset_password_instructions.html.haml index a1384fcc27..5a1480867c 100644 --- a/app/views/user_mailer/reset_password_instructions.html.haml +++ b/app/views/user_mailer/reset_password_instructions.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.reset_password_instructions.title'), heading_subtitle: t('devise.mailer.reset_password_instructions.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/password.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/password.png'), + subtitle: t('devise.mailer.reset_password_instructions.explanation'), + title: t('devise.mailer.reset_password_instructions.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/suspicious_sign_in.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml index deee7a1ce1..890d883c44 100644 --- a/app/views/user_mailer/suspicious_sign_in.html.haml +++ b/app/views/user_mailer/suspicious_sign_in.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('user_mailer.suspicious_sign_in.title'), heading_subtitle: t('user_mailer.suspicious_sign_in.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/login.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/login.png'), + subtitle: t('user_mailer.suspicious_sign_in.explanation'), + title: t('user_mailer.suspicious_sign_in.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/two_factor_disabled.html.haml b/app/views/user_mailer/two_factor_disabled.html.haml index 28f6ca6600..4f1559d86c 100644 --- a/app/views/user_mailer/two_factor_disabled.html.haml +++ b/app/views/user_mailer/two_factor_disabled.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_disabled.title'), heading_subtitle: t('devise.mailer.two_factor_disabled.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-disabled.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/2fa-disabled.png'), + subtitle: t('devise.mailer.two_factor_disabled.subtitle'), + title: t('devise.mailer.two_factor_disabled.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/two_factor_enabled.html.haml b/app/views/user_mailer/two_factor_enabled.html.haml index 691dc661a0..0ed57ea32b 100644 --- a/app/views/user_mailer/two_factor_enabled.html.haml +++ b/app/views/user_mailer/two_factor_enabled.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_enabled.title'), heading_subtitle: t('devise.mailer.two_factor_enabled.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-enabled.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/2fa-enabled.png'), + subtitle: t('devise.mailer.two_factor_enabled.subtitle'), + title: t('devise.mailer.two_factor_enabled.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml b/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml index 2d063e4c76..cc4c21b83b 100644 --- a/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml +++ b/app/views/user_mailer/two_factor_recovery_codes_changed.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.two_factor_recovery_codes_changed.title'), heading_subtitle: t('devise.mailer.two_factor_recovery_codes_changed.subtitle'), heading_image_url: frontend_asset_url('images/mailer-new/heading/2fa-recovery.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/2fa-recovery.png'), + subtitle: t('devise.mailer.two_factor_recovery_codes_changed.subtitle'), + title: t('devise.mailer.two_factor_recovery_codes_changed.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml index 837cde550e..fe8db974ee 100644 --- a/app/views/user_mailer/warning.html.haml +++ b/app/views/user_mailer/warning.html.haml @@ -1,5 +1,7 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t("user_mailer.warning.title.#{@warning.action}"), heading_image_url: frontend_asset_url('images/mailer-new/heading/warning.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/warning.png'), + title: t("user_mailer.warning.title.#{@warning.action}") %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/webauthn_credential_added.html.haml b/app/views/user_mailer/webauthn_credential_added.html.haml index 3e16766238..9c5cbdd676 100644 --- a/app/views/user_mailer/webauthn_credential_added.html.haml +++ b/app/views/user_mailer/webauthn_credential_added.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_credential.added.title'), heading_subtitle: t('devise.mailer.webauthn_credential.added.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-added.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/key-added.png'), + subtitle: t('devise.mailer.webauthn_credential.added.explanation'), + title: t('devise.mailer.webauthn_credential.added.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/webauthn_credential_deleted.html.haml b/app/views/user_mailer/webauthn_credential_deleted.html.haml index 59dcb75d3a..decfc02c22 100644 --- a/app/views/user_mailer/webauthn_credential_deleted.html.haml +++ b/app/views/user_mailer/webauthn_credential_deleted.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_credential.deleted.title'), heading_subtitle: t('devise.mailer.webauthn_credential.deleted.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-deleted.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/key-deleted.png'), + subtitle: t('devise.mailer.webauthn_credential.deleted.explanation'), + title: t('devise.mailer.webauthn_credential.deleted.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/webauthn_disabled.html.haml b/app/views/user_mailer/webauthn_disabled.html.haml index 0f7c534bc4..232c951915 100644 --- a/app/views/user_mailer/webauthn_disabled.html.haml +++ b/app/views/user_mailer/webauthn_disabled.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_disabled.title'), heading_subtitle: t('devise.mailer.webauthn_disabled.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-disabled.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/key-disabled.png'), + subtitle: t('devise.mailer.webauthn_disabled.explanation'), + title: t('devise.mailer.webauthn_disabled.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/webauthn_enabled.html.haml b/app/views/user_mailer/webauthn_enabled.html.haml index cd11aa5a40..955a557de4 100644 --- a/app/views/user_mailer/webauthn_enabled.html.haml +++ b/app/views/user_mailer/webauthn_enabled.html.haml @@ -1,5 +1,8 @@ = content_for :heading do - = render 'application/mailer/heading', heading_title: t('devise.mailer.webauthn_enabled.title'), heading_subtitle: t('devise.mailer.webauthn_enabled.explanation'), heading_image_url: frontend_asset_url('images/mailer-new/heading/key-enabled.png') + = render 'application/mailer/heading', + image_url: frontend_asset_url('images/mailer-new/heading/key-enabled.png'), + subtitle: t('devise.mailer.webauthn_enabled.explanation'), + title: t('devise.mailer.webauthn_enabled.title') %table.email-w-full{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } %tr %td.email-body-padding-td diff --git a/app/views/user_mailer/welcome.html.haml b/app/views/user_mailer/welcome.html.haml index efc6cad393..c37104da79 100644 --- a/app/views/user_mailer/welcome.html.haml +++ b/app/views/user_mailer/welcome.html.haml @@ -1,7 +1,9 @@ = content_for :heading do .email-desktop-flex .email-header-left - = render 'application/mailer/heading', heading_title: t('user_mailer.welcome.title', name: @resource.account.username), heading_subtitle: t('user_mailer.welcome.explanation') + = render 'application/mailer/heading', + subtitle: t('user_mailer.welcome.explanation'), + title: t('user_mailer.welcome.title', name: @resource.account.username) .email-header-right .email-header-card %table.email-header-card-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' } From cff1846f803b25ef79ef6db2a30affd2e617faee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:55:45 +0000 Subject: [PATCH 271/550] Update babel monorepo to v7.26.0 (#32659) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 160 +++++++++++++++++++++++++++--------------------------- 1 file changed, 81 insertions(+), 79 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4ef44a7591..1a129ac367 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,55 +42,57 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/code-frame@npm:7.25.9" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/code-frame@npm:7.26.0" dependencies: - "@babel/highlight": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10c0/88562eba0eeb5960b7004e108790aa00183d90cbbe70ce10dad01c2c48141d2ef54d6dcd0c678cc1e456de770ffeb68e28559f4d222c01a110c79aea8733074b + checksum: 10c0/46f7e367714be736b52ea3c01b24f47e2102e210fb83021d1c8237d8fc511b9538909e16e2fcdbb5cb6173e0794e28624309a59014e52fcfb7bde908f5284388 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/compat-data@npm:7.25.9" - checksum: 10c0/8d9fc2074311ce61aaf5bccf740a808644d19d4859caf5fa46d8a7186a1ee0b0d8cbbc23f9371f8b397e84a885bdeab58d5f22d6799ddde55973252aac351a27 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/compat-data@npm:7.26.0" + checksum: 10c0/6325c9151a3c9b0a3a807e854a26255ef66d989bff331475a935af9bb18f160e0fffe6aed550e4e96b63f91efcd874bfbaab2a1f4a2f8d25645d712a0de590fb languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0": - version: 7.25.9 - resolution: "@babel/core@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.25.9" - "@babel/generator": "npm:^7.25.9" + "@babel/code-frame": "npm:^7.26.0" + "@babel/generator": "npm:^7.26.0" "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-module-transforms": "npm:^7.25.9" - "@babel/helpers": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.0" "@babel/template": "npm:^7.25.9" "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/40d3064ebe906f65ed4153a0f4d75c679a19e4d71e425035b7bbe2d292a9167274f1a0d908d4d6c8f484fcddeb10bd91e0c7878fdb3dfad1bb00f6a319ce431d + checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e languageName: node linkType: hard -"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/generator@npm:7.25.9" +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2": + version: 7.26.0 + resolution: "@babel/generator@npm:7.26.0" dependencies: - "@babel/types": "npm:^7.25.9" + "@babel/parser": "npm:^7.26.0" + "@babel/types": "npm:^7.26.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10c0/fca49a1440ac550bb835a73c0e8314849cd493a468a5431ca7f9dbb3d3443e3a1a6dcba2426752e8a97cc2feed4a3b7a0c639e1c45871c4a9dd0c994f08dd25a + checksum: 10c0/b6bb9185f19a97eaf58e04a6d39a13237076678e7ed16b6321dea914535d4bf6a8d7727c9dcb65539845aa0096b326eb67be4bab764bd74bcfd848e2eda68609 languageName: node linkType: hard @@ -201,17 +203,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-transforms@npm:7.25.9" +"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-simple-access": "npm:^7.25.9" "@babel/helper-validator-identifier": "npm:^7.25.9" "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/cd005e7585806845d79c5c0ca9e8926f186b430b0a558dad08a3611365eaad3ac587672b0d903530117dec454f48b6bdc3d164b19ea1b71ca1b4eb3be7b452ef + checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a languageName: node linkType: hard @@ -309,36 +310,24 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helpers@npm:7.25.9" +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" dependencies: "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/4354fbf050291937d0f127f6f927a0c471b604524e0767516fefb91dc36427f25904dd0d2b2b3bbc66bce1894c680cc37eac9ab46970d70f24bf3e53375612de + "@babel/types": "npm:^7.26.0" + checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 languageName: node linkType: hard -"@babel/highlight@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/highlight@npm:7.25.9" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0": + version: 7.26.1 + resolution: "@babel/parser@npm:7.26.1" dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.9" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/ae0ed93c151b85a07df42936117fa593ce91563a22dfc8944a90ae7088c9679645c33e00dcd20b081c1979665d65f986241172dae1fc9e5922692fc3ff685a49 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/parser@npm:7.25.9" - dependencies: - "@babel/types": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" bin: parser: ./bin/babel-parser.js - checksum: 10c0/143faff8a72331be5ed94080e0f4645cbeea814fb488cd9210154083735f67cb66fde32f6a4a80efd6c4cdf12c6f8b50995a465846093c7f65c5da8d7829627c + checksum: 10c0/dc7d4e6b7eb667fa0784e7e2c3f6f92ca12ad72242f6d4311995310dae55093f02acdb595b69b0dbbf04cb61ad87156ac03186ff32eacfa35149c655bc22c14b languageName: node linkType: hard @@ -443,25 +432,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9" +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f5a022b8a7f3585cf1586535224b06ae380983d3c14f7127b82792ef50cd8194047080540c8abec7aa8f8bfe7d774d71a1ee91f4fd3fa0277f7ffe2d3c6c4977 + checksum: 10c0/525b174e60b210d96c1744c1575fc2ddedcc43a479cba64a5344cf77bd0541754fc58120b5a11ff832ba098437bb05aa80900d1f49bb3d888c5e349a4a3a356e languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9" +"@babel/plugin-syntax-import-attributes@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/bbdf97ba088c3d482492f6c3376422752b1723ce32e3ac11b000faf3c942d68e418c8a911431cb05d5e300d008cc37cd5518e89807a5813c2ac8fdd82d171f8d + checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 languageName: node linkType: hard @@ -669,15 +658,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9" +"@babel/plugin-transform-class-static-block@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" dependencies: "@babel/helper-create-class-features-plugin": "npm:^7.25.9" "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/696a3a8acde79d6fee4f685ee1353bf483c4cd50a38e586a1a044268df72d87f9b1a3b7c473def6cde836aa69931fd5a75560bb9ee3a635ebde8911575ed49ca + checksum: 10c0/cdcf5545ae6514ed75fbd73cccfa209c6a5dfdf0c2bb7bb62c0fb4ec334a32281bcf1bc16ace494d9dbe93feb8bdc0bd3cf9d9ccb6316e634a67056fa13b741b languageName: node linkType: hard @@ -1133,6 +1122,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4abc1db6c964efafc7a927cda814c7275275afa4b530483e0936fd614de23cb5802f7ca43edaa402008a723d4e7eac282b6f5283aa2eeb3b27da6d6c1dd7f8ed + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" @@ -1279,10 +1280,10 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4": - version: 7.25.9 - resolution: "@babel/preset-env@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/preset-env@npm:7.26.0" dependencies: - "@babel/compat-data": "npm:^7.25.9" + "@babel/compat-data": "npm:^7.26.0" "@babel/helper-compilation-targets": "npm:^7.25.9" "@babel/helper-plugin-utils": "npm:^7.25.9" "@babel/helper-validator-option": "npm:^7.25.9" @@ -1292,8 +1293,8 @@ __metadata: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.25.9" - "@babel/plugin-syntax-import-attributes": "npm:^7.25.9" + "@babel/plugin-syntax-import-assertions": "npm:^7.26.0" + "@babel/plugin-syntax-import-attributes": "npm:^7.26.0" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" "@babel/plugin-transform-async-generator-functions": "npm:^7.25.9" @@ -1301,7 +1302,7 @@ __metadata: "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9" "@babel/plugin-transform-block-scoping": "npm:^7.25.9" "@babel/plugin-transform-class-properties": "npm:^7.25.9" - "@babel/plugin-transform-class-static-block": "npm:^7.25.9" + "@babel/plugin-transform-class-static-block": "npm:^7.26.0" "@babel/plugin-transform-classes": "npm:^7.25.9" "@babel/plugin-transform-computed-properties": "npm:^7.25.9" "@babel/plugin-transform-destructuring": "npm:^7.25.9" @@ -1334,6 +1335,7 @@ __metadata: "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" "@babel/plugin-transform-property-literals": "npm:^7.25.9" "@babel/plugin-transform-regenerator": "npm:^7.25.9" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0" "@babel/plugin-transform-reserved-words": "npm:^7.25.9" "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" "@babel/plugin-transform-spread": "npm:^7.25.9" @@ -1352,7 +1354,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b8b391e3fe69918a2a4f4366034113bd6f57c9748974dbe1b807a728bc41434f1e003cb4204ca63a2a01cbb7c05ba96036261b64756243374374353931d346e6 + checksum: 10c0/26e19dc407cfa1c5166be638b4c54239d084fe15d8d7e6306d8c6dc7bc1decc51070a8dcf28352c1a2feeefbe52a06d193a12e302327ad5f529583df75fb7a26 languageName: node linkType: hard @@ -1386,8 +1388,8 @@ __metadata: linkType: hard "@babel/preset-typescript@npm:^7.21.5": - version: 7.25.9 - resolution: "@babel/preset-typescript@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/preset-typescript@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.25.9" "@babel/helper-validator-option": "npm:^7.25.9" @@ -1396,7 +1398,7 @@ __metadata: "@babel/plugin-transform-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/cbcc5b4bf2891e367627338961113febbe58d361e9a03bd2c8340ede914870f74db35ee367cfd8d0fca0872149bfb58b090d0a4815de7c05d0a8abb3d961eead + checksum: 10c0/20d86bc45d2bbfde2f84fc7d7b38746fa6481d4bde6643039ad4b1ff0b804c6d210ee43e6830effd8571f2ff43fa7ffd27369f42f2b3a2518bb92dc86c780c61 languageName: node linkType: hard @@ -1410,11 +1412,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.9 - resolution: "@babel/runtime@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/d1727a47eab67b8a742cbf1ef336a20c3d906fe65d6316d073c72479125addfa4358c44dd7b95d114f241b93409b134fad7cea43f3bf8ca7e2ef344177eb72d8 + checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287 languageName: node linkType: hard @@ -1444,13 +1446,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.25.9 - resolution: "@babel/types@npm:7.25.9" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" dependencies: "@babel/helper-string-parser": "npm:^7.25.9" "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/33890d08bcb06b26a3a60e4c6c996cbdf2b8d8a3c212664de659c2775f80b002c5f2bceedaa309c384ff5e99bd579794fe6a7e41de07df70246f43c55016d349 + checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 languageName: node linkType: hard From dc077437d5daa5e5cb154f0be7878d2fe8028529 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 29 Oct 2024 04:37:43 -0400 Subject: [PATCH 272/550] Misc gem version bumps (#32684) --- Gemfile.lock | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4c9ccaabd1..8fff112872 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -100,8 +100,8 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.992.0) - aws-sdk-core (3.210.0) + aws-partitions (1.997.0) + aws-sdk-core (3.211.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -113,7 +113,7 @@ GEM aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.10.0) + aws-sigv4 (1.10.1) aws-eventstream (~> 1, >= 1.0.2) azure-storage-blob (2.0.3) azure-storage-common (~> 2.0) @@ -179,7 +179,7 @@ GEM bigdecimal rexml crass (1.0.6) - css_parser (1.19.0) + css_parser (1.19.1) addressable csv (3.3.0) database_cleaner-active_record (2.2.0) @@ -231,7 +231,7 @@ GEM erubi (1.13.0) et-orbi (1.2.11) tzinfo - excon (0.111.0) + excon (0.112.0) fabrication (2.31.0) faker (3.5.1) i18n (>= 1.8.11, < 2) @@ -262,7 +262,7 @@ GEM faraday (~> 1.0) fast_blank (1.0.1) fastimage (2.3.1) - ffi (1.16.3) + ffi (1.17.0) ffi-compiler (1.3.2) ffi (>= 1.15.5) rake @@ -351,7 +351,7 @@ GEM rdoc (>= 4.0.0) reline (>= 0.4.2) jmespath (1.6.2) - json (2.7.2) + json (2.7.4) json-canonicalization (1.0.0) json-jwt (1.15.3.1) activesupport (>= 4.2) @@ -412,7 +412,7 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.22.0) + loofah (2.23.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) mail (2.8.1) @@ -436,7 +436,7 @@ GEM mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.25.1) - msgpack (1.7.2) + msgpack (1.7.3) multi_json (1.15.0) multipart-post (2.4.1) mutex_m (0.2.0) @@ -444,7 +444,7 @@ GEM uri net-http-persistent (4.0.2) connection_pool (~> 2.2) - net-imap (0.4.15) + net-imap (0.5.0) date net-protocol net-ldap (0.19.0) @@ -699,9 +699,9 @@ GEM responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.3.8) + rexml (3.3.9) rotp (6.3.0) - rouge (4.3.0) + rouge (4.4.0) rpam2 (4.0.2) rqrcode (2.2.0) chunky_png (~> 1.0) @@ -711,14 +711,14 @@ GEM rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.1) + rspec-core (3.13.2) rspec-support (~> 3.13.0) - rspec-expectations (3.13.2) + rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-github (2.4.0) rspec-core (~> 3.0) - rspec-mocks (3.13.1) + rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-rails (7.0.1) @@ -752,12 +752,12 @@ GEM rubocop-performance (1.22.1) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.26.2) + rubocop-rails (2.27.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.52.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (3.1.0) + rubocop-rspec (3.2.0) rubocop (~> 1.61) rubocop-rspec_rails (2.30.0) rubocop (~> 1.61) From b107fc2e6520579ca2ae8f3d556f88694a8db37f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 29 Oct 2024 04:54:30 -0400 Subject: [PATCH 273/550] Use nil for timestamp column in admin/confirmations spec (#32682) --- spec/controllers/admin/confirmations_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb index 9559160786..59ea0121ca 100644 --- a/spec/controllers/admin/confirmations_controller_spec.rb +++ b/spec/controllers/admin/confirmations_controller_spec.rb @@ -11,7 +11,7 @@ RSpec.describe Admin::ConfirmationsController do describe 'POST #create' do it 'confirms the user' do - user = Fabricate(:user, confirmed_at: false) + user = Fabricate(:user, confirmed_at: nil) post :create, params: { account_id: user.account.id } expect(response).to redirect_to(admin_accounts_path) From d94a367aebc0d047e567697640a41ed12c33d77d Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 29 Oct 2024 10:25:38 +0100 Subject: [PATCH 274/550] Add test coverage for POST /api/v2/media's max description length (#32683) --- spec/requests/api/v2/media_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spec/requests/api/v2/media_spec.rb b/spec/requests/api/v2/media_spec.rb index 70e0679f57..807e427d3f 100644 --- a/spec/requests/api/v2/media_spec.rb +++ b/spec/requests/api/v2/media_spec.rb @@ -29,6 +29,22 @@ RSpec.describe 'Media API', :attachment_processing do end end + context 'when media description is too long' do + let(:params) do + { + file: fixture_file_upload('attachment-jpg.123456_abcd', 'image/jpeg'), + description: 'aa' * MediaAttachment::MAX_DESCRIPTION_LENGTH, + } + end + + it 'returns http error' do + post '/api/v2/media', headers: headers, params: params + + expect(response).to have_http_status(422) + expect(response.body).to include 'Description is too long' + end + end + context 'when large format media attachment has not been processed' do let(:params) { { file: fixture_file_upload('attachment.webm', 'video/webm') } } From 244aaf9a38a31b63624fca9ff89482ce1fec3a90 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:29:22 +0000 Subject: [PATCH 275/550] New Crowdin Translations (automated) (#32687) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ast.json | 1 + app/javascript/mastodon/locales/be.json | 16 +++++++++++++ app/javascript/mastodon/locales/ca.json | 4 ++++ app/javascript/mastodon/locales/da.json | 2 ++ app/javascript/mastodon/locales/de.json | 2 ++ app/javascript/mastodon/locales/eo.json | 6 +++-- app/javascript/mastodon/locales/es-AR.json | 2 ++ app/javascript/mastodon/locales/es-MX.json | 2 ++ app/javascript/mastodon/locales/es.json | 2 ++ app/javascript/mastodon/locales/fi.json | 2 ++ app/javascript/mastodon/locales/fo.json | 2 ++ app/javascript/mastodon/locales/gl.json | 2 +- app/javascript/mastodon/locales/he.json | 2 ++ app/javascript/mastodon/locales/hu.json | 2 ++ app/javascript/mastodon/locales/is.json | 2 ++ app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/lt.json | 2 ++ app/javascript/mastodon/locales/nl.json | 2 ++ app/javascript/mastodon/locales/pl.json | 2 ++ app/javascript/mastodon/locales/pt-BR.json | 2 ++ app/javascript/mastodon/locales/sq.json | 2 ++ app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/tr.json | 2 ++ app/javascript/mastodon/locales/uk.json | 2 ++ app/javascript/mastodon/locales/vi.json | 2 ++ app/javascript/mastodon/locales/zh-CN.json | 2 ++ app/javascript/mastodon/locales/zh-TW.json | 2 ++ config/locales/eo.yml | 26 ++++++++++++++++++++++ config/locales/simple_form.eo.yml | 5 +++++ 29 files changed, 99 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index f2a0c22a77..e5b1168bea 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -214,6 +214,7 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}", "hashtag.follow": "Siguir a la etiqueta", "hashtag.unfollow": "Dexar de siguir a la etiqueta", + "hints.threads.replies_may_be_missing": "Ye posible que falten les rempuestes d'otros sirvidores.", "home.column_settings.show_reblogs": "Amosar los artículos compartíos", "home.column_settings.show_replies": "Amosar les rempuestes", "home.pending_critical_update.body": "¡Anueva'l sirvidor de Mastodon namás que puedas!", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 8423e36ba0..97d4dc4b4c 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -98,6 +98,8 @@ "block_modal.title": "Заблакіраваць карыстальніка?", "block_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.", "boost_modal.combo": "Націсніце {combo}, каб прапусціць наступным разам", + "boost_modal.reblog": "Пашырыць допіс?", + "boost_modal.undo_reblog": "Прыбраць допіс?", "bundle_column_error.copy_stacktrace": "Скапіраваць справаздачу пра памылку", "bundle_column_error.error.body": "Запытаная старонка не можа быць адлюстраваная. Гэта магло стацца праз хібу ў нашым кодзе, або праз памылку сумяшчальнасці з браўзерам.", "bundle_column_error.error.title": "Халера!", @@ -156,6 +158,7 @@ "compose_form.poll.duration": "Працягласць апытання", "compose_form.poll.multiple": "Множны выбар", "compose_form.poll.option_placeholder": "Варыянт {number}", + "compose_form.poll.single": "Адзін варыянт", "compose_form.poll.switch_to_multiple": "Змяніце апытанне, каб дазволіць некалькі варыянтаў адказу", "compose_form.poll.switch_to_single": "Змяніце апытанне, каб дазволіць адзіны варыянт адказу", "compose_form.poll.type": "Стыль", @@ -194,6 +197,7 @@ "confirmations.unfollow.title": "Адпісацца ад карыстальніка?", "content_warning.hide": "Схаваць допіс", "content_warning.show": "Усё адно паказаць", + "content_warning.show_more": "Паказаць усё роўна", "conversation.delete": "Выдаліць размову", "conversation.mark_as_read": "Адзначыць прачытаным", "conversation.open": "Прагледзець размову", @@ -219,6 +223,8 @@ "domain_block_modal.they_cant_follow": "Ніхто з гэтага сервера не зможа падпісацца на вас.", "domain_block_modal.they_wont_know": "Карыстальнік не будзе ведаць пра блакіроўку.", "domain_block_modal.title": "Заблакіраваць дамен?", + "domain_block_modal.you_will_lose_num_followers": "Вы страціце {followersCount, plural, one {{followersCountDisplay} падпісчыка} other {{followersCountDisplay} падпісчыкаў}} і {followingCount, plural, one {{followingCountDisplay} чалавека, на якога падпісаны} other {{followingCountDisplay} людзей, на якіх падпісаны}}.", + "domain_block_modal.you_will_lose_relationships": "Вы страціце ўсех падпісчыкаў і людзей на якіх падпісаны на гэтым.", "domain_block_modal.you_wont_see_posts": "Вы не ўбачыце допісаў і апавяшчэнняў ад карыстальнікаў з гэтага сервера.", "domain_pill.activitypub_lets_connect": "Ён дазваляе вам узаемадзейнічаць не толькі з карыстальнікамі Mastodon, але і розных іншых сацыяльных платформ.", "domain_pill.activitypub_like_language": "ActivityPub — гэта мова, на якой Mastodon размаўляе з іншымі сацыяльнымі сеткамі.", @@ -300,6 +306,7 @@ "filter_modal.select_filter.subtitle": "Скарыстайцеся існуючай катэгорыяй або стварыце новую", "filter_modal.select_filter.title": "Фільтраваць гэты допіс", "filter_modal.title.status": "Фільтраваць допіс", + "filter_warning.matches_filter": "Адпавядае фільтру \"{title}\"", "filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце", "filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні", "firehose.all": "Усе", @@ -349,6 +356,9 @@ "hashtag.follow": "Падпісацца на хэштэг", "hashtag.unfollow": "Адпісацца ад хэштэга", "hashtags.and_other": "…і яшчэ {count, plural, other {#}}", + "hints.profiles.followers_may_be_missing": "Падпісчыкі гэтага профілю могуць адсутнічаць.", + "hints.profiles.follows_may_be_missing": "Падпіскі гэтага профілю могуць адсутнічаць.", + "hints.profiles.posts_may_be_missing": "Некаторыя допісы гэтага профілю могуць адсутнічаць.", "home.column_settings.show_reblogs": "Паказваць пашырэнні", "home.column_settings.show_replies": "Паказваць адказы", "home.hide_announcements": "Схаваць аб'явы", @@ -433,6 +443,7 @@ "lists.subheading": "Вашыя спісы", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", "loading_indicator.label": "Загрузка…", + "media_gallery.hide": "Схаваць", "moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.", "mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў", "mute_modal.hide_options": "Схаваць опцыі", @@ -478,11 +489,13 @@ "notification.favourite": "Ваш допіс упадабаны {name}", "notification.follow": "{name} падпісаўся на вас", "notification.follow_request": "{name} адправіў запыт на падпіску", + "notification.follow_request.name_and_others": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} запыталіся падпісацца на вас", "notification.label.mention": "Згадванне", "notification.label.private_mention": "Асабістае згадванне", "notification.label.private_reply": "Асабісты адказ", "notification.label.reply": "Адказ", "notification.mention": "Згадванне", + "notification.mentioned_you": "{name} згадаў вас", "notification.moderation-warning.learn_more": "Даведацца больш", "notification.moderation_warning": "Вы атрымалі папярэджанне аб мадэрацыі", "notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.", @@ -495,6 +508,7 @@ "notification.own_poll": "Ваша апытанне скончылася", "notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася", "notification.reblog": "{name} пашырыў ваш допіс", + "notification.reblog.name_and_others_with_link": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} абагулілі ваш допіс", "notification.relationships_severance_event": "Страціў сувязь з {name}", "notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.", "notification.relationships_severance_event.domain_block": "Адміністратар з {from} заблакіраваў {target}, у тым ліку {followersCount} вашых падпісчыка(-аў) і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}.", @@ -524,6 +538,7 @@ "notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі", "notifications.column_settings.follow": "Новыя падпісчыкі:", "notifications.column_settings.follow_request": "Новыя запыты на падпіску:", + "notifications.column_settings.group": "Аб'яднаць апавяшчэнні ад падпісчыкаў", "notifications.column_settings.mention": "Згадванні:", "notifications.column_settings.poll": "Вынікі апытання:", "notifications.column_settings.push": "Push-апавяшчэнні", @@ -742,6 +757,7 @@ "status.edit": "Рэдагаваць", "status.edited": "Апошняе рэдагаванне {date}", "status.edited_x_times": "Рэдагавана {count, plural, one {{count} раз} few {{count} разы} many {{count} разоў} other {{count} разу}}", + "status.embed": "Атрымаць убудаваны код", "status.favourite": "Упадабанае", "status.favourites": "{count, plural, one {# упадабанае} few {# упадабаныя} many {# упадабаных} other {# упадабанага}}", "status.filter": "Фільтраваць гэты допіс", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 678f4da175..e5c8440236 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "Deixar de seguir l'usuari?", "content_warning.hide": "Amaga la publicació", "content_warning.show": "Mostra-la igualment", + "content_warning.show_more": "Mostra'n més", "conversation.delete": "Elimina la conversa", "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Mostra la conversa", @@ -305,6 +306,7 @@ "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea'n una de nova", "filter_modal.select_filter.title": "Filtra aquest tut", "filter_modal.title.status": "Filtra un tut", + "filter_warning.matches_filter": "Coincideix amb el filtre “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {De ningú} one {D'una persona} other {De # persones}} que potser coneixes", "filtered_notifications_banner.title": "Notificacions filtrades", "firehose.all": "Tots", @@ -384,6 +386,7 @@ "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre els seus tuts en la teva línia de temps d'Inici.", "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquest tut per a compartir-lo amb els teus seguidors.", "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquest tut.", + "interaction_modal.description.vote": "Si teniu compte a Mastodon, podeu votar aquesta enquesta.", "interaction_modal.login.action": "Torna a l'inici", "interaction_modal.login.prompt": "Domini del teu servidor domèstic, p.ex. mastodon.social", "interaction_modal.no_account_yet": "No a Mastodon?", @@ -395,6 +398,7 @@ "interaction_modal.title.follow": "Segueix {name}", "interaction_modal.title.reblog": "Impulsa el tut de {name}", "interaction_modal.title.reply": "Respon al tut de {name}", + "interaction_modal.title.vote": "Voteu l'enquesta de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index f8a1f2ad65..5531576447 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -385,6 +385,7 @@ "interaction_modal.description.follow": "Med en konto på Mastodon kan du følge {name} for at modtage vedkommendes indlæg i dit hjemmefeed.", "interaction_modal.description.reblog": "Med en konto på Mastodon kan dette indlæg fremhæves så det deles med egne følgere.", "interaction_modal.description.reply": "Med en konto på Mastodon kan dette indlæg besvares.", + "interaction_modal.description.vote": "Med en konto på Mastodon kan man deltage i denne afstemning.", "interaction_modal.login.action": "Gå til hjemmeserver", "interaction_modal.login.prompt": "Hjemmeserverdomænet, f.eks. mastodon.social", "interaction_modal.no_account_yet": "Ikke på Mastodon?", @@ -396,6 +397,7 @@ "interaction_modal.title.follow": "Følg {name}", "interaction_modal.title.reblog": "Boost {name}s indlæg", "interaction_modal.title.reply": "Besvar {name}s indlæg", + "interaction_modal.title.vote": "Deltag i {name}s afstemning", "intervals.full.days": "{number, plural, one {# dag} other {# dage}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index a02f13aef0..1d59b14724 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Mit einem Mastodon-Konto kannst du {name} folgen, um die Beiträge auf deiner Startseite zu sehen.", "interaction_modal.description.reblog": "Mit einem Mastodon-Konto kannst du die Reichweite dieses Beitrags erhöhen, indem du ihn mit deinen Followern teilst.", "interaction_modal.description.reply": "Mit einem Mastodon-Konto kannst du auf diesen Beitrag antworten.", + "interaction_modal.description.vote": "Mit einem Mastodon-Konto kannst du an dieser Umfrage teilnehmen.", "interaction_modal.login.action": "Zurück zur Startseite", "interaction_modal.login.prompt": "Adresse deines Servers, z. B. mastodon.social", "interaction_modal.no_account_yet": "Nicht auf Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Folge {name}", "interaction_modal.title.reblog": "Beitrag von {name} teilen", "interaction_modal.title.reply": "Auf Beitrag von {name} antworten", + "interaction_modal.title.vote": "An der Umfrage von {name} teilnehmen", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 0c91182285..7abe0783c3 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povas sekvi {name} por ricevi iliajn afiŝojn en via hejma fluo.", "interaction_modal.description.reblog": "Kun konto ĉe Mastodon, vi povas diskonigi ĉi tiun afiŝon, por ke viaj propraj sekvantoj vidu ĝin.", "interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu afiŝo.", + "interaction_modal.description.vote": "Kun konto ĉe Mastodon, vi povas voĉdoni en ĉi tiu balotenketo.", "interaction_modal.login.action": "Prenu min hejmen", "interaction_modal.login.prompt": "Domajno de via hejma servilo, ekz. mastodon.social", "interaction_modal.no_account_yet": "Ĉu ne estas ĉe Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Sekvi {name}", "interaction_modal.title.reblog": "Akceli la afiŝon de {name}", "interaction_modal.title.reply": "Respondi al la afiŝo de {name}", + "interaction_modal.title.vote": "Voĉdonu en la balotenketo de {name}", "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", @@ -527,7 +529,7 @@ "notification.moderation_warning.action_sensitive": "Viaj afiŝoj estos markitaj kiel sentemaj ekde nun.", "notification.moderation_warning.action_silence": "Via konto estis limigita.", "notification.moderation_warning.action_suspend": "Via konto estas malakceptita.", - "notification.own_poll": "Via enketo finiĝis", + "notification.own_poll": "Via balotenketo finiĝitis", "notification.poll": "Balotenketo, en kiu vi voĉdonis, finiĝis", "notification.reblog": "{name} diskonigis vian afiŝon", "notification.reblog.name_and_others_with_link": "{name} kaj {count, plural, one {# alia} other {# aliaj}} diskonigis vian afiŝon", @@ -659,7 +661,7 @@ "poll.total_people": "{count, plural, one {# homo} other {# homoj}}", "poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}", "poll.vote": "Voĉdoni", - "poll.voted": "Vi elektis por ĉi tiu respondo", + "poll.voted": "Vi voĉdonis por ĉi tiu respondo", "poll.votes": "{votes, plural, one {# voĉdono} other {# voĉdonoj}}", "poll_button.add_poll": "Aldoni balotenketon", "poll_button.remove_poll": "Forigi balotenketon", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 55e64faba5..e1803aabda 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Con una cuenta en Mastodon, podés seguir a {name} para recibir sus mensajes en tu línea temporal principal.", "interaction_modal.description.reblog": "Con una cuenta en Mastodon, podés adherir a este mensaje para compartirlo con tus propios seguidores.", "interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.", + "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.", "interaction_modal.login.action": "Llevame al comienzo", "interaction_modal.login.prompt": "Dominio de su servidor de inicio, p. ej., mastodon.social", "interaction_modal.no_account_yet": "¿No tenés cuenta en Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Adherir al mensaje de {name}", "interaction_modal.title.reply": "Responder al mensaje de {name}", + "interaction_modal.title.vote": "Vota en la encuesta de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index f4e0352450..af2bd0e528 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu fuente de inicio.", "interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.", "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", + "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.", "interaction_modal.login.action": "Ir a Inicio", "interaction_modal.login.prompt": "Dominio de tu servidor, por ejemplo: mastodon.social", "interaction_modal.no_account_yet": "¿Aún no tienes cuenta en Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Impulsar la publicación de {name}", "interaction_modal.title.reply": "Responder la publicación de {name}", + "interaction_modal.title.vote": "Vota en la encuesta de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 30a4b91fa2..dea526f8a0 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.", "interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.", "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", + "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.", "interaction_modal.login.action": "Ir a Inicio", "interaction_modal.login.prompt": "Dominio de tu servidor, por ejemplo mastodon.social", "interaction_modal.no_account_yet": "¿Aún no tienes cuenta en Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Impulsar la publicación de {name}", "interaction_modal.title.reply": "Responder a la publicación de {name}", + "interaction_modal.title.vote": "Vota en la encuesta de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 37f3b87e84..0455e4df29 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.", "interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.", "interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.", + "interaction_modal.description.vote": "Mastodon-tilillä voit osallistua tähän äänestykseen.", "interaction_modal.login.action": "Siirry kotiin", "interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus, kuten mastodon.social", "interaction_modal.no_account_yet": "Etkö ole vielä Mastodonissa?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seuraa käyttäjää {name}", "interaction_modal.title.reblog": "Tehosta käyttäjän {name} julkaisua", "interaction_modal.title.reply": "Vastaa käyttäjän {name} julkaisuun", + "interaction_modal.title.vote": "Osallistu käyttäjän {name} äänestykseen", "intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}", "intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}", "intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 921f38468c..e15385725a 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Við eini kontu á Mastodon kanst tú fylgja {name} fyri at síggja teirra postar á tíni heimarás.", "interaction_modal.description.reblog": "Við eini kontu á Mastodon kanst tú stimbra hendan postin og soleiðis deila hann við tínar fylgjarar.", "interaction_modal.description.reply": "Við eini kontu á Mastodon, so kanst tú svara hesum posti.", + "interaction_modal.description.vote": "Við eini kontu á Mastodon, so kanst tú atkvøða í hesi spurnarkanningini.", "interaction_modal.login.action": "Tak meg heim", "interaction_modal.login.prompt": "Navnaøki hjá tínum heimaambætara, t.d. mastodon.social", "interaction_modal.no_account_yet": "Ikki á Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Fylg {name}", "interaction_modal.title.reblog": "Stimbra postin hjá {name}", "interaction_modal.title.reply": "Svara postinum hjá {name}", + "interaction_modal.title.vote": "Atkvøði í spurnarkanningini hjá {name}", "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# tími} other {# tímar}}", "intervals.full.minutes": "{number, plural, one {# minuttur} other {# minuttir}}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index a772dbc0f7..822666ad8c 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -452,7 +452,7 @@ "lists.exclusive": "Agocha estas publicacións no Inicio", "lists.new.create": "Engadir listaxe", "lists.new.title_placeholder": "Título da nova listaxe", - "lists.replies_policy.followed": "Toda usuaria seguida", + "lists.replies_policy.followed": "Calquera usuaria que siga", "lists.replies_policy.list": "Membros da lista", "lists.replies_policy.none": "Ninguén", "lists.replies_policy.title": "Mostrar respostas a:", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 087eed9030..ed08a9aba3 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הפוסטים שלו/ה בפיד הבית.", "interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את החצרוץ ולשתף עם עוקבים.", "interaction_modal.description.reply": "עם חשבון מסטודון, ניתן לענות לחצרוץ.", + "interaction_modal.description.vote": "עם חשבון מסטודון, ניתן להצביע בסקר.", "interaction_modal.login.action": "קח אותי לדף הבית", "interaction_modal.login.prompt": "שם השרת שלך, למשל mastodon.social", "interaction_modal.no_account_yet": "עדיין לא במסטודון?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "לעקוב אחרי {name}", "interaction_modal.title.reblog": "להדהד את החצרוץ של {name}", "interaction_modal.title.reply": "תשובה לחצרוץ של {name}", + "interaction_modal.title.vote": "הצביעו בסקר של {name}", "intervals.full.days": "{number, plural, one {# יום} other {# ימים}}", "intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}", "intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index af0d83954d..0933a7c256 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Egy Mastodon-fiókkal követheted {name} fiókját, hogy lásd a bejegyzéseit a kezdőlapodon.", "interaction_modal.description.reblog": "Egy Mastodon fiókkal megtolhatod ezt a bejegyzést, hogy megoszd a saját követőiddel.", "interaction_modal.description.reply": "Egy Mastodon fiókkal válaszolhatsz erre a bejegyzésre.", + "interaction_modal.description.vote": "Egy Mastodon fiókkal szavazhatsz ebben a szavazásban.", "interaction_modal.login.action": "Vigyen haza", "interaction_modal.login.prompt": "A saját kiszolgálód tartományneve, pl.: mastodon.social", "interaction_modal.no_account_yet": "Nem vagy Mastodonon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "{name} követése", "interaction_modal.title.reblog": "{name} bejegyzésének megtolása", "interaction_modal.title.reply": "Válasz {name} bejegyzésére", + "interaction_modal.title.vote": "Szavazz {name} szavazásában", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index d1601c7634..8c87298910 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Með notandaaðgangi á Mastodon geturðu fylgst með {name} og fengið færslur frá viðkomandi í heimastreymið þitt.", "interaction_modal.description.reblog": "Með notandaaðgangi á Mastodon geturðu endurbirt þessa færslu til að deila henni með þeim sem fylgjast með þér.", "interaction_modal.description.reply": "Með notandaaðgangi á Mastodon geturðu svarað þessari færslu.", + "interaction_modal.description.vote": "Þú getur greitt atkvæði í þessari könnun ef þú ert með aðgang á Mastodon.", "interaction_modal.login.action": "Fara á heimastreymið mitt", "interaction_modal.login.prompt": "Lén heimanetþjónsins þíns, t.d. mastodon.social", "interaction_modal.no_account_yet": "Ekki á Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Fylgjast með {name}", "interaction_modal.title.reblog": "Endurbirta færsluna frá {name}", "interaction_modal.title.reply": "Svara færslunni frá {name}", + "interaction_modal.title.vote": "Greiða atkvæði í könnun á vegum {name}", "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}", "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 532fc01ab1..3462675e3e 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -352,7 +352,7 @@ "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", "hashtag.counter_by_accounts": "{count, plural, other {참여자 {counter}명}}", "hashtag.counter_by_uses": "{count, plural, other {게시물 {counter}개}}", - "hashtag.counter_by_uses_today": "금일 {count, plural, other {게시물 {counter}개}}", + "hashtag.counter_by_uses_today": "오늘 {count, plural, other {{counter} 개의 게시물}}", "hashtag.follow": "해시태그 팔로우", "hashtag.unfollow": "해시태그 팔로우 해제", "hashtags.and_other": "…및 {count, plural,other {#개}}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index b2740b0165..7d53c2702f 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Su Mastodon paskyra gali sekti {name}, kad gautum jų įrašus į pagrindinį srautą.", "interaction_modal.description.reblog": "Su Mastodon paskyra gali pakelti šią įrašą ir pasidalyti juo su savo sekėjais.", "interaction_modal.description.reply": "Su Mastodon paskyra gali atsakyti į šį įrašą.", + "interaction_modal.description.vote": "Su „Mastodon“ paskyra galite balsuoti šioje apklausoje.", "interaction_modal.login.action": "Į pagrindinį puslapį", "interaction_modal.login.prompt": "Tavo pagrindinio serverio domenas, pvz., mastodon.social.", "interaction_modal.no_account_yet": "Nesi Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Sekti {name}", "interaction_modal.title.reblog": "Pakelti {name} įrašą", "interaction_modal.title.reply": "Atsakyti į {name} įrašą", + "interaction_modal.title.vote": "Balsuoti {name} apklausoje", "intervals.full.days": "{number, plural, one {# diena} few {# dienos} many {# dienos} other {# dienų}}", "intervals.full.hours": "{number, plural, one {# valanda} few {# valandos} many {# valandos} other {# valandų}}", "intervals.full.minutes": "{number, plural, one {# minutė} few {# minutes} many {# minutės} other {# minučių}}", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index e7add2e8c7..9f265782e1 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Je kunt met een Mastodon-account {name} volgen, om zo diens berichten op jouw starttijdlijn te ontvangen.", "interaction_modal.description.reblog": "Je kunt met een Mastodon-account dit bericht boosten, om het zo met jouw volgers te delen.", "interaction_modal.description.reply": "Je kunt met een Mastodon-account op dit bericht reageren.", + "interaction_modal.description.vote": "Met een Mastodon-account kun je stemmen in deze peiling.", "interaction_modal.login.action": "Ga naar start", "interaction_modal.login.prompt": "Domein van jouw server, bv. mastodon.social", "interaction_modal.no_account_yet": "Niet op Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "{name} volgen", "interaction_modal.title.reblog": "Bericht van {name} boosten", "interaction_modal.title.reply": "Op het bericht van {name} reageren", + "interaction_modal.title.vote": "Stemmen in {name}'s peiling", "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}", "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}", "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 5867d6c1a0..c521fabf39 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Mając konto na Mastodonie, możesz śledzić {name} by widzieć jego wpisy na swojej głównej osi czasu.", "interaction_modal.description.reblog": "Mając konto na Mastodonie, możesz podbić ten wpis i udostępnić go Twoim obserwującym.", "interaction_modal.description.reply": "Mając konto na Mastodonie, możesz odpowiedzieć na ten wpis.", + "interaction_modal.description.vote": "Mając konto na Mastodonie, możesz wziąć udział w tym głosowaniu.", "interaction_modal.login.action": "Wróć na stronę główną", "interaction_modal.login.prompt": "Domena twojego serwera domowego, np. \"mastodon.social\"", "interaction_modal.no_account_yet": "Nie masz konta na Mastodonie?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Śledź {name}", "interaction_modal.title.reblog": "Podbij wpis {name}", "interaction_modal.title.reply": "Odpowiedz na post {name}", + "interaction_modal.title.vote": "Weź udział w głosowaniu {name}", "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 28c6a07e01..c620933abe 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações na sua página inicial.", "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar esta publicação para compartilhá-lo com seus próprios seguidores.", "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder a esta publicação.", + "interaction_modal.description.vote": "Com uma conta no Mastodon, você pode votar nesta enquete.", "interaction_modal.login.action": "Leve-me para casa", "interaction_modal.login.prompt": "Domínio do seu servidor hospedeiro; por exemplo, mastodon.social", "interaction_modal.no_account_yet": "Ainda não está no Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seguir {name}", "interaction_modal.title.reblog": "Impulsionar publicação de {name}", "interaction_modal.title.reply": "Responder à publicação de {name}", + "interaction_modal.title.vote": "Votar na enquete de {name}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index c0199d0078..410d7c2ef3 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Me një llogari në Mastodon, mund ta ndiqni {name} për të marrë postimet e tyre në prurjen tuaj të kreut.", "interaction_modal.description.reblog": "Me një llogari në Mastodon, mund ta përforconi këtë postim për ta ndarë me ndjekësit tuaj.", "interaction_modal.description.reply": "Me një llogari në Mastodon, mund t’i përgjigjeni këtij postimi.", + "interaction_modal.description.vote": "Me një llogari në Mastodon, mund të votoni në këtë pyetësor.", "interaction_modal.login.action": "Shpjemëni në shtëpi", "interaction_modal.login.prompt": "Përkatësia e shërbyesit tuaj vatër, p.sh. mastodon.social", "interaction_modal.no_account_yet": "S’gjendeni në Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Ndiq {name}", "interaction_modal.title.reblog": "Përforconi postimin e {name}", "interaction_modal.title.reply": "Përgjigjuni postimit të {name}", + "interaction_modal.title.vote": "Votoni te pyetësori nga {name}", "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}", "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}", "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index eae02649a1..304535a67c 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se hens inlägg i ditt hemflöde.", "interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.", "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", + "interaction_modal.description.vote": "Med ett konto på Mastodon kan du delta i denna omröstning.", "interaction_modal.login.action": "Ta hem mig", "interaction_modal.login.prompt": "Domän för din hemserver, t.ex. mastodon.social", "interaction_modal.no_account_yet": "Inte på Mastodon?", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index fbbe76b431..5ac5a3368b 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Mastodon'daki bir hesapla, {name} kişisini, ana akışınızdaki gönderilerini görmek üzere takip edebilirsiniz.", "interaction_modal.description.reblog": "Mastodon'daki bir hesapla, bu gönderiyi takipçilerinizle paylaşmak için tuşlayabilirsiniz.", "interaction_modal.description.reply": "Mastodon'daki bir hesapla, bu gönderiye yanıt verebilirsiniz.", + "interaction_modal.description.vote": "Mastodon'daki bir hesapla, bu ankette oy kullanabilirsiniz.", "interaction_modal.login.action": "Anasayfaya geri dön", "interaction_modal.login.prompt": "Ev sunucunuzun etki alanı, örneğin mastodon.social", "interaction_modal.no_account_yet": "Mastodon açık değil?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "{name} kişisini takip et", "interaction_modal.title.reblog": "{name} kişisinin gönderisini yeniden paylaş", "interaction_modal.title.reply": "{name} kişisinin gönderisine yanıt ver", + "interaction_modal.title.vote": "{name} kullanıcısının anketinde oy kullan", "intervals.full.days": "{number, plural, one {# gün} other {# gün}}", "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}", "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 9afa5816aa..fc396aa933 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Маючи обліковий запис на Mastodon, ви можете підписатися на {name}, щоб отримувати дописи цього користувача у свою стрічку.", "interaction_modal.description.reblog": "Маючи обліковий запис на Mastodon, ви можете поширити цей допис, щоб поділитися ним зі своїми підписниками.", "interaction_modal.description.reply": "Маючи обліковий запис на Mastodon, ви можете відповісти на цей допис.", + "interaction_modal.description.vote": "Маючи обліковий запис на Mastodon, ви можете проголосувати в цьому опитуванні.", "interaction_modal.login.action": "На домашню сторінку", "interaction_modal.login.prompt": "Домен вашого домашнього сервера, наприклад, mastodon.social", "interaction_modal.no_account_yet": "Не зареєстровані в Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Підписатися на {name}", "interaction_modal.title.reblog": "Поширити допис {name}", "interaction_modal.title.reply": "Відповісти на допис {name}", + "interaction_modal.title.vote": "Проголосувати в опитуванні {name}", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 0fcd3e43dd..7ae955c1b0 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.", "interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.", "interaction_modal.description.reply": "Với tài khoản Mastodon, bạn có thể trả lời tút này.", + "interaction_modal.description.vote": "Với tài khoản Mastodon, bạn có thể tham gia bình chọn.", "interaction_modal.login.action": "Đăng nhập ngay", "interaction_modal.login.prompt": "Địa chỉ máy chủ của bạn, vd: mastodon.social", "interaction_modal.no_account_yet": "Chưa có tài khoản Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Theo dõi {name}", "interaction_modal.title.reblog": "Đăng lại tút của {name}", "interaction_modal.title.reply": "Trả lời tút của {name}", + "interaction_modal.title.vote": "Bình chọn cùng {name}", "intervals.full.days": "{number, plural, other {# ngày}}", "intervals.full.hours": "{number, plural, other {# giờ}}", "intervals.full.minutes": "{number, plural, other {# phút}}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index f8da5933ae..1c233a6403 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你可以关注 {name} 并在自己的主页上接收对方的新嘟文。", "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你可以向自己的关注者们转发此嘟文。", "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。", + "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你可以参与此投票。", "interaction_modal.login.action": "转到主页", "interaction_modal.login.prompt": "您所入驻的服务器域名,如:mastodon.social", "interaction_modal.no_account_yet": "不在 Mastodon 上?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "关注 {name}", "interaction_modal.title.reblog": "转发 {name} 的嘟文", "interaction_modal.title.reply": "回复 {name} 的嘟文", + "interaction_modal.title.vote": "参与 {name} 的投票", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 8903573dec..a3de26ffc4 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "若於 Mastodon 上有個帳號,您可以跟隨 {name} 以於首頁時間軸接收他們的嘟文。", "interaction_modal.description.reblog": "若於 Mastodon 上有個帳號,您可以轉嘟此嘟文以向您的跟隨者們分享。", "interaction_modal.description.reply": "若於 Mastodon 上有個帳號,您可以回覆此嘟文。", + "interaction_modal.description.vote": "若於 Mastodon 上有個帳號,您可以參與此投票。", "interaction_modal.login.action": "返回首頁", "interaction_modal.login.prompt": "您帳號所屬伺服器之網域,例如:mastodon.social", "interaction_modal.no_account_yet": "還沒有 Mastodon 帳號嗎?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "跟隨 {name}", "interaction_modal.title.reblog": "轉嘟 {name} 的嘟文", "interaction_modal.title.reply": "回覆 {name} 的嘟文", + "interaction_modal.title.vote": "參與 {name} 之投票", "intervals.full.days": "{number, plural, other {# 天}}", "intervals.full.hours": "{number, plural, other {# 小時}}", "intervals.full.minutes": "{number, plural, other {# 分鐘}}", diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 3d63ecd01d..f21e0bc724 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -531,6 +531,7 @@ eo: total_reported: Signaloj pri ili total_storage: Aŭdovidaj kunsendaĵoj totals_time_period_hint_html: Sumo montritas malsupre inkluzivas datumo ekde komenco. + unknown_instance: Nuntempe ne ekzistas registro pri ĉi tiu domajno sur ĉi tiu servilo. invites: deactivate_all: Malaktivigi ĉion filter: @@ -763,6 +764,7 @@ eo: disabled: Al neniu users: Al salutintaj lokaj uzantoj registrations: + moderation_recommandation: Bonvolu certigi, ke vi havas taŭgan kaj reaktivan moderigan teamon antaŭ ol vi malfermas registriĝojn al ĉiuj! preamble: Regi kiu povas krei konton ĉe via servilo. title: Registriĝoj registrations_mode: @@ -772,6 +774,7 @@ eo: open: Iu povas aliĝi security: authorized_fetch: Devigi aŭtentigon de frataraj serviloj + authorized_fetch_overridden_hint: Vi nuntempe ne povas ŝanĝi ĉi tiun agordon ĉar ĝi estas anstataŭita de mediovariablo. title: Agordoj de la servilo site_uploads: delete: Forigi elŝutitan dosieron @@ -856,7 +859,12 @@ eo: message_html: "Via objektostokado estas misagordita. La privateco de viaj uzantoj estas en risko." tags: moderation: + not_usable: Ne uzebla + review_requested: Revizio petita + reviewed: Reviziita title: Stato + unreviewed: Nereviziita + usable: Uzebla name: Nomo newest: Plej novaj oldest: Plej malnovaj @@ -1039,6 +1047,7 @@ eo: hint_html: Nur unu plia afero! Ni devas konfirmi, ke vi estas homo (tio estas por ke ni povu konservi la spamon ekstere!). Solvu la CAPTCHA sube kaj alklaku "Daŭrigu". title: Sekureckontrolo confirmations: + awaiting_review_title: Via registriĝo estas reviziita clicking_this_link: alklakante ĉi tiun ligilon login_link: ensaluti registration_complete: Via registriĝo sur %{domain} nun finiĝis! @@ -1104,8 +1113,11 @@ eo: use_security_key: Uzi sekurecan ŝlosilon author_attribution: example_title: Ekzempla teksto + hint_html: Ĉu vi skribas novaĵojn aŭ blogartikolojn ekster Mastodon? Kontrolu kiel vi estas kreditita kiam ili estas kunhavataj ĉe Mastodon. + instructions: 'Certigu, ke ĉi tiu kodo estas en la HTML de via artikolo:' more_from_html: Pli de %{name} s_blog: Blogo de %{name} + then_instructions: Poste, aldonu la domajnan nomon de la publikigado en la suba kampo. title: Atribuo de aŭtoro challenge: confirm: Daŭrigi @@ -1504,6 +1516,7 @@ eo: unrecognized_emoji: ne estas rekonita emoĝio redirects: prompt: Se vi fidas ĉi tiun ligon, alklaku ĝin por daŭrigi. + title: Vi foriras %{instance}. relationships: activity: Konta aktiveco confirm_follow_selected_followers: Ĉu vi certas ke vi volas sekvi la elektitajn sekvantojn? @@ -1699,6 +1712,7 @@ eo: contrast: Mastodon (Forta kontrasto) default: Mastodon (Malhela) mastodon-light: Mastodon (Hela) + system: Aŭtomata (uzu sisteman temon) time: formats: default: "%Y.%b.%d, %H:%M" @@ -1737,6 +1751,10 @@ eo: extra: Estas nun preta por elŝuto! subject: Via arkivo estas preta por elŝutado title: Arkiva elŝuto + failed_2fa: + explanation: Iu provis ensaluti al via konto sed provizis nevalidan duan aŭtentikigfaktoron. + further_actions_html: Se ĉi tio ne estis vi, ni rekomendas ke vi %{action} tuj ĉar ĝi povas esti endanĝerigita. + subject: Malsukceso dum la dua aŭtentikigfaktoro suspicious_sign_in: change_password: ŝanĝi vian pasvorton details: 'Ĉi-sube estas detaloj pri la saluto:' @@ -1776,6 +1794,8 @@ eo: silence: Konto limigita suspend: Konto suspendita welcome: + apps_android_action: Akiru ĝin ĉe Google Play + apps_ios_action: Elŝutu ĉe la App Store apps_step: Elŝutu niajn oficialajn aplikaĵojn. apps_title: Aplikaĵoj de Mastodon edit_profile_action: Agordi @@ -1783,9 +1803,14 @@ eo: explanation: Jen kelkaj konsiloj por helpi vin komenci feature_action: Lerni pli follow_action: Sekvi + follow_step: Sekvi interesajn homojn estas pri kio Mastodon temas. + follows_subtitle: Sekvu konatajn kontojn + follows_title: Kiun sekvi + follows_view_more: Rigardu pli da homoj por sekvi hashtags_recent_count: one: "%{people} homo en la pasintaj 2 tagoj" other: "%{people} homoj en la pasintaj 2 tagoj" + hashtags_subtitle: Esploru kio estas tendenco ekde la pasintaj 2 tagoj hashtags_title: Popularaj kradvortoj hashtags_view_more: Vidi pli da popularaj kradvortoj post_action: Redakti @@ -1811,6 +1836,7 @@ eo: instructions_html: Kopiu kaj algluu la jenan kodon en la HTML de via retejo. Poste aldonu la adreson de via retejo en unu el la kromaj kampoj de via profilo en la langeto "Redakti profilon" kaj konservu la ŝanĝojn. verification: Kontrolo verified_links: Via kontrolitaj ligiloj + website_verification: Reteja konfirmo webauthn_credentials: add: Aldoni novan sekurecan ŝlosilon create: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 184f1120bd..f8a5776835 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -40,12 +40,14 @@ eo: text: Oni povas apelaci strikin nur unufoje defaults: autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin + avatar: WEBP, PNG, GIF aŭ JPG. Maksimume %{size}. Malgrandiĝos al %{dimensions}px bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi current_password: Pro sekuraj kialoj, bonvolu enigi la pasvorton de la nuna konto current_username: Por konfirmi, bonvolu enigi la uzantnomon de la nuna konto digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto email: Vi ricevos konfirman retpoŝton + header: WEBP, PNG, GIF aŭ JPG. Maksimume %{size}. Malgrandiĝos al %{dimensions}px inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi irreversible: La filtritaj mesaĝoj malaperos por eterne, eĉ se la filtrilo poste estas forigita locale: La lingvo de la fasado, retpoŝtaĵoj, kaj sciigoj @@ -76,12 +78,15 @@ eo: warn: Kaŝi la enhavon filtritan malantaŭ averto mencianta la nomon de la filtro form_admin_settings: activity_api_enabled: Nombroj de loke publikigitaj afiŝoj, aktivaj uzantoj kaj novaj registradoj en semajnaj siteloj + app_icon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan aplikaĵan bildsimbolon sur porteblaj aparatoj kun propra bildsimbolo. backups_retention_period: Uzantoj havas la kapablon generi arkivojn de siaj afiŝoj por elŝuti poste. Kiam estas agordita al pozitiva valoro, ĉi tiuj arkivoj estos aŭtomate forigitaj de via stokado post la specifita nombro da tagoj. bootstrap_timeline_accounts: Ĉi tiuj kontoj pinglitas al la supro de sekvorekomendoj de novaj uzantoj. closed_registrations_message: Montrita kiam registroj fermitas + content_cache_retention_period: Ĉiuj afiŝoj de aliaj serviloj (inkluzive de diskonigoj kaj respondoj) estos forigitaj post la specifita nombro da tagoj, sen konsidero al iu ajn loka uzantinterago kun tiuj afiŝoj. Ĉi tio inkluzivas afiŝojn, kie loka uzanto markis ĝin kiel legosignojn aŭ ŝatatajn. Privataj mencioj inter uzantoj de malsamaj nodoj ankaŭ estos perditaj kaj neeble restaŭreblaj. Uzo de ĉi tiu agordo estas celita por specialcelaj okazoj kaj rompas multajn uzantajn atendojn kiam efektivigita por ĝenerala uzo. custom_css: Vi povas meti propajn stilojn en la retversio de Mastodon. favicon: WEBP, PNG, GIF aŭ JPG. Anstataŭigas la defaŭltan Mastodon-favikono kun propra bildsimbolo. mascot: Anstatauigi la ilustraĵon en la altnivela retinterfaco. + media_cache_retention_period: Amaskomunikilaj dosieroj de afiŝoj faritaj de foraj uzantoj estas konservitaj en kaŝmemoro en via servilo. Kiam agordita al pozitiva valoro, amaskomunikilaro estos forigita post la specifita nombro da tagoj. Se la amaskomunikilaro-datumoj estas petitaj post kiam ĝi estas forigita, ĝi estos re-elŝutita, se la fonta enhavo ankoraŭ disponeblas. Pro limigoj pri kiom ofte ligaj antaŭrigardaj kartoj enketas retejojn de ekstera liveranto, oni rekomendas agordi ĉi tiun valoron al almenaŭ 14 tagoj, aŭ ligaj antaŭrigardaj kartoj ne estos ĝisdatigitaj laŭpostule antaŭ tiu tempo. peers_api_enabled: Listo de domajnaj nomoj kiujn ĉi tiu servilo renkontis en la fediverso. Neniuj datumoj estas inkluditaj ĉi tie pri ĉu vi federacias kun donita servilo, nur ke via servilo scias pri ĝi. Ĉi tio estas uzata de servoj kiuj kolektas statistikojn pri federacio en ĝenerala signifo. profile_directory: La profilujo listigas ĉiujn uzantojn kiu volonte malkovrebli. require_invite_text: Kiam registroj bezonas permanan aprobon, igi la "Kial vi volas aliĝi?" tekstoenigon deviga anstau nedeviga From 9de3fd60a012c69070a3371efec9c9fd54d9071a Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 29 Oct 2024 11:10:17 +0100 Subject: [PATCH 276/550] Add telemetry for status / bio formatting (#32677) --- app/helpers/formatting_helper.rb | 18 ++++++- app/lib/text_formatter.rb | 87 ++++++++++++++++++-------------- 2 files changed, 66 insertions(+), 39 deletions(-) diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index 2ef7d362d8..9d5a2e2478 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -27,7 +27,14 @@ module FormattingHelper module_function :extract_status_plain_text def status_content_format(status) - html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [])) + MastodonOTELTracer.in_span('HtmlAwareFormatter rendering') do |span| + span.add_attributes( + 'app.formatter.content.type' => 'status', + 'app.formatter.content.origin' => status.local? ? 'local' : 'remote' + ) + + html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [])) + end end def rss_status_content_format(status) @@ -39,7 +46,14 @@ module FormattingHelper end def account_bio_format(account) - html_aware_format(account.note, account.local?) + MastodonOTELTracer.in_span('HtmlAwareFormatter rendering') do |span| + span.add_attributes( + 'app.formatter.content.type' => 'account_bio', + 'app.formatter.content.origin' => account.local? ? 'local' : 'remote' + ) + + html_aware_format(account.note, account.local?) + end end def account_field_value_format(field, with_rel_me: true) diff --git a/app/lib/text_formatter.rb b/app/lib/text_formatter.rb index 2b3febc219..5e8e73a217 100644 --- a/app/lib/text_formatter.rb +++ b/app/lib/text_formatter.rb @@ -33,17 +33,24 @@ class TextFormatter def to_s return ''.html_safe if text.blank? - html = rewrite do |entity| - if entity[:url] - link_to_url(entity) - elsif entity[:hashtag] - link_to_hashtag(entity) - elsif entity[:screen_name] - link_to_mention(entity) + html = nil + MastodonOTELTracer.in_span('TextFormatter#to_s extract_and_rewrite') do + html = rewrite do |entity| + if entity[:url] + link_to_url(entity) + elsif entity[:hashtag] + link_to_hashtag(entity) + elsif entity[:screen_name] + link_to_mention(entity) + end end end - html = simple_format(html, {}, sanitize: false).delete("\n") if multiline? + if multiline? + MastodonOTELTracer.in_span('TextFormatter#to_s simple_format') do + html = simple_format(html, {}, sanitize: false).delete("\n") + end + end html.html_safe # rubocop:disable Rails/OutputSafety end @@ -93,48 +100,54 @@ class TextFormatter end def link_to_url(entity) - TextFormatter.shortened_link(entity[:url], rel_me: with_rel_me?) + MastodonOTELTracer.in_span('TextFormatter#link_to_url') do + TextFormatter.shortened_link(entity[:url], rel_me: with_rel_me?) + end end def link_to_hashtag(entity) - hashtag = entity[:hashtag] - url = tag_url(hashtag) + MastodonOTELTracer.in_span('TextFormatter#link_to_hashtag') do + hashtag = entity[:hashtag] + url = tag_url(hashtag) - <<~HTML.squish - - HTML + <<~HTML.squish + + HTML + end end def link_to_mention(entity) - username, domain = entity[:screen_name].split('@') - domain = nil if local_domain?(domain) - account = nil + MastodonOTELTracer.in_span('TextFormatter#link_to_mention') do + username, domain = entity[:screen_name].split('@') + domain = nil if local_domain?(domain) + account = nil - if preloaded_accounts? - same_username_hits = 0 + if preloaded_accounts? + same_username_hits = 0 - preloaded_accounts.each do |other_account| - same_username = other_account.username.casecmp(username).zero? - same_domain = other_account.domain.nil? ? domain.nil? : other_account.domain.casecmp(domain)&.zero? + preloaded_accounts.each do |other_account| + same_username = other_account.username.casecmp(username).zero? + same_domain = other_account.domain.nil? ? domain.nil? : other_account.domain.casecmp(domain)&.zero? - if same_username && !same_domain - same_username_hits += 1 - elsif same_username && same_domain - account = other_account + if same_username && !same_domain + same_username_hits += 1 + elsif same_username && same_domain + account = other_account + end end + else + account = entity_cache.mention(username, domain) end - else - account = entity_cache.mention(username, domain) + + return "@#{h(entity[:screen_name])}" if account.nil? + + url = ActivityPub::TagManager.instance.url_for(account) + display_username = same_username_hits&.positive? || with_domains? ? account.pretty_acct : account.username + + <<~HTML.squish + @#{h(display_username)} + HTML end - - return "@#{h(entity[:screen_name])}" if account.nil? - - url = ActivityPub::TagManager.instance.url_for(account) - display_username = same_username_hits&.positive? || with_domains? ? account.pretty_acct : account.username - - <<~HTML.squish - @#{h(display_username)} - HTML end def entity_cache From 311d2b7f3a979915078a900551a79550a4fd7817 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:17:28 +0100 Subject: [PATCH 277/550] Update dependency fog-core to '<= 2.6.0' (#32660) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 6f4559b00f..97856d7825 100644 --- a/Gemfile +++ b/Gemfile @@ -16,7 +16,7 @@ gem 'pghero' gem 'aws-sdk-s3', '~> 1.123', require: false gem 'blurhash', '~> 0.1' -gem 'fog-core', '<= 2.5.0' +gem 'fog-core', '<= 2.6.0' gem 'fog-openstack', '~> 1.0', require: false gem 'kt-paperclip', '~> 7.2' gem 'md-paperclip-azure', '~> 2.2', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 8fff112872..f1088b22b6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -943,7 +943,7 @@ DEPENDENCIES fast_blank (~> 1.0) fastimage flatware-rspec - fog-core (<= 2.5.0) + fog-core (<= 2.6.0) fog-openstack (~> 1.0) haml-rails (~> 2.0) haml_lint From de1d8dc63afbd541710de44502129345e912895c Mon Sep 17 00:00:00 2001 From: Nathan Sparrow <24910097+DismalShadowX@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:12:35 -0400 Subject: [PATCH 278/550] Embed modal mobile fix (#32641) --- app/javascript/styles/mastodon/components.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 673e47f429..fc0b2b0e8e 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -5809,6 +5809,7 @@ a.status-card { pointer-events: auto; user-select: text; display: flex; + max-width: 100vw; @media screen and (width <= $mobile-breakpoint) { margin-top: auto; From df3b9547202c07ec7ec7f6af8295deb272c6f5ca Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 29 Oct 2024 11:35:25 -0400 Subject: [PATCH 279/550] Add `DomainHelpers` spec support module for DNS/MX stub (#32690) --- .../auth/registrations_controller_spec.rb | 12 +---- spec/rails_helper.rb | 1 + spec/services/app_sign_up_service_spec.rb | 12 +---- spec/support/domain_helpers.rb | 44 +++++++++++++++++++ 4 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 spec/support/domain_helpers.rb diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index 6118edf4e3..d1542128e7 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -233,17 +233,7 @@ RSpec.describe Auth::RegistrationsController do Setting.registrations_mode = 'open' Fabricate(:email_domain_block, allow_with_approval: true, domain: 'mail.example.com') allow(User).to receive(:skip_mx_check?).and_return(false) - - resolver = instance_double(Resolv::DNS, :timeouts= => nil) - - allow(resolver).to receive(:getresources) - .with('example.com', Resolv::DNS::Resource::IN::MX) - .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'mail.example.com')]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: '2.3.4.5')]) - allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([instance_double(Resolv::DNS::Resource::IN::AAAA, address: 'fd00::2')]) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) + configure_mx(domain: 'example.com', exchange: 'mail.example.com') end it 'creates unapproved user and redirects to setup' do diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 91a2e21bbb..d2ad40be73 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -113,6 +113,7 @@ RSpec.configure do |config| config.include ActiveSupport::Testing::TimeHelpers config.include Chewy::Rspec::Helpers config.include Redisable + config.include DomainHelpers config.include ThreadingHelpers config.include SignedRequestHelpers, type: :request config.include CommandLineHelpers, type: :cli diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb index ec7b7516f9..b78868db49 100644 --- a/spec/services/app_sign_up_service_spec.rb +++ b/spec/services/app_sign_up_service_spec.rb @@ -53,17 +53,7 @@ RSpec.describe AppSignUpService do Setting.registrations_mode = 'open' Fabricate(:email_domain_block, allow_with_approval: true, domain: 'smtp.email.com') allow(User).to receive(:skip_mx_check?).and_return(false) - - resolver = instance_double(Resolv::DNS, :timeouts= => nil) - - allow(resolver).to receive(:getresources) - .with('email.com', Resolv::DNS::Resource::IN::MX) - .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'smtp.email.com')]) - allow(resolver).to receive(:getresources).with('email.com', Resolv::DNS::Resource::IN::A).and_return([]) - allow(resolver).to receive(:getresources).with('email.com', Resolv::DNS::Resource::IN::AAAA).and_return([]) - allow(resolver).to receive(:getresources).with('smtp.email.com', Resolv::DNS::Resource::IN::A).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: '2.3.4.5')]) - allow(resolver).to receive(:getresources).with('smtp.email.com', Resolv::DNS::Resource::IN::AAAA).and_return([instance_double(Resolv::DNS::Resource::IN::AAAA, address: 'fd00::2')]) - allow(Resolv::DNS).to receive(:open).and_yield(resolver) + configure_mx(domain: 'email.com', exchange: 'smtp.email.com') end it 'creates an unapproved user', :aggregate_failures do diff --git a/spec/support/domain_helpers.rb b/spec/support/domain_helpers.rb new file mode 100644 index 0000000000..9977702099 --- /dev/null +++ b/spec/support/domain_helpers.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module DomainHelpers + def configure_mx(domain:, exchange:, ip_v4_addr: '2.3.4.5', ip_v6_addr: 'fd00::2') + resolver = instance_double(Resolv::DNS, :timeouts= => nil) + + allow(resolver).to receive(:getresources) + .with(domain, Resolv::DNS::Resource::IN::MX) + .and_return([double_mx(exchange)]) + allow(resolver) + .to receive(:getresources) + .with(domain, Resolv::DNS::Resource::IN::A) + .and_return([]) + allow(resolver) + .to receive(:getresources) + .with(domain, Resolv::DNS::Resource::IN::AAAA) + .and_return([]) + allow(resolver) + .to receive(:getresources) + .with(exchange, Resolv::DNS::Resource::IN::A) + .and_return([double_resource_v4(ip_v4_addr)]) + allow(resolver) + .to receive(:getresources) + .with(exchange, Resolv::DNS::Resource::IN::AAAA) + .and_return([double_resource_v6(ip_v6_addr)]) + allow(Resolv::DNS) + .to receive(:open) + .and_yield(resolver) + end + + private + + def double_mx(exchange) + instance_double(Resolv::DNS::Resource::MX, exchange: exchange) + end + + def double_resource_v4(addr) + instance_double(Resolv::DNS::Resource::IN::A, address: addr) + end + + def double_resource_v6(addr) + instance_double(Resolv::DNS::Resource::IN::AAAA, address: addr) + end +end From babee06794e188dffb9f82787cc0f0ab784dc99e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 29 Oct 2024 11:46:32 -0400 Subject: [PATCH 280/550] Add coverage for `StatusTrend` and `PreviewCardTrend` models, add `locales` class method to `RankedTrend` (#32688) --- .../admin/trends/links_controller.rb | 2 +- .../admin/trends/statuses_controller.rb | 2 +- app/models/concerns/ranked_trend.rb | 4 ++++ app/models/trends/links.rb | 2 +- app/models/trends/statuses.rb | 2 +- .../preview_card_trend_fabricator.rb | 5 ++++ spec/fabricators/status_trend_fabricator.rb | 6 +++++ spec/models/preview_card_trend_spec.rb | 22 ++++++++++++++++++ spec/models/status_trend_spec.rb | 23 +++++++++++++++++++ 9 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 spec/fabricators/preview_card_trend_fabricator.rb create mode 100644 spec/fabricators/status_trend_fabricator.rb create mode 100644 spec/models/preview_card_trend_spec.rb create mode 100644 spec/models/status_trend_spec.rb diff --git a/app/controllers/admin/trends/links_controller.rb b/app/controllers/admin/trends/links_controller.rb index 83d68eba63..65eca11c7f 100644 --- a/app/controllers/admin/trends/links_controller.rb +++ b/app/controllers/admin/trends/links_controller.rb @@ -4,7 +4,7 @@ class Admin::Trends::LinksController < Admin::BaseController def index authorize :preview_card, :review? - @locales = PreviewCardTrend.pluck('distinct language') + @locales = PreviewCardTrend.locales @preview_cards = filtered_preview_cards.page(params[:page]) @form = Trends::PreviewCardBatch.new end diff --git a/app/controllers/admin/trends/statuses_controller.rb b/app/controllers/admin/trends/statuses_controller.rb index 3d8b53ea8a..682fe70bb5 100644 --- a/app/controllers/admin/trends/statuses_controller.rb +++ b/app/controllers/admin/trends/statuses_controller.rb @@ -4,7 +4,7 @@ class Admin::Trends::StatusesController < Admin::BaseController def index authorize [:admin, :status], :review? - @locales = StatusTrend.pluck('distinct language') + @locales = StatusTrend.locales @statuses = filtered_statuses.page(params[:page]) @form = Trends::StatusBatch.new end diff --git a/app/models/concerns/ranked_trend.rb b/app/models/concerns/ranked_trend.rb index add36afb0c..e707fe0bad 100644 --- a/app/models/concerns/ranked_trend.rb +++ b/app/models/concerns/ranked_trend.rb @@ -9,6 +9,10 @@ module RankedTrend end class_methods do + def locales + distinct.pluck(:language) + end + def recalculate_ordered_rank connection .exec_update(<<~SQL.squish) diff --git a/app/models/trends/links.rb b/app/models/trends/links.rb index 0650c4109d..9d721d25f8 100644 --- a/app/models/trends/links.rb +++ b/app/models/trends/links.rb @@ -85,7 +85,7 @@ class Trends::Links < Trends::Base end def request_review - PreviewCardTrend.pluck('distinct language').flat_map do |language| + PreviewCardTrend.locales.flat_map do |language| score_at_threshold = PreviewCardTrend.where(language: language).allowed.by_rank.ranked_below(options[:review_threshold]).first&.score || 0 preview_card_trends = PreviewCardTrend.where(language: language).not_allowed.joins(:preview_card) diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb index 9be6eb13a5..8757e5aa9c 100644 --- a/app/models/trends/statuses.rb +++ b/app/models/trends/statuses.rb @@ -78,7 +78,7 @@ class Trends::Statuses < Trends::Base end def request_review - StatusTrend.pluck('distinct language').flat_map do |language| + StatusTrend.locales.flat_map do |language| score_at_threshold = StatusTrend.where(language: language, allowed: true).by_rank.ranked_below(options[:review_threshold]).first&.score || 0 status_trends = StatusTrend.where(language: language, allowed: false).joins(:status).includes(status: :account) diff --git a/spec/fabricators/preview_card_trend_fabricator.rb b/spec/fabricators/preview_card_trend_fabricator.rb new file mode 100644 index 0000000000..14c126cc89 --- /dev/null +++ b/spec/fabricators/preview_card_trend_fabricator.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +Fabricator(:preview_card_trend) do + preview_card +end diff --git a/spec/fabricators/status_trend_fabricator.rb b/spec/fabricators/status_trend_fabricator.rb new file mode 100644 index 0000000000..c775892b1f --- /dev/null +++ b/spec/fabricators/status_trend_fabricator.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +Fabricator(:status_trend) do + status + account +end diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb new file mode 100644 index 0000000000..6edd24b693 --- /dev/null +++ b/spec/models/preview_card_trend_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe PreviewCardTrend do + describe 'Associations' do + it { is_expected.to belong_to(:preview_card).required } + end + + describe '.locales' do + before do + Fabricate :preview_card_trend, language: 'en' + Fabricate :preview_card_trend, language: 'en' + Fabricate :preview_card_trend, language: 'es' + end + + it 'returns unique set of languages' do + expect(described_class.locales) + .to eq(['en', 'es']) + end + end +end diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb new file mode 100644 index 0000000000..34522493cd --- /dev/null +++ b/spec/models/status_trend_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe StatusTrend do + describe 'Associations' do + it { is_expected.to belong_to(:account).required } + it { is_expected.to belong_to(:status).required } + end + + describe '.locales' do + before do + Fabricate :status_trend, language: 'en' + Fabricate :status_trend, language: 'en' + Fabricate :status_trend, language: 'es' + end + + it 'returns unique set of languages' do + expect(described_class.locales) + .to eq(['en', 'es']) + end + end +end From 742eb549abe556ff2c53adfaaddd4ed01789f26e Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 30 Oct 2024 09:34:56 +0100 Subject: [PATCH 281/550] Fix preview cards with long titles erroneously causing layout changes (#32678) --- app/javascript/styles/mastodon/components.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index fc0b2b0e8e..f688b9b4ba 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2759,6 +2759,7 @@ a.account__display-name { flex: 0 1 auto; display: flex; flex-direction: column; + contain: inline-size layout paint style; @media screen and (min-width: $no-gap-breakpoint) { max-width: 600px; @@ -4032,6 +4033,7 @@ $ui-header-logo-wordmark-width: 99px; overflow: hidden; border: 1px solid var(--background-border-color); border-radius: 8px; + contain: inline-size layout paint style; &.bottomless { border-radius: 8px 8px 0 0; From 7f743f3c8190ec3c5bfd4cc4543f87be39bed53e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 09:40:49 +0100 Subject: [PATCH 282/550] Update dependency libvips to v8.16.0 (#32679) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bb29ad21fa..acb7631eb9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -191,7 +191,7 @@ FROM build AS libvips # libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"] # renovate: datasource=github-releases depName=libvips packageName=libvips/libvips -ARG VIPS_VERSION=8.15.5 +ARG VIPS_VERSION=8.16.0 # libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"] ARG VIPS_URL=https://github.com/libvips/libvips/releases/download From 110aa0aa28ec44de7841ce8a8cce924a94f3717c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:09:10 +0100 Subject: [PATCH 283/550] Update workbox monorepo to v7.3.0 (#32691) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 214 +++++++++++++++++++++++++++--------------------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1a129ac367..7762f96102 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18218,28 +18218,28 @@ __metadata: languageName: node linkType: hard -"workbox-background-sync@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-background-sync@npm:7.1.0" +"workbox-background-sync@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-background-sync@npm:7.3.0" dependencies: idb: "npm:^7.0.1" - workbox-core: "npm:7.1.0" - checksum: 10c0/9538c49a377d8eb06acee3848fbca09bac1940a2ca9e904fed765c39aa32f77c20d72c3ba6fa1eb47bee81289b1d527556a1cd3e02728960a4c40400ce6d0e91 + workbox-core: "npm:7.3.0" + checksum: 10c0/cc982d62702847fb16c4ef372a8bd243348a80c2d5da1649a860b0187b45060a799a65582c2d36f1a32e31d5d68dedcb037698c41d3b2f171ea5d54d73453cf1 languageName: node linkType: hard -"workbox-broadcast-update@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-broadcast-update@npm:7.1.0" +"workbox-broadcast-update@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-broadcast-update@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/4a6e201cedcbc11b9d2f63f63477ba4564a35ce07bd54640198db6ff6a3b8347a65e0b4973c8f8463e8a622fd1ad93d7b3bab42338608811d23c7db01fef475e + workbox-core: "npm:7.3.0" + checksum: 10c0/25007acd3e845b5ca1f4c9ac9888ce661431723f7419cfa56b3029b6c56cbeca24902dae015c42a2d6f554f956274743e331d03ceeb4b0e3879cb7b908d0e82f languageName: node linkType: hard -"workbox-build@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-build@npm:7.1.0" +"workbox-build@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-build@npm:7.3.0" dependencies: "@apideck/better-ajv-errors": "npm:^0.3.1" "@babel/core": "npm:^7.24.4" @@ -18263,163 +18263,163 @@ __metadata: strip-comments: "npm:^2.0.1" tempy: "npm:^0.6.0" upath: "npm:^1.2.0" - workbox-background-sync: "npm:7.1.0" - workbox-broadcast-update: "npm:7.1.0" - workbox-cacheable-response: "npm:7.1.0" - workbox-core: "npm:7.1.0" - workbox-expiration: "npm:7.1.0" - workbox-google-analytics: "npm:7.1.0" - workbox-navigation-preload: "npm:7.1.0" - workbox-precaching: "npm:7.1.0" - workbox-range-requests: "npm:7.1.0" - workbox-recipes: "npm:7.1.0" - workbox-routing: "npm:7.1.0" - workbox-strategies: "npm:7.1.0" - workbox-streams: "npm:7.1.0" - workbox-sw: "npm:7.1.0" - workbox-window: "npm:7.1.0" - checksum: 10c0/c482fde713bad582bd7d4861113d7367ab4722eba9c102864c71048815792c623e9117a8f79957e0388d0c08e8303962d1fb23931456da73909e87d06638d101 + workbox-background-sync: "npm:7.3.0" + workbox-broadcast-update: "npm:7.3.0" + workbox-cacheable-response: "npm:7.3.0" + workbox-core: "npm:7.3.0" + workbox-expiration: "npm:7.3.0" + workbox-google-analytics: "npm:7.3.0" + workbox-navigation-preload: "npm:7.3.0" + workbox-precaching: "npm:7.3.0" + workbox-range-requests: "npm:7.3.0" + workbox-recipes: "npm:7.3.0" + workbox-routing: "npm:7.3.0" + workbox-strategies: "npm:7.3.0" + workbox-streams: "npm:7.3.0" + workbox-sw: "npm:7.3.0" + workbox-window: "npm:7.3.0" + checksum: 10c0/cb396f9c2a53429d1e11b4c1da2e21c9e1c98473ce15f20ae53277e47bd7ccbcb3f1f843694e588bb70b12d9332faafd098ca05b93abb0293d373f38a8de3ca8 languageName: node linkType: hard -"workbox-cacheable-response@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-cacheable-response@npm:7.1.0" +"workbox-cacheable-response@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-cacheable-response@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/52ea73bb184c9ef9280cc8f00a1ab7d103d495e12a7a6378fae02fd0aa1a9b893aac5d8074f14ed8c198527123e4401f4703fbfd2be98e184ca783b9216cb4c5 + workbox-core: "npm:7.3.0" + checksum: 10c0/192c8a8878c53a205c55398bac78f2c32c0f36e55c95cab282d8a716ddf2fa72563afaed690d34d3438cc8df5fb0df4d98dcb2d93cc6d67c69a9ae592f7bf246 languageName: node linkType: hard -"workbox-core@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-core@npm:7.1.0" - checksum: 10c0/fb0b6e23a52e085da00b7a74b1f1854f06c695eb2bd4c244aa335165f59156a4febb4f116b9893b9fb7e0e8bac092d32eecceb4d00f930a93f64737cb2be9531 +"workbox-core@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-core@npm:7.3.0" + checksum: 10c0/b7dce640cd9665ed207f65f5b08a50e2e24e5599790c6ea4fec987539b9d2ef81765d8c5f94acfee3a8a45d5ade8e1a4ebd0b8847a1471302ef75a5b93c7bd04 languageName: node linkType: hard -"workbox-expiration@npm:7.1.0, workbox-expiration@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-expiration@npm:7.1.0" +"workbox-expiration@npm:7.3.0, workbox-expiration@npm:^7.0.0": + version: 7.3.0 + resolution: "workbox-expiration@npm:7.3.0" dependencies: idb: "npm:^7.0.1" - workbox-core: "npm:7.1.0" - checksum: 10c0/669d76f87c1550ce9b425232c3202a26fdea4c4c9bdc1b71c1cee741a5d011423098994452e508576174d3c0b4bec0f4b35012b6d7257e300684c87fdddb7949 + workbox-core: "npm:7.3.0" + checksum: 10c0/6040d72122ece901becfcc59974586e9cc9b6309840b83b652c9f9aafe32ff89783404a431cadf6f888f80e5371252820e425ced499742964d6d68687f6fad1a languageName: node linkType: hard -"workbox-google-analytics@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-google-analytics@npm:7.1.0" +"workbox-google-analytics@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-google-analytics@npm:7.3.0" dependencies: - workbox-background-sync: "npm:7.1.0" - workbox-core: "npm:7.1.0" - workbox-routing: "npm:7.1.0" - workbox-strategies: "npm:7.1.0" - checksum: 10c0/4178d94fb7f3f7b789f117c104b2ff33945256dc550418b0e9c81130c1e2c2bcd72ec6a1661d91326c04de360e6592edd505f0e2142e8e1043fe0c45f9c1a3fe + workbox-background-sync: "npm:7.3.0" + workbox-core: "npm:7.3.0" + workbox-routing: "npm:7.3.0" + workbox-strategies: "npm:7.3.0" + checksum: 10c0/5317a4bcc01f1aa87480f9708d7d382c15fb37d6119e71e0a2909dfd683f6060b5cc4f7b016a81fc67098f51a5d0cfd1cda20e228f2f3778ee3caf649b59996b languageName: node linkType: hard -"workbox-navigation-preload@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-navigation-preload@npm:7.1.0" +"workbox-navigation-preload@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-navigation-preload@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/b667a3ba0cae4d43a53a6e211f0f33f6ebc1d9fec6cbb93de83f72a37b81cc39d887b969db9b1cd5c396a1ce34636c89c3b157cc64a5265635d0b274e362db0e + workbox-core: "npm:7.3.0" + checksum: 10c0/69e4d43c68c06889987e9fa437995378b0632c83bad8c7044b4ed812b05b94b3a4aa8700ea4c26b2ecf68ee6858e94ff41dfa3279815c1bc385ac19c0edfb200 languageName: node linkType: hard -"workbox-precaching@npm:7.1.0, workbox-precaching@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-precaching@npm:7.1.0" +"workbox-precaching@npm:7.3.0, workbox-precaching@npm:^7.0.0": + version: 7.3.0 + resolution: "workbox-precaching@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - workbox-routing: "npm:7.1.0" - workbox-strategies: "npm:7.1.0" - checksum: 10c0/53b2d0a658109b4d83ee2b1913f884ee1c757a12b8931a7102272bd1e228d29f9430e7d060f328f465bca2aa24bf0719d026eef4f4d21395fa1f678f8d6a3c06 + workbox-core: "npm:7.3.0" + workbox-routing: "npm:7.3.0" + workbox-strategies: "npm:7.3.0" + checksum: 10c0/15c4c5cf5dfec684711ce3536bbfa6873f7af16b712d02ded81d3ff490ea4097e46602705548f5872c49f06e3516fd69f17e72a7fc60631ff6d68460e48f7648 languageName: node linkType: hard -"workbox-range-requests@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-range-requests@npm:7.1.0" +"workbox-range-requests@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-range-requests@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/bf4aa597d04cbb533796af64f4006a1f472f8a14ea91f96fe37b2d5e63ffe86dcb944dab9a41317e69d368d83bee20f03ff32b339ae5addef50f325703ad4b77 + workbox-core: "npm:7.3.0" + checksum: 10c0/d48e1484866442864d66b1891c4965b71e997a83a7634f11452ec1a73a30a5e642e6a95d5cff45578bef4dec7a5f57bc598aeedb6189d17ca210e2c5f2898244 languageName: node linkType: hard -"workbox-recipes@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-recipes@npm:7.1.0" +"workbox-recipes@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-recipes@npm:7.3.0" dependencies: - workbox-cacheable-response: "npm:7.1.0" - workbox-core: "npm:7.1.0" - workbox-expiration: "npm:7.1.0" - workbox-precaching: "npm:7.1.0" - workbox-routing: "npm:7.1.0" - workbox-strategies: "npm:7.1.0" - checksum: 10c0/5a8c2444f6338c6092be87cc6fd69c8b0cbb413bfc0a11a8f10961bfb2b8059359c4be0264ffa0c01deff3ab5dba15bbcf61d4dedbc93d8bfe1f8a2841b1657c + workbox-cacheable-response: "npm:7.3.0" + workbox-core: "npm:7.3.0" + workbox-expiration: "npm:7.3.0" + workbox-precaching: "npm:7.3.0" + workbox-routing: "npm:7.3.0" + workbox-strategies: "npm:7.3.0" + checksum: 10c0/c8146ece4247cbcbefba36a14f2cb65b5f74b2412f64cfc7955ff75ff653857161a1f1d94c987fbae4812f5b770eedcf99af965e512cc375fbc7fb5421bdc99c languageName: node linkType: hard -"workbox-routing@npm:7.1.0, workbox-routing@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-routing@npm:7.1.0" +"workbox-routing@npm:7.3.0, workbox-routing@npm:^7.0.0": + version: 7.3.0 + resolution: "workbox-routing@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/efd630fff594bd50276770840bce274660972587e79c097a9f1a84e8347351736aac13f11c6d7655ff550b13195d370d5c3b81a075bf452f358fc144ee868ad9 + workbox-core: "npm:7.3.0" + checksum: 10c0/8ac1824211d0fbe0e916ecb2c2427bcb0ef8783f9225d8114fe22e6c326f2d8a040a089bead58064e8b096ec95abe070c04cd7353dd8830dba3ab8d608a053aa languageName: node linkType: hard -"workbox-strategies@npm:7.1.0, workbox-strategies@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-strategies@npm:7.1.0" +"workbox-strategies@npm:7.3.0, workbox-strategies@npm:^7.0.0": + version: 7.3.0 + resolution: "workbox-strategies@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - checksum: 10c0/b08712a69b1b13e354345cc228c29f0c759043f7ca7cf6ce9b82fe79c9d423142bfa4a118f91f1a57054047a730127fa4474d59d9306fb2ed42fe9ef568be01a + workbox-core: "npm:7.3.0" + checksum: 10c0/50f3c28b46b54885a9461ad6559010d9abb2a7e35e0128d05c268f3ea0a96b1a747934758121d0e821f7af63946d9db8f4d2d7e0146f12555fb05c768e6b82bb languageName: node linkType: hard -"workbox-streams@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-streams@npm:7.1.0" +"workbox-streams@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-streams@npm:7.3.0" dependencies: - workbox-core: "npm:7.1.0" - workbox-routing: "npm:7.1.0" - checksum: 10c0/1d75c046fcb7b25e1cf85457e3610309dd5513f68752ef333529fcf155df2114b72f3d6f416bb68393e51b5396e3f6df7171e8e2889d0e9e1805e315754b771e + workbox-core: "npm:7.3.0" + workbox-routing: "npm:7.3.0" + checksum: 10c0/2ae541343d187eb7a50da2cfd74051f15771d1ddd1cad6856ffd530f7cccdb8eed9a8af94ff7540b710fef73eeec37d652123ae42b0206fbbd0679dc25e66ff4 languageName: node linkType: hard -"workbox-sw@npm:7.1.0": - version: 7.1.0 - resolution: "workbox-sw@npm:7.1.0" - checksum: 10c0/2084f1b58c8509d7ca53ce8a13d93e57d1f13307e0279fedc87942e83c8cb96bc2e5ed3992a89af6245ad2a66897a92908cb60d0717fb90492056eb6fbf20dc6 +"workbox-sw@npm:7.3.0": + version: 7.3.0 + resolution: "workbox-sw@npm:7.3.0" + checksum: 10c0/9ae275e31dd5ec51245773b6d90fda16d0b7f70d59f3a71aec732814b5aedf08aedc7fcce57739e7e89d9e1479ef97e3a202a542a511d732cf5e8b5d1c293870 languageName: node linkType: hard "workbox-webpack-plugin@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-webpack-plugin@npm:7.1.0" + version: 7.3.0 + resolution: "workbox-webpack-plugin@npm:7.3.0" dependencies: fast-json-stable-stringify: "npm:^2.1.0" pretty-bytes: "npm:^5.4.1" upath: "npm:^1.2.0" webpack-sources: "npm:^1.4.3" - workbox-build: "npm:7.1.0" + workbox-build: "npm:7.3.0" peerDependencies: webpack: ^4.4.0 || ^5.91.0 - checksum: 10c0/516fa68a6a6958ee1560299dd1146032dda68474a2ab01643cbde78fc65b75a3157aef60cb45dcc1984cc458ce44d4e3090cda08dd7cefd0952351270e963a00 + checksum: 10c0/dd3625544fe08b099fd2b783584c6c2c5da3f0e0c3096fc1a86a0b96a26df5055dd178d3c60ab4cde4099474ab23d51c292356c6910dfa16a974c8a95f351c93 languageName: node linkType: hard -"workbox-window@npm:7.1.0, workbox-window@npm:^7.0.0": - version: 7.1.0 - resolution: "workbox-window@npm:7.1.0" +"workbox-window@npm:7.3.0, workbox-window@npm:^7.0.0": + version: 7.3.0 + resolution: "workbox-window@npm:7.3.0" dependencies: "@types/trusted-types": "npm:^2.0.2" - workbox-core: "npm:7.1.0" - checksum: 10c0/c989a6e3a0488f049eead3892f8249387604fb04898aa79d0cf14cd7b684f0758f1edf1996745f4755bd30c31c449f628803e507d39b2ea91cc9c36f7d5e9c72 + workbox-core: "npm:7.3.0" + checksum: 10c0/dbda33c4761ec40051cfe6e3f1701b2381b4f3b191f7a249c32f683503ea35cf8b42d1f99df5ba3b693fac78705d8ed0c191488bdd178c525d1291d0161ec8ff languageName: node linkType: hard From 0a599d08d8c1d10d3784b3700ebd27efe9e6a468 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:02:02 +0100 Subject: [PATCH 284/550] New Crowdin Translations (automated) (#32695) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/cy.json | 4 +++- app/javascript/mastodon/locales/es-AR.json | 4 ++-- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/fi.json | 14 +++++++------- app/javascript/mastodon/locales/fil.json | 5 +++++ app/javascript/mastodon/locales/gd.json | 6 +++++- app/javascript/mastodon/locales/gl.json | 2 ++ app/javascript/mastodon/locales/it.json | 2 ++ app/javascript/mastodon/locales/lad.json | 1 + app/javascript/mastodon/locales/nn.json | 2 ++ app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/th.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 8 ++++---- config/locales/doorkeeper.fi.yml | 2 +- config/locales/eo.yml | 7 +++++++ 15 files changed, 44 insertions(+), 18 deletions(-) diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 3c4a6aa40c..675f7a203e 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -13,7 +13,7 @@ "about.rules": "Rheolau'r gweinydd", "account.account_note_header": "Nodyn personol", "account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau", - "account.badges.bot": "Bot", + "account.badges.bot": "Awtomataidd", "account.badges.group": "Grŵp", "account.block": "Blocio @{name}", "account.block_domain": "Blocio parth {domain}", @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich ffrwd gartref.", "interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.", "interaction_modal.description.reply": "Gyda chyfrif ar Mastodon, gallwch ymateb i'r postiad hwn.", + "interaction_modal.description.vote": "Gyda chyfrif ar Mastodon, gallwch bleidleisio yn y bleidlais hon.", "interaction_modal.login.action": "Mynd i'm ffrwd gartref", "interaction_modal.login.prompt": "Parth eich gweinydd cartref, e.e. mastodon.social", "interaction_modal.no_account_yet": "Dim ar Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Dilyn {name}", "interaction_modal.title.reblog": "Hybu postiad {name}", "interaction_modal.title.reply": "Ymateb i bostiad {name}", + "interaction_modal.title.vote": "Pleidleisiwch ym mhleidlais {name}", "intervals.full.days": "{number, plural, one {# diwrnod} two {# ddiwrnod} other {# diwrnod}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index e1803aabda..e8302a4c75 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -386,7 +386,7 @@ "interaction_modal.description.follow": "Con una cuenta en Mastodon, podés seguir a {name} para recibir sus mensajes en tu línea temporal principal.", "interaction_modal.description.reblog": "Con una cuenta en Mastodon, podés adherir a este mensaje para compartirlo con tus propios seguidores.", "interaction_modal.description.reply": "Con una cuenta en Mastodon, podés responder a este mensaje.", - "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.", + "interaction_modal.description.vote": "Con una cuenta en Mastodon, podés votar en esta encuesta.", "interaction_modal.login.action": "Llevame al comienzo", "interaction_modal.login.prompt": "Dominio de su servidor de inicio, p. ej., mastodon.social", "interaction_modal.no_account_yet": "¿No tenés cuenta en Mastodon?", @@ -398,7 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Adherir al mensaje de {name}", "interaction_modal.title.reply": "Responder al mensaje de {name}", - "interaction_modal.title.vote": "Vota en la encuesta de {name}", + "interaction_modal.title.vote": "Votá en la encuesta de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index af2bd0e528..c73a64c4e0 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -398,7 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Impulsar la publicación de {name}", "interaction_modal.title.reply": "Responder la publicación de {name}", - "interaction_modal.title.vote": "Vota en la encuesta de {name}", + "interaction_modal.title.vote": "Votar en la encuesta de {name}", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0455e4df29..fd971edfd3 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Äänestyksen kesto", "compose_form.poll.multiple": "Monivalinta", "compose_form.poll.option_placeholder": "Vaihtoehto {number}", - "compose_form.poll.single": "Yksittäisvalinta", + "compose_form.poll.single": "Yksi vaihtoehto", "compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi", "compose_form.poll.type": "Tyyli", @@ -386,7 +386,7 @@ "interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.", "interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.", "interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.", - "interaction_modal.description.vote": "Mastodon-tilillä voit osallistua tähän äänestykseen.", + "interaction_modal.description.vote": "Osallistuminen äänestykseen onnistuu Mastodon-tilillä.", "interaction_modal.login.action": "Siirry kotiin", "interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus, kuten mastodon.social", "interaction_modal.no_account_yet": "Etkö ole vielä Mastodonissa?", @@ -439,8 +439,8 @@ "lightbox.close": "Sulje", "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", - "lightbox.zoom_in": "Zoomaa todelliseen kokoon", - "lightbox.zoom_out": "Zoomaa mahtumaan", + "lightbox.zoom_in": "Näytä alkuperäiskokoisena", + "lightbox.zoom_out": "Näytä sovitettuna", "limited_account_hint.action": "Näytä profiili joka tapauksessa", "limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.", "link_preview.author": "Tehnyt {name}", @@ -529,7 +529,7 @@ "notification.moderation_warning.action_sensitive": "Tästä lähtien julkaisusi merkitään arkaluonteisiksi.", "notification.moderation_warning.action_silence": "Tiliäsi on rajoitettu.", "notification.moderation_warning.action_suspend": "Tilisi on jäädytetty.", - "notification.own_poll": "Äänestyksesi on päättynyt", + "notification.own_poll": "Kyselysi on päättynyt", "notification.poll": "Äänestys, johon osallistuit, on päättynyt", "notification.reblog": "{name} tehosti julkaisuasi", "notification.reblog.name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}} tehostivat julkaisuasi", @@ -572,7 +572,7 @@ "notifications.column_settings.follow_request": "Uudet seurantapyynnöt:", "notifications.column_settings.group": "Ryhmitä", "notifications.column_settings.mention": "Maininnat:", - "notifications.column_settings.poll": "Äänestyksen tulokset:", + "notifications.column_settings.poll": "Kyselyn tulokset:", "notifications.column_settings.push": "Puskuilmoitukset", "notifications.column_settings.reblog": "Tehostukset:", "notifications.column_settings.show": "Näytä sarakkeessa", @@ -586,7 +586,7 @@ "notifications.filter.favourites": "Suosikit", "notifications.filter.follows": "Seuraamiset", "notifications.filter.mentions": "Maininnat", - "notifications.filter.polls": "Äänestyksen tulokset", + "notifications.filter.polls": "Kyselyn tulokset", "notifications.filter.statuses": "Päivitykset seuraamiltasi käyttäjiltä", "notifications.grant_permission": "Myönnä käyttöoikeus.", "notifications.group": "{count} ilmoitusta", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 3822fbcf85..14c7b70bd2 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -129,6 +129,7 @@ "confirmations.discard_edit_media.confirm": "Ipagpaliban", "confirmations.edit.confirm": "Baguhin", "confirmations.reply.confirm": "Tumugon", + "content_warning.show_more": "Magpakita ng higit pa", "conversation.mark_as_read": "Markahan bilang nabasa na", "conversation.open": "Tingnan ang pag-uusap", "copy_icon_button.copied": "Sinipi sa clipboard", @@ -190,6 +191,7 @@ "explore.title": "Tuklasin", "explore.trending_links": "Mga balita", "filter_modal.select_filter.search": "Hanapin o gumawa", + "filter_warning.matches_filter": "Tinutugma ang pangsala \"{title}\"", "firehose.all": "Lahat", "firehose.local": "Itong serbiro", "firehose.remote": "Ibang mga serbiro", @@ -218,6 +220,7 @@ "interaction_modal.on_another_server": "Sa ibang serbiro", "interaction_modal.on_this_server": "Sa serbirong ito", "interaction_modal.title.follow": "Sundan si {name}", + "interaction_modal.title.vote": "Bumoto sa botohan ni {name}", "intervals.full.days": "{number, plural, one {# araw} other {# na araw}}", "intervals.full.hours": "{number, plural, one {# oras} other {# na oras}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# na minuto}}", @@ -256,6 +259,7 @@ "navigation_bar.search": "Maghanap", "notification.admin.report": "Iniulat ni {name} si {target}", "notification.follow": "Sinundan ka ni {name}", + "notification.follow.name_and_others": "Sinundan ka ng/nina {name} at {count, plural, one {# iba pa} other {# na iba pa}}", "notification.follow_request": "Hinihiling ni {name} na sundan ka", "notification.label.private_mention": "Palihim na banggit", "notification.mentioned_you": "Binanggit ka ni {name}", @@ -270,6 +274,7 @@ "notifications.column_settings.alert": "Mga abiso sa Desktop", "notifications.column_settings.favourite": "Mga paborito:", "notifications.column_settings.follow": "Mga bagong tagasunod:", + "notifications.column_settings.group": "Pangkat", "notifications.column_settings.poll": "Resulta ng botohan:", "notifications.column_settings.unread_notifications.category": "Hindi Nabasang mga Abiso", "notifications.column_settings.update": "Mga pagbago:", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 47a9033440..4f68737b14 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -197,6 +197,7 @@ "confirmations.unfollow.title": "A bheil thu airson sgur de leantainn a chleachdaiche?", "content_warning.hide": "Falaich am post", "content_warning.show": "Seall e co-dhiù", + "content_warning.show_more": "Seall barrachd dheth", "conversation.delete": "Sguab às an còmhradh", "conversation.mark_as_read": "Cuir comharra gun deach a leughadh", "conversation.open": "Seall an còmhradh", @@ -305,6 +306,7 @@ "filter_modal.select_filter.subtitle": "Cleachd roinn-seòrsa a tha ann no cruthaich tè ùr", "filter_modal.select_filter.title": "Criathraich am post seo", "filter_modal.title.status": "Criathraich post", + "filter_warning.matches_filter": "A’ maidseadh na criathraige “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {Chan eil gin ann} one {O # neach} two {O # neach} few {O # daoine} other {O # duine}} air a bheil thu eòlach ’s dòcha", "filtered_notifications_banner.title": "Brathan criathraichte", "firehose.all": "Na h-uile", @@ -384,6 +386,7 @@ "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut {name} a leantainn ach am faigh thu na postaichean aca nad dhachaigh.", "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.", "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.", + "interaction_modal.description.vote": "Le cunntas air Mastodon, ’s urrainn dhut bhòtadh sa chunntas-bheachd seo.", "interaction_modal.login.action": "Thoir dhachaigh mi", "interaction_modal.login.prompt": "Àrainn-lìn an fhrithealaiche dachaigh agad, can ailbhean.co-shaoghal.net", "interaction_modal.no_account_yet": "Nach eil thu air Mastodon?", @@ -395,6 +398,7 @@ "interaction_modal.title.follow": "Lean {name}", "interaction_modal.title.reblog": "Brosnaich am post aig {name}", "interaction_modal.title.reply": "Freagair dhan phost aig {name}", + "interaction_modal.title.vote": "Bhòt sa chunntas-bheachd aig {name}", "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}", "intervals.full.hours": "{number, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}}", "intervals.full.minutes": "{number, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}}", @@ -461,7 +465,7 @@ "media_gallery.hide": "Falaich", "moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.", "mute_modal.hide_from_notifications": "Falaich o na brathan", - "mute_modal.hide_options": "Roghainnean falaich", + "mute_modal.hide_options": "Falaich na roghainnean", "mute_modal.indefinite": "Gus an dì-mhùch mi iad", "mute_modal.show_options": "Seall na roghainnean", "mute_modal.they_can_mention_and_follow": "’S urrainn dhaibh iomradh a thoirt ort agus do leantainn ach chan fhaic thu iad-san.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 822666ad8c..e89d386c85 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Cunha conta en Mastodon, poderás seguir a {name} e recibir as súas publicacións na túa cronoloxía de inicio.", "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderás promover esta publicación para compartila con quen te siga.", "interaction_modal.description.reply": "Cunha conta en Mastodon, poderás responder a esta publicación.", + "interaction_modal.description.vote": "Podes votar nesta enquisa se tes unha conta en Mastodon.", "interaction_modal.login.action": "Lévame ao inicio", "interaction_modal.login.prompt": "Dominio do teu servidor de inicio, ex. mastodon.social", "interaction_modal.no_account_yet": "Aínda non tes unha conta?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Seguir a {name}", "interaction_modal.title.reblog": "Promover a publicación de {name}", "interaction_modal.title.reply": "Responder á publicación de {name}", + "interaction_modal.title.vote": "Vota na enquisa de {name}", "intervals.full.days": "{number, plural,one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 68201e18de..a692fb7fd3 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Con un profilo di Mastodon, puoi seguire {name} per ricevere i suoi post nel feed della tua home.", "interaction_modal.description.reblog": "Con un profilo di Mastodon, puoi rebloggare questo post per condividerlo con i tuoi seguaci.", "interaction_modal.description.reply": "Con un profilo di Mastodon, puoi rispondere a questo post.", + "interaction_modal.description.vote": "Con un account su Mastodon puoi votare in questo sondaggio.", "interaction_modal.login.action": "Portami alla pagina iniziale", "interaction_modal.login.prompt": "Dominio del tuo server principale, ad esempio mastodon.social", "interaction_modal.no_account_yet": "Non su Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "Segui {name}", "interaction_modal.title.reblog": "Reblogga il post di {name}", "interaction_modal.title.reply": "Rispondi al post di {name}", + "interaction_modal.title.vote": "Vota nel sondaggio di {name}", "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 147546c977..563eb3b190 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -191,6 +191,7 @@ "confirmations.unfollow.title": "Desige utilizador?", "content_warning.hide": "Eskonde puvlikasyon", "content_warning.show": "Amostra entanto", + "content_warning.show_more": "Amostra mas", "conversation.delete": "Efasa konversasyon", "conversation.mark_as_read": "Marka komo meldado", "conversation.open": "Ve konversasyon", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 6bd16f3cfd..cc56754193 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -384,6 +384,7 @@ "interaction_modal.description.follow": "Med ein konto på Mastodon kan du fylgja {name} for å sjå innlegga deira i din heimestraum.", "interaction_modal.description.reblog": "Med ein konto på Mastodon kan du framheva dette innlegget for å dela det med dine eigne fylgjarar.", "interaction_modal.description.reply": "Med ein konto på Mastodon kan du svara på dette innlegget.", + "interaction_modal.description.vote": "Med ein konto på Mastodon kan du røyste i denne avrøystinga.", "interaction_modal.login.action": "Ta meg heim", "interaction_modal.login.prompt": "Domenenamnet til din heime-tenar. t.d. mastodon.social", "interaction_modal.no_account_yet": "Ikkje på Mastodon?", @@ -395,6 +396,7 @@ "interaction_modal.title.follow": "Fylg {name}", "interaction_modal.title.reblog": "Framhev {name} sitt innlegg", "interaction_modal.title.reply": "Svar på innlegge til {name}", + "interaction_modal.title.vote": "Røyst i {name} si avrøysting", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# time} other {# timar}}", "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 304535a67c..7824d07629 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -398,6 +398,7 @@ "interaction_modal.title.follow": "Följ {name}", "interaction_modal.title.reblog": "Boosta {name}s inlägg", "interaction_modal.title.reply": "Svara på {name}s inlägg", + "interaction_modal.title.vote": "Rösta i {name}s enkät", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 9e845c35e7..b0ad6e1c66 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -44,7 +44,7 @@ "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", - "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", + "account.locked_info": "สถานะความเป็นส่วนตัวของบัญชีนี้ถูกตั้งค่าเป็นล็อค เจ้าของตรวจสอบด้วยตนเองว่าใครสามารถติดตามพวกเขาได้", "account.media": "สื่อ", "account.mention": "กล่าวถึง @{name}", "account.moved_to": "{name} ได้ระบุว่าบัญชีใหม่ของเขาในตอนนี้คือ:", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 1c233a6403..603ec5d791 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -383,10 +383,10 @@ "ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?", "ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?", "interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,对嘟文的作者展示您欣赏的态度,并保存嘟文以供日后使用。", - "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你可以关注 {name} 并在自己的主页上接收对方的新嘟文。", - "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你可以向自己的关注者们转发此嘟文。", - "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。", - "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你可以参与此投票。", + "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你就可以关注 {name} 并在自己的主页上接收对方的新嘟文。", + "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你就可以向自己的关注者们转发此嘟文。", + "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你就可以回复此嘟文。", + "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你就可以参与此投票。", "interaction_modal.login.action": "转到主页", "interaction_modal.login.prompt": "您所入驻的服务器域名,如:mastodon.social", "interaction_modal.no_account_yet": "不在 Mastodon 上?", diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index 7d44a6a6b9..24228d54a9 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -60,7 +60,7 @@ fi: error: title: Tapahtui virhe new: - prompt_html: "%{client_name} haluaisi käyttöoikeuden tiliisi. Hyväksy tämä pyyntö vain, jos tunnistat lähteen ja luotat siihen." + prompt_html: "%{client_name} haluaisi luvan tilisi hyödyntämiseksi. Hyväksy pyyntö vain, jos tunnistat lähteen ja luotat siihen." review_permissions: Tarkista käyttöoikeudet title: Valtuutus vaaditaan show: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index f21e0bc724..12cae075f0 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -239,6 +239,7 @@ eo: confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}" create_account_warning_html: "%{name} sendis averton al %{target}" create_announcement_html: "%{name} kreis novan anoncon %{target}" + create_canonical_email_block_html: "%{name} blokis retpoŝtadreson per krado %{target}" create_custom_emoji_html: "%{name} alŝutis novan emoĝion %{target}" create_domain_allow_html: "%{name} aldonis domajnon %{target} al la blanka listo" create_domain_block_html: "%{name} blokis domajnon %{target}" @@ -248,6 +249,7 @@ eo: create_user_role_html: "%{name} kreis rolon de %{target}" demote_user_html: "%{name} degradis uzanton %{target}" destroy_announcement_html: "%{name} forigis anoncon %{target}" + destroy_canonical_email_block_html: "%{name} malblokis retpoŝtadreson per krado %{target}" destroy_custom_emoji_html: "%{name} forigis emoĝion %{target}" destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo" destroy_domain_block_html: "%{name} malblokis domajnon %{target}" @@ -282,6 +284,7 @@ eo: update_custom_emoji_html: "%{name} ĝisdatigis la emoĝion %{target}" update_domain_block_html: "%{name} ĝisdatigis domajnblokon por %{target}" update_ip_block_html: "%{name} ŝanĝis regulon por IP %{target}" + update_report_html: "%{name} ĝisdatigis la raporton %{target}" update_status_html: "%{name} ĝisdatigis afiŝon de %{target}" update_user_role_html: "%{name} ŝanĝis la rolon %{target}" deleted_account: forigita konto @@ -788,6 +791,7 @@ eo: types: major: Ĉefa eldono minor: Neĉefa eldono + patch: Eldono de flikaĵo — korektoj de eraroj kaj facile apliki ŝanĝojn version: Versio statuses: account: Skribanto @@ -1106,6 +1110,7 @@ eo: title: Ni pretigu vin ĉe %{domain}. status: account_status: Statuso de la konto + confirming: Atendante ke retpoŝta konfirmo estos kompletigita. functional: Via konto estas tute funkcia. redirecting_to: Via konto estas neaktiva ĉar ĝi nun alidirektas al %{acct}. view_strikes: Vidi antauaj admonoj kontra via konto @@ -1155,6 +1160,8 @@ eo: before: 'Antau ol dauri, legu ĉi tiujn notojn zorgeme:' caches: Enhavo kiu kaŝmemorigitas de aliaj serviloj eble restas data_removal: Viaj afiŝoj kaj aliaj informoj estos forigita por eterne + email_change_html: Vi povas ŝanĝi vian retadreson sen forigi vian konton + email_contact_html: Se ĝi ankoraŭ ne alvenas, vi povas retpoŝti al %{email} por helpo irreversible: Vi ne povas regajni au reaktivigi vian konton more_details_html: Por pli da detaloj, vidi la privatecan politikon. username_available: Via uzantnomo iĝos denove disponebla From e1b7382ea6b8b944a363914490d6476726dd7075 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Wed, 30 Oct 2024 15:38:10 +0100 Subject: [PATCH 285/550] Add userinfo oauth endpoint (#32548) --- app/controllers/oauth/userinfo_controller.rb | 11 ++++ app/presenters/oauth_metadata_presenter.rb | 4 ++ app/serializers/oauth_metadata_serializer.rb | 2 +- app/serializers/oauth_userinfo_serializer.rb | 31 +++++++++++ config/initializers/cors.rb | 1 + config/routes.rb | 7 +++ spec/requests/oauth/userinfo_spec.rb | 51 +++++++++++++++++++ .../well_known/oauth_metadata_spec.rb | 17 +++---- 8 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 app/controllers/oauth/userinfo_controller.rb create mode 100644 app/serializers/oauth_userinfo_serializer.rb create mode 100644 spec/requests/oauth/userinfo_spec.rb diff --git a/app/controllers/oauth/userinfo_controller.rb b/app/controllers/oauth/userinfo_controller.rb new file mode 100644 index 0000000000..e268b70dcc --- /dev/null +++ b/app/controllers/oauth/userinfo_controller.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Oauth::UserinfoController < Api::BaseController + before_action -> { doorkeeper_authorize! :profile }, only: [:show] + before_action :require_user! + + def show + @account = current_account + render json: @account, serializer: OauthUserinfoSerializer + end +end diff --git a/app/presenters/oauth_metadata_presenter.rb b/app/presenters/oauth_metadata_presenter.rb index 1e4d25165c..7d75e8498a 100644 --- a/app/presenters/oauth_metadata_presenter.rb +++ b/app/presenters/oauth_metadata_presenter.rb @@ -26,6 +26,10 @@ class OauthMetadataPresenter < ActiveModelSerializers::Model oauth_token_url end + def userinfo_endpoint + oauth_userinfo_url + end + # As the api_v1_apps route doesn't technically conform to the specification # for OAuth 2.0 Dynamic Client Registration defined in RFC 7591 we use a # non-standard property for now to indicate the mastodon specific registration diff --git a/app/serializers/oauth_metadata_serializer.rb b/app/serializers/oauth_metadata_serializer.rb index 2afb4208fb..9c5f7365a4 100644 --- a/app/serializers/oauth_metadata_serializer.rb +++ b/app/serializers/oauth_metadata_serializer.rb @@ -2,7 +2,7 @@ class OauthMetadataSerializer < ActiveModel::Serializer attributes :issuer, :authorization_endpoint, :token_endpoint, - :revocation_endpoint, :scopes_supported, + :revocation_endpoint, :userinfo_endpoint, :scopes_supported, :response_types_supported, :response_modes_supported, :grant_types_supported, :token_endpoint_auth_methods_supported, :code_challenge_methods_supported, diff --git a/app/serializers/oauth_userinfo_serializer.rb b/app/serializers/oauth_userinfo_serializer.rb new file mode 100644 index 0000000000..e2f37ae02e --- /dev/null +++ b/app/serializers/oauth_userinfo_serializer.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class OauthUserinfoSerializer < ActiveModel::Serializer + include RoutingHelper + + attributes :iss, :sub, :name, :preferred_username, :profile, :picture + + def iss + root_url + end + + def sub + ActivityPub::TagManager.instance.uri_for(object) + end + + def name + object.display_name + end + + def preferred_username + object.username + end + + def profile + ActivityPub::TagManager.instance.url_for(object) + end + + def picture + full_asset_url(object.avatar_original_url) + end +end diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb index c530693a3f..476f1fb07a 100644 --- a/config/initializers/cors.rb +++ b/config/initializers/cors.rb @@ -23,6 +23,7 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do methods: %i(post put delete get patch options) resource '/oauth/token', methods: [:post] resource '/oauth/revoke', methods: [:post] + resource '/oauth/userinfo', methods: [:get, :post] end end end diff --git a/config/routes.rb b/config/routes.rb index 83170fba0f..0f4df757da 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -64,6 +64,13 @@ Rails.application.routes.draw do tokens: 'oauth/tokens' end + namespace :oauth do + # As this is borrowed from OpenID, the specification says we must also support + # POST for the userinfo endpoint: + # https://openid.net/specs/openid-connect-core-1_0.html#UserInfo + match 'userinfo', via: [:get, :post], to: 'userinfo#show', defaults: { format: 'json' } + end + scope path: '.well-known' do scope module: :well_known do get 'oauth-authorization-server', to: 'oauth_metadata#show', as: :oauth_metadata, defaults: { format: 'json' } diff --git a/spec/requests/oauth/userinfo_spec.rb b/spec/requests/oauth/userinfo_spec.rb new file mode 100644 index 0000000000..7d6226cd41 --- /dev/null +++ b/spec/requests/oauth/userinfo_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Oauth Userinfo Endpoint' do + include RoutingHelper + + let(:user) { Fabricate(:user) } + let(:account) { user.account } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } + let(:scopes) { 'profile' } + let(:headers) { { 'Authorization' => "Bearer #{token.token}" } } + + shared_examples 'returns successfully' do + it 'returns http success' do + subject + + expect(response).to have_http_status(:success) + expect(response.content_type).to start_with('application/json') + expect(response.parsed_body).to include({ + iss: root_url, + sub: account_url(account), + name: account.display_name, + preferred_username: account.username, + profile: short_account_url(account), + picture: full_asset_url(account.avatar_original_url), + }) + end + end + + describe 'GET /oauth/userinfo' do + subject do + get '/oauth/userinfo', headers: headers + end + + it_behaves_like 'forbidden for wrong scope', 'read:accounts' + it_behaves_like 'returns successfully' + end + + # As this is borrowed from OpenID, the specification says we must also support + # POST for the userinfo endpoint: + # https://openid.net/specs/openid-connect-core-1_0.html#UserInfo + describe 'POST /oauth/userinfo' do + subject do + post '/oauth/userinfo', headers: headers + end + + it_behaves_like 'forbidden for wrong scope', 'read:accounts' + it_behaves_like 'returns successfully' + end +end diff --git a/spec/requests/well_known/oauth_metadata_spec.rb b/spec/requests/well_known/oauth_metadata_spec.rb index 9c86dbedfe..01e9146fde 100644 --- a/spec/requests/well_known/oauth_metadata_spec.rb +++ b/spec/requests/well_known/oauth_metadata_spec.rb @@ -3,12 +3,6 @@ require 'rails_helper' RSpec.describe 'The /.well-known/oauth-authorization-server request' do - let(:protocol) { ENV.fetch('LOCAL_HTTPS', true) ? :https : :http } - - before do - host! Rails.configuration.x.local_domain - end - it 'returns http success with valid JSON response' do get '/.well-known/oauth-authorization-server' @@ -22,11 +16,12 @@ RSpec.describe 'The /.well-known/oauth-authorization-server request' do grant_types_supported << 'refresh_token' if Doorkeeper.configuration.refresh_token_enabled? expect(response.parsed_body).to include( - issuer: root_url(protocol: protocol), + issuer: root_url, service_documentation: 'https://docs.joinmastodon.org/', - authorization_endpoint: oauth_authorization_url(protocol: protocol), - token_endpoint: oauth_token_url(protocol: protocol), - revocation_endpoint: oauth_revoke_url(protocol: protocol), + authorization_endpoint: oauth_authorization_url, + token_endpoint: oauth_token_url, + userinfo_endpoint: oauth_userinfo_url, + revocation_endpoint: oauth_revoke_url, scopes_supported: Doorkeeper.configuration.scopes.map(&:to_s), response_types_supported: Doorkeeper.configuration.authorization_response_types, response_modes_supported: Doorkeeper.configuration.authorization_response_flows.flat_map(&:response_mode_matches).uniq, @@ -34,7 +29,7 @@ RSpec.describe 'The /.well-known/oauth-authorization-server request' do grant_types_supported: grant_types_supported, code_challenge_methods_supported: ['S256'], # non-standard extension: - app_registration_endpoint: api_v1_apps_url(protocol: protocol) + app_registration_endpoint: api_v1_apps_url ) end end From 01e25af2e320bd79955b83cc986eef2cd64b3e2a Mon Sep 17 00:00:00 2001 From: "Renato \"Lond\" Cerqueira" Date: Thu, 31 Oct 2024 10:37:31 +0100 Subject: [PATCH 286/550] Fix 'unknown' media attachment rendering in detailed view (#32713) --- .../mastodon/features/status/components/detailed_status.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/status/components/detailed_status.tsx b/app/javascript/mastodon/features/status/components/detailed_status.tsx index 0bf1bfda8b..5811efb190 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.tsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.tsx @@ -152,7 +152,7 @@ export const DetailedStatus: React.FC<{ media = ; } else if (status.get('media_attachments').size > 0) { if ( - ['image', 'gifv'].includes( + ['image', 'gifv', 'unknown'].includes( status.getIn(['media_attachments', 0, 'type']) as string, ) || status.get('media_attachments').size > 1 From c2b498a2b0035bdeec1028e58f4914eefcac80a4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 31 Oct 2024 10:38:00 +0100 Subject: [PATCH 287/550] Fix IDs not being serialized as strings in annual reports API (#32710) --- app/lib/annual_report/commonly_interacted_with_accounts.rb | 2 +- app/lib/annual_report/most_reblogged_accounts.rb | 2 +- app/lib/annual_report/top_statuses.rb | 6 +++--- .../annual_report/commonly_interacted_with_accounts_spec.rb | 2 +- spec/lib/annual_report/most_reblogged_accounts_spec.rb | 2 +- spec/lib/annual_report/top_statuses_spec.rb | 6 +++--- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/lib/annual_report/commonly_interacted_with_accounts.rb b/app/lib/annual_report/commonly_interacted_with_accounts.rb index e7482f0d52..30ab671d8a 100644 --- a/app/lib/annual_report/commonly_interacted_with_accounts.rb +++ b/app/lib/annual_report/commonly_interacted_with_accounts.rb @@ -7,7 +7,7 @@ class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source { commonly_interacted_with_accounts: commonly_interacted_with_accounts.map do |(account_id, count)| { - account_id: account_id, + account_id: account_id.to_s, count: count, } end, diff --git a/app/lib/annual_report/most_reblogged_accounts.rb b/app/lib/annual_report/most_reblogged_accounts.rb index 39ed3868ea..cfc4022ca7 100644 --- a/app/lib/annual_report/most_reblogged_accounts.rb +++ b/app/lib/annual_report/most_reblogged_accounts.rb @@ -7,7 +7,7 @@ class AnnualReport::MostRebloggedAccounts < AnnualReport::Source { most_reblogged_accounts: most_reblogged_accounts.map do |(account_id, count)| { - account_id: account_id, + account_id: account_id.to_s, count: count, } end, diff --git a/app/lib/annual_report/top_statuses.rb b/app/lib/annual_report/top_statuses.rb index c5abeaa58d..74b129595a 100644 --- a/app/lib/annual_report/top_statuses.rb +++ b/app/lib/annual_report/top_statuses.rb @@ -8,9 +8,9 @@ class AnnualReport::TopStatuses < AnnualReport::Source { top_statuses: { - by_reblogs: top_reblogs, - by_favourites: top_favourites, - by_replies: top_replies, + by_reblogs: top_reblogs&.to_s, + by_favourites: top_favourites&.to_s, + by_replies: top_replies&.to_s, }, } end diff --git a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb index e99d3cb4a7..0e31827912 100644 --- a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb +++ b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb @@ -32,7 +32,7 @@ RSpec.describe AnnualReport::CommonlyInteractedWithAccounts do expect(subject.generate) .to include( commonly_interacted_with_accounts: contain_exactly( - include(account_id: other_account.id, count: 2) + include(account_id: other_account.id.to_s, count: 2) ) ) end diff --git a/spec/lib/annual_report/most_reblogged_accounts_spec.rb b/spec/lib/annual_report/most_reblogged_accounts_spec.rb index 0280ba1992..2f04934e47 100644 --- a/spec/lib/annual_report/most_reblogged_accounts_spec.rb +++ b/spec/lib/annual_report/most_reblogged_accounts_spec.rb @@ -32,7 +32,7 @@ RSpec.describe AnnualReport::MostRebloggedAccounts do expect(subject.generate) .to include( most_reblogged_accounts: contain_exactly( - include(account_id: other_account.id, count: 2) + include(account_id: other_account.id.to_s, count: 2) ) ) end diff --git a/spec/lib/annual_report/top_statuses_spec.rb b/spec/lib/annual_report/top_statuses_spec.rb index b956b03973..af29df1f65 100644 --- a/spec/lib/annual_report/top_statuses_spec.rb +++ b/spec/lib/annual_report/top_statuses_spec.rb @@ -39,9 +39,9 @@ RSpec.describe AnnualReport::TopStatuses do expect(subject.generate) .to include( top_statuses: include( - by_reblogs: reblogged_status.id, - by_favourites: favourited_status.id, - by_replies: replied_status.id + by_reblogs: reblogged_status.id.to_s, + by_favourites: favourited_status.id.to_s, + by_replies: replied_status.id.to_s ) ) end From e78db58b654b58c83f583ac42e141f53d0ee4f60 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:01:05 +0100 Subject: [PATCH 288/550] New Crowdin Translations (automated) (#32708) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/et.json | 7 +++++++ app/javascript/mastodon/locales/fi.json | 8 ++++---- app/javascript/mastodon/locales/ja.json | 2 ++ config/locales/doorkeeper.fi.yml | 2 +- config/locales/et.yml | 3 +++ config/locales/gd.yml | 3 +++ config/locales/simple_form.et.yml | 2 ++ config/locales/simple_form.gd.yml | 2 ++ 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index c360a3aa23..8376641179 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Küsitluse kestus", "compose_form.poll.multiple": "Mitu vastust", "compose_form.poll.option_placeholder": "Valik {number}", + "compose_form.poll.single": "Üks valik", "compose_form.poll.switch_to_multiple": "Muuda küsitlust mitmikvaliku lubamiseks", "compose_form.poll.switch_to_single": "Muuda küsitlust ainult ühe valiku lubamiseks", "compose_form.poll.type": "Stiil", @@ -196,6 +197,7 @@ "confirmations.unfollow.title": "Ei jälgi enam kasutajat?", "content_warning.hide": "Peida postitus", "content_warning.show": "Näita ikkagi", + "content_warning.show_more": "Näita rohkem", "conversation.delete": "Kustuta vestlus", "conversation.mark_as_read": "Märgi loetuks", "conversation.open": "Vaata vestlust", @@ -304,6 +306,7 @@ "filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus", "filter_modal.select_filter.title": "Filtreeri seda postitust", "filter_modal.title.status": "Postituse filtreerimine", + "filter_warning.matches_filter": "Sobib filtriga “{title}”", "filtered_notifications_banner.pending_requests": "{count, plural, =0 {Mitte üheltki inimeselt} one {Ühelt inimeselt} other {# inimeselt}}, keda võid teada", "filtered_notifications_banner.title": "Filtreeritud teavitused", "firehose.all": "Kõik", @@ -383,6 +386,7 @@ "interaction_modal.description.follow": "Mastodoni kontoga saad jälgida kasutajat {name}, et tema postitusi oma koduvoos näha.", "interaction_modal.description.reblog": "Mastodoni kontoga saad seda postitust levitada, jagades seda oma jälgijatele.", "interaction_modal.description.reply": "Mastodoni kontoga saad sellele postitusele vastata.", + "interaction_modal.description.vote": "Mastodoni kontoga saad sellest küsitlusest osa võtta.", "interaction_modal.login.action": "Vii mind avalehele", "interaction_modal.login.prompt": "Sinu koduserveri domeen, näiteks mastodon.social", "interaction_modal.no_account_yet": "Pole Mastodonis?", @@ -394,6 +398,7 @@ "interaction_modal.title.follow": "Jälgi kontot {name}", "interaction_modal.title.reblog": "Jaga {name} postitust", "interaction_modal.title.reply": "Vasta kasutaja {name} postitusele", + "interaction_modal.title.vote": "Hääleta {name} küsitluses", "intervals.full.days": "{number, plural, one {# päev} other {# päeva}}", "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", @@ -506,6 +511,7 @@ "notification.favourite": "{name} märkis su postituse lemmikuks", "notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# veel} other {# teist}} märkis su postituse lemmikuks", "notification.follow": "{name} alustas su jälgimist", + "notification.follow.name_and_others": "{name} ja veel {count, plural, one {# kasutaja} other {# kasutajat}} hakkas sind jälgima", "notification.follow_request": "{name} soovib sind jälgida", "notification.follow_request.name_and_others": "{name} ja {count, plural, one {# veel} other {# teist}} taotles sinu jälgimist", "notification.label.mention": "Mainimine", @@ -564,6 +570,7 @@ "notifications.column_settings.filter_bar.category": "Kiirfiltri riba", "notifications.column_settings.follow": "Uued jälgijad:", "notifications.column_settings.follow_request": "Uued jälgimistaotlused:", + "notifications.column_settings.group": "Grupp", "notifications.column_settings.mention": "Mainimised:", "notifications.column_settings.poll": "Küsitluse tulemused:", "notifications.column_settings.push": "Push teated", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index fd971edfd3..2222e6038c 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -439,7 +439,7 @@ "lightbox.close": "Sulje", "lightbox.next": "Seuraava", "lightbox.previous": "Edellinen", - "lightbox.zoom_in": "Näytä alkuperäiskokoisena", + "lightbox.zoom_in": "Näytä todellisen kokoisena", "lightbox.zoom_out": "Näytä sovitettuna", "limited_account_hint.action": "Näytä profiili joka tapauksessa", "limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.", @@ -529,7 +529,7 @@ "notification.moderation_warning.action_sensitive": "Tästä lähtien julkaisusi merkitään arkaluonteisiksi.", "notification.moderation_warning.action_silence": "Tiliäsi on rajoitettu.", "notification.moderation_warning.action_suspend": "Tilisi on jäädytetty.", - "notification.own_poll": "Kyselysi on päättynyt", + "notification.own_poll": "Äänestyksesi on päättynyt", "notification.poll": "Äänestys, johon osallistuit, on päättynyt", "notification.reblog": "{name} tehosti julkaisuasi", "notification.reblog.name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}} tehostivat julkaisuasi", @@ -572,7 +572,7 @@ "notifications.column_settings.follow_request": "Uudet seurantapyynnöt:", "notifications.column_settings.group": "Ryhmitä", "notifications.column_settings.mention": "Maininnat:", - "notifications.column_settings.poll": "Kyselyn tulokset:", + "notifications.column_settings.poll": "Äänestyksen tulokset:", "notifications.column_settings.push": "Puskuilmoitukset", "notifications.column_settings.reblog": "Tehostukset:", "notifications.column_settings.show": "Näytä sarakkeessa", @@ -586,7 +586,7 @@ "notifications.filter.favourites": "Suosikit", "notifications.filter.follows": "Seuraamiset", "notifications.filter.mentions": "Maininnat", - "notifications.filter.polls": "Kyselyn tulokset", + "notifications.filter.polls": "Äänestyksen tulokset", "notifications.filter.statuses": "Päivitykset seuraamiltasi käyttäjiltä", "notifications.grant_permission": "Myönnä käyttöoikeus.", "notifications.group": "{count} ilmoitusta", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index c0ef224b70..6f319dbb10 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "Mastodonのアカウントで{name}さんをフォローしてホームフィードで投稿を受け取れます。", "interaction_modal.description.reblog": "Mastodonのアカウントでこの投稿をブーストして自分のフォロワーに共有できます。", "interaction_modal.description.reply": "Mastodonのアカウントでこの投稿に反応できます。", + "interaction_modal.description.vote": "Mastodonのアカウントでこのアンケートに票を入れることができます。", "interaction_modal.login.action": "サーバーに移動", "interaction_modal.login.prompt": "登録したサーバーのドメイン (例: mastodon.social)", "interaction_modal.no_account_yet": "Mastodonにアカウントがない場合は", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "{name}さんをフォロー", "interaction_modal.title.reblog": "{name}さんの投稿をブースト", "interaction_modal.title.reply": "{name}さんの投稿にリプライ", + "interaction_modal.title.vote": "{name}さんのアンケートに投票", "intervals.full.days": "{number}日", "intervals.full.hours": "{number}時間", "intervals.full.minutes": "{number}分", diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index 24228d54a9..7d44a6a6b9 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -60,7 +60,7 @@ fi: error: title: Tapahtui virhe new: - prompt_html: "%{client_name} haluaisi luvan tilisi hyödyntämiseksi. Hyväksy pyyntö vain, jos tunnistat lähteen ja luotat siihen." + prompt_html: "%{client_name} haluaisi käyttöoikeuden tiliisi. Hyväksy tämä pyyntö vain, jos tunnistat lähteen ja luotat siihen." review_permissions: Tarkista käyttöoikeudet title: Valtuutus vaaditaan show: diff --git a/config/locales/et.yml b/config/locales/et.yml index 1a679af87f..3be9add91c 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -1166,8 +1166,11 @@ et: use_security_key: Kasuta turvavõtit author_attribution: example_title: Näidistekst + hint_html: Kirjutad uudiseid või blogisid Mastodonist väljapool? Määra, kuidas sinule viidatakse, kui neid lehti jagatakse Mastodonis. + instructions: 'Vaata, et artikli HTML sisus oleks see kood sees:' more_from_html: Rohkem kasutajalt %{name} s_blog: Kasutaja %{name} blogi + then_instructions: Siis lisa avaldaja domeeninimi allolevasse välja. title: Autori tunnustamine challenge: confirm: Jätka diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 3495a070ec..a05ce6ed3c 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -1202,8 +1202,11 @@ gd: use_security_key: Cleachd iuchair tèarainteachd author_attribution: example_title: Ball-sampaill teacsa + hint_html: An sgrìobh thu naidheachdan no bloga taobh a-muigh Mhastodon? Stiùirich mar a thèid iomradh a thoirt ort nuair a bhios na h-artaigilean agad ’gan co-roinneadh air Mastodon. + instructions: 'Dèan cinnteach gu bheil an còd seo am broinn HTML an artaigil agad:' more_from_html: Barrachd o %{name} s_blog: Bloga aig %{name} + then_instructions: An uair sin, cuir ainm àrainn an fhoillseachaidh ris an raon gu h-ìosal. title: Aithris air an ùghdar challenge: confirm: Lean air adhart diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 4a9245682d..a2ebf63b11 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -3,6 +3,7 @@ et: simple_form: hints: account: + attribution_domains_as_text: Üks rea peal. See kaitseb pahatahtlike viidete eest. discoverable: Su profiili ja avalikke postitusi võidakse Mastodoni erinevates piirkondades esile tõsta või soovitada ning su profiili soovitada teistele kasutajatele. display_name: Su täisnimi või naljanimi. fields: Su koduleht, sugu, vanus. Mistahes, mida soovid. @@ -143,6 +144,7 @@ et: url: Kuhu sündmused saadetakse labels: account: + attribution_domains_as_text: Sinule viidata lubatud veebilehed discoverable: Tõsta postitused ja profiil avastamise algoritmides esile fields: name: Nimetus diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 9b6c156de7..af1f06a316 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -3,6 +3,7 @@ gd: simple_form: hints: account: + attribution_domains_as_text: Loidhne fa leth do gach fear. Dìonaidh seo o iomraidhean meallta. discoverable: Dh’fhaoidte gun dèid na postaichean poblach ’s a’ phròifil agad a bhrosnachadh no a mholadh ann an caochladh roinnean de Mhastodon agus gun dèid a’ phròifil agad a mholadh do chàch. display_name: D’ ainm slàn no spòrsail. fields: An duilleag-dhachaigh agad, roimhearan, aois, rud sam bith a thogras tu. @@ -143,6 +144,7 @@ gd: url: Far an dèid na tachartasan a chur labels: account: + attribution_domains_as_text: Na làraichean-lìn a dh’fhaodas iomradh a thoirt ort discoverable: Brosnaich a’ phròifil is postaichean agad sna h-algairimean rùrachaidh fields: name: Leubail From 75b2ac49fb75cc9a842baec207325ef2b3a1335d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:02:47 +0100 Subject: [PATCH 289/550] Update dependency strong_migrations to v2.0.2 (#32705) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f1088b22b6..0166572b3c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -823,7 +823,7 @@ GEM stoplight (4.1.0) redlock (~> 1.0) stringio (3.1.1) - strong_migrations (2.0.1) + strong_migrations (2.0.2) activerecord (>= 6.1) swd (1.3.0) activesupport (>= 3) From 87aa3467cf1b494ecd85d6ffcc94c2cdbec9dce4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:03:07 +0100 Subject: [PATCH 290/550] Update dependency selenium-webdriver to v4.26.0 (#32698) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0166572b3c..febc42e401 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -782,7 +782,7 @@ GEM scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.25.0) + selenium-webdriver (4.26.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) From b3b3c0fe9606147fd60e6306ffc384275bc97616 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:28:20 +0100 Subject: [PATCH 291/550] Update dependency core-js to v3.39.0 (#32707) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7762f96102..0b24803e6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6373,9 +6373,9 @@ __metadata: linkType: hard "core-js@npm:^3.30.2": - version: 3.38.1 - resolution: "core-js@npm:3.38.1" - checksum: 10c0/7df063b6f13a54e46515817ac3e235c6c598a4d3de65cd188a061fc250642be313b895fb9fb2f36e1e31890a1bb4ef61d82666a340413f540b7ce3c65689739b + version: 3.39.0 + resolution: "core-js@npm:3.39.0" + checksum: 10c0/f7602069b6afb2e3298eec612a5c1e0c3e6a458930fbfc7a4c5f9ac03426507f49ce395eecdd2d9bae9024f820e44582b67ffe16f2272395af26964f174eeb6b languageName: node linkType: hard From 516c97a112f6b9e9cc34c56d7300d04b54954f65 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:42:18 +0100 Subject: [PATCH 292/550] Update dependency node to v22 (#32689) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- Dockerfile | 2 +- streaming/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.nvmrc b/.nvmrc index 10fef252a9..8b84b727be 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.18 +22.11 diff --git a/Dockerfile b/Dockerfile index acb7631eb9..c6d8466f43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM} ARG RUBY_VERSION="3.3.5" # # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"] # renovate: datasource=node-version depName=node -ARG NODE_MAJOR_VERSION="20" +ARG NODE_MAJOR_VERSION="22" # Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"] ARG DEBIAN_VERSION="bookworm" # Node image to use for base image based on combined variables (ex: 20-bookworm-slim) diff --git a/streaming/Dockerfile b/streaming/Dockerfile index bed6b63738..f94c04e7a2 100644 --- a/streaming/Dockerfile +++ b/streaming/Dockerfile @@ -9,7 +9,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM} # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"] # renovate: datasource=node-version depName=node -ARG NODE_MAJOR_VERSION="20" +ARG NODE_MAJOR_VERSION="22" # Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"] ARG DEBIAN_VERSION="bookworm" # Node image to use for base image based on combined variables (ex: 20-bookworm-slim) From 917a799c673ea617beb9452c5fddbaaca6f406f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A9=20Dupuis?= <1518299+JoeDupuis@users.noreply.github.com> Date: Thu, 31 Oct 2024 06:46:07 -0400 Subject: [PATCH 293/550] Migrate from the deprecated `azure-storage-blob` to `azure-blob` (#32080) Co-authored-by: Renaud Chaput --- Gemfile | 2 +- Gemfile.lock | 24 +++++++----------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/Gemfile b/Gemfile index 97856d7825..97f5c7bcc5 100644 --- a/Gemfile +++ b/Gemfile @@ -18,8 +18,8 @@ gem 'aws-sdk-s3', '~> 1.123', require: false gem 'blurhash', '~> 0.1' gem 'fog-core', '<= 2.6.0' gem 'fog-openstack', '~> 1.0', require: false +gem 'jd-paperclip-azure', '~> 3.0', require: false gem 'kt-paperclip', '~> 7.2' -gem 'md-paperclip-azure', '~> 2.2', require: false gem 'ruby-vips', '~> 2.2', require: false gem 'active_model_serializers', '~> 0.10' diff --git a/Gemfile.lock b/Gemfile.lock index febc42e401..46a6766e5b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,14 +115,8 @@ GEM aws-sigv4 (~> 1.5) aws-sigv4 (1.10.1) aws-eventstream (~> 1, >= 1.0.2) - azure-storage-blob (2.0.3) - azure-storage-common (~> 2.0) - nokogiri (~> 1, >= 1.10.8) - azure-storage-common (2.0.4) - faraday (~> 1.0) - faraday_middleware (~> 1.0, >= 1.0.0.rc1) - net-http-persistent (~> 4.0) - nokogiri (~> 1, >= 1.10.8) + azure-blob (0.5.2) + rexml base64 (0.2.0) bcp47_spec (0.2.1) bcrypt (3.1.20) @@ -258,8 +252,6 @@ GEM faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) - faraday (~> 1.0) fast_blank (1.0.1) fastimage (2.3.1) ffi (1.17.0) @@ -350,6 +342,10 @@ GEM irb (1.14.1) rdoc (>= 4.0.0) reline (>= 0.4.2) + jd-paperclip-azure (3.0.0) + addressable (~> 2.5) + azure-blob (~> 0.5.2) + hashie (~> 5.0) jmespath (1.6.2) json (2.7.4) json-canonicalization (1.0.0) @@ -424,10 +420,6 @@ GEM mario-redis-lock (1.2.1) redis (>= 3.0.5) matrix (0.4.2) - md-paperclip-azure (2.2.0) - addressable (~> 2.5) - azure-storage-blob (~> 2.0.1) - hashie (~> 5.0) memory_profiler (1.1.0) mime-types (3.6.0) logger @@ -442,8 +434,6 @@ GEM mutex_m (0.2.0) net-http (0.4.1) uri - net-http-persistent (4.0.2) - connection_pool (~> 2.2) net-imap (0.5.0) date net-protocol @@ -958,6 +948,7 @@ DEPENDENCIES idn-ruby inline_svg irb (~> 1.8) + jd-paperclip-azure (~> 3.0) json-ld json-ld-preloaded (~> 3.2) json-schema (~> 5.0) @@ -969,7 +960,6 @@ DEPENDENCIES lograge (~> 0.12) mail (~> 2.8) mario-redis-lock (~> 1.2) - md-paperclip-azure (~> 2.2) memory_profiler mime-types (~> 3.6.0) net-http (~> 0.4.0) From a20ac20302f14e8cd14cd1abd6d02ddf528b58f5 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 31 Oct 2024 09:27:47 -0400 Subject: [PATCH 294/550] Add model spec for `Tombstone` (#32697) --- app/models/tombstone.rb | 2 ++ spec/fabricators/tombstone_fabricator.rb | 6 ++++++ spec/models/tombstone_spec.rb | 15 +++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 spec/fabricators/tombstone_fabricator.rb create mode 100644 spec/models/tombstone_spec.rb diff --git a/app/models/tombstone.rb b/app/models/tombstone.rb index bf666c43ac..92eddfc626 100644 --- a/app/models/tombstone.rb +++ b/app/models/tombstone.rb @@ -14,4 +14,6 @@ class Tombstone < ApplicationRecord belongs_to :account + + validates :uri, presence: true end diff --git a/spec/fabricators/tombstone_fabricator.rb b/spec/fabricators/tombstone_fabricator.rb new file mode 100644 index 0000000000..b4cab086af --- /dev/null +++ b/spec/fabricators/tombstone_fabricator.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +Fabricator(:tombstone) do + account + uri { sequence(:uri) { |i| "https://host.example/value/#{i}" } } +end diff --git a/spec/models/tombstone_spec.rb b/spec/models/tombstone_spec.rb new file mode 100644 index 0000000000..ba0603fe3d --- /dev/null +++ b/spec/models/tombstone_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Tombstone do + describe 'Associations' do + it { is_expected.to belong_to(:account).required } + end + + describe 'Validations' do + subject { Fabricate.build :tombstone } + + it { is_expected.to validate_presence_of(:uri) } + end +end From b231c3c1bfb701c504d3d17221cf4a758668a49e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 31 Oct 2024 11:12:08 -0400 Subject: [PATCH 295/550] Drop support for ruby 3.1 (#32363) --- .github/workflows/test-ruby.yml | 4 ---- .rubocop.yml | 2 +- Gemfile | 2 +- README.md | 2 +- app/controllers/activitypub/outboxes_controller.rb | 6 +++--- app/controllers/api/v1/accounts_controller.rb | 4 ++-- app/controllers/api/v1/follow_requests_controller.rb | 4 ++-- app/helpers/media_component_helper.rb | 12 ++++++------ app/helpers/routing_helper.rb | 12 ++++++------ app/lib/activitypub/activity.rb | 4 ++-- app/lib/rss/element.rb | 4 ++-- app/lib/translation_service/deepl.rb | 4 ++-- app/lib/translation_service/libre_translate.rb | 4 ++-- app/models/concerns/status/snapshot_concern.rb | 4 ++-- app/models/session_activation.rb | 4 ++-- app/models/user.rb | 4 ++-- lib/mastodon/cli/accounts.rb | 1 - spec/support/command_line_helpers.rb | 4 ++-- 18 files changed, 38 insertions(+), 43 deletions(-) diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index c05c8333b2..770cd72a1b 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -124,7 +124,6 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.1' - '3.2' - '.ruby-version' steps: @@ -226,7 +225,6 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.1' - '3.2' - '.ruby-version' steps: @@ -305,7 +303,6 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.1' - '3.2' - '.ruby-version' @@ -422,7 +419,6 @@ jobs: fail-fast: false matrix: ruby-version: - - '3.1' - '3.2' - '.ruby-version' search-image: diff --git a/.rubocop.yml b/.rubocop.yml index 965f56f3e7..ebeed6ea49 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,7 +8,7 @@ AllCops: - lib/mastodon/migration_helpers.rb ExtraDetails: true NewCops: enable - TargetRubyVersion: 3.1 # Oldest supported ruby version + TargetRubyVersion: 3.2 # Oldest supported ruby version inherit_from: - .rubocop/layout.yml diff --git a/Gemfile b/Gemfile index 97f5c7bcc5..0c3484a7aa 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 3.1.0' +ruby '>= 3.2.0' gem 'propshaft' gem 'puma', '~> 6.3' diff --git a/README.md b/README.md index 9c0b0d20ed..17d9eefb57 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre - **PostgreSQL** 12+ - **Redis** 4+ -- **Ruby** 3.1+ +- **Ruby** 3.2+ - **Node.js** 18+ The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, and **Scalingo**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation. diff --git a/app/controllers/activitypub/outboxes_controller.rb b/app/controllers/activitypub/outboxes_controller.rb index b8baf64e1a..0c995edbf8 100644 --- a/app/controllers/activitypub/outboxes_controller.rb +++ b/app/controllers/activitypub/outboxes_controller.rb @@ -41,11 +41,11 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController end end - def outbox_url(**kwargs) + def outbox_url(**) if params[:account_username].present? - account_outbox_url(@account, **kwargs) + account_outbox_url(@account, **) else - instance_actor_outbox_url(**kwargs) + instance_actor_outbox_url(**) end end diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 28acaeea05..f7d3de7f94 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -106,8 +106,8 @@ class Api::V1::AccountsController < Api::BaseController render json: { error: I18n.t('accounts.self_follow_error') }, status: 403 if current_user.account.id == @account.id end - def relationships(**options) - AccountRelationshipsPresenter.new([@account], current_user.account_id, **options) + def relationships(**) + AccountRelationshipsPresenter.new([@account], current_user.account_id, **) end def account_ids diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index 29a09fceef..4b44cfe531 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -28,8 +28,8 @@ class Api::V1::FollowRequestsController < Api::BaseController @account ||= Account.find(params[:id]) end - def relationships(**options) - AccountRelationshipsPresenter.new([account], current_user.account_id, **options) + def relationships(**) + AccountRelationshipsPresenter.new([account], current_user.account_id, **) end def load_accounts diff --git a/app/helpers/media_component_helper.rb b/app/helpers/media_component_helper.rb index 60ccdd0835..269566528a 100644 --- a/app/helpers/media_component_helper.rb +++ b/app/helpers/media_component_helper.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module MediaComponentHelper - def render_video_component(status, **options) + def render_video_component(status, **) video = status.ordered_media_attachments.first meta = video.file.meta || {} @@ -18,14 +18,14 @@ module MediaComponentHelper media: [ serialize_media_attachment(video), ].as_json, - }.merge(**options) + }.merge(**) react_component :video, component_params do render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } end end - def render_audio_component(status, **options) + def render_audio_component(status, **) audio = status.ordered_media_attachments.first meta = audio.file.meta || {} @@ -38,19 +38,19 @@ module MediaComponentHelper foregroundColor: meta.dig('colors', 'foreground'), accentColor: meta.dig('colors', 'accent'), duration: meta.dig('original', 'duration'), - }.merge(**options) + }.merge(**) react_component :audio, component_params do render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } end end - def render_media_gallery_component(status, **options) + def render_media_gallery_component(status, **) component_params = { sensitive: sensitive_viewer?(status, current_account), autoplay: prefers_autoplay?, media: status.ordered_media_attachments.map { |a| serialize_media_attachment(a).as_json }, - }.merge(**options) + }.merge(**) react_component :media_gallery, component_params do render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments } diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb index 15d988f64d..22efc5f092 100644 --- a/app/helpers/routing_helper.rb +++ b/app/helpers/routing_helper.rb @@ -14,8 +14,8 @@ module RoutingHelper end end - def full_asset_url(source, **options) - source = ActionController::Base.helpers.asset_url(source, **options) unless use_storage? + def full_asset_url(source, **) + source = ActionController::Base.helpers.asset_url(source, **) unless use_storage? URI.join(asset_host, source).to_s end @@ -24,12 +24,12 @@ module RoutingHelper Rails.configuration.action_controller.asset_host || root_url end - def frontend_asset_path(source, **options) - asset_pack_path("media/#{source}", **options) + def frontend_asset_path(source, **) + asset_pack_path("media/#{source}", **) end - def frontend_asset_url(source, **options) - full_asset_url(frontend_asset_path(source, **options)) + def frontend_asset_url(source, **) + full_asset_url(frontend_asset_path(source, **)) end def use_storage? diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 322f3e27ad..29411774a1 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -20,9 +20,9 @@ class ActivityPub::Activity end class << self - def factory(json, account, **options) + def factory(json, account, **) @json = json - klass&.new(json, account, **options) + klass&.new(json, account, **) end private diff --git a/app/lib/rss/element.rb b/app/lib/rss/element.rb index 7142fa0396..073fad1234 100644 --- a/app/lib/rss/element.rb +++ b/app/lib/rss/element.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class RSS::Element - def self.with(*args, &block) - new(*args).tap(&block).to_element + def self.with(*, &block) + new(*).tap(&block).to_element end def create_element(name, content = nil) diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index 925a1cf172..7761dbe626 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -42,8 +42,8 @@ class TranslationService::DeepL < TranslationService subtags.join('-') end - def request(verb, path, **options) - req = Request.new(verb, "#{base_url}#{path}", **options) + def request(verb, path, **) + req = Request.new(verb, "#{base_url}#{path}", **) req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}") req.perform do |res| case res.code diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index de43d7c88c..0df8590f87 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -27,8 +27,8 @@ class TranslationService::LibreTranslate < TranslationService private - def request(verb, path, **options) - req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options) + def request(verb, path, **) + req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **) req.add_headers('Content-Type': 'application/json') req.perform do |res| case res.code diff --git a/app/models/concerns/status/snapshot_concern.rb b/app/models/concerns/status/snapshot_concern.rb index ba624d943e..0289710904 100644 --- a/app/models/concerns/status/snapshot_concern.rb +++ b/app/models/concerns/status/snapshot_concern.rb @@ -29,7 +29,7 @@ module Status::SnapshotConcern ) end - def snapshot!(**options) - build_snapshot(**options).save! + def snapshot!(**) + build_snapshot(**).save! end end diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index 8b8e533d30..31f18fd7ef 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -35,8 +35,8 @@ class SessionActivation < ApplicationRecord id && exists?(session_id: id) end - def activate(**options) - activation = create!(**options) + def activate(**) + activation = create!(**) purge_old activation end diff --git a/app/models/user.rb b/app/models/user.rb index c32a575edf..69c5a01569 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -405,8 +405,8 @@ class User < ApplicationRecord @pending_devise_notifications ||= [] end - def render_and_send_devise_message(notification, *args, **kwargs) - devise_mailer.send(notification, self, *args, **kwargs).deliver_later + def render_and_send_devise_message(notification, *, **) + devise_mailer.send(notification, self, *, **).deliver_later end def set_approved diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index e76735298f..23c907543f 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require 'set' require_relative 'base' module Mastodon::CLI diff --git a/spec/support/command_line_helpers.rb b/spec/support/command_line_helpers.rb index 6f9d63d939..09b2b70ba1 100644 --- a/spec/support/command_line_helpers.rb +++ b/spec/support/command_line_helpers.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true module CommandLineHelpers - def output_results(*args) + def output_results(*) output( - include(*args) + include(*) ).to_stdout end end From 080b3b6ca5dde6426d0f5f44345980dbfdc569c0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 31 Oct 2024 11:13:20 -0400 Subject: [PATCH 296/550] Update `rails-i18n` to version 7.0.10 (#32719) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 46a6766e5b..fae39aefc3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -654,7 +654,7 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - rails-i18n (7.0.9) + rails-i18n (7.0.10) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) railties (7.1.4.2) From b06fd54c305915527e3a6edc575dc23b623143ef Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 31 Oct 2024 12:00:21 -0400 Subject: [PATCH 297/550] Update `zeitwerk` to version 2.7.1 (#32723) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index fae39aefc3..c714838170 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -893,7 +893,7 @@ GEM xorcist (1.1.3) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.18) + zeitwerk (2.7.1) PLATFORMS ruby From dfdc6b2871f21b2c381e2c4acfd4909c432134e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:38:20 +0100 Subject: [PATCH 298/550] Update devDependencies (non-major) (#32761) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0b24803e6c..094af85900 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2206,8 +2206,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.3.5 - resolution: "@formatjs/cli@npm:6.3.5" + version: 6.3.6 + resolution: "@formatjs/cli@npm:6.3.6" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2236,7 +2236,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/f3fd57de6df3ef0cfa668813c49acd7dcbecbf52444f30e8edec4ee7bc2d8c47c2e6fb4b7ce3c9c5b4595bdf8416c37953ebb05b400f99874a7f810943f6265b + checksum: 10c0/55f10699644c8b879d7fcf38660e7d9b0642c5f40ca59076c25ba190f350b48d7edb7f3d8481cc6139d3a708ee73f877c2c0a7d1865f15e80a73667270c9b7e3 languageName: node linkType: hard @@ -3445,8 +3445,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.0.0": - version: 6.6.2 - resolution: "@testing-library/jest-dom@npm:6.6.2" + version: 6.6.3 + resolution: "@testing-library/jest-dom@npm:6.6.3" dependencies: "@adobe/css-tools": "npm:^4.4.0" aria-query: "npm:^5.0.0" @@ -3455,7 +3455,7 @@ __metadata: dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.21" redent: "npm:^3.0.0" - checksum: 10c0/1c51390f97063ce8b06a7267534aac0d6ac9b1f27042a0ae43ca52d886b32c9d2b0ff85e62e7cfeb7e1f089ef03c4d75fda4f2b7b1f08afb4bdb09a5d56566d9 + checksum: 10c0/5566b6c0b7b0709bc244aec3aa3dc9e5f4663e8fb2b99d8cd456fc07279e59db6076cbf798f9d3099a98fca7ef4cd50e4e1f4c4dec5a60a8fad8d24a638a5bf6 languageName: node linkType: hard From 165710647353c6fd1deccb2b2309c4a7f5a4e7f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:38:32 +0100 Subject: [PATCH 299/550] Update DefinitelyTyped types (non-major) (#32760) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 094af85900..d753de80e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3776,9 +3776,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.195": - version: 4.17.12 - resolution: "@types/lodash@npm:4.17.12" - checksum: 10c0/106008f628ea3c74ed7ee7842dee79e230c84e3721ac38c293700031adb5bd130113048c22f476dbde0d0c119506b0fc447d4bd62eca922682d11e00e1377967 + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: 10c0/c3d0b7efe7933ac0369b99f2f7bff9240d960680fdb74b41ed4bd1b3ca60cca1e31fe4046d9abbde778f941a41bc2a75eb629abf8659fa6c27b66efbbb0802a9 languageName: node linkType: hard @@ -4151,11 +4151,11 @@ __metadata: linkType: hard "@types/ws@npm:^8.5.9": - version: 8.5.12 - resolution: "@types/ws@npm:8.5.12" + version: 8.5.13 + resolution: "@types/ws@npm:8.5.13" dependencies: "@types/node": "npm:*" - checksum: 10c0/3fd77c9e4e05c24ce42bfc7647f7506b08c40a40fe2aea236ef6d4e96fc7cb4006a81ed1b28ec9c457e177a74a72924f4768b7b4652680b42dfd52bc380e15f9 + checksum: 10c0/a5430aa479bde588e69cb9175518d72f9338b6999e3b2ae16fc03d3bdcff8347e486dc031e4ed14601260463c07e1f9a0d7511dfc653712b047c439c680b0b34 languageName: node linkType: hard From f2763d978c645597217163b64ea678ac0688b570 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 09:38:46 +0100 Subject: [PATCH 300/550] Update formatjs monorepo (#32751) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 174 +++++++++++++++++++++++++++--------------------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/yarn.lock b/yarn.lock index d753de80e6..d54e6b3172 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2251,14 +2251,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.2.1": - version: 2.2.1 - resolution: "@formatjs/ecma402-abstract@npm:2.2.1" +"@formatjs/ecma402-abstract@npm:2.2.2": + version: 2.2.2 + resolution: "@formatjs/ecma402-abstract@npm:2.2.2" dependencies: - "@formatjs/fast-memoize": "npm:2.2.2" - "@formatjs/intl-localematcher": "npm:0.5.6" + "@formatjs/fast-memoize": "npm:2.2.3" + "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/bb0b01282368d201d9bcfb3232963af90069f6048da5824d38a674118fd49a0cb92b05d19d2526fe6d035428b2e47e1abd671bb59a673317f1418e67974253fa + checksum: 10c0/dc712dd9959c9caa161282e3fb8f4a45c7368c4ada07576619d22b72678ece83459d6ec8b5ac3eee7def3b4398b68483c0ee91b49241024b41906333fd94ce21 languageName: node linkType: hard @@ -2271,12 +2271,12 @@ __metadata: languageName: node linkType: hard -"@formatjs/fast-memoize@npm:2.2.2": - version: 2.2.2 - resolution: "@formatjs/fast-memoize@npm:2.2.2" +"@formatjs/fast-memoize@npm:2.2.3": + version: 2.2.3 + resolution: "@formatjs/fast-memoize@npm:2.2.3" dependencies: tslib: "npm:2" - checksum: 10c0/cebbf632a6ed8798ed67dba59d05be8bbe81c9ada7bcbc8ce69798fbaa5e0117c35792f212097d28b8b06fb99cf73bdbc7754702c06cda34f847e5082814643b + checksum: 10c0/f1004c3b280de7e362bd37c5f48ff34c2ba1d6271d4a7b695fed561d1201a3379397824d8bffbf15fecee344d1e70398393bbb04297f242692310a305f12e75b languageName: node linkType: hard @@ -2291,14 +2291,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.9.1": - version: 2.9.1 - resolution: "@formatjs/icu-messageformat-parser@npm:2.9.1" +"@formatjs/icu-messageformat-parser@npm:2.9.2": + version: 2.9.2 + resolution: "@formatjs/icu-messageformat-parser@npm:2.9.2" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/icu-skeleton-parser": "npm:1.8.5" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/icu-skeleton-parser": "npm:1.8.6" tslib: "npm:2" - checksum: 10c0/53554edc7d41f6bd737dc3bb3e03dcd4b4081b4fc9a70383612b87993c1639747d1d3827d8ebb13f8bf3566c60442549a0a42df4959699eef76633d4c7b49b25 + checksum: 10c0/5f65377e56a2f0426240f05c015584b629713f0c9e1b7bc6db78c6d2e94b4d28bdd4c674ee32be695e493cd2f80a8168b7cd3c64a23ec36f9e18db2ae080e51b languageName: node linkType: hard @@ -2312,35 +2312,35 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-skeleton-parser@npm:1.8.5": - version: 1.8.5 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.5" +"@formatjs/icu-skeleton-parser@npm:1.8.6": + version: 1.8.6 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.6" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" + "@formatjs/ecma402-abstract": "npm:2.2.2" tslib: "npm:2" - checksum: 10c0/3e5ddd26e5dc983547320ca09b4a5daa692a00c15382e85474a9a539c223b581dba2290708d71aae12589c3ddd053b3bfd0dab0a07a11c44033fb313605566bc + checksum: 10c0/16993372de234aed52a75877247d911125e063aef77daf779e839a3c7a1213b37ffc8c95350375d303e43e30245711a0db693c4d856e6b0c2f3402644a8fb72d languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.8.1": - version: 6.8.1 - resolution: "@formatjs/intl-displaynames@npm:6.8.1" +"@formatjs/intl-displaynames@npm:6.8.2": + version: 6.8.2 + resolution: "@formatjs/intl-displaynames@npm:6.8.2" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/intl-localematcher": "npm:0.5.6" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/6d39c7bbc3cf0b1398463d662662e5c7c8b873fe977e93b7d702a337f1ed639246492b71b7138c1f193df9e1045add5609edb3fd3efc76c6174ce134c02a186f + checksum: 10c0/52f3e7f74f9ce114860e235d66889f0cea559df060a879852613f76c673a355f0fc7ebe7d173f058dbbd9e760b57816a3b09a1e447448fef262abc76332bc132 languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.7.1": - version: 7.7.1 - resolution: "@formatjs/intl-listformat@npm:7.7.1" +"@formatjs/intl-listformat@npm:7.7.2": + version: 7.7.2 + resolution: "@formatjs/intl-listformat@npm:7.7.2" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/intl-localematcher": "npm:0.5.6" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/9ac38d34956ee8018c000bbd594c84f1de283d18441f1376b072658844735a4ebee61ac4711f824dd0a89f4a855acfc7a24159e4cd8a4747609b1d2153316a61 + checksum: 10c0/d42fa043380252f11e300c696f6b366f817c93cac6d9aabc6dc96fb8efcfbc2873b11adac5928e4e1ce7eb1482bbb22b76a5a8520ef7f742ae23863b6edaa088 languageName: node linkType: hard @@ -2353,43 +2353,43 @@ __metadata: languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.5.6": - version: 0.5.6 - resolution: "@formatjs/intl-localematcher@npm:0.5.6" +"@formatjs/intl-localematcher@npm:0.5.7": + version: 0.5.7 + resolution: "@formatjs/intl-localematcher@npm:0.5.7" dependencies: tslib: "npm:2" - checksum: 10c0/39fc454641b7871f4b37416a01c7851624db6f1bf6cdcd5c854dfe06b95c0ca7540ec7c803a654140fc3f1c758596a684de8054bc95c4d6c7962091c251f5671 + checksum: 10c0/1ae374ca146a0d7457794926eed808c99971628e594f704a42ae2540b1f38928b26cbf942a7bbcc2796cc9fe8d9d7a603ac422bd9b89b714d2f91b506da40792 languageName: node linkType: hard "@formatjs/intl-pluralrules@npm:^5.2.2": - version: 5.3.1 - resolution: "@formatjs/intl-pluralrules@npm:5.3.1" + version: 5.3.2 + resolution: "@formatjs/intl-pluralrules@npm:5.3.2" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/intl-localematcher": "npm:0.5.6" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/71a87aa81d5d69d56dca0636144f8f9714176b95fe3bc92ae1e455322c09b5b09ba0018315d81def00e89fc95e4fbffe41110104c86eb189ba6d58ac09efa48c + checksum: 10c0/c8fde868650b2ac9fb9799791a517b052bd2eb8fb2bcdee225a131d20dd300125eb608129b47bc955e8fdf8f90f7b981bb889485fd6f9bcfb7a267e3d07a495d languageName: node linkType: hard -"@formatjs/intl@npm:2.10.11": - version: 2.10.11 - resolution: "@formatjs/intl@npm:2.10.11" +"@formatjs/intl@npm:2.10.12": + version: 2.10.12 + resolution: "@formatjs/intl@npm:2.10.12" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/fast-memoize": "npm:2.2.2" - "@formatjs/icu-messageformat-parser": "npm:2.9.1" - "@formatjs/intl-displaynames": "npm:6.8.1" - "@formatjs/intl-listformat": "npm:7.7.1" - intl-messageformat: "npm:10.7.3" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/fast-memoize": "npm:2.2.3" + "@formatjs/icu-messageformat-parser": "npm:2.9.2" + "@formatjs/intl-displaynames": "npm:6.8.2" + "@formatjs/intl-listformat": "npm:7.7.2" + intl-messageformat: "npm:10.7.4" tslib: "npm:2" peerDependencies: typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/83baa76d1194dbaae38c21d28cdc4e1ce024f8c49a37e2c02629a9f6afe18912f640435e346fae11af7d8128dac6355b36b93cff37685542ab3095edf3ec6d19 + checksum: 10c0/4475b1167c1cc6f2dbf9e373d4ba964032f80a25ca1ba18eca03dfa1730fcaef2c7cfe046252aaf3c23cf87e0968d565d3b7d1c2c336aec097193914173583c1 languageName: node linkType: hard @@ -2413,13 +2413,13 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.20": - version: 3.13.20 - resolution: "@formatjs/ts-transformer@npm:3.13.20" +"@formatjs/ts-transformer@npm:3.13.21": + version: 3.13.21 + resolution: "@formatjs/ts-transformer@npm:3.13.21" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@formatjs/icu-messageformat-parser": "npm:2.9.2" "@types/json-stable-stringify": "npm:1" - "@types/node": "npm:14 || 16 || 17 || 18 || 20" + "@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22" chalk: "npm:4" json-stable-stringify: "npm:1" tslib: "npm:2" @@ -2429,7 +2429,7 @@ __metadata: peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/0c1a203ce2e0efc24b9c1fc087771330f9630ebb4220e34dd2fffe64d5ee94816554df8ed8402a54dd588c186617765efb6c200a3373cf1d5dfb093ba8d70416 + checksum: 10c0/e83c8ebd210e451743745e939193bb37a1bba3acc5ba1e15a509968bdbb98a07d0761133cc5aa2375074281d56d9987f782af712111d82ee1f7aef7ad30d88fc languageName: node linkType: hard @@ -3803,12 +3803,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:14 || 16 || 17 || 18 || 20": - version: 20.16.13 - resolution: "@types/node@npm:20.16.13" +"@types/node@npm:*, @types/node@npm:14 || 16 || 17 || 18 || 20 || 22": + version: 22.8.6 + resolution: "@types/node@npm:22.8.6" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10c0/7f4fd7176db0802c62e11ebbf7a66d0248e2dc8ec9153d9fc8bcb164d9aed581d91c407046c823c522e60d0babfdc24a1618dba7f2c6920ef1a24e1d416c9550 + undici-types: "npm:~6.19.8" + checksum: 10c0/d3a11f2549234a91a4c5d0ff35ab4bdcb7ba34db4d3f1d189be39b8bd41c19aac98d117150a95a9c5a9d45b1014135477ea240b2b8317c86ae3d3cf1c3b3f8f4 languageName: node linkType: hard @@ -3998,7 +3998,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7, @types/react@npm:^18.3.11": +"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7": version: 18.3.12 resolution: "@types/react@npm:18.3.12" dependencies: @@ -5180,21 +5180,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.22 - resolution: "babel-plugin-formatjs@npm:10.5.22" + version: 10.5.23 + resolution: "babel-plugin-formatjs@npm:10.5.23" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.9.1" - "@formatjs/ts-transformer": "npm:3.13.20" + "@formatjs/icu-messageformat-parser": "npm:2.9.2" + "@formatjs/ts-transformer": "npm:3.13.21" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:2" - checksum: 10c0/c35ec81d89eb228d23d3d62e7e4d0e5d7216f0d09f91b1dc3c46e049c5515a201fcfe77c1079924c6bfb9883b2941af91431f479a0f5a24a0574b695f18b64bc + checksum: 10c0/1484b6a18beea114d800754c3ffa6296a52676eb68b7f280f9e04e34efed12bcb61ecd881ba042907998bc00df0a5eb9111932c7b5df2fb6d6eae0692984c633 languageName: node linkType: hard @@ -9741,15 +9741,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.3, intl-messageformat@npm:^10.3.5": - version: 10.7.3 - resolution: "intl-messageformat@npm:10.7.3" +"intl-messageformat@npm:10.7.4, intl-messageformat@npm:^10.3.5": + version: 10.7.4 + resolution: "intl-messageformat@npm:10.7.4" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/fast-memoize": "npm:2.2.2" - "@formatjs/icu-messageformat-parser": "npm:2.9.1" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/fast-memoize": "npm:2.2.3" + "@formatjs/icu-messageformat-parser": "npm:2.9.2" tslib: "npm:2" - checksum: 10c0/7ddd118c04023c9ecdf9a2270753abd876e90a428d5106ce8373622ddefe72ff1daa33993b12065a3339b7f838e9266c3db9048aa7dd20012c8703c6ebe26fd4 + checksum: 10c0/698e1b020f744a1790eb0a68edc86a8d215c3d3df3d67a1c77f50ce0582af9fadc8656ff988b7806708f997e0e8462a044602f28d8f334f4e8b3233cf3b03f3e languageName: node linkType: hard @@ -14474,18 +14474,18 @@ __metadata: linkType: hard "react-intl@npm:^6.4.2": - version: 6.8.4 - resolution: "react-intl@npm:6.8.4" + version: 6.8.5 + resolution: "react-intl@npm:6.8.5" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.1" - "@formatjs/icu-messageformat-parser": "npm:2.9.1" - "@formatjs/intl": "npm:2.10.11" - "@formatjs/intl-displaynames": "npm:6.8.1" - "@formatjs/intl-listformat": "npm:7.7.1" + "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.2" + "@formatjs/intl": "npm:2.10.12" + "@formatjs/intl-displaynames": "npm:6.8.2" + "@formatjs/intl-listformat": "npm:7.7.2" "@types/hoist-non-react-statics": "npm:3" - "@types/react": "npm:^18.3.11" + "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.3" + intl-messageformat: "npm:10.7.4" tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14493,7 +14493,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a6b417c1cfb36ffe38645fe9daaaf3e1a25660468b8dbd4ccf386be063cc7c0fdeecc3c0490c671721408696b6578262b8db5882d00b76d4ec48d94601b14eab + checksum: 10c0/73707912c00a646460c1497f7004bf511b58ec28265f0d8d65b1677a43f62a957bab40f2b5a1759b7f11cc28af10754e8552890b9b485d3f9505c0a36a692fbc languageName: node linkType: hard @@ -17339,7 +17339,7 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": +"undici-types@npm:~6.19.8": version: 6.19.8 resolution: "undici-types@npm:6.19.8" checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 From 5bc32c47a23ce56ccdae9c40d94cf8d711f977ae Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:40:52 +0000 Subject: [PATCH 301/550] Update dependency oj to v3.16.7 (#32741) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c714838170..8b660b976b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -448,7 +448,7 @@ GEM nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) - oj (3.16.6) + oj (3.16.7) bigdecimal (>= 3.0) ostruct (>= 0.2) omniauth (2.1.2) From 074fb04c6a84e97959ef1ee0d7092ae90ad14635 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:42:39 +0000 Subject: [PATCH 302/550] Update dependency utf-8-validate to v6.0.5 (#32738) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d54e6b3172..da80fac3bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17599,12 +17599,12 @@ __metadata: linkType: hard "utf-8-validate@npm:^6.0.3": - version: 6.0.4 - resolution: "utf-8-validate@npm:6.0.4" + version: 6.0.5 + resolution: "utf-8-validate@npm:6.0.5" dependencies: node-gyp: "npm:latest" node-gyp-build: "npm:^4.3.0" - checksum: 10c0/f7042d94aec6ca02461b64e725bdc7262266610dbb787331e5bbd49374ef6f75fe9900600df3fc63d97906c23614a965c8989b4bf95d70bf35dc617da99215e7 + checksum: 10c0/6dc63c513adb001e47a51819072cdd414158430091c49c21d4947ea99f16df5167b671f680df8fb2b6f2ae6a7f30264b4ec111bd3e573720dfe371da1ab99a81 languageName: node linkType: hard From e7a93915dea95790688edf798de3f948d2a0acc0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 4 Nov 2024 03:44:59 -0500 Subject: [PATCH 303/550] Update browser to version 6.0.0 (#32728) --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 0c3484a7aa..22a8d86c3c 100644 --- a/Gemfile +++ b/Gemfile @@ -25,7 +25,7 @@ gem 'ruby-vips', '~> 2.2', require: false gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' gem 'bootsnap', '~> 1.18.0', require: false -gem 'browser', '< 6' # https://github.com/fnando/browser/issues/543 +gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.3' gem 'devise', '~> 4.9' diff --git a/Gemfile.lock b/Gemfile.lock index 8b660b976b..392acf36bb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -133,7 +133,7 @@ GEM msgpack (~> 1.2) brakeman (6.2.2) racc - browser (5.3.1) + browser (6.0.0) brpoplpush-redis_script (0.1.3) concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, < 6) @@ -908,7 +908,7 @@ DEPENDENCIES blurhash (~> 0.1) bootsnap (~> 1.18.0) brakeman (~> 6.0) - browser (< 6) + browser bundler-audit (~> 0.9) capybara (~> 3.39) charlock_holmes (~> 0.7.7) From 2271b39a5c6ca4d762a45726aee09b58cd6ea8e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:56:11 +0000 Subject: [PATCH 304/550] New Crowdin Translations (automated) (#32733) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/eo.json | 4 +-- app/javascript/mastodon/locales/fi.json | 4 +-- app/javascript/mastodon/locales/fy.json | 7 +++++ app/javascript/mastodon/locales/ko.json | 4 ++- app/javascript/mastodon/locales/lv.json | 11 +++++-- app/javascript/mastodon/locales/ru.json | 39 +++++++++++++++---------- app/javascript/mastodon/locales/sk.json | 3 +- app/javascript/mastodon/locales/sv.json | 36 +++++++++++------------ app/javascript/mastodon/locales/th.json | 16 +++++----- config/locales/doorkeeper.th.yml | 2 +- config/locales/fy.yml | 4 +++ config/locales/gd.yml | 2 +- config/locales/simple_form.fy.yml | 2 ++ config/locales/simple_form.lv.yml | 2 +- config/locales/simple_form.nl.yml | 2 +- config/locales/simple_form.sv.yml | 2 +- config/locales/sv.yml | 22 +++++++------- config/locales/th.yml | 6 ++-- 18 files changed, 99 insertions(+), 69 deletions(-) diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 7abe0783c3..ee4d733ab8 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -45,7 +45,7 @@ "account.languages": "Ŝanĝi la abonitajn lingvojn", "account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}", "account.locked_info": "Tiu konto estas privatigita. La posedanto mane akceptas tiun, kiu povas sekvi rin.", - "account.media": "Plurmedioj", + "account.media": "Plurmedio", "account.mention": "Mencii @{name}", "account.moved_to": "{name} indikis, ke ria nova konto estas nun:", "account.mute": "Silentigi @{name}", @@ -142,7 +142,7 @@ "column_header.unpin": "Malfiksi", "column_subheading.settings": "Agordoj", "community.column_settings.local_only": "Nur loka", - "community.column_settings.media_only": "Nur plurmedioj", + "community.column_settings.media_only": "Nur plurmedio", "community.column_settings.remote_only": "Nur fora", "compose.language.change": "Ŝanĝi lingvon", "compose.language.search": "Serĉi lingvojn...", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 2222e6038c..f06566df75 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -158,7 +158,7 @@ "compose_form.poll.duration": "Äänestyksen kesto", "compose_form.poll.multiple": "Monivalinta", "compose_form.poll.option_placeholder": "Vaihtoehto {number}", - "compose_form.poll.single": "Yksi vaihtoehto", + "compose_form.poll.single": "Yksittäisvalinta", "compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi", "compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi", "compose_form.poll.type": "Tyyli", @@ -386,7 +386,7 @@ "interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.", "interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.", "interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.", - "interaction_modal.description.vote": "Osallistuminen äänestykseen onnistuu Mastodon-tilillä.", + "interaction_modal.description.vote": "Mastodon-tilillä voit osallistua tähän äänestykseen.", "interaction_modal.login.action": "Siirry kotiin", "interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus, kuten mastodon.social", "interaction_modal.no_account_yet": "Etkö ole vielä Mastodonissa?", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index e1c090cb0c..3f4d942b61 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Doer fan de enkête", "compose_form.poll.multiple": "Mearkar", "compose_form.poll.option_placeholder": "Opsje {number}", + "compose_form.poll.single": "Inkelde kar", "compose_form.poll.switch_to_multiple": "Enkête wizigje om meardere karren ta te stean", "compose_form.poll.switch_to_single": "Enkête wizigje om in inkelde kar ta te stean", "compose_form.poll.type": "Styl", @@ -196,6 +197,7 @@ "confirmations.unfollow.title": "Brûker net mear folgje?", "content_warning.hide": "Berjocht ferstopje", "content_warning.show": "Dochs toane", + "content_warning.show_more": "Mear toane", "conversation.delete": "Petear fuortsmite", "conversation.mark_as_read": "As lêzen markearje", "conversation.open": "Petear toane", @@ -304,6 +306,7 @@ "filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje", "filter_modal.select_filter.title": "Dit berjocht filterje", "filter_modal.title.status": "In berjocht filterje", + "filter_warning.matches_filter": "Komt oerien mei filter ‘{title}’", "filtered_notifications_banner.pending_requests": "Fan {count, plural, =0 {net ien} one {ien persoan} other {# persoanen}} dy’t jo mooglik kinne", "filtered_notifications_banner.title": "Filtere meldingen", "firehose.all": "Alles", @@ -383,6 +386,7 @@ "interaction_modal.description.follow": "Jo kinne mei in Mastodon-account {name} folgje, om sa harren berjochten op jo starttiidline te ûntfangen.", "interaction_modal.description.reblog": "Jo kinne mei in Mastodon-account dit berjocht booste, om it sa mei jo folgers te dielen.", "interaction_modal.description.reply": "Jo kinne mei in Mastodon-account op dit berjocht reagearje.", + "interaction_modal.description.vote": "Mei in Mastodon-account kinne jo yn dizze enkête stimme.", "interaction_modal.login.action": "Gean nei start", "interaction_modal.login.prompt": "Domein fan jo server, byg. mastodon.social", "interaction_modal.no_account_yet": "Net op Mastodon?", @@ -394,6 +398,7 @@ "interaction_modal.title.follow": "{name} folgje", "interaction_modal.title.reblog": "Berjocht fan {name} booste", "interaction_modal.title.reply": "Op it berjocht fan {name} reagearje", + "interaction_modal.title.vote": "Stimme yn {name}’s peiling", "intervals.full.days": "{number, plural, one {# dei} other {# dagen}} lyn", "intervals.full.hours": "{number, plural, one {# oere} other {# oeren}} lyn", "intervals.full.minutes": "{number, plural, one {# minút} other {# minuten}} lyn", @@ -506,6 +511,7 @@ "notification.favourite": "{name} hat jo berjocht as favoryt markearre", "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe jo berjocht as favoryt markearre", "notification.follow": "{name} folget dy", + "notification.follow.name_and_others": "{name} en {count, plural, one {# oar persoan} other {# oare persoanen}} folgje jo no", "notification.follow_request": "{name} hat dy in folchfersyk stjoerd", "notification.follow_request.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe frege om jo te folgjen", "notification.label.mention": "Fermelding", @@ -564,6 +570,7 @@ "notifications.column_settings.filter_bar.category": "Flugge filterbalke", "notifications.column_settings.follow": "Nije folgers:", "notifications.column_settings.follow_request": "Nij folchfersyk:", + "notifications.column_settings.group": "Groepearje", "notifications.column_settings.mention": "Fermeldingen:", "notifications.column_settings.poll": "Enkêteresultaten:", "notifications.column_settings.push": "Pushmeldingen", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 3462675e3e..dbdb5062cf 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -113,7 +113,7 @@ "bundle_modal_error.message": "컴포넌트를 불러오는 중 문제가 발생했습니다.", "bundle_modal_error.retry": "다시 시도", "closed_registrations.other_server_instructions": "마스토돈은 분산화 되어 있기 때문에, 다른 서버에서 계정을 만들더라도 이 서버와 상호작용 할 수 있습니다.", - "closed_registrations_modal.description": "{domain}은 현재 가입이 막혀있는 상태입니다, 마스토돈을 이용하기 위해 꼭 {domain}을 사용할 필요는 없다는 사실을 인지해 두세요.", + "closed_registrations_modal.description": "{domain}은 현재 가입이 불가능합니다. 하지만 마스토돈을 이용하기 위해 꼭 {domain}을 사용할 필요는 없다는 사실을 인지해 두세요.", "closed_registrations_modal.find_another_server": "다른 서버 찾기", "closed_registrations_modal.preamble": "마스토돈은 분산화 되어 있습니다, 그렇기 때문에 어디에서 계정을 생성하든, 이 서버에 있는 누구와도 팔로우와 상호작용을 할 수 있습니다. 심지어는 스스로 서버를 만드는 것도 가능합니다!", "closed_registrations_modal.title": "마스토돈에서 가입", @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "마스토돈 계정을 통해, {name} 님을 팔로우 하고 그의 게시물을 홈 피드에서 받아 볼 수 있습니다.", "interaction_modal.description.reblog": "마스토돈 계정을 통해, 이 게시물을 부스트 하고 자신의 팔로워들에게 공유할 수 있습니다.", "interaction_modal.description.reply": "마스토돈 계정을 통해, 이 게시물에 응답할 수 있습니다.", + "interaction_modal.description.vote": "마스토돈 계정을 통해, 이 투표에 참여할 수 있습니다.", "interaction_modal.login.action": "홈 서버로 가기", "interaction_modal.login.prompt": "내 홈 서버의 도메인. 예시: mastodon.social", "interaction_modal.no_account_yet": "Mastodon 계정이 없나요?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "{name} 님을 팔로우", "interaction_modal.title.reblog": "{name} 님의 게시물을 부스트", "interaction_modal.title.reply": "{name} 님의 게시물에 답글", + "interaction_modal.title.vote": "{name} 님의 투표에 참여", "intervals.full.days": "{number} 일", "intervals.full.hours": "{number} 시간", "intervals.full.minutes": "{number} 분", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index d7507ee884..30fc0ea348 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -36,6 +36,7 @@ "account.followers.empty": "Šim lietotājam vēl nav sekotāju.", "account.followers_counter": "{count, plural, zero {{count} sekotāju} one {{count} sekotājs} other {{count} sekotāji}}", "account.following": "Seko", + "account.following_counter": "{count, plural, one {seko {counter}} other {seko {counter}}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", "account.go_to_profile": "Doties uz profilu", "account.hide_reblogs": "Paslēpt @{name} pastiprinātos ierakstus", @@ -61,6 +62,7 @@ "account.requested_follow": "{name} nosūtīja Tev sekošanas pieprasījumu", "account.share": "Dalīties ar @{name} profilu", "account.show_reblogs": "Parādīt @{name} pastiprinātos ierakstus", + "account.statuses_counter": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}}", "account.unblock": "Atbloķēt @{name}", "account.unblock_domain": "Atbloķēt domēnu {domain}", "account.unblock_short": "Atbloķēt", @@ -191,6 +193,7 @@ "confirmations.unfollow.title": "Pārtraukt sekošanu lietotājam?", "content_warning.hide": "Paslēpt ierakstu", "content_warning.show": "Tomēr rādīt", + "content_warning.show_more": "Rādīt vairāk", "conversation.delete": "Dzēst sarunu", "conversation.mark_as_read": "Atzīmēt kā izlasītu", "conversation.open": "Skatīt sarunu", @@ -211,6 +214,7 @@ "dismissable_banner.explore_tags": "Šie ir tēmturi, kas šodien gūst uzmanību sabiedriskajā tīmeklī. Tēmturi, kurus izmanto vairāk dažādu cilvēku, tiek vērtēti augstāk.", "dismissable_banner.public_timeline": "Šie ir jaunākie publiskie ieraksti no lietotājiem sociālajā tīmeklī, kuriem {domain} seko cilvēki.", "domain_block_modal.block": "Bloķēt serveri", + "domain_block_modal.block_account_instead": "Tā vietā liegt @{name}", "domain_block_modal.they_cant_follow": "Neviens šajā serverī nevar Tev sekot.", "domain_block_modal.they_wont_know": "Viņi nezinās, ka tikuši bloķēti.", "domain_block_modal.title": "Bloķēt domēnu?", @@ -329,6 +333,7 @@ "home.pending_critical_update.link": "Skatīt jauninājumus", "home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.", "home.show_announcements": "Rādīt paziņojumus", + "ignore_notifications_modal.ignore": "Neņemt vērā paziņojumus", "interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.", "interaction_modal.description.follow": "Ar Mastodon kontu Tu vari sekot {name}, lai saņemtu lietotāja ierakstus savā mājas plūsmā.", "interaction_modal.description.reblog": "Ar Mastodon kontu Tu vari izvirzīt šo ierakstu, lai kopīgotu to ar saviem sekotājiem.", @@ -505,10 +510,10 @@ "onboarding.action.back": "Aizved mani atpakaļ", "onboarding.actions.back": "Aizved mani atpakaļ", "onboarding.actions.go_to_explore": "Skatīt tendences", - "onboarding.actions.go_to_home": "Dodieties uz manu mājas plūsmu", + "onboarding.actions.go_to_home": "Doties uz manu sākuma plūsmu", "onboarding.compose.template": "Sveiki, #Mastodon!", "onboarding.follows.empty": "Diemžēl pašlaik nevar parādīt rezultātus. Vari mēģināt izmantot meklēšanu vai pārlūkot izpētes lapu, lai atrastu cilvēkus, kuriem sekot, vai vēlāk mēģināt vēlreiz.", - "onboarding.follows.lead": "Tava mājas plūsma ir galvenais veids, kā pieredzēt Mastodon. Jo vairāk cilvēkiem sekosi, jo dzīvīgāka un aizraujošāka tā būs. Lai sāktu, šeit ir daži ieteikumi:", + "onboarding.follows.lead": "Tava sākuma plūsma ir galvenais veids, kā pieredzēt Mastodon. Jo vairāk cilvēkiem sekosi, jo dzīvīgāka un aizraujošāka tā būs. Lai sāktu, šeit ir daži ieteikumi:", "onboarding.follows.title": "Pielāgo savu mājas barotni", "onboarding.profile.discoverable": "Padarīt manu profilu atklājamu", "onboarding.profile.display_name": "Attēlojamais vārds", @@ -526,7 +531,7 @@ "onboarding.start.lead": "Tagad Tu esi daļa no Mastodon — vienreizējas, decentralizētas sociālās mediju platformas, kurā Tu, nevis algoritms, veido Tavu pieredzi. Sāksim darbu šajā jaunajā sociālajā jomā:", "onboarding.start.skip": "Nav nepieciešama palīdzība darba sākšanai?", "onboarding.start.title": "Tev tas izdevās!", - "onboarding.steps.follow_people.body": "Tu pats veido savu plūsmu. Piepildīsim to ar interesantiem cilvēkiem.", + "onboarding.steps.follow_people.body": "Sekošana aizraujošiem cilvēkiem ir tas, par ko ir Mastodon.", "onboarding.steps.follow_people.title": "Pielāgo savu mājas barotni", "onboarding.steps.publish_status.body": "Pasveicini pasauli ar tekstu, attēliem, video vai aptaujām {emoji}", "onboarding.steps.publish_status.title": "Izveido savu pirmo ziņu", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 2a985a1f84..d75b5fab26 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -84,7 +84,7 @@ "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.", "alert.rate_limited.title": "Ограничение количества запросов", "alert.unexpected.message": "Произошла непредвиденная ошибка.", - "alert.unexpected.title": "Упс!", + "alert.unexpected.title": "Ой!", "alt_text_badge.title": "Альтернативный текст", "announcement.announcement": "Объявление", "attachments_list.unprocessed": "(не обработан)", @@ -95,11 +95,11 @@ "block_modal.they_cant_mention": "Он не может упоминать или подписываться на вас.", "block_modal.they_cant_see_posts": "Он не может видеть ваши сообщения, и вы не увидите его.", "block_modal.they_will_know": "Он может видеть, что он заблокирован.", - "block_modal.title": "Заблокировать пользователя?", + "block_modal.title": "Заблокируем пользователя?", "block_modal.you_wont_see_mentions": "Вы не увидите записи, которые упоминают его.", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", - "boost_modal.reblog": "Повысить пост?", - "boost_modal.undo_reblog": "Разгрузить пост?", + "boost_modal.reblog": "Репостнуть?", + "boost_modal.undo_reblog": "Убрать репост?", "bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке", "bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.", "bundle_column_error.error.title": "О нет!", @@ -144,7 +144,7 @@ "community.column_settings.local_only": "Только локальные", "community.column_settings.media_only": "Только с медиафайлами", "community.column_settings.remote_only": "Только удалённые", - "compose.language.change": "Изменить язык", + "compose.language.change": "Сменить язык", "compose.language.search": "Поиск языков...", "compose.published.body": "Запись опубликована.", "compose.published.open": "Открыть", @@ -180,7 +180,7 @@ "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.edit.confirm": "Редактировать", "confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?", - "confirmations.edit.title": "Переписать сообщение?", + "confirmations.edit.title": "Перепишем сообщение?", "confirmations.logout.confirm": "Выйти", "confirmations.logout.message": "Вы уверены, что хотите выйти?", "confirmations.logout.title": "Выйти?", @@ -196,6 +196,7 @@ "confirmations.unfollow.title": "Отписаться?", "content_warning.hide": "Скрыть пост", "content_warning.show": "Всё равно показать", + "content_warning.show_more": "Покажи ещё", "conversation.delete": "Удалить беседу", "conversation.mark_as_read": "Отметить как прочитанное", "conversation.open": "Просмотр беседы", @@ -303,6 +304,7 @@ "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", "filter_modal.select_filter.title": "Фильтровать этот пост", "filter_modal.title.status": "Фильтровать пост", + "filter_warning.matches_filter": "Соответствует фильтру \"{title}\"", "filtered_notifications_banner.pending_requests": "Вы можете знать {count, plural, =0 {ни одного человека} one {одного человека} other {# человек}}", "filtered_notifications_banner.title": "Отфильтрованные уведомления", "firehose.all": "Все", @@ -382,6 +384,7 @@ "interaction_modal.description.follow": "С учётной записью Mastodon вы можете подписаться на {name}, чтобы получать их посты в своей домашней ленте.", "interaction_modal.description.reblog": "С учётной записью Mastodon, вы можете продвинуть этот пост, чтобы поделиться им со своими подписчиками.", "interaction_modal.description.reply": "Вы можете ответить на этот пост с учётной записью Mastodon.", + "interaction_modal.description.vote": "Вы сможете проголосовать тут имея аккаунт Mastodon.", "interaction_modal.login.action": "Перейти на домашнюю страницу", "interaction_modal.login.prompt": "Домен вашего домашнего сервера, например, mastodon.social", "interaction_modal.no_account_yet": "Еще не на Mastodon?", @@ -393,12 +396,13 @@ "interaction_modal.title.follow": "Подписаться на {name}", "interaction_modal.title.reblog": "Продвинуть публикацию {name}", "interaction_modal.title.reply": "Ответить на пост {name}", + "interaction_modal.title.vote": "Голосовать в опросе {name}", "intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}", "intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}", "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}", "keyboard_shortcuts.back": "перейти назад", "keyboard_shortcuts.blocked": "чтобы открыть список заблокированных", - "keyboard_shortcuts.boost": "продвинуть пост", + "keyboard_shortcuts.boost": "Репостнуть", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", "keyboard_shortcuts.description": "Описание", @@ -464,7 +468,7 @@ "mute_modal.show_options": "Показать опции", "mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.", "mute_modal.they_wont_know": "Они не будут знать, что их заглушили.", - "mute_modal.title": "Заглушить пользователя?", + "mute_modal.title": "Заткнуть пользователя?", "mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.", "mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.", "navigation_bar.about": "О проекте", @@ -505,6 +509,7 @@ "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# другие} other {# другие}} отдали предпочтение вашему посту", "notification.follow": "{name} подписался (-лась) на вас", + "notification.follow.name_and_others": "{name} и {count, plural, one {# other} few {# others} many {# others} other {# others}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", "notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас", "notification.label.mention": "Упоминание", @@ -512,7 +517,7 @@ "notification.label.private_reply": "Частный ответ", "notification.label.reply": "Ответить", "notification.mention": "Упоминание", - "notification.mentioned_you": "{name} упомянул(а) вас", + "notification.mentioned_you": "{name} упоминает вас", "notification.moderation-warning.learn_more": "Узнать больше", "notification.moderation_warning": "Вы получили предупреждение от модерации", "notification.moderation_warning.action_delete_statuses": "Некоторые из ваших публикаций были удалены.", @@ -558,6 +563,7 @@ "notifications.column_settings.filter_bar.category": "Панель сортировки", "notifications.column_settings.follow": "У вас новый подписчик:", "notifications.column_settings.follow_request": "Новые запросы на подписку:", + "notifications.column_settings.group": "Группа", "notifications.column_settings.mention": "Вас упомянули в посте:", "notifications.column_settings.poll": "Опрос, в котором вы приняли участие, завершился:", "notifications.column_settings.push": "Пуш-уведомления", @@ -600,8 +606,8 @@ "notifications_permission_banner.enable": "Включить уведомления", "notifications_permission_banner.how_to_control": "Получайте уведомления даже когда Mastodon закрыт, включив уведомления на рабочем столе. А чтобы лишний шум не отвлекал, вы можете настроить какие уведомления вы хотите получать, нажав на кнопку {icon} выше.", "notifications_permission_banner.title": "Будьте в курсе происходящего", - "onboarding.action.back": "Вернуть меня", - "onboarding.actions.back": "Вернуть меня", + "onboarding.action.back": "Верните меня", + "onboarding.actions.back": "Верните меня", "onboarding.actions.go_to_explore": "Посмотреть, что актуально", "onboarding.actions.go_to_home": "Перейти к домашней ленте новостей", "onboarding.compose.template": "Привет, #Mastodon!", @@ -619,7 +625,7 @@ "onboarding.profile.title": "Настройка профиля", "onboarding.profile.upload_avatar": "Загрузить фотографию профиля", "onboarding.profile.upload_header": "Загрузить заголовок профиля", - "onboarding.share.lead": "Расскажите людям, как они могут найти вас на Mastodon!", + "onboarding.share.lead": "Расскажите людям, как найти вас на Mastodon!", "onboarding.share.message": "Я {username} на #Mastodon! Следуйте за мной по адресу {url}", "onboarding.share.next_steps": "Возможные дальнейшие шаги:", "onboarding.share.title": "Поделиться вашим профилем", @@ -634,7 +640,7 @@ "onboarding.steps.setup_profile.title": "Настройте свой профиль", "onboarding.steps.share_profile.body": "Расскажите своим друзьям как найти вас на Mastodon!", "onboarding.steps.share_profile.title": "Поделитесь вашим профилем", - "onboarding.tips.2fa": "Знаете ли вы? Вы можете защитить свой аккаунт, настроив двухфакторную аутентификацию в настройках аккаунта. Она работает с любым приложением TOTP по вашему выбору, номер телефона не требуется!", + "onboarding.tips.2fa": "А вы знали? Можно защитить свой аккаунт, настроив двухфакторную аутентификацию в настройках аккаунта. Она работает с любым приложением TOTP по вашему выбору, номер телефона не нужен!", "onboarding.tips.accounts_from_other_servers": "Знали ли вы? Поскольку Mastodon децентрализован, некоторые профили, с которыми вы столкнетесь, будут размещены на серверах, отличных от вашего. И все же вы можете взаимодействовать с ними без проблем! Их сервер находится во второй половине имени пользователя!", "onboarding.tips.migration": "Знаете ли вы? Если вы чувствуете, что {domain} не подходит вам в качестве сервера в будущем, вы можете переехать на другой сервер Mastodon без потери своих подписчиков. Вы даже можете разместить свой собственный сервер!", "onboarding.tips.verification": "Знали ли вы? Вы можете подтвердить свою учетную запись, разместив ссылку на свой профиль Mastodon на собственном сайте и добавив сайт в свой профиль. Никаких сборов или документов не требуется!", @@ -665,7 +671,7 @@ "privacy_policy.title": "Политика конфиденциальности", "recommended": "Рекомендуется", "refresh": "Обновить", - "regeneration_indicator.label": "Загрузка…", + "regeneration_indicator.label": "Грузим…", "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!", "relative_time.days": "{number} д", "relative_time.full.days": "{number, plural, one {# день} many {# дней} other {# дня}} назад", @@ -800,6 +806,7 @@ "status.reblog": "Продвинуть", "status.reblog_private": "Продвинуть для своей аудитории", "status.reblogged_by": "{name} продвинул(а)", + "status.reblogs": "{count, plural, one {boost} few {boosts} many {boosts} other {boosts}}", "status.reblogs.empty": "Никто ещё не продвинул этот пост. Как только кто-то это сделает, они появятся здесь.", "status.redraft": "Создать заново", "status.remove_bookmark": "Убрать из закладок", @@ -856,11 +863,11 @@ "upload_modal.detect_text": "Найти текст на картинке", "upload_modal.edit_media": "Изменить файл", "upload_modal.hint": "Нажмите и перетащите круг в предпросмотре в точку фокуса, которая всегда будет видна на эскизах.", - "upload_modal.preparing_ocr": "Подготовка распознования…", + "upload_modal.preparing_ocr": "Подготовка распознавания…", "upload_modal.preview_label": "Предпросмотр ({ratio})", "upload_progress.label": "Загрузка...", "upload_progress.processing": "Обработка…", - "username.taken": "Данное имя пользователя уже занято. Выберите другое.", + "username.taken": "Это имя пользователя уже занято. Выберите другое", "video.close": "Закрыть видео", "video.download": "Загрузить файл", "video.exit_fullscreen": "Покинуть полноэкранный режим", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index a1bcdb9ff9..dc31f6100f 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -194,6 +194,7 @@ "confirmations.unfollow.title": "Prestať sledovať užívateľa?", "content_warning.hide": "Skryť príspevok", "content_warning.show": "Aj tak zobraziť", + "content_warning.show_more": "Ukázať viac", "conversation.delete": "Vymazať konverzáciu", "conversation.mark_as_read": "Označiť ako prečítanú", "conversation.open": "Zobraziť konverzáciu", @@ -484,7 +485,7 @@ "notification_requests.edit_selection": "Uprav", "notification_requests.exit_selection": "Hotovo", "notification_requests.notifications_from": "Oboznámenia od {name}", - "notification_requests.title": "Filtrované oboznámenia", + "notification_requests.title": "Filtrované oznámenia", "notification_requests.view": "Zobraz upozornenia", "notifications.clear": "Vyčistiť upozornenia", "notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 7824d07629..e404c2244b 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -82,7 +82,7 @@ "admin.impact_report.instance_follows": "Följare som deras användare skulle förlora", "admin.impact_report.title": "Sammanfattning av påverkan", "alert.rate_limited.message": "Vänligen försök igen efter {retry_time, time, medium}.", - "alert.rate_limited.title": "Mängd begränsad", + "alert.rate_limited.title": "Hastighetsbegränsad", "alert.unexpected.message": "Ett oväntat fel uppstod.", "alert.unexpected.title": "Hoppsan!", "alt_text_badge.title": "Alt-Text", @@ -271,7 +271,7 @@ "empty_column.follow_requests": "Du har inga följarförfrågningar än. När du får en kommer den visas här.", "empty_column.followed_tags": "Du följer inga hashtaggar ännu. När du gör det kommer de att dyka upp här.", "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", - "empty_column.home": "Din hemma-tidslinje är tom! Följ fler användare för att fylla den. {suggestions}", + "empty_column.home": "Din hemma-tidslinje är tom! Följ fler användare för att fylla den.", "empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.", "empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.", "empty_column.mutes": "Du har ännu inte tystat några användare.", @@ -383,7 +383,7 @@ "ignore_notifications_modal.not_following_title": "Vill du blockera aviseringar från personer som du inte följer dig?", "ignore_notifications_modal.private_mentions_title": "Vill du ignorera aviseringar från oönskade privata omnämningar?", "interaction_modal.description.favourite": "Med ett Mastodon-konto kan du favoritmarkera detta inlägg för att visa författaren att du gillar det och för att spara det till senare.", - "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se hens inlägg i ditt hemflöde.", + "interaction_modal.description.follow": "Med ett Mastodon-konto kan du följa {name} för att se deras inlägg i ditt hemflöde.", "interaction_modal.description.reblog": "Med ett Mastodon-konto kan du boosta detta inlägg för att dela den med dina egna följare.", "interaction_modal.description.reply": "Med ett Mastodon-konto kan du svara på detta inlägg.", "interaction_modal.description.vote": "Med ett konto på Mastodon kan du delta i denna omröstning.", @@ -405,11 +405,11 @@ "keyboard_shortcuts.back": "Gå bakåt", "keyboard_shortcuts.blocked": "Öppna listan över blockerade användare", "keyboard_shortcuts.boost": "Boosta inlägg", - "keyboard_shortcuts.column": "för att fokusera en status i en av kolumnerna", + "keyboard_shortcuts.column": "Fokusera kolumn", "keyboard_shortcuts.compose": "för att fokusera skrivfältet", "keyboard_shortcuts.description": "Beskrivning", "keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen", - "keyboard_shortcuts.down": "för att flytta nedåt i listan", + "keyboard_shortcuts.down": "Flytta ner i listan", "keyboard_shortcuts.enter": "Öppna inlägg", "keyboard_shortcuts.favourite": "Favoritmarkera inlägg", "keyboard_shortcuts.favourites": "Öppna favoritlistan", @@ -429,13 +429,13 @@ "keyboard_shortcuts.reply": "Svara på inlägg", "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", "keyboard_shortcuts.search": "för att fokusera sökfältet", - "keyboard_shortcuts.spoilers": "visa/dölja CW-fält", - "keyboard_shortcuts.start": "för att öppna \"Kom igång\"-kolumnen", - "keyboard_shortcuts.toggle_hidden": "för att visa/gömma text bakom CW", - "keyboard_shortcuts.toggle_sensitivity": "för att visa/gömma media", + "keyboard_shortcuts.spoilers": "Visa/dölja CW-fält", + "keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen", + "keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW", + "keyboard_shortcuts.toggle_sensitivity": "Visa/gömma media", "keyboard_shortcuts.toot": "Starta nytt inlägg", - "keyboard_shortcuts.unfocus": "för att avfokusera skrivfält/sökfält", - "keyboard_shortcuts.up": "för att flytta uppåt i listan", + "keyboard_shortcuts.unfocus": "Avfokusera skrivfält/sökfält", + "keyboard_shortcuts.up": "Flytta uppåt i listan", "lightbox.close": "Stäng", "lightbox.next": "Nästa", "lightbox.previous": "Tidigare", @@ -617,11 +617,11 @@ "onboarding.action.back": "Ta mig tillbaka", "onboarding.actions.back": "Ta mig tillbaka", "onboarding.actions.go_to_explore": "See what's trending", - "onboarding.actions.go_to_home": "Go to your home feed", + "onboarding.actions.go_to_home": "Ta mig till mitt hemflöde", "onboarding.compose.template": "Hallå #Mastodon!", "onboarding.follows.empty": "Tyvärr kan inga resultat visas just nu. Du kan prova att använda sökfunktionen eller utforska sidan för att hitta personer att följa, eller försök igen senare.", - "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", - "onboarding.follows.title": "Popular on Mastodon", + "onboarding.follows.lead": "Ditt hemflöde är det primära sättet att uppleva Mastodon. Ju fler människor du följer, desto mer aktiv och intressant blir det. För att komma igång, är här några förslag:", + "onboarding.follows.title": "Anpassa ditt hemflöde", "onboarding.profile.discoverable": "Gör min profil upptäckbar", "onboarding.profile.discoverable_hint": "När du väljer att vara upptäckbar på Mastodon kan dina inlägg visas i sök- och trendresultat, och din profil kan föreslås för personer med liknande intressen som du.", "onboarding.profile.display_name": "Visningsnamn", @@ -642,7 +642,7 @@ "onboarding.start.title": "Du klarade det!", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}", - "onboarding.steps.publish_status.body": "Say hello to the world.", + "onboarding.steps.publish_status.body": "Säg hej till världen med text, foton, videor eller omröstningar {emoji}", "onboarding.steps.publish_status.title": "Gör ditt första inlägg", "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "Customize your profile", @@ -733,8 +733,8 @@ "report.thanks.take_action_actionable": "Medan vi granskar detta kan du vidta åtgärder mot {name}:", "report.thanks.title": "Vill du inte se det här?", "report.thanks.title_actionable": "Tack för att du rapporterar, vi kommer att titta på detta.", - "report.unfollow": "Sluta följ @{username}", - "report.unfollow_explanation": "Du följer detta konto. Avfölj hen för att inte se hens inlägg i ditt hemflöde.", + "report.unfollow": "Sluta följ @{name}", + "report.unfollow_explanation": "Du följer detta konto. Avfölj det för att inte se dess inlägg i ditt hemflöde.", "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", "report_notification.categories.legal": "Rättsligt", "report_notification.categories.legal_sentence": "olagligt innehåll", @@ -829,7 +829,7 @@ "status.show_less_all": "Visa mindre för alla", "status.show_more_all": "Visa mer för alla", "status.show_original": "Visa original", - "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", + "status.title.with_attachments": "{user} lade upp {attachmentCount, plural, one {en bilaga} other {{attachmentCount} bilagor}}", "status.translate": "Översätt", "status.translated_from_with": "Översatt från {lang} med {provider}", "status.uncached_media_warning": "Förhandsvisning inte tillgänglig", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index b0ad6e1c66..5cf95554bc 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -44,7 +44,7 @@ "account.joined_short": "เข้าร่วมเมื่อ", "account.languages": "เปลี่ยนภาษาที่บอกรับ", "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}", - "account.locked_info": "สถานะความเป็นส่วนตัวของบัญชีนี้ถูกตั้งค่าเป็นล็อค เจ้าของตรวจสอบด้วยตนเองว่าใครสามารถติดตามพวกเขาได้", + "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง", "account.media": "สื่อ", "account.mention": "กล่าวถึง @{name}", "account.moved_to": "{name} ได้ระบุว่าบัญชีใหม่ของเขาในตอนนี้คือ:", @@ -97,7 +97,7 @@ "block_modal.they_will_know": "เขาสามารถเห็นว่ามีการปิดกั้นเขา", "block_modal.title": "ปิดกั้นผู้ใช้?", "block_modal.you_wont_see_mentions": "คุณจะไม่เห็นโพสต์ที่กล่าวถึงเขา", - "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", + "boost_modal.combo": "คุณสามารถกดปุ่ม {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป", "boost_modal.reblog": "ดันโพสต์?", "boost_modal.undo_reblog": "เลิกดันโพสต์?", "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด", @@ -386,6 +386,7 @@ "interaction_modal.description.follow": "ด้วยบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ", "interaction_modal.description.reblog": "ด้วยบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแชร์โพสต์กับผู้ติดตามของคุณเอง", "interaction_modal.description.reply": "ด้วยบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้", + "interaction_modal.description.vote": "ด้วยบัญชีใน Mastodon คุณสามารถลงคะแนนในการสำรวจความคิดเห็นนี้", "interaction_modal.login.action": "นำฉันกลับบ้าน", "interaction_modal.login.prompt": "โดเมนของเซิร์ฟเวอร์บ้านของคุณ เช่น mastodon.social", "interaction_modal.no_account_yet": "ไม่ได้อยู่ใน Mastodon?", @@ -397,6 +398,7 @@ "interaction_modal.title.follow": "ติดตาม {name}", "interaction_modal.title.reblog": "ดันโพสต์ของ {name}", "interaction_modal.title.reply": "ตอบกลับโพสต์ของ {name}", + "interaction_modal.title.vote": "ลงคะแนนในการสำรวจความคิดเห็นของ {name}", "intervals.full.days": "{number, plural, other {# วัน}}", "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}", "intervals.full.minutes": "{number, plural, other {# นาที}}", @@ -855,11 +857,11 @@ "upload_error.poll": "ไม่อนุญาตการอัปโหลดไฟล์โดยมีการสำรวจความคิดเห็น", "upload_form.audio_description": "อธิบายสำหรับผู้ที่สูญเสียการได้ยิน", "upload_form.description": "อธิบายสำหรับผู้คนที่พิการทางการมองเห็นหรือมีสายตาเลือนราง", - "upload_form.drag_and_drop.instructions": "หากต้องการเลือกไฟล์สื่อ ให้กดปุ่มที Space หรือ Enter บนแป้นพิมพ์ เมื่อเลือกไฟล์ได้แล้ว ก็สามารถใช้ปุ่มลูกศรเพื่อเลื่อนไฟล์ไปในทิศทางที่ต้องการได้ เมื่อต้องการวางไฟล์ในตำแหน่งใหม่ ให้กดปุ่ม Space หรือ Enter ดูอีกครั้ง หรือหากต้องการยกเลิกการเลือก ให้กดปุ่ม Esc ได้", - "upload_form.drag_and_drop.on_drag_cancel": "การลากไฟล์นั้นหยุดชะงัก ไฟล์ที่กำลังแนบมาถูกยกเลิก {item} ได้ถูกลบทิ้งแล้ว", - "upload_form.drag_and_drop.on_drag_end": "ไฟล์แนบ {item} ได้ถูกยกเลิกแล้ว", - "upload_form.drag_and_drop.on_drag_over": "ไฟล์แนบ {item} ได้ถูกย้ายไปแล้ว", - "upload_form.drag_and_drop.on_drag_start": "ได้รับไฟล์แนบเรียบร้อยแล้ว {item}.", + "upload_form.drag_and_drop.instructions": "เพื่อหยิบไฟล์แนบสื่อ กดปุ่มเว้นวรรคหรือขึ้นบรรทัดใหม่ ขณะลาก ใช้ปุ่มลูกศรเพื่อย้ายไฟล์แนบสื่อในทิศทางใดก็ตามที่กำหนด กดปุ่มเว้นวรรคหรือขึ้นบรรทัดใหม่อีกครั้งเพื่อปล่อยไฟล์แนบสื่อในตำแหน่งใหม่ หรือกดปุ่ม Escape เพื่อยกเลิก", + "upload_form.drag_and_drop.on_drag_cancel": "ยกเลิกการลากแล้ว ปล่อยไฟล์แนบสื่อ {item} แล้ว", + "upload_form.drag_and_drop.on_drag_end": "ปล่อยไฟล์แนบสื่อ {item} แล้ว", + "upload_form.drag_and_drop.on_drag_over": "ย้ายไฟล์แนบสื่อ {item} แล้ว", + "upload_form.drag_and_drop.on_drag_start": "หยิบไฟล์แนบสื่อ {item} แล้ว", "upload_form.edit": "แก้ไข", "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ", "upload_form.video_description": "อธิบายสำหรับผู้คนที่พิการทางการได้ยิน ได้ยินไม่ชัด พิการทางการมองเห็น หรือมีสายตาเลือนราง", diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml index 2dfc72cd6c..3b52e170ea 100644 --- a/config/locales/doorkeeper.th.yml +++ b/config/locales/doorkeeper.th.yml @@ -60,7 +60,7 @@ th: error: title: เกิดข้อผิดพลาด new: - prompt_html: "%{client_name} ร้องขอสิทธิ์ในการเข้าถึงข้อมูลในบัญชีของคุณ อนุมัติคำขอนี้ได้ก็ต่อเมื่อคุณมั่นใจและเชื่อถือในแหล่งที่มาของข้อมูลนี้" + prompt_html: "%{client_name} ต้องการสิทธิอนุญาตเพื่อเข้าถึงบัญชีของคุณ อนุมัติคำขอนี้เฉพาะหากคุณรู้จักและเชื่อถือแหล่งที่มานี้เท่านั้น" review_permissions: ตรวจทานสิทธิอนุญาต title: ต้องการการอนุญาต show: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 8ccedd2be1..a6656f91b8 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -21,6 +21,7 @@ fy: one: Toot other: Berjochten posts_tab_heading: Berjochten + self_follow_error: It folgjen fan dyn eigen account is net tastien admin: account_actions: action: Aksje útfiere @@ -1165,8 +1166,11 @@ fy: use_security_key: Befeiligingskaai brûke author_attribution: example_title: Faorbyldtekst + hint_html: Skriuwe jo nijs- of blogartikelen bûten Mastodon? Bepaal hoe’t jo oahelle wurde as dizze dield wurde op Mastodon. + instructions: 'Soargj derfoar dat dizze koade yn de HTML fan jo artikel sit:' more_from_html: Mear fan %{name} s_blog: Weblog fan %{name} + then_instructions: Foegje dernei de domeinnamme fan de publikaasje yn it ûndersteande fjild ta. title: Auteur-attribúsje challenge: confirm: Trochgean diff --git a/config/locales/gd.yml b/config/locales/gd.yml index a05ce6ed3c..c804f42523 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -262,7 +262,7 @@ gd: destroy_domain_allow_html: Dì-cheadaich %{name} co-nasgadh leis an àrainn %{target} destroy_domain_block_html: Dì-bhac %{name} an àrainn %{target} destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} - destroy_instance_html: Purgaidich %{name} an àrainn %{target} + destroy_instance_html: Phurgaidich %{name} an àrainn %{target} destroy_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} destroy_status_html: Thug %{name} post aig %{target} air falbh destroy_unavailable_domain_html: Lean %{name} air adhart leis an lìbhrigeadh dhan àrainn %{target} diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 8a753dcc89..c840342db5 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -3,6 +3,7 @@ fy: simple_form: hints: account: + attribution_domains_as_text: Ien per rigel. Beskermet tsjin falske attribúsjes. discoverable: Jo iepenbiere berjochten kinne útljochte wurde op ferskate plakken binnen Mastodon en jo account kin oanrekommandearre wurde oan oare brûkers. display_name: Jo folsleine namme of in aardige bynamme. fields: Jo website, persoanlike foarnammewurden, leeftiid, alles wat jo mar kwyt wolle. @@ -143,6 +144,7 @@ fy: url: Wêr’t eveneminten nei ta stjoerd wurde labels: account: + attribution_domains_as_text: Websites dy’t jo wurdearring jaan meie discoverable: Profyl en bydragen yn sykalgoritmen opnimme litte fields: name: Label diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 974008b5eb..106e29d2de 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -61,7 +61,7 @@ lv: setting_display_media_hide_all: Vienmēr slēpt multividi setting_display_media_show_all: Vienmēr rādīt multividi setting_use_blurhash: Pāreju pamatā ir paslēpto uzskatāmo līdzekļu krāsas, bet saturs tiek padarīts neskaidrs - setting_use_pending_items: Paslēpt laika skalas atjauninājumus aiz klikšķa, nevis automātiski ritini plūsmu + setting_use_pending_items: Paslēpt laika skalas atjauninājumus aiz klikšķa, nevis ar automātisku plūsmas ritināšanu username: Tu vari lietot burtus, ciparus un zemsvītras whole_word: Ja atslēgvārds vai frāze ir tikai burtciparu, tas tiks lietots tikai tad, ja tas atbilst visam vārdam domain_allow: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 7280ba6d80..5318059f4a 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,7 +3,7 @@ nl: simple_form: hints: account: - attribution_domains_as_text: Eén per regel. Beschermt tegen valse attribueringen. + attribution_domains_as_text: Eén per regel. Beschermt tegen valse toeschrijvingen. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 36d1def012..72c3f000f6 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -74,7 +74,7 @@ sv: filters: action: Välj vilken åtgärd som ska utföras när ett inlägg matchar filtret actions: - hide: Dölj det filtrerade innehållet helt (beter sig som om det inte fanns) + hide: Dölj det filtrerade innehållet helt, beter sig som om det inte fanns warn: Dölj det filtrerade innehållet bakom en varning som visar filtrets rubrik form_admin_settings: activity_api_enabled: Antalet lokalt publicerade inlägg, aktiva användare och nya registrerade konton per vecka diff --git a/config/locales/sv.yml b/config/locales/sv.yml index f3ce6443f6..bd33e837bd 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -59,7 +59,7 @@ sv: delete: Radera data deleted: Raderad demote: Degradera - destroyed_msg: "%{username}'s data har nu lagts till kön för att raderas omedelbart" + destroyed_msg: "%{username}s data har nu lagts till kön för att raderas omedelbart" disable: inaktivera disable_sign_in_token_auth: Inaktivera autentisering med pollett via e-post disable_two_factor_authentication: Inaktivera 2FA @@ -72,7 +72,7 @@ sv: enable: Aktivera enable_sign_in_token_auth: Aktivera autentisering med pollett via e-post enabled: Aktiverad - enabled_msg: Uppfrysningen av %{username}'s konto lyckades + enabled_msg: Uppfrysningen av %{username}s konto lyckades followers: Följare follows: Följs header: Rubrik @@ -268,21 +268,21 @@ sv: enable_custom_emoji_html: "%{name} aktiverade emoji %{target}" enable_sign_in_token_auth_user_html: "%{name} aktiverade e-posttokenautentisering för %{target}" enable_user_html: "%{name} aktiverade inloggning för användaren %{target}" - memorialize_account_html: "%{name} gjorde %{target}'s konto till en minnessida" + memorialize_account_html: "%{name} gjorde %{target}s konto till en minnessida" promote_user_html: "%{name} befordrade användaren %{target}" reject_appeal_html: "%{name} avvisade överklagande av modereringsbeslut från %{target}" reject_user_html: "%{name} avvisade registrering från %{target}" - remove_avatar_user_html: "%{name} tog bort %{target}'s avatar" + remove_avatar_user_html: "%{name} tog bort %{target}s avatar" reopen_report_html: "%{name} öppnade rapporten igen %{target}" resend_user_html: "%{name} skickade bekräftelsemail för %{target} på nytt" reset_password_user_html: "%{name} återställ användarens lösenord %{target}" resolve_report_html: "%{name} löste rapporten %{target}" - sensitive_account_html: "%{name} markerade %{target}'s media som känsligt" - silence_account_html: "%{name} begränsade %{target}'s konto" + sensitive_account_html: "%{name} markerade %{target}s media som känsligt" + silence_account_html: "%{name} begränsade %{target}s konto" suspend_account_html: "%{name} stängde av %{target}s konto" unassigned_report_html: "%{name} tog bort tilldelning av rapporten %{target}" unblock_email_account_html: "%{name} avblockerade %{target}s e-postadress" - unsensitive_account_html: "%{name} avmarkerade %{target}'s media som känsligt" + unsensitive_account_html: "%{name} avmarkerade %{target}s media som känsligt" unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto" unsuspend_account_html: "%{name} ångrade avstängningen av %{target}s konto" update_announcement_html: "%{name} uppdaterade kungörelsen %{target}" @@ -569,7 +569,7 @@ sv: no_ip_block_selected: Inga IP-regler ändrades då inga var valda title: IP-regler relationships: - title: "%{acct}'s relationer" + title: "%{acct}s relationer" relays: add_new: Lägg till nytt relä delete: Radera @@ -899,7 +899,7 @@ sv: review_requested: Granskning begärd reviewed: Granskat title: Status - trendable: + trendable: Kan trenda unreviewed: Ogranskad usable: Användbar name: Namn @@ -1826,8 +1826,8 @@ sv: tags: does_not_match_previous_name: matchar inte det föregående namnet themes: - contrast: Hög kontrast - default: Mastodon + contrast: Mastodon (Hög kontrast) + default: Mastodon (Mörk) mastodon-light: Mastodon (ljust) system: Automatisk (använd systemtema) time: diff --git a/config/locales/th.yml b/config/locales/th.yml index cdc56d98ce..ea039a2b99 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1148,11 +1148,11 @@ th: use_security_key: ใช้กุญแจความปลอดภัย author_attribution: example_title: ข้อความตัวอย่าง - hint_html: คุณเขียนข่าวหรือลงบทความที่อื่นๆที่นอกจาก Mastodon บ้างไหม? ถ้าหากคุณเขียนอยู่ล่ะก็ คุณสามารถบอกได้นะว่าอยากให้คนอื่นให้เครดิตคุณยังไงเวลาแชร์ไปที่ Mastodon นะ - instructions: 'โปรดตรวจสอบให้แน่ใจว่าโค้ดนี้ได้มีอยู่ในบทความของคุณแล้ว HTML:' + hint_html: คุณกำลังเขียนข่าวหรือบทความบล็อกภายนอก Mastodon หรือไม่? ควบคุมวิธีที่คุณได้รับเครดิตเมื่อมีการแบ่งปันข่าวหรือบทความบล็อกใน Mastodon + instructions: 'ตรวจสอบให้แน่ใจว่าโค้ดนี้อยู่ใน HTML ของบทความของคุณ:' more_from_html: เพิ่มเติมจาก %{name} s_blog: บล็อกของ %{name} - then_instructions: จากนั้น ให้เพิ่มใส่ชื่อเว็บไซต์ของสิ่งพิมพ์ลงไปในช่องว่างข้างล่าง + then_instructions: จากนั้น เพิ่มชื่อโดเมนของการเผยแพร่ในช่องด้านล่าง title: การระบุแหล่งที่มาผู้สร้าง challenge: confirm: ดำเนินการต่อ From ff490daa5801a0d5b8c78480faa17ae5a7f5b2f1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 4 Nov 2024 04:00:01 -0500 Subject: [PATCH 305/550] Reduce factory generation in `AccountStatusesFilter` spec (#32727) --- spec/lib/account_statuses_filter_spec.rb | 42 +++++++++--------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/spec/lib/account_statuses_filter_spec.rb b/spec/lib/account_statuses_filter_spec.rb index 7774585124..351d3dae57 100644 --- a/spec/lib/account_statuses_filter_spec.rb +++ b/spec/lib/account_statuses_filter_spec.rb @@ -52,36 +52,24 @@ RSpec.describe AccountStatusesFilter do end shared_examples 'filter params' do - context 'with only_media param' do - let(:params) { { only_media: true } } + it 'respects param options in results' do + expect(results_for(only_media: true)) + .to all(satisfy(&:with_media?)) - it 'returns only statuses with media' do - expect(subject.all?(&:with_media?)).to be true - end + expect(results_for(tagged: tag.name)) + .to all(satisfy { |status| status.tags.include?(tag) }) + + expect(results_for(exclude_replies: true)) + .to all(satisfy { |status| !status.reply? }) + + expect(results_for(exclude_reblogs: true)) + .to all(satisfy { |status| !status.reblog? }) end - context 'with tagged param' do - let(:params) { { tagged: tag.name } } - - it 'returns only statuses with tag' do - expect(subject.all? { |s| s.tags.include?(tag) }).to be true - end - end - - context 'with exclude_replies param' do - let(:params) { { exclude_replies: true } } - - it 'returns only statuses that are not replies' do - expect(subject.none?(&:reply?)).to be true - end - end - - context 'with exclude_reblogs param' do - let(:params) { { exclude_reblogs: true } } - - it 'returns only statuses that are not reblogs' do - expect(subject.none?(&:reblog?)).to be true - end + def results_for(params) + described_class + .new(account, current_account, params) + .results end end From dfccd207bb9c0b9aa893ed6c80912acd0674751f Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 4 Nov 2024 10:04:55 +0100 Subject: [PATCH 306/550] Refactor common checks in `tootctl media remove-orphans` (#32720) --- lib/mastodon/cli/media.rb | 57 ++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/lib/mastodon/cli/media.rb b/lib/mastodon/cli/media.rb index 996b7fd92c..68420fb15d 100644 --- a/lib/mastodon/cli/media.rb +++ b/lib/mastodon/cli/media.rb @@ -6,6 +6,8 @@ module Mastodon::CLI class Media < Base include ActionView::Helpers::NumberHelper + class UnrecognizedOrphanType < StandardError; end + VALID_PATH_SEGMENTS_SIZE = [7, 10].freeze option :days, type: :numeric, default: 7, aliases: [:d] @@ -120,23 +122,10 @@ module Mastodon::CLI object.acl.put(acl: s3_permissions) if options[:fix_permissions] && !dry_run? path_segments = object.key.split('/') - path_segments.delete('cache') - - unless VALID_PATH_SEGMENTS_SIZE.include?(path_segments.size) - progress.log(pastel.yellow("Unrecognized file found: #{object.key}")) - next - end - - model_name = path_segments.first.classify - attachment_name = path_segments[1].singularize - record_id = path_segments[2...-2].join.to_i - file_name = path_segments.last - record = record_map.dig(model_name, record_id) - attachment = record&.public_send(attachment_name) progress.increment - next unless attachment.blank? || !attachment.variant?(file_name) + next unless orphaned_file?(path_segments, record_map) begin object.delete unless dry_run? @@ -148,6 +137,8 @@ module Mastodon::CLI rescue => e progress.log(pastel.red("Error processing #{object.key}: #{e}")) end + rescue UnrecognizedOrphanType + progress.log(pastel.yellow("Unrecognized file found: #{object.key}")) end end when :fog @@ -165,26 +156,10 @@ module Mastodon::CLI key = path.gsub("#{root_path}#{File::SEPARATOR}", '') path_segments = key.split(File::SEPARATOR) - path_segments.delete('cache') - - unless VALID_PATH_SEGMENTS_SIZE.include?(path_segments.size) - progress.log(pastel.yellow("Unrecognized file found: #{key}")) - next - end - - model_name = path_segments.first.classify - record_id = path_segments[2...-2].join.to_i - attachment_name = path_segments[1].singularize - file_name = path_segments.last - - next unless PRELOADED_MODELS.include?(model_name) - - record = model_name.constantize.find_by(id: record_id) - attachment = record&.public_send(attachment_name) progress.increment - next unless attachment.blank? || !attachment.variant?(file_name) + next unless orphaned_file?(path_segments) begin size = File.size(path) @@ -205,6 +180,8 @@ module Mastodon::CLI rescue => e progress.log(pastel.red("Error processing #{key}: #{e}")) end + rescue UnrecognizedOrphanType + progress.log(pastel.yellow("Unrecognized file found: #{path}")) end end @@ -364,5 +341,23 @@ module Mastodon::CLI model_map[model_name] = model_name.constantize.where(id: record_ids).index_by(&:id) end end + + def orphaned_file?(path_segments, record_map = nil) + path_segments.delete('cache') + + raise UnrecognizedOrphanType unless VALID_PATH_SEGMENTS_SIZE.include?(path_segments.size) + + model_name = path_segments.first.classify + record_id = path_segments[2...-2].join.to_i + attachment_name = path_segments[1].singularize + file_name = path_segments.last + + raise UnrecognizedOrphanType unless PRELOADED_MODELS.include?(model_name) + + record = record_map.present? ? record_map.dig(model_name, record_id) : model_name.constantize.find_by(id: record_id) + attachment = record&.public_send(attachment_name) + + attachment.blank? || !attachment.variant?(file_name) + end end end From a139dac18ec6e50b35a51f664fd5b02b0f9f1c47 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 4 Nov 2024 04:11:00 -0500 Subject: [PATCH 307/550] Remove cookie rotator (#32289) --- config/initializers/cookie_rotator.rb | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 config/initializers/cookie_rotator.rb diff --git a/config/initializers/cookie_rotator.rb b/config/initializers/cookie_rotator.rb deleted file mode 100644 index ccc2c6b21f..0000000000 --- a/config/initializers/cookie_rotator.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -# TODO: remove this file some time after 4.3.0 - -Rails.application.config.after_initialize do - Rails.application.config.action_dispatch.cookies_rotations.tap do |cookies| - authenticated_encrypted_cookie_salt = Rails.application.config.action_dispatch.authenticated_encrypted_cookie_salt - signed_cookie_salt = Rails.application.config.action_dispatch.signed_cookie_salt - - secret_key_base = Rails.application.secret_key_base - - key_generator = ActiveSupport::KeyGenerator.new( - secret_key_base, iterations: 1000, hash_digest_class: OpenSSL::Digest::SHA1 - ) - key_len = ActiveSupport::MessageEncryptor.key_len - - old_encrypted_secret = key_generator.generate_key(authenticated_encrypted_cookie_salt, key_len) - old_signed_secret = key_generator.generate_key(signed_cookie_salt) - - cookies.rotate :encrypted, old_encrypted_secret - cookies.rotate :signed, old_signed_secret - end -end From 823f597f0009cf04d4ad39c2707e8c8b3adcba50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:20:13 +0100 Subject: [PATCH 308/550] Update formatjs monorepo (#32764) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 126 +++++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/yarn.lock b/yarn.lock index da80fac3bf..e9bdcb459b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2251,14 +2251,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.2.2": - version: 2.2.2 - resolution: "@formatjs/ecma402-abstract@npm:2.2.2" +"@formatjs/ecma402-abstract@npm:2.2.3": + version: 2.2.3 + resolution: "@formatjs/ecma402-abstract@npm:2.2.3" dependencies: "@formatjs/fast-memoize": "npm:2.2.3" "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/dc712dd9959c9caa161282e3fb8f4a45c7368c4ada07576619d22b72678ece83459d6ec8b5ac3eee7def3b4398b68483c0ee91b49241024b41906333fd94ce21 + checksum: 10c0/611d12bf320fc5c5b85cb2b57e3dcebe8490a51c6a0459c857c7a3560656cd2bdba5b117e9dd7cf174f5aa120c11eaad7a65a6783637b816caa59a1bc5c727f6 languageName: node linkType: hard @@ -2291,14 +2291,14 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.9.2": - version: 2.9.2 - resolution: "@formatjs/icu-messageformat-parser@npm:2.9.2" +"@formatjs/icu-messageformat-parser@npm:2.9.3": + version: 2.9.3 + resolution: "@formatjs/icu-messageformat-parser@npm:2.9.3" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" - "@formatjs/icu-skeleton-parser": "npm:1.8.6" + "@formatjs/ecma402-abstract": "npm:2.2.3" + "@formatjs/icu-skeleton-parser": "npm:1.8.7" tslib: "npm:2" - checksum: 10c0/5f65377e56a2f0426240f05c015584b629713f0c9e1b7bc6db78c6d2e94b4d28bdd4c674ee32be695e493cd2f80a8168b7cd3c64a23ec36f9e18db2ae080e51b + checksum: 10c0/519b59f7b4cf90681315c5382f7fcd105eb1974486f0d62d9227b6d0498895114ccc818792c208baae1ef79571d93b0edb9914c676e5ab76924dddb7fd6c28a0 languageName: node linkType: hard @@ -2312,35 +2312,35 @@ __metadata: languageName: node linkType: hard -"@formatjs/icu-skeleton-parser@npm:1.8.6": - version: 1.8.6 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.6" +"@formatjs/icu-skeleton-parser@npm:1.8.7": + version: 1.8.7 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.7" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" tslib: "npm:2" - checksum: 10c0/16993372de234aed52a75877247d911125e063aef77daf779e839a3c7a1213b37ffc8c95350375d303e43e30245711a0db693c4d856e6b0c2f3402644a8fb72d + checksum: 10c0/e29eb4151580f2d324e6591509dc4543e2326266fc209a08580c94d502acab14acc3560d98b3aaf9ffbd5ff8e2683601ff08c65b32886f22da015c31ca35c5d0 languageName: node linkType: hard -"@formatjs/intl-displaynames@npm:6.8.2": - version: 6.8.2 - resolution: "@formatjs/intl-displaynames@npm:6.8.2" +"@formatjs/intl-displaynames@npm:6.8.3": + version: 6.8.3 + resolution: "@formatjs/intl-displaynames@npm:6.8.3" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/52f3e7f74f9ce114860e235d66889f0cea559df060a879852613f76c673a355f0fc7ebe7d173f058dbbd9e760b57816a3b09a1e447448fef262abc76332bc132 + checksum: 10c0/54d3ecaabc45dc8494be4cd9633bbf5eb0bc40c5f62ed5e5073aa5b214c4a9a9620d61d1c8a6f0074618474fd9c2ccc42904605078d2f6341c242bf43627bb3a languageName: node linkType: hard -"@formatjs/intl-listformat@npm:7.7.2": - version: 7.7.2 - resolution: "@formatjs/intl-listformat@npm:7.7.2" +"@formatjs/intl-listformat@npm:7.7.3": + version: 7.7.3 + resolution: "@formatjs/intl-listformat@npm:7.7.3" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/d42fa043380252f11e300c696f6b366f817c93cac6d9aabc6dc96fb8efcfbc2873b11adac5928e4e1ce7eb1482bbb22b76a5a8520ef7f742ae23863b6edaa088 + checksum: 10c0/2683513e86cc7885528f23237079e3ab9e3a8bc7111aa10d4c685dcbe368ef07039573115df240112fb20f2ec0b70c8ea189ea3b79cbfed7e3dc46024a4667ff languageName: node linkType: hard @@ -2363,33 +2363,33 @@ __metadata: linkType: hard "@formatjs/intl-pluralrules@npm:^5.2.2": - version: 5.3.2 - resolution: "@formatjs/intl-pluralrules@npm:5.3.2" + version: 5.3.3 + resolution: "@formatjs/intl-pluralrules@npm:5.3.3" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" "@formatjs/intl-localematcher": "npm:0.5.7" tslib: "npm:2" - checksum: 10c0/c8fde868650b2ac9fb9799791a517b052bd2eb8fb2bcdee225a131d20dd300125eb608129b47bc955e8fdf8f90f7b981bb889485fd6f9bcfb7a267e3d07a495d + checksum: 10c0/003d33af6f5d902517f230b7038e39b8336da3a84500fe5f4278fa5cac0c9a1b746de484f1c2bb2315026fd771491eafdc0aa59a809bb25189b63093efb8400d languageName: node linkType: hard -"@formatjs/intl@npm:2.10.12": - version: 2.10.12 - resolution: "@formatjs/intl@npm:2.10.12" +"@formatjs/intl@npm:2.10.13": + version: 2.10.13 + resolution: "@formatjs/intl@npm:2.10.13" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" "@formatjs/fast-memoize": "npm:2.2.3" - "@formatjs/icu-messageformat-parser": "npm:2.9.2" - "@formatjs/intl-displaynames": "npm:6.8.2" - "@formatjs/intl-listformat": "npm:7.7.2" - intl-messageformat: "npm:10.7.4" + "@formatjs/icu-messageformat-parser": "npm:2.9.3" + "@formatjs/intl-displaynames": "npm:6.8.3" + "@formatjs/intl-listformat": "npm:7.7.3" + intl-messageformat: "npm:10.7.5" tslib: "npm:2" peerDependencies: typescript: ^4.7 || 5 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/4475b1167c1cc6f2dbf9e373d4ba964032f80a25ca1ba18eca03dfa1730fcaef2c7cfe046252aaf3c23cf87e0968d565d3b7d1c2c336aec097193914173583c1 + checksum: 10c0/14edcc45addc181c7a45845bc34cec5c73bb5544dcf8ed455eca916bbd3a5023c7204a8e8e289060545b85006933c6f297c33c4f04a8a4cb3890aa7baae5bfbf languageName: node linkType: hard @@ -2413,11 +2413,11 @@ __metadata: languageName: node linkType: hard -"@formatjs/ts-transformer@npm:3.13.21": - version: 3.13.21 - resolution: "@formatjs/ts-transformer@npm:3.13.21" +"@formatjs/ts-transformer@npm:3.13.22": + version: 3.13.22 + resolution: "@formatjs/ts-transformer@npm:3.13.22" dependencies: - "@formatjs/icu-messageformat-parser": "npm:2.9.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.3" "@types/json-stable-stringify": "npm:1" "@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22" chalk: "npm:4" @@ -2429,7 +2429,7 @@ __metadata: peerDependenciesMeta: ts-jest: optional: true - checksum: 10c0/e83c8ebd210e451743745e939193bb37a1bba3acc5ba1e15a509968bdbb98a07d0761133cc5aa2375074281d56d9987f782af712111d82ee1f7aef7ad30d88fc + checksum: 10c0/42503292248bcae728181fdf68e79eac4169c18064953beb9245097d2c58e5434ae7a7978e6ce2829dfd6eb4b4155f78fecef70ac6820626a338f231c66f60cb languageName: node linkType: hard @@ -5180,21 +5180,21 @@ __metadata: linkType: hard "babel-plugin-formatjs@npm:^10.5.1": - version: 10.5.23 - resolution: "babel-plugin-formatjs@npm:10.5.23" + version: 10.5.24 + resolution: "babel-plugin-formatjs@npm:10.5.24" dependencies: "@babel/core": "npm:^7.25.0" "@babel/helper-plugin-utils": "npm:^7.25.0" "@babel/plugin-syntax-jsx": "npm:^7.25.0" "@babel/traverse": "npm:^7.25.0" "@babel/types": "npm:^7.25.0" - "@formatjs/icu-messageformat-parser": "npm:2.9.2" - "@formatjs/ts-transformer": "npm:3.13.21" + "@formatjs/icu-messageformat-parser": "npm:2.9.3" + "@formatjs/ts-transformer": "npm:3.13.22" "@types/babel__core": "npm:^7.20.5" "@types/babel__helper-plugin-utils": "npm:^7.10.3" "@types/babel__traverse": "npm:^7.20.6" tslib: "npm:2" - checksum: 10c0/1484b6a18beea114d800754c3ffa6296a52676eb68b7f280f9e04e34efed12bcb61ecd881ba042907998bc00df0a5eb9111932c7b5df2fb6d6eae0692984c633 + checksum: 10c0/a99c92e62edb30e0b6a5bf1115811eb18336b851109f8c096b5a9aa2be3eb72299eea3a8cb706e03705eb79edfa5a62d69bb52d80a375c1d5a1c963e3d00c40e languageName: node linkType: hard @@ -9741,15 +9741,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.4, intl-messageformat@npm:^10.3.5": - version: 10.7.4 - resolution: "intl-messageformat@npm:10.7.4" +"intl-messageformat@npm:10.7.5, intl-messageformat@npm:^10.3.5": + version: 10.7.5 + resolution: "intl-messageformat@npm:10.7.5" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" "@formatjs/fast-memoize": "npm:2.2.3" - "@formatjs/icu-messageformat-parser": "npm:2.9.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.3" tslib: "npm:2" - checksum: 10c0/698e1b020f744a1790eb0a68edc86a8d215c3d3df3d67a1c77f50ce0582af9fadc8656ff988b7806708f997e0e8462a044602f28d8f334f4e8b3233cf3b03f3e + checksum: 10c0/1aa173a8c16ace50520af3de7d3f0ce9bafda90d47b6d674eb88cc47c12c3460d4d53c97ca412fae1141b00abb8ff2ba313250997a040837f01a25379165c949 languageName: node linkType: hard @@ -14474,18 +14474,18 @@ __metadata: linkType: hard "react-intl@npm:^6.4.2": - version: 6.8.5 - resolution: "react-intl@npm:6.8.5" + version: 6.8.6 + resolution: "react-intl@npm:6.8.6" dependencies: - "@formatjs/ecma402-abstract": "npm:2.2.2" - "@formatjs/icu-messageformat-parser": "npm:2.9.2" - "@formatjs/intl": "npm:2.10.12" - "@formatjs/intl-displaynames": "npm:6.8.2" - "@formatjs/intl-listformat": "npm:7.7.2" + "@formatjs/ecma402-abstract": "npm:2.2.3" + "@formatjs/icu-messageformat-parser": "npm:2.9.3" + "@formatjs/intl": "npm:2.10.13" + "@formatjs/intl-displaynames": "npm:6.8.3" + "@formatjs/intl-listformat": "npm:7.7.3" "@types/hoist-non-react-statics": "npm:3" "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.4" + intl-messageformat: "npm:10.7.5" tslib: "npm:2" peerDependencies: react: ^16.6.0 || 17 || 18 @@ -14493,7 +14493,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/73707912c00a646460c1497f7004bf511b58ec28265f0d8d65b1677a43f62a957bab40f2b5a1759b7f11cc28af10754e8552890b9b485d3f9505c0a36a692fbc + checksum: 10c0/ec88cc2b1d0edf089f04c8061ffda730840fb3317177d0dc1a6df208245ec278f52b4ca8546ff9511b0b28ff2d89863c5837a274d33731d4c8f75a3b3baafbe2 languageName: node linkType: hard From 90f4ffa31d4bda16fcda04fb837bf1c01160d417 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 4 Nov 2024 11:11:06 +0100 Subject: [PATCH 309/550] Fix performance of percentile calculation for annual reports (#32765) --- app/lib/annual_report.rb | 10 ++++ app/lib/annual_report/percentiles.rb | 55 +++++-------------- app/lib/annual_report/source.rb | 8 +++ .../statuses_per_account_count.rb | 15 +++++ ...nual_report_statuses_per_account_counts.rb | 13 +++++ db/schema.rb | 9 ++- spec/lib/annual_report/percentiles_spec.rb | 14 +++-- 7 files changed, 77 insertions(+), 47 deletions(-) create mode 100644 app/models/annual_report/statuses_per_account_count.rb create mode 100644 db/migrate/20241104082851_create_annual_report_statuses_per_account_counts.rb diff --git a/app/lib/annual_report.rb b/app/lib/annual_report.rb index cf4297f2a4..275cc4b87d 100644 --- a/app/lib/annual_report.rb +++ b/app/lib/annual_report.rb @@ -17,11 +17,21 @@ class AnnualReport SCHEMA = 1 + def self.table_name_prefix + 'annual_report_' + end + def initialize(account, year) @account = account @year = year end + def self.prepare(year) + SOURCES.each do |klass| + klass.prepare(year) + end + end + def generate return if GeneratedAnnualReport.exists?(account: @account, year: @year) diff --git a/app/lib/annual_report/percentiles.rb b/app/lib/annual_report/percentiles.rb index 0251cb66ad..2b0305c415 100644 --- a/app/lib/annual_report/percentiles.rb +++ b/app/lib/annual_report/percentiles.rb @@ -1,62 +1,37 @@ # frozen_string_literal: true class AnnualReport::Percentiles < AnnualReport::Source + def self.prepare(year) + AnnualReport::StatusesPerAccountCount.connection.exec_query(<<~SQL.squish, nil, [year, Mastodon::Snowflake.id_at(DateTime.new(year).beginning_of_year), Mastodon::Snowflake.id_at(DateTime.new(year).end_of_year)]) + INSERT INTO annual_report_statuses_per_account_counts (year, account_id, statuses_count) + SELECT $1, account_id, count(*) + FROM statuses + WHERE id BETWEEN $2 AND $3 + AND (local OR uri IS NULL) + GROUP BY account_id + ON CONFLICT (year, account_id) DO NOTHING + SQL + end + def generate { percentiles: { - followers: (total_with_fewer_followers / (total_with_any_followers + 1.0)) * 100, - statuses: (total_with_fewer_statuses / (total_with_any_statuses + 1.0)) * 100, + statuses: 100.0 - ((total_with_fewer_statuses / (total_with_any_statuses + 1.0)) * 100), }, } end private - def followers_gained - @followers_gained ||= @account.passive_relationships.where("date_part('year', follows.created_at) = ?", @year).count - end - def statuses_created @statuses_created ||= report_statuses.count end - def total_with_fewer_followers - @total_with_fewer_followers ||= Follow.find_by_sql([<<~SQL.squish, { year: @year, comparison: followers_gained }]).first.total - WITH tmp0 AS ( - SELECT follows.target_account_id - FROM follows - INNER JOIN accounts ON accounts.id = follows.target_account_id - WHERE date_part('year', follows.created_at) = :year - AND accounts.domain IS NULL - GROUP BY follows.target_account_id - HAVING COUNT(*) < :comparison - ) - SELECT count(*) AS total - FROM tmp0 - SQL - end - def total_with_fewer_statuses - @total_with_fewer_statuses ||= Status.find_by_sql([<<~SQL.squish, { comparison: statuses_created, min_id: year_as_snowflake_range.first, max_id: year_as_snowflake_range.last }]).first.total - WITH tmp0 AS ( - SELECT statuses.account_id - FROM statuses - INNER JOIN accounts ON accounts.id = statuses.account_id - WHERE statuses.id BETWEEN :min_id AND :max_id - AND accounts.domain IS NULL - GROUP BY statuses.account_id - HAVING count(*) < :comparison - ) - SELECT count(*) AS total - FROM tmp0 - SQL - end - - def total_with_any_followers - @total_with_any_followers ||= Follow.where("date_part('year', follows.created_at) = ?", @year).joins(:target_account).merge(Account.local).count('distinct follows.target_account_id') + @total_with_fewer_statuses ||= AnnualReport::StatusesPerAccountCount.where(year: year).where(statuses_count: ...statuses_created).count end def total_with_any_statuses - @total_with_any_statuses ||= Status.where(id: year_as_snowflake_range).joins(:account).merge(Account.local).count('distinct statuses.account_id') + @total_with_any_statuses ||= AnnualReport::StatusesPerAccountCount.where(year: year).count end end diff --git a/app/lib/annual_report/source.rb b/app/lib/annual_report/source.rb index cb9f7b16e3..86528731f5 100644 --- a/app/lib/annual_report/source.rb +++ b/app/lib/annual_report/source.rb @@ -8,6 +8,14 @@ class AnnualReport::Source @year = year end + def self.prepare(_year) + # Use this method if any pre-calculations must be made before individual annual reports are generated + end + + def generate + raise NotImplementedError + end + protected def report_statuses diff --git a/app/models/annual_report/statuses_per_account_count.rb b/app/models/annual_report/statuses_per_account_count.rb new file mode 100644 index 0000000000..05a2f53c9d --- /dev/null +++ b/app/models/annual_report/statuses_per_account_count.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: annual_report_statuses_per_account_counts +# +# id :bigint(8) not null, primary key +# year :integer not null +# account_id :bigint(8) not null +# statuses_count :bigint(8) not null +# + +class AnnualReport::StatusesPerAccountCount < ApplicationRecord + # This table facilitates percentile calculations +end diff --git a/db/migrate/20241104082851_create_annual_report_statuses_per_account_counts.rb b/db/migrate/20241104082851_create_annual_report_statuses_per_account_counts.rb new file mode 100644 index 0000000000..c8ec30ad57 --- /dev/null +++ b/db/migrate/20241104082851_create_annual_report_statuses_per_account_counts.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CreateAnnualReportStatusesPerAccountCounts < ActiveRecord::Migration[7.1] + def change + create_table :annual_report_statuses_per_account_counts do |t| # rubocop:disable Rails/CreateTableWithTimestamps + t.integer :year, null: false + t.bigint :account_id, null: false + t.bigint :statuses_count, null: false + end + + add_index :annual_report_statuses_per_account_counts, [:year, :account_id], unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index bea9ad46be..ec029366a5 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_10_22_214312) do +ActiveRecord::Schema[7.1].define(version: 2024_11_04_082851) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -260,6 +260,13 @@ ActiveRecord::Schema[7.1].define(version: 2024_10_22_214312) do t.bigint "status_ids", array: true end + create_table "annual_report_statuses_per_account_counts", force: :cascade do |t| + t.integer "year", null: false + t.bigint "account_id", null: false + t.bigint "statuses_count", null: false + t.index ["year", "account_id"], name: "idx_on_year_account_id_ff3e167cef", unique: true + end + create_table "appeals", force: :cascade do |t| t.bigint "account_id", null: false t.bigint "account_warning_id", null: false diff --git a/spec/lib/annual_report/percentiles_spec.rb b/spec/lib/annual_report/percentiles_spec.rb index 1d1df3166b..11df81cfb6 100644 --- a/spec/lib/annual_report/percentiles_spec.rb +++ b/spec/lib/annual_report/percentiles_spec.rb @@ -4,17 +4,20 @@ require 'rails_helper' RSpec.describe AnnualReport::Percentiles do describe '#generate' do - subject { described_class.new(account, Time.zone.now.year) } + subject { described_class.new(account, year) } + + let(:year) { Time.zone.now.year } context 'with an inactive account' do let(:account) { Fabricate :account } it 'builds a report for an account' do + described_class.prepare(year) + expect(subject.generate) .to include( percentiles: include( - followers: 0, - statuses: 0 + statuses: 100 ) ) end @@ -25,16 +28,15 @@ RSpec.describe AnnualReport::Percentiles do before do Fabricate.times 2, :status # Others as `account` - Fabricate.times 2, :follow # Others as `target_account` Fabricate.times 2, :status, account: account - Fabricate.times 2, :follow, target_account: account end it 'builds a report for an account' do + described_class.prepare(year) + expect(subject.generate) .to include( percentiles: include( - followers: 50, statuses: 50 ) ) From 0a1b5df2024fcf8454638da80a47c336b69e659b Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 4 Nov 2024 12:08:19 +0100 Subject: [PATCH 310/550] Fix alt-text pop-in not using the translated description (#32766) --- app/javascript/mastodon/components/media_gallery.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index e059978442..59963a0a9f 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -97,12 +97,12 @@ class Item extends PureComponent { height = 50; } - if (attachment.get('description')?.length > 0) { - badges.push(); - } - const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); + if (description?.length > 0) { + badges.push(); + } + if (attachment.get('type') === 'unknown') { return (
From c83eea9a581ab30c072c1a0e16a9670aeb949af9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:33:36 +0100 Subject: [PATCH 311/550] Update dependency json-ld-preloaded to v3.3.1 (#32771) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 392acf36bb..617233d702 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -362,7 +362,7 @@ GEM rack (>= 2.2, < 4) rdf (~> 3.3) rexml (~> 3.2) - json-ld-preloaded (3.3.0) + json-ld-preloaded (3.3.1) json-ld (~> 3.3) rdf (~> 3.3) json-schema (5.0.1) From 883b509988028e52baa0bdaf4397b5d81e2f811d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:36:03 +0100 Subject: [PATCH 312/550] Update dependency postcss-preset-env to v10.0.9 (#32746) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 396 +++++++++++++++++++++++++++--------------------------- 1 file changed, 198 insertions(+), 198 deletions(-) diff --git a/yarn.lock b/yarn.lock index e9bdcb459b..c4a35c9328 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1463,13 +1463,13 @@ __metadata: languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/cascade-layer-name-parser@npm:2.0.3" +"@csstools/cascade-layer-name-parser@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.3 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/a0f0d6c94122d0a82b0da94ee2619915a9e6e98211de6e1f28afebe34332a29cab1b7905a34b6e5c1df30a125df9f9860ce5fa960c676484417d4ef2c4db4757 + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/774f2bcc96a576183853191bdfd31df15e22c51901ee01678ee47f1d1afcb4ab0e6d9a78e08f7383ac089c7e0b390013633f45ff1f1d577c9aefd252589bcced languageName: node linkType: hard @@ -1480,42 +1480,42 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/css-calc@npm:2.0.3" +"@csstools/css-calc@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/css-calc@npm:2.0.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.3 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/a3dacda66bde67edab0f2384e85462dcd46b5bb62bc2a6396f0577a006d9ad59eae270353cbd6fe1a5f7081d0546fe4b1fd9b2df242758da54ec8b7022296570 + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/ecb68fc9f8d930b861d5c9c5d4fc6eb43dabc619a4cd6c82dc18034ee746f907dba106fa6cdb909ac727fbfc9b1f7ceac1f356641542faeb2fab99c5fcd52a2e languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/css-color-parser@npm:3.0.4" +"@csstools/css-color-parser@npm:^3.0.5": + version: 3.0.5 + resolution: "@csstools/css-color-parser@npm:3.0.5" dependencies: "@csstools/color-helpers": "npm:^5.0.1" - "@csstools/css-calc": "npm:^2.0.3" + "@csstools/css-calc": "npm:^2.0.4" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.3 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/8f05264254d3768e45e46ce10e9355fe8ca0f6e4d2f648a22572f46c6d05b2378c37c2e5d970ed3b7bdfa0b152ea2af0c56a0556249bd85973aee9db7b091aa7 + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/535e2a38222ad7ee9e1143c3ef09ba07b2e70a4214bbdf7ca13398388b8d2db9ee295fe15d9d306342036e554d97dd235567a8c8ee03fea6825483f1c4dbbf7e languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.3": +"@csstools/css-parser-algorithms@npm:^3.0.1, @csstools/css-parser-algorithms@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/d411f07765e14eede17bccc6bd4f90ff303694df09aabfede3fd104b2dfacfd4fe3697cd25ddad14684c850328f3f9420ebfa9f78380892492974db24ae47dbd + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.1, @csstools/css-tokenizer@npm:^3.0.3": version: 3.0.3 - resolution: "@csstools/css-parser-algorithms@npm:3.0.3" - peerDependencies: - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/c1e634384affb10c3726a36f090867247005a2a470cb223de88debeab07921b78c0e7875e7847d90949c2b0ba88a290c71565f1839f7739c21a5bf1c870e137d - languageName: node - linkType: hard - -"@csstools/css-tokenizer@npm:^3.0.1, @csstools/css-tokenizer@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/css-tokenizer@npm:3.0.2" - checksum: 10c0/a74e5829420ed35982fd33be272c2a19cb2380179d357abe750aa848be6d6699d0437008f47a57eb7c6ff64a34b0c8f91a97dd63dbddd08249b7cf7983767e5e + resolution: "@csstools/css-tokenizer@npm:3.0.3" + checksum: 10c0/c31bf410e1244b942e71798e37c54639d040cb59e0121b21712b40015fced2b0fb1ffe588434c5f8923c9cd0017cfc1c1c8f3921abc94c96edf471aac2eba5e5 languageName: node linkType: hard @@ -1529,13 +1529,13 @@ __metadata: languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^4.0.1": - version: 4.0.1 - resolution: "@csstools/media-query-list-parser@npm:4.0.1" +"@csstools/media-query-list-parser@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/media-query-list-parser@npm:4.0.2" peerDependencies: - "@csstools/css-parser-algorithms": ^3.0.3 - "@csstools/css-tokenizer": ^3.0.2 - checksum: 10c0/037f57520b6ca7d58ba1d71a477bd99bdbe3a6d8e7b972ed0f436d649e574f5b429e54fc47d0272daa2ac24ffb819bd9d260a90e154c4a265b8ee4d1cfb1d279 + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/5d008a70f5d4fd96224066a433f5cdefa76cfd78a74416a20d6d5b2bb1bc8282b140e8373015d807d4dadb91daf3deb73eb13f853ec4e0479d0cb92e80c6f20d languageName: node linkType: hard @@ -1551,60 +1551,60 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-color-function@npm:4.0.4" +"@csstools/postcss-color-function@npm:^4.0.5": + version: 4.0.5 + resolution: "@csstools/postcss-color-function@npm:4.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e7735c6d7c84f039c84dc1b180410aa4db7c404d55477c2e7872bc8306a3150bf37883583ec080ebd8b40b765f700cc78892d61dc167578f76e324543d551c04 + checksum: 10c0/b47cc4567445eb12dd3e67a4298470d62a449a4d754fd4dd32eb78b23615ba6bd1fe8dacccc6c95087ce8749a6552bace8de0b9b6eee0c9a7b7202a0bcb8fcac languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.4" +"@csstools/postcss-color-mix-function@npm:^3.0.5": + version: 3.0.5 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3e01f04853e49c9f69ee0538b817209b630649844039ee5b195cfbae94d41cf6e0d8a50a3d02dbe066f84855eefa1b7047f6750e4744858519978468577e567f + checksum: 10c0/a17d20dcc42d2c1ccd7a5ceb8d1413133ae9461bf973a9aad997a5782bf4cbbd847aef06accc20fa391ac6fbd44a1003e18c30a621d7c77052d4256fe39619aa languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-content-alt-text@npm:2.0.3" +"@csstools/postcss-content-alt-text@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.4" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/0389292a1ba11483f58db1bdd38cc774b0ec18c73f03d1db5f4a1f38edc861bb8b8d750b5c5b3615a98aaf995c0464dcfd6db5421888be0f868548c69455b5b3 + checksum: 10c0/84caccedd8a519df434babd58b14104c5a92cd326057ce509bdbaa2a4bb3130afb1c1456caf30235ba14da52d1628a5411ea4f5d2fb558d603d234f795538017 languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.3" +"@csstools/postcss-exponential-functions@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.4" dependencies: - "@csstools/css-calc": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/690ac6c5ec72e085160401100cc8465a040fd70d59efadf61ef767094edac28bbb2653f53ea7cfa47d8220d0be0b9e23c3e3c2b80d9e93ad07b1db8031163d70 + checksum: 10c0/b174faa8782b7b3f3a9636412f90963740ff033c6506acf662f002fa07f59b370eb23937dbe3f1a05d7df277373f662d6970237d34ae938cf282a0b8dbde9a47 languageName: node linkType: hard @@ -1620,46 +1620,46 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.4" +"@csstools/postcss-gamut-mapping@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/60c6ff13cc71a0cda7ce184fa8b42924975f2bd05e3bc096059de853ae01d48e36f27d02d7e6286d9e8c4eb4dfd526f7c302ff51be19c5f7949dd6079915a3a9 + checksum: 10c0/a9d7365bed5c323dddad06d53c137ef3508870e541c6275dbdf3a73a50d44437830c22fa62c510d9316441d1e9f3b5552730778d1b73d083422245673bd00dac languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.4": - version: 5.0.4 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.4" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.5": + version: 5.0.5 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3b6aa4404851be09a083f35b596acc7e3f74f525386dcd2887720438638ca1893f79e699e5dad0e3a35487cb9527e08d0dcd29f1331f87800f53c13423321d6e + checksum: 10c0/0ef258478270005ab3a879132dc6dbf2bf80788c79861515c826607953c551df1c2ef7005ba9592c31c6dad332d12ee247928a9fdd1569a51927a18a75dcc865 languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-hwb-function@npm:4.0.4" +"@csstools/postcss-hwb-function@npm:^4.0.5": + version: 4.0.5 + resolution: "@csstools/postcss-hwb-function@npm:4.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2460cc7e6324f0793d12976de175ff33344c3410ff7a04ca8a5ce0560ee3354d1d8034f9f07c0759c2b7e222a4681d02298f6a29c2a326c76b33060830da83b4 + checksum: 10c0/9ce0a66bf288c9ec7f1fc28323d56ec54d38a30cb2ab722d1afbd46ec070cc5e61121bacb503803cb00293fc5ed117269969ac21071d7f4ce94b385c96168445 languageName: node linkType: hard @@ -1697,17 +1697,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.6": - version: 2.0.6 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.6" +"@csstools/postcss-light-dark-function@npm:^2.0.7": + version: 2.0.7 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.7" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/f3e93b58a23f0f01c9d032a892070a18e3393e60997e1d2b57c5bddb2cb36f7ee6cbaeaeb3d531b065a545a03e54d86567d34b45eddf85ed48ac360eb4ab66cd + checksum: 10c0/c116bfd2d3f4d0caabdedf8954c2a25908ffb29f9bbe2c57d44a2974277c7e46ee79862eea848385dc040275d343f2330350394a2095ec30f0aa17f72e2f4e39 languageName: node linkType: hard @@ -1749,42 +1749,42 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.2" +"@csstools/postcss-logical-viewport-units@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.3" dependencies: - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/31f525e774bc053f545a159eb53bb21465ea2930118e87c40207ad90fa97d3151e6de83efd02f84803fb0e93ed4a4b42a3904b734423410e73ac4c6ce9666ab4 + checksum: 10c0/8ec746598d7ce8697c3dafd83cb3a319a90079ad755dd78e3ec92f4ba9ad849c4cdaba33b16e9dcbac1e9489b3d7c48262030110c20ce1d88cdacbe9f5987cec languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.3": - version: 2.0.3 - resolution: "@csstools/postcss-media-minmax@npm:2.0.3" +"@csstools/postcss-media-minmax@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/postcss-media-minmax@npm:2.0.4" dependencies: - "@csstools/css-calc": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.1" + "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/87c1ed6fe6ed487125e383ae7bc356ba0f68885c41cd129b85c323af69255031a8ac7b2e994d4f9b6b65d6a9f6833aeb1301ca230b592547825aedb3e3acab4b + checksum: 10c0/f9fe1e99b83a0724250f9426335da6f13bfbc28be6d10ebfafbf037766fc5245240ec33be7e68c9c5b60c013fbc2fa0be96fbed0d41383c919ee9e6f1b8225ce languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.3": - version: 3.0.3 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.3" +"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.4" dependencies: - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.1" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/3bbadd5c79ff2102b4a2e0f107d7f3cbb89d2840b935915531d0a1bfc711d58386e6e234fccb9b4abb37e48f07cdfaa4dd66b5c795dfac9e317fa8b5cfd38e06 + checksum: 10c0/27dc9419b0f4315774647588f599348e7cc593984f59b414c51c910066501fd087cbe232deb762907c18bd21dd4184e7b6e0e0b730e5c72341ab9cc696c75739 languageName: node linkType: hard @@ -1811,18 +1811,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-oklab-function@npm:4.0.4" +"@csstools/postcss-oklab-function@npm:^4.0.5": + version: 4.0.5 + resolution: "@csstools/postcss-oklab-function@npm:4.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/4fd2a5c22ebaf69053e005d9d009ccb41b6879f0246677159bfb6a28208e90af857446c443d34fe3efdaf50bccdd67b16fcd0c1e7c52961396a48bd84e45311f + checksum: 10c0/a49e2ee60066f7da18316c7c80e5b2ced286ec962052f83c01f1952a1c5fe5b65ba9803a04698260125270a1dd47416f0b287a8f42e591f0d88c9a660ae844ce languageName: node linkType: hard @@ -1837,18 +1837,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.4": - version: 3.0.4 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.4" +"@csstools/postcss-relative-color-syntax@npm:^3.0.5": + version: 3.0.5 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/f2ae6f9053e976e2431d08bdc5aa40ca5242754e23370abdfd7b6087d7ed56037e46911d1be801cf7e760aa8aee94bcab6a46f4f68696cf6befacf707c1534b7 + checksum: 10c0/505da97e7b219095a9fb6fa0ad6c6a1358ce1f5debada00564e635e1aa11d034c588be9ce2f76263172a8d1bd07d90647fde826f4565de22dcfc0a76beb68ff1 languageName: node linkType: hard @@ -1863,16 +1863,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.3" +"@csstools/postcss-stepped-value-functions@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.4" dependencies: - "@csstools/css-calc": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/31af5a650d4b2de97d3a3ef77e7ad0777b3f013f7463e23455ac31ffc946d2f79f365a1fdead52c7c535176232ab57f6f086ecdbeca1bb0b250161b1302e8c8c + checksum: 10c0/c8413a855a5ee9ad5b800263545d24d1bbd815f5ae0693c7dfd10c5f5b47bae5a9d985efdb2c46b03194ed3cae39f3d82c3ccfde502dee0b35d620fa539906be languageName: node linkType: hard @@ -1888,16 +1888,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.3": - version: 4.0.3 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.3" +"@csstools/postcss-trigonometric-functions@npm:^4.0.4": + version: 4.0.4 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.4" dependencies: - "@csstools/css-calc": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/a13dd72c00e45e6db16c03e135f1cd1b2b412e83b7681696b49feef3a4c36ab80f5f806f3589d33405e2d14dd0dfb13572ec12007ebe3d294077b0bd3d645b2b + checksum: 10c0/344c07961d24894f315faebf43c0128167fb2e33964c70d0d39d99a051c045678511d7378959105d672c5286a5360fde28fe390cdebfe823f3949e3cd1d50c4e languageName: node linkType: hard @@ -13270,18 +13270,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.4": - version: 7.0.4 - resolution: "postcss-color-functional-notation@npm:7.0.4" +"postcss-color-functional-notation@npm:^7.0.5": + version: 7.0.5 + resolution: "postcss-color-functional-notation@npm:7.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/1e39c47f27610ebf6a6308cfea2904fbe1f157b13654325ada23153a944666722c6132b53dfc7660632406a636479dda68eeb97a246c2e593ad6eed1e9bf838d + checksum: 10c0/5e1771b8a43abd3cb18142842e8ac100b205f37a6757d6686da49e0c61ecf33d09244d256f3802962105e7ef79fbde2dffbfc1eedf1700198c54d2d5e48f3dc1 languageName: node linkType: hard @@ -13335,46 +13335,46 @@ __metadata: languageName: node linkType: hard -"postcss-custom-media@npm:^11.0.4": - version: 11.0.4 - resolution: "postcss-custom-media@npm:11.0.4" +"postcss-custom-media@npm:^11.0.5": + version: 11.0.5 + resolution: "postcss-custom-media@npm:11.0.5" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" - "@csstools/media-query-list-parser": "npm:^4.0.1" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/31e82e5802f6933a15f5fcf64ff41c8107af9c1d5dcba3c4422a6de3fac77bce9e3dc4ed2b79ae7f6ae460549c5da5a013669af05c1ae21549dbb09b66a9492d + checksum: 10c0/5ba1ca0383818e83d5f6f398a2b0c12cfda066b5d552adfc0e030a2c5f8690c2cc6224f9a1832a9c780dae3fd8d00d78c4a5c88eb36b731da1752f0c3917d488 languageName: node linkType: hard -"postcss-custom-properties@npm:^14.0.3": - version: 14.0.3 - resolution: "postcss-custom-properties@npm:14.0.3" +"postcss-custom-properties@npm:^14.0.4": + version: 14.0.4 + resolution: "postcss-custom-properties@npm:14.0.4" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/878ffd171ab9bbbba711930cf1b5bd48a12779e3b45d69f41366c2f65d84518f9338a92a277c0e390518c9e12272e06892cdc6575783bcdecfa6d26ebde3d043 + checksum: 10c0/5b101ee71289657cc2e5a16f4912009c10441052e2c54bd9e4f3d4d72b652bab56adb662ddaa96881413e375cf9852e2159b3c778d953442ce86efb781c3b2bf languageName: node linkType: hard -"postcss-custom-selectors@npm:^8.0.3": - version: 8.0.3 - resolution: "postcss-custom-selectors@npm:8.0.3" +"postcss-custom-selectors@npm:^8.0.4": + version: 8.0.4 + resolution: "postcss-custom-selectors@npm:8.0.4" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^2.0.3" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3acdada43e385c23130f1dde41b189acc7739e5bbd14751ae28b2bd97b0d97f30c2a53da4f9558d108a893cc48717f76b28395a9ff38dcbbe3c3a1721ee4a68a + checksum: 10c0/09d494d2580d0a99f57684f79793d03358286c32460b61a84063c33bdde24865771cb1205efe9a8e26a508be24eba4fb93fc7f1e96ba21ca96a5d17fadb24863 languageName: node linkType: hard @@ -13492,18 +13492,18 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.4": - version: 7.0.4 - resolution: "postcss-lab-function@npm:7.0.4" +"postcss-lab-function@npm:^7.0.5": + version: 7.0.5 + resolution: "postcss-lab-function@npm:7.0.5" dependencies: - "@csstools/css-color-parser": "npm:^3.0.4" - "@csstools/css-parser-algorithms": "npm:^3.0.3" - "@csstools/css-tokenizer": "npm:^3.0.2" + "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/79ce3cc20484aef0e0bbc2d18c8f91d7362226a3db52f06a931ac8e1c58ffbc60876c6439f364093e5f16ef92260a420230cfb2a9e7b95c6c11e6f7d57626260 + checksum: 10c0/b688f6332ac12974452c97c5a40f4d0a604ce16b074124a1106add9cf9c25fbe7717d23423d6e92d937dc6e288e03e885b70e0793b96f41d28d2f7403bce7bf5 languageName: node linkType: hard @@ -13824,38 +13824,38 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.8 - resolution: "postcss-preset-env@npm:10.0.8" + version: 10.0.9 + resolution: "postcss-preset-env@npm:10.0.9" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.1" - "@csstools/postcss-color-function": "npm:^4.0.4" - "@csstools/postcss-color-mix-function": "npm:^3.0.4" - "@csstools/postcss-content-alt-text": "npm:^2.0.3" - "@csstools/postcss-exponential-functions": "npm:^2.0.3" + "@csstools/postcss-color-function": "npm:^4.0.5" + "@csstools/postcss-color-mix-function": "npm:^3.0.5" + "@csstools/postcss-content-alt-text": "npm:^2.0.4" + "@csstools/postcss-exponential-functions": "npm:^2.0.4" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.4" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.4" - "@csstools/postcss-hwb-function": "npm:^4.0.4" + "@csstools/postcss-gamut-mapping": "npm:^2.0.5" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.5" + "@csstools/postcss-hwb-function": "npm:^4.0.5" "@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-initial": "npm:^2.0.0" "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" - "@csstools/postcss-light-dark-function": "npm:^2.0.6" + "@csstools/postcss-light-dark-function": "npm:^2.0.7" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" - "@csstools/postcss-logical-viewport-units": "npm:^3.0.2" - "@csstools/postcss-media-minmax": "npm:^2.0.3" - "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.3" + "@csstools/postcss-logical-viewport-units": "npm:^3.0.3" + "@csstools/postcss-media-minmax": "npm:^2.0.4" + "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.4" "@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.4" + "@csstools/postcss-oklab-function": "npm:^4.0.5" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.4" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.5" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.3" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.4" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.3" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.4" "@csstools/postcss-unset-value": "npm:^4.0.0" autoprefixer: "npm:^10.4.19" browserslist: "npm:^4.23.1" @@ -13865,12 +13865,12 @@ __metadata: cssdb: "npm:^8.1.2" postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.4" + postcss-color-functional-notation: "npm:^7.0.5" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" - postcss-custom-media: "npm:^11.0.4" - postcss-custom-properties: "npm:^14.0.3" - postcss-custom-selectors: "npm:^8.0.3" + postcss-custom-media: "npm:^11.0.5" + postcss-custom-properties: "npm:^14.0.4" + postcss-custom-selectors: "npm:^8.0.4" postcss-dir-pseudo-class: "npm:^9.0.1" postcss-double-position-gradients: "npm:^6.0.0" postcss-focus-visible: "npm:^10.0.1" @@ -13878,7 +13878,7 @@ __metadata: postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.4" + postcss-lab-function: "npm:^7.0.5" postcss-logical: "npm:^8.0.0" postcss-nesting: "npm:^13.0.1" postcss-opacity-percentage: "npm:^3.0.0" @@ -13890,7 +13890,7 @@ __metadata: postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/3f7dc8eb2e7f4e7a5eee0a9456972a5b18bd40109d1aa3328f60cd645d352f3a70c83c507ea58f83b820153b0f5c3f14af3f376573c56599c36d5739c943b6f1 + checksum: 10c0/985ef4cfd2dd6a94d8a802db8e392c4b4c47ae0de8fd5224c60d8172cac3d7ce9011e63ab80470cddc77f21f09b2be850f97ac2478f651bc0a8956b538b079fe languageName: node linkType: hard From 933fa81bafffc9084c1f2d96161f724be6777458 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 08:41:09 +0000 Subject: [PATCH 313/550] New Crowdin Translations (automated) (#32772) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ru.json | 13 +++++++++-- config/locales/doorkeeper.ru.yml | 1 + config/locales/ru.yml | 29 +++++++++++++++++++++++++ config/locales/simple_form.ru.yml | 2 ++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index d75b5fab26..9d937939a9 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -158,6 +158,7 @@ "compose_form.poll.duration": "Продолжительность опроса", "compose_form.poll.multiple": "Несколько вариантов ответа", "compose_form.poll.option_placeholder": "Вариант {number}", + "compose_form.poll.single": "Один вариант ответа", "compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов", "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", "compose_form.poll.type": "Стиль", @@ -222,6 +223,7 @@ "domain_block_modal.they_cant_follow": "Никто из этого сервера не может подписываться на вас.", "domain_block_modal.they_wont_know": "Он не будет знать, что его заблокировали.", "domain_block_modal.title": "Заблокировать домен?", + "domain_block_modal.you_will_lose_num_followers": "Вы потеряете {followersCount, plural, one {{followersCountDisplay} подписчика} other {{followersCountDisplay} подписчиков}} и {followingCount, plural, one {{followingCountDisplay} подписку} other {{followingCountDisplay} подписок}}.", "domain_block_modal.you_will_lose_relationships": "Вы потеряете всех подписчиков и людей, на которых вы подписаны, на этом сервере.", "domain_block_modal.you_wont_see_posts": "Вы не будете видеть записи или уведомления от пользователей на этом сервере.", "domain_pill.activitypub_lets_connect": "Это позволяет вам общаться и взаимодействовать с людьми не только на Mastodon, но и в различных социальных приложениях.", @@ -507,7 +509,7 @@ "notification.admin.sign_up": "{name} зарегистрирован", "notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались", "notification.favourite": "{name} добавил(а) ваш пост в избранное", - "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# другие} other {# другие}} отдали предпочтение вашему посту", + "notification.favourite.name_and_others_with_link": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} добавили ваш пост в избранное", "notification.follow": "{name} подписался (-лась) на вас", "notification.follow.name_and_others": "{name} и {count, plural, one {# other} few {# others} many {# others} other {# others}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", @@ -530,7 +532,7 @@ "notification.own_poll": "Ваш опрос закончился", "notification.poll": "Голосование, в котором вы приняли участие, завершилось", "notification.reblog": "{name} продвинул(а) ваш пост", - "notification.reblog.name_and_others_with_link": "{name} и {count, plural, one {# other} other {# others}} увеличили ваш пост", + "notification.reblog.name_and_others_with_link": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} продвинули ваш пост", "notification.relationships_severance_event": "Потеряно соединение с {name}", "notification.relationships_severance_event.account_suspension": "Администратор {from} заблокировал {target}, что означает, что вы больше не сможете получать обновления от них или взаймодествовать с ними.", "notification.relationships_severance_event.domain_block": "Администратор {from} заблокировал {target} включая {followersCount} ваших подписчиков и {followingCount, plural, one {# аккаунт} few {# аккаунта} other {# аккаунтов}}, на которые вы подписаны.", @@ -539,10 +541,15 @@ "notification.status": "{name} только что запостил", "notification.update": "{name} изменил(а) пост", "notification_requests.accept": "Принять", + "notification_requests.accept_multiple": "{count, plural, one {Принять # запрос…} few {Принять # запроса…} other {Принять # запросов…}}", "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Принять запрос} other {Принять запросы}}", + "notification_requests.confirm_accept_multiple.message": "Вы собираетесь принять {count, plural, one {# запрос на показ уведомлений} few {# запроса на показ уведомлений} other {# запросов на показ уведомлений}}. Продолжить?", "notification_requests.confirm_accept_multiple.title": "Принимать запросы на уведомления?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Отклонить запрос} other {Отклонить запросы}}", + "notification_requests.confirm_dismiss_multiple.message": "Вы собираетесь отклонить {count, plural, one {# запрос на показ уведомлений} few {# запроса на показ уведомлений} other {# запросов на показ уведомлений}}. Вы не сможете просмотреть {count, plural, other {их}} потом. Продолжить?", "notification_requests.confirm_dismiss_multiple.title": "Отклонять запросы на уведомления?", "notification_requests.dismiss": "Отклонить", + "notification_requests.dismiss_multiple": "{count, plural, one {Отклонить # запрос…} few {Отклонить # запроса…} other {Отклонить # запросов…}}", "notification_requests.edit_selection": "Редактировать", "notification_requests.exit_selection": "Готово", "notification_requests.explainer_for_limited_account": "Уведомления от этой учетной записи были отфильтрованы, поскольку учетная запись была ограничена модератором.", @@ -597,6 +604,7 @@ "notifications.policy.filter_limited_accounts_title": "Модерируемые аккаунты", "notifications.policy.filter_new_accounts.hint": "Создано в течение последних {days, plural, one {один день} few {# дней} many {# дней} other {# дня}}", "notifications.policy.filter_new_accounts_title": "Новые учётные записи", + "notifications.policy.filter_not_followers_hint": "Включая людей, которые подписаны на вас меньше чем {days, plural, one {# день} few {# дня} other {# дней}}", "notifications.policy.filter_not_followers_title": "Люди, не подписанные на вас", "notifications.policy.filter_not_following_hint": "Пока вы не одобрите их вручную", "notifications.policy.filter_not_following_title": "Люди, на которых вы не подписаны", @@ -788,6 +796,7 @@ "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Получить код для встраивания", "status.favourite": "Избранное", + "status.favourites": "{count, plural, one {в избранном} other {в избранном}}", "status.filter": "Фильтровать этот пост", "status.history.created": "{name} создал {date}", "status.history.edited": "{name} отредактировал(а) {date}", diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml index 1dcb2093d5..c7ea94c2e3 100644 --- a/config/locales/doorkeeper.ru.yml +++ b/config/locales/doorkeeper.ru.yml @@ -60,6 +60,7 @@ ru: error: title: Произошла ошибка new: + prompt_html: "%{client_name} хочет получить доступ к вашему аккаунту. Принимайте запрос только в том случае, если узнаёте, откуда он, и доверяете источнику." review_permissions: Просмотр разрешений title: Требуется авторизация show: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index b7a10269fa..41b74c8cb4 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -25,6 +25,7 @@ ru: one: Пост other: статусов posts_tab_heading: Посты + self_follow_error: Нельзя подписаться на самого себя admin: account_actions: action: Выполнить действие @@ -462,6 +463,7 @@ ru: title: Блокировка нового почтового домена no_email_domain_block_selected: Блоки почтовых доменов не были изменены, так как ни один из них не был выбран not_permitted: Не разрешено + resolved_dns_records_hint_html: Доменное имя указывает на следующие MX-домены, которые в конечном итоге отвечают за прием электронной почты. Блокировка MX-домена будет блокировать регистрации с любого адреса электронной почты, который использует тот же MX-домен, даже если видимое доменное имя отличается от него. Будьте осторожны, чтобы не заблокировать основных провайдеров электронной почты resolved_through_html: Разрешено через %{domain} title: Заблокированные e-mail домены export_domain_allows: @@ -625,6 +627,7 @@ ru: resolve_description_html: Никаких действий не будет выполнено относительно доложенного содержимого. Жалоба будет закрыта. silence_description_html: Учетная запись будет видна только тем пользователям, которые уже подписаны на неё, либо открыли его вручную. Это действие можно отменить в любой момент, и отменяет все жалобы против аккаунта. suspend_description_html: Аккаунт и все его содержимое будут недоступны и в конечном итоге удалены, и взаимодействие с ним будет невозможно. Это действие можно отменить в течение 30 дней. Отменяет все жалобы против этого аккаунта. + actions_description_html: Выберите действие, чтобы разрешить данную жалобу. Если вы примете меры модерации против аккаунта, его владелец получит уведомление по электронной почте, кроме тех случаев, когда выбрана категория Спам. actions_description_remote_html: Решите вопрос о том, какие меры необходимо принять для урегулирования этой жалобы. Это повлияет только на то, как ваш сервер взаимодействует с этим удаленным аккаунтом и обрабатывает его содержимое. actions_no_posts: У этого отчета нет связанных с ним сообщений для удаления add_to_report: Прикрепить ещё @@ -902,6 +905,7 @@ ru: sidekiq_process_check: message_html: Ни один Sidekiq не запущен для %{value} очереди(-ей). Пожалуйста, просмотрите настройки Sidekiq software_version_check: + action: Посмотреть доступные обновления message_html: Доступно обновление для Mastodon. software_version_critical_check: action: Посмотреть доступные обновления @@ -1198,8 +1202,11 @@ ru: use_security_key: Использовать ключ безопасности author_attribution: example_title: Образец текста + hint_html: Публикуете ли вы свои статьи где-либо ещё кроме Mastodon? Если да, то ваше авторство может быть упомянуто, когда ими делятся в Mastodon. + instructions: 'Добавьте код ниже в HTML ваших статей:' more_from_html: Больше от %{name} s_blog: "%{name}'S Блог" + then_instructions: Затем добавьте доменное имя сайта, где вы публикуетесь, в поле ниже. title: Авторская атрибуция challenge: confirm: Продолжить @@ -1411,6 +1418,27 @@ ru: merge_long: Сохранить имеющиеся данные и добавить новые. overwrite: Перезаписать overwrite_long: Перезаписать имеющиеся данные новыми. + overwrite_preambles: + blocking_html: + few: Вы собираетесь заменить свой список блокировки, в котором сейчас %{count} аккаунта, из файла %{filename}. + many: Вы собираетесь заменить свой список блокировки, в котором сейчас %{count} аккаунов, из файла %{filename}. + one: Вы собираетесь заменить свой список блокировки, в котором сейчас %{count} аккаунт, из файла %{filename}. + other: Вы собираетесь заменить свой список блокировки, в котором сейчас %{count} аккаунтов, из файла %{filename}. + bookmarks_html: + few: Вы собираетесь заменить свои закладки, в которых сейчас %{count} поста, из файла %{filename}. + many: Вы собираетесь заменить свои закладки, в которых сейчас %{count} постов, из файла %{filename}. + one: Вы собираетесь заменить свои закладки, в которых сейчас %{count} пост, из файла %{filename}. + other: Вы собираетесь заменить свои закладки, в которых сейчас %{count} постов, из файла %{filename}. + domain_blocking_html: + few: Вы собираетесь заменить свой список доменных блокировок, в котором сейчас %{count} домена, из файла %{filename}. + many: Вы собираетесь заменить свой список доменных блокировок, в котором сейчас %{count} доменов, из файла %{filename}. + one: Вы собираетесь заменить свой список доменных блокировок, в котором сейчас %{count} домен, из файла %{filename}. + other: Вы собираетесь заменить свой список доменных блокировок, в котором сейчас %{count} доменов, из файла %{filename}. + following_html: + few: Вы собираетесь подписаться на %{count} аккаунта из файла %{filename} и отписаться от всех прочих. + many: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename} и отписаться от всех прочих. + one: Вы собираетесь подписаться на %{count} аккаунт из файла %{filename} и отписаться от всех прочих. + other: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename} и отписаться от всех прочих. preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла. recent_imports: Недавно импортированное states: @@ -1728,6 +1756,7 @@ ru: delete: Удаление учётной записи development: Разработчикам edit_profile: Изменить профиль + export: Экспорт featured_tags: Избранные хэштеги import: Импорт import_and_export: Импорт и экспорт diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 1bdffc6f1d..37626ff9fd 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -3,6 +3,7 @@ ru: simple_form: hints: account: + attribution_domains_as_text: По одному на строку. Защищает от ложных атрибуций. discoverable: Ваши публичные сообщения и профиль могут быть показаны или рекомендованы в различных разделах Mastodon, и ваш профиль может быть предложен другим пользователям. display_name: Ваше полное имя или псевдоним. fields: Ваша домашняя страница, местоимения, возраст - все, что угодно. @@ -143,6 +144,7 @@ ru: url: Куда события будут отправляться labels: account: + attribution_domains_as_text: Веб-сайты, которым разрешено ссылаться на вас discoverable: Профиль и сообщения в алгоритмах обнаружения fields: name: Пункт From d60ef3f17e37661fc9285e427f6a3a58fffe9d68 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 5 Nov 2024 09:55:34 +0100 Subject: [PATCH 314/550] Disable `httplog` gem in production (#32776) --- Gemfile | 2 +- config/initializers/httplog.rb | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 22a8d86c3c..bc7a219789 100644 --- a/Gemfile +++ b/Gemfile @@ -53,7 +53,7 @@ gem 'hiredis', '~> 0.6' gem 'htmlentities', '~> 4.3' gem 'http', '~> 5.2.0' gem 'http_accept_language', '~> 2.1' -gem 'httplog', '~> 1.7.0' +gem 'httplog', '~> 1.7.0', require: false gem 'i18n' gem 'idn-ruby', require: 'idn' gem 'inline_svg' diff --git a/config/initializers/httplog.rb b/config/initializers/httplog.rb index 02fcef4120..7a009e84d1 100644 --- a/config/initializers/httplog.rb +++ b/config/initializers/httplog.rb @@ -1,7 +1,12 @@ # frozen_string_literal: true -HttpLog.configure do |config| - config.logger = Rails.logger - config.color = { color: :yellow } - config.compact_log = true +# Disable httplog in production unless log_level is `debug` +if !Rails.env.production? || Rails.configuration.log_level == :debug + require 'httplog' + + HttpLog.configure do |config| + config.logger = Rails.logger + config.color = { color: :yellow } + config.compact_log = true + end end From 20a147170ed00f1c3cf3e41ea30dc12d989109c9 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 5 Nov 2024 09:20:27 -0500 Subject: [PATCH 315/550] Remove unused `usage` method from `REST::V1::InstanceSerializer` (#32768) --- app/serializers/rest/v1/instance_serializer.rb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index 7f9f21c5af..db83af4907 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -48,14 +48,6 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer { streaming_api: Rails.configuration.x.streaming_api_base_url } end - def usage - { - users: { - active_month: instance_presenter.active_user_count(4), - }, - } - end - def configuration { accounts: { From d6349c0e9aa93c3d9f70dafb26cf792e874022bf Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 5 Nov 2024 15:40:07 +0100 Subject: [PATCH 316/550] Add year in review feature to web UI (#32709) --- .../api/v1/annual_reports_controller.rb | 11 + app/javascript/images/archetypes/booster.png | Bin 0 -> 635021 bytes app/javascript/images/archetypes/lurker.png | Bin 0 -> 1057477 bytes app/javascript/images/archetypes/oracle.png | Bin 0 -> 1208409 bytes app/javascript/images/archetypes/pollster.png | Bin 0 -> 727543 bytes app/javascript/images/archetypes/replier.png | Bin 0 -> 805191 bytes .../mastodon/api_types/notifications.ts | 16 +- .../mastodon/components/modal_root.jsx | 22 +- .../features/annual_report/archetype.tsx | 69 ++++ .../features/annual_report/followers.tsx | 69 ++++ .../annual_report/highlighted_post.tsx | 105 ++++++ .../mastodon/features/annual_report/index.tsx | 99 ++++++ .../features/annual_report/most_used_app.tsx | 29 ++ .../annual_report/most_used_hashtag.tsx | 29 ++ .../features/annual_report/new_posts.tsx | 53 +++ .../features/annual_report/percentile.tsx | 53 +++ .../components/notification_annual_report.tsx | 59 +++ .../components/notification_group.tsx | 9 + .../status/components/detailed_status.tsx | 8 +- .../ui/components/annual_report_modal.tsx | 21 ++ .../features/ui/components/modal_root.jsx | 2 + .../features/ui/util/async-components.js | 4 + app/javascript/mastodon/locales/en.json | 20 ++ .../mastodon/models/annual_report.ts | 44 +++ .../mastodon/models/notification_group.ts | 25 +- .../400-24px/celebration-fill.svg | 1 + .../material-icons/400-24px/celebration.svg | 1 + .../material-icons/400-24px/explore-fill.svg | 2 +- .../material-icons/400-24px/explore.svg | 2 +- app/javascript/styles/application.scss | 1 + .../styles/mastodon/annual_reports.scss | 335 ++++++++++++++++++ .../styles/mastodon/components.scss | 6 +- app/models/notification.rb | 6 +- app/models/notification_group.rb | 1 + .../rest/annual_report_event_serializer.rb | 9 + .../rest/notification_group_serializer.rb | 5 + app/services/notify_service.rb | 6 +- config/routes/api.rb | 2 +- 38 files changed, 1103 insertions(+), 21 deletions(-) create mode 100755 app/javascript/images/archetypes/booster.png create mode 100755 app/javascript/images/archetypes/lurker.png create mode 100755 app/javascript/images/archetypes/oracle.png create mode 100755 app/javascript/images/archetypes/pollster.png create mode 100755 app/javascript/images/archetypes/replier.png create mode 100644 app/javascript/mastodon/features/annual_report/archetype.tsx create mode 100644 app/javascript/mastodon/features/annual_report/followers.tsx create mode 100644 app/javascript/mastodon/features/annual_report/highlighted_post.tsx create mode 100644 app/javascript/mastodon/features/annual_report/index.tsx create mode 100644 app/javascript/mastodon/features/annual_report/most_used_app.tsx create mode 100644 app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx create mode 100644 app/javascript/mastodon/features/annual_report/new_posts.tsx create mode 100644 app/javascript/mastodon/features/annual_report/percentile.tsx create mode 100644 app/javascript/mastodon/features/notifications_v2/components/notification_annual_report.tsx create mode 100644 app/javascript/mastodon/features/ui/components/annual_report_modal.tsx create mode 100644 app/javascript/mastodon/models/annual_report.ts create mode 100644 app/javascript/material-icons/400-24px/celebration-fill.svg create mode 100644 app/javascript/material-icons/400-24px/celebration.svg create mode 100644 app/javascript/styles/mastodon/annual_reports.scss create mode 100644 app/serializers/rest/annual_report_event_serializer.rb diff --git a/app/controllers/api/v1/annual_reports_controller.rb b/app/controllers/api/v1/annual_reports_controller.rb index 9bc8e68ac2..b1aee288dd 100644 --- a/app/controllers/api/v1/annual_reports_controller.rb +++ b/app/controllers/api/v1/annual_reports_controller.rb @@ -17,6 +17,17 @@ class Api::V1::AnnualReportsController < Api::BaseController relationships: @relationships end + def show + with_read_replica do + @presenter = AnnualReportsPresenter.new([@annual_report]) + @relationships = StatusRelationshipsPresenter.new(@presenter.statuses, current_account.id) + end + + render json: @presenter, + serializer: REST::AnnualReportsSerializer, + relationships: @relationships + end + def read @annual_report.view! render_empty diff --git a/app/javascript/images/archetypes/booster.png b/app/javascript/images/archetypes/booster.png new file mode 100755 index 0000000000000000000000000000000000000000..18c92dfb7d57cd5773a559f51bfac689e145dee3 GIT binary patch literal 635021 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�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

%-}mE(;reb9Fej+ z*8~XWCxR=nU>qiA$nOt`UpyM!jhU<~K5zS$Un13>?34bv`*@%jUuj(f7eJ z7)M30>5*&LmzoF(19e)kxFSA|l*V5tGQyb!}Q z&dpL*zV6Mf4y#dE^t7>o<`dQS2AS1FJyS4B6=4|FC}Y_0)jw*S@`+|}<}OlT3eVQd z)&L?L`Du^$^JjB=Lh3+TVj8@j`#DPRm2QmdkEQ1a(-*+pFjifC(Fc@8NAqie=qi zyfy~s1BV_)uknTMt}mUhmY^nkSN03v4zi6v5!mJu;mDw5k_FxeBK`?dznjYO#S=t; z9FfcESna+ha{!lr=l-7proN2Yxh1bFtV!NDR;0TJ7QQ8A7W$Qcn(FCJ6+=grfG z;JAX4)guo6ixjNR{aL(y!1X@EW>busF+O2tlbi}2CnZwdjdU zjAe_}SYoNr!kJ~G!&7;S6=o2Fkn_Z?={=(fhcEVLo1e<8+T6=GLowlQ2RV0~+*n8x z>5A{X%5eKf5p@_JMSp%`7EcxPY2IENRYmFNKsMx%H_(s zko!9yoD)1*4O$Du=t7ETjb2pbnVl7(>A_2j`CDOg;ZdeBQwt0sd;$&%LWTlVM^nZz z1~~%D%@x{|(3p~0aaa~ihfi6Ih6mBFK_q7&HY;0rcC1~qLY%<)gCy0Vq&Gs|VR3j^ zowb#(HPZ3xty&2IJ%lx@Erqk*d#>4b-U>5f*m#c1FlD+9qL@yP2bjgTmETidw7%^3vdGcgH9-2Mo z%hsNsMsV_6_QF)jyEFC#2L#+<`5#o{j@}x>&t2N)Gwj=EsD3g?fId(8WZxt zxMcB2Ne`#<*1u3zQqc?;ksxGeRfnCRzR?eCd9RuR>$-FrHis)Z>|t8dpNkw|Ng|s8 zdDizcFS-?AP!qz0eCHx>r->T_S;~!p3KMF5Ffa7j@7t?lGDnA-?Wp9%l#)b8<{eXh z!XAWRl4_QlAzWEmJbSQJw27*dfI)A!oi_QSb_}>U{Bns)Fg=v7R0vZgLfvgyHR&wA zKUnttUskWU`sd&gLE(t#>5ks zQ^JWh*-4;)lTRxqmE>k`LHzQxj`+Cbw3n*L;RU(Fy0QIYB>&GtDSDUN^~i*)a%Lfg z>a=Nnrt1>@n(YT%BWYvh0*)>;R(9ik((ZRO()X1|K6{myA7gK?UL6VaUXH&F=)Pv` zAsO|txp9HpRJ~VgeJy75-_3{R>MaYL1@`?`c6;i;aXL#MRf*fkl_8I8-5doDHZUVw zx~^*99|qm|9GMDR7J}-L%=Ff~#kDGt|2tOXa;jLWmE)nnFFC=VGRVH?EhdaD8gv#a zDdv(gT1QHb8{-mkRJ39Q?>pl*dH4P?uDHguAJw4$%-ybAV5!eO&IxMD<3}afXMX)2 zRb6(F#UCVbrQhgg9N4!iQ#ehe!Dwu@rkOEXGn5&4duE)Hzb>^v%K+;X`HhM^LH3)$ zJ^uS|vd;~tWF0V+iLBmk?az;WDQ(84zvm;3{R($ad~ivqI9|x^%M#CHUT*cNOhlALG9~j2>jTAv z&I&vT+man`*d2^?in~(|G|!DD7rEEEsapG~iZm9%*uqk`f7J#pCjBgUAz8Uqr1va8 z=RgF;Z{qxG&=k7+>%`8h{^jU6G-wMq4&0T;BRQh)Vl@h~p`iUq#Mc}6ab&1*D*Jk< zYSD6!orw$*`BaDV#8_;E%{ksXee`*fb#Cx0Y zW1#T4Gjkbgl2dat)g9cgz4Y22$l!61-3}Kam)ZSx!*(}3$n#$eNBT{!SWTf*i`%6v@aQRy*^s(Fyr7oQiCmPjuim^=%biMxw)4L7lZ?r^*$f{D>~`)3 zWZ<`8lcZlNyHA7)WJJ5zl%X?m3UmBP=0E@LS--P3J1O(S{B@BkS)Yp~;0-FLn@}v& zBFjInxFN{Wmw}I!Dtr^jfQL_y;Ihnx{v!$YZXg9J`{waB22!v1bKgJmgm$TiRi5F@ zJxWse6*_r!m>p3TQWvw=8?v`R-yV2qn}k7JWrC`0s*7snfNG_QS|i+-=~#9=<%F3* zPIE50{&Vvj@3koXxkML&C z8*ke~N@Z!$nuj|*{Ym6H7oX%bAsaPunfN%0(KR~yJL}A{9Mt-ikX9)mpKF%$Ul50x zpf)9vx#9;pyWyY14k|D<0>Zf27s6quMdso%@|WN@lh@} zhi8UKON}Z`k?v6L>fS2u?E~lMtCm_L%9@d+nhoKC4L$=bZC0E8Ii1D085RVB-_vh@ zSv#HFi*r{yc6HPaH+>R@To?Ki0sI&)B6;;M8mjE6MVgmVqaf z6Jbb$`bFpY`LQCG^2|ZcvOH2Twn{e6nKnFVSsTkiRpd0v(MF z+aa9$^UV_(JRe0Ka`7xb?W7f&VI87}qvT)BcWm>2m(6XU`4=l+YZ-9&t5DL#K%1Uc?a9pW^orjl{Ik zN5&IkVjGd0hYn89Y4LHl9}5gLhn%V1R@s=kk^JhR4V<&vY{mDT8L5`z&T;XIS9t~P zI3b?GQdJJFIgv?zEBuums1v7#`ajJs15_6%&VPslau4J$;9gVnFJF1WyxvA$(@sT4 zUTA8O_uZ!H^3m~xeE?A~+ojf(es^w<>VTpuJmN3Ip)V)5acjI9xGuBI_#(kuzaZ-M z@}9ckrO4UV}%0Vz68l6Bvz_s>p2$^}M!G394llb_^_EJK7W zYj+_=Un4jr&WZCS^pqtR^=>@$yw@&1T$lKxu@|Biv$b4Z6E`7!v02dn&Q7#iYj-4Q z9O>WgE`uSE?vZj_9lpgI)@sqrq6QL6H<3L$j@_7ax8hVvZ?6xS z)CFdt0k5*aZm2NB=u|2&r}8WP3ZL!+t&v?LdJVX?^$1~Hy^7N)M?A*M??oaHwe(s6 z+)n8z?hv}waOFsqcfN#WzVPV_9wigWB_+PqaMkMPu{n;vF6>Ma9?=|5DD`xQ9)<@J zFZdlG{X@RO@-TX6e;`9wJBrZ2AEp3eAOP8cBtF#Oa+uDZD5nd_SSMS$T$AkMRe=YDHW)+HZ z%f$jrzb$j)A~gWRIJLR=JALhLleWRww27&z+uz|cgVa#z$);oqd6-vx;O)sJ#onOY|Ccudnw%KuAJe@`i`C0C#)q*{u{d!Q zvx84#))%?#`67BP^LmHY7vufRqUJbSfD)Qxrr(vnz`F|E+ymq2<`RWBG^EF5zu90| zmz1I;N^8gA6Uny@H_LL^#zMXNwb|NqI|y~qf_<7J$?TbZxO@ijO?83#*T$&cmyEX% zkHio_U}XHfxJdF(iKySbDKHG>df#W&&88kj9eFLwXlWtRP_1u($_5;Z){UxGq=vG} z`62n&_b23Si&e9Y9oKVZNC&f&zqzo{sza@5a5J9YZAS~IUup!k6->_67cFiyH*c)j zTGP3u+w$B{KHicaT^G5%zM@vLom$hHyC1B6fQtJ7FCosg<1qV=!Z*+fIhjXK_OAz; zZ!gSUS*c^vQ3ywFs?teC3Q7~~yn>4#%R{N=NDudD(#qX?scs2!)xG0>@vU~qvHfXC zHNqhUcnw8i_zW}rDpn?S=>-KsFE4q)gFp1)gEOg~@)X#Bem@e+x~7`rPjHkL*fig= zjC9u3b&CF5j(j9+E&jPGT?&bMI3_gC^ytRM?l!ryA#}J$RPj@EfP6>O5q4En#g85+ zJQe@!%%&t$E4!L3k}Jgj+|4P}NWeF0PMKit47s1`47-sL9#AEud1+$M>dDaoXTta< zqmTQ{4lnA*Lbp2q7@Z2@rB7fiNQGHNo2H|xBA9~YB@jpq$1eT^G9(>}Q*HJQ!n_D* z6saUY3;TTUHCpA)R`Si|ic=)6N$Pc6966J>pYJn>$!^YQ#nJ{Y&6yf#+0Sb4Mqm}p zK8WFD-WF7r{HAdJr0mn;cTEou%l?g7m&fYdTna&Nb z?ft~OkBh_wr7kX|>0y-`Ax>3y?_bQ+Uc1)GvTtL}GOsgLU~^=n_>3oo%`fye!9h+H zk_z2#h%ZvXp6Q-MA3AY^K#`WEQiTB#ArnWYZNzVD9zSZvSOG^HGt+!BKRRM~HK|u- zBUfi5@xL;7d^=}Fstr!b-D7DK4H;H9ob=(S2|1T4v9B6;0t`(Y0pU5~XnauZmTXL7 z%~~^gu|5y{XiNrl-P&PY)FamQR=Qyi#KCW3Io0`rJCm?a`T0*M@dG!1tS`5k15Z*J zNQoKzdYIARaQv*k@^1X;L73*U zjD6a&Q*mEq*q)M@7!VQpibqUr;#`-WmseVV(Phgx(ps`Uy2k!{WdA20gKjo)RgVTF z*F&$(^BcX_e}SDOUhy_@WmNYIjcn)S+8u{~XlM(MmIH*}d=a{dR9{dMn2FFgXN0?d zMk(-MVz5OEY{J6BfBj#1er$mO?Xb;%3rzRFWH&XOYff3&^s~wBV@$fQ(mf5{`B?%x zP~cf9iej)t3WD88aqPgB7-n&@Zm|2p;rBb`Y$&lSSG0T-j{#p>xs?$aOIxy`Uodl= zsAiBUD1l4F%>bBzYJo%rY5`opH9BzbI~bTd!YmWjN3#sZOz2 z^yl!~>jZl15W+qb08|^J0j;=49&6;7l+B+xpJds+S7py6xY?6jN$`@2_*E1B%U-VU zGYjyoyHptdOoI3Ce-D~{B)TTz4A>jjaa@UQeL|%bFMYB`(^{V8*>tT_9#FBLDS$<< z2ho$1bwE_DhhJ%mzLCx&I1(3iGYn=TwYA@B<@K9Iw3o^A;ImQ_&b(U55m*;*=cWsM zY#^pAd<0TFWNHjuOdJrGsYk<@3sr&*gi`8$Xsf z?5$kbQhOA#z}Kzq630j_^{G&XFw4gK+l+MP5d{YcbpLNB)k}HdVkitON?*R_Et$+S z9R;Nh?7OO%(iuA!SG4X6=0@d9BUpfLWm1{nKM)=5)TxGsmp`Zb6>@kL?HFB%SQ{PV z}+IJq4QOS@so{%x}|Zac~~Bj}2e9FLxLR}CY$OSF=TFC~N${od9Ok*SRR#ka}; zLAMv!TqQm3LnN+Fuh$0NS|XA5jU8bv^5B!HpddfU8AoB=tP=msGrkIs(hY|{*T0+# zS-w96Sc515B8z3)Mu%|H)0Yf>4xUXD*47!P=iUYkRI3v+~aBLZ{PI|pmc77abj`t(1=b3Kd>%+_PwdH}Xeau!)8 zW2hAlfm-9((r;3>2|AEzU8{AdDaulej@bT|_{hjl{W#YgyIgEa>fVRE;6sdgDVSHE zt}5mDc>*UhHP5OJKXV}TC%%&<$Hy{)fg7$79`u7L7!YDqmXdQFdgD{km}ymBNEt{0 zw)jG>0jH)8!ohD-~@FwKu?!14#Dk&){c=>srYi9er zDtCurk41c;K{Bw6?Aq&*i|{`gg2fr~3)R0bX{$n%)W(iS@w=W!z&~~-eV-O;hBGs3 zt;~=DC%9l18%x8K@HSp9=Xlis<=hxnR+TwC|A(iu3TuN4)-|rh-3z6~-JL=y?(W6i zT>}M*2X`;-?(VL|ihFPit|$HX-sd70$z`53Yt4M$J2QNv9vAD=hOf6vM`uhNO{TH3 z%-WMKIqg9t4r@bqXXVO(=7mD@obEcJS2+02&GoS z1Qa;)xo=tH(@(NYxJmM-7@MoCnf|QQk~?P4AZ0j}Nk_CXY(8otxrDarXTsIH53ImQ zl|}g$kp#KFKFhX9WdwJmS9>F6j=K=SXFdjOA_8^T#Jel&9-C)?OaMowD;!j$eSGK? zO4Kl=Gic-|uFp2*NYyve$<~J57oW^Xtv@P=@yjB(t`38tsyhtDiyMKPJYDLlj6((H zEP0O_aOc~;OoDrC*A*J1+XI1WmXe2ME@xgu zFh{vGYn(PDmAU0FK8Y9Pd3|YLYVb#Lil>~;*GS)|4Slm%06r{M$16R^>>&p!-QA&x z7^I-H>h`o8|G&|;I*koA-@UMnt*iPBH*W2^UJrNeXf30RTw8KB9~&twKuwK_GETEf z5>P~NBAz#L&+n3m&qO5Txy3j0!CMR7L7^DgTQTP?8IZBxu}6Gl{*uaI3Y^9h!oTK} zQYWNSt#|J>jvcd7R-7sa2iBxQ?!fBx&d9C}b_Px0WhM#BHXaKAf9Z7@pW9YzXhzA< zQz3*s7lbpls)|58+!ztzr} zIJ`%#6-2x<$JR)bWI|L7DV)@-y9rZpl@jOBS{eylNIV~J4dr%8mHzl+c>vS?Y6H*z z_SZrL59Mkjs{XBOBks-@dhV`Ec7zo4ov0)4qhxwMWJf>v3=B3u*^v1lM(h`zHuahn zZs$reJ#<_)6gla^TPZH#!_}+2Rn0ZpC4&8ziCO(Hd2d0RAGlY1(95%V#BQRK5C}@O zaaqUQ%(zH3zSOqe)Rb(ht?8XlCjI|dfHt)t-!u2S2om>zHvDD0rMaJ}!if!sO~jC- z@n-@445Jqmr^*%%wAA90AeLY0S9U(;S27I$z)@Tw=|95e^+*NaU_Sp$$Fn=+7woRkr36b&u-qwvq92EHnG9rglzM3MiHy6OY8;#VP zQU-u7ZIfF!CtT_bpcJ4$_OG1l(rC2+RE;{>B=Y5cUif|BD?6%*Ya?S}H)(sH0Lx<# zIto``nd2!-al?cgEtBMrh6i*VYe~Lkk(+8OK0`vGo1RAGA7>+>ceQffNN99NrCZ@T zp*-`v?iQC&=Yqm`gfaxGGtm`!HF{7dXPG!VXJfqG^0Yi}yapIO&QTh?{VZ<*`S|d; z-Z1`C#+iXKeU`bTQIo=07KO{{122ty4Dev&^ z5NzII+jlw9{AW-`K(WvGnEU=ZN|PaZv)5})j0+T&xl)aM-~;h`yT>c~@A?b>^QLYl zs7v(;cZUeQ$3AORlkRJ$*zNtYX>vZgYpl={o@-)tLN8lDD4tTNz3-8RNG_Q|hzgD` z^Khzv@Zvc?%iECvo2OQvRv}(iQ0SEN!w7Fq*RJqlHSz8(OZzWfLwB?k!?xtlCP4%H zyn3v=zU(=%be-kgsy;mF{u@lU9^;$sVH8&ZHvW`ZQn|u8bbXqM1c^fb%Y!+^NtUi@ znm(R`&bl+jQuM4rp7tqdC-YC#E0{IDs372S5-7{pYx*ua%0@1%z9hVM0j@b5c5J~JzbK9zS3XzNK7#fxU?sU z9*vl;sM>41X8w=T_?rTq>zn3IIVP=d58yWVmO|@Q#g-A%e7WzVWC(M~=4_}@i>Y^@ z)B~sUM5lAZaul14E^z5mZhA^n1ES1mv)k3Qg{o|WN46_JWm^G7aw2OsL1e=$Z%&pN z+;YG>haE7aqoME}u%Q4a?hm7?>mzPMIYv4T1|1;3OwgGavAOvi@>TkYjMPIaBH2a0 zDfuaIUW{KTi=PdPw6!)n`-p)5`Tl>1XzwSBhae2UK!NiY@&z4O5NYH0KG4Pb;CX(r z=Y59Z(0FxwRO9&f9Ou|Gt7+TJ-H|lpx9S)`+|^MlI|Qq-2qJVp20Ltx~0QF)cOSWOKLp;rtcR({afNom6=8MlQs<@`&ZU zbWj)2eQ{~^wkgsb+5NWH+;ZEhc~xKS#jI(sJANrj@!kF%yl{N|-rhyXljo6l*>!0| zHu0qfKz{63(?l>fNc?}IP+^Il@sC^D*YVKQoOFwwJ!uWQwQmlJ7*m9JmLGp)zf|EM z<|aFM{f4e(rceS|QX^Z$keR*rV{q_fd40P>yRSVcl5N>*Iw92K5}Ws>jMj#_!^(wZXO{P{&adM;U9wXP5aQ=$hJjeF#`3AU%z>Inh3I!U<13d-`aMjmDZ(>IC!Yw1YR znc1NniYwljExw~PsGcdV>Ojgub$_k-5vD=pD9p3qGZ)*g17GyKCckYE^-x$Kbj+pRMZ5I30 zQnjf-+a&Fd4Tw`O+IDA=8D*3$GQ+igkrHt()`OMVe7OI$Z1rOuhSULXY96I?td`=s z$9^-&#j)i~ndSt!{DYx$Q_Nmav7NS`k~oIqnHM!=eC|_d5%N zv45^TAsP9Pqxi4Fmm90C+v$}r+o2bGBUerplY$=isjb{uYKs$Xz@_0d0@4?Tp$NYUyg{lr*W84_)Yq zHs)eQqEV%nuzza|tEuyiziHE(33mJ!tMdFl;8a}i5j*FgN0q`l9+t#pACx}F*?{@6_ru))RQZR5XW0O{N?7dmTmlJ>3aYH&<8F#M8<$l;Wdtjzg=L=L1bpZN0 z21;y#UB%-*i5b~dZ^6MTDg0tU82qM}m%kPKZ~c@GniN>LPlfUY)lDLXTu>)8_*C$* z{I$uJqe#eXZM@pxX` z>bW$yc3WxCj~g4xTdfHx6A4QUAlBfs#)c3uBHJD?iHY81|Fxq z2S{O-X}OBZ8K0;hs&JV#j9%+J%1WXUHLJ^vC&2;eDOtqnYCM6ucpV3vDvjPH%D$|y zbfi-NZe!Tk^>AsJesd^fX74DzFKO~RSz`xmWMg+eyBn87en)=F;V^GVRha@h%ekB)z)XNX9B;xU1Vv4(bW7x7DrBH2Wl;h>H0( zfs8n@Dpx2%O0Y=#KUsv{JeHyRv;4&;pri7@!#(<33D@D#iHYfv%8rUOJWyDVE;7d| zSM=$1g>*ULRcvhFf!F8aU6>|@^ou;UOkr5`kx6UQlbYfDP%N_ zrIHr@X##FVx2alnk$*t%rczAcAoZxj9c|x^(zAeXEp5z*l%Ad1;~H?@k5*ULQb#S=x2=|yb_Oz04y!SxHnL#1JB z(gMSjBBk!YAYN!p*1qD~u`GlmhSuU29O?F7aM5nI9ffb6Ov|pm4tXZuU#EEEj3F03 z5*q)YX;>S6-wmSi0#{BOot4#694!NXhe4`06Ilf9ZgaXNAsf_c-`RT4javb>o?0B7 zc@k-oUo=)tC;Qow7!CO3wDbKLqU^&0vwMXX zH#!m+HrzR6n<}ZT@g3r37*L?HXWZS;=J$Jz@rveJvbzdLVa!E~o5=3NK$>yW9d{wbu_pH*d2tZKXN<_bjk>&tSd zl*dbADe&%L?D`yrzGciWR24ny8?I}8sT4nesK>P5445M9^!zlIngAXMeT#g=c?N%H z_?Zp@kC(H)g;a(%*c9tzlB{ArHJW z#(F6FI>h{7aq}(9Ts8k}?GneBdq#7w0=`Z}{Eo$o{Cq}VlpQ6C@<=*|=b(WaconZ! znNefVuU-A#2rdXtP)A^$GNQqbg8yYA$7jtjYi1lEDllddS%LNOnRfaMsu|j1wyg4x zb&kMV$X)FTVHq{!6`}Gw@L-%ZFTOq)MFT zZ;f+QVLz-QAIna$cxFcSZp`@uKj1$4*=fos3i1vfC*{91ZvseC&a`CzdD&`MWV4n9 zf^8SPfZHpF2Bz;#RoYXEoe$m`QRw)4qr8JBBOXX zTW#Ghk|iSbbUsV`P5ZmKd1CIfxb12~1SD{RY^ql#TEn#!GSh8W#~LDFHea`dA?E1c zE_e7>p?zbTAr87S?q@MBy|J#2|L*|cUrnt#c;|5ZpbC;#of7iR{N6b=63_PZD>Qsp z%Ww21(1p~qRdLp+`EH~UBL8#rze$pB&z!H%)8omR9vTY&XI?(rEwQ)wrj}R%u=BZ{AwD-B2|b;e+FQG8RS!fhVJ2Xa72T%w3b6wBLI&k<6|*H>5=}J zo7fr1vW_LKGP<8iAg$O@n3pcb-f6S(p$<*FNAJYU4E`8N2N@^+LhOjDjr=VerBOVN z5vB486dNL?+IGQ(p>aT`y-tNG`zENk5S|LC3$R1_C@WR!HQu~ZWu{GuBaTh`JIc*V zo^4&4gAd?)LS7EVXQdh6%pg{;H1j0?b1-&A{Z87HUw!M0U)7a{pn)yo`dvBKa9?Pg z7%I;c-*pu^WGJZ#;c+R8)(*3dh;qif5-tfB+=#7)9s4xO!7%irB!-cQnkxZ$h;S_) zTY0oZKuB*&3+ZzPhH_{;N#&?k{Z80CgvaAnKILu4pa_|9&K21GZ=R_%RN|M=?B9WH;8l9Mv*YUq&0M55`q+qjyR zRbF?oHOlQOt1=##uo^!<&}N?p^j6t)X@JHzHzyrltPpy1 z;pv{e$2-pCdB6hQZwSom{@XYL5XoI|ei~S5<2gF1S>ybOgdyY}-1->e#j9Bfo_u{Mbz z$l6h|*?3lyUe`6L=-un&-Y(wp?t#r6@a{jA%?p%O-Ep2+1}^A5*0cPWl+U`OVMavw zwiB|B_}vRKpWO{|pUPYsZgEYo&2T$R7URJqEt3-Nh~rI)FCuOc-%P5av_bvg5Vamf z(N_4ptco@_T+T^e8B1PjG(=LMj@s0ISsYAo$dZmt>o`f2I-IeEMmaUI2!!ZV|%@qwFm zF{s1Kk8ug9^3sSLDur8quIWod0@N%I+(9lvSk{~YHbQTP*NF6cub!o&r}++ z!Tc{$NR@6C$ocd;pWWfReR=jzje*&{3K8cQ_ewHz=z!H8on*~^Q31ekn-F9_4{Xrn zS?_lW21;EbGLI`YitC#D%p(PNNA^-%5>wKV0BvL ze0`U8igc(KFyzGLysmq!LcK^#w?|>T+@0BO)A-}=NN$WVPK}tVgJbG&kW{WA^Gz3 zlA1I+vG97F`j<(X?$K8aix9P4+MQwpUm>2;wSga-A#_?91<5`h6g!)K59sb>{Ik$K zfO966EuM`x;wC#CiPD>SqCd)}gv6)+OjJF;{V(np0=-995Y=jWiTK~yuP_uIDpDUu zu}QR8r22q|3d?pg43EU}U+dV;?+DN5GoDTsgs>0FbX1jGslKO>^#DnEg(f#>AFu~& zQP%KPn;%8FH4MhGT+|rwfT!!@U7_Tr{^rE6H|Y1Z+n-Zh_7yiLAhLd9`W+4B=PI?P zF&k$-%zn-B(X*GX*8qrd6k(SF`^ncW8=(rRCy0=2@p+3AdkGnW`>Yyd$E)`I39Qsk zm2)g6E_i03Zf9sQNvr0O{&H(@nmz(ej9vB+F%>)cVWSqUO>Fjk0-*<}3S9WvW(5vl z;$jItbKZN^bro@(^x)GtNceR6O!AaX9Op2&1!I?un5pz6wqc=ZB!2NR9ftd};Thxe zIChiK<**m+74^bV-rWS);x6e}crD81KnpPu=YHoxH1?HA{j4?>5zD)GTZ%|TC9oWi zY94o5L))dHQ3y^(T!X`F5dGD~11}Eu4eWW6kfRoB=fEd|VGZiZk`42rTC+sPA#to-=xMxF$^frCnzW(T9Q^$`ViAj65kh;Cq;2}j#%CjAFalDFviC6_y|>U@ zUF93D(Hyb8SEn1b9WZxZwqwCqvn7>D9Ws1G*iOcFZ=B+;#+=fA3qH5YkNL7gv`KY#j>J7TdE$LPvygW71-}L?ahh2h z{}hiA8vDCDES(Tc%l@I-aO_}7Z?Y|eIgfLGRk->+o_RY*{cSb3-vl{aweOA+>5wMR zK&BRV@}m@y~gksOLD-JNUJP#Qv&eYhUY z$ULKQ=EFtoeo(${BXd$Yv7AG%$R-aza!&$gq8MrO{55Q`D$#k6qupv30;DAyz3$@G z9h}rw$<5?-zms@TR@r?!+=@^nJ}9a@q&_0{y-z7Etj4wcY!#kE{+@R!v8~Rskd%RP zWQiF3#v42QEkKN-?lHt$wXaM|UVcM|gLM5C-B*g)@9@

>JidtWaFCW1>x-p2JIl zfeg)S2P*g(ohKhM%?Ulu6B1fAj!ljlqh5DU7< z^47fWoReCmJ44oBqYK^9f;l*NE$D6&wVZChyLViD|IWkIpD0T<$nyC|T&_C4(~V&d z4!jgUJh$}LHi0KNDJ75T@>)V)RqdB(`@uWIc6e}i-cBYq)yLe>Qy$V--ZeQH{-mub zt{NJW)G|9jUQ9<*)S*UtJ`^chtOQ?=a{WN8qa;2|60643M_JZ`^xXz=wqyQ0O7sft z%P;Olt1>Wsx?nEdv|xK10%VW<2Xs8jMA2yq-Osa#d3%Vz*DDcuvj{(>^BWp;Cm?d6 zac{?5Vz>z~t-JktR zUlm$2KHWV{cKcIgKeaO{^^_ney*gpi?S8KhbTZBg0N0NkrnZwqDQ4`BG#-3GrGHwy zpmy!oE3Xjn$7aGa>6=%L_rsHU#X6EIwL396{B;t05t{Y;0`9uHA7F1~CpG1rwgg=9 zre4wpkn&#RnCD)QS~l9zYU8S8+l;c<(M%Y3-H?HM`3@M+{yF_G3&rOq=2hPziKk}g z!{3f~AqR8t6P^ew)V1|^rhMo-EnXR|iVdHz@Zj_NeO8p>G*c9piRV<~>VLJjYfHB$A2StU^!KsW zQNAJz`m>x$J@$bS(M@<|@+q}4-<^~9iBREZ`D1xYJ?7z#osj7rp3OHMZU?QaM8vH# zf*=fS!*o~Q>pjJ99XnGoa**A$?c04C2M4Jj=Tzst@YJU7p6*TJ zKl-K4c#zd*30UiPBIACpHC`k?PDDat`Xd*DV5K(N3~ND_#(LiUE3_0hJjfsCNN?|J zc8=vUUx&zt?sE?2xBH_Q^?!lqw}dmL6A64KGx&mt(q2bv{e1X3EHI?=znXr49S_xh z?i*jeE3^2+F{e2HLUqzzLjxl?x};s+LslNp5&NVA-dR+OriB{Kdxmex`$bD|JsV31ldWTz& zpu+fVZFiC*4lafa=wDFbm1JBVyw#jP?(U@3ryTBv7O z*h55>0}tYg+WQQ;{fFy~|H1>Q!-2zt*?uiBNP6wsIBdl;l|S}lY>tw7_{TiTkby`` z8`rwuX)hjj6)zK5I)H|4xA@HKHOId-l=wlZ>E+jP)obHC{`2a$UCT`0fpacpksi@Z@SGBX4$aF`e& z9HT2N{m?dwR2dLcD@W^koLqmIrPv(Q>~4!pOAFDVbt;upe8=4Hf{qGLAFYGSpe~5! zm+t)8NZ05sW+%9P`al{ZWTsf7u=mee@Pr1M9WfQVpZY}0+b&B%cZ86+&|MSi)3_=y76v{>@$KdEwI zDg?o*=>)CnKT3mn)2nN604%F!wLgo}*=K2c>hdqkJU$@rexA8`P1hCW;a=a07Tx@5 zKR8ntf0Q5#(%(cni5-P7 z`1~7WCkt1IjZAZN1 zYWoMEx|7N0_*<-^;Sx;lhC3@6C;6`wbSLF≤h=w7;j8(g>AJ0jewf1=JpgO`5q& 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

5Lm|;5iOdtJnVax&}0n`k%fE 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 z zjDM&(%;58_EWkEAc5@@IgiA;)NCJ#R%}BfztRPR+Nx4QDddJwx;2}U-X~&k!1=vhH z9F|#ipc_@hHE|vkQZH0D+lL5<>mDBB7+D!ma2uA1I@doGrW_^xQ+z)j zlq;pA2|X6#u1Pd(3D9**PscNRfxQeE$eFBJ%$F0Fa~LZPI>-h5Kj-x0VkxzUI|(~v z4<>p}z}t7gCZCuGlv)CzKGcAQrvhd}uMdAHk~MF1jAx~#Z7=tkZbe7yFR!^+1)klH z>()#@?5%y!{mNK;$_QjmuPItc8Rsbei&VUm&iP$#dBP^l*JRmH!o4MJe82l7$EZcD zWCxjo#`uC3Gr?d>!7i^Cx{G#*XCIix=B8-0xB6b+)qEF`5v~=J2J@lnP)bUgK2nic z%};<(KvX2mXG(5E!DJQj&Z?4T)ogyV6+=ik!{M(h>E%Gzvy#u|_4$w`q-l{`w~};B zCB|$aczr0Y^Pg7Wf^{34fu9~q^Wr0i}EX2z$!&;2KeGA2(7-Fby znZ^LaA;cQ{4Io;!C<0S33Ur>mE26aWK?tdp{zingY_leSCAqVh=2OG&W{PjOk_=)h zk^{Z|fobW7R4R-yS2ZUfhdBFi@#Nl?@c;4j4eWKc!Pbo$+qT`W+s~_@F+H$*-Y_CkHPx_O3P_Of?HHPvE}>q z2w^E>q`}d26Q9~8v`*T5em~`bBSoDbf;^toLThGVW}8)Ef0}~C8K5lTIWc@6XbZj| zW1&MVFk+FJ6{L7N7(dPHBAQZH1v{qp`%yhC4=K|OQJr2DEz3(NWByssI|GaEm_sFB z?I~JQ&c~6D`uL@}Mvs2QQXHB>8F_KR(#1rrepo8jCuW`h z&v9Kt$U;wR%O7+0#?SL2XV@Sc3+oYRUe~Wg1x+C-p3xNnL3=3xx{gw}y9hvei zL=FIL{o$9L^HaW2mW9Rir2571ci4?Nf z>HE15Tja%C)86zBAaz^;{DAS5HxIjHa8Z2&vsYT38HJ-{EP_Q~0L`0fS8U-qlU#eZ zLPc(~=VuxLbXf$Ef(TO4_3#JV^T{Oo@Ech0S+4h)Ooi`Q5y&r&d16Y2=}MNYuO-YO zVtIRA+)rq6mxmt9>q$V@%%d_UrY5hj7EX@oYF2B|CES*M?QdP#Ls^S(mcQ2g9Pafa z14dS6+9~4w-UbF6pIe7u_g zu5CVDQ^@Sp{98kkzOTWN=*SV7gepHtHF7Qsa=o1#VM&F)8hQI@>jUAk z^Frg?|E~}$tIO)^KW%QDR2~)EIss z`L*o54FeYv;>ku$`D+S7n+a)j_*wZ@8t7e*k#^(e}_TW78IJZ?$ zSP^t;nmDh^`{fF~iu#THMd9oK#6xgD1TVrGpSo7AB_5mp8M|*P&w>u8Zhvrt$cKE8 zYfmnf$$XR3EQglMR0&~{RM`8pxN7fXXc=YuEHBI8os?5tjAjQ)@ca~pL6PeHdCl~d zd_0}z4`N$kLl5lrrB??M{9~0n_BCD*z(LC-cz6(84oeD46m|gD%4st1E=Jw;F>cNE zZT-rxq_rkZx%{YoicL{*OV{;uU+@8RkC3egp+P3zbDcW*a?ZN0Xwuu=F}k*$h9Lx!8Mi7mFO^(5uEjv1&s&J)U>H?W1Sk#2#M z%7^>iGo7HdKq>N=G8rwlVf8mmT>A*E7twz^)aV>~c<6a^D6K{d+K^@~2RCrjBaLh@ zV>#C(! z2-Lwhn_P+DRkFoFPHpPrBZ>jXsTmT(hI)Ipg+o%-9iS{K4F-vQu4R4pyyK=L(W%N1 zv$>~ths9&+Qiy*XjNWP0`4H}m`|RGHT`03b*L7}#IlPR1g&0Uo^KI2L+~UXo;u&Kz z-vZ;UiNc>kr&g9{_NzZSnvY%QAi1r{*|Z%_*lguXO2=ah!^)r9Ayr)+T=9D8F^1!! z%FZUt2{&HO6M}AsN_HWPtjtCKjbTtfTr@hVHGyfyYsm1>TXGVgiO>TT6l zCK8V^ErHlFaSn{lmQsE!Y5)Yu*uP_)MH?w}CcFdki=#ecIk&i;A^_!6HiRGr7Druq z%>D6Fr%9l}M-@7$d2CLtKH?qxR|GrCPAppv=4>(UI44;(y6>D7x-vB=v$m9lgMU1y zjM5!vGe&g4`D{?|wN&$|aYDj|6u&5A)cU-TO!PQ%~dv@2mZO_2bb_W|!A&y!#?C$H^qaF9WC-O|ee~E(4hJ3pA zfXm&qb#!t{*8sXu6{r|~(y9hZ4xkz32@?!KigfpoQ~zE(EwoxC9i7C01Y^%Y8R{hV z;(wUdq`kQxo80k#Z(6GRs6hSLvbf6Cut%k)9U3f)R#?<#Kov5u=z@leY(DFie2gzC{07jUawmQr_QEpGi)*9t&i%u&nSHuy-K5_!iE zUh>$Im90NDIHM^{y-5L^m9OhC?AC<2?e@~}BjB47nFisI#)_yHXrW5y{cLX^RZHEc z4Iqo|A}z8JSc1F{3vR`V#(i4|^|Sxff-?_~#stQzQvBRYA`OCFR1a-i=aWOGYiSTx z#&DK%NUw+U!Y|>$hNp9cmUw(BnO12Dsm|JA#2Z(VkHYu^p1@actiVkMdg${gU3Dal z%d885;9X^MhxDaK$1MFoC18O*j0O{)UH78lYEo>dlrudGF|;aL-6H(j9PW%>>E5(p zs8pl|$8k}6%wwTEd!jDK7p!UH@r(aW%9hdFBRPfis-GeotSU9K<5r5$XzW{8&z${V zs7e1tSsa7T*xy>WNyj@oHQmp#c8b@NuXK8u{<0l}kzqrsUmnb(e1{~Y&3!0?SPI#> z#T_E4ivMU8YFR-qunn?svdR~%6k_J2Nxr7bi`AX@_6TIRGTY*FRqS@PzhVBJto|gR zmk8zE8jv3SKv!M==JwIemK~epX8n8`487R24M!D7fOlxcS2nEz~pp+a9iCJ#s~_bA^|v=9N5IxBv)dEe zzMSa`bs^0^;@VetgzfKpNsnBytT~a7&QLl@kp5-&Yy?xYi6@Uw8)ZkAxb*UC zG7b~g5{(@i%pwY%DDMmE7U^_8f;}M(EgJAur|FtOJcqCR4<4j&C)J6+)grTOVio0- zZR({|3WWZo^>#{RAXFD^Qm^kN=Bv=wI_}YJzAj=ro|SA(cyGNqP4e1kQ-f9}6Ve^@ ze*o4U$Dp4V4Ljoqk$noUP61Itm6u~G;ji%xg3fbU4 zNnmJ@5riGALmjkelyI{VrRFW`xt;!USF*8in`1p!Yus5o#Fa3?g@ixYNP4_w81#qv zeVTJt7_t^9je~Dft=E}x>AG)@9Y0H>jrFNeej8`F`s4Ncd&>`)Km#)Db&5ub`F$wI zx;dwKzE$T#G8?_f5eEAvd%@upqGfq{D^(#`X1%`epO<*~ohm6!4ZeoPNu=b4Cgrv& zJXX3^%Wy7h#rZ{vV;WJb6y@^aqeo`hTUuSRLUu87^=pe%Zj{=Fxf!{xrBTYODys2o zOOUZwW?i%3nWHZ3e3>X&zmmn9WE|kZ0eR95hcA1s-V+Hev z2ATR{D0@lQS_vw+*@r8@w0U*tAk2O`Y1?_?#u;F_JzNg_Rzq6fa+PRvzS#i( zC>=u%Aq4)^Ah_#)+?dapU~5FQ<`64C*ed4FUe#(e{i*q}W^uzs?1ir>bg^D#V&@3F zUC!RKU3C*08j72X)U_tzdwFY-)k!qBRVwWGNuT;7n@(LfbNqXDGYPDlCNCZ-?4O5e zoSZfb=!6F>6c&d?6(-*eXI!0*LNOOvD7(XxBKF2<`& zDH7mgwN%G~3sgr$C&bkNyb;bN+W=9D0DE5MxKgW6A?Dx3hm}IuX#fJ(RPI5pf{#w7mm6 z8mZs{WO}B#&=J_kx!BQIn7^c}U9=AKr#O9M{*_ZNpQ`w4;`~#R+Irn-$qgxP=?e{# zdh;!ImB|36h5K+>U_)x{d(y>^V4ZBh7&KoF@K_;<|LbBM08OzDDD92aTqkqgaxO_G z`2hg3C|!oNEMxBU>8EO;brZG!PYW`3nKdmr% zCs|#l(uF9p8$KDT?Gn$QY;dylMO8-D?urp74lyW4nHb{lk^d6Z`9iuTawhAh+x)j^ z&T~>^`m8SwXh(B-#=`@$pE%r*rSTs23#Unn-d@P+$y~PQrs^0vdb$+USL;g#?4{k6 z@>OQ-<1k^9FIH>Mwg@VyG!k=5WRCZxGqbXw_ASy8SO;RWdSrf0l!02T#NSD(_QCRh z!Tt7N7wMg!UP%s>uYdNN5b(4{dDR8<{Dxe;{YVwHRC6_T z%aSdnn*)l6yTwQ}rt(y|#-FafuQVhqQ025c(<5I9hyd~6d?}ecR@5sxU)!0yA+Xa3 z3d%FsZu!VZioSM;hHdeR&vRU8KA;xbwOGwL1C4{B}j3T zWdT)yI#b0@MW%R*5qRjzct$pX`xJ4EtkP0V+s9E3T9G=XM=hsEPdAZoE(q!1-7$|8 zO)I_M-ZJ`K#wOB6K1pb4REe%tO!71SplL`2c*kF9r*fP0qCsEAd>+}Z4x9YWEI=-zQ4UJ4s8uhLU--G_X_ayg9b1RtXQ1|p|)0uh~SAQxXpc97nRK=2gr;t zvSv-_KsdLiI<9$!s#7smk(EckXeE+1CDOu_Pfig(nSm7}D&Q)SNYN9N3d(w7}V?R`7|SmJWF=Rbi3`|9BWZJY&*^ag>(Ps1&DgO+J#<=L!+iuCN+MCXWD5`5hTq2 z!zWDB5&Y+nHH+2>5Xh1*Pl0)?v9wCzVtOE}Lm}059B#nuxJIwFSORc1*3B?|fg9j( z^KEHw<9P7S#&(gZ)(;(TLp?|kFCL@oQ_%f7Q2#!T3NVG{N;&|~8lT5lPG^)Nxy7RK z-8u-#rh6y`1P;r?@I2bu+hCK@j+H~TEu3ztho093Z<1tw-S`lzQ;hdz?)P;PzEh(v z5gJ2B0?o{cZ!J4yd7b#hpKJ8m5M3Kh`h?!Obi~?E zRE#}yYUy5062pK)bp#qm8$HFNJFn#pkL0HH27HyH`jZDf26u5hNkmkVs0fFHSLOi9 zRds&vP6keUNq-j%{o~f`yno)@tTbqpE1NxuZS7q@LbqJ=Fz-d?crlJG8H#)U(0Vv| zxW2yTCcM+c35`mId15R72X`yE^Hwe0sPccS37TopWQ~y0DG}ja$_2+rM2QW>&Tt3$ z_MEwjb=XPy65z*u4-_TctyqxtT+;PR-+GV9F=@dJMpz9P_G|Wp4@0uc*T|r12;>eC zwxS{_rVwKfDRQGQL<{89erC?2xs`HGA#Qp9)UbZOJcRJMi+^X|3;vB$b9(CBat=DA zz^-;OY9WEO7Fylur(vfj6fV62jM&5FKE<1v%#)H;6&v%hni{@DPI^;SmaG|$($I`o&#nLzQMXFK$*#e?t+;I( zw?^#nuMtmQu%6$mdMOfGF4>&mxJ+430HJ0Kl`dIj{HIQtQC|>~1nrJwvypz4psl<(>J?{j3V`dhcI9Y6RpwLVvFL|Xbq8AW=Y}ehT?q#+ zQ0(#qcWvXJdY&=)zhn#}R2&y&c8`}SVl@8lb)@32KGK-53GTF=Daray%f-zF(!gnV z`usW)sJ_7dsEPaVuIl`!}B}#TV!+$>aG&x?Sd`6pib9#3Ty*#Nm>w2E9nY4@?z@phgntvx zSJP`_V6q)U%t%arL~9I*tfWCsqjWB6oujd`X~cZ|ETRlUC_7g1UGp1PQNQ5DBpI{y zwz8mTkZ6|SXjkKx%&!iN6-peOFRJ7};#g_d}yIHT$io!B4$>hr34rx$)niDo?eoP)~D z>z?K5eNXab_46H*=BCXZxPJIR z^NR$@;lmiC%JEv?JD(N~<{LF!cbW_H!&K0LLuY;Zw@CWu%0_k=c|ZM@*+??{A6F zUj+BR*AbI}G}5X>%Z|Yb3t=t0z2#cpSj0)$1#Uc#>IA6cW@UT(6=Yv^js(PH#SZ1s z0wY-YTc0TW-H$Y4<>v!__Hf8HpUW??I?d=rlXR00vE5>{;r3*4-!exuMgORS6`L^V zWonYQrqjE>}e5F1eE4&ssQP6Is&%0TZ zl}5`K${VFg-U#o#+}mbhPB!|d|F$*oKn<}u%$MI=DkilXlhn))D3hL3P~?!_;g823 z2}_INul=e{T{?tJVB>0g6;7YS1~E^M@=I*zP8bEhiu!yBo&I1_%Prvbk95tZFhQNt zp4)VLAe_z=K) zw13QSNbh;5Cb0ON-y;}0+atL2L^{3Zgw&3GA+KY58Y4m=ipeX;_ArJUo3!!(k^Z6| zhx3B?V6RDN@*`mm2O%jQjLCcNPWx`$88-h zT%hKn)@t8`?6hx_B6TcX5?H5V6gB(EVq=t`k3V;@cTxK}eX6`BE;FL}ETf_xi=Wsk zGouJK%qg45D@zDSETKvEY*eJOToekR$7e;CpP zPo@k{&j{7?{9t;^R!a*~J=7?*xkKH*>#oYJ*lwJf3HL6zmra`@LD1s)hF_kaR7ilI zlb=NK`6}c_SbdGtsJ`||Wi0jnI=OdG5-F-tfwS9s#&j6>d35%&EVIU&3N3_338N^aLO(jTBYks$7# zyN*xyvY>6ROCLT~uz>vl$$5^`VURr`fg=!9``MZILLa!@XjuN{Y2! zTUNA+XHRqF>0YL>(8A0eU`Wyu_+K^i8uDE_zXWF&~ zzmzbwk&H3B;Sc|P8pBN=13HNceSvk<-viRUm*mtR2W~V~A~RAu4(ObUec7!|Qa9X{ z|0*e{A?2v{WXk#5_Bk9TbWc^)ylX2{BzlAaIjEFDa1d|rAIbcg<3HuwzFsivUAR4Xc1Lt2wD z&u~ewFe6)~aFhV297ii;bnKD{mc_@EKe7J&PLsPPy}Tr&-d4;ck*JB*k_$Z%Y%sfM z=1V>zZ^dUK)c4(EO}t6@7KP_E`O$VItS}@TYkH>9y=LS>&g!aGQ+isFws6!#+93z! zm*8oDO4n+$6KX}N2}9An-SmFU3jZ9trqUorR_dY#e`!HSLwB)ThU~3&c~d(t?KTqC ziVPZF43-EAN+?*lCL%f}`OyhRS~a`H=KNstqJk3yN!*tuj5k_4Vs9R5>kQqhMuo%= z=ojk;QBvcJQ6qW>l5;_yTWZ-rce?KSk*f{YWp>0c{AoD>+)Kw*l<%ZRnRS6p?FS{# zy+{5rpO1XiyX(%HF7T*wqy07S>vsb}JM_eUd>Nge+8}CyGD7!%!if1-V)Y@rUMt8r zkh({JAM4rFG_{HgC!@-36G`U%J?lqOiBDiS*=S!M=uMg*GJ?)41j)%SNzL6O*kS+H zSliq-K)kG3HXNQ5vcUX&_Z6C&>N;OZj0{1-jmPWT&_%jVBEB%HSUslc+^E4M&Qt#-qLFu%sk-vAaZTeZM1%B6qJfb4@q@(D zC=I~iEqkhQM`^h~`9Cv%sQR#xQSPkb(77 zEf->D?O1onfIgArbIv|s#;_q*9<8SN&+$%7#XlM3F?>+vVr@@Bv zX}n((uFN1|tJM{_^**6_Gn!(s@qo4%iQaj)?03286>QCxJtxL<)%;ga@^8^aQ1N=b zG%X`dCTl1Jb;*mryRFeuGnF;GDjO}5KE10z{*vGJ)%Uh1f!lEMN#UO}|F2=e~xeuCdr>2TCK z%%7Z+18JZaQxqO{8UpVNGoulBYf=@kTY>N(F3Fpt+Co!bQbYT2FRdENqaMN~^tgvo zzw82XW0o?jAWlk_z&)AFBz6hwYrapFAUyt``YcpT@WB0EiV9V zz&Ott?qv91-{})M@+H@5TO7Vo4Wx}r=mG-Q`}WxLy1K?WmTdQtg|2x&J`z6TGwi&u z#Ke-SY=9aGL2E?YYs8<5J{MD)1B>3BqxZ|Kf5##~KqwAs=i8su5|sav?GL#{JpOi* z&x&12m}7igQf_$}ho3BT(@nPhw@`5_jo!%rdKUW}oe376lZ9;}i{4h6?RIC4TfVMG z=l18;u{QqQ;xk6Uw?0Dt<}>aFbN-T3<+mf1JnJr5SDNF(D046t-i>YaCZV2!H;FYY zns+nK&3m~?&lUAx-y$YMn0OpGURkB;-BURv@3TBq%vlSMhCnrX!hu!IK;*9h9 z2o6S%0tuHDPl&Agm}AOCaLTSmfRyQbVz5@(e2tnjNMK-=7Rmp+3422Tz3U40@ZF-hTGqQqUsvw+M#^kH?aggJ6M}JVG zZf%~-0i%NH6XwKQF~AL)y?=w)J3;fU37jx>6A4laG3Yqp%R z`H%N7J}GAqJaE#2w3bWvA`-3jiYAlyLy*q>g;g8y=Y6{-mRMDdL4_s-wr`HhrH>}R z))aOo8Y+r46wrpu!m3Ug`yN`wHMs>2JKOSw0@MxR1~z>CN)Ex*V~e-D4}kW&nz(AAM16$0HE=W8OcL+>64e_(D;gg0qgio@_QO_9S^o9C6l2`7Z)p(D6|jZ_AN@#BX}Dl z=B54`pggGMrZ^;=o=eeYRJg~aHmmxr( z1WELd`eDws;pS`CFXu=ecV2?MSX*l9T4tzm8XrDpEoGa0674q9#+xA$0QPEaX29E8 z6{4hM$p8uDB2Qgz2fmigaREJW=&Bs)6RA3tD{1Iv`Yjc%N{4OptkBkQZfVq-f9ATC zyOubY!?tEF{w7+ScpnyhQ^_P1R9L#xNhtX;8suHdVFCl8q3P%?-QlqY6BEW`nLUtS6%siH%rn748tm|q=ugqa+!>7;poBB9d zN3Oads*)R7{6obIl`aAxFKxGFkvLFM-}CE*W7iLtM!7gh-5r*AfDNTt?&1* zjV0sEC`B7W4Oif+C5J$6N@>J|gojv5lGK99JB60uyG(ff0OkYd+tIXq`#~s~jIrFh zQXp3BMp* z+fPQNRbSX-BXID~hoWTDxa@b0(;!hNPXz_`PEKCJNMpVvYg0PheT!K~mnji7)OdcK zOj94xWj+VGoHlFwnnE1M1`z~->Gw!EwVmRBA_1xoJhTcbA18So>s@;^3+A(XO$aY^ zsxiyyW8?%wPb+LqghWTG?f{ea)&4JHM-|(FnnGb8@nHF1WLy$-a7VIMGKbmODDHKn zOe0Uv-7|j0R)(bL6GOEIsjWWJX+2T9BpkWD7i#FJs9U2yrpGzajhd7j6>$U~hE&CS z;@%KOOvOBJYFOCNX=d=tioZ28u!ydM!Eij-J$hEu*Xf7R+U2-U==3wm=Fhiv(C*x7 zN#3(M(65*o&Syh+Y#v0IAdCop>F7~6o1W%RYEXVP;g&RL@Jr4uFGY9h#bVtQEwZe-$zZ)AwE0PgHh6aOE<_2cBAuQqRWrou;_>(!#$vD5yZamnGNU^cTG0lU{Om9YNsFL~SQt@7T(8H(J|^z0X-HaaCN4 z1BCBsX`X%ob^~@JuN}hG8=s-wWUQ-A$=_9xFO!Ynnt&))4o2V^1@7pGr zu}S#eijH(b;(TP%Px1{Ki>msZq(jgT0{!7qWz>H)yT{jEx&7hDNf)yR#jbw%$wcXa zQENS*bQHobulh(tSk&-~;Y9^v4)(l>zmMA7R^{)vl|6P84cX*-=ZA%(o42l~yY<%- z_q#zZgCUTGL4S0TJ%Xpvg3aCM^xfxz{K|L?+1})~Uu3pF=Nu%J<@TKo=R_g?^P6bp z{_8&jjsMX=MLiOmpX+bOq z+!h;7n@?lRN9T3P?j4qdxEY6Y?pNE(;#tW`{Vn0T69pOuDesw4rm#QFGjA85pRSKP z697(aDyDnoRYntRQ zo*ZOz6+s_kq2|rzT-;juUE`r<9L|UM%FFoW_Wd%TM_w8XP>U?#@no0LJ}{S*X_67Z ze4pHJ&mH~|;~5~GHEQcZPj=!>9R96HCf)Nr_s-v>HIS1Nk99D0eS-hZG@&pcJfT;?m%Optcyoku9DbFzT_uplZX*8tAE%ehOuYYk#(e1i5w~;~5!V%y(s_S^fRNa>XeqtE-<|ySe3;V} zX76*(wS3bJV&?fGSq(<^b{x&gl=h&O$x6OIAf4f__nGYU;Pja`^i=gx^X6dEW9A!2 zknq1#c%VRH$e7W|Cc6n{q*m10e1hT0`zJDqRhokyCWW72_a1^si`xE*X4aJV=F7Ly zqCk$Yp1n7apd;p8%BiET0mH=6L}91DkJG#WB)nzhSZ_E$+43=7hN=PXFaoT zPGx~>3l}~y%gA3NU#<@Qej``vmAqy4l31qUO`0r^&)U(SFTYN?D;R?@$=?ofz>BLi zLuJP1q_V0zzEmPG<<+C{Ys{;m3z^_yuU5E5T5e^^^j!w|zGd`B;@`e?(~9@Djib6p z#l+fR7v0^T8QqEROv5M6>G_&vMGf86U>*1{I<2?CKNpe7ycRZ{#vx-Jvm+g8??BY- zIWd@BwR_u@^eHu}=Ws@oN|Dg_nRDgc6YC(;L$w^)tgOTOjC1O$MyQQZsk5l67qv&k z7}FHze1wlOfY#So?*qLGz~DntRD~9&Fvi!^G{n&Np&==(vV(Ah+?U{gSe6-Nrduda zxvovoACUY!XY|=u+!}XX(wA$|qkvi6gE6t>C_DFh_V&3@^bfKB81P=X8z!7D8L|uH z!TmokfDg!dlIeM#Fv?m~stIEFJTj@~(-|L$1V)}+D(jpLwQK7O`u)D4B*`FD8Eh!; z*6#*Ga{#J%R@Bw-$G0IW5JqtiK9rL2)8}vgH%)z&+Ao9xrkk zXtk@Fie}|+zoKZ`?8qvWfQP{m^vA>ob(_5bPAS+;2;DTWRJf3AZB4XTDokk7biqY* zy021UY%g>)4}nr*UiaYj=C=fS&>V>}0Noj;3kvo?t_DAu{4uHqTYQ9Lq)ZF?TnNbx z8zHukcKN@d_jabsX3BAH!g+-g74MoB10fDqx|bi2Ix=W$&+!5- z$zl%1e%hD_zgmRl$HeTVt+>)&P9(fM18fW)XOq9L{Y*b|iKrI_n#e82nd1ZL_UK^5 zMi0nlqC?h?L5<@?;n4uSJsV1q-9^pOEyxPISQ}@FA0ZL#==9oN0ln5aNHhm#SB|@c z1Ds;OBL50Kicyj93j{N*>UTpXX~(}#kK3xa&Horr*dZ!`K5&Xh#Mihk=F%Tx%z4EW ze4J@=nBX{4Wx{SVFi3BpZQS}q?7ZD^zwPLH^F^|4i8J?I)yxeW!i^jtBANS-2SQ0$ z`1)kGB374FA7mT~1~HZ*L@UC|m+-x2xH}RvI7D=a_%wdVorOoA@qz$mV&i`S~n=$GD(wq-xlz~x)$CGg+U5Bcvr`?`h8UBoz* zw=4f#^7%+2!dqoVOkNw#C%Scs#wfo@m-{9JvaeNb6dvQ_Q*yYwq-sJC;4^N{Qhxb)MMq;aY2)#cI_o%ru%52HZXjMDjVlvM5*H1A2LFI)aN&C_=@+N}h}hs?fc@GOaQ6-sC6gfX_TZ7#OWR-#nuy_@duQVqN7EPmbp5BUogEIcbiME-FhGehUa$oG)HGzv0&VJ)me{| zZ?!mzJ~>E)dP5%{*$798X%e^%dM*>(m;Do-)(j|VlzqsPzjoHj9BQE$iG}C(<_ol< zxv$!j+7B3o21@Kbu|Hpgw)#U6>3PLdSihR66e|$z22}fHt_j|AUcQILId~kAgA}o6 zlPV&jD0C+J!~x!Y0T6br>HdY+x2%>_2_5SuNUuhRLGK&9lfY+Mpb`;)Nzd2CmCo3B zzAoRfWAS>w&Mk;p9lLuHL@+P`lvJp zG*Cb^^ys=WRb!o?d$~G@+(<~JpxUbv@W9*}tv=O}y9dEkDU{1MUC2L*+_4A-6izzT zZ3~|5T4M?WEXA+nN+H{qeo1!yRaB{+y1a;UyBfXCHCk7D+X^mfy@+3`BDfYwp$aEk zE6}#2VFVrf*ZN}`=#lc0fJGDFVeZyJ$j+9ZV(GdPzU&I_towrF!iTX$3&V$8>oc1! zvD#1J%y27oAi`!IS6dPCDKf-BCkLav6rh(V7 zp?rg=$XMKpNOBSE~v8;Eyb`i`|0oD*vsD| zzZmz9v#mc~4?re($OI}mg0=s&uQkDE&daU~X6{aV_)3Y1f2lP;Xh%-v$`cI)bprAh zEoFv2owWBv$>l6>Ei5wP;wHt<^1>Sfo{mJZ$0T8eUcJzVBn?>u^NJ7PDt` z8t_jdfW}*H&BWU8u;cchrPKu z4xxuhsfeM3R`^XyOtzg^%Ot5_v(k*{=<@!BA3=Jq5S6tOl#5KF|Kp*}&~qovixpqc4eZEgd#8Y5(_Xo30AH1a16 z)A60tvz+2}=JA~`v$v9y&~C4^FPt1sAH!{550RuI3M$QfgO#O9)kt8#@g}e;HGt*4 zi-W0S+2XOd0CbsTN%&vV3TcIiQ$7Yb7o2Vr3$=u(CPYJ85&6G*KD5!=H=`pG3T>Qs zN=NyorFJaQ8x=tI+RST^RC3ZYtrTLxzo+MSDr;i;STI&-Y<@1x zLVtI|UREVHCl2`pr$Cw*MU4>D`A&`2k7#Aj;(^gCkN*N`l&`Y~o#E~Z{sC#!-94J5 zScWMR`dcaY8~-}&v{kgx+2lKDTWCDR=9`$Y&pHc_l~j9D_7H9$sQtJ)Px9Fo>IenR zF|>A;bL#k9W@i!LWKlKRD%&=zHKlWihJp;2W60-+Hpmx6i_x$J;h36$?OiVZxK2vn z!XAbb@(Z?ei{Sk?NLglQX$*_~MtLS{gWU)z<~D`Z_F)n?AdUP0hsuU6x_r7>Ace7s zm%vzE`*-7+-%t>V)>;{b358jJx%`G|iXryzZECytUL6g2ORJ)*PErG1S%xVK!4$vp zGH9av-E-H9aN;E=PN}CNhiF{U_Umib-Ie@3`Xc`l65V^D0AiW3or_}-LqPr za^H1S5YwA>j8a$~>*M9iDDTlOoJ`2-4CDP<*tbmO8!~CPQ6Em>>}cK;1MLb(A#g@J zbMn_-DUJ)92{chV0+hwPAe?1pRad8^&~#LP;uk3b?>vc=>CV8`gX_oW`Y{ol1mRBR zSr1js>|`v$i*BRQ_~j9;tmlu?Ge1gbOB*J-+q;3D_~f24fRnq6)!g~{i}a<=5i1kT zESHCvFQL$MbrGx=n zGXkW1*AE5}CZ`UJ}7DWMIkx6hy7>v>1RZ54aPZzSFluJ_h{FW`5Ad4J>zgIY&Ij(!80 z9mlVEDonS|%pIZrPqjAT`71>d)(GzQ0^@z&3e(YZp57DIf&yHHjY8k8| zI4nLNbWEOet_WF8wSC#9;*s(M)}}e~>}#77x0YQ1M5Bb$S!%wz!|4j-!uPN&?9$W) z1{PaURi&=a_`a=9(Mnf!fP`%pW4_es9!kl z5Qbpi2w^G6dI3=3SAYk-gSttb!7;-R1i{;qu71gn`;=zTNZiR;2BH6dLP#>PUr4pj zGvT`D7_pPfQUUwf+&`K%J8*cgQ9cwJOpv7*q*;~@fpo1tK4cc2y&6JDupoL3v?LjL zi&+{BT&Bn>3Dwk$5>P)#nK(?El=Oqx{obKBhX8!dj%$c56nl#i}>wb2=!57 zXD&SGH=y1jgZ$~srX5k;(=cok5L|tWVkSN}o%+$58K5G19g3;($c2&9-gZw)@?^Kfmwa@WeUip|cQSc9g_?rrBv9yM6r-cK)e^mCZp2RTsxT zDLkQ2^sL^A!RG9iYWefMinWLAqwT#2{Zl|wuuStQyV>NtTC3S$5`Jd0fkV{yX|)!^ z`*0}&N7|B(5zF9}@gA`D=JIA#_ph%M-S{)wM4*1R*y`41+L8*r&kjp;d$i%Wmpm7{ ziUAI9X2h;ijFld6+HegUEvo&Pb?Se5VD{E|tQ#BS?L35g;(1nh86XC*WgCR~+e`jX z`jpTA5ORZ$=Yy+<+*kAWQ!2;(rHS?L|BwKPQrrS%E)q-lI$PO!1z}@ca^q3AKkk&m z!P6LGrv8!Dp|x7F_`fDK05WR09ux|Fw}{9mMHz zd-HL~S!W&d+qX;zC>K`B;7SW;aL?bPN-w4NbDi-0q-w1<&pn33XdwYYLihyeFr8C? z_CF_E2S^sGzu&*;@^cHucByD{^oCY-q~;?p7zK3_q)*dQP+bX+-K@}Z*M3W?_&d)` zUxZ0~B0#WYk5yNn5>7&l)jT9cb^ZIxM17jauOAkrQDE7gbc0;S*w)nco%}}zSvgG% zsnY+HU8bFuimU=L?E5-asUxHWzJfLav;L;kb4$z0Cw5L7P^ms=>P3v?Wd;KLkpxTA z8Qq!B7_Zfqr5VI_bxmN0`G0BfWM<1!UfcN7o=_{VvEm#i5~nc&m(nQRmDWSoV4qwmi;r|QEqy87cFzkKy|FM!Vg%W8Wu)y0O;PFO|1MUNAi>| zFMDotP|k)O^@T|qKBC|kIU*u-qsIv8`ASVV1lYmNWr>=10%N1`ZABiV5RiIvLY#e6 zQD4VJy#@X^M_!j2Zb_2)U`_n&Z^DkQ^;cKSWCxn@eY_rtZJ&_6@c>0HS&C)ijR0iW zLp?jCpIF%UP3qy|{Vo*6ZoJ!9T2AkpK(;Ci+qp~v47YanX3*f0zzDO^t$ zi)5Pu`|%-euST~uPHFfNDdRjH3@fP_v$j6V^Yw9l|v@yEuu>EGcX<|&eu5` z2`a>{3bSMhk~t1Vwk|8IxlEQ|Y921QI{P`3GJ2jMjl`rcZ9s;}iio($Awli&uS(kH z88lP$C$maS1)4{8STBj`$VVE0k-8r(RE9KWWKlvx`iki9I33y`#-FrPOC*ndRd23u`u*2yI)**2R674Ker)giFW#Q8XS`>bG zJ8a@-0R@2@m2+9b?~f9|b3u6c$|eh{lL;MZ{7`-C##XQ-sG_Tac;aRrJ^6|tio33z znGe^@pS)zFDfym%I1A5-Ti(j9U^x5Xj5-c$n|kj)y#5;0Lb@OQ@rv;vS{+`h6HJbH z$dpEpha7zq|0kb>*;O#Kx=}F(FZjM=l8spevfU6nlv$Uz6GyZBpr5G9>}inv7(cUI!R#5nxcgZ-K2H98&=itw#aaA^O+H}!c|>!3D;DZJ?k zb;9y!`n``Y_kY8SaUKrcYJ)pl?(2P9UE=-t6NCk07P5p1l{1&v<3WT@lujC=3OC+w zQ~&`smy|n#@&o-g(kpo#BogZ)FTZwSZIMQkL2w6VY<}-Gmv;97)0nui=Wo0^ND}x? zea+_B$Q1d1*{52~lV&g5#t{B-oYuWastntwX?jDRRjrx-;g`ytj!Fsu5b=p~WnDCH z=Er^%$e}yqAyG$qW}%!W6X;i1C!I}SOV)Nz&KBw{f$k!r|01W;G-J6HuvCdcP`p4= zNMl=nq5yxN)P6B}0>gHqHL{~8x|n#F{3c#sMKTCrG_j{#b#Oh(IzKL{6y2u;^WZer z51A~4cPSdc%dHHb?6u`jPwcuD{;p|h_b7b^zo%Ow?=&xf1B+5x(d#gt;AitYH&0GkY}Sln;~n$Bf-U z3oo?~vFuO>0w6jJXn+YaFwd>zZ3N2;o z6*T7Ilhc38jMQ#3$L{#^?MAEF&1fp+f6i=VSO}HfuHD^`qXS zc_dB9>GsQ5xc2_SyPiCr*U&fX$ijr_`-gwz}dbdt1-wSfpoHk^bvZCeI;jp&(4(K^l zOF?M3I3V+Xq~Gv26QZLnCipLz;6G-7d*i=%&*lz2y(5TMK!WN zXwk_iD;HLZeq>&jGqD+;{lUSG_A3!XziXyIfq8z0e)S6+$O!m~T?4!WockFOA)v(q zMIC7vDta$(QAZebZJfq}b|2M(l~>>Sh2j;A0@~Gk^q%*L@C7}-(P3CvItMFJFO#k$ zV!Ja))z;ZzYX8B_Uq~g#SqL9?PsDavqpHBSvkFNe;pZxX^x;G>_goU1=qrqNFHMOG z9@_FnabBbCN$!*^>fF#OjAfwfH4V*?`uXox+VjHh)h8c1B1LlA`v6v3DVGW9U*CJc zo|MY)RtpDTKsOW&&M`0qn*jLlun*EQ^v{(V8`I}f^GVXX&4_MkH9E+z^tlNoi@cEJ z8RA8;;hy-@KKvfIgQ|VVm6JXz^_Yp&Ac&vd^_CiP_(UI< z!7@MH79=vAM~w_K0_8HSs#)4O%^zoD6y?HE9)=+|ARJN{ASC&?z=-D-GTTAT$UG$W z-8qgdmpc3Eh>zBM`_S)R_*%r~MpVfpjOld`yizm z)+M~RM>)<4s8lr=8jkD*3?fqs;|f3s@Qx}4Ls0L6qkjm02I#x85?`aw8>a@!-Ivfn zxj2P6U7xL->{p``V@#OPc1pZf2zK0TL8Xd)Pw#6UAbjSURX+b(O5<$J1h5Bz)s*BN zok}Se1~-&M#`K7|8pImpD;TS$1}Bmof&ht%^?&q`n=K8?5*Dr>MjwP#uW5og@UJ2Li@pzPmF#dk5i9lSHt`{{og)@r)qgXHmWTJe&u#pZX3%tWN5R&42@jq-Go_E{c>vZL z6SH5@6NY_v3%@786N{bAJo4WYlaFkoHGV^wFbKGu1ti-(c@P^HQ9iXW`!Cm3ldVKc zDJ32PWEy;hI7?5jlVdXt7%E zYIZ<%y5fdsoypnghSTTL0TK6KY9Y4v&f>>!Ts@&7k-|ciX_)71{v+2f`Qg&b=blQu z`EKUC`4WolnUZNv=4*G$-K9X&-J@<8zxp|_5YSC5e7cgTx1Mb)O@3N+UYt+d<(NSH z7qAj5RI5yo@hl{*C}kwP@#X#ORK%&^#`AX(Mu@O)k4u#5Vunx+K@m=g&(r&w&)b$S zcT)0ykmwj>ww)kN(P)#VJWR&v!j*Rgc;)1Kf;^@=dr&>~IL#6LTQlf*73V)C_!I?; z9QC|3Gcb%{GvaZ8fqXo(ueP5xLxFa!l?G`7;39Dr`3Rgi^j+I~M`C$Us-T@_ig9IZ zTsPv}G3QG+T=S5^%SVl3(Ls~O1gkvq8CPs$>YJvJ0C{jIyqq_z+)L5Cat0sEV!m$$ z(_qnvt6(pQ*7Uo`gsmQOx7C3%)daZi;QA8HWf@^#L+Aib296(S7euz&Mq-L$S)tuO zlLO?1f!V8k4T*b3AvRtAHa%g!#+gQg?t1Hd2;O!sU6jzAKKOE3S?>ZDpE40u@GAlI zrUwBTa&B(x&4+7f-V_!xXNfqR6Q^UaAVP}0E|M3|anL~x&`fq9%=U_fGlQaMre1Ma z3c3^`mPzQux{mP>HSK4{5{n3Szx2~uQRkMw1Rf4K?ct#=7TL&OA3Q?&5R{sp03S7I!>bYyj79H*;Ly$Fy&DXU!u0Gdt<-1g)J(*sVqxFz6)@UAr zx5A`)AMlxVuX!{$IzXyaQx?{ix+0p~74C7yX9BAk$xtlwGW zFywE!^4PRY;wqHaU!{tTkV6|+*_x8LW(k5H%d|n|uHIa|d%mJ+?vZM5Bi@u=74aBn z34-S-ynBa=on9;Ba>UlSjQZ$A}QIv46A zxR#wB5C-2=qjJ9f?DaJ8suY%19TfM^sGZR1=VH|zaIISI?040ewCep$T!lHn0BODs zsy*P8=aFyCanVL#zcK z^sLim-q!9=@>~qa@Be85sITs}svA`qaesD!(_HpImL9&M`i@t@6*3V?ZoG}=HW1$F z<#9OvemVjxh}`J#Ro%{K4V(xLhf`E8XSe^+drt*r~}DXpaP z)wGDbf=!C!fO1X{?ay>-0=;~}u0US}z4AAr#XGxRv6outwGuRpg(31>=^<~UJDH`l z(|Y%WJbL@+N0D!ub9A>}-jZwy48es#q;_-X@tjs=8u81GQgwWC>-q+}%l#qDBYLF! z^uE{&{AhVv5z9bD_&;;-&cE-IWuw0Y4Azb`!-6hsaM}2$of)>l-T+mDWWm|~kW>F< zk>y(Or&ia>lHR)%mq6Er_{%6FwgVAIUkWy_^>2{Bv)yqe&~(=F6k!4pKTn|W^M-ox zK#8#>sI=U|B25nC18Wn6&ivCptIr{iOn?IzBnH64d3Ot9oFh65td_<4J;`*fW9 z%K6}P^x@+6U2Oi9~$x9bdQ29J+Jj$&K)7{kudi?&|zMEp2X9*7iKImDa!`P=;Pp5*JcZDonk zQ#IjcB}+KJz#6$Cs;tdpS8C5|k8ewQIUiE@FB-hc{TjZF&dIPnSgvE9tj^g%hpdRy zVS8P7t0cON#97*Ddw|f(I<0AJV+WUvjy1JLjvX?ZcO-!ju2p>+PyjBo!U351KwSdE7E9NG-EA5(egwc()6*|ic?V&!uMfL1x}cOI1- zNX4s2l>XfM<54(DE&o#PmBZAieQ<{RHa5+M{WS^%4dH&vz!5vMr7lX&jwVHN0(G&7 zP6(pz+9DJ=S$Rp@fjkB`y!!j{`&j~&LqB3#B7B{6QBcvAJ>qlOpI=7w+~?rmHy;egAo#e3!DIKxe`*%WM(Nzf z$Ga2|igBXptmk64%m0~4iF8$I^)`qRa=fpJyt(nXaKaGA_=?)p?a%PSh5v7j{WM%y zlq!9BHN8g}?w+rK?+ITDw#yx#=Jj6$d~SQ~Jcai|dB5av^6uk6W^^KuN#H-1GY?bR zXge%HPjw`rGBI&s3gP*xOGHPDDYEGtE&QQjLkzP2mSCzu9b}C0`aT#lSv%J|si+n{ z`o}`@BEp_hMbKTJRF9Qf&5!q-*7z5Y{ z1hAD(7e`!E-zNS}EN^)Eqj*kRAU5JcG*Ga9zECh70q zR%GmoD(XYC4yHHQHOY1Uezrq{yGmYQc0YUEbIJsoOFJ^ei4MkrJ=4N26@ZbwtW>hk z%k12e&O-FJBfOtC<_zpD>k;v*(W@A3?Mbxp6VI_+K>^iX%jZOv`#j+tIgdsQt+0cV!giT)t171YVJS%1>LObhI-B6!h z3o8|my}tuC=Ql6Bm1sI$oFmF5yXk4a)O`=Vye!zWOtQm!j0P5NfEUg_P;eSe$^lcH z&)SS><181djk=;DCe3g3-jeXBwA7i03A| zCEqR_wK>1Ia>Eyo$>85MqANNrwzvfKpACtaZYWgp7aByrHH;_V(h+t=9g4Y(zWLv; z3y)Wx{<(O|*+SzXlNKPQ**9Mu5$%H0vvpxw-p<}fR=n=t<2!Ryv>EI}TL7kTPbi|! z>1=y2*rY=5eJf3dp;_cv_|&JYp1-}cwLX6S=s1#UED8x8xoPTn;qklS+Zfp&lax|j z{4GO!M_BlhyPwnXioW_@Lbe|o-rjp#nwI%g(&~A0KWqf(FJi%@kInwUbOX03;pDh( zAeqIa`SUSUGDdNXS12oI%Xs_i)$g>g)@W8Pp3n0Yj=)UW#OukO2~MGoO**2D(3FvX zdaqEp9h$4w3at~y{hu50t$~#$?Rzf>WJ^8%k8cw<)78$OK1;UgJu7#_gB=&8@!?q_ z@412bW78=vaGVmwsORQ+jN7Yf1nf%>(*d$bta4$V;w>n0!vv|#$$o>CB-#sAx(lf_ zRJ`(fK?w|JdG-2ANNy{g*4e=M*4gs;Pohh-fLy|5D7BRVULql`tgiSyHbq?MW%tgr z`{Q1@)VykW6R8=?c@y+6M49U~@*mnT$!XJ^d~x`xF;0bb!EL(Gt3!<7`dRKe9tOOf z^yJ1)!!fpLy37uqC&Gp9Z&rO=+XOr$+lpl}#NpU2guZ$pK#5vq0VK7 zc7)72oYU5RcNsj*@a4b#77+en7w5_ZkAOSP#ThmpP{bA-GISK$Hzew|=NcjkW!RF0 zHDeS+R@IpUw?ai_c z&$#97B6>tgcwRf|;e&}R!H_0m5lKm@C*eCeI8zjFG~%t^A?NvW(xP7zPhox;8jJ)= zISL%KMGbu9w>R95O!k*wWb|H|S?oHjLbAQ%csp{lnYe@&CIgwvkGB$Yy|8T8-H@1T zLW(LIlD|!+7f}d4+LBosDx0cG3jIgQIAD>;EO62o)5Wq!aC&1WE>KKjTAmDRYk z0AMM`izw2Wg1?pd?uwC7$aoQWq?|^RC$3puJ5Ag=S3FWtNSi4xJ#hT=`uign<^o5- zdf?AWK%ZmjG+GU_v@n8k_|J1{GLwtpNizq%%$e);>rDQ3=@TU>mNBpztSB{S>z8t&b+8)ByCAxP`i8(RO1ro&^XG=Q}Y zP&w~;^fC>?!jk5) zWKQ%bbKy-z_VT#4>aoFUVIil8YtyE)-}_!7;C|>C#%nmP?)ZjOum1sj4&zH;a`U9~ zx&dl1Tj}b3h8D(J&Ej*kTu9_L-?-w)S@thl>gv_kcdH_$jG4#{^u&POZSg+T0S`mh z$O*T2vzfC+UayUbpo~uN;ctNwEknF@GwN;f!pXc|ctYl-1W%A}+P>9ye8k%M+?Y$L z{s+;EC(T)KtQe(2A_{^dd0(d54a`W$qHgTxZSVbKf%b=u?%!qO;G+dwfEG(0fQ4oF zOwcUCHeq5PgLZ-Ya-jdDgf5G=+1Il5W?$b7BLHWc{iUV}Qv|1^P&%V_36SIzSijSm zsv?m*rxa(ywMe6qH90P&WNqm$Ki?dKK9o2wZocvm2{80jHXkmKD;v~DmyYx#5UaO~ z>BnD4zswAY*+)m6O^cS$@yY8QcQNAgMhKKZ2mm+EY$u}m@saq2_nT~V8hKDb0W)1( z+%k14)`e-+Doa?T0$GJ>)Pjb4RawUjE8o>y{QgQc?N%>W5)ePIyIFW5j98JK>D(Zz z$Hgfn6o>JnH2K^JHX|RPZ|#DKeocQb5=iSD`h2RJEWczJ6q%`9d~{a6IH|&R;k5vM ztx|r4&V4R3+#m2eg@1mIiX{m^rH(5y*qQA*__@jTk+Je|tGRU7d5}RMbj;J!<|)Lq zD7l;n$7LE2&g51-6TG?J+9u6gtFoU{VrT~3LQz?50J1n&|6I2hiTn%)&+A|#*GMfp z92_s&vpcHy<79PZqyYu7N=+E!+j z_LqQ~2reTb>;ZA6$MnEJoRbEN4{4^I)%Ue|;@=}}2WDBu| z-Q?Dy0;P1&8lksd(iXeiZyN;t&2t=@y@)b$9K$gZ|Dak)8j7HcDV&k@JV@Q zo{wZ%b)G|f!Z@$bgYGF2w78sERfsmxG!jH(V$@V#y7RGF$di{ z2Qg$ni1f969Edp&41Ay>koI#xzTe(HN^oe{{`PxXoa^Bs(mYyKL7CPi>brhA z2RoN3Vox%U?boQjfX)liyZW!pQD0eGeu@yySD1X{C$V(kEZiD*=fOp!xZn|NW)|YW z&KKcRYuSz@FOplN{;r8*-7>BXplM8olH<)HJ`vK5qsDaqJ7PoUYljATT7)eD)-PU( zG^Y@CApbgRE$xv>n!KE`l$gqXME+Q+ zpQ&zm#j4z~;`ekzDJIo28k}c^3B|zRvR^klwJd;^c0ZH6(Z>Mm7Pj)!OE!X<(wZ!hhP~Q;fG#e+3cBOz6WO8HIRo+ZM|8!iWxPYC2#&eC$R_5I9Dkv|#J|NFgc$C84Jg8^b zJTTZY$ou9#Q>!B9@69FBJqeku!w1{#J%E^)Jf`5LQd9!t*U53Q$5`gR#|^SMska5) z4KmHf=EjKpQ0J^#@E3y$FX_gH6m!Wkuco`$wE9!O(uE)WIbvViaxgMAG-?$NEnp}J z%T%G&c*zMOyMB#P#`RtCVpRD$!o)>#4%T4l%0-vgEOyqK<*blf09(!S<-?kYFNZ=R z2zzwoUkQ->>E_>P3b{cd#zkiH@FYHFX+mG@Q7ViwVbgx>rFUL6ti?$`9S|}T$z+&~ z4yFH^7DV(XT=u|P6vBa~X+H(dnZOAKZ?GEucpkG*AL)Z}8i}+j-vQB5>FB~X(kOB} zEyua*9_S@C9#L}@?jilMKcB8a3-A%OnEOKtSwe$o=e}q^^G3lHq^6v)t9|9y5F})8rh@#mjl+a;Y;FwJ@63|?|*vmlt9)L*Dh*1 zP{*N$Yq5B9R&_Zi_Kbn<^X$Q2{UG}Xq2XQZCB@5#<@(_bBlrK;^ulCivR#40 zb4~LBwm@zeBEByN$iJ)9HX2oojC!Pl{z6SajJ90^Ip(Lg+}6i3of|X6J)O68#y+b* z$yZmRYQBmNpttTZZu8e|uQ_=ga2(&@By!tBl?mE+EqubuP*XX^uqD_1Dug8fjXX%3T3K&2O?KKVIDPFye#N2_53$AvbbsDC**#?@4xXvF`X zGLYq{pgLbab0e{9byl_BZ{+w()IB5wm+>LV$Z|UZYci?SX4DGr7qjmv^e#XLlbDk!x%wY}BX21lIF+IY2MLXLjbJp)DZ)n62pA1+Ow{DM;ubd?-_5+<9nR*K7cl&J{YHjjL_Fh7- zv>8h*5OFiSc?T`%yhFH}M+qL8GUDpp!cdn@vQ0lK>`NLX77?=<>}tEI_8!U=kj_SD zPnWgVOmw;c3{{wH@6lGu($=;yw&gau%f0YB_Vtd;@R7W>tNlWDVUF1vDwFWrJgH5z ze5Nl3tk_o9M1;udNq-aUTovmjlL{trk)4R?Ob2Klw*OSY=9v@d$tr-Tqj0lIx2wvt z&w$CDWhb@1EQ$^Ka_`@b=4sXnpjrX%QZPZ_kc8!+7-5Z<@-uuyV*B+WG41SYXQ}F6 zREnq|K#EPp`DjYPQM5d&?-{9E#G2Zb-C5A!IJmmw5Q$yu|bvwJ-O<1Tj-xq>|DU)f%a?5)%OHL;|EDY3yatE1>}c)djVRE z3wR=*(0jUeaGR&MyM3kF*1P2c2QSacsZp~gy6WMH5F1G4G>&UwZftXZY^>{hMUK+| zOgtpxe{X5ivWt`4$E5og^*Y(QMt_mTPj|8fLonF=T~9fE$v24F`j*HYdDST}Wipdq zB}sX3R0%%=s)kb{+pNRJ2$bzqE623y0Mki8uDOHKBUFr|mn5rW$G!~DU|-)j#+u5B zv*eg5g;+{y5K?YgT7*SBLina~aFfW>cH8lBR1M zmhUgE2ddRo-ch4%XJvmTn8vH9zJ7MRK5*iDq^y;t&WbD_)}H4PHFD6NX&QEv{63|6 z4jVREz8;%OjtmPg_`Y7kze#JyB&#LSp}0}PhoD5qAM1b$(m{q8i-R>Ry}Sa8Qr%*{ zrTzZ3nh}6WbnmVw-rj#5J}&r}eVzsU87D+DttW?O&Ok2getS_b#yBTfSYnaErq0o? zGJ3FB?-0S7i+!U`+)AkReNzqRK8G+T0uFIEx{2+32#pBIXpcCk=P49}bSuH*w#&~ecJ z|0b0b$F4!)Ir;U7=NMrqcIygy{2zBnh5W^iYhDGf1Yu)2Ffxm6AMAT_bA0bh>GDPF z90{Dfsesa-kji+o(H!OJcUhs?VAm)Aqo=o4<~t+LSJyBC`w>wy1q)s2uh6vlk3yz8 zD}=nB=wYIrjU1%-X_D{-)09!t|L};obhiM zIZ0%gs-&4vwuZYwJ&XQCUu|>|HJQGZXB$`8D>(cy?ZIlDq;e%gDOz$UUf-3ihYf1m zh3)TS1X?>33a1h3>bzeh?i?2BqN3_w=I8gLHBrk7xZ8x;uxMklpU)~mW$(rO^*Lz9 zjS|z3j>#S_z7x~&6gn%`VniyL597oOw7WTN05tXI1e?yD#6}PwUl^-9@-^{yuat=d z!2Pk7B;3=2yC3bT6yOJh3H;wl=Eg6z`-T`khBn+Ro!zUAdY_*P#d{9 z_1{)<_!z9ZJcPv6Mw)t;E-@dg*B!`v#};Q zamj8>ocn=;0v+}C2KiT#nubL-{C*!TJ>je*v@fSpvx~0(k}h2ksqR{NvTx$w zwr|jr@X%~G-{iTO=C{aS9@J72%A?E}2e3lxfXlfUP;`qWh6SyR>R^rSe@*pC#RL$0 zVM-&BTAu0+@q@ecbO~Ws#Z&Y(by@r0*WsCInE2J;!)wkt1xjY?#?5rNfBjKv>5Wz} zi*S#dFTTHEI6JklN;{ssO+K6WQXyVZ;m8V(R9%*(Wl`+ANPPQ4gP%-Z&%|Lump9vY znp(q~nd9>3am*r9hBD4vJJ?)-9h1fZL>#5MEeG@ShnqH$)Y7g;7v_M~K+EFC^4so1 zsLyC7&)b-v{p}-nik$sY^9t)_OHzNsyag+Xm#0Bc)?F+BEp6RH{Drc}mO^62zJiqXzoi>1BdXc3Vt(C_+k7SwY3Yb8r_z=wsyd=540qpiBEuVIOk zoJYB<29A9~K+Co9Gt6eGWfxR5ZbUEO61RruTsEpg-INnof^oI02P+(>1y1lvYS{#> z99Sr5GQ>ll>GW$23>@a=y)~d-uIQ|Da#&IxPjLqHq53UF!`0_BMLRP>xgnjKyx}5s z&~_uZNQj$OXQ2&H_^>P$-m?a(Jd&2h+Kb5}WsZ{Z7S<<~hta+zfWfe{`R)?5I1dUb z6FMt_S*U0g$U@S+l}!7)wM85YXD>F$4EI5bl*?WG+W^t39frjBKRDJ4_zJ0}Z*tgGT;%AMa@$xwdQ@;@DvCjZY~q*;uAr zV;7Z6^$G2)=s~$cNmPVLT$V|Y64(mg_622+@FR*s%FpSfq81L4F6)m6k?QuHE>_1q zd=zFqKGL1<#|h<_8|QNzDA}mToxbv7$=o|VRb1@+Y48o$V$sCxGawwwY9L2s$D2GZ zMCgK))Rb~S+0ASIj&R+LI2QvTd19u+7-s78G%ZSD#QB`$Eebl9>o)AC87|26%pO>( zw&!}%bLji@UIhj*C@2+E%R*FS`3T)@*$psN=atY^9Tr3ghJ>~?U#6+eEiUMTHSNg9 zcs9Rg`P#!w@QOq7he-){=KJhM#am){DxuWwAL@a%u>O+)UrD_IWig@QCyrx%^N%wIfj@hG4KE-go6HTGM+tsh39dFlIKKHiDs*HSy zxUM%i?<2YELnl?sz3!S0yW1>1<+>}%{>op1qRSQo{}jPGKL;#Dlproj`DJ2|YtinjkSBJX+RR^-?x zXdW=~f_L)hgp$Q;ic_-n2U5i6`wmmx6PZ0VMFOgBFX&n zBpl)ND<`CP1cAyB?=->yU9FRUCY6~F+;XpSdl*(O?I_i3|mm2KMYHdm@Mj270s z6}JeswBNFHe}%LPUiVyL^DRm-Wk%AZS07RR%bQ_9j07s-#VzSR;5h?G6f1r+P$F+emi~#skN#_HJFb|x_-ga z=N_GSKh=F4QGTcFc#OWVlPmfJVRx?|{YW22{rBUPUj-p}(};Z0&z3wz6IJcRr4+`d z%itdixiUzDK#RMS6Da$8p>a%XYNl}KWcprhAfxb z%|)K{a?zt|1q|8Q`79yovaPLO?d<{d*G2G-2U8(5agAHY6}#IJ)B-S)V^`Y*#-6>HJtPLGT4ZY-A)!_{u|O5TlNzV6n9eOX z&n14bTaciQuk$tITKfSq;APS_&9m4nrbREX=C+N|l+w1-PEyiYNc=`jKhRspIkxvz zoOyXx$qOR$FU0oI@e8%6GUCl3KOM={29+e`IUjR{9YMvQe82+}&e)&fKjmdRPTr z&D6#o@T17ab`^!`fX5FPQRoINJuj^3-ig&fwqz7c6w`gFT+ncT4M2Gh2-*6X|r zvt!rZjFK!DmPGf1F(qKGOwvUFJ;Yl`3<5XK$D*+FPmUdy9_>G*EO8F`z`-{!*Wb!B ze0mXDa88WPBw>Q0QuNRn{xf(I%xY>}JH+)@6S_2mTqA{xyvZ!wVj*F(WbAk9sH1LN zx2R^#K2IkdLbGS2QO8s@ zY$4IN)6VF`aU<6>U6UKLd}*)jgC`mc2huho3&S@kL?bhw7lA6Qorv5>ezy4N_}IG7 z;bKs)=%vnatl7R0*VH*Q6+;##FD-`pC_t*|4puFMf2E~6D4oOn{4{@M7=UKrp+o%( z8HF|b4dTDD&QyrhSO9H*O0}r6ttNAe7^9Xgox|GSABhE`L9csX@jfGak`jsZ1s)OL z+QjySx-|7yw$UwlSp8-p3U566bM|_SzBY{B{_fI@oCD`)pd(kNHXQl6TnD!2rA;l0 zuOZa9^U{fI9s(HbFyRs$cU_#7`ZbI}0KqVF|n~_VnbL99=b}#BBl(zP|(|XQw zVQF=2`YOW? z!Beb97-_U%vp-pA6Q9_2S_ZFtLP&BVRq8AkDWm}dwSiRc`foAv{XP6XaHtINZQjZ* zw~N*>9Cqu%y)4B-Ze+e zP!Qr3F7a}G)31g+QT{e-?WR?=WRk6WeQ{i>3p|-enKGnj|4{*uJEktBPy{F`v;BSP zL?ZRSV&_7}(YOP0&2C5%ds6m42~|V?DTWHmt?W^Njttamd<=MzsNw@{ph&{QH#far zqqg2vXilzZ?oQ@&?C%eAUv?zxSjS=6*iRJ+=6`zqiB6SS_ubjJ{Q|x2Ia5s4>R+8!vw9?wOoGZq44gS)RST zy$Sa`e(GVVUhOc(2~Kk)kD^ldqI_Wu=H{gRi&|_(IFuO@8S<4ISPBmdzV$fF)3-^H z8MZMSXk4sM++#}e08Y=>LoKR3cCyyO_ga|4lknFDs>GVx!dOw9$+8Bc4HP5~h|Y^D zK?mySk}uN~knEl$pHB8E!Ra&79b%xfP9~#W;qV_9u~=E@jIfex1{Km@fl_P*@=8v$ zhIY|}9@S0LZT*s;ZwQ@Ebr3z9_7=2`@^=JMnBTd1e)Eg=ov#gWz{9_^Kv0V@w+HOm zgMqmLYaw*Oz=0a{PYtu*(d(+{Td+33HsJ3TY6*D?JApppGC&24UxKU(OGb~85M;c8=(>R$Fj zaC~7sB)N4aT-Phk5O`FSPhp@)0ojiH2s!&Xm!^n>1V4vXXCX(=8yx)2#p)TwNNjes zeM|oK1Ejb!zhr*HJdZmsmr#cbVMnHUM&#O4ugeRDF$Het-(XvW$D!QTjIOR698E*? zf6T+@mBS-~_sfe5i-oNz>BK;Gv!4T?+t_mbY5@J%kUTzSpMZt5@~>H&Por$f1O{^x z=6K$`k4*M=f};~eiLjsHA}A+5KLF1&p_F1LF7Lc^t*7!v9&icTor#Po9E^2sK2_2( zP|%Qa|CNDmAq-$}52V4bprNZ=}MI&pK2&qBKD8R>AYTZ=L^L}yQ zeFvO63*I4>ZY>U3i{6C}@bgSfLSKv>JZ{cux(sc8QpM*T;Avtv`>V1UH5c4!yr#qZ zaL=h*#-UxRqKsO~p)i*A)9iub+{=dVhbwXn%Kg-eI{5+3^SGltO7aXmlTQsi2)iH; zD(oc`%`plmTHqg)_ORx{(6H`BpuYyE^gF#kuQIVXwqbsCRyOYZ8Er3P<`&g4&)aCQ zw!5w3d)cTmpZMjHG%I9?(`s-C$bB!>#V5X1fGBfX+fd5put?Wj)5V^qeUty7V(@D+ z*W5=jG2Gr^!ZKwcLCn&s#6PN%wbRof&LfB%z~oOCyrIaV^6t`R)qfysNm7uS&EM{u zCwL|ZX71{Op;2*j#O7n`3_X1)>GG5gc5IJnOs7N9=~B|YriM|aW~c7rVKL4((~wuR zKuT>+{A?lqOa56Z>FDo8iuF&+%$a(>CgJ(_4Fe@G&tLnqQ|tz_F!?I&=Yh$}KKop{ zi8=AVh#t@qFT_oa7)I3v$U(t}GPDdQsN_&cWp9$6{$91Xzt1l=WHa{b><}1u49nrBs zoV9ad7C&uJN-Xgn$18({n-AEXu{j}szB0$fK+!=9L7s&XYhbD1C><(>Fdpyw!y|}~ zL;388;jixt;>FLGl-8SU&1xHWHaaB*4n9pB{{^Rme! z9F0$u+m)5Y=yBQj2kqgxWs#pJRBo*L#TXl;%*9hZBt{GI*zBSy_y~K9c?-jpP3^DV0L7umNNCIYYII3oODR9;#*cQ83)66+>1Za(NU;0FNZor{7VW%l5G6)WN*; zj8J?p4}xdYXn+TjGU7Zgk39j**E-X$a$#1PJHSzzLjYd{r$^$PMClA*hy?7t_?{q( z%|l}2DIzHpY%rs3=&*E}&L_uQGVBZHobIw@4OnzoQ4>(E&wfP>-*8H8B^E6X&K3TwUB1 z_7H6hmjk1TbHqJ%Mf27+YuUv)o?gY=PKB+L`k4&Symn%T zXlVg)B=Q2jf*_5aV2D64zmhUfYjA39Zdr_WPsj9c4I=&!bu4C4@+QM?C^MMlJ=sxA z*CPu7E4V4{C4>rQUVIiP!i+^WIGZ}I04g1x3R4||a$plDZqpci+K|W@=OQP3VqZ>R zFf02!Yr`$yZ&?+aTIc-ijNGW}<#soks#ze^_s$KA=4JC3YeTEQRq73|i7YN0y4H$;wk^Ny|8lSYzKGbGKFi*;K(SZAeRCu-mpWV z@a`V2u+j{=FE+fm$Xbu(cyI49!YTUkE#%D|{N3oto_9L7Hhi|_A!ypCnH!o9fWa4f zG!);S1$l&fFxVyW%ySuxedB4BT1s79P zLDlr$y;eWgZAjj@hLccHKL~9cML+I~wA|eT29 z;v1&2yK%As0tE^1s6{0OSFv;gq=$9tm%H(om{Jq4f*0|2)Hp)=1(qS)-9AymC%Se7 z?0{2BFMrwHsZUo5`^%`e$1W=6v|&cvT_@O%YHw({fPTpb&DB0M*rY2c=Jb(ykl^L; zwunvEa`?9V1gTV5Itl3%BS%ImtH74=@P!o_lFRr{wxby~owiYF_#j=9{`+>~N`j{o zc@+ly4T5jy@>eDLnlEF18v1f(rdS%udXd^alWy6@ppKsY*h_{3@QTbY5cgF3g}vCI zk@=*N4@Xfu$aT6KDh|1sXgLBiX z+sHOEFD*93#{--@V)9&eKg^GfgnxZL)YKdJugaGjZkRzKKD9*ub@f$m(nIsl)#7JT zgSO;#StT`{w#LTWH4ZkPG9*@(uB>NHL-5!9+tvLLu@`uJ+^;_>-nF$-j`OPFedwVZ z!C8g;uYm*xECu>fQ__spC|r|pllRpF0}jP*O$yX`6)z6=>sz%ya2{8GPR~+7y_fgG zKV_G85X_Vyz5bhkRiLyym;-G;U4zt%)xLg3u{`nJJ+H6li&+u7qLP!7=f*N#>AFA( zuU#HV)2JnS3f`&pMJ1ezv49VxmLxoFYoQA=$y>>3;K8WXUQMe5G85-PetXztd2mQD zl`EABM`e>_#IS!|q4S#?Ar~)?s?LHOZ5TsdXs_9n=;zIZ;3EuHNPHnERC3zxh07Ei z_AMCUj<(=LZHprM;2fzpO&@j(1}{lNtxH_lRzuc-&d@J280Jgv1T^DoqF5pGOm$2Z zJd^jMj*a3e5KofS0TwI-1r)-}ixZTZU}9>GZ~BSSc`B_)+|QP%66N)MlL|WZBV_73 zy1y`TGzj#67i&fH1nS20)A`E&?x2)th<+2iJ(Or3Xe1RKy7g9yEsE~&2d4}2mK(^r zv)IL$=0FC+6Bpgbe=!*A*K0Qm_xJ6se_I&0--|w7P>af!X^!6BI)eGUuXVoy_}^%M zeCR4Wo7mKp$X=WaHG*WI#?>PYpDsM{Dm~fObgfegLM6inp0i1x;f#%=gWL4mgY;gZ zKS3KmtlNXy%B5Vyx{)>PI`LlN{wwg2Ow{(%v1P~o+eg26BYDj2f0BcJma##Wv35-?A^7`p#&S9#?XL|pQL=10Y4Z*uN`~W^t!eT!5BZKXOXhs#W^=V zNQzv)Ur${iLRuxSK_xexb1MbaX#j0YG7vm9Q`MK(=jNb(G+|AeLbSki+EgtnIpIfm z1=m5>rajbTGO5eQeQP&O#ZV0#atj0yc1eNyAA(>&R9Z9ve643P_&|BHy7s1=01K9d z+B@Abd^v1p9;($|Vl~=% zzSQY@kv|meq(zhof^?zoOJ>Y?LJO(SQNDcUz1by?gS84q0r_*|+=(D3&VGrpBE?d0 z`kI$8*b`=Xfcwv?=V!9bx20`&?=X}YttqU65%X2LkC_)>VS$O>d9kphts32cgO7_> z9PCe82q)D(bldfwmn=J|)8D9DE!X5)W~-(R|FpKs33(lkw;<5}WbN6zUG86vG2L?& z>Qvr#Ilp=wbgBB?6_q|swc78aCfntvOg`h@%U7YGRDSW?J{t3zW!&<2M5uv!q zj8H5lpkiKf&zmJ9IK?(0hb(8xU51b-M?<;kJnQmmr<-!_#1&lOdA+XqZ=T16pz3Nk z&b8435AS;B7|Iu~R-GmI0lavpa@e8zebkdW`{K(2$nCrbu#v>n%WOiK z>8J5%*A=);$B-!ElPafXKN>bQYA*f`dGO;XSjm4ZB)N2J(?hB8bxo&Q_0$OPy}**elh=Dj>N5jU1r_HRKf* z-KkvLvjG{0HTn7@OAXU;Co=ND`hn}ew2njZy~owkM$ z|8Y;kiQ+QJ<$SjSZp+3LWbnmt@LSR)qxxm`tTL|qj|6~IS`&CW8Uy5~Oi4IY^Z+1B z&I(&?Sj4*(!>oaWq%+fWQ+iVptd(xN*0ofnhTO#V=%#EFAb_U=#?{tgHpxG(BTg(G zR9hwPk@{U7nuMDkXR6Sq;KG^Wjcn8uI;uh%64!#Rd-c1e=n+aim0(+Y`M{HbIaYtzd`bWpZ9y>pYTCX{e7dg_a83^>Z{Qt1(83ipS`7vwf) zFk*I?#Cx@UT44q-V0Fa9np$dqdWvMdt`xc9_q(6$?0TQPFzwL0XTA8s4Z*{f+!dfE z$>~$n@wajJT%u}vnqK6kTF~?5xHl5nn*5ZtJfB#pP%2`Y=^Vyx1J`i_z`I{U9$0fQsmI%19vB(sBo{XyMJWrvM0EhVN8mI zY1_rh#YCc64rf{;!wK}Wv!QCkDwVt9j`rsBVB@i0Zr%el$8y?QASYfFl{Y|6$ed(6R9p-H=N1&>q6q|sEOOdJ$DI&_jXqjW!#oQ zrrQBy9dyORy{$j&D4vIWkx(5VX3K(5yJARHM9_|cy1@n!U&_bAF){o!P`3ek#nhV1 z0AS#1*r zj+e8n4c~I_%5`Nylir6+6Iw{Vz9_bv8+tfkIZ9XlWYu9808HIn<~!Sp80P#8Yi@=U zd|Rpx&X*+wKJA%|oY@3XXHk*hJU+DRwr`ANDysKB&4$S_*7HD6L1XGeL=Olwh!dxK zmQxocY?Xiz5Q)j;-ISTP_2C3$V!W5T;`AF)sv7afu!2WVD3%A)6oQJXiDp^U^8%*b zGAa7)G0P+9sq=rLiTx)ig5a*>3@eoS4cC+FV_)X993hjd&mcS7m_(MH8Lk4=gY_2_ ziKDiNUs#q_)JQDLl2n6?g974MAil167C3UyKX<2BqzJgh$Yj1;VJCAf=eG5eYPAq+ zfE!sAL{Kr3P|DI1^KrAutCQ8#%!+J4#SV?mbddd{P*tU3YniT;t^Xck4Jji6&vE_F zu`d4sW!UWqhHkeBuF0JRrmJrbs&TVDAz~PgoC3mbxhe)c;wJnt)(4Z0cy%A`AQDjk zi1Ae~oZ=^MU7A7r1;NLzBCpf?5St@jAbUY%tH|fk<>hwq$Ed+g#A;{%b%dqzo|aq^ z)UBK(?VDid7s zk=a4>c~)3TS}NszLb&rnRDe!-F0lxEoYR|!q$s%Zpy_E)LI4J3vO-qq5l4coGr=IUZHnH@z%V!%HFb?v}{Wnrup*S=h0 zVEjrek65(pc?+LtLL)-I-bPaR&1#l=ACO`tztcfpZ9RAWJgYzV%sf z4#DoyLm}$OY9zK(9Moy6RpQG7ax1;;Z@VbVRrpiJd+xwWw(_bsGXkx>dtu+?>dvp9L^Ej z&aXG@)(dyD>xr}oP)f=ZoPxSEY~`kNJ5(x0SZk5kX`M;&fzxi2Fh_!HNu>!JC3+9{ zfPFBg=^1V>>KJPh_d|GQecYRMdBQ3s0C?EmJP<^N&f{L$gn+pp(%`r3x_yAk<--$FUcljizPzV?4+MDt1c zM1t3tKaM^|EzkPZmDxV-jqu$e`z_vDwYzFDLf3ef?U1`Zr`LxbtK+;^NxVO0HK!|E zvR_%pLj64A@&5ft$>xQD3?`RS6=Q*a_7M|7cSLa{!U(NKwsAlA zn?h5uMmhOT1jfhX>nKhtEFC0E$71wAxspuZw$v|1*hYkVso$7(4OV|(v3yJ~YMMAy zr7t&gfEC=;>a!sCGD?H+RU>G}@hZu6hdSB6cg!n2VFPb&53?~#Q%j#Wsk2=NT--$b zBEyRpK3O4ZLHML$OLEEWfo8REq79^3ljc3uN!rU(++SXK~ zYb&t5{NYfS>0b;vIjK8d=4qcsG)e4Py7nW5^*$v<2T!7tF=R+sZryTSTshcjg11M` z4&T(z$5)qq;#fdUkEyuytnyx5g(^-zk)(C-2En8B6eri%*|2I9``85Y)${7b_Ka&n7gqxVd^Gc@_>xC15AcR_%Y%sb1Fbiwdk<+s!Ek?b z+1)9AHJ%7i)q7@K(>Ysre>rejw6AmX$TRl~^KKFjNfoAT;@8(z-(hKHW*LC_F3mp*Fl$vhrJB5RAXbH zo_npY>;M&jR-l%atjySleiEW<8nB=aQ$qfVDG}rQ%fN=EVWR;Ue~c#7bly9%1UnNL3NCWSD7p0^OGi>`}yJ4pAf3Coar0YMMo|KSQ)i_6?ID(ME64N6{Ou%h%k-na$N* zVpoyWY1-K19R-1L49;0C>j|17xY;)%Ejr2AcTyMzj13`w%rm8P=KZfv#7q-Lgi*C9 zOCpp+X$001_8rM7c5GX_L^#NhArv@~s5Cw-ix3~}%#=}5l)=BcUflKMs*4dU)XD`a7~vznKr3qgCP_Fz8t_tvxT3seMraym~V(FTMW8Z(r*14}JY^X(*FD5=Iug@MxiJ7Vg z2_F9*q%o2^8W#o&>saDlyfUph=qoO{{oQoXl}->@FGTy#AJ436*jkuqu5G)KGHnL{#5~uSz%}+7d2|i)@cV0rsnh`qr$)!2%+;RE8 z^?N_RYQ5oaT@ik`jY{MCz1YF&&DrIFH7?XBJ2Ei+H9~MDV zrZ+#pf8hH{5^7X@4d%5UL6|6zLsqJdAE$H%-z}-ZgelmXw>vc)ao`@(A#&3${1d4k zmQET|xYznfw=wHDUl!u;_fwzy3HavglhNk09p=3^s2)#lUW;@-f=9R0uMk68z-H7w zJcK@cX6(xx;+$>)UKh6h{XWkU69d44@AXP5mx5(CQ{WCNSz9q}&e9hZIuEh7T?{4! z0);N=_W3a{Rs&_nL7lO@T|Jb^sAii{ON)qSs+0@{h=_5RBw$*(F7Yf{EHm}A;b`nP zhgCS(+Lk4Vl(r;&xO7Ns=rNXoDggS5Uy)5SW(hP&q!ZqXxSR#7ws9#5zfPgKL?KDI zxo%(=kD%y}l`fXXDE#z(JA+vzJ3RUifQ2#+1EjiO9K(?sla7Qmm5oGlxN6NK=((CK(l26CB(KWPbfy*N>Z@QOq1m)nndY zA+*}?M}@BMJA>=MfO%>q`IK!kdi)=a!&v!z*98f-$zU z&oSYolh=s?#~2v39YnQWREgScNU>i1VPqWuf4+-kOY2^|j?MQXdCngaYWEE9rZDOg5` zZ)7pWY5w!xOdS57Vwhb1F$96dparlo31OmMm_Pl^Ev=7*+PJ8FY4V^|M3L~*s$M2< ziY_oK3z)S5N0&9}&DPegh;mP5Nf-?KoTBF*z=n&N;-=CMw??s2@5@Ox3+F?%6uq0q zvK)Wrk>1Y)X)*k};gU4>^gteiFZYM6pbL;ct;jV~BS(S5TwN76b%+CJ(S_YD`l?mo zFa0RN)W};BB7oXjxS*CvUSmuuyKrcIYF)IxkY(R9UTIeV8r&{fJ>;sSJfbtRoX&K0W6rU$Bs@{!!3Qsilt_UCj;hrPZ0j}ZUlg0u zCHZH7Va#eN!cl!B%yWUAsaWynmv+{xBlWN}vbnSiyNyO;LCJoj)!Kjk70mi(sLX`O zN8;us6qFXdrYw!;~}?h{eEsyhOS4orWJQUl0o zmrMBbmu>wQKJ2F7{kVPT>}DW(e|fF2c~R^i#evac(6gsx`^0a3OaJDiqEM&i1)2yf z_kF~#+JULxV~ANX&z&H7y5gqLLQNpbip)>rp~4+lSH4woL;vF#;5~}6Lu6aDgg2xf z<@>TP3+Zz9DhF4=92BchsaiofO0T`mBUbr50w?cyho9-~0w=*hs&E2#3@Lt#8T%U`%2mm=*M!5)z6#B>-^{dJY3T`Amsj*~z!_a{~ zT`kr%_xUBz7Q_|1@bl~&vF+tdAi9)pv({EcaPELAddadaDPuy5o9m%=s~d!c#SDoM z+kiy#LJ|3;7ktY|9%QRdkKs|-=|+jNW4(H@Wev@JLP4l7yprSUx?l-YyzGr?pEt|K zz-g#PLZh3?h;(7$&t#5|3}mdB4(Zz;@~w9uUmF~lGM2B+p6@z-x2Tnejdp&}yisN3 zxS@sw%}ihm+BK~~OS1n1eD)49x=4RXiT3A==qCJVD%Xh1%?S!iduF2J!FKQN+cxR? z0!7eFtraux+ZFt=c6}1r6-H_!a+x5frS4kgUUP|m5BNzy)+nbv6LE?+-knvvDq0d1 z%dMOQ4y{(FAB@R@>`mwk+P1W!ODtt>740D-W9d_5lb!9J zkN=b_vY;(@NcEV4Td>8DGk$1^M_7@gw`HS~P6k$u(gsY5fjIMiTu9fLb0<~$R_OmB zI@Tl%aTykPMy!5VsChzl7VNUl++|$<@n66)`Aavw}sRTQlKBFjk9RJPT}d~cB~N1 zb&sar0TXx0Vy@vGM^vME$KrqpEUC_4uT&V-*}jXj`djhD*6C^_-j6XHq6T)1>3~%O z7o6e&^Yr((Xlq%I#RlfPgIi|y6Qfk# zE=JW2LrX)03o!@gB=8k|_E$#SvKaYfE6d8*rQfEa&k;C&a&cC%iSGJ`vRam~LlpYw z^5OG)XKR9fm~6@1iC>QA28C>w1eEM(>{Ii|vtdHQtYc?BtQ^}*1*=ES8|F{!k~|D{ zj||koAnXXGGRe;H;U6y7u0=QZTlM5iLv{Pg6MLfl#M@h&!(^C2{W8y51p~Y_Ca+|4 zurlLH84OZ_%bxz9aA!7slv%zTpT_LqxwcZItMcvmu<7s^H%K5f%WGS3Nh9)t1R%e*T2NH0I==3I?OjwhA0vuFHFjJoMj`Id=4U5sLAc1E zYBq}mr0Re)70b~o$uSGEOlDmQ{O~lGU}j44|1v>P~6_?I(pV#L<|xL9;6o z!Ehro@F0Hg1^xVKfH>i0&DcaLxbBhW#Jo^ zNis5a#rl_SEL)~mphJXvkc}>LNpYkrQziBwCYV*YyXV28nivD&i*f_XllV40)AphU z4w6N*Du_~TBp1C^tPWbgHh^s!a`82vQ+NhXVa4fW-$i~ub(tnR%wMTUiUb$p4hEUF zD^E}z`tb{{2q>o2KZc&JKu#r3I`Fw_e?3b!U_fA&sZ z#Z|6N0*YxgnNIEcb%jHYTau;tlMkr|s_ZxE{I51U2EZ^?`lQb06`b8$wSket`a(k= zaHCD1Zy^oFxv(?xe`eQ5i+Qh}4{T$iY(C16c(Al?bA7!g@4z;qf)`=P^^wi#dA~12 z;`SAqHFIlpvn{(MRhu=^X`@YMm3FRTPd!Ijg&QLun^8$nR#4`3f_nC5eeT)2n#*>m zAVVOP!;8Yy?V)EDxpMx52|-4WAOr($qM;r?<;Fiqm!daDkkDnki!T+#Dgj??ZL}jO%tkMG0(GD0BbU%dj8yi z-=4P6tk*Uq<{oXC5q^tu&g5F+%u*-=rJ5D2ks38tOxM99@BMA7%`DS8XbtR=^|DCj za||fs>sb6sjWuZBAR2Aq9!<^iZed^ma5;vdurP17etC+cYg{`g+Z~;Ux31w&qh>0% zX5NKgDRkh9U>%2VZ)bg9?IvweMk3yY((4DjNHGhJI4?0 zbuJUtw#-@{e*Vc~k$1BHm;~@O--MOT1FQ!axd3_M+G|TU2B7fYX-r(S;{CS_=?r`%@S6Ka*d#x2hW_AzD|5!;2aC3`aT`RIEBSDazouz zs9pCG8gt01c9HHYj>0&gI+`0Nzf0*j{>f*c(Lzq+Z;Nri{+3I2GWOELh zxT4Peg=LrLmZ?6hiChcAz{&Vuy8iB7pY9{ZJ2Ma9^iBtShb-1M4!E#++1#zv!~CX5 zoQzZ(59;jbNnvogbRQm$z{qrp?EKUTRLHLj`{n7xhPBo|{Rc1XQ;%R{c@wP93u(`P z>&=|xeSPx5xi-eN-#ytTM^Y_#$Y&YN>6dfPr9;r# zobCN@=D%EfgWITb3-)kaw5ZQ=m{e!I`Hy)J@!rH%7#n*HDB!i<%%_$c0mqlWeUSPj zR#z|6H1SrMaoRss`^$Z%jl%?l^?@z#-tMp-;9uBpxJ;SZcqO$DDsjuUsOEw%>Dg>C z?Li%*B#nG*T`P-W7S)> z7DBgkPig(+&iixlk9}u&1)m+wxDcN}H#nhM^J$N_vv+t{yAm6GrG7Nr-L3UGnMJ?3 z>U~X{RLi*BX>osNvTpbZ*0p=nf^$WD4B(ivh5wgxXshvW!NX}2v*-{I8MFz!=muLN z-+rHS{Y;FZ|9!Ms70^Adn-p8BN|xU z#6TYzMht&8e-xNSa4Kgh;0q?Il~*Wuf^>wp`=Rq~H{C0V$@EMBD_hBPm<_8xpu#yw zu=m?g?nWR42_;4NvFumjQmB`KSdOyLzvz+o3dji;R6hBw~F~?Q>2Zln2l0c>ex?ogmGab7dZP`K6&W=LD6!`3pz?gP?~Td(hHK!HY^|(U zr9f~tySP!#+2%@Y|1Y|{II||w6%iTRgFuoxTozJY7?m9ah(9VbBLKzAW2?Z`&1~48 z@X|#lo~XiOz9Zvusj(tk9=$36Dd5v)o$`*ahMaB6tk9OYVe#vSy&T@HAX-rnQoO;d zywcH$ASMIe>h$Pqv+N)ofi*0N`6&@1vbu^ZO#$7} zvwFmAfwx9pD6nJcSgN<^U#>lioWrjk5hr_p7sFxOWgGM`}Sk&&gno>O1FF1K%2Suw`l7L8!K^qEQ{qd3W6;L$QV#ANc&0T2y z4&D27t(?_cvT;k-)FrMt*<}ftsDSKA2>2tYF$Q_k1GN+$E^WmvP^p>z1qm$i1acNb zM@7?*ahvAYQ~)!*m6PO1JhP-%0?t)iaZcfy?+t0qQo`1!#J-ZNB&M_Bp`S2jA6%}4fC@}i?l?UDaV_cLSs zOO@%OoY2i)Gk*8O|JMSz?cMZeF>ZT4MJJ9{wKO9-G6RL&Yr;-R6~$bS*R5VYRj{a0 zVoR7hIc-&@U#Xv(P*ok}6vVp)t*x)qOOtl(?OPE61Sf#UXeBep!-UG+NO$3wc3Q7( zL4GmwiGMts=-?5+(r3R^dADZ{5r-Ux;E;J>z~Ds~ob=0&k7GX3bNx;JFWFy+_Cgm0 z2lI)H<4CANhn+RpHuo*5xLk4w{K))gWnTc2nB?M(+x(Z)7k1R-&@g%dX=+$ zVSDq9FT#)JHO#6w3;4v)ssL&ZIe~Hs%Y9eS;1G;q5d_J1r!=*$q41vN4T#-cXJmv) zv)d)#Eu6p{Av(Z%9#42m83e;!&3w?2Dj9EE81$seLnB&&Y6RR!(t`?`hAiw>ew4lv zhxp1;!eJF~w%7oDUMg>+BZu+rz@0DU{jVga^R zOBr#=cOnT0^GUSro)A@>qCgoZEZViF5nH4n%U&KsZ9E@K0$#;y*t^RhvF*83aiOOr zjXQn35H%zD6`alnG-K(7sL$9OlMZ(rw zl@lxa)$!L}O8o;DLaev?cP8W}GA#2!vGHa6^BIX-E@Vxd=D3!-3H)vCmwXfG(Me{* z+=`0fiv`38ei37lgVRlhNcB18F>Rg}R)Z!4>+EkpY+EfhiVc0)b7uGzY2l%Oi`$ zUILPdSm81C(E;)+G|1ZT)QOGcI$C){mFyCh!8MnD6*SWJr0^n1+W$>I$5ggZ+NkgH z?mNV}_ur`S5$GDC35~$+fRfzlAt;Tt+ujBs&sN+C)b%i3OgWz3{(U(r8~r|q z9OH{tRFS@7S@ILB_*BeeE;P_q~zz(!TfeIal{;SQQtEwulz*8N{$(c8c>cUIkebjR zGQuRHJg-{Hn9eyoAbLKOJNaDGxg#(5r4PhiFk8XE+~w8BkeSPjy(K zs=2xrjt2D_KV7{4*}b|Z**ipn@`%<2$rLHJ^wD_t5GNllIjY9P&O_`hf;zv%jx%Hk z5*k|20sW&(p13uQ4VQM zj*|L$u55F6F~$TKixl-iSw5t7#VD4dy}(7xzq^4mf&&`U1NX*$2m=;=VGXg9meO0m*bytN}_Pes$H z=O|S8=RkCroFFFJfe-dy`~RN%FF`$7!o}8oq1A^kgk5sNe$;j2|!lKC7?&pz!|ZiJC`T%p0q46a)al_IHPip_L0 zXa?=yiacD32Khf-DjS-ZV9C=XkWaNZaPxfJT$0bOsWz)0j4ivOH-kviu_VT{>2bOO zw!nux=vf>nDeSxCb!Bp_!xYCPpW8=-{1)#vG9zhg&3Le0h4xcOq&`-4$^8iC!u!oL zG@X~nkBOzt% zV3fwN{+3|7a3@wRNsK1Dgj0Y}0Hkt7A%>vzy9dXEgRFC!R$0W^AO%j?Rsj2lxvDc+ zyzGe^!ovXjcv%sd{!r}UU9PKx47?om7?u?1_}lGY__ez(=rSCHA~me<9TM;wB_@cl z`xXxBCxcxxtdMPYGQg3p!kH^SB&bH_{GQR8!%qB!w)gnC${*W zE4qjii=!Yq%3h+#LC95E=a({~A9uF|G5WV_lxAxkev$``$vDpFIQT(D~FKt@6jqVr*&nL4>xv)Em z3tU@=AH|(gfJcUJlfyZD&I9$t1bEIY>CoMo{H+LtnL|7G>tXCdBHAq)s~e$Gw&$+% z0eaOjBeyEN_97>Ot@5ppu$zOE8%u%78*72n?1SN{_2QgHn8bzkh$-DxNHpJ}&5)t_ zFcJ^`w&{=8GbTe%WTLXMIh;dnCnR{b-7JVa`KiGDe9=J+u1R_9OhVMdB1&`Ug&}g5_xkOftdhprzGzY)fg@M z-8B`JzlmVqjl3AyL19{~_&@@}p36 zZ}IEen|p&I#NTV6*W_^SSWR@4!cIwX!|pcNA)f1^w%U90=Z&C6WBs=W#eT-#SgPZ8 zX`Sc~%d?DxrFceL^9eIMUrA$+gLUD;Z|4&7TrO_C0ICdUmV|ya`nt-W(Jqq4$16`# zUqxSrotM0i_?$dxBb}%ZUsV_Lp(dn-kuf8`Ykj?Hkmfe4YWkAQmYLj2bmN)Rsr<`C zNDa1}C-0-5unMiMz4({&L^%2aVB_Fk0@M;zqSv&5cOrBobWz#gO}bK@ z>?S9HMS&sIpvoq)B7s+3bdHhZ7Uvm(wa|zOvcm!cDhBOkG0z-%3{ua%MpY~dSkUSI ztN`G)$ew5k?{=HhWq`}jobc2&eSuiXO`6pkHp`Z&8~XaYTX2%U;Z<_UoPQ+kz-$+*lGB`RKZ8_F-R&UBsC7+bro z_8jl0*Si>E@V|(`tL7i0)&EKm+3BOPOf%ZT*`Bz`OaYgeiPm1bO%?yZ|0&C{%ZK|G zh9wJV_@+Y`xoxbU`Lt=T^QRE?p4!34!v|~A^91!R**m)%JiNuZI&W#~rdsJO%ua`HVzfoQbGfNGT#p> zBi;IDPl}cypxN?Oxj4?wDmbb+-yylyS!td($9LYUFMhV=)ch6hO8HSV2D^B&r*k1B zt`bw7vxxfUL#b2nwZ4xL@jeM&JDA~8o;^C$ZiEwSM-;js)X zd;?>VBHdDIAC0f$aNQq>#Fj144|@VZzG#m$H^eMR=3hz7x#`>xm4j$f@Jd{ePcOcz zlMAEt339*ITkMADGtZ#mCk!1N)|$w3MK>Fxe)Y^G+3x<6Qzr?%Zrei^?aIyf_1L1- zWfw>a5mViLNr?Qq6LZ00f^|K_o;dK0txz5B#6?>8%RyHPLmspAad0nNV{^(g&}f9r z$IO=^Mwvwi*xCC2b!}+{#hyWO*#}b8?^^h6@bVpJ6)n?6?5T`N3Bp7uhx$TmtJdcI zJ^yJ#pLKVudm|prgJCv2UGx^-;zH-bL?wg2)Ql;Ofa&lBkrF;o(3wY)Fg2x5@HNKR z#K*3TD8n&`GL0G5D$9g%&jN|Kg3vyr`$!lo|+^u^ax$44d@JSlO*x7hb+57 z#Cqf1`mEzs)HIHO-eWK_@S(0`@Sy^DA2P|QQ>lYEd~hBzOt`^6%q3n!1qfn?@!%DZ zZ~{~^Jpn;lPWNdEVTkWvbK)L_^0{gy{5~1Jtc{##^3PV z|C#@$39KU}HDlAlJF%ZDqBNa#CQSWeV|dloIQXQDKftD>Mm3_`AatT|^PM54AFvWT zOqC1j2?=1&;F}H`*2`spNLr2B8i^Wd!h;4-cp2mWT_ZXc=8clgS_;K3W&wSj;;rM_ zH7M7Kcuv(ZPOq|+(d2YnRU!}WW@|q7tY=ruJNP>PG|n@)y&}q--vnA(S_$lIHpLcM z;U=vvK~1pf01onA_I$b>QhHcVsz#YR+d+9zGt&SUU}BwOM{HL1Oh_h$ZbdFS{hj3k z<-Va?i@azvwOpf7&EOwWnNQdlYs-B|#hyBIc2*3!9oU5O@CgLqHeSk-&s8L1xe^l> z=0s1hRC-3hq~WrPzqff7{!nBw=$d8i3`yp-cYfK@EJ?kSjXo<6KQ;V%Nuv!hOOe`o zsZ+*}gOHs<2esXt(LzJRx{J*(bUT9vLtu63iN$=1D@J1kOo6j^$zg^0<&y%f4Yd!f zL325VU^Qi&-3n=mlIL^0Q9)yX-Qot)C;aFkB2z@C8?KMTD}pwW0E7XFRnY3V2D)n9 z`OobcJhw5cXx;>21YL8gx}J!r)Y zE&?g=nDd>8={+aIiPRp9;S z8S-CSD|aQQ1176X7Aa{x!T(3oSw2MBeP4fOU>G`wPU-HJQb4*<8tG2yZjeU0n*j_O z1f)|M8M;GSO1hu%{{EhS;F>pQ&fa^i&)SEjKeu0-0`+)w0rTrRWRIMzKcAqzEU!*i zEJRzHu5=eWqw~9Yokr3lwrf7KXFa&}0Lc<1q~}a4!29~Km*EN<@KXlUlzuHKg7DjI-!!E3hQ$`PA3QGan{O|GF*~bTPec#Gux0S2B5!5O&86WA+^n(xSPE*u7yZeuAtHITiCi)+;1hE9h+?LDL|NLCYL%@=@h+)`QpQRW*HQ9X2h7A zU^59^H77v+GB0IvLzQSRu#l{)XhKZ7vv0-uz{@sCJ10;;ofFZA&#Dw+KE)>bHDJymzAdsNTUqcyj% z@H<~%0Jh~kq=s)nk~p> zd!4KF6E0FQ%?qKP6younH`F*A)=O6}-`u3tWFjvTNDY5`wsOPvd3xaP2-wA#Z@Dt?y`G%7}wtaRr+q*|i!to=2-|0EkF=sg->aL`nM0g)c3L~2F-$<4 zoR_Enr;e~c3@7L+9^!KCmg8#LmlxOOj~W9Ydrj2rHt4W$<4siE(Tam3apReVIsCcc z{;hlUE$-$}!#{E7ttne_zroJusp`X~JdvCbtVFfV_?4(n1+UY>Q!DJfG@0v7WdlyZ zHU^EYeLXm!h?V=qjeNO+?yUMpRq6+HU1)3!Qc1~$G5F6{SD7|AGOr89irrLsRZ-m} zT%Q?0e1~LFuT#xF{Bw^!@NW6t?{m0%RTAjvJNqm4JU}Tkl9KSGjP=1m2(K;W^krko zunuI%9iR$PW+BjqNU$K~D!O_r=arpg{Pv^dFQdWJDG;&xrZy$VAal`F#5Z9}iv0WK z+T_*i0q+o7>y5^?E6fQ^L5Zy&AT69OfC54fYhr=C)X! z6Zt0HrdCNa~?;*EP&1dl96YWlLbrfOIs1(6@i>dem_s# zWqc^J`c!GOlj8S%C=}qWX<{sgM8x3`feVTVP5fq%U}|I0Ge5Vqi8()jYN`v!1{k!S z6))X(;E6rl2Wm!Sa zSV@utRTMZUsycQvksQ-;V~v>jrW+&K>dKL=IfRcJ*cycTd@ZiFRV(CWV&dMTqRkb> zfIOK6z{gh1;$VaNQ;7RgJ+Ect_f1ZEE1;A$`Z3HtpRc`Xt%?R;<%+lwHHzln(dRNE z{_o@Jm@&7r`6Y`^^)f0-u`lfel!%ndChII%{*CzB1)(Qf{ok85qlwqLe*Vlf?>6i< zg%eFrH3c_>2veY%f`&u@gI5U$Fu+{COiWdfs7MjFn7hYtF%(?_o9d{4ha+mZY7mab zzdVn{bzIwpMjV{TYk;vX(8{vc1LpqC|4F(=+xln<;P)blgoM!m-%2W>uGS-qkQEDb zw344rl$Ym_Op42W=yV9^M5CB~WF!qb7+uD-nR(uoGETgifd14VdB8@YFIIL)Jo_P2 zc7Zu#F;^fR7LL9n`px`q2L$%Dr5*snKo78(#+8&cEd}g=ztv&qu=RL;N9_-?vT3f+Z2$K0vM2ymd;8pxX{tEXN!s2zx9@Eu`CnKorqV4cfTI%n zG!tWav*{>g8tBMT%52x1|8L%3xkc@GO383-4f;72!L`3B4RAy&WC=V{!QD;5!cN#) zyi(f`GjSd|LaUtA0T&@FHdR^v@S(a~q3kkpuKh+gkYr zcRsXWTm7VWDGAK$kNTE=avXh?w?J;;3T}}~Tx1;`U#5B=v9kw3Ozgz8#{IjpBl!vE z(2s9bHT+Lo$0_Qw;K4fw43;3IG#c`>&dF_(*CNp2Dy&RV1%YaoAInU)XzEqcRbj;&Z>Hp2a4dCb~8uMkIQ`-Tteh5~_O#7pwa9j^GqbO8r+*J7s1uKtasYhd} z63J#T6#-R{l-~F5e}-dW+3qJctK@~g2)g5|;Ey(Y_^@ZX|q@{F1>%mJ{~JOM&n6vizaYM{>4A`_2e7JN)V-a&{S!#6EEaL^Tq}iaO7nE+_08hia@-_ zRyL*Z`i1z{r=QiP3uB!hWmNM1UHN?aKiTA2l(vu`gQ~LrcL)aRMcRUzA?7LYZY#U& zob~=KH$j^&0Ul~X(Eh-i(f3|-_yUb(hvr);&4=AgwH|XoWo4_plB#JE{eA(bqH@eN z4HpO=##>VW@n&rHh8GN@`^OK?=acR4!^>=ap4q7C0z1%w+a z{z0`H4?P#?U(=&Lm!*#>7MsEQ&STPO&UyB*Vq*Fn_o1|l8_e25fax2oVsxF0GFJL( z*1hv4@~((4uGf0N6#?EXd zB*`~Vfo#k_(%hzV7dZT4(Czx2k-}1>znoi*Bpt-2LCTzh^sHhKuhxwwu`Zx6rI zBe@d`hD4W;Y&G!^0Ui*x-TtfP=RH3X5_Tsu-`DHCdFN;QWl9LGRwhBCZusn7cbhFR z6X@XC`)17HPs1%BT_mcKGxnnx$aD6k$!y3(-_}ik#L7*Mfsm<>InwXxRttpg^ZeLN ze0s!W+`IquLP+7UFg-~Y&^GJFeyUeTqb}@!!`|@}Z~bdcQnPh+z5`b%a1%p*?z`|m z-_{DdLVKOfjdb;ccsQc+FaDGvs{SK}Dv27?YOYBGp9PY-ArFF8s>q=^+o*#RIRBQiagP8`N=6{oKG^y~mLsy7p$6gHS#33JW|p;O}P9F>pocUxqttxSulFCiJ50tGT$OZ`Pi& zk@z~j`cQGH6a(bOkJ);9DO5;tV8Wd*p{^fe6nU`}I5xwOeOw{>Mo3&(J?_9+>6G1= z+KSQ&$oDcUWd^8)ZFr~LSrpJ2E`n+YsCQ6IHH-joRhyIX35&c)F~qmL%(2K(euh7U zcUD&`ZOj^E6f+tjCr?~pn>~l{Wln=EP)7Yk^r%!dQPzP$Z~<&>YO1U*rRt->kX~!0 zYc8jXLByo@#u_#&`sUpaJlU{o6lJ6G%dQJfxUZzTet_1_8jEyJh^etTJXdIp4SDph z*i3FH0U$X)3df^itJ-<>qrg}^gKcV2Et>!S1~I~_cV1s!|7fmHH@WivS%C2O7iQ9c zF;0>lhown%4V3K_uf$Y&=$QpsPT=iYahV^uEi>hn>&~Cz*#ns;8B`7Z#Ics+Wy0@# z)-!r*lgv$2VtQmQmh1`HJ64d;_Z)dysq)iSxN7A}qyA;kD{7JG6UhhY9Vh0C=EVz| zoxf6cz-r~#zjpj;`@44CC^Y(v3^7=oRj<~f-Z2B{deJ*1@Aol45vy*}&G%0_8q7DA zXazxocBT4<0G0&;VD7YB7l29oFcYN#(`5D@>$0-Nw+N|Rn>P$)y2SETRwr~G^N=@f z<5Ybp5aLZ~mRQ;?Cz4d!DVL#frl7B!y)0TN-))yynI+dEhT&K)vE_%8mV*L@QU5B_ zxAD8wU`aDYCn77%eXOegc^MC&{5|8b7H~T1Gn}9kw^rGQuFkS;8tbNxwP%$A+RPl` z4`8Hb+wp=0rY`BO3xY#g@7*|2Vew$6*>$#07d!Kb^0Nf6$*iA6m)We|uLt^MuarB7^Xhfeov2CIj_)(v0igY5CBUW4U1m_lMD zsvZeGScTu%__0jWP1L5V(IQYHF**d}^xVhYou7^fQLC0la=vdt62;=-yLWiPD5Ghl z%3pNVGBe$pWEsolFnVcI5FH0=6i~Md(!Bejs^9A1o|fG3Mb6uLs{NN4T>0hh8qA8 zLb3}2W^2SnGh z5Rz|67~qjvHE_r8)EOXxA5A;7xgKJiD?T#3jLT}(t%WtI523XDUJQLJ-X1JnMxI&WXTi} z)6KJM6}3D05&?tMY@8{y)t%EYy4`A)C)wIZWqd?Z#d-K#vwS0rqL%lXol5Q~nXtmv zHc#K11<~vW-aQ<8Kitmoh;4=<87UBOA5tRW4W?nyB&!UBBh8rtYSp)YNd6Sh=;ds> z+BrwxGOr&&K}?hRe8euhIPYaR-!tdfjQt1@vD+1TEw6{ds!5}YFBx7a0M4(R03rP> zsSolvz5Qe1sSjS zRIm?x;v?6mMQFp5pWJ^Au`mAoNl)c%!k6!B=NFwvrc~+zFAt>7V{-~6Rue`bexAP$ z>;GoCd`uJmHzCedvXr@)T3}Wmi5Z&VVX%C%wRdYZ*NMKp6?-#LAnj>EG8FlS-eB=p zt&@0i7AALDw6LH=^nHOh@T8*?XNyyPC(T|m^10pQ5 z*w>_yF)DI@-kd=`uA{E;cBYXkrUOlzALatuV(*Yy)Q1>}((ksq$K|&HnC*c#m|ggw z?>wiY9|(d=4^0p2*eT?zOlI-sLf#C&D-RJ>3H)oaiaMpY9J>6)nQ`7d2csf&rLd6t z@moVf5IVA39j)jdW-3ypl*ptC>0<7?A5WNCdMGIBF`)$%U-Ya;4>dUrYb0B{rK*3$ z0}}MmQ~3r}fOpKes!Pgp34Cnj5?!ievF~WmXig1pfX&h_)x%nQ= zLDC-`yf%dVhL(X8M>h$1GvR{Y{!mP^D}j>f^qaF};@R2ePCPDX#a<%Z^1DBNwEKX_ zP*y#T39T5dY?X)#0{^Mf8rebQ?EHXHYHARd*fO~M?3}ds@%+q8@Sp900dDWV^x?QR z#to=v?qrP|9GRVgNSj02m2}h;RJ|F``+;qDSDtZd%A#vV!`=1S#k>!cm&z%gj3zi8 z1GN)h^txC_+u>Dac4q}+tQJf&Uy*;ZL;Wu~mDGt@3gpc0akW)^C+qUU#BfNHKp-LYhXI8|si(EI2;B|A*nIN?_H5FOHYPZT^vf7!!x z$iinlQIM!;lEd375{-o}1BpayHJ%HAvHNSv?MFsEwFE12I1y@e_})&AffIeOyCBQR zqfDM%HxO>VhZa$}vELKHwsOmrw5lUHcTwhy@OzMSy8zFOy?sja*#P*bMKW$N3C%g8 zbXe4b%^%QJcXQ2uxG|wStUCxAbj=rCC*p2;f*DS?dZx(8fFZxRZvLPM&4Mm+PJ^UN+gf}EwDAg%XwpEJ$VX4y2&v<%pu z+#j)QsuePhmp%SqJ{<;3n4Ux%-*6fyv~UyDp$1#$Vh;ba5H7B;H|^gCp~xlVvhiqZ zWxZK`*q4-o`E>l(P$KoRpo5B)2@Fw37rgDTk-c`(&FVwl%#JQ4PM%18zAP(q*{`LU9aMROFQo~Z`&#N9Ye_uw-fVuk9B6o z`eWuj268de4AI(n4-y zkPjTE?pi36)bGP|RX~~_V+uVeOuhsSu2f?dct}O?)?fM-^J!sJV0OqK5<+}|+sbAE zQf&v)FR(BU-czFP zf)oc#(#Z-J7pczD!i}nEXeQ9JmL*t)w1pXYGe4Yl@kIn2`N1orf`2d7U-(TE-@Pn- zm)KQWaMd4Dwgy{VUXH|@i-LO&%-|p{iUAa~AIliuFmgLVJI2`bFq1lk=LN<=Jn&|E z*;2}${$!lxh-i$&6;j*zI36ZWV#bX05(`U;e_T9|$_WQDdQ@U=Z#zzBY{wHG^V`%{ z3-hayiCll)1kiSa{t#}lzQ|&crsT2RhkV2~rewh>0j@J}2OebixECsqd(Gstm;4DD zYOn|1voLT!;$&3Y?FuxW2}`ut0H4gZ;wzN;ilFNdpz(Yw&ikN0gt=mp>lPr9STqx3 zkd2aXp9PVlyF31b_;&&|iI#8lV>Io;v#V!%?(9p!|AR{wAp9)iQn7A2(?|tBC<_j! z@qm?c??J^-A%qCV2!(Br>;BNqB+n zI=8{8HoDCo09?*84kjyIXM>~z#4z;LzEJ(h-|efY=n z^U7CMgA&B3bLctASWx9|ykbf`)TuDoE?C_4g;JWtzsB&`$b_39^ zX!_UQ*2EyH{Z>ZeoRO@0rO--bT--7&jWVd1+PGd%`9Ec<9w?-^vAm9YMIotm05v-k zo>EasQbo6H^0T*)d*kxd6$oWyR7X&#i1GEO?$hWh0XfE*hk`9lPs1{@Z>y zCKE;GmQ$GHoLa7=M47B+A>*}YpTY15AZm4&etqLk)%0 zAqT2NiAO4IihU0A+!^=jlC6?2xYY{U6e&893NdK@>gx=g#TWi8U!chTlLCkq^VLb& zA1g|W*)Y2U8vZoPQw`2f#rE`v>*-JAMmlX${`N%O@ z;izi<^48>Y*sDGPJf2QlRfe-$!jaRnDphaOw%j3#j*HXS`L=6jMmHZJJ*<~GaS(Pz z!fo~3u_<1)qViqPe{N-cdAYl|-cqo^bALgh>yxJZ1m0Ax$PfP50Y&lC&B$7exP1ho zYE7^p=1DCXR#a;nDf77qSSwQ(*SPm*I0u25RO~_r?(RSRoGxGSM~Rg#^mWlMZ0)j~`F)~4PplJZ z9|%xZu3%$~-n<85Q@@OL4tNIN=;LzkE3n^Opp@|&!RRdC9O%SM$Y)kGzfa zR@p#6lL;mf8yjZwg&d!6Nq4u@OxbaopZGMqtN2dzVIk6^xwf$dnLq!Sx+mzzi3o*g zz$$nc)1!;HELgN0Ng_v3FufnH)|nVZ9SDhd?V5@|)w}poBI>wNGRm9x2mvrIl>K=^ zJ@?~ODi(%LWbwsf#jC708X?@vY$*DRe`9OhV6L0hFVNcHO$4I8cw!>z3qpa^#KIbg zM|**+i50)M*o>BykTB&`egg5fUP6?ZV@U1uPqabQ&X0|+p(LiDTxH)T+D&m z(`w9Xj7$NeUF|FtN+hn(bsfeG1l8Dlo=@z$vuvW5^Y#65WO`1I&9uwCLT2F=+~I&UvGYUiR!WpUE(6cOt`--Q4ML`!~x)csV^jgGd>jkr44SY3&WG-sKfDkCi14UTXW&|H)TOWr@Y;eL{ro}k~ydSV|)A>!MCtei77 za+_-&=car;>?I;M@OvKC^NDSn4$f!AW4%h8nxFde8-sw zbInE!{2yDwrov1=|DDh{rzXdpaJ*BRM>2TFx5f)RZE95~Q_{vmeQ)?aO0vzBLmytr zLe1>3>V^5<=QqQ}1(tE=-8x9h5QL#6Wxotuuea$ytVLg?@;?s}i`v+To@%RYabt11 znYTvd)Lx-N%n@VkeygO$EG$(sNwc{t6M?WN{)3!2AgZa1;XUW-ON%J`BDnsu$}GPJ z1}44sXwYvd$cWix0(SlT@DU@b8jYS#)c7U2`qGsC;y(M0#HwEqS4ZHr^t{)NaNV)6 z&7~~fnGfTH2KQk|4yd3T)Z7iQo0sx5)svqP7}7}zR4dM3)utVR}lG3zR zin`w4zfk9_E|!#r6u1+46^bvFo_q}x7X3(3nCwcKo;Ouor5cdLbu-`o9kTX(mP0~8 z#wDSI>R{(Q=v-wK@6*^AjQa^Fxd7+UqN%5%hc^`A_b&>COg43ue4+_{Vf4{Pi7#tQ z8%I8KL|&WcdP6X%=LA7S?KHi6m|)AGBV@Z;y$wx-ykCj5UR?^?I2$^2(_{lrQbBf@ zfDum!9=x)kS+T#N5RWlH&rpD%5zMzjgEgRyZ*?1uc0nx?_o=>Jeom;+=M29uc}5n6Sd(^T zI<6|7Tm!yrsDJbuLqgDbDU2)N+Sp;u4L4;W*X@FVpEW>p>~#{-m_w{S0f9H;MCN|z zEm__+6e!qPffXnsbd#njJSP4fiAlv2gx^BQ4g?k-IK(``u(-Qn#e7&YI1Mi zJa*TJvCAuHiv-(2A3$du2wy`f9Rv6WOFW9eu;T3Q6wvb99re8{KAwdx58KW^t-xPAI<94?D8ZxiD5l(@fLr7 zT5CSX;(vWSH|ghDAp_7`SPqw5ZJ_#+O%^L!6#0RVXC(IVY1%rL9{u|((EN6|!?wKI zy^Hb@w>SezbDcAQWkd|}_J$#I!!Yb%iA`w@m~xV}JIjE7bFmq5GoLCU42V;ZrK> z$uyPbG+!8$d6oJvoMWO>uXvonZ zONYB$T3T_9zpT{!YdZafQ-F8h>iUNycSAX^HmGawaAkkDuAUG zs5?yRRnHDD%_dO9ktXb5Uw2Q%C5A&@Q})3w`{l|?Bk4QmLY!GkHj2b-im|7%Ll3j& z6Sdv4;Yx|0C$#ltAS#afKdFYZ+EZ)4t(BC=+xcN^N~15k6_Qw9A?~I6FO>v_f6z@^63M@S|LE_+e6$4?PXLofIywR&3l9bbjx> z)t*N}O74}As4Fy25<|QBy~!k1V=zg?1cgZb!DE5`TN-^x5H^QIo6_ zE_3eQ{$R%Q8EKr_?}jF(N#8?F{;#CSXWQn`Fh>=ym6rCwHKbmq_ zWh#$Kh%q)d_L{wUh-Ok`PMm8piWI{-IV|I@57L=s0dk1|niO^4xx@TIZxk|O(If{k zJ7yOU<8ee?g$LygNlO)^1lq^c`h4+sbH0YZrVJvZcmYT=VYxO8=#>dZ?9 zb`YIpWaRKM^Jxgh($ZnAEu2>Vh59K{+v649#brE=x<5b{`$2&7F16>Ac|h~->UWpD zpDp-+RsEEK&XzM2hXWgFGsULi=}w?kVM}U|MkPeG+f}s+RhcqAhOoyGv&KJ!5HAZ6*UtSP;`6ID6Eb2$g&8FbeK0ybZpS!&S*Iv=r4EBA}C-T;q-EZOn{ zoVf<-=R(8^rSNWyvpqw&t^M-Kq2qbvJ(7XDvJOk0U->2D8K!O~J0IRpc6d{^dH0A6 zXVs6u0c@NKEZjQRuPG6%ZC3Z2fqF!ajvl0fBet^qr&Qgl(j42P>pX?PX7Aw5NOIZ7 za!uk#`4{cQ{KK#uMBFNHVSG0_-|c4j`uM-V)yA*dLm_!}?OGaI+;qz^)2SPnRNRq> zM)#d^tT|z=NtC6AA4jUf^!00KNR)pEbLly<0tirx&*;Mkt#O$O5`NI|$Z^%&c&s<1yuc|)bpQV*@*{Cygg zl&akVg@$kXQS{Nns#yvZfSz}1L2{_SqkNb1Hy(ZO$4l@>%Ms3xa~6DR_Hy8|Vfdp& zlwIk4g$2@K+*`_uiy;B*i`~p8-vDgP%a|)`{@^d1;=Pw?Q2vq*b$YB^r|*f1S=8u@ zhey8>ZQ%R?%h9+5Zn=nj`xZ9j&MgNx?G^Gu+;C~~5k|Y%YFu!@%d(6(_ZA15xFBIS zE5J+7Tp7Wf>iLS8p91Nrm z)a_)h#hDUct1-`m;@{PO8h7-a^axV;B4%bxXOcl0vhhS?mP>?p^7RTz>Bz=dD2{wb zpt-rbHN4v$5_)4$bA+3i9n-ku@-3u6rE7D6Kj7+pR)>*FlP4&tem zzd*#Q`#Gk8)Di(?L&_+QZ0~3ha2C!YpAuO@|Iq(u0jg2My_}XmMuIVDN`)FpH23z8 zdgqRP0TXS11;^i$xJS4|&yqLwXFGP6)8@Zm?~3A}obi9tw|SX;v>Q4?7nMA5Ki_tV z+u<{J&LBQ$=9jYfbb&I>VH>sUV~J_3+Dn9t%&OakrOLD@En=SoQsD+L^Si*DGr3(0 z{VSqXfRljjWNQ9zz){ieT(QXGm#TM#QeE`J1GC+V=-T^$f8A{%C-{`PP|f3KCD)~O zL=clYnoW)r4Yy@KFcub^Cnb`Ep&j~e85Z-p?5d?o=skC;5$>-HALSM9p;xZmq?dm5 zTC1tsW3_eN7v&OgPQ+|9HNTh^PZ|611Ae-v66rX8n`a%G@Z7no(2okWg-pO_UgvyM z|EMaF!{pCmjd(k3ojn4bVxvQ<^TT}aWJ>6j-VEj6My{Moq%IiCYtSS2G z*Z9G+C84j~a;>7D;`&(!baRlSHAalJ1F7qJTACa|tu4U?8s&gy0wjmK8TVFP9vtqF zzb1F){S9nRNRoC5FHBJ$FQ3Y?MRA9JF$2C;LIdq*(A_QVl+BKhJ)A%Z_ z@I-ae6+jsf02kChS8OHm`R~l&q$IcgmC?$k;OPAxYhN-Cv&OMKbs9eU%wAdcu)6g{ zOCpGK@te- zHeV^Y^b@nSJ%pLJR)najs*#dp5eg2o{Q)_{NW(@`A2*zXkG9W2r4nW#L#aSwDXlf_ zB7E`Gg_EM>+i`^yb*ap!i4Z;Ls9;{?S#(gajo{}{A2-H#viDnyY%4dDK;QN%S1ECM zDhH`1?wgcZ4^_noB*PXs1tTDH)=fW3h5TC+P4qHaTI3zS#KQ(*MWuoi%lgk>=kraM zB#h@qbiK|OXQKDmX_iMBItVjuo3IM zwSr{1)(=Nxf4I!~WHX*BSR%+>d1}E(iRm>O-pE$3#q;qf*@K96v6EdefPWYmfPV&c4-Tq#Cp);_8Wdxtk`H z6!Hsg`S$nWUOTtgcX=9osdfmv!hibeXBFk&r&CIPF1vY>(nYw+-$umP^@AYqR-V}8 zXQxfa?RbUVJO#etpmk4z2i$l5h}Qp#W?x0{eF2PgAR8h=?5HFfVT(tT0^ ziJY`Gadrl~tXN)$vUsNyZOW_r?8d$28oXMII^;i=Za!j9J@z+uD>!D)8w6!^z2n6m zUHzE(ruu*!q94mW$v-3yDlYqfyH%wwlo`$?Bv_tZD4lE>NO}WrAKb}5<@dD}ypP!N zSUJU~qG3%eU*cC!Gwm@0VKK{B)<=6JDUx(yYSD*O)9Zo=OZ;O}WgwD-%03_d5^dCr zaCnL9GF^fp4iV%pB)r?5(4lwSBNLNeQ)r@=D)7Q^!O2hg?+Sz5>Iie`F?Cc!iqwcA z>wX1E!_B6Uzwc9N4YaLxxO30KRvh6-IG7$a#W(o=l}^daiq zKM&OJ9pX zGn1dSG*lmDi=09zX@jm$UBI}DeA&+(z<+IuE1G*(3A=_?*bajdPtapz@$pUS_FoC( zfZc$H-tR%-V@qD*n>l#Prfj!)3Ia7kpEER?vzf8-N>@}I6*(*R{cEJLF%y$n3LW&Z z`7hO}*aNc6^cT_ zv=#L@H$}@Hyop*0FD+=fs>CcXwUM6Q4eXPY(kHb?zh?vmj9QOK6t;9`8U1&Xi*KZkY=QbbQwa#6Y zxHwgW%$Awj-0mjPQR6AFV`&F`@%57MBcO$jDAV%t&6)XI0M#UMq^F7`oB$stsshU| zV}VJ`V3HorjFKzoc*n39bond3e#@f+F4Y1`=6g(qbPsvM{%B0>wd#UQN}F1p=4pegSkiyQQhhRbdWxL$y(af>3&``2Xv960H#srNfFkB8xxT?^6#1OFo;h6~ z6rj5Bhdb^&A}mb5{Q@i*iPZL>hs!gu{vd6c2OZVlww%aGmj1P^A8b36lSDWUoCob_ z$-?mFpxU$i$60qT!RNL}T5*J?&Bg`t>+o3OVm2*a7T z5jsK9PyMsfOrOSxVJH?M|D0WK|MBBUBNd_>352WXvayFJrPxrV8=@?CPnc1Bw&^-O zR*(q(9*Elb%@Nf{<5i){?>^FpMNwLaB(-j|!Ny|&OZIK_8mf0!{y(&NG5#rvXLh=D{S z6(TKaTck-wF)5G4b5KYDp>kOVr+q36CYgB!yVSEz(vo@?L}Yn)7r7hW#XCrQJ>=&u z?((^pBkKb0Ss|HGr)g`D8hJIguYn=mQAy={<8MlRqAG0p?Odkl){`|Hya3qgQfC?-;AN@tmxcW6Z9n#lAuDc-3E`Mc ztirz<=74Z-fLD}au|I-tM13c)(*URaSeG{|9zumbI;x<65h9z#CJo2rG!`X@j|r+6 zB&M3Hf|jE$#s_p+?MN}lpdZc*Qwgr=HN`%SXWc~?+%KpAtnt@42)L>>H)zG8g)ksK z_vde!yz+kcT}aPkwL^E6xixpzk2hPJ-XNP;;#a4c1|wrlw}HX=`51_ounOM1Uz4|O zH(HtwK`bqhv$1)Px-WvJi6GGCTh-^w!~C;lxfYIW`aW36Bed&)y1-<&;0<@a1u zd4rf#3uHM@KvvmA`Y^g}#uY`pvpBmj*Qu?M7(KB!Ae zdHDP=@tgP0S5e-Nd5@L=go)s&lu_7HM1H2-hU#8O(F}XFChUVo(A5L}0xuwb`i7KB z@gptNpQ7*!pRotG9>fs|R&~&Q4#@8x9tu^jBqV_In+)p&bx`SQ;5ZBoO=MPS>Jcnft3R<-@Is{-8m`GcyHqxCU*xeePCeAQHZkWQxLrWxxZPfWs2ro-mUG z_HWd_l-KG*%jwF`1N$RxT;Jq$tO)=n-rgWJiAG9m-zY`Q zOU=h?Bnq*4#Njz5Q_ag>Z7wLN?C&({#I`puz$LD`c&*oeOM~d zVVvtMhyNdrL>OTbivD$k=ih##1P2!f(949YRA3QeZ(S0iHhs88?7EKMcnEnUIXskZ zt;Iu(Lod=5#|~VD_k9q_=OX(p#)faYXk1iW0YVa=`pqZWBcHFSgW~e;v0vnjw0y|j zFdIRZnom$f+F94F5i21>p|@&wfzBl*zI|J!p11uM{6}OmEa=(mdi~Ptif(c*;59lw zmwxbgnmsPDLPgI-s5pu-NE&j7UZW)MQYXZ}{vOrv&Z5WMd@Q2#oLvfMW)+*AfGxp; z92Y>>rlyt>g$TceLT=nWxh$EY{<4UwlLXHxzI~qLHz)2m_#TjA~_W=a{{Q~Y;p==LMz>s zCA*U*V4HETW2AA^GuvTuSN2^IjO2h^jme;gK5=0_0wBp5Qx&WM>|F(4*SnlmKP!YL zTE99hG2Y3`Q@QDrG>Da#DFGHy-Yk=J4eB$6g5b`vH7O3 zl_==c6(zb$_l?WHJab}leqlJ-iG1>F7o?hFTQ*GvxWM}b<#$!&iX-_++Ed`$EFy!i z_*LRds(ACN?XtF&y{CpwTXJtjrrdl|KzrlUo975)Fy&)L@M-zlN*D)3%|tAx(~~g= z)DOrUu@7$81(_Oy1rg-!j}xka?;Vezx`lnMISl6;)PDfm^t8~+e_^RAcO4cB4Fdnq zM`$mSl>3yJ`gXGa^}c*#h{U9LK-eDn)I}Fu;3I?9zvEMvT`*z(ueHfLe#MRe*OJTR zt$20%c_>~WCwq8ges?nBF|iUgBBTFs3o;Hu>|?C1_Qz3cZy+T`iOLfj#++kn>Zj|n zzl`|^u2R96ZRqMC8JKSTZEZRhaG5@~T^lgx`mnIJ9Ivywh_O}>X&IhsV_XZsa9$0! zP~rH0JiS$1+kevpn&1uvifggrE=7a1xDzDrU<#K#_F0|s*VZD-OCN+HjP@9Ip8kgXDiQ8Qc57@L0i@LNgBWJB5O>`H zIU=+2NvSdDzeYToFgu$y=9NrK1Ib=(h1QV9Fw_(*`M|MR47c0Fzko{EXR zzXK+#!_5X4?Z=MLk~q))BApTUdD7)n0p$P^F7t+1ZVoQwhKd81d4W?!X$hxjY4r(R zs-uv!QG=x*rk`bY6dLPupOk{(SRJTIoK9NfgmoC8-h1i%*x~8l;1*~@B`zu+bteAI zIEjNr*Fv<{iU3mo&wmgw4ut6h!?Ox6wgc`S1am*Cs$OVD;~|tQ(K$X`ozczm;Ytb5 zz(bXEI@*)*jYRb#0*cgKm?F2vm#$3;ll0)3nIw#SsnW`dm|sOtJ&QT_i>wt;J6;do zz-bMKU4^g9B2~iZnYujTaM9>@!0d$FA7xbg&kCD6hi-SvhPbeyc(M3dt4Db7f=@DT zog+8$V)PGM?lr&KU(ICaPx>{sp!}Z?!?p7ED?SuKH`Hf?d%q$_Nnq*pxv$YTq1 zIc4EY3^J0mLV2=kYLzcl^37t&POu`%0zQ8+Oz%!K1RU(Epxsgb#;b{3rqcMI4HiqNokuAADGff6eO@#Qs6wI@vFN z`)yd{SiJ3LTgBO-pCy-&&!zzw3GD(QzGuI@ptGzEU-Y4kwrDO*4|V&|J{?>tXtg7?GpPzMEJ|hiI zDVMq_jaUN3sYCI8nY74Hvi^nfuB2}QTyaQn(RmFp+?HBy(_JG zDMF+zsXpZw;4USy?shLh-c+k(e4zfA1u`( zib!0byT`{iauE@wDc+5h28KyI4<-ruUD&>hH(Ts?g(;P01>*cI$Z|Ga(#;gu&PgWa zHW@OK8dida_| zq3|vavjl3>3do#ALaK-BXS2%EF!1hcOxxjt8l|HcvlV^$yPo59;RCkmzC$cUS6s=! zy{FjO34sYM&Bx3T&0uYv(IeuB4-qKg?-7mlM?pgxbMrLMl!jBtMP&^*g7eTjawaCk z&@&fT?gnh3C<;fa>9L;9NP8^Lfl58ivKZl)tJmrC>=v&`F8jrU_Aw8797?Lbv!_W} zE+O6ib7#SuzZAXsn_m4spJcl#^!Ah^!D zu*X+3&4XHT)1L(LGm+&HAB{yfW#&BL#fgDSxFrvLb*HeW;4a=4S9jl0WhXBdy0<#o zEBc?R+ga&xZm!{VCQBP$R=r@y|Mb`$1Wa?9=)vtp^-A1EgH$J?&C1Iu;fDON1y1JX z^mji##MgEiImEzmg`up=)ogdXeQmSFNxH6CRA>C76fLaS4UC5;1yTr>+T8rJr<%~& zkN+KmuN;YYbWjm@TlpATUs``WQGB88EELEG^YZF1?(rp+QC*SGT5ne%lGjC@k ztE#EZ<0XRKUl8_~IOxj$K$4}3_4_0`?-(ZyyW*+?b_LH5jeQZG#SC#zTngH4CC=@c zEEdt0t9AvN5cYP|1oo)SMoke}#J`O@GatVS*EU|W1U_uF-%-Erd}(p_X#4n2Rv5q2 zZ;-3&mAfeVqa5v*ugYp#P^$QY2HpZo@^Sa;V!R=ZmO&EMyki)LrBTIdfxhD+RB>{6EO*J?u z{}ak45=?{ggGqM;7&70YY@e#^a3$*`9J{ez zPtLiX**m^0+^e>^(@&opcu(Jidu0M?KR4mv!NjRy%A)V}2itpklD?h=`4cTvP4G)7 z?zWxZIX%7cZ90i??7eE5Q&_1w(Ww~KABqJI{%D$LhLZ94o9Ts;3rD_LtCbmpV)|7Dsu=Hx7MBNDKMMq2VRG9~L7KJeL;I!_^>oEvr(RsrXe6 zXitvz_Fb;>%V0ftNvg7sMeSb`Mz`RUlQB2%reM6s#6heWNfm@LTm2^RLfSy`05A zc{+yFMb2po&TyqJ@`6NT88nFQIMjn$CH4hrNs+BK;#ZZ<`OM*18L}krXIWEglDIUP zlC#KgN$|`n8&Q?x0eBx3RouDKk2CAzYp&SheXS~li*FSx{e5vwU0YoDOHcisV9?F$ z<~4y;O-si=HO7fmEU5j={a(6PNi3t6L5_L$pu<0< zPcY9H{q_0vX}^U(pi~QCz=O-(n|kn;TDnOWsmLDDAuB*1{mp762>Iv7y^y+SW-uCx z(5%EQsk0nv5c9VJUXtr@Jk%p~2QR$;&kK+VHd5KpMa^I~u`qj9XU4_RM4Hw16)UJa zyycRYmAUooQS1j?KpIV!1wbM~R!K}->C3?uk}N%n4bEVmG{_tu>hF)v*6%q>mnwPX z8D^dM-a{GWi+3C44;J?XvuGsUsX2aE;82Lbf=wVf@}oIn)3GSL^t_Yc$z2fPorz+0 zGKPajT$H`=2wldM6!KjoKwV_Q?8r-h2zoxr!|(%X_C|oTe3p_~w}$x0{bQy+nxU%BcQ;Ezs z3_i{OJvjF8!@4Xw;8~%>M1|IKQPkX9=MY%bptM;OzrD||7{N*74I!c!{z0%Y! zc-_YC_B1%RgB~SbalViJA~zgz<95G$6LTsI5KIfjFDN#2k8mR(%&VqtQIDwSTuGI~ zMLLLrvZ7P*#fp2e1>Q_1%)Dfu-FP=&g_G@CX-QdwJ#1AH z22T9wN`TSms}KV;`9uIT{f*&JSw$$4K{8L$QHgvHx-db&WAp5^$R@ zmwc>jPD7-sDSm<4m}+dyJmx3_E$*pk;H#ZB#Fz|1WZL@^qM{TZNsBrttZgu)TwG<{ zS5d81$8Bc}P?izjFoHANQBzEQB7Oi$6(@M+2(Y^z4Xw5`U8l*vlX0>Gx)mtDH?g%u zSAAV`5q+%ZJ%7eiU@oFW%_G|guBH+N=NnYP^B+V8rvJ5DPt`+_%Y(hM6Uk?NU&Hlh zM)vBpDu|ldy(F2A-)KC#soPJFLNp&6Kl`+Tbyt1E%!9JrPn0h|XWw`;fqhpqBLh#- zf;-m?@76loFV0jtFeR`yQE9s_S6!ZNI3=RjrEu0mp+tm$e=0f1rwovzP%}3-*1MpW zK2?{~)nAN>1qoBIDC1W$^$djhw0*pYSo#b+JatewhC(==l+?$>544cpnrnAYw^@$G z4P=?;M}Q`Ylme~oQd$7hKg-=fWDP9wt%P@lA`-PHl%{`Yj`C?K@0H-cgdDY*bP)i|LSxbMjs|7u zwrA|CAW;+<9w8UNMOO=L-_DtA85RvBX8=ATAVj#zV>8QC3;yPGp zWIqOMk=kZmU1-!Hz$=qnINxTl5`hBJOS3@7?m_xe6FSM-7TC@Qs1!J)#Osc_nssRF z`vLTqM!`c_X3&EI9NSb~upXwlQp-vN1E>$g`?!Awd$K!M1u*+jFK2J+4vLVmIWHvI zQ@f7%e~7iz$V0dM3-)=Huj)?e&AHctpK;FezFC@82CSyw=dCmn7>oEKA>LZ>7Pffww zT*x>Lb~et^xVd~lPebzWM_+BOZBiS5mk4{WU3~hrq#_!1~|^R)DgG~d^IUjCMpnyNqOyrD_$sHpVe zWMHI*v0Wip((Iv$DM0)~iSoWSH<&8L1kXC{3=&Xq94rgU{R(QwyXp4@RC8lBpn6In ztj@@UK5z#_f;R=6=Ly;HmU+wbgvJA|{HFU;XLw!?OlFa_kyca5rYq9; zX<)w4yPr7YA`w3Fc-_t!frxPD1&anjL9UvXQ!@=patV(xMZy6WfQ4N!jZ0h5#s^hx zgxb-Fo7)hWdvS^g(?bi+Z0AZ@3)4)GU7$bm-oZOf#6`=D*>0dkAt-NBA z?kL0`AIdXY=ra=Oqu-5iZ-aMK<|W?kxgq;GA}3KhXp`YYTrh+~b!p>Y&2CkmjD^Xc ztcEVKs70br{ZS@4|AiIOfhBQClo*6zxZmK&;{IOiX{q}aU0ZvUJxIjoM!0u&K^UQl znOx^JBVn|p05XOhldQJmq|%Np7yA1ZFRVm zRC`Y&)PaYpKWv0+e>o}^^W^%!uy^=BD7cv&P*Tgn!AM+|b;t%UKoqT}sRn$=YXu1b zgg#PB-Y$}?YCh!uEXBh&68J9l3dnXR+udad>)P;dtxTT3*c++$zL-do^WkX1#-Yht z5(cKJ;M-t~4Nfx})3CvYEqm<$^e`IxgUF51Anjk?JbkONYv=h(3a>`4HBr%snPT)VhPTitk6A0IdB%ilBmc*g**5!#Wxnyg%G%L zBZUYsW(xWWKQe9(KxsX5jv{3ke}IBSSLTZ{aQixyEq2_OJO=rmsl-xDXB1Pp&q#Xg z(Z=kwir{e~3*1eyaQ4Bk+2xKC?neX40(Lh*2NMA3Kw>sSVZ;q7xvYh@Bob7LBSf;REepu^n{gY^#!;gR}}NH52}9?HJq zqCm+<1|Z}B!LJU)C?9bTNk2nP&o%1per}e4{`=SVR&(v=jpWKLLqGKK>#dFGVu*AO zp^bGJdEV<2_m1mfWYt+x@|!3I6qE9XxNTxbnwWRy>hBgLrhVraYi~t+7UmbYyzcRz z6iC<1SAL6h5f}+ys%h(>1#807u%F{io(kdR=3K*IV>yBAygiTg690N-_;e_k+h2Z3 zp!30r5ee`EVcX~qwWr6M+aaxwDr%it^NzTQuxu|bk}W|oemLD!wc7o4x{)!X+v zQ$4p|W;HB*F&AC_x?IINMqa5W#EPI|4G+|M&|%vGK@)R$+Py?z7KC`Pwx!pVADWR7 zJs;q+fvemo3sG6UuZJg>a+_RZ>)YjGt+Lb)4Ss4RRUC9u!O_#O(!|P-!*f}Pw9*Z{ zTFkKWV}A_@KN4<2){d&XL?I7zLoDGoYx1tcZ1w!Jq;bDGNE`JN^J8WfC;jY8G&Au+ zi7$YbZ(MIiJ*{jt`QyZO#k$w3&_2DGHQq<=?dZ`$q;a=Hl3kUf>8_G4Vo#xih?)9{vwl(Hmx;45bgiiARN8~`+Ix4y zNTYs@=>KTtWcDzL5yE9ux7C%-6zsrEbH)g`L$o|>_zq_UHiht|(7x6)?_3`GfLq91h1a2aBlLj^EbzMhloU95U-?3*k1~0tys@7<@l5qR-e|?NJ6r8R5%uzd zApVdjHvF|i28RKTG*#@i^EIo?%xoQ{aaUauMt2Fs&i$+#T}k0_+`1WUu}WUJC^sje zX%pgCq&;hz7>0#~!|qlmb2F*e=}d#G&sP|=kyAy4C$pY z*K&uxMHF3ulAz}{VoF27sVRs~l2Bc-vdw;gya8mu6sj$Dw@CupP*Ev&Zd<1)V<3^( z-K&ElEFMmk{$LWgC&_%$1gC8~li+2L@8{>Af{xJbQe$U zxhguddFO+#)sgSbP}I>p*VBl&vdNiD$Nfg>&Vh zD!rr{fiYg0(qSUk^lT0b@)=71K-qJcIer3tDDhS7-c*4O_DDf~_bf!C7VnGCZ;G?L zFMB;=u&-$HQ6>Dzt5`3>rzE0JPbnCg zh`C%WP!tvI$~65oS@@A8ztNz*iSTeZK6s6N_N`EoDPxc=vR}ZKcS2@HUbZMt(TWQj zb#FlY{xuHYBv19yFmv?h{_*c_azoX;w-G;m`x20+`nbZ9XNEEMPA$gb%ad*G zL<}uMn;bf+zt+c?4v)FaNi2*}z43bgZSA4;<+cp#x7EXb-N!<|!d!K_@*klBNGsz&g6`XaDcE*A_24;(+Tb?Sg>18vVrT1$U3r|x zVljP5pyld?G1X?Zq-Ivxrj-29Sf;z|Q=RjImaZN{swl#fZ+rHPs1dEk>StE^uj4IY6PnF zLNyUlcZ{Ow2=EV|8Vn+q{|@!N`h7OQzd#FOST|5a;Pev}K3sFzNn~9ec?4;4@rsBf z`k=G-pnXvr==W}vFL9r>5!8hOZ2~y` z@cKsA4k4Egz>fewQfh-h;{g4Nq@M*=WoGE*vNtHr1hHTfI=7Oy-uw>QC^LTc8d?HW zwR#rQbQ%$L2H1RQ#`l_^%+`AKj=tG9{SB>b^iD^7SsRh9>!!2u+s8}aU4 zYEv^R0MS!#u|G#RJ-iIH`c|QS*a9s!yp9SbDCgsj9CG=HQ$XN=G-3i9>3PZ}?x*ZaDG*2n}|{$C)d@5F{G6G0rPvv^7mEdCm zBGiyHmzDiwElQ>JuyZv>Vbe`y@O*XR%lk)hsbV-ck8aS$|9x|P>#-D@1BnX;?2N)1 z4Yl_G{dx`q?|*=Eu>)p||7q8Xe*+qkkW}r*Rz`hEtFv3{@-3K<{vn1YIKs7R&hcu^ z8s}>kc*Vf!CWzMphj+%WMwniU>st*g6}Y;1gxRY^L@oRzgwcvnrDD|AI0A17tP{!( zt?C0&^=U4fqu8RJ))Ik_nB5UWxF^!aPJ-&|oPo>QXPa#*78*+U1mBiG2p6&e4nwJ? zKok=o2i4WHj@X3-vY_J>JPCE9A2;xZhp}|;%Oc(z5t_B6p~Xbm-y(bnf=M>>ll?Nt z%f)o>r^vI@1r3pZ=P$~y1ih6)6>Gq1SoMJ{LjsRch zTMa=BbrOP2n+d)g?H}Q{;^QqG*5ADp>pd_1_2l)ouMz0_4iMd9QXS{3b z(l3(}8?@uWp+e8rRdFSL;6pcRe@6r;7E0579l|MF9I3V-F-Pg)2!9#`J@JA%!d^U zGsTGZrJeNO*ET~vwJ+j-&khI6TYUh~ts~*w4}nDSr=)&CAZH*1Hm3*Uk%SV!RiA$R z<5he(FUju2YWKFo?cUN&gSJSfsksM9^{<$oT7{|4kpPjCL1fy9$=$T+*S5Ci7%U7x z<>aKv(N+67tH-b1IDPmY$LquvzDn zLHP3znd8*>X83|CtejdRp1j#=8Q*w*Up%-fhmK^;jpV*dT<8=u>#WO3MvE@;3Nz0SS18*KdA6rM}q??=Tc$8#u!(#MR^qF@T?OKH%=8N z1F}7G6^w91V-J%I^DejTUS!+|^>R!cA?y)1AqY9wF<&GMzD^7J;HdQ3Fi2RuRXh=v zH1lro%oMmURbqfMF7NC>Q_o@A-|1E0o1#6xSt7PW_V;7b6*|@l^=%iIApuuld!7DZ zIl;n3j#F36N;7d*&%aZ5vTm<)fVh}=T$Ov<@o5rmTAAwdL8y{Ic zRRA8g*6;VIHNhU9_^^^n_fx-;4kTa5FFl>HH-TSPW(2lDb~qg+-B~+H_WI9FG{MYx zr6y?&QTAL}J=JHcarKy9YM9bUrr*xGT`_{r591-t38BZU`yO4a;7!5=FMJ|zvnYmC zU9&8|aC+s0MeQav=JD!eXFt={@{FAl-g6#3G$zxKZek5nxPC}sIhhlVA$1jVCRI{F z?uyxXyxc45NF@=cVDnZDBW~Md>dxpd<;IFqZ{k07lE36KI{BC@&9SCi4@f2ZRxrUI zR`39cy0(bCE_aIRJfZKZ{s(AXPfNx<`Oods3x@XV`;yHQqp9h9ply<{oa7#N2PXUN zb~4OGip!@?QKsczI?sSz1!O^|DcF8>4m3XSg~f3-_ah$CU$5CUAFPv&$evm;xm{N^ zP2M;#3S-XK9PYo6l%-+Hq#@0>jvvCtKd{db3d`;FRW=_Byih?XX^O;m!4e2l*R?o~ z@Jxwpwov7FA&6Z{<97O%l<6})yHJF-LvT*0wkMl~2J4*O3jaTYl|_w+wqp}!;ubD> zz4RZfuHes_)RcIC&Qw=Y#Er=Yg)F$Te!P~G&?uadCt)G(BPRDaC{`>e4K=H4g>k9jX4&7~QG4%rn8r+rgQPqh` zDmryP9b{~pPOfx@Kf9`m$hI3D@3r0);q)?qnV$8+4s)0tfs-Bmv^c=SZCdrIM4eDE%5lVJE9QPv#?#)+vGV# zWSxr1#SF1Qc_>C}{8KFf-c}%Z?e$rV;yLJ3iWwTE}MQT0mHqul2sgwa((GozU85X;=> zU6E=IO#!1F^9&63pj0ZX>FQa@pd8A-5HX*3$|0!d`bVomGeGCjrg_pOwfUhH%hVPmXGEo&nCv0foKhWyZpbwT@C*hvQ}h`W)E|6EkkftAzO^w0&TlH;s46c##t?R zCZf-_6%Vf{+<1HGp34G;1r!kL-xw#AAKz}|4Wtw~AZ%=B(Gy%LUzVk9p4s*Hv1cEt zBLo^pa-4zelR@_~em7rB=LCgDNVE82n5QX*BARphYp#>zd%v-6sBwHZrd*5YZWRiK zyzzfsNmGGcs#3_%W_1O%+EW0rO2A4|+6w=5HN~f@PlErS7r_296%31Vu=&FBYx_^V z&Ktfubxhg>YKk!T&LWrfP~@)o;t~1ey}g9PBdOQ*PPyI7FN`%X9hP+AXAbR>(#*g= z8?*6r@f4E6DVBmJATe?e@w6dtUkbzk#Pr;(p8i;LHV#e!-f%>WF;=^~k?&4hjb4*5 z^LWZZVu?$13b7j0&b5!;xVpWcuc@k|%t09>BQ^Gf4m1EWfs~xlf{yBKcC;F!s;!%G z3L^;@A_?CYeuMOuV1-7@aiY^A1Hw>LfJSDWDHLNE`M*%)zN`p-X3@$# z{zf_Q?&Wxhy3f2%dbsWMQ^??_nNMh!?Q;Ehm{@1(V(9d9@OzE>-`yv7+|OGHXi6Xo zMc67sXgbs@?b*i?HW^Hk4=M+{J)bh(DW4}0juIjrT=kQY1f9_zI<7vgM#aQL>*b*< zGnT@9?yhb=Kb?D9R*V#4{V8md*zP6e^`O{ zQH6K0s;~GsCoA_L>xe9Y00Azo0sr}t2+lZ{uBC}0oBG)F*qukyKs-o;_Ta8v(p_oV zdjFKMA9?+yms@?7=<=b2%uRNNBCb?cpc< zCVDT8G47jej-G%5F!T+3W*4K+8yi5PkTV^}63dX9-yfyVW`hLfwdBPA;`LV&*B@s(alQEYT86AA2_ ztpO&=-{>O>t`~M}H>@1G78)Fjh*>}M^xXobOlUS%EHihFjGZ%7GrnaCm^(r7tm@I% zhXelL+ly$e8uGI_KGc(_78|zR&~bQ~)kPkr%c?a!n-y7jNUE5w*X2G5Iq75Q+|}Kh z@MAXdwS6OT7ukHVT5qMsynvVyhbJU79UtUz^*#;`CWOtTQcb4jG%167Cx1I;9dXmr@wVGx-7s#;?l9vTQ!RQu(aTB>s@Panqbi zJ*DkMMs6#GnXwc>v;9bn^P>K)Q%8!^vw>p`UNr?%xH3T9>4Fk}N+rz*cUk@U#CC39 zr}{t0t@!tp?Y~A>N5m4Ia?QiIPb4_6or@}%wWJ=KdS_yu*8lMI~|d9_0~5q+8YPk~wkeZH=EF4qYf6{6!kvJtkSZ@)YLjd-_J8iYQC^S1|NJjIEHrIXbmz>%+M0E06A!oTfk zXD+m<59kg)fB$=T>mQ4XaZ5;E#~q51&oQC4!Z8{-lm0=zQvK=(!&(~e^0h(#)`7=Cx7saPTai$#T>9yvF zF0G!}zjL_=#=SQ|8Z4dCLzFrDA?f$ovukOo_se|MnYxqiqVgr{wBxX|W&O8?Yafc# z9lw|WV=Nf^qfReu-}`sPsg(HrcO?{qK6HL z8T$D0jw;#_QwLLR-TaSPAstvG*p?hM*LKzi5|dW%_G+2czRnsDNBE#dw1U73qr}z@ zp+uf-G(61Qfy?FS|EP9Ub{Fv>Gk^qnoWZ6So*abPyx%!0|04kA$0=-0zo{{cK99;j z>Eu1W_x=8%=yaEi&ny_X_{Z1u|9hR*8X0K3&A!aTxg9q}hRRRAFa$WDbv6(L_MFW; zxsrNS84n$e^Qqs9`g)y2q)j+xJaDS64bC0To>%;NKss&{s(E}9gB7bUXyURb7v(Py znNzq8hvLwkD|UlcpSNQbW6BxHG-$PO+%#q6L(WMZMC|7kw~3keL?V8(XlhSQDkGlO z8T1fCR3H2;=hR1uO{OtwpQX=o1!>uRlqeq2`t_W^9{tntgeYVGG+>fSeU{5#}A^L#m0Ma7dWmP#6G0%%eO-NN5X zbN#W;Iy@TD!G7vng@tr?obgmWr@2%@v0g%~TE+4y={rK!YYt~~sV+tOm$(AgH9dI` z>fBwR05GDJM-%@?QZy-Cc;f`)qoucaGd1WD)wTkv04GBhx@glI?GT3rs(||;3x_XrB2uX z#}C-qrLb_UWqxcV;#*2OG$RgEid$TJD@TmTO99SpKM<`E)Ti`A+$ zUG}!L;K(Pg=Y`6DOIr4#JYFL1x!ns=U5c4;^*A=(ET7arQkX8VnyD#tLS$<1Lcw(;lR)Sp}LDWrN9{fP( zp1XK;O93aQ<>!WRlLurO6r@xy788{M+aIR3ezz5|ZTu_7iwg=a_#bi(A|oSQ5y?Fk zR)QHv=aMRg--$~g?q|6i)14BAmp?0KzSLA!k*&@C;C(6t#LQCUF z?_4@~-~Z({@jK@u7nEI$E%Ne1_+>Q_@!M0kbH zf1Xh)a%q>9;nYOQ@|3X_kAIYv>}&w+`zQy*6=&~P)1r=cC&byk5f1}+J4%?^;}YPD z&bTKv$mxg>8S}zJB0v8K*VyfRse*3DFTMA|7izrrNyP7KaW|!9se0lPY2Dvm%9Wl5 z;p;YzJUB#bQa0Pf_(dGlJe^g{H&dHfIAAxI>^nd0_=rA^W(i5SAnq!>HMN#=KNLQX z*1P(<7`L8JIZV_JD-lH-3I=mAiiYm;QZD8L3b^d6l+oWYe<8toUnqqfREN;YiJ6G+ zP{%@KqhF|rgv#M8d&7Vj0xsu8?gEJWFreCF?!8cyp*JvjBIyU)S53YDhS|V7tt@+N z^E%!3QJ(38r3eXRN>)Tpafmqu{9964<8kJuROuGalIVS@q2sKyBjyZ5Y=o)weiZ>P zasM|=t|;Y{YlC+}#23(48zV6^-L-0EU?zis^a+T08Y{UgeKm{6=Us^U9r7o9lDGle zl*E|E;nSEyW+4Dn_TZm2S)vcJbPU|$J7Dn zJ90&1Timlqn$uQ)Km8zzZ^G1SXeXEs9EdB&#CHCFZ`FF%|24tUKX4$Q>A+@-4A(u} zy(H;r?n>Cpv}?UDQT}sTx_g+KY|z2SyjyYF$xz)}eeC-EDN`HQ(4Ier2fc-;@w9mp z8_oL|w6Inx^^dsWQozE#!gS;8p+8wV++J2VfAoK~e*BE_{+E{X*0@E7-wQ_cJ=@LM za&Wv@APF2?4IG>UeA_UGEqHKcq?8?JEkus6(n(Di0WuwtJZresH=zK#V~g?ewVn~T zw2LirCg-hH3pS2l@6h@Lew_`Y79G=wEXJiF_E*~NMw*F_G#fgV;N!}WA3Q9vq|T#)9fo$Cbun!7#Iej)Qv#?%L7Eu zwvR%$-(Mat^0H@%#9?8X@f2Uy8!hph-ATmJ&scLO`kirvaYI1rn}xFDL`YKztK&H9 z4W9iRbi`)&?BpO1WDi^z$tK|0R;tcI%A20)|ABHLIRNl7cm$l(@mw{0%A!EN(?CwX z$8A7$Mi@M6?b3-j`;M~?EJ-3Yph7SOJV6MH_U8!DLUB)-2T`RB>?sI!Q;`FLX0^XO*-i`Jk-i=q~kc{sxwx)`(7n6;fbGR@F#`mf@Lc~g?XC=^b zS_n=YPCIQLVop^5WKzt&SDfh)`L1X=9&0g6M#F-8YfpJKPrCW-!u*e<$TWlp+axOe zHYRp=s*_d8f)|;Lg0`lj;+u4Un75lR5e8JhHM-QuA2m;?;kYvtp0llufLQL0;s1Xe zXVic$LI_in#V_?sZV#*0+A^&K^8tL6p04u!Sm!(iS8=TiTD08 z|F~fr+S~c&=OuTd$Q#N}syb6*0da7}P{xo~G-=WV;sqy>PEA~W@tdtm)i~1L{ETIH z#|zUn;Mknd*uS{R_&!`D7K4KetCfDd=ud>7HZVs*>|7h(=aDNF6*@Cl8%E*qaxK!; z6R>0S)GcK@Qz5m?(Z`D@`{Q5vD-B+x==)4n+yBw#C%nWpEe+9`)HP7S=>*Y{A~h09 znT-Pu!bgR>TYbN0{}u`rx(5^r&~~!cjnP@HGCfaW62c_n}ZY_LbeR zy$~4y=Un}(L3dWj+lIg&7r`?Mq}5&CR2#4B0bW`$BE%%yi$g z#HGK*K7blhc{wBte^E;A5flp)eZJy!4hF0&BS&~eDgWqea^$l4JA^EUZru=0EoTY&e<= z^V9r1(OXRp&Z16=b3q=KWV2Q(ebsYG6~b|$&+WJ7k4?3Hu0gYdD@a0e%!y-P6DPiM z&q;(mA2TRTsci1e(G#T+Z=wde)&EMCf>#%Nii_zMBZpB&|83AegtllO(K;`91P+z51yn0s&$3gIcG2vQhDei#SK;?cRm++W*#6I4pUp9&N$tQA%K{>+^+ z{!-(JqO(YG9l@hZbw)Bdl)rJ;Ekj#OxUvwi}_UXOjT>lXWNir~d>?VsI#)WDqvoHohu@lH)xGTX4c2tX0*@<&2N& z*a+3OzOr6*AKN=7v7uTV9?`%Jw8(MW^mIy)LYa0d{)GrypQc>7B*aJe8e=X9i3!TO zvWXbUD=+Yi?}}V{up#_Lsy_E+aQQ|!G5~3O1`B5#OHY`Jc`V1z5e=m9o6(RyLpU@8 z*8xkf@U#vgl~~bxci__dq1t!|zJ#UlhZGiiFZy!6_}Smxo^U`jI^`#j*O7t`pfeZj z{Jf>|Rbq=|`ET~(T^;^OAZ?GLuk)F$N^_ncuDo(caT3qU`WfvwL?lN<_`~x6_w3uP zBn!_Ukd+3_P?FyP?4t2 zW~2-obS&Q!QuY5+`V{|i{Ev3{0jC}QxFXx_+7b}D&twSWas2qGT}q_MqMO+f)!3@n za)+0%p@Ctugs?%nyOvi?=RIx0=gH5A#m&zGAW%6qcXJ#8Uc|)U%V;PWmocP>q(CW09beP|> zR;F+WioyUI_VrX4CEt@u3Jc{}ErwCmmK0YHrmd*QNzr!lKdaP*mx9P8?=O0bl`G6` zqdXMZ?8yZUaA8jah@^1E-AV8Hj%^X{ntozGTMM*tJApA&f65OlNb2U3b8JIIhOGGZ zKP&%!-n%q*1hh&BSCb?8y9SS^CV~W<062HOVJRjR;k#7g^466P;-RQ<-|W-~MlPFdcsYalXY&_Ez)4UR=hQ zxk~~jsj>U%YPPJj$c9D88=}K+@}p*6#tG*Fwl2;QXUmWMVW$zYN|K86ZkhwF z1Ger&d&m8qIgiz~jbWKB#44kzmJRibJ=iXDoUl8;ES4J&PR1>qpGxxlfGZ{lFdd$h zGUSOdPOO$x8g{*&dFzw}JIcDwX|dPq+a1p5`Ar_DBO%eaQ3_SP>xjbgBHm>K!|qhl zCby@ROW(^GgXM4EejBz}SOxIk25R+;`VU}S{cun!092Y`> z7X--uvP7<1M(STqMa0InvkuGxONu7E`Dk8%W!jY;7KmdrA!r4V6}2zRrAkP)LxF@p zOxlX=FD0Zb!0WUWj`=_CxwB6J;@nj>o6p~NJM2bsaLY?0Rup{Uy>8sRYEZ>NaAVL> z0ZQQl*fDOCtC5@pUJJ*+oM=uzB@fYO;@s?yuhVMU-Csk(e%*h~mC*`Q*IL>~p(It# zN-HOb$Y|$_Iu*aBUk$u|8z#X!4_ih3c>aq*^lSJtoI;zL5hcKe?V-^s=HdFsdx}pt zs&*N0j;9#k#g&z@?S)`YNw*a~w+}z;MuNDyPpgf)Qup{;&O!3hmW&Dt-BMrD9HtOp zH6{K{`}oAYWN(GGql1(Ymo7(;WPkeTxZ|OQziRj8Sy_$d)7~OR%Jaj3n8z_+mD;#v zVHaAAgE$-nx&sD(`lan}LzmiRx5aCX>D z!DdVa4ok@Xef==f-sr~zn%*zySVOrgR3K|`W1#al<4*LcgWv{^cq4@YzN-nA?7TE} zdcVXt;O1mGy5X94WG%CQW|;?8Vl^)vkbft5`jG$4G1BiDHxmsdG!_36$R3_!`P+A6 zKvKl*>dg_+KV2a3lQF@5itS2!W>RM6flX_aeYlNqZI^*AzXgPL4NId+x2Cl*Zpx5& zy6#dS=$tt&Pbg}5p1!8J{bQ=&mj^i^9JNJR=W47^-5>D$qY_5(p@mx5ad31p!)Qw% zB$UAOOOf5`v~?(Y1ZTrDjd&tOUl7Z@o2ekQ3~ST?cr@O--8m@vVAH^ly(3MAJ}iJ( zXbFmI&9z`Z`tAWajyZ!>pjvv=n-N}WAc_~Z@XtCd?lYz9ddbCMc;9_!4HcMXA~zx> ztWIYGPQ^@HBG=L&3W}>6wm%Q{i^Sc;r60sNm^Xf_h}oRVQFmK3mqy=VpP%|>G*(lw zF9eW_&zj-())K;Hw~bEJRXfP$=CxzxXs4w$-Ml3s+<^fULt(^NmbgR+8ab3CyD?D= z=0mW&3PxdbI(h`M=XJ%N20h{%3x%|yfJ?}b;xVu`vEnHDR#(NEVdRhfl>el;{?f8) zXDLw^&gXO>s#8#bpd|c_QnX7iT_yZwr?Xg8kW12G2B*0pf5gb&TDob1M&788ui~gu ze*v!A?soc%;fT3{u4bOqCqE<|*ac5)=42C#$dMicT5CEqAVq)ZU{9S}O}od{O?wIg z`uMQIlmQ4xdy4wd|4FdI$`WV2jfItZ4gx{Pd{W0T)>Tb}J&F=%Y8ARno3PN*&&iBT zAGb7Ldtsvq*ZP+AXQZVL`RRcPH1FnSeoI3{LDpIR_=nEuh&B^v!a!?qCsGaBHy3IA z5+-a+F0DkL*SJ-r&%=TtBJ2IHqGi~%M z@Abr$P2Y_@ph&GP8Ekf7+^QSctyKu1FlJ*)I>=X5nP1djFSeX=8{ezXgRSlLFZw#Q zDD<;|Bu#G~_9%hpp9b#|_n)umX}U_KIu6&d)nAc1R~%6ny2bF2A~pAjCFu3QDn(S} zNVSR8v0>5m9k5svI_OB+VC}vCmv|5*E`x4Gr;4s2DzV z_t|(thKoKENrcu0U+?Zge6mxJtWCZp(P@F-`KQI}=Iiy%=pl_UX$w8XgtfAdgi_)@ z>hi}0jfMIa`)lVFf?H3f{R0j|K|}e)C?eMnd-EPg<|n41)-emmmBW~vDD2f5oX3B>$vtaB3_HqvK~?*2c4 z9Cct-s$XLKRh4OOPqV{!kEb1R`(;HBC8!GjifCA!^&ymU(X!1L^*Y3hVQ3IH9C0l> z_jhUciOLU576(g+SGag4p;!a%$8gc_`YPjfbi^mC`pJDrR5-5_N3yLBrW?J|`#|wT zhZSN1N9Z4yzR9fodFY#o!+BCfz(ihi982C4d|p5g_VOgHVr8SzK>epxPMG?cTwM} zC@H@9mlLs=_#=rH!@i3HuHs!A4pH&gDMJ+M0yA=W>ahH;Sxvhfg1qs0T{oChOjtpp zvN7?Pn*%ffuIA%v=vZ?_+Q$8%DL9#)sF^8IIztYV8ibr#>jJT^98h}m)szFLEhOMi zUdq&u_^BT;B(ZYr3cxs-_0jyq?)>SbuB*U~DoYh*d0NXjc%@ZuR!)dNAh62h49kZH|XB3+k zW9o<95vz_c4vKaIN-?L$r#Mau=W^?-W=_5Gvma8?JkBDymhgRBP%zt5BK_39n~2FJ zG!_cIV2(ifE4##QT`w@RBRL5Lp!GSMh2?glL zI$SZ!>$p`9)YWT9qi!hLe+fYwG01$bmh0U(L%p5yn^P1@v|t~`Ei|GNN~xAwN|qx0 z5!Mk4n_$H9BK(;rZ}Ricbe)Z+-HZMR$uRur`k4F77^&*;N5XJ^iEw=Piz)i;?FYvt z>^}J@&Y87nV?H=0I;~tZCOTLkFQ||(^}KBgrFIOee|@HsC^D38F_vx6mBx;QVL+Xy z1zP1FK6(TH0bA#0c$`N^K6rmX@gdNw)~(7ntfWT94};_m)EeaWvFj@U`#lo(*{Jvh zK3kk(bA56ycgXZ$gc2D-WSt8Ri6C6K!f^+TzX6eeN>;;euqU3*Hcy+vg(-ZW(R^ewvI2q2|;bu;+WzE5YvMddRXc5Eg;1C_{hbrOFE5o62h*m z#2Q+*Q?1Z#P#{R=6M?JjyF7c5hb#3gtGTTdVrQO67P<-q<>V}A>UI0H)HBBp&g_Hj2>awH$2@5J+$X=$tp z_HzqRrs{Et!z$Xa$ZxuvLI#0|?Uf&_mYHeX=u*qDzL8S&nINvq8)e(Q@?MQ-X!{IF zJ|6nJfM##hillp5cLBZkN)QRm-@Ux&TJZ5yp7e~Qgjc=a_4AxecCo{UyOk@ltaj3g zq4qeijp%1Ek$Aos@b@ji0|1}qN0#P~Cf&9aCSp8>#Sv_tJOR{x2Q)<;No#H?Xk~_^ z;s}5BL$|JL?$lBz>#8;F9%M-t;OVUNz&8Hcil;>XA(R0|F@B-*cKNSige6dY=1P9O zpg29Gf(V5@L^p}EsV!BQ=|GkG&fNS|%y(fq&93PW>3j_bCvbLRc&w0Hp!pWN71boG zRXzJjarssTiB#DWkmjky$3$D09=2Pg!HQSoWKNW7h+ouzvvV@CesiRwEpN>9Cu~Cr znEEqbY4(?c%{bdePjBVJa}k(^t`P4`gs?@0PK-k)>hWc) zeb>V1dqk`gws7~UcS*)k8wyPyr&?Nzl3K%dUkOqu;!ZGy?Rk5q>XeW5g_J&MGuK0IHln1H2RSHi4$``gfr zyJGV%FCo?)Up-0~&aaYxtsiXL!%OPB;8ItYG!b@%Tp?4CQ%KEuEfM|B0i@A$@PVSF zk9~xY+*O=#|2lpvp&da>Pz%!a)-anUk^kjzXjqU~ire1%6~%5RaJJZ%qQ4%|(Av%Ll@LfU}`Ozl%@RI{5|%@y>|N9c08r5I`z^5 zhA8mL@A%D+|MWqefcSr*H9@pgsWM~P*)?cq%f3oZVkQ{6<9!)avDTuUF8Kxo_jp6I zCJxvadzx0TcP98(9-JjMiSw+s?RSQ;*v=28InH)M3wT*o(Uw?YKy)F+fh_?{cQt}c zPsEND(Z3BrgmWy`6&383-oXSOK06wQX5o}~tc;yCA1XsA;Js{k0VyoJ6%|#|BWR4g z2-Gs7H7O|xQV=(*aO#sDH?roqh{L&}_k|VVGvB=_1d*k6eu}{=dBZms_-5e)?j1uW z1Z=u`l@^6tJlG}+$;LLy77MIp9mL#SU@n@T^9Y-#%sBUX;4uoVeOtsZki!5dr>#+CN6OE0UwoABw3qQ^@$*pAUt0Xq zUNnUul_V~DKT5DIPn1d?i?q>{zp&jrGe3}4s9>2PzsN#D9EDq3lha9_PRWk=y0c($ zzh{EMzfIGdlK~FgcKFr26*!}} zcZW?trOEmH69V5=w(Z|pmSNPkQ5j`=k|2uX?mUIREE}Kf7ZsA|1J-4q9 zUL#|yyle8go6z4hGTV2JOHHQ{y5&!O>UT%I;21$r1e$M<4 zynU|u*M~KLRpy*j-Wd`@FAZ?ksKmh5Kn?~x>n~Qzon?c&Loec#s>w>~a4i#)Kb6T0 z8m0!olrU@%jWo^Qu7Hr}wCk0{m5Ng*s!01flwR%t71A|6hzfFZ9NN5FqN?qL(NW*t z1oFoQlA&2tT_qNMePc+@wrt9ru4b9;n@DOYe7@(w9f!$RCE$mYj5>-C3H#&c!vH24 zMO>711%>(0bXDs2Bh;zy-Y(5Xdv=mKGh@tqtv9nr97-u7snL`beHm2d&wL}%Ymd!h zb2%0?Mi)K(i*Sg0Uv zO3wXk^%1QQ=)Anz> z+h?5IRmd(^Q${9fBU{yMQ zCP}Ts)$(8%@g&LK_l&g-D9PGEG!it=;IFNUmiG@x@FK6!m1YDq5v0LTe-z=UN2m~I z01^|}nNWf5vG#w&NXNg{#@Nt%%IRnpXEcGFiSLmxEs?lee4obemQ>%^1~A$&2ne*k>ezydDc= z{;mETLOfwqXPVbR@SXAQ4Kb-x%(_bDFkeEpr9Dom5_RpDgGafB7ktv1@-*Fhm<4Pj zau+NrSnNu6bwVM@ycVm{iDt@&HLfhpgA<@MAL_aMa7r?qHQm%Wn4$ss42R?e9g{5g zj8NRnxzQ$bb(r?xy~nVYJp6(f1eah7nulFgYzKia@MmUGpMJpE@{AsQ_8|3$a~mFX znXpPL_TJQo4goIq+{sfW$+)69m@B0WCa1Ve1-~GhNQH$dXRCuMA#GSxpKh!Y{JSP^ zCYQ$G2M))5GW|Y-7EndX7iG&+zEru4)@+sOiV_xXT(D+%ek$9FvwG4n?88Mc6*Pcd z#rc6W-h;X8fm@AY)5)J>0fo4a*$VOrrUtx$ZnrjPBRq&UZ{;qJbKD8_@0Bp1HBY}a z?@KVdcDq~@3BGG`f%cN(o;_FJs}Zx|ou&ScI-8v2^eobL@-VCmeq(8Le(L=6dK`4` zVxs81s^_&fB)d$fDJ;vDVz{!I8N+~S<4EL<&ESTJ0)m&zhKR!>Cx|m4KS?K;WkW1! zL~AyQEp^o$<5$XORLk1vG}}sJ3!6ndw^x5Yovj8{_?!rOy<4JD^ z-KqK2;DTk1G@Q)Ur43ybZBC{2FLc{+=>HJ_X@4&0y=#PGwLqB)bWx`pNaEtrH>YRQ z0bseh*u1so=wI2QaqEVd$fmOpEAvn!Gy+!rYCTIJJeD`K0++$JwQ;?gA5UraV}ev7 z-;!e3aVnuc>`w;Z5af?~xa$p7c-vZAA2HkJ^N{b@p!H|lBb|d!=;jl12@c2;Wn>4U zO?k+Kg+31dRY~$z;@of+NL*!9iW3v|mYO2s19AF$=3%{?H5BxK69wAdg+%m~Jx!pwvIu8?4m>CXs| zjWc;Hw(oSK!klHPk*bajv&pE2)+)S#4OxFiiC))A?W4q-ZJ<2Plrz~tdRjL)UHkj% zPEtDPe(=ILdLV!X_*77fj~f24&NN^wrOOwl{88R(P_Xa2T$;7oF4ylEZndne>hSxXq2wsxstl3Vt#Q&7}`-=}1+^I0#*nzlJn8-O!i8Em9So1Y=dSQ8Fy zQWuiz&YM}>xtoxHX{<=1UbSL0#!0c?pE1TsOt<*LPK8gtM?Q+_;S@102;cx|V4?I+Oqu`c z10ho!K{9I)SxA>SL~Y(p%)(<)3Ap6Q!Lj(HCGSyLYhGzIAiOzZqABi8Iyg5~tt{19^;OT{lQkWIR4};f`!K$c*N-;j{ zDCM*bl0lqduf?I|rfEs2r203G{`` zSE+^wjI|bCg~n& zxhzG;It|#*INlvUyIXwk`OU;hy^>drQatw3HkeZgDqEpYtHP0=h1ZNf`Jw1kH`l!^ z%z6jozCejf1*DGnGB7VJo$PWgJ$oD#fY<-9 z>$$peDo-S$pRj{=B51#0S*xicsbk2GIkIy#PM728d_9rsQaiiNVgTO!f! znJ>Aka#GFmVewB8mMX2%@QC714azMX!H?aPboT_KcR2wx5=kl>JEDY;7lPQ!N1m)|W_po2|#IgX!=$7B< z5wb&@#>YOi&*h}gP)PKLx+T_TQ8Q#TBv=v6-iable_eRZNU23D&Z7+$u!L zI6nu)IAHEwhrU$N^GEo&c`!BgZISPUpBq$lXlV%4v_YC=`G7x9&;Iy$#2gZaKN;h9 z24!4Vyce^8Pe6ceEg+B;;1&8>W{45r)C2^O#?rssJdn4$`RgKfJCI~BA`$pj{}VC+ z)&yK?@WQThUvMj&j*kw2aE$NEHJH((LPr}EtFNDkbz#pCelmn}2_l#*uG!jFRi}|3Wy5BdXNNxkrI-$h5(5e2XM#1qLpq-yY6C1XbG8pytxwQYP zDuty~_v7>H$5dwKZPbt3sLYxudqC(nR$sUyRZG{~NzvtiK*~Nt9ZU?%gFAzi;cfQc z*}&Om8P`bo!{u86CU~mh3LW^~#6koJ{HW5N9{(5W=XQ0YlrTFyS}v6qt%(7IW~Sc@ zscEhT#bg=3K}BrgTc)@>_E`u<&G|XW4Bwxnma-0Pl)u;r^7+06NQn8Nvw$%d;fPwE z4{M!p?+n7&?M&Xjgsz_MRffvgk^a7_JRd=cv=2dDmVtWtnn3;{AkY+(3#M^BSK&kG z!;jW+5a`M(PPqh zwST08;)W<4Ce-KNT|LLziWOR-^=%9m@IKx9yudJ|wNnerj+!=kB8t9{z(cmDu@*m- znZqDIZ0W#}rp}vgV{}lFu^+3wnOWFTs7z8W-|UFt))Kx^$p{m-5zC8&q6NOg9dZBJ zUG`&eTzdEZ{_i?D5*y648}5Mx2jZ+_?xt*69DRa&;en@Ael;jD!CR+uIj9Z3Om;TFP1ihkX|EMOOLm8S21=DyHTUJm-2xyo2Zv$n zDWc^!(Eh8sD~_m6{?xGbJ}=r4!fX+Ea{1+A&DNrguwiyf642h(V+Yy+eW8;8WupqE z<_;(SFV}}@;~pgrYh^4fM!>t!!IW)Q&dU8`OpfdCPBI3&D838uLZ-2{tlA52>`iy- zf6x(#@ykK4>fi~K!KJhqR-zuvK6XXabtV`92i6nVp=Zk1+pZq7=WTgAzBVp5$f@dv?r!t3C2^qh-_QUOX`&`*U5vdTssGHhZ(xwZy8LPf)6)4WR#@0 zxn2g3-lWu@^b_c%Q*3l!^41Hx-Jm6c`i2ccpZ-^72<`q~7u+)Y*E-Arqo_@&yStU3 z>6?CA2<1{a3*&qghnF|SwttY>a6WAgW^Rx>+&jwUsAIb3pYsRJ?(3*F^d)9Sf?va8 z&fvYs7>7bp=5T2hA5z5Vf64~uGl-UyE@aojcF~r#|Jj+NuL^4Y+@}Ty;BY@+q_FKL>f?v6MmTebR1Q+@#-OQBf45$M zIKJV%mKcV*qlk2VEtlutPuEk3ZhuRzBlRgPd7t~ORjAftJPx+Zp%rlmd~FkQU=(c% zz6!3QR%7ib&=&{MN;#zXVUJ9EX0~~!zKjl{fR?WeGGLB;Ah{+7i}yl_Uf6%3{DS906UJ z2OkYQs4O;!jmQGB4veOEn+;FMdaSzCol9^tO=Ty1{2}yXmt~$2A09L;njf77CL(@h%eAZj%FId@NE7DY zWw2VF@KNBWm}+GJ7*-NdcK9H@9%6-r3FnFK(?jYBuHA{df^JxYPe=LPYyv?=6o4_{ zt?VTWK$P5-VK84ksh~6^@<7xMnm-uaDT?fqKl|F@j^no2eUnz$eAA;r5NgX(S1CCs zK@;QV@5^{BT4-dnksCeG!1zAfAV;2~x`(9qn6hwphfXc+=988|?cyFP_cckCit1Ge zAp@fL!x^`uu$%tt_U~4fPdFPj|0abSR5mcQ8#CL$Vbbx`^!FhMN`m|iT0LiB`%IS` zbb*qjMrzp~XSp%Mlu|w$WO8~fk9EHF@HT1e1b_El`%=Ke;v{r;w6?7D*Xvz&2iyKRmDS zRQqIckPp}XNQBd89Eg!+{~o&OZneQ&4)CatATfIq=4* zYnt)&+{JK|!kq^9r?#yJepP-^0Fv`h{uFlJ6Nvs|rr8mEAkB`ff}1(TNgk@sBY!B% z+p}`>10pcX6`vuN=$x-15&x0ZV{=usaB|?|lSi%Kvj2wiTuBCBvE>r#WvlS&-ufG# z0eX9?wqvHyQ|Bbb(NPqFzs4&)STEy`cLlFEmaO82hYS!Ao$~eDHGkaKlOa+8H@kWk zKcJ~_u5f8X&%=i!b1fCfJHH)acyGyIS?2ViLWL-dsqgH1aiRAENwx;TqBVktxJ~T$ zMCa^)lVpl>#iaWiVKFKLX|aeB>jUm{CvVKH8zr#~I1z_db&7W`E`y^{o#TWxlkUW8 zBHnn3G+!>(kE8S#{>m}9t!ikkL}W;!(*2hgEdI+2eTJSJCIWKyE0)y}v3ezwkb@~4 zZdRAzoSv z;Z8G=qgCbGN9-ms2(pQzQ}t@4E5i)0aOOZjDk@)CmXw0eJU>m#oBMP?tbLDIl}B@? z2ohv!z`)%6zbrt^ogY$;4`04TR^kuX8dYo2XX(u7>@|mym~1Q!d!pZ0AySKMz+XsJ zBKdFl#{|W2CtVfALcU=y6-l%WZUJF*1pL=POwdb3zS0x|kW_s6R*sT{#Um!$k9hBk4R z}3CAP$OrAvy2baA7J=2r49|5Ab9ZCJITdcV#qZrl}+1D{VjP|MB+7paLTfaHGFwRfp4tf>I7b1cE@?WKQ!xi8O!NbC`z&xX7N)k_@cJo zojhFZy#O`N1u}I-;mj=pL)fclc@wUiqLpmHnR;KV){^GhPaBhTF#}eI9t(av(mIo~ zJ#<_Fq?hXiqTuM|)B1L1B=H?>TM-qS+V*ngP!5%HMTYY!8C76JE;+^G?7}In?`_>< zTa!C4m>OdS#QNsnATaItbc72l5X83g_D*(KfNFY44@Kp73MAGBm?s8~SR*rlJ{Nu3)da|)LE(_9n=7mxSd)tAg}h=f0?Bo)ml9c&;WH=u zfq%ZXr(1q&OT(^a87t#waQTqIHRWABR;-2sz?ofW>>>K0;xbyF!=i_S(s}RzkMzxc zON2I$Y9^n!|E3wfcK7xg~arE{H>}``lBFG11!>w0HL5qepjHwF-Pg$Q3MpV`ED`;xkbt2_|npIKMGgl$xmBfm1 ztlb1x3$D#Wt%aJssOof!zU@#b68g@8)(mNb=2IyWGoV*3eofoWOZ+%>Bmv9n#91NT zTHSfQ??00ITdMdC?JH-nUJHu^AP+_k)3tN*hK|pf-W<4`cOOUnRZO-_=z>+U^3ex1|J7Hug-}gI*5qtzk{RsDF z#&($?X$;~LuWCTMgwA3`8o@bXRls141uwU$Kqe8Yacl4qXxX{VPW^eMmIN{5yMzeG zK-f0GNI=XI!cbWhOuHiH+Fv7Vira6dlz^31N+I08v4y$6C-R**uh8=EbJZjH7$wiX zkI-1`#7%Zz1GOdp#T^eBf zIAyFlC4DT5aLE<=n@Wi-0_E>IoTX^a8 z9$Z@6J|6r!P#z=&oHrL@W!nSqu;)CRZeYr^ zi)nk9Wt44~hINCW_+w{@JD5LDMpCoSFfm`nf)pQPi*`=il={YzEBVu+ndWL0F*iTOg4Fh$rpJa`EyU~GVzk|TS_vV4ULxG zP+IDh2~$Qk;D-ttl0dWdHrP`&5Ue~zD43VH$lF6jYLs}YWq`%B&wx}q-C5A7v~Vgx zP*^0i?U~I8Z1xB>oS$#z99ZF7*Kfx=`_UCC)3(&ut=OdF|7M%e3rKzG*u#5I%tp*cPcKHxi z+LVNFi0M{tETN&@H6$}|it=ok+@@@FOZYbvNviSL0cAew;n1m;4giPb&h*|}9lsCH z4_Xx|My+Ur3po`1Oo1(-pWbYwdSw%Po-!Gv)@9m(bwB3;!2*?MUyn*5Myv=;^yWMZ zC4^&cGubA}%yo*e%hH+@K4%Wvx4nIA{fPJBWP)+XupraZhpRkm$*v#8!cwE^WB&i2 z7vv;yPad{H?a`9+Yihp|Ho5$!MJXN|gKcHN@$VYS*N>hpTJm*!j zftTwd<-4KD0wVTwKPMZImXS?6b8+Q9a33Pjv=H4bo801LENs<@>$3H*Z=A^4gWVYa984c zy69yiaw5GaZC|l7x8COyie*DrRkeKDQcURtpirBAGH^J*=nfL;2qsr-TR~9pgmprf z0s#lC^$**%8eb3mc7ftJ`Q`3mRFrL{3a(#4l9Rh1A_$!b)uM$JaRO_vm?%X2{vtsf zrlUB7UlD&66dc{AGMw#rezy-`RwoyTbd$=>p&E|x+I}Oj56>Q&h9ewwR5_${y8OrH$2|Ik}texe$_t7y|fC{8}6(t~13j1hiegV1R}ifzz=;cSdY| zaG1qVH4AhC=JNVfstqoVF|-V4&RF|11_`x>g} zwYEZ23=YEv;Z%lrs7YI2n+Oz~kMk{AmCT3{-~Qn$Q;qx8ib7&C#|6)Uq#}$Cb{#m_ zUkrPZ^2%Wv{)>QVc{XCQ$Pc@XdLs@0k}uDFz47;DSwA+yZMbI0zJqa3rn?$mB6CKu z6(6>BzdFI|h6d!R2>m9@xnr|PfQRk_G*R>a6U3Lgu>SDX@32ne7C6WN+yN7sqtgjA873+w!`g%>A5*HhLzussrCQvaud(;%nY-LGq7g8>69I36jnpb3DT%>o`Qp zSTiYTS2qx|%>^vLOP1r5Duqzha_8BxU*XHhbW+KsP*dF2e%S5nuiDOU{k80G%@}6s z-mRCuqx`ClS~3t^Q^6}YWL3e2@VHVBGK?eQ&pPcl-S|J3R7E%k4ua%0h zz(&bOQ{7mf*}parRF0}vtaQLRu=T0u_MFY|{0L$WpMp&d$?@V+9v*dsh0J7`LNUs_ z?B5N`p4=ZGm;4R=fIlyAtI4+=9kg}J(e`%+dsa)PRckNsIn8iI;8NYb zb>(ypzl|&KQS1c(MdIeGI77~NqUx`3c({l}S`<`L(rVRvwYq{D2ETs=DJ{&`$Kk*k z9E86e>_4J_NRQTA9-Wh-QPrr3#>xhkpuE>)G@(GOHh|R`F1T-9jkwa>eqQ%A>gu@4(!)C4fR=S!x18nVb)*UY-dJ3}xipI4lC8jS#~6$o!D-9Gq}teNUV z{_GQ@rz)Eg@UX~BHO6OGM8C=1G>S$7Yk_Dzv`oN(qywo&UzXvd2aL=V8OVAb_$O>S z-YGj;pg_|XrG?PHZ>wU_U5vmmk(V-$pH~*ysXoc}t4sNlqHg&yL(i(wC zPDL~J4_#Re1Ubh}BCki-;%e1k~c*|>l1()JnI)zK3@ecY@M z<~tGA#owF-9HR6=?~P2)(iu`~=hq%_er<=Ii}exRK3!L0u&%bp^}&P?;Yv*Ty278E6?fZBf z4|C?Uh`B!NSm=952zFqsH+CI{q-3gN!7tx@P84M$<&OMiryo}h#U2KF| zSq!^Uy9%gJ481PRZ~|;Gua&Xnflp&N!4I~S8?eEVqa)(45>t#W%iT4%?V0-S`1-&A zN4*yDJ_ZUrg}%BXj@-UPIH|2zkcs2@yteI?;z>Na_9y5$6m(kRByHUk=pfW&mN18G zKmJy<4aYv4g1kFw+|;wbp7ZW*mCO4lJ$&(hbVGyTzjOnO{F}I#(*s}@Z76ReS{Nnx zf#H~Mj#9j*@4|AAv1cn&P$x3-b{h!hMPyNKs`0l)nail6_biI!e`nf#)qB->wAS8h zBin7uWWE(9zXcCDgRc>jIK9-bTj{wr;;-&(nM4wjQ={l!Z$U`;IctpJm5Q722+N1g zZ)(w<4}q}|0I3{uZIM_ic&`I~92*R*%H~nnN%D4AJT%5;K{%?{Fw>hVkO5sNco{$| z-rW$z|Fp(_$Cr3lVnQJGeXbqbtx=?csBB+B(jLrXWSrX&E{q757KM{1x(DvS`X4 z5o9Za1Lq}rx3EVaGw81_9}LQuQB@wFMS!EY=GyWW?aTI`X#I>#n1b{zvG`08A0x#G zgRAj!j+2QpG%H_6P{qjsSbpcmMvnbR)J4)Ze!@^CQ?oU0Tm|$F_FU=}LV24S2w|Zs zVtHc} z0nRuDhu)6x(s2s0-@|HX{mJk}T6mzD|H^|Q>%VS8k&3Gx?lK9S13LEcscMEI&QZJZ z?`R|b4@vOaCFAB+Hi-UtL-~$kL0?Pwoguw$gehO%vW}Sbp40Sq@pug+3nx|;KS+?E zxauN=k)RB)gN%1;#uIVD;V9WAY1&D&cb@y)%Vxm<%eE+r)H2PH+^(?20Y=iT`>KzR zD&g~8*NW(_4|7+7Odi}}teOy@+rF*f0wyFczg8iKE+Lc!3BkWK0>K(rd(P)gwVG1e z9>{+G`c=$sT4AE4CEVRanzH;WX1S<2dVg&(Rf+Y3QfPXbMqwA70YTHNg;nM?i93$W zfiM|MjwLd~0M{1p7F;SOA{L|ZjdSmaI{sM`voTf5(2GpR?Svm-0EWbDE+dSX5F-)l z^ACJ1)^_p{iVMWi#mN|srPIsGu60>~PqSZY9q~jk)y@&FPr-!n_$m^rA(26eFI^wl zv6>5-@S3v_sIE0B%+#F%IzmY)mw#iuT#<_e)FV#Q2-y{J=>A%7+SxsKU{K%K8$hm~ zYvE6~Yr`bl5;VUCFC)OZ&w7gg69x3}pudf3~)XCoAhX*P0C=c(7o>f(3hR7C`V| z2hPeRjj`eSt|p%`Fr5ycNoSu~yt9Lqr6t78CWa@cFmd`cO10X)tZRFF8&9t zFKBtWv7(uF^(8TN>*@lyoJO^AHg^eAE*D^>Y~C1IHm>__SDJ#8Es2l?(%kpBfN{e3 z5@mJ+Ssh^GY+O0H5f`9MNdHBoOjP>BJfY;UK!?dQesn1m!1Q^ zT|af@MGWKH6x{OVE{K@T{cP?DO!pz~m_P0;Yfs^f#wEW@BKXl!Y`q?-4?$)XM4=sSW^kxlrJBOA0 zu>5?+-D;55Pbs1DfFD?X-$7a6dHWLTSCZt6Wfssp&GRD6Xbv=%B-2Fc5|Xr2Ifoj? zVS)qs$#s4ELTRrD_!IX^IRm&cNe>rQPC3h3zYYf_rZR~dlJZ?6zdjB3amzPnh)i8bG0&0iG zptRn1b+y*w#m&#K_56810G=3|z{30jD&@+Tryibw%9lJ3LNLvJ&ZjBvOF&svH<|;f zD0reEYv|^cJN@pn)fZU2c^&OemnW*U!qmC5m^^mMn>4U!U}=TG*_DX^0mqD|Z>V;( z2A?d?1%V9HW*ie1O!+viV+y3IoWNKDJ1Dp+^}P$OB?6!(fm>jLZw_SdzoRE7kPwz8 z0K`w)NIC|UWC+o06-H%2cO`&WZrP*+lvKZ&f=sl`kpQIZMW)7O26J^te@Fd->S}W! z2L}Ku&$v*`7)hm1D8T5G3Go4JZjwxpXLBrGuKXM`KQ9?0t+RXJMYXaa%$0P-rH4H9 zCW%G%0D;RZK(*fUZjZRXH>9n6y2ueTFBry;IoSmR{x(N~Y=U7&*1RLFcj2)go)&rzI+Gby4jm+is;mHc_lJB z)r4K{^DUpBaof;XntnLV$slP<=drTEtUW%TP5T6p+2AIpU6n9y zr1^>SdAA%=xm-PSRbc*6IsMD!CIRFGwZ8qH4`?rPdkz35s#W~T^b{U#ZNpd#V=R8~ z!;kO>fAH&=ni_@HAwg!aV8Ma~d-WDT@L&hdDy0%;#zvu>ZCl)G0cQUuXEAY%&1X-s zy0io+VDiiyMh+iAR4(to%36!{2M_S#)=gN`h4*UJ8m?S;17o9OU(PCdf^R@(D_Y2j z{ffLJkCp0^QOOIwxujH5LMEw<>1S77uHfp853#+o4Ok1UHAYV##muP-86P(V1Gb_% zm^P;$eD$zQ@a@wk_Gx|7V3Y$3zyKRQt!}RD(zS023Z!5eWp;Dmd?Ek_X<1WHF+x`M zf%=Rgoze$Mdxg_!Qq0vD@y#Zb)`*UlSrErfQ0TUgFR>^mQDB_5Z~;8*VGMEOGi?{z z796N5CBcMKM?*G+R6mvjfauKxS2h9UnJ(}Z3H6d#p&YPG0d3AlEwYItIS{vqjFdF* z(pw5t#=-RoX|AS{EWUY=N|q>LEO5C8B>5w5F6KZ%jckHW>Qmf7m3t$AjsakheXoW7 zv7WlEuWsSPzqyH@zWqMdUTpRczspgCOEZV@&n{fRrI{I2dXje(w6=<0BPE}t^C;i| znLW_jD1Hs#4vDz60dUyCDm&*#%-YHMvl4tGl_^mk-}S8n-1zV&)OLQsB~+FUcYVf5 z^$hfpbAVthzZP3zp5xYeX>9oNWq4WK>5WuJ7DXwc{c_3$6q9U`5-j`bZFBYjlK;|Y zj+V>#$FoQ9y?YN}dSmp)jmLQUbRDy^{}+dH3^#Q>v;a@C+O@nFnZ)D#!sHyp8z<3#@Z^DKfZ>z-R=h0QH1lS&tZ0E z_RHOmLXas1y*|qezj$YnG{QymMhKoY@-^l;-B5$9 z<}?L{wD3F15;RQx6nNQ`log%=At?Z4p0&~5PEfuygwmPXKvFVEXF88@%YoG#NbE`@ zL>~X+7=}~|2*@U#^o>If%uk<7S4UlE?yXA5LUz!M(OZMsZVF_7T6Pj3-N|m?? z1&uJjP$?M*K#p5J?y!bq_valX(J{&Og#j;R!D;wQI^Pibi@U+VttIpTCn0l`o0!%B z-Xz1^jTA|Gi(^9r{4Ejs-A+5k^T#jo|Ni^~eE8SBnOX<*sLUlR@pfSp7pZdCzc<>+`J$i9&*4xT?9F49qs7@fIm<*)|qeZAkYqvU*)aa zVAe#%yoVn8a+=mY0)Pg8b7Y|X+?zn2wcRk!gRmz02nk&MwP!CylVbwKbF9$49N^df z=jM*jlY~4kS-S6;l_kEqW9r;Fl!u0) z)c(76*l9NL^!jx)*VnrNfKoUzbr^G}=Dw8ml|T*&;Gsbg7aaP4XrI2N1V;PH?hA^G zFwFBn^Jcq+#hcgheDy^a09Ojt$x$4?^i_;Z&3K>TOZe$ycli>i?oaKZ)5b zwKrvh0)rrUOMym^eD}~uZhwvZ1`c?ey!X=zIbO zusg3TL`4;)L`9$2JKC9ASew9LZ$pw}-QK+$eHh%=;O3d$^NNUGbh`oXNdtG@fSBR8 zM+Pr2?y+-}KFvVCFD`bA`1OZpSYbiWN}q)W`WgJ7{PHC2mjRKIk_UU4n)BjfLtNYp zl^NVBwc%LMY#TmO3;R-kSyS(BHbl%Ph{RHxsXp;qlkJsUh*#a);t#^dcQX#*rI!eOPeE9irjm`TcWLW3W||Q@Z11?~ zF9$yQ6Z$pn^Jewq^pIs5sV5yJ?5v%=y#T2+gvP^$S@V`ogG?Uj_l%11FIRjLUv*UvD0Qruy5%A+0sn zFIQ&DTTJF?ViHeydzqex^*-1ue|Y?>??DbRyV1c+7s?|M;rWYy+?jZiNLb z8(`I=?GxNGe99)~PxM6fEiRki@26M`w>?Cz6mJt@w!RJ_z<==O^bc+BEr#IybiQ1i zGfF;8T|eZTfIoufL@d!d8fv*nIad=25`Ue+c_$^<=#PxU-w~#5(v? z0TZ*hJ1!?&0_eiQX7~LF?vrH%kv_fq3lB#uBkI=2$U@Q3DCzH%7O!i+=q=E)eUPQz zRwO0D6qkIIzM(XoyZGXvC8y=%d?M9wz7Lj?hiSGM5=!j33g&EDI5vKjqUUMU{UIyX z&i88{OntHy)qgW15t%t-@QRd70^2BHw@u72n$_x6*0;-VYQH^xKQX<_{<-x%aS4_N zw)KGAQmoG_v_0qT&eo+vEM&0FmwuZN_WOYV?+-syVKjybJJ%J@#T@_sVM(cE*~JW zU|$tkxlS6kigXw94pP3nVdG2-Vmn}>l8KLVH0B&MIN0P zqyKFCWnUCatR13>=~~Yp`7ixTMu|$g=xo$8X(fGD4OZ=4zd4%LRhl81BN+{u(6}TG zM|~W%0rfjdTA9vo^As%9G{whcctt&m_rw=1h!aA~rOTuPyEGB>s-gLr4C<&ihe>Pf zwJ)avQ>2SCj{leqeI2SF{%Gl9d1<-7#<$izj60+~Ol3j9K}v>0MoczE#-5O$fR=EY z(35bC+R?gO^t?z=t3k_YoNxU8xON491)a-+i?{QhbAk)yTC_{Dv-00HPxs6dzm2GKCS${=H`Is5|?=-d#q*-B%mFC*&6Ni;KHZx@5$kl9G@QLa&5ZvHBi?ef%pHqp#^k0rd$J+==hkCcuKPdQG1pNyX%4>xzIPXo_X&joi!kC)HgFq_dD(dy7CnFqDn zv`6mWMu(%jVG7+Dz|neqVDyTX=S4N`iNz<)w?1#}UeIuG9hk2qz8WnlE5Yt|iNlR^ z3zi9L|HvKKCtfZ2RWeL0K@1sQPnkv98on0RCJ`*jEzyVE(J1w5bq`aORr;Nb;A3=B z)6>nWW^fsf*XYzR-RR_T))AZRug3o^Vk+pwHBINEe{r`v92I<+wD}uppx{8kvzQce zEBNEy$4;@}U%DYGQu0y=sX-lXTh3#XGB-z?JsoL-uGz1FL!X95ICQjh#_3b;vILIC zAfr=aguWSmQTobSHg0>kHO%fU>|;dxwT7)+MTGcL_7KM^^b!+4KMy?-|EaxEHDoJpvuL|HV_IsnU8&HzF=s`S zO@pAJlGe-`ZDc*qUP}zz#F;qnF6_Ry(Y*0*v$}lHVmZojb+3M}R2QvooN1CjZ0DNB>ajYhSAue zM&S-Y_p06kWP@H^;~v41;z)W9-Yj0j3|pg(-Yx&5pHZ38J<_!iCcAb&sTf~PU@tT4>V44rFh!Rq&dv77yX|xpH-x0E z)~Jq3C#>GRfUY{{I(jCHF;0+0f5T-}(5-d0Yqh{tT|w7KXT91M-q6sOU%W|IkUD-= zbUuM?jm2m8cY1|PhtJ)$!(ydH?l>{d?sT%&$7^i!2Y>hW+Ms!qQ0ts-0%m!`_rzs>99wvH>_!)N#~^D0MSzLvzSTW ztq-e5$S3B=)CYM|)G|T6O}gzlBUzvNt?$b3Qt?n}+h~-oNdcc^;Nin7OpI^)7ew6R z{D4AYy_b;`gIz=ar8VTlfNyZ@-)cI+V9eCeA2jzYVOQ`awzHI+IQ9xICf);JkRLixs zW9r^V&J{@y+q%ZMKWL8;BRdVH)@F0j$e{@(YE87}>TJZP=-ZzVri9_8`P(Yb^~0uF z;wI%_;aI-ENbr5AE>gDpCL6B&h{1|)esOjf-v0leQK1AB|NE?1e)|X7|2}hm{=csw zQ~aMz{x2Y4FwSlxC}HeTzvftJ$mT+6=0YVh9R<}>mb*T?v$b_NQ1IGT-}~9|Rs#G( zi{Fb*ExLbFcp_R~%|712bo(bMwNcoICmp`2oyK3K&iB|KVZMIC*oo!u*fgTWs9Er& zOCjEsv~x(g8wNf|Tbw_f*)_6d3m&v!c{XUrJcq{)t} z^C4oXPWA*8qRhpR>mM^?9>-0pTNR-TdkY|!yBuWu`|6P7LO~lgp>0H9>A6N9|AD_w zG@kW;A|oUJYW}GpJ@2({cWs4Xx8E5Ta(GX*d${(yc&V5ya=pvp@gu^vpEbpSj)r!; zS%$V*6RKxpEnlXvxTsz%2P{6hn+=~)=Sx=NLn!~l?lShyQlU2)@Zl2cTWESHl>OxP z0*^dt*s_lu!F1|2HrVcI{7xen!4R(ue$ysLZ3i2A{?KQ>ZpBh#qjgid>N{O8GPY4X zIPMXQ&@tFL_c=Kkw4jNhr!k9`?tRWF$Qg6(g*CDyOwe(eqDOyf- z>(*E*4$Hn-fX58oCu|t3IYZ?3J>aV3N9`{jgmip%4;6bB+M4O8s~%4v^OY2JPw;n=jr2xSedw6xtQrT1RA^%ome#zum1(do%@H)za8m1 z6yU7lqEGo$fGQI2R%0IQLNTJ=A3CDkP>d;`0wbq**dk8djf_Ioo%Op3Py^ffC!`PE zUyKCJ>w5BA6iP5E_L^7-IUM{Isnqlme8Tzi?Ic@2--i3GM|KnvlPr7Yqx&Nc` zySG6yZtqWgG`3R$!Q1F21CO#)ETG@f^fWP2G-fRZf(TjqWN9l;ORbps7&5BFKYw?= z(YDcXuyaxi-!3ay``Ii=l0@P|b>eg6s@55Ad?bqg!5O&T+wmp>M*SSZ5)#M}=5ISb zixGv36MvQ@4i_K(^Ed6NmkZ@qRp2I9TpQ<_mszJP$7I;N;h`t=_cv<41Flc%9*az2 z)(H{VHex)9AMh)E^&HW{MM=`D{|fH&yQ+;j0Lx(E(;o z6bJo--LK|vbBoI57}Z$R`^s#K^qRDi1s_}5Sg8u!?<-!5eMgkWY`Pm%9o9nNmEO)r zC*Ue~cugKx;h_2AW$}R>-;B$C_$)%8t^16-=6Ac&Zlj}c?B!Y);yEvak8K?8xXe!v zqdUFtUgU;MV)NCEFrN;uuF49%N=>+{o~#fiXYOtNhMGi@gTwu`s97+FqlH*!{8w~e zS7I-NqKl0+#~J)RCX1C+5Za38H)Wbx)J!2qE0%+i>~nrzmK38}@t-bKgVtb^R<}Ac zBe^4sacS@jFLHhFRx@!;QktM|B3oj@64!l~#aO&v-0Q**J#tP3EtgO3_Na7zHO)5T z5ai6$jrm>7Ohx`^up>)Jm$W|3DW`XJ za`nf>+MYAR<0F>7O4HI2h8TH9ge+k!1`PI684Bz)W|T{19;!&Sr$|n#Hbc@1d&JVf zs>xHm_)l~MO=w$&YPm9bt~$c9LK*j)4lYR_PR?sRV^_YRzmvH~$hl^Ll39u5*8~d_ z`OnRw6H<~!ew~0glH_!B5F-g@UcDH5ikB={EJG4hPVRMfr;Kp`;2ACZL;?*+$C%C+ zI~Z5@L0lm*-q-_^41!b`8Xw8ej-_>Rb~Eoe8`f&FNFK4%D~{N5Z6$PQv4wdA`qwb3 zkCg7ox{iOn{nOEf_(H^${f~}8%0x9gn2=YnZg%vc0Z;14mTUsbOuDyuN>iFUs)m)eNlQnq?2h{9oWVz!jm6FkcPj_S zMi}#qr3YgM6B3dJh88NaX|p+4g`)6>+JoA`hxFA>i&LMp=2V-h_gUWdDY)H(c@@fe zM6^?{Ja9b%~iCaowqbXi*5%~HEZOO#Vz7$q8J&! zxLj!2yEwiRu-~#?h&qjB^ru2fE6}J&)2fWAF2^KLq(Z*I(#?%5cjs_^qrsZP#h^0v5TPNE4FPXuRlb!)+=$J_;E1615O;|h zlMU0YX_)<^I|0r{vOX$`)Pz_IY;0{rfr|*DN~g|U3}Nfl=w0H!uQ(Jyh2-Q-wwYo> zraOs}2?*wv)Ag-^fRziAdl9qglp>!+eCxGO79SiSUo-0Fy|&-XUnbz!^Lz23Tn)lU z?6h+5Cb)7N%H^WWKguzp{bNWZ{Gz|LiEF#YJNu4pbbzM+ONV}(z73^@rY0sZDSk`O z8;~Xmx6hOC!In?UMfu^s?m>*pEYls*6ufj@Ae_eMPCO;>4`w>lX3G_V?W5mqeASM)A=dI1Le$2OA+ zS|8Z6B--y$4X)0cad5F^zhht$PF7+dMn37YA>cF1R04_b z>+}u+0DDenXOxvx`-8)m+ap0X~IaIB3LI;@#a^>3;`)dvBP<(x4CAfJMI z@m3FZ+0Rx2jQCtnz6G(|HJix01$a}BEFD71>~=dEESDXM*MFg)R4uA|6l*lRA+NGi zyk0ugLfIm;v=SGq?*-g~Rc{rdX7B7h*?65I4N`$CT}JfhY}YPzyURiYzRT`~xSX79 z=P^c>N?r*{noXSN9!w|RM?XZlyzI|!M2weteLmwZ&Ozb8(ij$gI*@lL z1Si_cE6A{S@ZUn5Rnlvyye6#!Oi{=O-R7D12=3vRBJcI!c0c6iE)H zo6{Pvd)Hv4WcZ4pOZo7;G&ORk`A>QR_H)43|@ow*sZIH<@xM z1V3_pr%z~Tbv}m^n0-N3n(Ovg+3c@LQbB_4(8{Z~AY9HR)cd8Pu8>n3=VoOf(^R=J zT^J7XF0)P)x%|Kr1GdAu*y3Pi#=V#nFK@XpSAx}-G};*{zq(Tw>@v4PFBcXp*v`Hh z2Ej6*go73>4xr>bg(A-K@X7W~Y=azzsK8NTrNw@4xYlr$bV%E+bZ!_-UDI~aeRg!` zPS4Q;1zJunf$VfBdp0WWHF#;XM^cOe2lV`YzL>)fAnml0!Jq0?31E!_r>swTU@(*k zuy*VbGsu?1ag=Wym+eeiZ^}K7ly=|{dyKD@s-3!~7>taG`ouzjdO77_xomVeJoY@t zNEY-^%lw%sZRQo86P;&I>`}Q4=BpNfJUQeSOT(l!K9SkO&uwvhH8oyu6*JC1ZcL%( zg#jzkKy30N?Nxf4vGxWVvuSfUybU#S6q1I6w|#S|x8b=^%A0yhbgn*(;6u*(b6D32<=W+0L z+IRiSwAVTuFGZ+0uQTrz1*<0E#TG?aA*ARoneb$%#XgZ+7rt zA`P9G^FIF=V|vX2_cW7F8OGkG7?~(;%mfi^>Fu1P2;lBMn4)9_6nv!YU)yL;q(4hP>QSi*xgRZNu)U)Y9Vz+i{|066``JN5+t zC6xwQ|A)zKDx;{58?+*bf8;RO?}7@1G}MN%K}BdxW%;0-dwMVtduAX6U%}kbTX|4r zR(kiz?c1$rup3#&uhmhJOG3sg&T_w3u6DEWa=g~;GhZ#AF@*|8JSOnXgBtq@QbHt= zLKdeG7ZR9xy-0m}M7y}Y$SJ4K!qQQTU1e4x@#7rKFCoE>5bV+32=&sUzpD{ZyNFDz zxK4p<@s~&-*V$eH$V%wMoP13XG-pIT4|ex)+Wl0nVgIZSs#B|Zz;kkpH}nY$52lEM za-rX21|_0v9wk1r1vxt%w5SRp3tX(^HSE>wg9JO=sFKHTHJLcvJU zK&7Cz%elWc%H-G-c=ya36uA5-ZJLx$W2o^Ewew9=zgir=VA$;pk;*bv-h-#=0c(i| zL$0*?o>`y^CqH+dfS;p|j~YPyix%5~;z4LlfP9de^lfM?#_X_7VR{Joa3my?juYTu z{A&Cw0y6{;%;5eLK%)LJtgmeS0jqHC%h?{;x~v0bvLhdwWY8Pxvj~!_)h7u;A=tB=^Pv)_nK|z-BWYfy}RpO5Y;enswSK z*MDk7oBGtFPB=|~^68e31o>B^y1uiMkv|?yuM+T!Qgh<`x1m5AsZ_J|d zJ*H_m9(k%uQJedYO`P-|tUCWD`0j%C0iaO%mhXnpl=rfnrKQEQ3vkciNO zsmd{h7eXtjmcQ|b%ho}f&p|TPy5tO8icUxXBDpR0ux4Uv5Ef~EB)b(J?X>W-eSE8# zDei(ARQ%2Bu{w+Hr2=$V7rx4CypFssJf0Ey-ao4Z$_TLj6ExUEh!*;_AZ8fP)z+@s zw}z+iXR<)&)&kj1{MjhKK)meQN_ynMl%21B@#P99UJ7rqF`Lv3cy&EwITxk};pV6L zi%@peUhiT+jp%;}0Q>wErRLK%8V{nnukTV(_-d;gu(q$+bY|uVbl3|>X;zG*80{~c z&Vot{rT3hV&1B^1!S{aeu&Op zX4`mPe2%o7m@fKX9K%#W6CxL(u!f>)KrUZzVLpamQ-idoPtLaEf%!r2m3+VZP3^E~ z=u&~=&t>FP&d8D4&6dfc*2#s~*)t*5uzbCa>$(3gvDW_TS)w_*NHS#Vp+K6)GR^=4 z4p&pXG%mGA29Ke|N-U12eK%F+yPCym*eTjx0ZZ=xH?}WLqhg(b19SNVy>l?5G}m== zBCoya;O1`)fwncs%zRN3V*8o+LIY0MhfV8Q+YN=d%Pb5ry?@v#U~9KQ6;9*Aw{HVR zHaQzwrW_De5CWQw>wf{3Mmg5ZkSxFccXs})y~#r!`}#Bu(AF0S>3&*F*xFNS2sMTh zKzwdaH>pGl9)dT|(6>8iT;c)HST01dwSfw{3VC>vJ9V@`*i()Ki>1t;7B<8K@=By< zM?e8iKDySNc?`k>zhsvN%1E#+zKe3|v*7D(s>5*^;bDNtBDu-_M?N=Nh37(zK zxN8B5KX&o}jKM7%u>?iiuIVhI@$&jAVA|tSS1wGx;}{O2IQQvR!cpUOGpHN+n#X&# zf=8{A2cMfx!_FrCriJw$hf)yzFmM9k!qlpJZry@+7B zkbL2nKkJdgwK@4c$7gll^TY|CzW`G)UjSVMIvBa$Mw%Ivjb+nhkysn&vcAz-PDb@O z4)1mgS{fNtQXis#vH@Q!$6xDi+N}VzFzXsxtL<&0uxC-9Mh=QcMy9kmKobn4lg?v{ zNOaie$6&1n{cBp|S$%^0-&4-A`U*^>*f$lxF#Dg6jD|+WvJ-7*GN0UbUizg;lXElX z5i~|=ZN+jlM*lP{<>Hj?FAQ?x=O9*zHqzEPRtRfl)DKn;b_XjY(fq{2ZgxdW3|VT~ zciuwqWB~(E`dk0NAdRo}pK?^!)hq$A=W|<2Vm6t`{PdCn_K+CFcXLJ=P;=p{qm8-e zRCNmd8ed_68^As%uu43hdOYsYeGha_K!kdorA$Ab32S}^!Hxz8pBLZZ5R0!KHf4>v z-mm|HBqPo$asbGwfbQj|m%eU~OiEMWfxUbNd0E^LAmmwBlaCfY{OGlK#(i{9vS9Cs zjluvVfT~sC)^q2vu%nLA0S>mGI7IyHe=@CVWc2wgvU{HRo)9rML*nHy#i-JDf}YKI z>1&cc{ei4>8R?usXb3rkFZQC402k+Ti0iqqj}J28z8?larZr&X=`rLcw@pmyk;~d& zNL7Zmf(LD-+HkyX{IFx0Y9vPgD(pSZ&ANs_&_eXrrSBmp2iMB4{+NW61T}(NckjV; z%%JU%Ka2ge+Ndy-$#OB!2UMM?8>4Y{es*7*Dbs`6ki1BF3v1(~CloLwJ7i{;Q6RVR zZ#BsYU#}|^WYz`zH=@UZqDTX!ljvqU0JZdPri%UwAWBDZK>+-#-FudDH0AQyXLd#? zGpj)c=f(z9VM8PRfZtbH9?a!}K1rQVF4Z1ZO$lZ2=y1Z-@LB83g}PQ%xN@BGPAeaPJxAe*;XyqSkA)8hj8VHaa;_hq5qm z8{UHUkL)Rc2OTHSy1EJ2*QJ~-_7$X;`lCVTtwgrp#>xw|LD3)VXuY4zFPJOK_p=$+ ztSSM$rV^WMboi`i{h;`2Q@z4^k&Ub678rDg)M#jOpb%;*EZU)c(EUZWPdC z)MghQ-1`+lHrlb@xtH~Z;?b->*tUoVM17=E~x$3$7kHvSKJj2=U5*1 z$8ph{+r^S2aq-nrvE|@Vcqq;LmuzT$k^7!q z1OS+q5)ZC=)(>0tPd{kIR_tIs218Chh8b~`Wa&3uHC-fdZT|&`+H!6Ut9}FRpdh;_ zQx2Q5PGOxJIUf$BL~txfn&-Rkc{y%(9eP%E;M7I~(}9}uX4U&45)dt^T~D70PuGFL z{<{mnZ$fdCU;ivw+d6n8*0~N=3z{w&p+%a%>}nx|Rm2MFmgmAUrJ9vCZU7W0 zIv5e_kS=kywtbNgw8EJ68c-5-de`Yh!J@x|Ty>twJT?aes89lW9+|E~aD@w%&th$w zQJUM>ewh0FkWuO2gpDr84+ReZJc?1@y*b+qf7EWi%*20y@VzuSEL?dCJq?A1P}EkI zuIEOc;twz@5V>!P*_GGPs!Y=vri*h`w?l|KEbW2bQ#2TrHpjzZ~tP;rOHK@)QDG25RoozY>Lj)7rVx-M#D5c;TxlP(` ze!1jwHdpKo9grGROy^*T+=Gy)>mCI%lc|ntJtcViJ+>!!*dPj^iUY-FlUr)a$$*ii zrR_6dx0eIBfRL|ltPTYLjux?X4+{fYgjg6WIEIY$o;4Ia7{f-qea_=V2)lt2bdY5~ zN6-K@i{Tywk2XI8Bq!r(I#eoMr^|HpK3@HU-6Wm$rmjuxxr$qUO;-GkGai=qZry{Q zjy8Qqz!@!!Zl`VSGTeq$zXUUGHfsT@5;OhbW=7MnC@2xw(pWCLNI)g%^>T-~ghTa0 zGeIlS`TVj9@E*j?ocSPSfG(hYnAazi3kZ)E8G7!_sAv!{4guhF?+@=ltx=LR4w(2| zl(|5Dd#aBtzulOWuRYA=^K+niq-DoSOr5XR4UbLzFaS@%RDY3X9z}2o9(JdW0@u8> zL{p4&U&Mg@zRn(F)oQe?v2Cyuw)+O6){g8vx;NzA*RUG(;i6X$g5ET z*qP`V>%tDjiU<1TcSTyZhXXsFIKFvb0h6;$0f+C(sy0AL`+ z{^%o`+Ijzpzv7hOvE2K}^|g`nqxB_zyE(X!U+rrEJTJO|KC`M{9|jAzg_ z9()7D#A60OEgPC^$=udrpvP^h5P*vTcnZeZK}tPO3Ngy6={j(K;Nxqw|E{?>IUhKi zcO!cWv2J#t!$CPro$9Lr)X<$PDv=(D;1Y$<&5c(W#ef%(-UV}|wEm!1xjoKkWx4>LWP>Sw7z{4q;sn^@o-Tco@k~)3Ey7*Ih!|Q6D4k4dm zLl5UkLP`P_w>GSUj1b%F|e^NioKbuQ!}I8I=@XBLj0 zs|OHYaTy|%wu5{%5#0vRayr=Ca`Up30C=Qpgo(4m@=3sghiWtgy1GCM1B02=APW+= z{ua<|7Tv}2%ZF;b3lh-k#~>IW8sx_t#;R3Qsor4asmX(pW(k5%M3Cy1j%1Ha!Z6Up z44_F~KSu#@u0*Qq7#u*8LXxat9UP03^J6%If8&fgt#$m3f%rPA%&$0L7joR z@3OkfXn@c`Oud1`Nv%MIn_Vju3SNia)%hcXX}@ReNS$$v#Cc1&Zwj|&lRoO8C#vnS(1(J@W%D7^j!^(9u{4n zPXHzR?rpz(s4sCT1c`WgbiKP>VbLz}Nc47u0vC?&cEj;O8@b&IYE*A<0vmsA=%1z> zt;*hIntcirbxi6CDi!iY7twiu|Df;?0k&%Gr}G_KF>u2aD|n1KlB<)Caaf*MfY^TBIXaGS*Jm3`~L zYDI4nZ{~8UuilKuEGGQ;beWTl^=V@AOUY*`&r))pl$4b@hIJNmF{ap>T^F0XB=q=N z72$1DcN8g>?_G+FjAz(Sx;(By=J@-g!H>#Qhvy@Ok>E4U1033=G@(>4dFq&$u`aef z0d8wE1DmU|F<8ApnWEz7MGf*J%E}QS1(0iCa;c}5S2;bFL`uTZN6WGW`(jY9-7^rZ zr}!y0yZ5WCACssxrWUPc7}>9~#w8$SM!*#q54Gzp5?{%jh-6b}d!8V{9)E6~mo5RZ z{AK%`jDlil=5lIgHF4%5ThDV>yyyF1bPFQ&{%F)XpQDbXUZt5i&r_Bw24de-m94Tj z{&>b1o%r4+Y>nQ+;I13kTVv`#-F9Q<&tUxZn&p&1_CA43Nhv}Cvdfy4Wz8%rc zEhK~_(f3yB6FM)vnwYt6P>z@7!8z6u7XWj1IxHiPdV2z7mVX8sy04m;&}~RKF1)p^ z-s7M1*bA_KlhXMyy&9#~X{=mazZZIsN~kaZL}-=IdezYAXwKW`E#E0zlv8Jv8Romc zz1levFq7X&E@teZa-5JR`BtMJ9u{V`@S?Eap4ehbG#|hU@{L?@K?(3Y`H1tZKl`zT zQ|EEuYd2(=O&}SIC6#U1~yAp1*=+7AwkeRZ#|+r^yfZH zp=*y~HmlXfCd^sH)<9>m7hb z?DUe4hnB7G6!!QkE{F@%AhmZr?3kC!S`L1Ht?^Gj|0yBS#_AXrW23$x&30OOXNYcx z)spW4&ieSiX?Mv^v! zGbBrcikuHs0ZgYzZPaZahh* zvU2o}-i0Z00vRJs9+KxO&yTD?Yd}kzYwqm)ZszK!>aecqyzcDkxG|?rl33j z5#L!QlP=`n#rc>ich%!wHbNnbp^8r@VURgXxid~r{~$Wbrf;q~B8=z=KPTG?sAr(@ z^Sa)_0QX`b^uU9_QKg4Tu6B9w*nDwZ?~VQM+4IJrpr8X1-(8Zksp}Iemz6(HJKq97 z?P_q;)p7`bPO-~>$I-{Eg*oeNtK=>f(tGJ-!K3F6&r*A_pJhsO zoQnH1JnVxtBjy_6(7|LvgaozYazTJJn%h?2K1!_9M^PxL~+hgj? zT^%o2(8O8{41S`GfYO{ADJ&NtzFJ%5}BsMS-RCD}G?Z0tii-#xms%j=6&7a#Mt z5%Yl2F+2=kqAS@Kwvip)QKKg8((lp{0b0n?5xq zVPL|psYv5xb~rgV17##gui=s9e}BG&84-nm+pYB*v>r4j-_GrG5Be}?;${|-&V#RS+31E8rQ$yx)AV)z0MA~uh0?qY?~&bLQA9!$MjOUk$?dWu3k6N2loym$@ywVwZ&>BRzI~ls;U2Na3 zWPpJ=V(ICrwOzj-;pypF0dfoUXhL`2xC}2-1s+-?m8gDLC$5mrt*Ei)`paCcIX3a` zt-w-~&r@PghL4G6e2%|2LhaWGUGxY0-}+=O^J2GqtpEP)WH~Hg=vgy}V$S?-Q&T*K zUrAB*qd^a0g181lh3KWV?R_p=(7seNpHBM*q!dFI@ zam8@CdBPaS$&%};z#NbTN`i=a~5}fm61)C0})*R{V%XIdBB{3ZYA=>&fQ&O=A@1L zK)>>UiqJi={|O9%I+`ykZ?2^$i5Y* z=DCbpyKscy>V4S&4~z?wX2C@;yOkw+I{q#aY$FBNtRc1Z$NvY$niNKGdVjk^t6+B4 z@bXaq8r66N)?w|f12T*=KB2XLm+m31fY_pX@Lorl9kL~JY- z(LhFvJHJ~n>5_G*N{|}|r$BUd^%l9(9lK=;DRH+?juHP;A7ZSlpk%TW4GrJX3V~OkSmRc1ktuwBVirGm9n* zIzdMq@0G*_xP9{-9Sm$3y^A;mncb+ImZuO)E#;S=<&>_sFBW)5g$0^s<3i8;3ycwk zQBlh^p%T<=5`aUW6*QeO3SM9A1FCDJ93ifks{Ctzp*Dg-<>H5OW0927VjfQtv!G~8 ztd5x~!50Mma%lH!o87)xCet1#$yt-OkC*4vWB3+%3Pa*@k}U~WzouSyVa_kws*pvH zP<~`tCS2P%+;8~4FyllzCF1W%oZOu z?YYi$`Ge}hUx>%~t(vmHLnV&72kc3SvDwDr?6dZJR$bf}%o~sOkW3b{-U8gG_#5a2 zovQT(`W8I4ExMe`wuKg<++$(xNS#pxN{xg?=TCW`PyxQsiAcO`5FOS-8@T5f%=_qW z$cMF;JxG}rD;4@IHkxbQ-mN$%bVn6$->l=}ff=i=$@I?A{B`Bj+{lCocfF&+g7rUC zbpxgpi&uWz z1obJJRxVc;9+#(}*U{s3S5#BxSXr9^|Fe1c`9pvyT!wGwuL&kAgw4 zcb)4GMS0N9R{VD6xB{|9$m#sM$5?cBCm_WtTbciBMnEBblfPsQ z7rpw~y3CAkt-OygSwzin9}l?qqMEOi%)n9tXd=Bx^oszIb4m7T|{C1@|7!%1Y5U(@MckCTwUqM*NhJmS5KvF`Y=FGB|#GVzNWj}rQ#nJLY!PD7N?T& zvbW5)(uwdaBb7yZP}P=O-iX2j$=IGQq-4Zt(?U6>UU7eESgra&y$<8of#kw&c&MO) zh~5_Uu8ua5Wvzq;bW{yA@=}=MW8T~U^BkWvM_HoRRIg^?@akaBVVv)2oacTxcMI2x zs80f;Oe?cCUB6vq)V=$X_j;#I8)t;wClkS<&E6vCW1>Zy++WpnX#?N+fn6y3Gb69>6-R!_c&)u?cgr4=X1Hz=%h(>gcK@ko zV9#Nf9ggBG8~bsu%~%CIg+C^2zGI(ajS!_jI4YW@kT0X1_PdJLv__3y{SURkF}Rne zixCEnv%X#*-|`br{m(Dkn&C+6q|7ih=pLnyx9l)ikq&?3J^V6LA~O&V zY?8d~EeQf!K-2!``k+IYPJ3r+jge`0e#x&TBms-1)q5GCI=02G3faUMhem%GaiB@OU~eWF=~V7Z1G3X>}Pnl`|~WuAI0{VRjkp= ze5dRsxvOg_3cnt(iqEqGSx@!JCCtwgKG;P*QVY5i`DDJVrpt+@;Xqtbwl-t#;H0`e zuS&UGrgG1T*pG9I=(}Ux%lw~f2QDUlmwVTlx4Qcb3Tvkq1%#qEmIS+7$bD?k43CP= z`iHz-k$qB6af<8xyj<7F^Zb<)t$xk2Q`SQBSKRA6%bPXaViG{y zk8m)4{`l%2#^phd@bIr+w-m@G)6Oa!b?GK@^qqu<=yfjz%@CDEI{7pR1b%mS;5xtz zM|D!w@xNs&apME}dS`wNC@r?Ku8|z0T!nXba*Tx*qYleoO~)#qj_&!ZdS0uK)79_D zyBil*W6L)ME+eHd{~6uhvLz6C)4*}7Eoa9|KNq9IX3!y=0{=^tC`TASR<@| zV81*R*r~7pHK!N*eOB)7-|#=%i>|4(eN22qrXob1qT-nKv{KW6P)7TrD8BeD!(gKVqWxeMx#SF;X*9{pctK^N=B za~3D~>?6t{=R-E&(gz zoxO%SIaeV8a#v#HgQlcqof>%6L(53zN%rAh+fdCie^aGsMcbHW>BxeG?Uh=jaTvPQ zO_%)>UwG*E@4E_=I?HEwTgG3)lPif+>KElZUewFggw<|5B68hg=^FMJ^TAVFR1ai1 z2~|wzv1x5G)<~UQS2e&`BUIHKjF|s@Uf6`(-F_q3dFNWEcCGGUZy?~(#U*jNne&*dqFnW+N>OH?h0t2O`88{Oe*yL+v}Ov8A$ z5m()p1nZy4@}IGDygSI3Ho?)__iY`~l9S;Z+3vwTUFWW`jjUZovgK-`qN0$D!NJSh z8G}8F5~86Vbx?KQ6W{fT+OHa5W@>k&*S6q}z6jQ$v5|6g(eqrAG;G?99u1n)(#~y{ zj!!L8tUoPj4LuV(9Coh6cC9IkMLNNRX1soM^U4*h_}O#^FC)+oqM^-TsN4zW#q?W) zPK8`fZHE`Q--uoEI4y;zD~K*)DrT!SANPttMoSU%t0es{>6hhm8}9xJmRYa@Nx z&SmiGU$e^-dGx0uj!vwPCX74o;ShR@qSv@>EpQ$qCgY!qvf*@plxil$#>UWtZU5b~ z?cB?riq4AFk|{XOigoJUzEYat&FSSGF3VC=A6?#zo17X(r66=A4`qPw9Yw0B-?ucJ0)*j?Qmiqg3f%JL>*RcASw*eEUE!11H79cu4xaq=mh^ z$3UQZ0pF6uw?E;mZSRCz#o!sMmg6|12Zf{|(Ia@%x!wFo{`$RpZkKbA_lKVzg%>=+d}&XWpxAe*@zP9L83N}_RlJ&;82&+dG?>dS{UgobTv za1E3S2oYyFc0gm2H;nIFg!@MqoN z*Gr@8B*XaIc$^^N_darGxA1JO8sL5&NSCx4ViZGPU*Z{;xBT`>Dwr?j4pkS^ypZ}5 z`_7b>E>{5I8EV9}qrjgj_wXRy!p=v=AjEU{poNwi&fgkd;NGQ)f(4+U!xb(!~%#{u@si>Tgs3n5}f2WWQnTdZ<3N8olLK))X_r@Fuo7jPR^tv{I!Y4$fo9 zr^$N_;YE2+YA*GvPV8k_gJ~{`McoATSmG?U`D&qi@-f*(hvr|%%q@?$o zBHZ1LRKa`99hFsw8`|TZn51bE(%v(k@~hVB&5R#)J5=_%F1z8#K-X@9rTL>&5Yk-o z{Xv7G$vqHsGl{zo#(tnHP}46^Q*dG}CpIQ#n#>3gpAavJr~meD%1dlP>C1Z?>PF@a zjNIg?4XvqJ*=vJu_IKMft*LHT5gux!Sw$oYxoL^iiMK4!AdCI)(D_AOOD1JT3{&}) ztl#qR>?eWsUjDoHpJ7UV$ohd~lA?xCG-t?cRb#~j!(E}uNO~hw_cNNl;*Acp4F0g4 zZ(;xI!hVTtpZPo8mg)&6`qgW~Rl0Mdq19EW)IUiQvHAjQ%5)hpiefzS_+dB1hY%EUt1yZ8oavmFhwS%lijf_H>Qi+b=zf?%%i~ z=DhfCM`x$f9fytr@``A&?W(3~d{>{Ew(}8P~Z!N^m7b=p^-NP{`BsFImE1`KLNT=ds zobIy^@}+)x%(kJCw_#oJ??a19sdf4ymD-=JETNa1c(rQe?KDC>_42%ie?=eCN7kq0 zWZ z%BxS<@25Q^8DxVTT{mOoW6B&kWmQ#cE35pypAKwh^J!-&+E@@oUGh31HB;IQ@%O50R~`82tM&R>oe zk*VgpLlHEW>ldmH+2vqM8kp6~i?bzWzP<(^%o*jopDV^Oo;@Y~;JC2*sfnG2M^hHL zt!kcP?^v*Hi{YYPv!xyPWnol`hv|AGO^Pq0Lc-~T(|T^8!IpzB776H{aAz%Qx{dAAxy{6t~qVLJHA%DJk4Xw z)DlZsvas9^?c1XE-P(!|mH{%K`f9>15@69%K@O|DU9@Py)GHY*^YqA9>RX%Xx_ezT zj%wSC8cW+*%<}HDI}5qc``^f?Wb7krOec+x>2rk82BQlxQc(=6lxj+(%7+t4G5RTh zS)=Q1E$dt*+VZsiZ1z;t86$)$7=2==jjF62kRFe*{ygvVD%!Me7S9LoaUV<3-xG04 z8~m3!lJK**bZzH8FUj{U>k_UbyVC5u^0j_4X*1sK%<1VN+6zt<1KERcXsepi_>lzs zhPVUtZt>IV%SxqvWvFsr~sAd`gi3S}%@<1Hg1nu~xi=*#6H=L)9DQVE?JCQZ)fj)hZ~n%^T-zuV@_NOi+f zgW80(jH(3rdt+$%69(mqq((A3JGhZ=+G?3A?$u91%o! z<(lm&V^BAPI=jKWoXk(px-xG2ilJ&33R!u!N?CGl{8>{4<%k3w-4PTnwPrc^!=uE8$(`8w6x%K%z+zl3RK>M{W-2E z8+y{PAXb@GH|gZ@kvEr9PJr_ljHwj^!A`G^71j+C;2}?|fgM!k_t-){1vMN@;1ru~< zovO?(tk5SfOs~4o3JC;bI@}u)o2v_pNuK<*1eG!K5lLGWD*1czN=Cg`IJODHdR*(r z5-UO(-F`tV{AZ*v3s%ULnf_Yp`o3nO-_!cqO+&};`&IU?d3^8Ma{W`CR*c0$7K8be zj@&ubi^Al|NETau&sO_&J{*^1HYULzZ;ZVd<4w^ON*bN0vKjsTyNih|?}yYvcSjIy zXBdK*>+$rAy#6l~u~W20-JGMCUIx1}ccvsp@ti76sj^N`tVnwQWiD`*!4}mV=7-axEHe;&tlD9#ar zo@<*&R&$B(&#CTogc=DYo~MiJ)8(hTo%3cy5L1l+}E3A!Dd7{l3$^YalKz z2Bpm1fAR6->1g33He+m~_NMsu>7J~COByCv562iqlSB1IzRWX;;W+G7-e?Ai)RMYt zeCNlhEBfTUV&Y;2YP~xvQv_i+L-^_ynwJJ49>Z@qEz^8;EoI=NYlA{NUj24@LOTFe z`wjI*=xvj5C8g(7)_{uLWM?Wj^Kzc{KQf&jf#}A_4$WKvo2j2FoPrr7f>{~v!%J*T z7GY#mir<#f?|2RkCCoY9dH0cu;(blAfPF?~3JteW@ja!u{Gy^z@$0HKhz~5uc|RUm z{E-y({+Z2RsJ5is&H13S;^T@IODsbUZ=Pt*6;z?M#Nf--Rya_&t0vmBiJN9fA#)QqiaN zzai;zv!v?f1cbD z_GEi~%?UI4bD{IAGPgZ{6fzWdxhy%WKou7$)WY7r=SFTaW*DfE{+dn;1lDkCA`x(R)m=z6xy9P6_99>|@kn2qnRtu%&jni6V z?Huda2v_j1Zq0DBtNh3rGCE|qIbrXm5pO6xpY8YRg(>=nvenbx+Kj710_kr&Gea1?)VsG*If7l_MgL^?NeL~jYa}o!BQguD#W-PU9U;QXfB5ZAS48Q#m8Pwp4=2p( za}6Biud&}G>@mRvi2epf_Cs2CjAvQHxJ|*L={0y)CGSMMuv>PsLnDV;W4HMm>{dnK zbz?26I4d1bt9{QG{(2gROxQP7b14-+FZOo?5ozy8sx{(zZe@k?AfK368XWYD^Rl)(}^!2C6>bQ_7Uev4ZRYy zvm-D`6G{|I$&=JKP)C*Rwm$8a_l{E4RD}7=!hA7hjiO|*3aCS>az0dB@yH;RV(2an zk3l{;PwkV0oiM=2RG~3h7179|f&KH5;f*P);oQ=AkI=-+LL5(IKap^*-_xG#CxaI) zsC8ESJ9CH?;Red|CMCQz672aES+ZzDj})j{P?^0g&E+WaGbg4~Ms9uP|+DgdX zFT_5{VJTMHOAbszTp#xaAf%9m`Mh%6t+F(J?eDrHS2IIL#>UunxiGuLDR9LetKZ}O z8yc&IsbmI*27>kn!2juVeXrn8OEGL`vM00TI)v%0YE8&aDUa#>Hf)adY7EPEL6@Ng z(FSd{8oefnY9)>AES}tI+t#@Z)Wy1LP<}UZ5SvJN##-&GJZ;X#g!ySyQJc0cX-`-2 zMKM|EOJ8pv!L4!3l-YT!+%VJ`)2s5RTn}V9Nf)vmSNC3k#kUal5KZ;*sT$g$D(gfP zW9e}9i}H$Q>JKoJ$OWDLt_Sp?os!IKZr|n2jw%&ci@M)eX>V+Rwf~lj&^I>HAowVj z$I_l7vV@bATQ!#xeCVu~en<&Qk{&klVn9pkAS2|XklYL{?U3(WMEw||SKE)s60{k! zTIdL0VxnPKoq~@H(ape1F3wgZ|IXg*BCTr-eCLtnwCB`Rc5yaibF2Av%!dtUKKRom zHaT?ky7y!GiEnehh91*ydPrAJmtDREJUo!~rR~JkwAFfC_W|5+u4SQ5bPXF&D(uTHSKlf>uc7MmgDHhOpBZb#3$5FowfI! zM|^;zCf}88_ICDOiZqgUqc5+@NXx=>E^j%BzR8XP+#Elac(yi6?GcNtEJOFc8ptTn z_p2ic#W;i!d@ne?I@Cmrsy}Abs7Q7ODFkO1Ql{{@7b~`kW}654;kUaB>yil1sL`(G z<;(KzpI;fWAN|v;ykKkFsv}r@q}g+TxLL3!n(0udArToU=VXM%Y7PG%;=j9;j_uwO05cZSq=ZdqH7d16} zx%E6Ir~YKZcVe2`4Vf@{K!y?nU(LdJCMy+L2!kO|<*(SVV+R&>(6ICT27{(eIF?Tj z7OSSl#%)bk6J+!){!6as*LBI|>w@8$T+2~;JgHO{AC7P=%d2pm1=77Z6wUC{$n$BJ zx-x>sB;?=L_XE?AwDzV1?JI=F_|nVix_^(X9ZBOO10!I7z%-zmH>U-8L#Otek0V$y zHO`VXV)JbFXi<@UHi=9Tp5!8ya&3~$3`dhSZhaAvzLDXb6b3Dt|yca2TzEx)7p+|n|yw08bV!xFbc6kl%T zquBLJNR!|=zHAs^A!!VG z^R>_Ro$3<(!^b?=)Dkbx9ary>QDA^mS7SY~YlEk*`EH&?lFE8B#Z`b|*C*N$nJt{H zy5#u98n*co@$Csg7)VG znj_ob%sX`-ebcH1HeG#sxbkZJ>{O-kA4PRhEm8M}OyeyMx!cRi687T~OtE(ChmFR5 zB`q$S28%RGWqAO>PfhxL5jL3UJAnE%d!He*{h?mvbF`6931q?OI-_)$Mb&{bTB&c4 zv}7p7_UKE75OuxpzXePdCEVO!-Yy(0F1+7bHNU8kmHmnAm+Tv_R*@S62eCc0i^x(o z_|d1EgjU+dbmOxnV{H)OlDoXo9?ioeyzI?|JY|yd6_F?fDy6fTpeyYiF_Gb1dCdpx z+w>QC`QY$=Y*wU$%^N!W#~*qqBa@l)^;#tk#QVG6?%`vT0-S>0g%_ML2U_=QM?c3T zrutk7&XlltPizJC(G6zq9KF93LD_rK{amC%?Ia?r$_9-EiQTbJH@UhiT0*1B?^hYl zZXHqwBO8^ZC*udj&4=oPPN%cCCfTQ-vR1Sefh!hF+Z=7~q46;TH(!X`bXWnSNNB(u zOP&t%o_<*#NE_%Eu`ouwaF#5SV39bC`tamc?BOk=B3VtTaEfpNGBi@-fyi0Kt(JsY zAy-v6bx(9*u>f(sK;|#?wD=yujX0Z$$QxmbzF6g}#nChBpR_%?|J_DUeopN!tSo)n zc>S{m$|XA1Ia>6GE0|T>ia7)@u-B{>HsSvDT|TTz-rTfr*iFHW@SgAR7Bytaj@2w} zT9w(~c=6~@X&5&du13DDZQ)=x%cV&+)I=WH%({|#h}deH$d7w+--xabs}B%=-_qOY zT{gNBy($fVLY{vigG2qxp0B)??3@-32)&|A{TQ52%YeznMtRot)rUAe1Detdkz74^ zuKmLoOH=DM4N^3q1Td)M_E&{xH$JrwTd~U`GUco%F45e$8dnltmJn3aa$V=*qbngx z9H`wbc>*hFOED;84A4ZmBu24w0Fsdl>F~Gxy7gzgzpugu--*h$MPUo8C*(YXY3E02>mL~G2j|;EV*%`@X`+qJ!yWCE z#F~XMa?so5;C0ZXa~u`#Z4Hu{B8FJWXLAkorVbh%mb{Jd6e68Yu0;5c+68b7AgblO z77>RRNQE=>P1bNWDf#;$PE%(6j#O4;hL%KYZoY;O>^DrDG*drVB)6r4RX`0*mG?0R zRVH)34ac-IIT5Nf?AC%23;8uQI+kgOY9r5WIVNd813#}n@A-1+KZJ-^+X-Hcyfikn zxwZDknN*G8&!x06y%N3(`Ue@FYiMozAx$acv-{Om-PKiV-&KU)GF}RpwKhR%fU9onaFEV+iOaBGGw2ML{>Tt} zebcrics{nRxD5L|Sf)j5$gODFZQ9Tf`R9AjUZ?*_Ct)N{D#xW?RDp@fcZaCYFs-p_ z$G6GATE63zRL(ysBr~4MFGQ|8FlyZ6{zV)9vxq1O{GF@JAS-rA37Xh*6(2wR$ARZ% zTmq_vN}N)Q5mKhgAyw64-TAA?(XFIJd+v@~N2z5B{)G5yhsl;pM1zb2ZIB5?dN1Qw zOLUA1wQO{TGElAGe-}fA!5~Ym!NkM_C9HoQ*7{<;uK4UsY1}gUEz0W_GU;qt8}6Dl z5j4GB%aq?u>2~^NE`{)dw6NsNw&#w?kek*+(X~7(l4v zd@#qAp4+C&7&Fz870(}1r#t_~=y@eZ-%@#1x-d8wF0)HO7GG|_o7)MFa3N#2>c);# z5bqOJfiCinMr+L;;TMsW(Na*PKRgJTlC}krDw zbUf#Y#I3iTDkP~hn?6$#Th{74T)&4E91PK#L)?Yxjzws|B^upjb@rYFc{m^H)=%M@cActuF+L%R2 ztj?Y*dgEaAIp!as%K^E~`W0Y?SB~n9CS9JS;yBm0Vg|9GjFpC4FWaW9LEFI_m9*E( zKLB-<4a!nUzDlGudRVyn^}VH8*kii9y@9S*mLWPa+pC~-pqWXSGRNIOfBNVEp?_t5 zTI0St*<{#@(D04lmjC=;Er8oVQr>8h&U#@{>9EhtE;HoS4H59`f(|nhpcm!rTl_KJ zYtPE7-yJ>$np=Tau^{qT)vi*eWM+QFOKB)TT!N)uY_e`D7yH#_h)_*G-Zgd zi@1=NnajVFNEycA(k;hC@gs`~(?SUMGhP!blcK`zq$siNY!T)?0<*GfPa)O^mk3jogu@1#T@Q zv*Ozov-xbJ(NX7Lc;_&(KdFM z{0o+C@%~GWeR0@|>wY?vSyJ!lO5u6cBKD5|*u>h5kEJ@x7I@qnEDf5B-Ij}O&nd~t zp$;XULI0EErjg;BO22Ra3rOLho=cY%RlAvb zT`K95Z`JnGh149XuRQwgvis`B?DWq39dqHm-3Fs6+dItOR^My+x-BXI%sY*|pCq0ii`P>;X1w$oeSd()(Zf~2`~mow<+tiWOo%oAl&qfkk8nEOw=sQhN2XCg zQWXWc>sZm!hyr-M)R-RA6gp4e{_H)0YQN$sOhDlb3O7qOl6MD&zBZnaq_~`k+Fliy z;u~0U#^P}3v(w`$p96cSlwqO~QAf!rlHSttbjkS#c1nHyc$7pi+I?J>_eHnQ1~@Pq z8Vol!HXwBcPB&u%s5>47zCqz`zqlG`4jKhcUcBg)@vU+U<5g^;hMp075i1pNOsQrzUy zwi+$ef^a+}61gZs$-tZrZuv?~>`17W_HJaZUB81kIw#yMcP<5AGv*xw!(Meqejs3AFs)Pa6nv@8C+AV;>A21Awhu zC=DFsZ2tIyrdpUaeFb1w5!(WlKkP2HS79np>Av0+U>e`w9Opp0ji$ma17~CY%#vgcGT!!Sdm~e5osI%`<@+a{5FjW73x20h?;o%^eaZN#9q1Oc^`~{1ki&&Wymb zB#kBV!XD{EL3n6Ih|HE`JHWuR$|mQ(Q1xm^hl}`BB=_0fxZT%}ZkOCEyG#{pbWfwGZmfysZd)KkOtX zZ|Kc3_#Z$NfH5A&58Hc{c6Pu9U7_#&^1`J>;gW)DHtsS5G~&rGpym-QZz%4-`aXh3 zs0#{-l``>ee!+Xa0i5Nq^xhX`o4&Eoig1J1JQ@8t9%SU@R|g6+{{DXeTLD0HdZ-6% zoK3%gkL83&4Xko@&9AC?FeE3f^Z%alO53}7HDnq?yVTm+g&bRk2c)WFdR<=3S zSu71+1p5+8`A0k-bXAo{!qVZ;V`MryJMbsb0{}-7f@miO=Or*Gay7t)=p>&3vx3^> z13q_cb8dKh)pUI51gi<=LtZgf_?dV0D6hKQ{#rmT#0+$KTSBcf^6F}HW8hygrndt= zLgf&u{houv?E3-BP_KMGKcH`2 z8h%`z0yb>G%lok9i;zGw!2xE6a83ei{Z~{^$iIyhzJ7>ZQ%D;cVarm7^-@4{f0nvZ z;BbCtW3nnO9NMCl|7N_q)9@XC^M~Bma3T{`h=d`Vo{oM{47T`^IG6jwk%LL@Vf1@R#v0KBQ05$FQ$*n4xETg>UtMTU#b$xutY z6);scXr(&W)vEu!kMePc72tqUliUe&{=xYF#{mt6w#Sdons0#U83ubqYrLyp1T29K zru1}2GL7QGe{WUp8UGcZI$0k~;tWOwi2ibslswwf1hal)28(xr)C)CFW7trA5CC?1 zlD#7sWkOjF91*I_L+5}NV{dR!2)xE z6mvG)Gc}L+m=c?_Vl*%J7>pWRl)t2~x5qjF7PNv7)~gF`h-e`|jNEr1T`JSq{MR5Q z#^6g*eSC{38{D5au7ET6f8*kMmMRz84JYarwEo+ufFKl5oTAzeq%yaM$iPk&{Y$R1 z!yAt%GCS?u8%HE9c|A;pRz(04>J48Bt*czmnRYh(x&byCq(1dLn$emQghe4H?~O-) z&5+gIF+Ff#NP41WA#nu4;&&l&l;MIa9NZQM|B=N1LVcGae|rHuv~SncXrgXc%g$$6 z?uQ(*nWz^5O$cr0`_@2B>I9JgT`lJW;{w=CO0>#fkDN;TJ_+n3HRq<_hAm40ooQZQ zMwS{)o+hSx?dcjxKp(0y4~#y3Zy@z$hPnxG`pKXt3cm${kDNN@2TYp(JyExx8|gh8 zLWTWV{{y;@gWIMll}G)T9YvJ4X@>7oYS%>Q(=S zRW{4}FcmO*@&R=LKNfdvN(^d7Nc^&K_bDF2^sYeSqi`|QsWX}>;a0OX7ZL%Z9x>>G zjnxLAfraiRX8;XwL)z&0BJ66!YD*pS@W{^_f7dWx?t$T~bmKxER@(C!kl;&LKk?=>rj#Dv0i+ z|C&t+IIN?oq;tO3G-jG+{E{ac{0{Ajys6c}eCU~C&WHE^PFzIxgX-0_(n;LV_^(@r zvoJl#kk7{KN~rmG)E9R85#oIZfCmhI_oG{%iJ|uYMmZ1om?JAdnOgu(kvDZ|CpJgKL4rj3a6fWyVusi`w0`+gz-{QMVez-p zMr1vtic5GdfR`S1f7?4>S1A5C(N;tw{Yvsun3)m%48R`M_Ke)9-i0nstJ`hb+RE@D&5~CtfQ6V-dzL_dcOeKNKvA1)u`PaYYndzHN2gwqFHf0x( zI6F>km;LR`X z9;rJT9$A)9oJO-@4vHerZ+66^glKx8Te!gT2_5aE`b9Z+pg$>r1l_83_BOOLrfmtu;;uN|JV{1_L1u-#S{7u-SETj(- ze@4}ymUecMH}YHV5a^P*we^b-Di&>H<1_%x-wL)JK?G!Q}8=244d+9;zB7N=);U>tvVI?T}27x<EX z=ee|L2t_E@cmbwZMob2@pZ{!e;TE_44`t!AArAbRu~%C1)pY^l<^oWY52%KsuuYOa z`&P&M8x!SbAz=Lkz*2Q}b*Ymc(0NIHehJ5ZjC#3c^O3?==cv)yaAQ4eHfyfoFPekh z*ce5+t-C_uEVig@%>1iiuFHVrS9Qkb;#gn=i~M&fP8W|sf7Uo~QDDPH#Gu;<)*oc6 zuf1Yi|1|B`U#iGOIJM`!1#IimqO&NInCtU858T*3@VV?Jg&F|FBj&pL`9nwu=(#A$ zQk>bM3~G%;cZ^*4gFO#_xg_0rOSB`3RY8}dNEKC(s$4UnlJ}TBODH-vO7l$T+`z=# zeCex<1DEd6j`@!kq3*v36z!CLo(a{(7&k=sLpq(Axc?ZOz2?BIvMJN8L}ajU=ET8Q!d_wwY(~T6@b9@{@0#hns|wVlt5?8>L}Juk?#1g z@2c_}xrUMn%x;N1ZX!(1%JQlkH=M&*b*ZoXWHO6+DbJ)D@|b-W>0slU(cAsTN&0w9 zXJ%PzFVwk&15Fcq;6jg=7u*alvI=!Z)G&Tgb2tX{p8(I#QTmDnEGMJlm?Kp~uccTB zF{^T2(=e}iSaH#0`4uxY)gQ_9^OK{dA#hJA9U%8bd8t4iv`BQ^L;Ye5p^ahhUF6yO z#|c+~@JsxatgAS9N0&D2>ou%M z;)Zfnk}5&MAawwi9M@TInvsw5TQL5=Q|fXvkx3$SQd$})Sca6=FJCzw`s!yK`jwkq z1UC2`fa1-~0YVNl#mAd3H-D5+&sp@CD$zE7jvC*it zS7UG6Txu5jd3gp^ulyKLKQu&Qh4zo`mYPX;zjjU1qT<(R;l01IB)A;8>bYIZ-k^B% zM5gU%K0#R?)U-hKVNzS~s8#_N%qWoXud7b5yiL*8UHmE{at(KmWpSM!PnQ@l1N^`O zkZ)rVeAKXuk5cn{-E>wES&&r`NO2)O2Xrc}c5$SQOnYETNLhTN1=iHy<4hyl^G-`A^#&Lfik}s~i^qy}v#5M$i3w1qqNo)40QCL+~^%4eC#ctcqt_GZS`kxgt`)`qfs-uo{SaX*JC3IN-z6xsAqLeSs@Kkn_Ifo`4)R394M7dePgdAboo3V6Zf7? zcTZQ9QLhS5pE+)Ibx@AhFq;aoDofZ3kuC-&%vPrVVg3J=cNr z^_1G?#nqGyey?7_cJ2M*i@0&sx##KgM;9G#2q*+@Pnfe`TvVK%aY~s*QT$Moy_H(| ze7P%`-P7|Bn>%p5<~zMxr)#$7YmQGGF$d&3cD@S!fXNEf{^CQM4nvV^xk-D=!cDp$ z^C?4g?fCVphd1!2{zvcZk0(3?A4@z~r=A1B4g{peyDcB|qwp-}a;Gd!$4y0bc}ZYj za{>&4RUu+EPx`cAvvz?}@^lYH&!}wt>!HnK>@Qa<-Q&mHHpT@P2>{8bY^M0gcR)nxozNNf=%5ZPUfV>y{6MFId90)YYQ`*XoEENfpmgrMu zucbzaUxszq+|Bwglr`TI_c%tsO6R|u54hsTS1mquD+}_USXqw#wXffnH+1g0hg~&! zXO$kSYh#Wm+L)|fcQ{|bzya9sFo+E10QvML+Rl$7w9^{&noe2lhbPMrNzlPV(p(%j zu!3(T=UpAscNhg=c>&-|V|U-6qpK3NOT-AN*-W6V-?(Q?Jl=S0J?O^d;ko32y4;GA z&$t-LU&8beJF1*;C-uf`NdGT^dX+pSjjtZVPHj5keioj4wc6TV(q+``MEIKofi;!( z4|Bi-7HO9ZD@YSwPCK?yAQ!(V-HN_YdEcf4xJPAWCwWb1F8vy=v>p&D&Qd^;MXw(C zpOvOH-_tW%sgh8PcX?QwuOqBNjpr*0^gX(QreW+c=DZOkLa1rEUBa?TmGkO4Jh*)>3_07Smcl{0Og?pc)kD{Q$$e~ zKp2*qPH+?Zd*q=0^7UnEm?~5V+gv<0^gE-cY$iKN>KF&b8`myE-VO#0XdhEO=gANt zWr#u?Oy^}OM0OvTbr}A-zy4N$S6pqyy#(F*$JAU|zRc&5qQH~X&23Ye7%Oxwg(0q^ z#S>el258RQPorB?vsHIc_jxX=i50uvY@43L3uoL2JKhnTk60a@G77Jw-m&$xujP{m zYe;M0_|6`=#*WyDP8<1hPwBpdNkqk%_2JKNXKOv@#iTgD=KzenI16+91c7E24H2c3 zhTHvVsHSt28XS+T05=dM^MR}g$nR50?tN|ql^d(&oy@4gL3Pu^=~Os+e!pE0Rjx|@ zcz5xZLUgPS75a^;?hiP+q_>j94+MR)e#SGKN;Oku%C7LKs#pZDy^vJ z%J0cY2M&Am%#?lj4F#>eY2+^U&z})ce3~VF6fHdjRiVx&G&2f;E581^CWDfZ;NDJy zF^*EA0L^~PSpB*P#a`7^B>^cI;GPcX4j}|Uny7YIegc_e@o^7+7 zzXVlFU)VX;>-HEI^7$tVD(c3p%?{+mip;8z$q_p;UvraR>M*xu8s9wp{mhT22qdzC z`MH|--<7r8o_OZRaw_G_sa+MZTx-7tnBZ1Y4sS7~P^GeMAhqpL53e?Jfg0>Brjy^d zSal1gD{bVCUvPKvynO0))9#J{{}hO9Cu`IWW_-#hnI-Z;U5GVEcSulOaQU}Ndm(E9 zxv^feo`-2lgMq^oy43QCrekO+0Kr~sQb$iX4tZfW*DSJNA{$qN-|ufu7diMYFd&!W z^!NH4{4~oN358dJWu~2gv&c1>( z81y$8}xwMlAR5O-Gz$G7~L%EDob|_xE+i$io0Tn2eUscRVq%lq%kzcL`vHaKitYb zntZqLvwgS4X4>(_i;20Gba6W)&#B8_E6aJp{ZdI(-7{1%1bX+7DvlZ@>dkBk2Id+R z@aI*Mgx2`ej>1Zt&b-~+++J2bp$0%ZfXr(U8}6rD;vR5QUl{;my@AaNK;W4Gn))jr z*0AzP)8RH1R!4gK4!0ii-`kAMoZvnYV2<$3#8j*O;w`+J3~X725BdYb*v)^T>5;}Ja%rOnC+rHYs44r@&gaO%;<{tZ&6YijG=TxG9( ze8hvV3PgdMo)G88e(B;(cw!0)O6maO=C$7IkVo8SH8*c$cu;hnB;~zO2IqS!5+G~> z8W#afFw}4`Qw0169S}gjl1hu*AP7C~7SrXnO3HIfSszU@%rEW|vU;t$UZ(nG#F$A^ zTEEdmAzXGZJM?=2)56%qp^dSW%J6)`gGgdUBnfKrD#db0r&|~)RiuGV&Q!$j-ilNL z`RPR3WL~`vL-bum;Ie@vBjK=9x-`k5QI|p39$Y$eL+Fu`7BekJCkG&>-DaBhSV4d^ zhoW!WO_-xKWTg^!$$D?~=?`WdoOd7N%Ne9Imn_Sl-wKH42SGOE7S~|>>ihs_>)Lp^ z+4r%I5KKpY8)T_+#PVEHyua_Rzn|OcvUOt*)cAPvf3*Ov_XsM?;loxi#U-BtDSJx8 zo~<_-u;0(e92oC6%?#Zgih2-*k~>Cg`b=b{%qc!STqi3<^?Ss*M&@x&WbUhO3=Oru zyonIrs{^qL@ZhlEc9mfcfSGd}B4h57LJ+I`2YGyhKT;N8boSwq;V2?X7=P5Azccz> zPqORU=Y|{ZbU4c&ORf8GoAF7ZuT&ZE;Q)Es<`9#|R0hOltEs73-cs|5-fK8^V?>w9 zrZN)|EXHq`@w2*-NR-h!M8O0-KjRp3=qld6khwTJ$Ja!D2?OW+9v?E?&i3b2Jlp+#7-%rE;iewr6HF%jw1lD^EvRbJ1KiCn-(KwrCnNAm6 zANwT&E|+L^{*hd5`#W>ezD@-cw|@nQ$RaXFb%GGZ6dT2{>!ynK(u?2F>Uhhh)oK*0 zMk}HMKMP?KFCk-AJhH8&6D>W~|Af0j#cXu&#ki`Rlik^KV(ohAmLiWbXnBNB&BkTh zynW!G7f)gH-oLH3{62j5XSBU6b$%~7MzBgVdM4(ic|M`z7PmpII#k~6ic%4VqjFUq zrjjMU8LJWVbA5t2**PE1I%9b?HwD*hvS z%)0oLaW#zc=Z{#P?QE2mYILKg#oqCRTY+0fUVB%DrpkiIr(Q;#(^!WaUpS^dRi~l$I>ysdCKG{~xXyk% zJK{ReyT&&K1L;Pe>VC6yo7ZRjqLD73Fj)@9nO- z+IKHawK5s`Cfd?kc=el9!aH6?eIch1c}|y(yvaD0)3%?}%R!Su`Zw%e*5$fmJ^h}P zy2&2AtF9KZo2XRuKMe8DUoUGi0`TR^y9@Dm8dq#U1tI}!>~A<(voSdGcIPq=ta&Y3 z)N-59^p+n6TmGr~0cZ2p@s&?CPD{rlPdg0}_uWo+If$71t%=E#ztoFI1O7%B!dOkE z14ioRm0;uokcvXCELWX2c0N^jZEAD3@^;-5x@b;Gi}>to^*g+b_d_iGlHle)TS7mw zM4DnFH2o0|m{!FYP~(x;>9B)A z83?nl1rfWv2C&#WVp7+Y6c3QGKdXl5)NY2hk1tp#%TNF2DOr=y@0s{o)VB7oD?&%i z|E4X6HbQ#GHTN}_Yh$=rvutOn&6Db-g``WJA1P_0zI5gbyw3gpQrySjU*?8)LrV4n zS0$atT}kVIp7E>^6euG%1R~Ggeesi8Yv7HR`gG53jG(wxQU+p_{Y7`1?!I98Y>|j8 za^8A%z?s`r6zR8@1z=XXfvDy+Py23KC@F{E@UK@v91~vsq8+~vbG!t>9m~a~n>>bo zc=l65AIqqm!;j~xA0mWJctFP8=U{WR>1@3T3xz5G)HSVZyr)HrG{7JlX)Jt};*}3C zE4tJcJ$;)~r28%{E5matL69E%Qe48WrFS+y)`V?JM6;CPTIL?-loML~4Qmef6J61V zp24bjpH!2fpIF!DTdYn@IClDIJWmBdWVpO&Lc1_S@R}mg;d+7=vq)K{0aG{A$h#?` znC*a6v{|nR;^AI5K1ZI-^Pb6gOgV)_FpAzC*p=zz ze{4NaX`{RH*l^sXynoH8%sx-QL*xY$;Mmaq`OLzNE&SF;@#xvwnCwYvX+^dlqQWBo zkEd%6>pSe;Eq=4P%!S3((lVBp?Pc4xwQSqA?OIqim+jxDz3=<`ue$2G`kv=J2lu(3 z`#h3+#*8f~%M+BMb#&NlHp#ICmlGwT;f2MXQ|ey_3JY#DP1A%zE}M`^$yqAya!Wn% z$YZMwrd5WdHJmo|rL*BF48Ck`37j^qD^75I{*L^b#uh0eClU!DGxd2E$pg>ZRHi1;|Sx+S6VSbDVBf$m&j4UuME_hd_N2Aiu7*9? zDpbm~P&9g265v+At&}G#csI-l9Jm=vPi|a!uZ!sm{>8{2k+%Sb`QO^^Cun+B3NH>~ zk0s~O%rkX4eZCZ=+?7GbxjK6$fVgOwdTpGRIQwM%wXQ)<;9z>BES$MkB@qUh?Ig0LapnBT)h*{Dfk5_-p>>T9< z(Dt(QnCUhlLeB2W&l?QHZ~x|;I`%s|zo8~rGe#Y6T1Iat2x-NiUAMN;oVQusnng&A zEyx3M!abab#e^K1n~=OmB!h9+q?oT=q9C3CiN z?OeCMzLpI6OI&s~i3d-0W;`>JVSiZ;5T0NJ5?huZJgfhqF7+oNZC)otA$`j`@x{Ngrn{ zl&8Mki=@};5^$aK#Q~y2ODztimd(3Z9=o*K(?G@&SX~zpNl%t8KjBcvzSGFbKaq&H zVRqO@N9@Rr$uFjJ#^tvBf}Ic>BrB>c7Y?5#$nW@qO9eB1fvqvho<200Us*5N{CYPW zW&$mElc(fNVGfykzPMB*$m!ZIM+hVWD{G&L?}<$ze^hK5yZW9(j(yKeUMC=})HjfI zNf)R*&0D1i>h%iTR+_j3SMFl2hG=s0EhOrRXG?9o6ofmmHXDHaguZLefpSDe{tc>)* zq;%e8udpLI<5Wi^H($BLGgNnrK6dCoej+w9yG_n zi0`mayJEe0wCfUww5)-PNm*aZ)j3bXd-+|AFNXY^H*T7XL+q24C#dM{qtu;QnBb&! zNky4v|5)FA{p8&18&o(3yujEtk#JMu?1*!_JGN>^)M#v)xcJ@37B03*%C^}wo5DhP zml#T)ViGRtk~S538-E#52y2z2_7M<4ejgYD9V{U2Pz>}km+qkn1{NkS!PV1DF9!{+ zHr@T7&v+b;3VGXpw(}m(U_tG@+f- zy19L6Z{2mAc#awUmh2+E_9U)YQKH-_BkTH=MaD4WbK+GxLnl$p1|+x-AA6NG4btn0 z%p0=vwmMhGlyUo<- zuZ@YYGKyfKa(pWpFG0c3+A?wc=%L>1Cex79pUwWlZwMxS(ykShTwy}D#CH*%Ep2up zTVE??q>Q5S8+c?ds$r|OxGQ|surxMJ%8R4g#=mzks{U#9Y$gYz5NsX}`(%MzUqO_z zZL;bpq-~HXn<{}h0lfp!{PJ6#TGs1pa)_82n*Kb_?LCsO3g!gI;J^TMhWn*hSw+Pb zkYWcH7jY1Jvp!;PM*41mV^3=JWIhk__M&ILaG95x6Q2*i`tt!F7W;>eBwz+&d=>o8 zGxpcs%x5-ABg$fCkiR+(ut=xJ>UqFw9u<@Rq!2&Dm3f|c zcDWjZ)hIscF-wJ7ri+gVzO&po?irbL0liK^-RC%M%=8lYD;15(u*6Rcw4c~NYYFGKr}e1mY1tMZR3vUlY->$ypdp*R4|{u7ZgRdw zYs(NlvI0I{(>R~F^}mn#ozZX8Qr~36m zlo!?0(6a9q=jMJxP*oD9a{Le4&fS|5u-FF=e@YyxYx={IJ$jaIAIjCNYfdr(=z2vD z&r}?1I_NG#EXos;FXfbuy#)TGkSN7Hi3thkzvX4RueiB^xs&l1JbM;0e3kQP{lg>X z*JG+zUiUru%>J!-iu(!~OhIB4P$LOl3HU#g2z^OGY}mUCw4v?Jg=R- z5OzF_Tjk6i{%lAc>q}w@jf;R`GL6CtF`jRvA19k)}A_%7ty`Tk`uD&)6Ap2R~vvC_Y~aH5#yjbX}Fek{efO zmbcF`&#kd}JBgEQp9@|%hSTnhlwS5NktkuAev2oBL?OGEvr}-^V8^oHG2O~09eCjK zdG|_vtgnp4ui#G~ZF*wW_8BP#i9d>ps%rNj&n;6LuNNWF!;q-;-KvxPlw^;OFABKU zWG{=h7gpxOZ=;JP38U!~dlL5IPFP6rO-HEzhJxrMUgjY5yUb6@CTJl4Gp={7UiZKH zM7`J@=TPQAR4$k4`cZ4j{>L3`Hu9$jY0b|%NjO7SCbT_kDWip{g;7ZKNX#{8jq7Ef(Itrc)rrH;uDyM6LwA##=yad3^Hf`TN*>bov zOu!47Zy9_>UAD~{@_cx_fjQ(JS*KBtyT6A$q}Lxv34&*kQs-xNOMAXxQOq9_%-Be{ zjJr5iQZ4vCh;tjFV9Y;TS|A`am~8*J zK{+j64+@nP`z(qE&P|eGV2d{dRW|0r$GFo#(P{S`!YK6BN>z6Pax_nDfhne95^`<~ zz4g+?!QHVY?Q)5Rw81>+`O#cgbNVZUY~$5(wi@}ylZkeG3*W!r{M8M8 z-RTWb7~i8H=?DnS!v>=>+^jg##AzJ3klPpj`|ueAvYxoOo|V})^4v2z2PFDS?}1T( zO^qnYN&*ULN}qY-lJj1%(Zzk{E9*q3ElCM;oKnnVQD=k-F%sX{J1?v6)tn?LC z7e~*+0x|PxW&b=x#vOc;_l>)UajYX84{IPzmV3$_1+f+uLPWbf{c?m((ZT5VNR3)* z@rf)NGbf3SqJSxc$UvBeQijoxdCW^H)gH@!V)RaBmiVMTAK0Y801IsGwZS@Jo>z3e zj;h5~Htem+c~}DGT4>tO&=|5%_z4CYZOaD@nq1rXP<7lPxe?4!w3iqMaR&LG?-Uh3 z=Cs2C!f0e3m_eFdbC>gmDccCMlmTtSG%wEIK1MS@2co)RM1{8@8gVk{&uNN&60n}I z0d}yt-}e#?#M3ID#{qMfq}0@0BgV}J9~5w1l&uxo{fmXSUAy~RUQcZGV|9?PH%$=W zMMx;YkW?rj$Q~cR?Zu}39oP~O_$DPk$R|CW!2QHbyO#)1b>9ToAp)(d6M0NYJ_V~? zFXJ#wCNf<*Ou7l2cEM#MTo1G%X$DrO;TEv8&{e-tM{HXVoI+QcS!hmPIauIqht(+b z6LT&J5~B*4E$1Qc!fy>!TYs@5d)R*MQEMur)L=C=El^1;r~P!oa|!7rptm1I{766^ z7v!t#kfEUjRjuIE=G;nBJjhYw@9aoQOxoWH<{esuaEqcmr~iki#ewt9IzT*aH{|%4 z=`xPK_dagFOugo>YV{j?Z=u$3N-fm22dCdp4W@0ZQxNf?lC$v^q{?Ukt2voZ~ct4wiNCf#2S~P&OlquGKzq! z$3arc^0RItP)IHSd&n$((%DioBYZOY;b8ysHmw$TV(XA34hZVv8_0lXQPxmg>_aDUY{vIWIgZ>Mu7LZ{^~Nl}_;y zQmzPrzYo6U2JVks#y=*Xu~Z6J+dE?ysxxF^*5&fmgC*&1++S=v|E(Sb=s@mZxw*Mt zn53F0i2c16uFhw!7`CsxUZLFY4$rddXGxFI-)kO-|J6L7k_tk;ayx6Us{xi;`C&a# z-QFJYj-Pf7^1j+|1FVUIo0!Qu1Xj}zCz50T?SXJ;|8 zh`kRq`YRV*PbW4jhDC?l`pfyPjHbO3B=fe%k^$FWTXMUz0yT;;J!vF!O^m*7J0(hC zPwteG=%M1d6IHkrUMAjFCVce)KS0l;*q}wylWKoL(wx!YG5godMN6J1S?RCWJVDB= zf`$z7hU4!B`Gw9JJvAF?wqo$)&AyBbqkfi}uWij(dSiUO<{L44x$Ns)LHTRU;HZ4o zk%08o*865Eo4qky_X9zq9)O8>5GdAUf+9eC4x!QBzVC>VFO=Ry&%B2u1pLw5-27*ysG(jNbKp~|RbLV- zR!oNu3Wo%8I(Qlr1UNnfYfsI$2AzN#mw0EM4MRL`ma{*fGb_4GjG_{&1w+Ih`W7@O z2jIo654&oXR)i<^$QOf_)OQujN!1kd3J2K8)o&M?%h(;MWh;h^bS=r1r4yWE6XV^y zExxPmhiHZ#e9$SX5~pvZfHPA(sn#Gel$@>%3XV;os*C5@gk#o>SJot!D?o5lTii>+ zY|HjU%iY7#I!^N$^Z=1mRag70zrCyvHrwr=Pe*xTP)VnG8%(48I)Cv40yU1Ffi9-@ zYii}jvDY0UU?{K!hvB>Tbbrb?^$`R(3$*@J#Npj8QaCLtsGo~_VufB@K79~Q-m(0gq-As+|C{uR8&l3u+V@UXlCAdhI z-cGwnN_1=v)mNp7e228qOYgxjps`Dt=Ge|NJ>Rk7X~z#{NmM!>{#-8M8!mEmejowU zt{6H$2DM;VoI~10p?%4G+;x@k!4n~p^mK$5sm`Yk(5TRK?- z+i0Hu6uu#3zV)o@I9WBm>A?nuDt1plGU1mKM0s?E?Ms7f2ExBnXc9Y<$(46%?F*Ev zV8YA`tzB{L-TbVyc2Pa1rvFT3fC1N|m0FMH71d`d$fLY<_IV-fS$Qtd_C=FLHN&E4 z(>+&WemBH??u=h+TknUbg5O8u4%#8e(Vv1uRI3b)9s_Bj>y-J><(ciw$`IV=H_f;j z*dr$f`#MiUL2bx-zN?@9QV~zVwmLU^z;V559idwScu@PD*7Hc^Gu%5lQODdo+;YhO z<7GI!ABx$i+5N!!8(GI~f1&loUkcLq65Hp0k%$flT2Mca9}}1%K|K50ZB@&0l9U?c z{AMKeO%B4>5b}4#2?Pm7cHM10eQ=))TDIGC)U;nB_ zzAXc0;b!Wv!Ny@1PCAn}AY%3A`WZ~;BNip?th3-1d5RK?88&IQ%#7ji5}iwGbbE{~ zH_2%BZ@fZt$8|%}v+*>WG942F<^efHM{$1^B~TN!)g)w-f-_$sxywLZie2L0b4+&L3Q# zcM}h1zCWPV_!6kf;fITjoC{hDWAo)8D5I_h#OCr&Lx7k*kr$0{LLGS|O=z}<|E0J4 zsXXVn_0aok&`8HP$)TYX_S$8xIZfp0_L&}ck%*4g2gNbX;Lk(>yBWmnM{I zt}$3Sk$w?B`qG|LR#PtSsx_b4m&CL$XW%6ic+7)3#F-%~tQa%Pxzy=ZRuqx_M^rQq zS)Y+CQ|8kpgLvd@W{))j%-sS}R}pJqZF=o_&nK|Wy**0LJ0~yfu&}UufLs|4up1KH zdteuy!y%(xJ-trgWwwsJh+I5z)A)D(#|1!tkb18^xDPD+0PBNb&NdBawW~51siAkC+6vu5|wOjw!pFIKkGP{ARf~mFRm>P06*uRY~A!}_eVLnx6t_0;$MGD zBS2WNY~DLy?|^p~#T}d?J6FZ>^aJny+ekM~F8Yz5>7JNX zM68Bb5_T%%3qaSXmtLuf<<8WOScSD8lmxfho1r-QNZo6|oF=9yClU%zT`p<4U;O&I zzI6kJfIyn6o_QiKOxl_>$X}msf$E3LuD}tVGTk+Lf;|n(8KWs)=qKZGB+u@4OXvBr z;6-o-EHB<<|KcOH2q=!iJ7)xq?$d7%Q*}gIeS1K_s-){aX#w>{(*(cUum3CY<$qcQ z{+@&TPdqR2yd)ABJ>}n=6G2w%SJNgAQ25@r+e$y4+e16wjv2Op*A`aQSEqaS3jqd$^u28l`~DxCi#$9sYOB-p zMn=|Z9zgRNA?13w5H_E9mfS4txirlyEOakM(C9N;eFG$vtKA)-N+ryUPZ}&+LZ$e+ zkh$qj>2*w;Nc6q*n9*x*RNJyIz)VFD3v{ty=i1Pmhg@e+8%sK;O@4o1t?h(?tcHYh z*Yhz?a0>NmSqT7(QWmCF_RF{D$i)dF&DwLQNacTO&*(}PJgbcYOF-FzzFoI9I;~;R zmI$96d(ULtYv|A2?B9iZJlAiE@@ty6wK%FB6!TS?U46hw_AWcTc`>8C`{* zfen<~vKz>EW1jkZ*~VXI0*$2>@0)qklEt4oMJkvp3vEPKbG=nbuzt9zVIf7#k3n%_ zjUQ+(+Qd1k#fFJQ_ro+5W@$c26p-{M<7==`*6*$}X-tR32}9nwR>{%%9ncP5<=s^Y zHPL@BDCrmhnWoEeuk&ycU79s0QN!01pSYE6tZJ%c-k}7gWGHf|Bg3H==em#1n2eHS zpW*T#Bh&kP_fSFwtoNs3$8QSDSjQtfug{Y&N1At?ky{tKN49~tsa&ZVxUsDRV2ti& z$Kwl5y@*YN9hT(*I9P>7v+w(uy~%nL-18yP3m4dMPC}Z7qMFe}h(*t^_0j7s%6ad2 zeP9k=d3w!kU2RhO-E=Eh#As>%q8nUz_0Vi07?|-{eRXSX(B5~5cvGkZ10URQp0Aw= z-OgnP&?u;@{67t5j&HZJ;^~3YsqSd;iSNgx)7I=BID(!}Sg5LQagq4cCNT=*6K!Yi zvfNZ-^TBO3{nrQ`bk`s@F*Wt2=$n5#5hW?k{F z^>SDa3!quAI5Gk>*O$zxUHwc|=kzZp7C8wVI_O+7FY2vv5xVL)kd^H}RQXDUnv#mj zgdc;f;|HC$MCoVr_ewi5>D6n>qBuTUQ&Sx#*X*hO9iG(DS>p%~!{OK^z4w>)YB&}JS!PttL4CLx6<=4fGCwHRnb)Io!CQSTWGAR?+CcndTM|l z>4ysXcwO~dZQybO+*6x`;R$o+sFouO~Z3|H=NANL4P) z#Mfvfk3%$bWGoHE#BY#i9hD>bb6-klngPFJxT%N+JzVIyZtxlTDsg^OXr0oHL3*rv zw3l=9+hdhf^W=+SH|y@rNWezhuhH-+!p}i09)k{t0ytj|68Kf0~3kE~IjPAmE z*r{Me*rfX&3%l1VH_v@H^44Y$(Eu=;gx+tg`qxXNtMKy`7YlzkO<%e{<|25XYIk* z9e@zC4j0=1)gY78Ppm7^J)46H7kp06sNz4=l9Ca*Of!7>O2Xw@0T#e!5we+z0!Re` zy{hF}nLfxyzAqa{zF-;0-FFcFp4Y9*hk8y%$Uw+h)L8FZx`bw1V5@3w2q=&E3>;u~ z{j%@bL*v^G_=gD&M_1scIKXnXpLlk0{%gB74pJFqll@^?w5x6F4PlKDs=|I~7E&x& zCNFVtS_#?T!D?j4*8#chOA!5;L2Mb+=#P?q`2iMebC$IP=b%C*nuF!sYr7t1uU)V- zn@T$K#Jf4v9T%^2=F0OL*D-AtKfl-nZM$$L&_vK3EW)=!O%-mIPHc5QYh5nsb20UKUF*SuFBO^PsD_1Mm zv$w~%y1HWbd}fa%{1)2W%n=?Dp$q&1Fn-4&A`;D)Be8u}@?wMUy5cssFyDT#`W98# z`S>}F!vlIbmCIT)QDOZ(2{cvwe<0f-SsGlEhTjJsjNuABW<=HRvX*_W+`M+u3J(VP zWy=-om^z}#v&bi5v%Dqb4#4pC5%7q31vwhx8oc-V+R{VNUF)O`NJ4+k;lq zznNQ^>zjGNw{p21)Nw8@|LL8WM{;b;-CdTNZr29S!M3liX$;?Or)ctIpfvcfT%^;$ z8HPUoG*y?X1N%^V5h49HvK&nYrdYB@0%2Oy2G^8CT4>J3{6eN}soaztZWwZgM!*1J zTjn_8THvB^@f3X=Ox-w`KNP(gpl=LrvG-a3vUBv&TiPb`O_MOXZs&33Yys>D;v`B_ zk$_e=;>y1{=dGB#YxK)Zi#-k1nLD;Bd;$qd%x1*_KPV8c6hX60E;jkFd~SFB(FH>B zT&keXN(SSvfvGh`H3JTfA(WNzN>ssIU-K=8^9qE}7qRC0`TzhPHCV+9`~Wl^DU{~R z@Anjmh$sB%tdj`X7fT#T#2XnB0y{P~wgHeml2TGg=k7nBulRro5a!g+_LLS*Y#dg4 zz!!Gf;hBvdAKE2CBK|vD)c>8WrMIwOVG&_PTBq;H_(``(GhgL$FOc8qG}P!i=oYb3 za;3tS0zM2&&&|2feBv=T)(V-_;h&s{^?+6Lx;EI?q z@{&}4QPr#bz6J)i4{li*2b=a7XsNo*zr)pLHJi|uDz7NI5qbr>0)%IE+=zkD*85lIht|%=Q4GBF|`LJEx zLB~(FluYb+z%5W!MBuE8<{F;j2Jpy<{M?@{vLtTdfrZNcmc@G{DV)^8^{I8(bV@nU z?VuY~(So%|ap4bNa<7&^$wNNBe=|+HhMp$+j@PI`ZBjt*1nTc_JT1%4aLcK2ayCTh zQO0O@jZG+g?(o-#jwr3lp!W7}bQ+pn0B)j*6Zm1dLAG*%iHj=?Xq&KsXOf?!Gq^)q zPg~&a?Cg>9o}Pw4Mzx+gtwy zUy=U>-!h*B6zf*{qliZWZR|^y!g`>IXm$bH@*X9fd^4&v=>b!HgOA z-~!-L&RdVD;;Zfi~oof>>X?nZL(XE_zjlKYzQ z-Q$>eEgF*{i0sa`%f$R6=gZdz{nCnd*Y$ki_gs8{Rq~=U{J`4U}nRKG3EcA?FFw{KEV>px?hOq5X&kWIIDcLu+9D z<;MHl!}t;4y{BoRE%34(Scinh@#?xhsJGR+e7br0FnWLcwZm_}?#`}V?XnA@{ewY3H} zEQ~mNEtKIE9LeKUi!$y>cKtNW%);+8Cn-%bKx0zD60AXCXCdhdYPN)lE`)tR1S@@w zl_OZAa&VD`U1NyPD2g|hO#l0>I$Bqt2IUN9eC+DLmT|ldPlK}G0q$I(+KV8Yw8w$} zOAtkUr`6pq|4y^`NLidfX=J>7gi(se&}+#t+p+FEDHIsK>>P%e@q>qIzosMZu%fJp z&N0Y#^^!QILo)9!)jQjg?PBO)`9kj)gRNc4x*OHn$L^yAV*{QhYC(K+0wRe0B9Rb! z-y3BEAJi1}!+%4d%kEoKMHt}d8co(83Q(6_`x9u!4bg!eSUnKP+}@4tCl<~J*+JIV z2eSA)?l=HM&nOi~NC|O@EmjsG-5OTQklBBi;fciHc}78}rPTxASlp9jneY4r;*~G| z!)gMELDrjN!T=lNo}YB7wCLcQBk@#~mUm5}nNmvhN2JU-ukdNievU43}Oo#)J#6!RQsqiG3_ zS%~$-IjmWE+wr*E<-Z*bCXYyrDun5ZaNy(kN-aH!z; zi4!OxHrwfuhpnKYgZ?FH0momhLfqg)t zgfw5Q3IN;2N5SXE>Dm9_j{@>V0rk`gFO{Ja10xO&?Fr|0JT~7xZ5N+bB6KU zfbj$aknJu2_h)2f4Nxn092_8ysZ{QUYT5u|hEn4E`OzVZ^X4CU_NN(D^D>K^_65rR ze=wOP?*H4q3;ul7%N6PDp_<6oU^O|4gV6SQo7Ww^JRQp+m6F963{q5d$yTy*;Gr!>e`)r1aX5Z(0-GayfevMtUa z`MN_3(zyY*ugg320T$Y2m2t3>^4D;rOp-1kq1amXB%@F4;DkaY7ty_lnq{|2)eQ}S zMj0;9Ks622Ue5QMK^Lb^ogV=OM#j_DGoJT5aO3*IhrV^mI>I4}<8SRo$fmSla~gle zev^)EvpEN^qOR4uW(mLQh@ED4c@IoJA$vZ<{CD)3g%U_2{ml(7wKO&98@HS2eE0kS z)_aD4^-cqhZp)+fgJ&~*b_(wnFJzX-v}TCMs8 z!sfmA;|>1WaS@S}o(}A`Yplmqw=JhsGSx-txpS{`R98_|>u*k++@6~?vIYQ3p#PX& zS`}^L82%6;b0bL1^_Wiq9EDmwWxL|&aEtk8%#bUORkJ`)PjL;8?A)E_aBcSEmUY1Qr+mj&@g|{vUJkRC99!A|pzEw`Rd4kz~N+gUh+t z1CLAVc1@|#)Z3z$QEGQbrlS(M#S_dY`YIS78-D}e6DN<2ref`0Dxh zg*WhP`=Jy&09XO~q(F~|(0icn!)Sa)@RWW(edBWDfvW>8aTTNCq;dYq*#O7a4hd)o zES#!a+r#GaSv7dPpb{rF2ex)8%&jbQ+ZRL%R|EE4F|6Kcd!R;&{{jTvZcR*qjcwcG z_w~H@os2xJo}%#{z^sJmp;>znelmkpah|}p@6N5TF=BUB*xacRC6rM~n1XvT4utdA_f_DPh|vvQ0&b5>;M9J_`NXl{Ig!qrSaD^P$bGt1KY?3ztpxm+ zC#{&XK8FfAI7$sx)Rg`T3xcmsc*bl zT7^McjX~0_eyba0CrNrhrp`pS+nmxt%(`-niAcy!scNy0>8eYj=L3cGbbR zTlhEl*PG6VM8+{LGUxaWaIYt9?JlC%buWMER>Aa*tVXAaJGb(7IPKdPHpwq1l$54% z#!FH-fwJU&U&xokzaf)&m&htE1s?c*G!+|T&SB*63i&21(-i#ur%$~O#o+2FWJ#N) zb9}J|+p2AiG`&^FbBKpHZ#g~DpSD3!*|J%3sOy|HAyytp)C&1gEi2}>F&1|msMlk~ zL8O@OO;{Vv#~0|MF>Sv~hpeY^9bTg`4lud~2E2mFV}%WapKQMdquV>?(rfbKj(A+A zUL$WYfdNKTX?tnY?`E*5CzA^EUXlJ{?__EG+Jqabz@KwY`1WkGXDr&qzt)`sHc-<1 zF8X*^Ah31QwvD$&86_1?Xa?}~lW;Tpo$c@=Od%pn(HjhmPK*C|=T0L}pfBSEGKN#m zBlw9aUD2rLY~hDXhQjcBPa&fK8-9^d?_=h~h6G7l{&8PKy}AEGf*}Tw{`09fxA}A1t!(hzF-#c*(y@- zPt}_!A(N~@LTCot&~_|mRiA4ixIjo!WR zEAbnU+rOs7K$w&qRhjQWLrhQ=8YKT_v$HO9#doOnQC4Tj#uk~^=DF(za&vEY8JrNF zTY^DH?Dy??-N>h0UW83MA^{L&c9i2m?ny&cT{CF5 z>PMp)PI07e9M{t zWrv0##;VjJlaNN^>WfYFf%H;c(@`llDEz^Ro{O$El8H4cX<$kLa`vZ(E%&U*(+@9g z_m1&YXb2X(1313A<#H4aZd;3+)49 z(MzAh)9_6xWm#C~XoYNnieYHpG@Ku9(MJbK&e=t{uc+t56U}^Gf{S1}NsL`b!Bo6A`8)|s*=f+NhUpP7VHJEajF|3UQNN^F0MX7-<+^h(-F-b*sAwW zyAj<$F4tph2xRT_|1q?N*Z-=_Fh+#xmZs3*Kh!IBmyihCI!ig{(c2+|o&J-rfA*)= z%;bBC_<+36Ei`BaAO` z;85cCicJ#OY~l0VO;IlpVNO#}1U7y*%53Yu?VoKP^_OBGTzRjRK2Ht0 znjuQGDo@`o&AhDl1<&^Vw7`pCKcM*7Gsk!Mq5PaEqk0bm3w~iAlt;9s}X&l9ZWB={O%he93(wJI2V? z)E@Kui&*a7A2ef`Pp6eV!li0+?#?*w?nSe=^XMF2+IG0xp}0p~VVdgWmv?3qJ+Yw7 z^nygFKad7Pyk(YX@>r82gUISS=2ZTo!FzGmcIMbk$?YVWZWs2O>f7n2Ji&?UF zvSKM*uZ<3#;cXjdm}h!~i|P$^X^s_dugi7hFeFS5%6liqPg!LsFt8jL(K6em;((t! zC;K~{l17O_aOXdBwI;TA7hi#7_PhH20nMKWoRE0q!}Am{UYLS+JqO43JRrl6-AM6| zjvqb?Hw~-)_3S7KgIVfZqA566(amPAQh>NzrIR{Au>URTw^J8{zl|o<4ccty6J;--ppLFBmerH{2)_ZKPd=i9HFUT;H_n~Uv( zNMo$TOi_E?~bGh3l* zU*D|6B6;_!`DlXbe_VhO%pO~xU3-4IQ3&&+k)l%MlsH((YRDKY z$L~1Pb!>p6JanaS+r4+%1}er%fVNv|*LMdDht?0vb%)>L-pfjVGe`jM>4_jO+Dg>q zz1|EWbU*Dy_ONe9QqzLh?1W&r?s8FaevpE(_=HSLjsa2kGb_16D3uLBcO43S0%wI* zi*xl9Wvgiz5wG})lLJsL@&pvtEjMzu>!&Zc4ju@ceS(N7TSuX{#8%Dz{A&6T%P-zv zlC$|GS4UKu0Pw-VvS_tuEMJop=N(O}ewnwC&fbuxvyPJx>u#tFw>_69g zU*aqgp6`=UeNU~mJ^|^p#%>nY-Q8U}scZwK=t*VLUDY&959KjlRNag$cMWCrd^OS_ zE%NRY7rwsG8SX>6b)q0T`OCD};UWKLESu;~@+VxyI`J{iU*z(if-n9)a{noJ45Fsh zzct~OtopI)@1w!1O3@U(B!a0EXK*{ZBeg?`kQ6v3AN|W<#F~Hv3Hq~anv7R&B?;z5 z`4#>`{%FH64~*K^y-zVyj$$?xN1Xjq~gA+LVtj?(G4*5K=c30-<*hIQ^Ym)HyjZ6@;HYCr){! zZVpcfVDj+_`5#j6$s6VN>6#K4&NfZ>RV+5nA!;=7BWrg0wXe}HX~A1=7=qvZgb|@b zyrp+G*CXCd`L~Nn>x=rZ4U)ovZ+t-Dj$G)z zJO!UuD+REjVB?wc%`ap(jjO>55kF=-U$p76eY5MQQ2w}?iYpA{-2=6AkYen|tkZ$w zRjqqXpL+ec-($EQ~OnA3&Ko`1(uq z$~XfrmdNn{Beptj2z~yS=T@Tcr~qWdAJ}5b{yZhhK%(o$wP@!w9VWK;*Sl24o@GEM z2@Ai_*R(#;&<-JD05mXAIAtE0Ef*3jpMbXcQgjh$B4ADU6dVMCAZpjbE^oImKQq^{ za)Lj(C2Uz`b6*eBD%01~AY4fv6X-S3DPf8je*A55MM?lLmkx5aovN0XyQQ5z5>yhz ztOdXZ>iziK%cz@zWj-2cz)?l_F~Ov}h7KnXcC=16#Zc`GYy*aeyE4qO(od@rV!;kI z@PjimA8LPhr!G#Bnqv4IC8KPrQ0M@OKsrXqf!S(FtC;fnIlVRZ2{I(3(*(bHLdFTpItnW=ME= zL<5r~_XnMzks{i1E)KL|nTtYr$$St;wOoku5X^K!{b1{1_58B|g=|XfhD)T_t_x`( zN#^grnhDPdu(Qm_hq2zCu?~M2<4XL%!?3P?7^dbJ-}%beRAh{B$BwrCXrVumz`JRh z;G__f$H{7wp3x{gpU;n9?g)QYLMjkn(&7F25J5R(L^n)mfFq~g7^x|kNqsC~kg)4F zpXlri5Bdw`#$JEN&FM*XB16d{YgeL^08xOLp!pms;_;Fw_FLALfri%D+zqF+PZfu@ zPw*>}|H@lVuMV`SBf)mPko|Nx_tYV+(7y}+TgLj`C(Nj5+4m0~3I4XUE}oj}EvyD$ zH{rgWcJ!on*U|kpMGTJ&*SB>gl$W=|!NnELR|96GJ_a1tG>Yuf0AZsyc+u8-u;cd_ znEy~L_+b(|X>%{5_p#%qi{)eEtck9X5kx61{Njp+FaS&tpKmArWp7e@CjGXY)@yGE z&D!cYidrA?jc@Qwr?fVt{FIVY>mvz+T56tyrJ8jb4c-lEc!ac`o;%+7-X|JI#DaK= z_FP!#zBqKsq+sZ4I!YDxC=5=|4HA&Ma|Pfp0p%wS=9cApZcY$@mwIkc!_*Y$<{XB< zJ0x%^OdSyuOs4sEDZ3aE@xR$%@V<6>qVPU4ctT3|H}5KL@}q13l&A~rw};B}o<^DM z*`ptVgv8d})9|h;e>8hW*3ed_poHw#tvJb&OvZ8!zv%w-?HBX62y~@Z#vdVA$GLuchx_c`0HnAVBPl3l7P9<(~s#Q{$-AX^gOTq8*k8NEDMaF6K$M5nz*Xfpu5lYEB*UnIS?`Mza zkp-jA68YBex=tL>cBxS#P3ceb6z=qbD{KW2K=kXbA^3uq3k>N7 zSF&@H($a);IYL9_1>5Jn<%_#(q(IX|!6Sar*TPzq-3Dj9i=xr-2=`rJgtkDxsnzJ` z=!VU;oT{SL>>E(JUsYdE=mvWS13f+h+7m(2Enz|&w72BMod6goP4DB-_WIEDHAg&r z=|Ei^Acowip#wgel#w>r*N0$Q4{bimUoYop!BJ&SMPU9Drj(Rc0|R_a2Swv0q74Py z7yjM{X3}Z;q+$B7p{lyscXzIIaYfDN_!e%&9y+i@vmcNgpB=~jl8#E+Yc&87%_J!; zvmyF67q#X0cI6dy*nFrS3)&|c+}ag>KGEj!q3XORS4vPCe%%2hN&c~VaA9CJMbky>lYK3dy+Au~70?wm{pAwoa@3 zr-!0%s7#RAZI+!?_R}NrVN1bVs^082bX!*__G8XqOe=n6Il5;#t$}*q z?>4x=sOkLjFhh-Zk~OEk3xs=*$zLmRt2@j~t55{+1_MdN{Mn%cxtrCb-Z%J0m7RZk} zZB?Ox=HO1jSlmyO2Kcj(ebT)Yk60W&1Pi4a3SOh=faI(XUtVIRq}J@bzhKw5xxwZf zmDFyg7#enQ`im5XvS@wlr6IQw_OWwWs$bF?&gsld5P?M)^fOjxW?>0@X*W(w&lx=) zBe#5jqLsreF*F4urg%t2ftvpwPdgecYEP!d@{|8TJq~3RHBt}-!hRFUMH`^8t}(Fp zTdc~KzW>ex64G?I%AkQIy8SP2Ml!0>`38ha1t#zF64xI1*JJM>a@Ua!&d!MkoeCgCWmbD&^eHI#O`l*dlbYn{(h;N2O-n-S$0kR zZ#jIOAhFx%ILO2U$KE^`T_{CMtn_~_peRohfo*C2F1x`t7#Q|{70MRsA72X9vkm{8 zAG^7Q^iMk5+)N5!5RbT$Dh^3+Cj;{1{8L2yF*i3B?095#-=L?$x;ohkPo8Ue>t>MI z#m4+~?mhb3Jq(B)1NXA@E2v}sE_?$Q5G-9ESgbs{nV8(}zr9Uf5#jxwVzZKFF=J?J zLg-w2<9!2&_nIDlBtX4xOHTwv+$Kv#P;RkAvAJT^vx9QNIOlz4j(hy0LhurS z8Egj9FSGs#6jUY3^70-Iv%=aNE!THie@QH}>+exe!uxL;wcwdlAtIYv{mrU6xrf%T zs0rHPw+A+JG$S`W1|{#xAF9dUHHakHGE;rNQ=k4&lw}pFX{-U67`}#kvBK@wv`l6D zg^2akiPf28^@A&{Obt?Q5p`=&tGVoTqKO9@q^x0W?)26Fpz#lM2t|V`|IG_OGqs(& zulr_;A2jzmPhjw+FmQ}wWUlGVPk9`ogsIB}dG}Cv%6O^3GAeh&@u^ z)5qYT=rQVcAPx@wg7|`k5fI13Pf!CvLyO^di_pM-eA&tqfEZY$0(|_Yc_b#S3@wgm zIRW_BA_Cs<9J27}iEM3eL*U##d*mZjCG+Mn{SH~5eatr-DPfUaN}W+K@>@x4xqi~3 zwnpg*NFFM=!*qW7z1Ek0CF?R6@Hz zgO0|UZl9VN+y0Xc4%BHgWeh<(v@4N7_{q5DpR+$g27W`O}ax4ziBca_^e(|?81dw#S4 z3KS#D#JhQX+QNiJz<#T8J$3F@%fVh3I6E|K?S!?z`1z2#)q02@Cu*Il$ueePLaK8_ zG?RCWadpLEJdG)N{qCK_5<+-YvcB|@Oq%cf?IS@txiWC22n=<7d!(~YxR zk0C=fwUVYWe?rePT1hW4zEwlDl~vyrEI z{e37fL}q~6UCSd&e;DkRMCBl4p1hE)PaPss<GrUAWdC;x-n`kR&wX2fPN4LYT@koDYZ3JyV19GBoM*|5db}JZI4Gp!C5G8HVXq(|KzxzPg zefo#qJQ8^TF8SQS_7nGk*(O8s1_74>WcKbKa$;lZ39<9t2e@5o&l;OrU;+i%34y-Z zl$`BBDJxj%&d6&KWE8LvL!&0vi1ZO1QBh`PyTm-Dz%ziZP>If8ol0L~v0k$(9zPZp z4KercshzNhfgHY?4eF9(iz_qIddpu)G*2NFYSF3jI<#mt1~+jeT9{iaaB6hG^?nuo z>AyvE-Uh0D?o*lu&fu%kd#}bOSG_0>4(fdND)>pEsDy4d#VLF5COeR{#2YHcejAS6 zENhp(I1g5g+}Su*3jvxF4MYwEc%G`9VZgvJ)l`@4did{p6HON%sO=V-^?Ry+T~zWS z(_InKUcCrHw5{;OPHs-ZxP5(88ZLuUkq%74*yz@(dmkvc6eCOf(6u5PtQOvgW6W*t zkPHw9;d{he>NM!Hr}+cN?lhdi(3@e|>B!=JxmWN0vz>ti06o7XPexNbqd>q34^S@x zF+~V5H2C?*Oz3v4xZ(OWi1RHo$W$|Z`F9tGIO}b4DtbW6HLf#S5DQ@vJZfcf;)k=o zEtL=(Nj4Q_0KCvb!oxVA(d2|=JrsrnnxCWfGA+-V2Iv&J%*Bi_0&UA>X4k=?Kgi` z=m|@LUtxLn58;r}plAYK+3TX{qK?S$3k2Ah&mf70Ua9oqL6GW4Mn)Z;KsGb|K3glm zx44Xu@RJb)IhoDS2-ST5Fo~1L*@u}k##9s^(C|Qqa?ThVsP`%jX=>|_vEY`8 zos!I{7nr;6Zp1+G1|^=IIFZ?~Zpxmdpw`RZ_Lun73Mcn+`6Y)fNmr@|9#N?knRJlD z1@Iy(f}y$I1Gnw=4flK01h;Ptel;=ClDH`jt5;lX+oguPXHvtfiYz-~;gnj%AoO|V zM$K)a`i9lSRyG*wj?@#{jO$FPXj?xism=-}PDuWFHwDt`8X)*G=KC>ON`hQ@F9fE~ zN4P26z!>W=ys#T@1AkI2^dPfQXA(`6>ZqdAsr{J1|3)NWL<7)aeorFeW0YJ6|bj?bYe~nT6kh#=0%oG;?W@S zAO3mqiZ>zK@-yYYR4O?L1Y86NxnE#@nj!bM7-!)-BVV-9=nxfhp`o zVOR>9@D9GwCGrjzft}IK++CnR@N>2A?q6Gi~6LSb~II~M8SK%9W9&c zd9#aFPL#f?!Hl>woItIXjXhx#Bc;LS4OFCmUns9-d#JkcUM3Xzu4WloXxU4`A29|U zNKi3ZFZt|P?23D|ezfBx;Qdsw&LP+!j(a?b_}~@8s>}F!J(n6ZGZSt>t7@tb0YxHg z&j>;o5KOYs7swRg;~RFNWW6wA?u>xmOcSLdq0nquhYjMePrN*ebIRQ#lEOgXOai!71mdId!-Q6w$>TYc(F__*5)6g40(S1?H9^RHSZI@K#am- zk>c5J(dYrjj@pBzy@88f-Sv>Us&f{dhzg__Vz zkx(PAkvN`Ly?hgCr})I+!qlYwHohHu*t0uPF&KwNR0fGbym)4{qpTncRWmz7qmQYQ8tEfJf9->5#s ziX5aedZRh}NL_t1*lc81{$^b$u#3=ej#A-<7_bTW^u8qETsu2yEVf)`7I4H_hzYfMeXlbhT(57C@4(+Hz_9ZJ<|Zh{a+OtxXRREylf z?|H=1M6Hl9rw4Bu04V&y2?q=jrkER@ zi`wy=0?ziDTes=dyeDav8fTQK1xgHthoW%j0iA|mC9so@3M?`>%>AgEV2=H}q5O{< zxLy;OWsUz72!gwB@Ur~kqiE}z4P8W+BF-4k;!q8XZk2P|lkA?g3 z9qMe+qRAqFF|#cCq9yp3LUh*&iSKW-*X*RAR>+E()RF6JMp8|t#{ zP1tAAbu6iYQgqaiO;IUw_0c`)#8Jq&R8tSBd=(CDony{`0Sb6kMdQB+->Qn>>x@29 zUEnv#p%T%PVg|H23njmqI#fU}}iH3@x zBCPwC_i7Mb)B$%Q$||y&2FuFTw%WOFdp zlO$*LeL1-MDVQQ+$`e69s&Qz3&$9L$Q9H@OsE*yHk!`G7(^r)**(}KWAgf#?8BaQF z=SmKfvqy)Y!C}kA<#u#_W#8Td!WMVLv-P>wdQpt4w09nICB3<&~L*wu{DHJNue;*z(s5-{l4ElG#tBfi4_l{7m z?RTg&+|<<4vQxC?8i&qyp=v7`2{!5G4UlUzBK_W>H|#4TWiHyIdGjbc-?Px?L4kKR zUf)NKDDnLkw#zfiS9ka#F<+tYcz_nF*z>PH!*H?JG+3jQtBV z3oX+hA3Y*IS%Qfu_Xa)zfiI|fx!zG1EjOk5$#l$qg*OgbAsN8med1)Q%6PMT_~z#R z0JdIn^EBHC7W+5$=KPrFXLfI|b!kY_1~{Fe@C&uMJcs)jAZy4>6k}fjw1;f{APl+5 zZQXM4YUc!@JdFyDf6&F4=+>|FM;OAbpw^s9AgaOt^8�P{)<#nMUYOeH`UWus|Aa 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 LC14G$x>K6c>E<2z|fgbxhiY0Xn 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

;V#++3i2e?;3E=o#{*BMG3Wjj-dM_6p$r@8B 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

h5EA(eQo7V%-}#XrIcd8^ov=cLTV zbmUKyGRUUBgcdb+=^pr@Vyh^LoV+konBw(B-~4gXRIoVDwr?3t%LXfI?)IH-d=s^q zL9Lci97(jk6ay%UM*xH(j?CQtJTPgKd|3>X#k1ipB_tXH1Xz|BGCuxLei?&SR>m?> z6x~M$DVB|QV79&oGdeDIxNr^*-;J~PkFEtYN5nd_Ln{QGw6DI<{|d`W;QrNp)@!<@=tY!1n34Gu z2Ox)F(!W14AO&7n)0ph#OY}#}D4E$4&?}KD`N{74L$TWzX__KJ#dXV)%agvlBU3x_ zFRN0kqSs67hG*Kh0PZ9J3)OqKKwQK+lGGIVdK{*m{bo5UX}$HFiLq9z8XiL$>Rn;l zv2+0IamRcuTcjjQw@(&9WWsJJ$*W-=@4ILg&)27Jw!i9rzxjM5JZ8mhdd6Jxs@=JK zLe3JJF7SuE^511K3An(G$+yb?A!^&q(|ElzmB~>TBP22bx;RE!C%b+0_q?=IH zkbO4vusioB30HPq9eqW#Gr!nb=!{cNLJv>IVd)zWj+U*VP zOylb5Nt`DPXH6X?r`x1x0LJh&d|PxTQ_|SVm>hNT1L+LJpW#w$BU7K%0Xap2^>zd* zZXM)sGBcyCOOwtB^%9L^cwY#~@>*_@I&b%0^oaBM69ip5%L6;RwcH}*lD!sgHs*>6 zdW;u%n^x!U&!7SPG&f}cUMT?3gZ;Z##ggL<b+76kQyupQWrJ1x^LtSFPwxtITlOITVb%re$&P1=gXlEM=*1e9yL%-vMLY#d z_rbD=&h)wDNvj1a(;4^)5R!os>y=VxjZRML$)mF>eM}Pj{Ke+d=rpTsDi8KQfef2b zm)^$RGBC#aqVn^8@`DL9gdi8+8gGiPvqg2F*{kN9B<(f z@McKD{oe4O*@Am~@71b?5Ylymo>G)n;_uJUpjI*Uf*!8-^{FL&oHxQsK5HV zUjf~b;3^EU{j&$s)#XSm&c-pFWgL%(Tk1U2G{Y14VtkScK}!oGP5i(yYGsEv^*y;H z^zS_d7-`Nl^)mj3Qjm4c4C7U-fT*58z;GpJbn^7*_&;FKUw@;+E@(!bE4-*9(kgNa zvMQ))-%DHL1x&m&f7LJZiJCldRfr@LBdh%_6?aoP4!g|yo|0@++Uizndpz~=>kAG1 zeh>a*rkY~CyLyqe0sBsvhcaU?f(~jE$NX-TGmk;O6AT6#>KYa}P<m%8R!f>|!`8b*z#a=8)v~^5Uj)1 z+WEiX4V$`kz*j?_iM)_9>*dp*W1%)(0b^i&a)_HPs@dtd(Ts-5Dd_pz@HSzc@wpxI zXef=e9!2&T)|JnbjHz*8T!vEudo()Bu@gsW=_rFUYI>LDKl=vlkb^PT((m=bdF1wD z-7EyYvXgAvg$ZdH%^KH1x*W_L-6;~SEOIj$9wX8xdf)=uee+V362ih5L~tl9T=;DU zhdR0RcDFQecpo1tvZlTOvCF;WNRolm(})z2dML!_5A$GF^88}$q7vugC@U(@Jb|(mSKFa}=xW1Zdiyie&lW1@^3a_62f~!lU@#*h%8})R0BF ziRp?%%T{4@>PPetW8y~uaRqo4qma3>EdBAIotG@JaV&+#*r_C z5VM9BfS4V=Ix!Vt4<{rjEEDa>Tj(HH+iaeempTx8PYYMp3BBcB0jG;>;?$OMvgtr3 z5Oj1h8gUmM^Ym+#8?wgubH_Qwp_vSI!G(I67F~7ugAd4OMIHAXd>TWmZ3DYS=jh0d!jmF&woy_+lm4dQl&f_D-V` zZ)@7CWUM|_1FKSqTE$;#+`LNPR1m2KI+<8bSc_SA?8~N_M4Ez8@J5*mJoeNQ=0L2z zv4<8qeJvDob&z7hDxx$Ah%!t3Y&Fwx^hCQ7DlXs8n|m#my}wIa{bdt8F0a$no-$@>WhR#=aS|;^M>(}CloHdpHov);3h<7A z6bK1z^=bC-{rzUau7-x#x@5Sl4L0n*x>)v|vK8I9bIrQHHYXD&<_X0t(2z)~a@d)~ z=w%FLbJ1{#WcnMq7big;vI7du7b-KH$bOb)$GCj>%y{p`2S$EgP8bcR=jH-}%m}KU z2nt_0H$Ueq*l-yuf=Xg9dX&&)4%;#o*G9`&Ddrv>0q$BFa8(R>%rOx&x}~COvlE$s ztWeN~1x2t)^PtIo?<(R9`hrqLgYJR}+SE5B*{X+b%%GM@_EIjl5S2dUk zF*q^HNa%<4Q7Db`;{6!nczN*eFY-7bZB9})uqbO&lQz7ZglKdxt00dghC#JEE#eX>_Ba^?gZCbl-6=x z%T5q#kMkExe97M8EYSH?E(zwJ-#eJ*QbJhWRU8l7CP@ys3UaCCUmZ-a+IEtb;0+M0 zN&%QnBzV$3gjoj~Ykb@zqscgf) zujLR&{R<0|Jm@w#QJ@Ayb0qI_ko$?82j@rM?*_0WduJ$HB0>t5e z4?WAgu8j5luHP?yDb=iu*r-94!Bj%Q?U_RJ1vEh?8Ysp5|ay`%efdVq5ON3 z%fD7Q>Z($;hVTOqgd#(BT-ZwNmL5-OdNEZ@C}a|WXvenLuUST2oA8hZ9)i%QdXSO2 zWm+IH;A#4Un|Z^J=xeT|Y9jLbJe8z>MLn@d-JPN&7k{AATd1ti%TI>9j=nEcNLanZYu@x89|qM8Wpn#ma!2Gu zSY)sf#a-oE#+f(snSrq?v6&IeEpHWWgD#XNt*HLoLd@)z;fScR^+B*w;}%Q>*geD+ z&qAqy9%XorPcPBZithG01x*nWh8m+$$H$-(srib&JrEqWuhFD9kW z!ZVJv3}x4y@CtC{K(@9yF6DC&zi+Z5*AYvoy8mn`=c6D9F-IASFZ4ek-}vS{6?pmG0L9Jp$#!sJLE;_3s&Q))gVC7*QA0EWb6x$ zx=h5Rf%4A;WJI6mKvr6?DU8ZRyvM?pJua^im~s~ycl3rBI>AZJsn#=F#PH-$uFFbdP zC1(pBriQ=03TRJW2hiaERHGhh{l3DcfA9*;m@Z%aJ1gJ3DQ4pX*W(?IgJWZfSfLA2ly~ z$3pOr-#84xctgHcK2-+bDQp}u#i3?2$^)5HwMGFLe;E5FaaFwLTnrc=HH*<^3wMk) zu3T(xmChAg=T7c!1_x&L`Z!dIxAf-01P1D}0f*=Vb3*#P_t1dhXAYU0KTfXz5KqG5 z<3KFeAQ~-(ofrXABmE0yOF93sz2ZOcSCHs5AG9LCx=b?C4GtF*$dzFH-57zJG}eYf zi|Jpm>TV7W?ADoQ7q8m`n*TOLVgCvY@lZ6z(RC|L;ef(dk8VaJ01an`Xt?OCfhXI9 zJ^v>o-ogrE*It0VQ=+qzT~vO)!TFU6YyLEA)s@5!qO&sv-9xtiYAeDgdUF!~I zgY+5AAth|cIh&1y0~Jv88?j@oci#ODY*Hu_cP*LCyZN7g zgIOB-?Hc5M+BVG*6?m$6DxI@UV~k~zJa-%Tq4DJN=xJuxWWhxANR(iO^sVY&9b*?g zTRPYc8ciyQC-w5%pUIT+Z_?E|=BzdQz|#B4?PtWjcOqW;dQNSLwgsM#ht;*xWV^W; zsO*`@(qH)ui~AcYaqEbq^|#3|bry*fa(J?w()^d5qUMVClsb{rsA7HPA$hX zPTqFuw^r!0g*#R=6)bU+D-olaEW$JsmqIrf!;zBORk3BCG+E$}-f(-#cHJ)1yo>KL)-9;v>gRY)9jkJ+(~ zo4O$5Zu4X%OkmqAH0I7NsXj7M6LD2u};O%dEC+;tnY0eqOJ*ad0#J*`Oj1cf0a#wrYWc~^XR+Tw4c!5??Ox{ z5u7_v!A`VeXIh5f6ob^ffleCVFKypiptqc-jp>jdu zSD8KnF@qTz<&$Ruaz3EN;G3!W#2aOjDOBL(m7H3v%XF;=Xrp6VIu4apmSI><<0>eZ z6n7+dS>*V76cQ!3{aI2OsM`bOJQ<{R#=I*cV6^@L&g#CMn@y%3@qz?lWlC_7SkPPT*S_uBh8&NN=8BlUk_!BVGGEB zbIZhDHL)qc`5lAsQNt%#nI}hent)0LA7&b%A(sf~7(rMT@S7jeJm5Oj1i#uu&DSM` z(M)pxs3sgfGvE(etA5*4HX14w6m4f^*c4Qmi^jOIU2eFHQI0W(%Ap0DOkugUj@!A!!jb6qb+v@tSL2%9o{ws?h$Q*=qI>*XB!GQmO^DakP??hVu{_a{=>`~Oe) z-|zLD>+nv1&o2-K{&&49A_29)#Hk|J4Hng^*91P6)ePiS@O7CI>|$|}(!}bvR%YTX zq#@FAc82XK7&(WTz-5s^MV2b75E{zq>FFB*_Rf@oKslJg$3YAa6EN;*dh1PPw2LGT zrhkr|K6aQ9cR|C4u6r>E*3|G3(N9`r{}PRRfMx>$FFQm)uJehTH<#xT{?#V1HOSpw zEo<+ho)^ckg14`r^TQnVh6(%LDK49L+0obqJWn=<`wM34>qS;Wn?Gd0)ha>2G+i2T zp~wL{uGQgnO`VzXctrzm=P+Gw;B*nGqQ&1~OM@yXTCWusYL42`o<8phHZ_B3ez|uM@p1Kd!ka= z=xK}uBIXMIH#lA2rSZFSBe!0ko`|Fl5JcqI6%Qo7z~vVbm(6)P4}Mzj*kqtK*^s+e zWd~qO-Q#m;{j%*86I#-`AP{?e@^IDd+SDP0{?&Cq+ys&yrHu zGiZLuP0c6(?Z|TdV}dexPXV@L_*gtMh}C*dx`|4=KuSh~eRkull@qEE1<2(|=gV?nTGT{KHU0u8*0ff)7FBZGVppbBj+y`q zZ|Sq=gwX_Atnq&asHTr0I*j1Q)A6pM;@T+bjL(%SvsNo3;p{*|Ulhx%NlmavG@AK- za>)~2?OWUTgn9FNXUv*s{G`&*TLsq4%OZ+{K7QPpqvJ>zO}^%CaKekh!}6rR6Yz7Q zg0JCgFEjl)|^j?d;H>A&dHs%C7^Xfa&3kdb>`?8`K#cfBQyR(6P>i4uH+{WY*Ug%?xxIbFxDAqQE@;Q+p$zJ< z%RFf(QY-ost1`(MG-8c>+Km|fGo>>T=)RKCtlW{wcOy&oJT^PMSd*onx!@pZ);10{ zPQ}OEC&)#LuHQG`DAR`cmh5;}`Gbz_6D@Z<%lTrKuBb~mmoRda9~j-si(8u6Qd7l# zWtSGnJ%M_G1A)!u23X_h#;mZIhCWXUvxe?}on8NBYD5Eflzx=9vi&|#jKhz%Jw}eS zPNN`MwGE0STXhR%&B~PiRT5+i8DSpOfb39jxr*3;$~0ao5eB}9q7_BP9A|~P(^uy- za7X+3LIQARkf~uChKQ73kLmy&PF|9Q#g#t{kly?}IaWVeqm(?#{z1wBzxTtBw5@D68?+G4{_e zjnnF)ZOu0o@ZBx%4TA0d)auEMSL!&MoPo}~58@y8Ib!7}uuL@cP$xx5hVEUlvddrC zTj?k6ye}`4L_?X-gv={qpXn0O|HSvzhkFtb1TFPWtoJz?;iVc7gD@&ZFud?J>8dcs zxDp;sm*kmTnqxeh$oc8|(#`Zj?LhSFhq>jyiWd797C_2pfng~Me9`WL-=JOBo4|wq zIB!HHK5uBGLG+YgMjxkfW)ij0GqSrI*3He$(cT#^Tbp+U=gO$oENa#|Ggn4sBZCK5 zSEbUDdbw!{Y}zF#LrBlaBoHT$8O_SNd)i)TtR*ha?b+e{iT?pEeAf33&ExHov2giZ zye>IWh67Sj6}=O|;R4tACy<^n@o)U8R(fp+!U$=}gs$H%F58$jTD*(=eUkt6{PJ)6 z&7UcEw!Y!-;IZJNpU<7KV8FkBk3QMFr~KlX<-)RHAt9qU-Z`Cew-{8*hnWky;l{A2T9F;9O&t(SRT^+HGby;8<1)Xfa{qqA+FXE^{!1_yKT zW$YvAdt!9Ht4x)>117oOCTRgYn=m`XgHtBd{UmUdk#2R5`b?oeWJ*~RhD7RDQ1jzi zk7}lI>82X%3Yn;PB6h{GN5(%2Z45*Ic4fp!W?aOB{z?K!E-M&Tv?3fw4c+{Z2n!Kk zS9&58sf)q!thOpD$yUKssSuYGuy$BcF0h20R^5eD`clkWzSC)_7hJg4u8%+Wzn+l< zWEYjZD#%z#skp$8oxN8bLrWK9mFPnM+s*;QTHVmb8DwQ`%K?6z;7rD*p5U8yg7YZh zyHm(YY6ha?`eXPr7wJj;_Qt&hgFoaufh}8_El-6>J^OCwCwLOmak40m4}7o`bw6^D)3H_{KTC`S z{KW4*2@sMVI(D=!Q2v6=?e;WjL$d-<8hQ=0@3Lb4)_Ff@JT+YE8&$|ZHHvqzYR5}6!7mzru94Ez9nYpbH`=^l2QR02+Ov(h zR{Ndo4;3IoSXsl833S$cz`gJJs}PoMpGNfuGWU^GJ0fvzA|MBuClG&q6UMgQE={X5 zW&cz}|3UQG=Y7)$9$&b4Dd8(38ObJ>jQsn_w|sRo&~_a}y7@y4+(ZHs1yw?UX)|Qr z69a^>#L^0WF-m+i6mr&NffUgpp)Nyg;nMo2ml6Orz~5+P6x2aOOKYIs*xX@vAlYM- zm2uDa+EZ}r`GWUmuTfzyu`#@^Wuf9+Bc_2)X^92b`yK59L9(s2J$M?p{0nSl8?a;= z@?;Ob%h2-IVL3+z$aL*}ksK(xJA{w^ij@Bd~c4F+Z!gUN+K40y74 zzuz|XM`!(B(;e;2V}L6004vgNwEj!HTo$t2`!MNvnh;(rlJX{sZlzYoA9EH|YeE~q|YmE*`DzN%s z3tj#sZasFmLEltS73;8jSy@7Yy6V_H;BV{7A1@(sEUyMR4O$lRW~E^Mh|$wS&p{uTHo7U z;-3fuJ=v>UXm@=XN-E{xW4Wq1IJP4mW2Xfe%&D~R79o4H@1Fr|c#FRWG7C?d&_n)c zEEzYqhV7bQk8>+4@FX6h^fAK+B*kotrm@Oae6@oL7+;vwlDaW*Io;?Oxx2#yE2<_8 z5I?twUBoTn#n1DJ5tKxigQz)7I$ajq6Nb=mh)`yx^380eGh^FEm6f?{KKX3(8J(9@ zXpt`xj$_(}q|{x7)=6=Jk(})rgM9uOz6xG8tK4``0P|Z{*)t?G9Z? z$AI~|c&~FjurLVX>{DatPqST=-V&{df8s3ZwSG*io=-(c%3zg4gPU3-@3UJO-Wm*x zl6fPK@229(nrK=Gy288xRotbwzq9GT}i-|0im>a|3 z!BI2dg5ET*peDpg6(B!a8ym+-$YHM^_K_$ZkA9dvOjX6_^}}7>@6B(X2DvHDxTl)1!ik#&whx9e#E-B{JhG^NY zC#-uMhIq%A$b*rP>l^#6+m9&}L#exiC{Q|W{v>%8JL;4~NX)_Jv30x(%>d3^OO}9Q z98%L)C)1(>bFM*CM;QrwuKG*HdkNH5LQ%wA!%Y^jX$1y%T-VSLrczEcG#q_BbbsxK z!`Sr>*>$tQd$Z*(5GFZG(C^fnwZG+T5HovB@$_7d9p_fx-W=?m&AYNjXw=3#vb6;P zd~Ce;gp9#TqPJ_M@Mc7^`uAg&rW)R?<2v!GOe%RdW|tB>W6G?}*BlLq;QKsu+Ye3> zeUQiD3seXTp{`X<-TX#WNd|*(QIf4H3@gO{!t(B6M?s9Sgsox|PYzKf`hM8juWs#$ z`+mFr!vA`S#Um!o;r4?O{2V44T;F=qdq{t?bcZz$(2$f?kF6qyc*3YeH%~VXIk#jKJCM@zYj*m}8pIDtoyEU&5BK61yg@2}f_! zw!iQOm6y!umbtME(!f|V9e0j3bcEb&?{Dw`$kr3SicmCYZ*vVV?d3<+-}uHnSA+z1-hKrjK@ zI%B%M*tHf?Z3tdrHA0ZTDMgBmrqxOKYXCXb0EUh0EE#)q;>KvXl}aw#>{eaHMO6a5 zblD~+!chbTxzg0Ca=$g!s^c`XQ|5;VdA4l8Ase`J8c@I!!ZBQq_X%mwzPBHC?^FD@z|}?v6qK=hN3{C24`MvNH-cnZyx(9T zQgFTCIuK{3UD?H&y6a!MSHg^5jhis_U;HLeMe+SVVQ`73_*^04C$~(6G6q~Iuew>w_I2T zJ-XuUly)-9^G528kN<`vde==_n3H0v{`rxf)qa*^h9Am6l8?zQe5+-(v%H)ns6-k1 zZzHiloVB&o z8gt~qhoP?ktYS_#lD8oIPes@i6N-S8FJ4u>_N6{$ofJAuv?eHC3)vkFk@`((HM8hrgw)s7hLZNVpC^D6pU)w6y z>*(MaLMEM~D>ecmSa|3#AO{6q(k?%Tt01G0;~+Q3QSe#ib3Bmq->0w~4v%JcT6>*f zO}Pg*wbSSHwMNcH=4F-!H-hKnXCL#52k^CtndCNykV+B0pLF1k+BwkF>MOET5XZ=W z)=;B8zl|x|Pm!^T&z||r;=|#zijal_$^Oc7N#@*`{;3s0d!we-U_XDz8K&0kwnZ!6 zaQP4&;jLkF84Kq9G)KFIB$(3r>ZQ)e*i~>MK!{lrii~@)Cx&QejLenk9_!jgAe=^GbGsAM{eg5+n_rPbF<$h3Vl6rF&| zqH3Sjx43qs@TJ1PhiUgvmU>mZSs6CVJLJM;&4I$fa!2!f+>!UeiFHd40z6qf2RqAt zDE$~<1O+V6E0h>B?nC76ZeRRB0hAZZ^Sz0Hv2lU&<&{C=O`x39mW=&|#tTwV-Sx`Y zJWH(o32enIW&YD7x)fts{H1J&c)CyHd9n4)*8an7`0ax+ zqk-*X1XyR{VObwU_w70GQLNh|^EOB|)_jjrlAb%hFb zf0Gz-7sI*kltob@Zq8=It~EF|wwUX^kIZ8)()@O#(I58O^J>%Mw%z<@;a*`klWJ!7 zArWZH7uV3=V$I+;YeY>xMK7Kw~{~h0)c~6HUx{upYYSq;1u<|6;>vdxn7=WPPr+|28G8=TM7u zr|rzXt1!^vB?n=)=YwTYCEPDYnT5B=WTA@TFl-8U?#lp0{KY(l?bLW7<~%Yugv$W^ z#7yDDJr*c90Z$=7I36~8c6)rFk#a44h2w#EK}+y!A90684|JrD>ue-CgWMw(yse{(qBHB<`dsq1uU_<})&B#-=Et*QnzJ00 zH+EH3@#1N@69JRlKeJ9!8SD-j)R4z}GDE#gk3}}`V5TaUAjHa8HPA35iTjF+K(yTW zkS6xAhHD(nRcOl~?e7j}NTBH7Y8Sj3ylPz08Z%fqx)UY8#e^X-BUk0zFkF!)f-5|x zdC(pJy7o9q$;!b`2xI4GQBv4=$9MFftR-yoDRKxLL9TIeZj< zQw)iT#?8DwT=dXgYLi;CeR>65A19r+o+{979)IhB2V@f`gV`V6g8!`dSHV-elPyb_ zm?YnADpnmL3<@R&Pgn{CqN==ziEbi;IlbMtM5M5`P6cjB%MDkoHmC7AP6Shb7PQYS zxwXqXd#$J@}(YXH5#ge76+zbb`0 z)Z(#UJ$Z8(##mdzQoGKpatup*!w$D5ME+yk2ZyHw=1WTO&L~rr^q9Fbub+8k>ByQX z7$k5^tzxsw|%fKe)aF>e5 zLVCwp8!Sju$`vEZm$>#J3K6e5{!Ho<;Rzk~K4QCHdq^i+pNC~tmRDkvUp1hy#DEp* zdQL=S&|WGIt5(5E<{kjI_(?_v$~8 zyS@x+b}{>O^R}tZOl!{7=!i+M+;i#uw6e85GQI0MHHi~P$P-*nNjs-;BY8no{lhF8u46+;0Ow;w-)Bq`E`AnBih>=a(_%T*zSyV&Vyy##W~VksXzEw zneOm8f}!Jgj{0?y%6a?tkGIX&KB9XZ{k~mcWlwx}?)tf|r6Z;}6%-1%vYb86oxA>B zOG71|=HJs1rlBA!$1W+JYe#Vw>$h?0^Whl1x)J~;$b1Yq=I}V{Wh=7RP6V8zr)Hk` z=z&gzf#BwWJ0=7~EGSd9W5}(RMHJ7XEs^V1)Y8T1Wf$q6^4D}dx_<1{eyD7$;Rk}| z2)aTDzHH_L=?|?{~7O4ndM7XfWc_~ZB4WvY7-+$E~CK^FTGkAT` zyZ<`6eMBIkhyo;SnY^g+^;|$GkoyE+4SuaNxCDKD=?Aa{J5cPu-b^bhP zhA4qo&B{u>`SSOiBrAt@m>xn4CZ;)?*klX^7fe;&^xR-ds4kA43sxeZlbL>Zv_zxhh8)weZhkfUlqR z%dXS_#C$AF>R4`D=`dxJwP)(**AGU1jM)$PLDC;$@n#^bmWu3c~mPE;aBBow&SdXbZ%2t}ipMZi}~j!Q>X(QP!Y;*UfQ`Rtb*tw^oT#0%&ec_ACMANJ73(bVq6WU?(d+W25D zT$@-YRB~@#%rD4MJ=N%~2a4|dJ!D7r^x-XkVpOLti%p!V6Ht1Iipp0}QH#Sh%Gws- zf%o3XY2?9bo&B}Cob=VYO5T*m3jdMcKhfRFglli8hnB+u6+XxK22TteM8q$9m~mUn~@*Z?iDnFe~yvIsC_t|;whNuy6aY%6td15fM})-@BZu8O0`NsyW5 z6oGWKvf!B~f6dbIgAmd|03<6vK&*V?61!=!2|`uI6HH#9bb4N6rkYa%Vx)m)5J*0^ zo4Migo80`*%9m;VR~9?HPK0ZIvqN-Xa97`kf}`6$zE`dvY7H~%lbLs0%Ohr)Us!W0 zna4WWb$|V!d8LUEhyo_EGzjtdam70auQ*b0=|2agt&aN0?psBWR-+%$n2xJ{@Y-FL zv`=huam2U8Y-Xa_{9t2Jh<*BLQKu{9CleV<87<=w|774pn;8jN;M3A=%u@?Gme|d2 z-{!LN*i|;t^*~O+MNqnFGFhOy~6L3I<*A&X!J{#{>kS3(oOcLWX7@_~-IxM;MvvT|}K z;_URXAPrMlMy;aDL5`gVeaP+`%H8Dc`-zl1ebmKk;gA`&j2Ct5F}FzJ5pbG&u5boT zC4%I@nAL_rEs)nisbyWM#p?<*#ss)V#hPjw-{B{im4IEiQ4gkwAEQEu3IrXH9#v4( z{MwkW!{22uxQ=;%j0~c(DNlnpuv|H&(D<9vDiT&htp^}8wqNP}v&k293OiQ{LQ@L| zib-zY_W*JQMLZ2%H^{1PUIwC5GKB3d(YrnRuK&WO*ZF|!_qFT~y+4k?tKB+BRJF4* z4h_WphP|%a<~0K37B{FI|Xlim)My};>q>3DK3hRwl{hO ziZ5!)VrGP{@8DI{M1x-*8kzprw#H4Zp@;ohs2c@x8`5PUX+x#4I+4^z!yRRYAzFxb zM@_^TE{(r+jip5QA4(^{8F zH+H9m^rIef*Lt6vziKC3C+8JCoaVih`vWNldvX}RYDp(a6`mZd3L7i$#AOUf>t_?p zSSYMxetvi)l=W`nr9@j8W4#vSO!3q-~<;M3~KJ4IrDQrvNEl=|S9q;n)Eu z?SrHaFIvA_d@|!Wa#7OPp&(OJE}wU`1+zCN#}@)bfgKZhA>@DL5smb|9QTGy+WQb} zrDwczZ>@C%-MYlUOA?OA*sDUSc{e&T4P2n>@_o(SbGe^6K6HG_70iw=A2c5XUCEb6 z>$w9NT%f0VZ)ua@!e$ew#YPp)wSyn*V;-3x;%QNeFd0~a`;mbq(`d5dM*Z%D@EL@{ z>e%h*+s9B;4m=WIzaa^bm0#{L^pOUFtHUJ)%TqW{hOEA_ME&YbP3%}TPz>Fk60QlC zlSi?tqs+31%Wt^RMZu|uKhkCe!+^_9C3Xpjn|pYh->2$Emm{Qlt=_=0{wGh*-2{bB zhac8+i+jBwQ0B=rV#zdewvGTEUCsYMIhNGxJ6QVe?h2B0#-)B*YQiqD(kXfvch^Y= z9LRbof#l2_WyqCbKXiILB#t_q%rS!#Mi?pNy3CpZ^Hw&0?-Nm;e~)fu^J^#R9{X;u zd6w~RYv2FIV8Y1cWg~r8HCI{J9!JUT9}eit^?!Z=7F>h<2i|H}ddnnj?&kxa>ywV@D#P+&{- z*r7LFN@T2V)-AWuvb7Z)j_}QH@9^c|Qd`K}%9?_h!d#JUc;|T!q==2&6oJs>muDLM z$%DW1HVuoQZUFytKTNZ!DOHVfMRz9MdOT^KkIo>){mnXRnqy7lj+nv?0z0sZ+c3jW z;VG70>%dHlXeoTsU{sBo_J=LqY0CmVk>*qY&8XJK(|pFi6?x(u3>m(R&WO2_Wsj9Q zoLhFDr$=w#Xs8Mtd1;yR_SpZz{C0`=dN<$qbUh=Lb))-{!Hf2MWrLg7eW7uNDsefw z#8tV#>%jVjRJ%#qDlkI2*by7vQ6GzheL}KL=FrnoPa8wLG*i?l2Y`e2%RC)BUwY=|WIxuuzqC@xjmfmu>+5_*vBQ>X=VR8@Ef-#B7ZCl-wrD zHGfP8hIrUvd4Thd$s+LTcfIZ96-~z_hMbwG92Iy<<++6tt?Pl=B9!DU^A^sXAK65W zJ%dKF$ghbx_1D$I7u8{+eVDZ6fZUqYvflGr$bDVXjJFtUs#KKmcp|(vZse?I1PQsB zkJ}brh`DpZ$jr)T>N10D9v3e7mVX+Bp@DtaV=F#L*1`0I+!6+=;MoP;=T+^ z_f8$qK`clsV0M)jhQ|ABOX{tTTr1+5scoJf;Mv`_4{0_xhqokxX>vD*^?XyznX!)U z4$zH2AqG@I-y6JqCNIBLmgWivmuA(%0Dhp3a#3_4%ylSDDl}Y5_OjrH+{?MFFJvT< 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

{RJ--i@Tmvhl1Ah|j{d(L2-YXWo{9A0% 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 z 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

o|`G+Y~xKjk^4-;%R3JP)3okOe&)A<9WBlM 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≠f=nyxqy^G_cLo5~pKK{mwIRD7w z7C0(+n}m>qa9uM-5_C%uBi4Y(in|z9)MH0rtv89AJ6iasLwdlmZR@6t3uLnZTRVjO zTuGeRrbrV^;Pz-14tk3*V!dAD!To)`=jL%>!df}@{9KGl>rqfFzKz*$3MF7On-Ilp z^z2;pB3J}a9sqIa36(UC$JpOLod0ZrPyYG8h!tbsT~03ZEQR)j5C&;C z4MO1zRJV7{UEF7Wc2X zwX=P%Fo$OnBfH#lb?hRSI1856rf#lm77DAVnnM$?>_wgsqH)9BcaId{EMcazyL}jj zDv;a#jvB043w910p!p=lH9pp}Ykc)cV-Y`eaXzP6+^8`w#3|~9Y2Tp&;B=>UT`z?O ziR6WDKR#!2i8o_`!?EN!TS(4-2w1OA@ZS4x;mXyoAp~IW+y%Vxsqe*^a~Jv!bUNQY zxKPHo#D)SctWwBr=~xp*vY1k;gF%Yg-rOJt2LAm_1>g+9w8^+A1@$NbEE^Vh{p`Cl zc!aKsn@IXPEd>=X|xb1tO!JMv$Esk-) z_{{71%w56C5ML~}@a&6k;KsFY;>PuF;okilxOV+5>~8O2*j}_nbq-7p?VmTF4bJ#f z8R1-Dbel78=E$cMau7}xr`z$z7lz1m5n`R=QXVmc1=PtMs9Qqa>5Xx#DN^ygm|a1A z65n@s&*HJm&*8zh?*0jW`pxnG#UpM`!RFW;|1XN*01o#b;O4E{I6OS6B8xg1Ie|MH zua_qaW;r`Xr1G4}!AAj36(Q0vcnziDoyf|TO(yWx4TCvi6R>{DprT!=UxK{Rj8(xu5@8eBn2L9Y+WIA|B+rz=XPDr#F)JKyi|=8+hi4rg5xJ z^@+tC8hi$`SlwDlIKGUTG2st%Jt>?qlH-4VohnR4Wy^{1M6UKKfXhZ9!P>i-E1eBX zA)9m(pJr!tCN^zF>(nAdmNh3Y+G{~1cldo3&24r*e69-6Ay6S9tCLC`eHIq0 zi!nVP1*92#JAtTG)X%an+*IR=K%dVjc0AWETuLo1oztaC;XN3e(p0bM3+Gk%poNERQ0jd>vkJh*=s z?|$p+NGV}!wZQAIe+1_)T&4yd7VZtLqQx$oyXxNsy z=OrsoQpRN()24CQ9HN}vkj6wIq)vR#+UdaK(bvCm701UX?p&04S4Hz8e5G+TRxv*Z zE+o@`2XV(Qq7_l#@G8NI4#MoE|8LF@fc42S_79E`LcrGc4qpG{_u#cpem7qDz=v`9 z@u#p@uA1?MU9a2`Q~z{RrujFceM_B zF*?hnOsw`61H3t%1tANuuMl2k~%9GDhlwg6C3+^e6 z@*c~@N}S*<9QDL*<=bm$t?%^c33I&1I4xMyf0kxX;xJLu_%!0-{vCYn>z~Kb@jgPF zSl~~;@Di5G6>VGE4wchPMAC_x(F*f*49o3U$KOjjr+9A46_Hryc{Z8Qexr4}W+~j& zPRMKmy%)8WpalYT9h=IUIt2LYCL4FG*iFwt)-`Yz7m7!$Nsu)n^TOL0s>n(7b*KkbA7mNyD&cx=a1I971q~8|`Ayb$J`~owGh` z<$LUG?c(Bvr=~1}Z=cG!IW{8r=GYvY!w<~IM@P7M>oyMd_id9|xuIiqigHK>D161Y zo|~u_RM=rx$1K2xS*Y_N9Q7>>Hce}(ev-2-oTb0L(}C z4rPqSL9ZO~?3j4+dc^@eTDx-~Cpqz}Yd|M28fde^e0LRWC|t83Q-W@66bI8;d^-$> zaM~(Tr42PH%;fUfC8Vbc>E!y&kWJ?#fCds(lL&}y%O!|?&zoDH1|CI3OzTm;e-&Ru z=+@1G7DcqJSsXCr{4Zj3Mcr`Gz=_i)K%0;zo9Yl%OoNFJ7RU$sv$b>}=n#_0$&@vS zipCWV@hpO#@wwGmb&=GHIu@}-kq;sP((7iy-MHfC#I)3sq;x=K#1Mj&veNidr zJUgc$B6nq(&qdq1pl8ST%tE(fHoa#gEDO7#Qpf3?bwfB6lSo9OE)1Dpvwo-P9y!9v zocpm{tuVv^p@dh?_gfL>s^}DEp*1%{q+k3neKjw=p_88cEsKH)nI7#)W=or}6wi%qeaL&@rz zOuBRodlG5RVFW{*3()LbPASRvD2{y=5P6);&ha`q_9GSTJ?qxK`g9Gld~O+EL}Ya9 zQzsTJ7OO^-_Gpw|SY|J;z-J*?(JHDDpt*)Fc$3z_o;ThIkFcQCcdovPcdz|1a?aR0 zdwz0(pS@6@aS4``xmXK;HkPLDxXT6s31*~ut<3vc$YYl}5lbgN&l46FIM4S6zS#-XS^xTh9sa3s^|!HEwYGCHW41jUq*-GTkP9?#fyr z1Px0JT3o2tYu+Di?QUbWy|Q_`BMkfhZ;Cg~bqsBB#qHZz3>QJ0euiIL3TY&qhaQTk zoL@FMIq^Hwd*zhsXITtOJo?m2cWz9aL=3~Sj_-Q;L*s0(`#j%R4Hw>;lPfT3 z=S6w_7#BFRcL8V5JhBnAHX``u*c_YVPj%#kaUAj4U;j;i%{pTcS^m9DR4Y6P^&ze z1)c;JRu@L7j`zCQj6p&n4dIc*HD1pb7Zqx-Xd413E~zREFmfg7f+88~x;U^*uo)a; z2hsfZM{tw<3?ZbRpM~aTDyc6_>aZLg5*uoke;L zJxy7=SLizB40WLS5F~cWB`XLvj8w<1ru~JEZ@Co%bVF@u7#}byLUPL8qG&VT@a8X0 zf=MaRviK_QY7ug#=lK5JySR7fHbMw^<;5rP=wr`dG4rE`856i0v#9VI$T?tzw=X`mMVGb5;9OywA&ir?kQ9Gae;fgyWO7 zyDwWY$QMM*xKYK``P$V2B^4dxBAOsZVW%7f-HLP_-Z=XF-*WC#N*KpOjI&6!Ty0~y zwIzan8dLoo%>DLG_VRf+z>~-M<#LI$=g-cj%T&iTxwl~Rp2rQuFo@_=gj;hwqgz<@ z>n|?udXc5fQB4;VG;;(M*TM5Ni9A${G`yE(GZaJ%b6UB@eL{4M^jf(JSp2yo7wBR9 z>_qN!6Vds;j~0q4bF_&OlaqaH3QB>x#q9qzq)^8~^w-ezGm%91sTj~^eph1$q7zZF z6$Z*V3sJ?sGFMWtYRPO+5s0!+YL}1|AlRX~7#8x(N&(G@d5m&%52uVdTx3)vN08@U z?`K+Hx)4GhyPG+1Hpkq5a0_p~^#vTS4>1f2y#C2Qho_!rHWh{vBe( z&hA+}|MJJMclIK32Cm)s7H;2u4<{!_JUVvgAQin8=n=w$r5VWfL6#T|5_{^ZL z?P;F1tQIW$3^BH$iR9ijVb)rD>!x=8v&CY-YPCR&1D<&DDSY35`h9rmLmz22)^~2c zk6-(D!{5d6(UENId{9~I#>iEWG{;D354K{%wD@M{Tyz{WG>a@{gNGUhTAe+0 zfgP%_!wXmu);rv46XRx=SIXinR&-8b0Y)d3XTvq{wXWBJ?k^``n-F0e0Nv0{uankm z+T0WBft>Q07>Ir$#m;>nqNvCbEe5qMn0AiJ!R}0T&Xe<~(=lMq%7r_pnXa7=l*-LQ zin;Am_+pal&KrHbchwDFo}cEkR=4sX&M_0SGqHz5-DLWJCw9Z~hO!nXLXZN2U5Bx5 za4MRD0vv05DZR%eWJUSCGKN?12Q69RpZxZDAM| z)ma|r@uE6HlSc)#VW7qN&dp~FZA@b?BsNl z4wXQD1c!Di-!0Cp@I58J;#g=WYg&N>b4bw&)X_2wOX-XZO;_mY_amg3kM3*q@=|b00r}KG zURUt*h`IH+#+Bj%PYGwvoyQyB^}RTI?tGn3AXq^wE|+zh<$C9)*knaAc6)}7aK{~N z77$(5LR?gA1uf$9XH2*r#KXndir(I%hBUY$Q0I)gdSUp!VyvnmuVm(`U7^|VZ!t=TEgPxIxm+w4*xlV}#^TU< z0Hrg`nLhk8B1jVV8Vw?)h}86ZobMFq=j3&{J(-^0>;>=gXC3TIPil^F!1+s0;)Pc} zfnl-0dVP$yuY4H~9^OGJ1r&0DtKdv?3X*Wc+3dvQxZhK@qIW z62eo$_4lse_U+qslgkr-(;COZb{X_@>x`*xgIV01+-9k=tc4?&IS?e1n>(1moZ;Hx zQbl%16}U2tA&VmmolGLY7jbkL1}v6Kml6Io6D42PpHEkFpv6syWRTp~Mv!T69!noAsoEWAi6SF!~2x968 zyY|_fuBk1qv2`ACP-R8aluckwlBX74MgY*F*bo@0TBPc|=nx7X5mLoj$5QvmoZvbW ztitcuhKU`}spA?5E`&(g8HNXd3H(JI3M|^puSKG(pmi$ZLLIQ?@EM5ntxm6YVU>wJ z&)>mZV3YeB#sqY%$SUSbVm#>km1lD#&ZAwof*~2#qYH#-kvhC!W!AK9ia^1yxuS)P zmCdcxyr^ckmoky7+dfj@VkYO6L;n;8GIuEewny}?1XmbKv%wODX@{q?(Wr0;(OcTPQoHTXY7g#CPc6p!KjcT z!aclyA6MUb3uzp&v$ep7UwZ?)d*^BH<6H@-s7&rW4&^g^jeWO*!zu!jKEoO&>5E;c zTysNelrU1e{#nLpFEn#|J#T{QxuiLwI2CJ71|dg$5kUlS7eqPTw`dA|=(zg%^Rc^< z#Wu#JnA=kep>9uW=ZCJRg|O+Ed~$Mv!~OT`&u;IW!E&{-0s=WJ#a)^ELbDVfLhBq| zZLP3cEi3ce)*6vSTJ2=Yt_aHxaSKmmmp_E;WxQxA!sRv;dBUKCW(~nXUp6lS!?36! zx^nAw+@UcH66CGoV5U$=)N^A6m}uvv2)szm+**GQkuX{|SH#+ZWbe%ZzLqrsnM*1H ztP}WWT=i7Xk#PPC8mnYC+?0D~u~;>0U@t`XgTKRf#3)wLHVft?oDw!D&v@@=-S>O=@DAR5 z>vwT{a)b~9UVY;ec=U;95R1595Mi|whtM`dl=;u_7=f^6(0qzOXcSlc<<3RkR%v11 zhtb20YqaKW?hoq*^#VNS(KMLD+QAoGRtRcdOdtlo1$~q7-H6}4?ld^@9U`9lPFKz* zK+c_lj|QEic1HxX?HQeYOlpl-hLp6uZV13~vB2)xojKgm+}0jV((wPdbD3S)^*e_)*mLf+ z5WjEtnKvxB`;LdUnB~n|!!Tg)%mrLH{}}pCfX%TH!8ga|*c_)G_io+5?OQjoJ~;t1 zCpl1(MMc?=N1o(^E*eQ7H-uXd7qmK6ugmfF%)QV|^yW6uNw=n}&xj2W?jsJ7Tw6)5fw|mrqC@G}QIHiTo-@~XbdKnNUSNrd`pOC}jo^pQM4)g^7VqYBU62VJdh3N)4)#5mpUh1EoT~_$y|spGM~Q_72wugzi}}0toO1{J z_i^prw~=$g`E$E?>X{d@d*-a-D}og<;t&m4K}eDE9lIhdH0V)KJ)khh*{RIjYx~k@ zg!!B^#*TA(YRw`}HHc6aK!rE_iz3*~!{DdXVqSgw%|J1zg_b7O^tGVip3 z&Q%bPu|*if&<(ZYf`xF!2?t}MViZ?@hyf?-6WqRetqRF!&Ys1vST>)lH_vJT);$}+ z)MGsZTH);3JttnrI=}T$4>1llpCAdFTe<8i>{J1hUBW4KL%-5##gxo*5a(e~ zK7_|&In)==&DQmnor|8B&M0j1DDMej#zrSrxFV>CfRHr?ySal405#zq63)lYd@eRj zg^0n5qTH2NI{{P0vlw?>yWvtEExek7yMrrm)-{qtxL7gKSnMk9Sl3Q15@h>-=81D5 zw_<}z$Tp1=i(%PicmGL(cyegHQ-yFRY?s2KFLa6s2**b5xxnXpeLb%6?)9(Zz4yO? zoD=rWUBDZk{2uI`J=eJNc^>jvH1+w&cHMnPnsxgH5zFg%RXTro>}7#HP#Aotu+Vc8 z>$8j|fDcY^GZP4-OFxJa~8) zV_G};+y#?LXH7F$!1(S#ey7|AP2LuABlml(qR%hjF4VSz38F3VYlaxG7?wymArZQz zK}}{qclDj#9G-kyJw?0Ar~lsBK7+?DJv()@#f`MO5y3ad=GYwH@$vA%JzRP38Xi8} zCoZ6hpMhN3?08~cvx{{OZr}^_{SrAnWNJ_GZ;l->Eyi&)AeU3N`%8_sQvO$VNHJH=6t}}(B zWELz4DWa}pkmwex!(ADUv5FJSix<2M$W_cPo8mC4BKkn$aW;{@SuC0uUyC=)$ad}S z^;)w-au(Ok?VZr;@U6wHU|eY{&S;ULy_T6;V_{)+72D*Qm~GgMbr591*)Zm0x~GOJ zb`&>lal2b!BQK~^=l;_#FK%Q&9GC2-1~JRIz-TONzwpl{Bnt`!m7#4c=-|ZJT+tAv zOG232F4R!Osd_?t!eT3i@cqw1Tq{$c27b+|0IGx#GRYh0RYcF{U|P9eiEzI z(y$wJKUao#r_H}7+9$?k1Z{y2BvO}qsI=HKZ(44NpyOwV0mE`o@ddf*K#*>l`31e3 z-ohS7)5)68iW;7a0KEC;6&xS0l|tr%ig_GuoaAE?QQO}q{yFELE#J3vew6#Q6#2@1 ztHt)>q)arPSm5e7u5tb5U8H#|I*=RaKV(uTV`JubWI*!n_N&D*>9!Kex4KcAqm;@p|HnTM#pMx}-c-*P;eY zb8uxxtRrz_x~@sSmpc6{JXnPj&vG9`u(!D;xU7@l+>IWgN5S)RAtiBE4}j%jRr5Up z31^&zphku1%^4ZdD^UCI=EtmFux5FU7-JK-*=p_6Njx~Xk3atA@8S4(!eYJh`p5C) zb1%(-+3uw!*CL1rYN)ZGbrvahcEa{NW-D+(oA6~de< zP@l_sL7hjMfl!|Plqolex);fG0S*upEh<8s*f(w%&?r> zA{Xl_J@zEXMPG_{QPg>!yC9*Bqqy8=9FD*Cb#YLI zYisi^?VNE~&}U5@S6CMP4M95(w94))@f@<4WP#qg1(T5bpHoChdFCl}GuyQ)eBUZKWerqifk!uExd{ig0JundN@HDzQaH(g@^^zP z3?&zm!}p(wbU8cm(%U~6FH(8@UTETgOBEY!vspqs=Uf76#g^X@%|hLQUYL-LGl>c8 z3TFW?`0q4d?{W{-`VEDWQo<8_C6kMwMIb#sI>g;uH*k2cj~F9ffAv{hxcGQ2G_jEF zokZF#;oNJ5OFqO}45-1(B;p5dNp5z$=metr;!cn-R7kgiabz>`*lXc|?~`l{{i)FB z_LwBjRDn4IN5^Yw-G;0Qn$07*=O?!IP~G8-ScB-4D#%$!jxyn`=#snW6u4(V-Hi60 zC+jtC+`3mk|G7slVpuF@ZhGo&QkgZM_!`eaxD{hV-0~WX7l7^U$uZcrK+pW`I)COW zeCxV~x$vGn8{7sv5l1yr@j6PVc5qHqW?&mO%v{*gwFYBL2P&F#2wxDC3U_?97=t=L z<}5*vUX;{u@K#(XW3Oc~n6Q%BUCv`JRCF(R6NFGPCO&{#UEMC^+KufgCCSk+r$3te zUR;V%*NYmW#+?#;UZaRR)?qXY(Fp2saBJx7ob&7TvCNUnPn~gEM<)>v`gg4INVy`z69L zt&P|Op|~{{)aagVNQbQ%4y@)BwLp@!cwWRXom>5~p+#G2z7Ta4aqz7Z6>WcEh6FFh z3j(Zm9_e#t4s`9N;{r);aCm6l=k+<);CikKNU$iK6u(vh2cOe_*Ib#L1w#^J#Mbso zLN#;8>fl2#8(0VJf3s(Ad%TJhqeG1L#F9xMb730V57Rs!4$BhU^O;Wx#taDZ`uw?e zcF*Ctmp_Kp_AXLNc>BFC%np{hD6A1}{G$(gDb#v|APpzYyU)!~K68?iZ z&Y6PQY_Y$mXlX|`O zbZu+FWEh|>B}SkJ<6@1-{qZ(A)3SNZJ zjS`<@am>#fo+7Zv`C7*6Y$8{5_AE;i9IJp-#E@W{QqRmTo2la9_RLH!cvJ?y^@5T} z2y*WPalho6d!XnTW|8uJ$sGfAQ&u-^gJ2!%B6k>SAtkMy%Tn5d;e;^9UyXw~qIh#k zPTV3CS3wkn*(u*ILl8Ih`??TXMN^r8!νHig!;1h@HP7cc@OOmhl+Y=6g!pelkM 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�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 z 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'Td(eTuK)S7Y>># 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%0D6X%1jrrelleG9M;|t#yAA~TNC*yr*iw!1g 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 anIeG?kO~K;;fI~0;{u40mY*w4l-D{EO?Q2d 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�E}pr8YiDob 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

%g|_KSiZV}pZ~vq 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 z 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%0D_P>F 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 }48*A6Um@vt2}0b9WZMR%pY_`L|E$4np$y0! zLOcSqtYuSsU1cdl5mLgsylw0Q?K||i*HJhT?o(mEe3A^3I!e953Tt<_aeKBG*{#@5o?nr!C)GE5HDd5!oev83^Xxs7?K;Z5=1f1)7x9ceOB;YbPT zVeDo@dF1G^QFoCP|3 zq(P1L@MwZ9aQW@;Z}ea#<4R`}{*NMV`~kj+GV|#>{N$XPp_B7fg@62p9Gpn zBA)R|=%c}>{F?Wnv&qo-go?g)okbaJOG85d5w90w7&?j?hYRZYC>nU2TA6=o@unam0FzJkgiw^Rk!W8rO7rJOaB&jj(>28EqQcD>*wP5d~ z=ORL$YXtH#WNoG5vRWB*Oeiq76#hv&n9M!GqzCQw_aRwjahX*QihB?1g86qGj)ZD=VdeuWHv2R;A!wOn{MhFRIikUSGOe!(M>@JbU z$;UnH9IG${p<%ks!5*h(fUaLhB8IOA1G|FEBNIc4>)V)}vg3U>AG0$y`R98UR086k z0eq(WLK$eRwJ{14dTiKzo%w4KEC6du=rgh2TD!BVWJp*ZEIyeu$!+&9a97XF$^DSq!rl4t@_GJ*pvQD@9^lon6=pgEY z$4SHpUIq7_wAR1i2xLXJr9;0=k?mXIs#lvRl^gG9lzg}&Oc>KjL}1;YRigttn2!=# zRK<@t&uOBIe7?Ruy5H!5p= zpll+TdQW8k@MdM;z6}Y4l>+Y*qD?#>?scicjMrZI0dUYKNdDL6MDlTYX&Bk_`sV90 zw&E=_sNnALuno3&qzgFR?TPGpf4MYSN+@R&6x{nWj$+qtfSOATH@m!?=p`8Q?Np0G zHC6EZcFL;B3pDZm^cwg?-qHCA-sliNvlbwHFl8gk$Cn8B-Ux5T7KDFaX*}$^sdU`S17Q2BB z0KFHAR>pskz?~}V8)Q{ORE%CH=!wx5PH9ik{WZ3io7%-TYPA7^xfqAtr14a%$tNQfH`d0uX9t)o|TI~zI z$_bq9xUr2PHhbVEx)ar*9*wvP0-Oc^AK!tc$7uR|05;jU(b+#?-$h#2{!hR74K-9ua-`8O;Fy(QeUE5$25kX1p%9J;vMmds- z-))){n)C$G%c@9)g~2*JJ2wwEG5&iWg0wOwq;(oLddUBfj78?H zn&expjyWX;mYeltFZJnPirlg7{Sh=%FOxMXcK{;OGozDX`yRV*t$Dq7 z;Qt)ER}2PNc)@3L3x#a|A5CW!Q&-n+;f+IacXxMpio3g8Dems>?(VL|DelFkNGTN9 zxD+YwXMHF6lXXGDz93=kIbV6k7%A*OS7==Be-WZ-2*;6Qyj=rMHR~M+CQql^K;w@Y zoeL}CxlCZ_^DaS!xk$fUgq{W-UU36NbCU-*>pgqO`!`P**|f@BL=cGGZ^jpy9u)6R zYvZA2v&~R&$gjK!Z;HJhdB4-5e)KdXb_qCy(1`lA77kfzK^FDic)q@wyo=z>6(NAu zJ3pY`uMkZpFbCdIfmaLA3n^3#R(1)&(;t5;ymmP~J!P;C!d%C*I6gkEb|0nU{mf=* zHIv)MK9jArezijsfBgxwcS&Nmz?8?TAJUTrTSFn*vT~#_3sivEne~E* z+#YvqiW)T_Fg{=s^V!2gxLkt5D!js(}}Dd6Gj$XIe_A9A>E0CRn$Z%H4x`AeDYmG#F0(uo&Hq! zsQk(h=uoQmV^L5>bHax@dVd>-!l-Af_Z#p#gX6$Bh`%7#Fcf^Lo7Y(dt(}C`HEvUq zFlBxk>U)tbfg7dP?z-=Q75*M5aIDB4sEa>uBvyDKh$F>JH@<3ew~96 z-;?mDCrj|Dagv0xLQQ#fKO}K!!QT5MzhJl>{G3Yw5@RTs5c_Zr!KXm`^fx;)IdwSu z3+aUMcjgPaXm5K$u9pH}+C+mNX2tG)drwg`t%87qTT{cpHoT`bRE(m7>Q*2uZKna{ z*yB%`dwO>D{6{%oU^7lp;3$v_erUQ(zeuR8o8+{s)T4=2| zblf2q7_+l5?(%)i;qkSAkS$0Ws=haZSP%tVXY%6o`seZ;r|{2h!0p{VS=O?X`@xM* zThT^TRL~P7M-Gv8K_7_In&q>QF$w$}-pIlN8IS0lDB!1gF$VYzpv4h9E_l>k{U+^4 zYervvw1 z!+mZIEqokFDslWE)NUc)T5q&J(92B(H?uZ?9*@^BfWQBq*2`k37vD7AZ2KLv>mlg_ zoz?LP-}M($wpCv{Ej}!CyfiH|bW=@D&9ROOoz2w3)|Qdknu@0=;<>*(to{{keu3Y{Lqw6+g7912kO`;aeuP&?kI#9_KX90`!DA3NY1+++ON$r zcJfpxvJfb05V#UGt;C-<)JZf!vkpKKZ6{OMq&{|zI?sYaHRJ$BFa(NIO&3PcE>d4W zRLT^Rpb40RCxaID)Vk`+5`J$>kf3r0DJ&eD-?d@eEI`^|+(AqB06U{TzHmEJbY8X3 z5s2s@A(Kb`EXev^Lby|a8&TR0La`_-gK0&QxDL5#8k}hIWv#YpEMAB}W{xXH^p=a> z$q^%!tChTe6=R^zmvxwbI?LRWDS|i;)!d(Hk6+nCiAZO&jUWX+ zVhpb^5bzj(mZ_@m)~o3A%WJ^xcU|Q2f1g8syfE`cGz%*<~4o)Wb*Ov z5?F2i0tE-WB<(Spya^KV14xjyqM0WbIrMdpz{Hm`MSTYchX@3blpQ7uyoH&y44#nX z5;~8Wdbzk8```k%L`5ExlSg?(5>91_33<~7#tt%dl7^+M!_X&cR`xo+HAZf}Y-Jat zV#%N5EOLd>c>;t?NVfE3QP^*FvK9)_if#;J!tB}2LHl+aq3z(_2n5G`d6`s;)%N3;v^Dx(a7TL ztSaF=RGRVlI_p(j)APq9jYn3H*B;H_!cO0PYy!N6x`Tn=8u$;rb{<^{jbyy$-Mvwm z$rNwA80*iGY@r=I!egUru>8SG3?aIPk)`YipGikOitwJuKvc%ZB1D-u8N&`tQrO%N z){|CJca}?8`FOtp7b=^)xSJTdUu1cY-LL%kw~@_XQdOKEvqYeLjeLBNeCWoma@C!Y zKh;?j*NxNMbfbul6X^8vPQq*65M-q~Gk-12aw($HKv?E#F+D^AYITwM1(z$T>@lHh zB#UQA5*ouV;+Xk<11Pr6q@YrEs0O!OQ#@Gd@$nSp1myzDI8b>%N_jtiIKewMYiK;O z&SDf|Cbd}nKIz|S1J z+PwLG?G^NZUEZ3r%##`5riv3QX|Wd`vV%?YINGthyZa4^pYbo(u#yCkhR(~;kEg;V z7siZ;3>;fu&x4)RLONg{~GDd+G$6$JhxjeR@$fN>BEGw0O`>YoHD2e;mx z=ENTa(38**{Unu@NcO4D#qmhNaB>yZgEBOI$~)X5nh-JqIBbw2RZuD(7)T6CCZ!;q zFpy;x*DnMkYm>h(==Q!3PBzk!!}dAzrM z#;(&qI#})OSwO;>S4!UcnENd^;&YRWan?d=+5cF8#C;&g1X|1FhNDo}=wkzS*t>Z& zwa6bqs##8#ABe3{$_x&4Ud672)g5t|@sU!ZjErf;WsVe2fSmOGhMGB+kKw)t&Q$P@x%WrpA*H1K8>#$-+`%7P5&oe zlMbTo*R%()iiih)=8OaE7b3q0l96ryH<`zuMn!`_(ND|Q>;(7h>vy%uDLM}PV%ufk z2F`lUW?Z~H|d2G6^)(X31)E**qU1! z2~Da6Qd9c>QyR;qs-)r&YfMv6`x-fb%|YJ+6hFp()bBfmf~p0IWO=iDRSyp1tp@M7 zT%&Hc+T5HZG9CuM!-IEzSbiIZF51adu1b;DitncNn`PQ{N&6E2bx$hZrJRFblMg!s z=ci3JQGu%P930G`9F>yV8jWa*Ii!qs`4x-WC#kHDC5pkn5FIi3rno~+v?AZ`e#Atz z+vpkc$*AietC!M zGUm8`dwuXY&ng)Vg2 zJ)tIVl&LYmg5;tmA8INN)PkrL!i)Zy;bO~(Eh(Xj7JOv)Jh`=@au4?!pER6^O58Pp zo`_8>&8s&Nh=Iv|=oSb)lqwYXcK*Z!;6U>Ui0m|Pslqu3iNQCNx#8<7J<{AVQF7IC zVxi}Tb$lnahv;4C`r-aO{KGm5&<;qED?JZ{^S$9}XuH`gl|k7)k&HA*bLiYk^?Dsh zi?Y!1F7Eg7WCl!0=?4=;y^=(t_0X}u^>@162XC3*?6a|!aXSE4HlDF{ zdUU8ZD;imf6Hy$<{jpJGFL`=>LIRgJYFt3vpG7K~IP@MWUio;fyE$6XSug#QYmjfG zuBm8v@jfJ$O1`3xSszFe{4?Y0{|t3@ZDP`g?6n;zVy#psB~UO_*K{#b^j_q&H+*F=Hr+bvI$O5Qcaub|DjUjRXA2CVYQ!i&Fu0VRp{!QhL+R@#t>W2Gfe z_vw5peq9|eesmf}%Lx_=u`zFTUEM=d`m%ZcAX31Z{y0!HGiBK>DHOT=c=h7^^3o{D zL@>1OP4MxSMr%feso}PR8JhcbS#@Qdk30f)Wo1Pp@9v$)K1UIjl9DnbG5hCJQ6?4% zjT*`rTPaz1@Xdei?J)N;roOY6PZQmlnL_@0OJp@CGi@JAq-3wv8O5ALOpkf5C5oQ8 zqnbR?S4`vA)ZyTV&?pL7lo&0R)7-3h%9sgS6{eiZP!}BZ8AN=IG*FG{^LRHEH&mx* z4<3?F+jI<}CJz4DeK%mD2l^>#x96{F+w;qP%)%hPWMF`>$v&voGScUQ;pYl(uj;-So$HNwv@w$AT0P-+@u)mE&y?9!ZTVNeVY{R#CCHk2 z-IYXK7pPFE{KrH&3LRFLCidngABzRG-u+k?$TAqNy*;anC!_tG-O#2^G7Qy z^0~9}di~>p7qw|xU6xw}{vSgo;K3ASqV2Vi@l0EQSClA1ujg|ju~w`bD%pF(!&BZZ znRPNf>BY&Gj`*wnRb$|n@2(x-BonHK+~u+d_&%o)uiySNbAJF9-g9B=-DhY_ae$nA zXNqwZ433+Vph+7R3nB%_FpTcGsLBITt4k+X-+nOxEvB@z@AWa|_PAI73p@%D9|{0Z zaW|k8_1+o!ANQ;PKjXAiKXshc0b#AAUC;Kt%{P1;{D`8jznZQJ>sY0Pc=}9TNp)vy z)>A0|K_0X&V0;y!v>NS6TkKMaFOFkW`AidGN2TZ?ZzquHjR)zfnsO%D_TTj9Wi+bg zpkiy?>x$3wQZQ2EOM_$@>F|ekLjx!`i$$uw(NRKx3MWo0dk1q9_)B5o;24S7V-nQC z>So#X?25?CT8DJW>j29$=i2RpkFE4C-xXhb<g%)OcoEwFP!( ztr(e{kUpU~%{=D*wKC}W9jlBUU0H@UElwA-(u)x`f^^MZS175{g#!6FU37)^@Oh1wYTpnHR|yw7ks6Marn_4!#f`Kq zIKx?$HoglHv>Z@%%Rk?S;6xs2$9(tu7W43zH&bF}q_6w^9c9{VSydhCY{T92ozk6= zXI5%xcvjcy4~xWD>?i1ASSc#&QU;RG9}9em1?Q3?MQ%eAdT|d=2qG`jFc2p9DUN+};47-g z%MhY!Uc6T6jlAFQHk(l~h0hp-t21M<5e?pZvZ#UY`)7{_oK8EM4{UgQ03X@)F?7^? z5V6)``2)4t^4fl;h?jVF7Lbf#Oj@b~{eh&H7i%KX-%)^>b=j8{{Pv3otcFRrHaBv) z?ZUoVBuuyxLq`|j7h={D9mBZFItsv!>-W-vo|nS$a6#<|19vG8WdeE!q`$wvA2|-7 zx71IzHlBFSp`W+@vvzMv^e+27N_$XH#vtkaXGde; z+W7U!U2Q{-nf=Xza>gI&- zGvfG|@30WJI6xRlh<4c4=V1zCw=Rk%7NL~@@^v5mYz~mB)H9EKV3Ec2W@Rw6JVyYeexA+hD z^C#Cd1Y$Bm4s^Ae&)(~dW^>|qaP#fY$9fv+y3=N}bYX*Xjk1ZMjUnNR_ulw#U@sK2 zwpOXpW-uSMZ>C`imnlOHYLTWpY8^$o5!N+>6f@Rf-K5-S)Fado4v zFbXpW)`(0y_^na&Eu4+kWJ+NP&T5@|%TWIo^vPC958~zd9%=*CQ9nKtH*Ddw4 z4P5V8?VE*#5piSxBc#ytCeHchVj`o;Z5iO5p*!P_@+B9R<+}&*#mkdt`4a!R@Mc26 zi$Js4?B=IEU?HIW|Ip#+?I8g$7;3Tpg|z81!rv9NO!9jA^v3sxJ-S5`M<&Sw{20Sx zztM)A5{+Q18dX11ADUt-98)tI@*-?}IBB!%lC6+{vFyuul42Xm>Ya{At5ZBh<$ws$;`K79+#WPz` zZkT@Oyf55kDNQrk-!oGgz89ltj=q4Q#NlBly4MRYfI0CfA6Rfx8Xx<{`S1YK_UkY> zPwXr^witS+hmAl_0=B|Gl}=0|tA;Qns$rU1SaX~^Ft8Wo`EW}dVP&Q8d<5diaq0c` zmp(obB~(2Y8@FB@h!{~FxrOGeB@V#P(lTpTHhILWjmGFCtFSYBB0@R;6ZZHiX&8Y;mm#b(X<44F!v2l(p9{=dUIVusx(i zJt`mN2VA5ftpn*4WIu>V}-seM2)_@SLiM1`-fq|?#T-3+B>PYsp z{iWg4UqXAk7+*z+-M9FwXVj#gC`)sSAQ{B=ZRu7PTpVm|=9bBzr;p~NzT!=CCN`E8 zOdiGc00`%ppwLXd42W?;*tN|N0=jE%sMw~yF4Rob{SJvNjl^rtY>JwZyIrjJQ(+>) z$cEa?Z(v`>h{H7cs>ivw!W+IdPdfT&v%#q{Z?YOWc9RR(*)gO|u=4a7FS^yYb$W0j z$3Exstu|!Gum*tDg|1Y*z%M}_f*1X7{`CeTP|SC7nmSTuXu$_JrcXkHOnA_;l1f}_ zI%Z?T+Wx1jH&;bLfs7&_Ey%ij-_c`q_Z|B9vEs73PL{0rybhSq(EbxCZ9gr}r^o}v zyO>oz>$LHdTm+t7ou|5#xSd%5QY`tLCTG44_^7x`F9kI+ksfWQAb_Ch>4yohWh}nr z=QK?)9dFa#yvyq>Y3YXztHC1K{yt#J!>x4~ED7nx(gWXedWs-eX@(a)v6q1iMsN%W z2*74dm9vjDm@bWDf}Vd@}lUW4<Q6Jr0^-kvi_r~JjrBrg3)&&-wF5PvdNCz8 z=NU_!lxY+N@9zL5@*q_TX+l%@Gs_fVe?$wPJ4c&5n%EES?7g} zDK3N^R-Qh4{HLBFDn3AMw*mbp9^CHe!50cty=x*$cFg5Nu3&p=Je7(Rd1Sy*ff6S# z)RmM5rr|4H^H4)?VBb;#{Zk=Y==igMVY4r`@$VqC--W`laZZL2J(1;<2V$~AWNsrF z)7Q@-j=J%?*SIL)KPrZinVl(rTq?A3|D|xyo!0JED~+?2Rlwpl=7wFn<5<)X`NB#s z{t}E0*~R*Y^I6EYlmT7bKm$4Vv<@hSN;(7*PiyHE_X@~E#OR0OGxay`-fylphFES< z68HL}ipG`Jj3X0p8)OtMyH9&xnUO`u!V`@_nfy0x<;f8r5 zYy)q`8a4c77Gplt*1Z*{ZXP~zXwKC} zso(rZ!HUi+I!a0jzY!aj=DL27dBboO_dcM@X`rS;IuBLDemFeuy&dFNwAl@o1U16n z!HV{r@?ZDV=q{>kNmAFro2jM@)sS_0!U62Von4G2?f*y3Ym2h|kuXuq?w*lG%{>CY)@_j>zgTxo&ax6zU&j)j)c z*Jn-MKd%^UB+lo}Gjtg>Oo&}sg>gH^!p=U*$w@!3Z<@LK_Y zJdbr(YxjP|d7}OPt>;|Q)Uz|pi3sT!Msh)Zb< zt=;n?ojk2)Iu_epyf^_};55x(ugv*l;PVroD?3ebHct~eEcN8R>#>a}JY!K_54xEW zFI4vzqV50h}!~yN4pOG0W#0Ky6cpO`f<1>gNWaaB8XXqf}{Yo z5XrxM2Iz@`CO|u$aoJcp^(N5H&ieu`#O z5HO<6qr6@W-_7Ex)Y}k!t(+A?9QpQ_!tP1a6!MEFi}(>$$40KL|6!-�-AJF#+*V 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

M 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 x2o@A0W`d=dZj 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 I931_j-rT68MAF}4 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

Zd@6%et7oXiA1FBEd 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%0D_tN(`9GnLptrB#K-JXup^O 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

T<`Tg@PUvdAczP+@SjlnfZo3Ci?6 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�+y@Zt>hsF$=x=I!0vTHZb7xYG1Asp-crVjeq-D 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

VItHAmKY z&a`kQ;GNHbA|<0=f58iA^@yB2Sf}J(yP7=;w7qIm#|>X1JNpLwS};4-RK^OfFfGpe zN6rO+-N`Q#_ed23W~QeaF+k24%X3G@p5WiAW8v@tY`^n!4e)WvIa_ej@f$^2I|?kG zcX&$0NX!*4Y|#OANGYkn8;7OlhD2I9z(C5y zV7)83!SObifcC26#BK=!LH3tU-Y66=^|-9H~Zwtd&gBi&0~2)B~Vq z47Aa6@dqX>W>!2J9?frk==kj)AKyRxR?5V)qGm$q%ms$m;n=9Z&S6v3Pgc+jGnDeFd7 zPVJPYK!)nL*cKB$wOC^-8(<}xlU{cPkM6h^ANlxan?~TQQ#Rqdo_!(KubraLomcU- z#%MiP9<%J#NNO+!f3gJoq}qxUSZb}VVJrfJxW;)1j*Nh!*~9A#U`?PJm`40n(5VdB z6M(q{xs=ChD4d&A_&1E=u-XDfMHZ+C*MsCP$+Al6O}|0}43b9b<& zw&6&4k<#j2P@zs zn+lb^z*DLPJ0EvyjIC{XU-0f-$BKg0xGFG~NH{~xz+dZ?%9qb&6vS3=@}W3@lKuFd zi4czj$PO4Aq|IfZ&!26Wb(6I~;wagVt58qCgzx6Uq=9Gm<@KkfHNz;D*_tc+A~W~8 zrB(1awxpBin+bUk4(C`}dHaB>Q==nJC{0fm_W$ezmYOvp*>!~1uuvxVLIBpSol;ZQ zD~t2UV>^^@{*me$i$@RP(CnlAvMmO@;F|Mr?D{EPu!P_+LhSdI;d|L8sFYN5Y=@qiO>F#7McYub46GcUqvTl$t0b+3y%|M~rxKe%t)`Hzop z=+RwX!u_B7ICkEDXVY+u&{{S}(x{RxCjSjg2?7sFNBiD;}8^&pJ14GUuTg?-pLB!zP@C22Ddpfyc^k zRa#6X-Owx0VgxuHJ$e{ly6x>abhs}nn4D#)e@CzP4ceqq7KEf>w9u1axZwa)p-u9Li2Y0!Y$Bl|xpO1+%0@ zO7OsTu6d)j9+2n9kPq@&i|I3EGY}o(y>GR(d;ei{y4~h$Cmpu|(~}WZ)wW^QyuSr` z&V`cE1aZdE=(No42yH72F!h4&UFy2V!#nrkKmFGG@Rj>_nl<43Gmgjq`qdx6rRSZ5 zc6)-J^`Xs?*sBe&5bau_ruH~s*9kpu?uS~e5iN24WSt_{APJ(?K8T_`zTxyzto#G? zXn)W4e4d4c0&ueho*RGm;M7eLyh#F#6+pNF*#$Ui{A4o)LMCmoCqW?f`4|i%i=a#% z+BrMfJsvoh=o$>Kldwo~?YE>7K2q;2pKs3lB0DekB<9>MFn}dMKUSbBn8jNslS2vy zlqV+>5n##jPS3tCaHdQI1#Bjo62RjCf{bfKm`M&b;Sn4k_0rV6oY2TR(6u47dzRQ! zIRTzs844gCeDcJd?yv1L!RlnCh7Xo-Q}#iD1UrHH%$~lU!Lz|+LfP|IU*$Z@bHU-+ zOfDK?Jk#e0wFo#o9HKqnk^41$n_ho|=&t^{5LEv)R|q zg1cJi8{n$K1Ko(;5j?|vG5#@lol{TPi0iMtxcTwj+wR8fL-(S)JXS`Ik8jM8bH;(4 z5971%`>RF;KGAOB_22yroO$wQR8{Z^AQ?o)8>=FTY8o3I0=TuFoKOvh*qlPpqnm*@ zo@4=WlMpRN^vnk6j7^$notgoc-Sx&IrJ5}{%@kV>cq7t6IW_e6Y(}l4CMcw>!7xNl z`buWc>OeMqY+I9^u~;}nrK1ALPR;_f=j+sD8)uxf858YRb1&|m-G}+32QZEV9v|a_ zkA%6od6*!$P_lxn_48?n$I1aaWpJI-u!ca&Zf-E6Q_}L}548GQHB~YwP1aSl1Kwiv znxO@w_8GiRx3h#D58a8IKk)^n0>9x|7hwI`Hq>adTDN&05TJ*#6AAR$$%B0e&akhp z0vUs~E#bOR2G4nlETQU}TW%vKsaWEmExzuNK(I>hm5sux4XtpC)|Ldx5-mf;q?$sY zMpSyq8=@hSsuN_FpzTu@mlm;g`wrBDP|OelE;#deteKh;ByUeB`)dti=aPD{qR=_= z5tX2W*LXK}LBe-D_mESKy$9#%k$Cgw0%*Vu`v8#(RBdD5y#m3BdJnJ(?y_wK5z) ziog~{Tt!E<2qIPjjQ6qeBNm{b5?n+L&Ps4o*3Sl@bnHsGr!fGn6Exi@a|87~$@*WL z=c2Z@G_3wFP0`A|MG+)2$d&z?likA7RVEv)QAPCY1OysbFe)-WrP;Nf;79>v{02 zb=UE(Z^Q_^4suv`bS!SfIaNO|auc#=?HS-&%9*tV^qDAB+nfil_a}QOW&h^^_EIhH z1*JN#udod1B9T@J6A$nOc43uuJ?i^9dlM$L#YJ<*^wflKT?yzcFCwQWhxO=p6bQbu zw1A!We-&xKKx{c~Jx)G;Jto?$mO)|6!1JF?1(wlUWEp_+5}e^T7@pTqPR>IHYha%_ z8QgmP9ACp@+<*5Mu{h@a#>e<*j;%X7nB9HQDodK?qq6mpde$9_DfP^=cW<@< zJg&V_Pm_*3GOiR?k}zdOS5JGC%NkGu$0{T!+J+R#oP$G$_T$!n{#zV5+816-v@5*v zWmn<6GmamSyq*sx+dYWJd>Fv!)}f?OZa#ZOjW2tn=0fesz%n;U?ABmsfDlwyh2E z5ku&QNVcQ40#Xy4AkbGfpYqyyic3=GX5j_SV4E5N56C&;$ovxC`ggbD-8bLa0QbY= zxMSAht#5i2uD$#WwA*cAbwG+|^=v@os|@$~K}e)hvpY&fWj)gppnsrnO#D1Ai=MeAbAKt;M^Kx^+wiA9Au}20zps6NW#uc3_z?~nG}$o zMPKENv&%_?ma`5Aok=CZ;Zj%|3(2H9d3bG_H9cBD%z(!11?&Mx$p>2DS&MR>580wf za!S>n(NSpv)@wKy){ATbG}U83hjA8zMfvm81tPU}Fbg7^j6%Lgdkd2x(e`JmC*dBg z_QA~NGdPw(O7KLsMT#8ovevRgu5cy<9HK||pwi-^*7u7dEs5aG*~e~%^+hOox(Dal zlUP$uZFs)wL*PF|_(6{a4|0CKLeT50na%+{w^HRU_l0bIs&gT{u?gT!&R$cS@Nu<< zWeW9`fORGnck`TQpI}kA9UL+%JNq&U*Z{DqxYeCBUn z4u|v&`gt@WV7(S?T)!4EhQVpbebHmiV-Wlsd30BnF@I=34({54qx)ykU0yCWal2Y(~bVrb4c?76w1Y~g%S6@N{HM++C7Pj$LEPkY7-c$9|x@l+C z8ffD$POT&-2r28LSlW{`fHo5lK{o(0@&>Ea{*^gb*uj>9p>$N1<2;47G&J&5^*6|z*53Y4A&JJckKqe=_G zHvdZHDV~2G0hKxd?Btfu!GM;_D?cnn^kIxFF`_R5y_CSY5J1mC7FIn7eA zdr+f(>+cn_ht^R|Dw{+R$P7nyZOB+^-m+B6()(6^>~a)8jJ%DDAb_I=&RqupC%u)(#MQa>m0 zdUJi7ges zJ+TJm!u#^9wLss?D0@6Z1K!@X4ZOayoh9g*jm|kEn-=Bo+;TudIM<28Q=RDoqfQ6e zXtAKGV09Zvu`i$L#_Fg?#5hk#bMMJ}y{GJE;g*AAc>&l%1$qcRQK;$xh$(HhM9Oy0 zXo4ey?lDc@pRDBy-)ABCYf}go!;@gT>PaQR(X)8~!OKwatU(FuGn0Dc-y)`4- zbFKCqdQX8#u!N#m!c2PWnk+`BV9X&tn^IC=`&J#Te``%!XK4Y4W*@`DcYYQ-zV-zi z*}DtvsWmuu%jwu~+!h>}eWbs9g@9|XI2-HNuAxA@V8cw*=vvD@ObqI{1$MTJq)NDz zslT8N1cG5CtCXBABg^AC+W*>V1$8WmeJ1;eQe2fnTfOoNH&mqjuEjUU+D%4fILz8CG8c9xUs1V1V1_iV9 zDGhqu6VVA#s$fDko5oZUaTE+G0W?-Oz|=$= zKlZAp;p|g44^-0BydzOVCi54lhRhPs1~sx#6NJqTEZ^q(sS6zvz$u@rOhn|O*J@+C^O-&*Utua)fr+98%n=%pzW!Z;Rqu0yb z!TIP4rFKt~8qKr@d(H-H^mlwq6AzbgTJ4S}Jy z^#_(~)6ll2xwmMF*H~^qgAuO6lx_Q!-R)Lq4vvcpVXc1&hw+bFvbDNV+?U+8p3d^%SfsRE9@sUxx0Zc>R>&riw6@eH}HtIfdFiZI!U2IcMBt`2qG5DQ;ff77Kq`@=McjL&&DIrwV z7zF>8C-F}$pdwRe0Yb8 z)9}K=_v)1ofMn=p6BwL@UT&O$6PAMmT*<}2Q@|z%FwdifLIG-gvqn`sub-L1(=R<8 zQb(JZx9gH_?5D{fJgHP#PERbOhp!5 z%bDpZJm;!&v3AWQjxH=WzTjWI^ z{r5XRe*}-+|3Tb!?}NxWBgTN|U41rQc+GiOJ4Mqm!#a~2Ak%!tRREC$fBU<_PD*xVWd@nLqlLf?vQZ97Rb^WM5483x)vpJxI5sC9coEvrUY0?S z16`kxko#^Eb{c8Fj*zP7PPc=72M?pu=`^2o^Trv>tchs1+M+*TWjtsv3^Z{7aV`YV zCzayHgF6V|s#bkKr?Y}P?s){i{MHZS;E_e$7*-KK^zy6llRt1RHm+ZTFub=_CPzyL zs^;Yp;iNz{25qwjLlw~#98YIy?UFR89T>EzsU9i#$cFadn&(2#l}V&fI{-j*exLoq z+3OwxlUdx<` z6}8^6y=UR?g1~H7{}=oo+yq|oK8ykZo2?B`b}&za&%lyTgZC9<#Kv{gYI&=>9n`&2 z_QN;#__i0j<&1a=wJLc_U+h;?#gmwyq>6==ct#(E{|=31rzHgz8KH(?i7l@jcDxeXN) zuKyXU6DWkC@z@)Mt5j8mQ%~H86F09%&Kaq$@z9q)gXM*}F)A=V{?(3^#d$pN`A=Zq zBijbnL;)9{a}r+g^b4_edTMl!tIb@3*j}iT7@<_afMC9P!B!(|3_`QjQNfEda8OaQ zK~-E7F(B@KCiz|~r-?`e6bwHj`4JBNB7<{&*mn?_nvURXiX1u#+qC9n$v0Ij4_~)M z*RQhct1NgL-^fG-727lj8wBIEJ8E)b1WrBS7+i4HiOpD6r_;sFAGr}n4=;}&)ba71 z34m{3!k#^cFgLfL3w1bvHjlU~Z)(xFFc{!X#;Mxg@sKn=&0^h?ey~FoY+xIP+G#Lk zEhat5Tf&0D8HHz%r5P@>HHr)di#g=ZEut^}|P z!DKRk&IE`>=iZD2z>|&3aJ+v=NHi8+HMFm;XJaS{*ZzMmuhe*8`wrCg=zcrvlw+}G zasn~Rd(WF_7`}Ju{Vx4w2V_8Y2y^2VEbh|=aPI%Tx~_5mj{W%Q-}wM`>^`K%l0yi1 z#dVk9mw)UPRkA;m7RKlCN891foh{`xJuhV);W!RM|MJf1*qX(-=wd<%1KD10Cb2Z<>NiH zU8xJ;St-mhh-WC#Gg8C)cyk?>=sF4TNRkr4t5KZ{7$xeegk@iJ2#Esx;g0%?wJ1PMY&ia|L1H&f6l1K`7TMNaq_p$IgVAPI_`t!*IZGI(}=az8cwdA6TH z-46-A6(5OVWSyN8Vyv)n-L$5?Qr+OU-|FMrS_$4+TEMQYcj1<|{Sof^N%_46O{I zFbus|2o+-~6yO=On387`GdDaYW74+!V+$9bvjq=5wjViX?0NV;EX^GrBLm~(U*$-3 zjl+8$!xujEHuO6EG4Xb*!t1~5>DaP)-JnSX-S2_Ysb%p%9&drh#F~i=XB5kf>Q%ZJ z8UAk5u+(G)LL;FeIN&dBxC}y=F;3WxImorC9*qTON3mc)8;7w~#St6^nZ~XffJvr9 z(`QuyUu=uOgaMNro@byFGGx-dGqmS#((g~HJ8SZc>%Z=XnJK*FSr_B>yLX@-TB6+g zMLhcO-8laEEC22Jg^iE#u^IrrqlDd>wP>J*3vq3Ef^WQ`2+92WSI8l|AXz_}y)aqk`P#ACbmG$ikL zKj%VR^OVytHQ9zy>axFbV9;K!brp>@X9xK6>A>AdnSSL+41d`lTbob zvbeN_dmnrlX>h++RmA1zpFFts!r~?fb@R~v!%S?-T4n$UgiNYkS(D9kxYB81kE`f{?+n+yp~kCtFY$dyttjzHxgrUeuz z6ktPw+19cr?kTyZkd2A~NE`sB`OLz`#00H|5%DR>DJBnCuwrs-Bru&<3E7NViK%Km z$2VI6df zrxFkL8FwcyK(!hiq8TXWH<;--@0kY5L6O-3?n7aXl+#S93@E#K4Kx{$B{t}+!wg7! zWLy@tO9&3R=iI|e1x^@*Qj9Z6=1c%&ne{R{Z<7-dGiwLaWWy`d>mjEasjgAA#~}FE zbu7&t!M(TMgpd5s-^8x1UsH@iyH(-b(~rX&zWXXX{nFF1er5_O0ZS_#JoMNB0Kj!m zI~Oz4ZTO>XUV?4UStRo+H&O7Jd|8C3Lc>cnP8PT_n<}6~D5N)dvQ2{*x*^`{+Nl)ff^QAOCyD%HkaE`^?Rleej;w{}e%&%63OyyflxjKgzFed2HL0es@4@5cF;T#1cq$ItBe_)Y=9SFmUH0Osab zoW>z)fH{Og;hsd(B>`ixMh~qN)U(M-wWw{Slv>SG?>G&MBH04j831mEgK4U~W*eim znj0Dg!Uc3Y9Xzz{4!rk6pJ+(6laF7I*T3|s*t~JgU`fpuxK}}w!v9u+eyWM%hDwSp zJT)jEqH!BqY$z2G3QZgw|K;I62Gn&xN^Jx+p_pNVno(#vBkg&s*iA^KzYGpU@@s6* zGdMVE(d-0ZnR6t;_3>w@BWGlg$LBRugSQt>z zxzctZIoCLJbO~>H$EWa-&)koc^u2M`DaYdXe)eTJ`_#>-s;GgMKs|*5i82XnA^|I2 z;CR;id?Q52R5L`fJcFq9oDuF!%DWJp&`?3@WaqO5VFeQ4tUYoP&9T}u7Dtr(()ec! z@HABRe5h$c;h!x<2@Oa{Udc@@3&;Kd5Q> z=ULx((!bdQwLF!o2gY-M9){Nwg4|;;x}tOH<#|z0p*{!M`g!?XF6hOc$@I6CFS!h1 ztp$jW$GH}OnI4dzRo3gdU~34<4+@^`R`Pw(iBNogISBVN*-aF9l*cz zzG^{K$)6?5rtIX4DWPC+f{>XoicWqD+ke&0Ip_Q}V4~eZyMhA2F>vR2G92G_sAf(H zNB7U-&X2zjANjNYhNB1e^v%@=C-{U-Gx&Gk^K`uayRXK1r*9qv(To<=XI_35Qc7sI zg19IJ6^OfeI%((Zr_`*~&S*cY!JDM=;1`JQLsjwz2doO*W26GKx7#SdW8KUeTy*vp zOtf2AUg@H{vV^&Vd(mB4#^m(O7%3PZU;ne4GiD#U54XMhe>N)c$%z(z@MYKFv@M$u ztLPWKrWhiRMUZOT4Zh4+-2)8;0Gk8DVgZbiL|D?VWq^J1@RA{MnH1VhQ6R<)Wq3~Z z#v|Q@Qz*7!3vRD@RE=s&sJx&-Y*WyAsszBO@Og}11dHhcaut;l`%VULT`c%g<{Fa| zEu4GWak%Q@)A6y--3I{Zc6)gH-@O|zdHE0FlFKd_tHH;|zkL9F`|`j7Woh)>Hoz8# zc?nwv<+V8kCD?K!4%Wn|1JJUtZIb|IW&k>n`ovT5MBypkB62ZNu?_+qX)iH$2$d7o zG_2c3O5~h-*neOzKK|jq#Ni|J2qB<~0k3(<6}a-EQ!&|YiPz;YrxrA^id8&qsUZn6 zoUfK-x z&%Y8+z3}8g-$Z+7KYS}6vP*$ubq0-kY6Imv6 z4w|*6wg5(RKW34;QdzP^0(zkmlMV1ymuTxcPu4U>EnM*RZUQ%J0)&IM;E{lK2t<5I z(6{FRa#HN!<@3Y>$j$v|1wHK&bdH4ieeRDd0{VipUTIaLt9S(U>Om?fhvb8tSXu2e zJ08GZPcN@!cJ?KM9Y7N_auR?oTSIjAy5I!qDI59U z(kDD{cri3_V|>ADs6brL$KPEqQUPf6EKF*Lbdl4kb@`rD6Z=dY_w>Yy0*)P0UA|}4 zcSZ-(@$NfeImT0a9_gaiMtV*?KX&gk%js?9F&*je3PLUyo(aai6k+69dB6e8OK#7r zWQVbRsfQ^9DTTYe8Pec{BPoRsbTKWxe1^?npbb2G>?gA| zwFC5s2P4-GD=HN*E$ET8{@Nkz7O%x;mI`=&mSwWC+VJ?-x!DAHb~#~;IXQrJ zCNJEie@_w!OEBYcb*bH67nWB=eRpv2Z0rpET za1}gPQJ82UOsTX6HeQ#*?+K-p^zqbS5$CFY0YqIg_I{ljCwXK41V*&V$;+j>?Iiz)0fuzY!;!BGm#%PrCJJOz*?fW*OCpi@* zK=x*usU`wAjGk?iT|goQUUR%XJ#$u;xZXwu?L3o`WaQWPKy2CjhE=AAdGBuOpPJSJ z5cw(Vf=Hg`o)sKp3?8A()82{Bl?QHnDsO)N3+ikoz#gp1qK5zGq7lm7sH) zU^3Kl_6bK9Gl-N=(!cIf37%8x*T{JcfUdTp+^vzF>7j@PTbr5LEi% zGEF3hTSx^`pv_F~#~IU8lUTcEVvq=*vH!7$&|O&?qXpyR>poK5!$V*BEbh4Jok(>L zIcKbyY~x2>buG>~>6pG3xTlDaBduI$uqPs?E_<7EkRgi|70+Ignr%Q=c0yWY;~)WS z85HAz>s}L|GyL&)*bOdl&}Vkmm+Xg>siH{yfACZ-k|an@u~R!mzYIf>40}}|E)s!G z?1@L}7p2hS5InD_CGXwAIaxE=!tr|= zkuR|cLzW}Xj;}Ub;WgoMKwbB+{o%Xt*Y9{AI-NdHzHWLFKlR#calskK_pK#XTgTN1 zDFZ(xwO1PLW1(_DlX?W&=R}r%fDWFbu(nLrAlXqhHb7+m+U7c;)8m|*N~_~k(4jYm zJlIne;5`h@BM7QI-0f(8_ zBV{}XR7!z>tiO~MlOXk^1qR!*nSfRXDj>)m0{ZybQ@}{jBvv!clAV6f1DXg_F#-!= z!;+a01cAb$Hf)HY=-4muXNZM9R@Q{#9Hef6_(+aFI5a6>gkQngZ@6cti6aF#*R)o_ z0iW2%xllLD-kbN;Oqmx3yyBovxkgg&(cJf0Uq2I`EY@QVvi1OY*D9rkQQw>Mn#KLa zHi%5TvegC=uP*qON$H&Ip6;pi*@jWo9Yma~5JE{h2@-+#;1H-s0ogLiwIOOUT;^J^ z#fX}ak}CD+Oeu!~#w7?&c#{Fixvw4UORWjq0~2|!K<#Af5JNP8)_ag$o+A_ug{%Sj zoMcC_%;B}oxvCtJh1Zn;f5O1a=JH5guA8G>N3yiZ1N=-hIh~gZ;CQB*H`}_;)TJ^c zJ<)vz=W{2QFpZ)APjg2lFJyBJf)|gv*Ttjvd^UMh(Wt*LCESaB%k{_{87-cg!E!-(PrQz_YJB z7cYJGrC2|+7RrVrC+#=K#XGVM`r$%QZM;r;Gpi;{@^P?@RpXn=%C$)2;^eX2G~Gfi z5uBzjc*>C|zRsRsS*r?~CbFjA1^l#l^4a77E;DwO{pLzFZC-IuIU8k7;JpBWxG{zB zX;h6>wCWNLY$+98vX}}1Cmp{5|KT;y#m0600FRtAX7}vJ@BjX9W81ykFkbz}$Gi*fxk&cXClOMCKWA`F`~ ztkxicT%V;{o39fRc^=F0^R`g4RX$*qy{rfJ)pe}>nsd_ukg?QVgPd9#tdaqkLokFJ zPpPbuB!p7F$#MFuRfkg1n^#jg1+8$+6!NL;y|Uh0WZ81=aWMru!KouhgtdQRoO&qSO8s3jQegpx^nhTQAF z59QBW>l#4Wy1`i&#A`~w<0jDeaa!rdHmKzTjV5rC*Sd;Yb^`TfAD5;7>+rsBIjZoU z_TQIkUFA#6QU*}bcG^K zoV8LCu3rCc2!h~zuXe<7fU&Jn(wQNKr_^-oRB?mu!%rNd*Sil%0hn ztm?u&!=z4j2o8@33seh~>^39(e52?9z!K9T6}TkzhMz~C6E!_k$e>e1MiTvSkLs0Z zr;}Ym%~NyNRHJ#G^0%l?%W=p<~&k)VXQWrg}(olH|q6EexOk%QO*l3eeV|Gy~X6yn{Q85j@0hPS()D0J@X_I3stBpY< zvuU@g7AD)RrjYL}FCx`r7-)QaeaG^`QQURQjd4ioVbgm2$Jbql(@xxo5Hf+l zq+T%N-yEn!MU(Otqk=CNCOD9t#Ab&rWv~6_by#2c`-MC4*57**W@qP~1nywZA>)EsXm&d0of!B z*Yu%10vu1?5Ybs##)J3Wf{*_5=aB~Xe5Y;Mh#!9W)j0mx^|YQwQu0L$f`t~eA1DPx zOB(~JkTgvqsjsBsIg|IXv};f*SNZzVGZb1$3gFQLQv(df@hctzxXu1qIr|ooB{GN$ z&Xkp!P6%|LR&Yfn${MT%?FC)iwn&~6rDUe?*1>sMT<&7mo;?k~+^Qn3xZq?=O-_DM>_^5K93xzJ-o=h`w^!IKVA6GX%3FDC*U0|B(ujAxpUR-%;dARw{(4h-4AOaiu{B(eUo|~Y!-^4LYbI99tFE* zh!-lS{;nJVE!*`*iRnmq!V@i709cvdYj7|NdQW^$FnMS0^F#z!$r>W-3?f51Fy0|2 zcA~YQG?ra(fWAck@Uz9DA6c&ytit$jWmfgVo|DYvH-Wxtx`IA~6kstatWJs$8%#@(7<~CxJrrd;Jis{gGL}lm59?!D*)l zm-nfso_EPH=z0VWvFj@LgCnF3mas={NrJpeW}4fF!xC>fmC1|&;SggOlzyY{=lta8 zsGrmzc-`&bk-NT#_y69{i058;HvaGzUWx0Tb}rVfoq`H3XuP9942-9U zW_I0EeV4p_$U9FyK&eZGfv4OKg#|3y!o|D}Xk*KofnnfFrIYhWoi0Lht`Ve%5Bd3w zkMZ$@pW$8?yB_!&KKYKfHoo!`?G}FImDl2$%g)BcL<>ft6}*u*YP?l()N?>;C(KQ5 zfU?ogKcvMAG2--Kl-X`ap74fHtSut z+r!)c;YPgo9e;>@2gfk@`1tk)!1v7V$F^;c4FWKO1HJ*)BT?8GnIkVpamT8B3f{h z0<=~-m9I=3h8#1{76OG}!U9x0;w?w%hZZY?U0v}_33;InnRUEFf} zL-?(~yag+ro@zXgKXwNH?LWN~XP>$Wttzat&x>=Jy3TbG08`G?Lpilv^Yb+|>tu~0 zmAMUBAc4~wK4}lVhBTH1L4zK~yE{4nN^L>h5H-L&e7{QJNRtFXPJ`40%6a(%?7t5f zODa?E(X}ujNU)%V6a^5er3ofldotCjYT_e0pb19L(=ecy)z#|1MaDzskX^1lg9X}L zKbOVZ+W-I{07*naR9xEIl#L>1Oc1dcq(3$(u|q6?kJ$p*Dht4~Oz{9&A^?niOD?=t zw3De)_0G8&*%9o7P}n~T;+M=5J|!C&{{L72;mF@P&~&ibPZkS;|`OT0JJC+1bwZzo42XKT?T*K#%G;gFy? z`?hQ5z6dtllj|QAqbZwWnhwr1QI)e@yK*j^6Pgk-y>F)8RG#xhAUXH2iR!*k0Mv!O z71vnC28rrv=}T`c*qrrGdDI6AAr89!5^G4#7DLP_A*XM>*XWZL1W$DjkKKPK-v9eQ zk4Nsly*XL!R)z0*{w4UGpM5#5x%6~QPqp<}LH>d6~bvRFlb-_=;XWC6Uus;mA&TPI*~xziNP6I0WORcnkQjE{fOk#okO z-H+fCZ~G%0*!ggCKV5R}N%-CuUx{PZPYbWbLYNB&s>#LI+q6}|>^vJelRARN)ykg+ zcIpH0gKr2ZV(&ra{pXFH@kU#hfo3(D^mv7zL&Qk}fJ0e4)rTo$VAsQ3!-fb4hs>x) zfPxy84)$7PN8#la)@FpCy#Br$${?C`18Nc=$e}I4Z z>)*iPh4FJeKEBPs@9j(2x_uF|yZ2*mZV{HW4?baM@=20aXoU(ksA*VQMhzY)I|Eqd zlCeUOKuvPi5%NPeb&mAajC!pN(JE)M1MV5Ss*yq{ig<)oM#BM(vAU#Pt!Q9wNhd}gbTYMRTgCNCtIgn&-B zhn;&4pd+jUHy<;N^=l_EInfpt5?ME_P53FP^AY_$yYU9DgjXjFSyI0BnjLUd|b1_R-!f+aW}bT8Tv08ZFD2ryCSox>W1LOKZ0I(T*%aOz>tlQ+@5 zC_b;OTb0d~(+{vB)d)*h1Y1#chm{@Xpb ziHI`Z@8R?(EIQ0SX`l$_9+8dw9+L*~a`thNoE@SU7C7Zzlu1DjXmszzipUqw{-We_ z9&E5}&Q|$u`c}u!-aA)0uhJWVu9efjxz8A2rgbF%+gQ2OPVdaheGiLE`krB;+newX z!B^7z_a$Y?ruO|@}{Ii+r zQ8{79Q|(Gfku_mDczNjwo^wV<;aMGn;3M_u2mkPwu>Gr_Z@{xw74eGeF2S$;I4T)YA`KX8Q!E>B-5mZEl)0U|E0BfEiVK zK*@5Tu6tNo?lfxfHS0GbR@E3y7$5(lV`X6ucYgf+xaZcJ8t%#+)ODSbOr-PO5USK4&%N%-htab|5fCi5kkPZr)|d1zTr7IqfjmMY1$ zU@Ze0@<9A->QenJ>g$Fmk!tC#-ZNbFda}TvQe0>HeA)Rqug}f8)>l1wt^4UL1MfIQ zHIurO`T?(oRQ~tQ#I~GZkk{8+SBL!rPg*J!vb^5pjnB4&ia=$1RA+*S$qj|4WD1OS zLMwA^pMRx7m-lh7#GM4)Q{>J)qbA!36gOfrp5V!FMQY}KIHJFt zoP86T3?H1w{%HsfH#G*qomxC$@Ae1qkw5;5PuJGy?J_Wz><1fYqXP$tG zR&*X*T6CncQK>8()-=o1>aYsq3t}$G$5#Fg$-2v?Ks9ADkk4V>d106SMKW~H0BmxT zt93(Vim9v?n{KbhvKXCQyK&Q42|hmlMMtW8c=X;cfTz5HM`1JEJ zGd-ynbyZ}+0guBfp4! zo;`=LZQCx)%`NL@3NoC#)|L`7>`xW#!PZnRNl5jJQi4JQS3y`Hs1U?p8>@z(6Ch`Z z))#X48bct5Cy9oDXmAvuDilz95=Ub*(dn#U>wTZY+uwN;dc7gRJB45PchASuE;+TY zuFc7wBN?t7Jl}Fz+f`bnE!VHyrS-GY^`BI2N=!uDI|d z{FgUA8^^AnL=0NZKI&W8x&tWsPd5tw7K$Nl5}@|h73qVWJ)oDx3Q5-@%1*`$Ned47 z9V|$!Kywd(kbnk}BEgyZYgC(+xJPTBgi>H%56b?Uzod z>;#2YdDro;_A=F#+ROECnUe0itNFGC-=MW;fXx zfbahsETAjDmsuRd&jZ_VtYUHDguwgcrw8H-g{KNuC7{3AKZU)aYyT=0Nc3}| zWH(9or}1>owkDAFlEwyu?7>0-Q&L$X5yenn)4yhir~%5hJyJ-(6SmGY6-f9a?|Zd} z5=met%Y^X35I1lpsPgLMx)Da8(06h@5>^4s3%&l(I!ykJ%p@_3RGsNZ^PIt2$EjM3 zg4mTBKIv(pOyTNg%@p9c#4NMS0-$NM5N+N<2q;?1dSEyA>vCP?HNpkxDKI`~QKR+& z@V*dWg!4XGjwc-me)PZ|eERSI1Yi5a2b(a)7y_<;<^_23kG}}#pK%ymR%#(#dp3$SJL`oZlPXycH< zg<%yi8qVe^$7!8#Nmj_D z@@H$m0Am&$fz~BY0b20mR3Mt?^9Q(o=;86!Wq~fJFtZXlk|?2`(#b=BP0{YZx6`(4 z!hd+pv+=4IUWQgRT3;V|Y!<)#<~QTEkKZ^}gpZFWAppLJJ$nve+qRvUYn0z!qw9du zIXO*NO#m%{geG7~JnyL^YM-FNoj?;NL$6^)UJeO-Qv0ZeKmuXI=ei|GF7aahanqp-)k}cqGY-hy&;`xk+fSfW`dQtCTGW<*W*&21#@Y+dG zk=1zwI1K&YS$)Xj4>c~_)9>w zK)9|8^jX=XI9R~ata;COS`jFQuva8~e}bVIlTT!Kl5*R>j5MUbV?e4%Vy#4L6qeM} zKI(l!rKwT7q+}N7dcq+9YWOyIOdN=!+F+I#|80_e|GbD#tLk^O=!M=_V!MtzC ziMT!y@7Zi-*`Trf)za>vRBXKQSqI{vpwbIP7>QD;+ZX2FVMw#359Jzb}%o z_MrXo+H)R<$35&A1BCzV`djd4fA%N1^72bDyO5Q+@cNYizi04+AK!_)?%dh){Z5uV zE7~o^+$Yhsf{Q*Nl7X!$U#}v0D3xh0yxNSK_RKl&1dS+ zpVfJD)VGJxfRC|`plP6_2nS>R65x)fOF@Cz19A7xwh`-g4pwL~LW6}+>cT$Y*<9n6 znjnA**6a+z1r4ZFIbZ?EzJl(DRLcHKgMwWeA!oZ0{TbCglnOD{n4H>&y;D=oty#Kg z42K@L9OGl-cI;ZOH)FBUB`_p8>n2$s+0-iu2yN_~oWtLKb-n@Hl-k-{ zCvJDOtwPrUoBGd6n`$*)la88F+uMjEc<_Qg8z5e*(s{oNRO4t>V9a|^DS$<#ph)9+ z9-P`W=EQ<4C;_ru9PV{p&u_I)XUg2**b`ChZ!DOC59DU+I_BRaQ$*Gl{LxBt7TB53 z8Bw-BM8SGVhV%G3UotByQm=|*LuJnDWWyXY0GsN1LkxBu zfE;iwAUr&!A-Ws@+9lE)z)}0Dd!dy@&^FN&FbYH+oaZ^x`N)k$?GPZIoro8J2p=5H z@*4_M0$wO$wx1;@Qvi;AUPRFcI;&Sp{W06kNP&3p0DBSSw=z3%PaBLXv#))z)D*r5;re#2## z;0yozjhNjx+4xaE=>7-dEr0j~9DmfBUV^!{P;kuglVhweLq_4ugXTT(aDwf)m>QC9 zpB+f__mZQcO03Wp-`gi~s;e5gXaeV)g=|dk?S>O$#MDd|vz?v_ztzH`W&5LQwHJ_v zh1Wg4rYCpfXO~`#OFwl1y0i02#3}^**5gjXV^2E<6XO+pe^5|Ss=e0w&2H(?*Fa6} zY{n&KnZZ#V&PYluF19iNTHuBanS(3BRVZ*_?FFW!IHah9-%#qpBRTtJ7PRH4Lx&M` zAm45gJI37{?i5IB#`P*SekTM>s8RoW@;Bp25N-1I8b+_Q$m!E@gf8`69i3{s~;dO5S-_y8h{R}R>d^0v}+J@bGrm=V56s&qX zIG}_AR1s|bz;+dxnk(fEn^B^$MH3gvKpxDcd|I{Iwy{`14ghKOO6n+}r0Xas+4iI= z?_a8O;Pm@^eMpX*;jM*Jpn}W1vOr zN`buwR0EMW8o*TQ&_)rSh_I)cw;>3~E~syr#7f>o&ylH5xu&hu+NXfrtS)5`gMEr& z^CQf&S>=J5KEg%4dQ|I7si6~DgBptw$*mhQRdA%fL9A7tcxq|>jCD>NW}ulD&dO@| zPzL)0Oiz2xYJT8w~XL3J0<6NsgMV6vz4Xf z-u$jDn+JlH1d0w(()_z;XO@szN|^6e0H}Eqq!@(D=bJd-w>V&=Lw2Q7CRHJzkqI{z z4T*Done<~1e<}H`JJ%)?X?Qk!;{17ZYE0b2UPolU0oQ9H9VDxHj1_9OCwihhCa+Rq z59fPbJD7vyp7^}x`!>jCA4za0Hn`?6d)XyXVB1tQ|^5Jl)4Z@L1Ql z>z3>AwGX`=JMX%qDc%m)e=*+pva@jVF$ZC6r1Ccd!(PKa)Kc=^g0D=Hf=6&xWO;{F z%r|V~zv~4Au{{B7FjU4$vFE1v-$B%MG0l{xBDZ5#GqYW6-LVIC9g$MP$k+r%CKjPJ zGP-~|EWC!k>TU-cuK5wZ^u9M?&)s(+rTLBTqzB#)=l;$kv1<7ui1uzwwX-IW7osT^ z4n+?%_I&@uA+7XhPz`be>~@^>qQ>@;ckqQm0VaiF1vH}T70m2mUE9V#d56AI74-oY z1O7y6;G$EYIxIGiZzZ-z$N>`fu+{)mW4TbNKcfOa#e8p0o@XiY(59h<777i^fQT7w z3r;xtV7%isPsiye9NvIjF-H9C`djeY*PVyUzw<3j*9+@^;q}V^zGraL`f2>&CtG^9 zCmS)jcLvkbvjm8GMXsK1QFa6pa?(r#f_jfi9H8Y1R zuDcPj_soj`Cmg*7i^eKQ1DXmo*mVBHj#?)bfyz{8I5q`!9dYZ%?RdwBzm4hHuK5iI zty+rn|KKdFS-BJ;gq$2Q>Q=Tv0p(^CY5_B?)m3YjRB%ZJ{)uN9(7VoNl9$8F)g)d6 z8k3+v3Vz9^UI`XhYn~&XHc;yJW@13@fnWp-iH}6U0j(3!Bur&V3cWwN-sLQ`s^MFB z2KZJAsQ?TKUCW?I&Op{YT#u<5&Dd83zFpe*!fDG!uOsh|jE+m*TiCYIoj(thgY z=;*)0b_HIDY$VWC;}umQs4pT{(FP(4V&T5B>J>Rqn^~nwPM($kF5MeQu$CzdSb71# zE)WO8O?XP5iIC_JaGo8B=X0;uq#(E9N;%QW(=qNEax7}uu2&qd^UN;H6LrD)uJFNk z1P4Tg6+$wJk@U0?6ByB7Ul|rv=k_wjsX%fZOT7O1o=A;h%6$5B*RClzB%WT!`fTXJ zSIY+nh>i|%#*-)TpGC8W2WL`g2q^{%PX*g&1qYy~K+~jwZ-H+^tM{px|2fr+tyXIw z5W&C>WdQ{5y(V{T#drVh{n&8Lj~btt@zEAu^MW(+*wc>ch3L^DHa>4~HdAhFc$BB| zm4uw0o%xB!oXt)(hL5PgXN}E*)8LvnLR29Sgh7#cu^^e`#`*3dPS~?=8du-A8QpsR zXD0Srfw74tknk&KAHVSW6?%2&X0hpptMKLbzZu&%-r8(*_d9SoUibUIiQ|qs2vy4q z)k#iaPNUh}v}Ar*Jgy&q{sLD*zIIdHQ_I!mb=J2IaPtP7@C~<+RRyR7A22t-3^xjJ z4rFG%HP{pL%mN8{cpOOCPz0cnH_gL<>jngi1XMYVPIIl8bnrs6r~pdL`j>JYJQ4%8 z$q+%Ss&M>K2jOpD^E8}#{Mv@mjxpitYj4E4=l(vv{`pTWgk>(gelfuJhFRRSejk4D z-+X0nFP= zyzt2<%zSc>N*=P18bxx9MF@p(Oj|E_ifh<;2$Gq9~8fHT# zcFh^PcXkwYEjb9t&A)!OGK;|A2eWFByE!}5IUsEB!q?xiG|94d3RZ!97MuG6^<2;Y z+3vklxOx4CM!*w9aQX>rm3Rj>oYg3$b@*IumHdrLzTm;%BY+ZsshJKwbm8T=Vf{9v z0v~Btc*V1S11BDR5avs;nx+nfh<;I|LuJ8Zmnct#P{@{ZU13%G$(d5spjk;OysHJ>yQA|&>5>R;0%GXShZ z#JwymZ%rw+wM!T}dqEa(&Vi{EQp&)b3luqZy9b~NPnvp4T5$k#pgjH$0<{#l#iFxj zVxmKzCpf^ds-1a)z3Dmh-r<3V4#DQGpVDMaBoHs;HM~cRCbo8{?HQn-b2HhMoad0% zf@kF*UWjh#{&Ei|h29BvAN0hP?&k+wyA7^G+-!il4CWdyXb?#chok}ZG&THODk2g@ z3K&|!QjGh%Ohi@X@sZkcNIeg3$!b_k} zqI=cLh^RN6Y#zAy(||2sI)OKx`(!-fjAJoArjqEJ!dI)q9D>VJd^ai__OF9I ze9hmD&N>Pfd}l>N)~O4?FP)y#FtL z2dAHK7(y8MncZ;H2E6ulufru@_%}>WFYE^kum1tyd;K(S+AxbtFW-o}HgChtH*d!7 z-P4%dGl@LV2efaB@`@%!q45aRq`Fll+FN|N9K77>UUA8XG~ZyV$g81HSl~_h9|)y$L4~Jo1zy@Zy(W81Dc8 zAOJ~3K~$%oidD-e?7oq-;*^L!2^RD>3eO6e6_vJu;8AQ*is2MC!_93r!?;H~m=rFlkMK4{b^ z&I2``C-eea$%j0fCWG2LMh24u8aUUg;H1GT<$vD*;04lNC~Q?{ zg1BNLrSeYR=)4AeYh@=AP*!(}0}v4yY;poT5WwsEQVt}fXu;`J$gy&XD5|G~G6a$* zAW>kIwl49=9}TcKYbz2c%HaO6I-S8ll{t_+zh<%LNM<2JfVQ3{)qSl2Asn{j7`XJ(341r5uxRmBFxQpsD?NUlgaF_N)^GMeC)Zp5*%MB4AI% z#}^FIA=LA!8a(ryCi^GT_jou92uws_pBQ2lGcrsJLTkp1XT}t(-e~XlBa?t zlw)5bl73a(PqNp&ns!)s=CJYlD{=8Z{WWIyP4=E~!O0Ii1h4tsM`G=oWj)nhDX1w} zkhd9C3$`dWY3s-h{F7o8wNg<7Po)u=6rFJ*Zm6{SMSZU35D88Z<{e1MX|{%eMnW4k zd|*G#f5(&(w(i)A>u=jKZ(JV&j(o_Om{_`O0hL&I`CD_0*tKONzVVTF;%Ap$j9AYD zCu5^+{NZyRiL=i<4vQy7Y=hHZrv}*7MXNf1QvxIw)>?m5v=mOOeFh`3mNgYwPO;Mb zer=bMoWyxu6wsRMt2_jD91iIH&SVST{+?ifY)7fnTnnWJgp>N71x`viC^y?5NI`1U zX&_LZdQv)wY-GgoV(jm+499M=yW1xXFIC#?St7AUSj~M+BP7ulY>sY2H2BWE4dqMi8g?)?+t0{FUdV3wLiBw zz`9Y3dY-Voy%R|-_duU7kc|=-?ojqt+&DA1j|>plwQDP``2L4+*-zFrL6}DzvI2j8 z&ZF^w!&agS6z*&S9L0`pCq3m9d$no}QKZeh7F^MWX|R}-Rth&0>Ze1FD@Dps&2LnYmGkd1076A6tW#~9XKmM^pP$eg zG?N-2Xh2})x173|o14Lg&39sYW~O=TmCF`k_40AF+m!`oq}8)Mk=|u51NRo{+G0#~%Fchrff}duPnvvV7?{UjO@#!J1Y3&EJNm4p8gO00*#2ZS`E$vBK_s z0iC*q7<&r!1d|OAf}mY>uw(*gh3@!})wItJ z17VUSNR8@U_phu>R0{d#zIWAL?Wk5w#za)>qjs(zXde`3ParV}XGJvUoo5llQy)V2 z75DHw1>eux{C!wrLM3_5Pl-?ZBqh#-{X`&D`qlT?;|a` zSCqfdlKMg@K;Ve{lkunTSk&|DOuMrCz|OAQxt2nHWJ4?rfch!gRPtylT;e z-uu|5H0B|&BI+}6=7c`mW1edvQl9vxYm|tO5s_aRPw;yU1Wzep$L0;V0#1KYu7?@OIZzTt>Jk^3)>{BxxeE*7Dux;mFhzJ%f+aE`qdRe3~`VC#hPadCbCg?rgT(@o8b|9t-lau?X zNn~{+2pA4_A27{epRDV@N0pQ08u*i73;axpSJU-%Mojh3rv4t^Mm}BRcouTgY`mT| zV9!lB-9M;xs{zpla0E4|u=|%**!3E^>6t0qcvl$SJz6(R?%_2huL2GO2TV3jU=#`k_#Xp{H zEiS#{HnVSsAb9z+PRHrTAB0u4}D;=*n7FKnlN? z_jhO7!#qP?ke?EEn8{C`&vp0sH4#mLHL*-bzF2>i*gu;@zKFik9qX98jH~ISpVpcpY+# z!3*p)H8TpN1f1W=*MTSNR48^gZpV}j#!?k=zkyX1NfdAi=W`% z1M^u0LUnISX}+eoFN5GSd-ve#Z+#v=``%X?8p&cvATG#t)5QRKR^SVTOLpzpK98CUO_DU=cWn!5m&r!f3}$L? zq+BIw!jA|nGGGuDljfhj!hniX{(IbvXGNb5zT={fya0JbECZclURY_ipM6O)C4vTt z96&!g{^h1X391>at-rBW^fy)zVjHjCdykE@amsOP@ehCYOuY4iFXQ4%uS2I7l(%d5 zB;IquC$Qm;P584n{4I_@`DBdVOQvHtZI}n4w{6{y7=g}Q2Q#x>=lXfg2cNYy0ccd{ zHzTiHEORhRbN~pg-sv=;(A*q(nfC7Q?mc%DnhNc$#{@7nnr^79BG;Sua1@CETCEBj zHp~NFtyT+FC4;~@b1sV^*<#&AXRgM~YzIa$D_)IIQPV+|O3gk-p>*atM>U1Q>JuHn zN6ljs%*b{eZ~$>#r1uq1Y7H4e!c(?rvO)!MHpRPE76+wlg98xopFxG)Y5&^jsNQW> z%GA^(uDka8_~3^wz@Eu{5D~On0p~pZp*Z^y55Rb1b-|vFqJUghN0MEE*`|U5x1BII z@q#M7{0BwS_P<|fJL*f&HHHOHSYXlLGkfRo9e3|HZ-pWOh;zLkYtb_uloDKW<)u+b z>F2v5&CJ~6%|DGkkR2_h=fy~6VFxs0uSi7)3si&3fsf&Hnvsic2t;P@hj0Ycv ziLt&av#rjpV4vsEruA1*5V*P~iTC7)x=vWXX$Ri_smm}sXY-McIcycqdDXuqcMP3wd)|IhfovjVSJ9ANG}&gJ_Xv?uOwWzrXLl?Cq=N&NP2#}i zvrVQ(<|E$pVq{UrWI+Zp@O@{Sl}LNCwzGtD?x9da6+BYS`M`h@lRfak&_t6f8rU`G zSjYn-p+iPBnNm6SdO~Df%84Tn>@fAEuAwUGDJ#dG#mS*@r<{W&owx=w*IFEcu>V~; zgYRzkBgt#)Obphw^`PDdWLRjQ=ZWj}^{Gr=ChE@<)hkADpw_S^IzS%cnyl_WE5bG| z(e^@Yt>TL8JOz7y{Riis1={zC%wfRSoK+yeobekXvrKQuz$P4`2F`ixfak6wL0!OJ z81zhv#7%|Ipuut7Um^dD&Dx;7)C5oRG_)r?qcg8)8&&X!XDd)My(ZMJNlx};#I!iL zmM0h}?8}KP0kdFiJ&_o4F<4VK!8$}VZy~v8#IsK>**5X|(}EKtnnNDeYE<$XgJ1%f zCPJAAZq_4Mo=s$NE^xA;w|a|kJo?pMn^Ho`EVu+A-22$#y#j*Ax{Et+S%>fa`v)*L zGu5ak&Uo-)cP>iim>o(Bj-fJZ#!NWA`~zlmcGUxQFNev^hRXCFvi)KtW@ra@85 z>JTmx*+bD3gpt%UeN`nlC$yKCf|~v9Vu4|f`FN|@PrU0>J2oh=dq6^dkY>sdQYRRY zz-uTxD*!kO3Dwl;(PsCh_bvuesep1v7irJeW76UjV;maBN|G!M9!^seEO`R*kL&&3 zR!BJU=!5W%*E|g?mo364zx-dA>(odoq0{N&GoQZ%*WdIUyy-8`$D^L`0<2j2%Lc&b zuw~0GOioS@Y0lxCIjpGYsxfHw3^ZVwR+7Pa&qyRiZw-l~Nbtxd4S@6d(9c4)K7$=4 zZG48QA#7CB0anG!XR@-nKti|MX@JhT*;(=zX2qP73DT%}qXhvnppFV_V^6_>RIHA# z22EcBbaeCm$Q0p@Xn>XWT8-BSdsE@Frer}P9;s}6uW3J$;1gTyF)WVfb2c*Ha)=BM zKpp^V-EIfB-m(rK|LD80b=yt=^I0{IJN;<9=&2`T|7A;Ht-Gk%igUCdc~gk=j2H#E z(|q@BG_(peQ*}8_j1VE9fh)EkbH{|q%UA+p9WmGGt6uq>rQj(Iv`gCpCVGN^o3+^K z{k_Tp3eBJEM!dE_y_tScKJ3E5piwEj#jagetcp;-kr0z$a%vy$+`6^7yQ3o&PCn)! zjE#;WAJCN{(Giwjl1`bVav`5bn1!bo=czb?^`J~XM7-#K?k4BVG#bMK_orm-NKfgE3j?% z3=Uhh2TLa+BqZ{n_W;Vu+5ceekh14A*;+^wnR-9b&3#6s#{zH$AEe0?{$5R`Yf5j8 z2M1WE391YLOgRwj^|odLO9pE_1s~9A&citcu!}>Q)mAu?5r4FoNI)J`E)KBmC|@(6 z3=Z(32!TXd3JC;+X{!mI0#~*M1{cs1jM4Tb#%6{EH>|$a_IrBzfP^ebi%{4$iZcc{ zj{??G#n{j=I2LnY&l4DdEnEfGx(4cOawfJ+O~(@#ifl3BB)F-gJWx= zaY?p_X+D=C2*Cn7XPQ1y_8Q|1o~^Wlqc8w2BJ=w2Ux9GUdqtzRZ`XEQe$hvHhlU=Ira$;O>%Bv`yLomdEI&UwR#O?wLYL2_s_@cI@W;`9IO4Va$XHUCrv!O0Ii6mL5BY&`IY1LqqrZ{!f(#!ZJ=R@5hI2r7E6 zlTDp&iXNv>NJ{0X3(b@q)l16PkJ;#J8kJN*AIT{qOrkh}ubdp7jg~1;wqyY@%oZt2 zlBa#ZjEk4*xZtQ27|25oerD4<8te;B!Nl*S$7z!@I$cn2o1}Q55K!$m2djejEM$ZV zFlnLP5_ZaNAc&zu=5@JlaX5Gzr<*Q$Ve|q!O@bx)EI3F?0Yjod$l>QU%4U+!#wlkBXIVa$6}s_mG`}W01b+kdf z4Ui%Z;YGn~x)u<&iE&iSW&)`8tw$0~$|dfr5{VarUmuvMfcjs!OcF+L{)zesHuO~fql_gYwW{K(*n9SHTST# z_ei|yo0t>1dOsDml7gT20KPZT5|UY%U$o~>c3ybuT!%~+$4@?WZ9S}Uh(r@t43K63 znP*?6YV1U0V}?mYIwu90>NlmFpfWXi$d&kf#+jOnCjmiWm2hwq4g7gFnKDGE!xO5t zBgU%f{i+<#GE+EA<_C5DX_6%7J*pvvl5@^d2(@cN1Ba{vT&ICz{!?`NLVYbFeMa%m zUlz4y{_=3@DgIsh&y(-j?+T+F(FpHF8J5BLpo24*eV!&CSXkH8&4KD>O%&kr#^U8G(Q1z@AifK)Z2jJLu|G-;q;oKGUAT%o z@kZ^C1KRqa5GO<}adR$y6Vl&DQtdYlTu5qA-wU=(1EpYS{Hx*LD>j`!pI*S#3)uDTX;zXalY+qUiV3UKj!8KXm_a=@OGalxd7 zFwhz1Rb#r@;V?$M4pa1>&uo01Jx}5IBSxnta0*(z{<4JmZwfS2L}k(p^4qR0W*7T zhnhiZXd1uo%HE%*`43Lr1Y~L#eT~BiV(enWhMV!(e}5Z(@S|&c-i5$n2Q9~6zv_uN z<=Fe7-ELVx&W!Fy2T)Mz?FQrvw#Lnfh)CcO9MK0`5)o*?&x*8j@J^pOqQlym6t#-E zO?OW~^m;a7$t_YHGPzj$;GeP6DFlM@`DH>a0i&GNxW0;$vcncA81s*w^fJzL|WpZ_T~ zZQX5_+|os(_>H(P$(fKNJCWu) zMgr8e4O2gOw8D&2V!QfLW*MSW$f>yP)ttP%Dj?2zi;G#uO`Vfm}#;BK=ouz z?^Qbhj%QWWU!Ps7drAOWDu6IT)_J8osFW*Io99Wa1yui@Wg;+-Y-Z5h@eof6u-2b} zuVEJA%OI+!5@%~EReu_5z^?U-*Q7~ig(fH~Iaz3ta&@lI-eSZYJP{U&BoPPXuc+QB z_^@Xx;po%`9x#_|pOO?9D_WJU_edrtlD#&U1K*oH3oHL`2jS?9Hh$;FHG zT^(#GB}XJyJJuhuFx4pz@uJs$bVx@~Kga|!PX(#ILD&{WujOtIvS(I7ED}jX=4diP zTR(aei5fSI@a>Rlr{_*N$%@zw?_9#u+Ca zfe-{U`}W|w|Mri#>(=XkWggUp*S-IWbr+j%yar!--}%^L!fcn|uV4LCJo=$WW6^kv zie@5g!~sfqqc=@r@(&sb$UOx?c0;s3@W@q`!mYtORammeH~VNc%8MG==n&gXNGJje z`Oin>YFjSA;2hc>SRD($H`31}3MKP$78vlBLF3FtYy(JD&gazMPmM-G3dfWXaHjV- z_RN*M2+(7pTwn;14?^mFtsG0%V^RRDTD}-hKJ!6%|6e={XFlZq4WS4CGc$Ae*H3*J zFMG*z@zu}$2X^oK#jVksHq4>ZscDQo71R(+E;GQ?S2tBd$Y(u5-O2$?CU!aWPES)9 z57atW9iX71Q2w^QH=_sO2%U{V0e@BgEM}leJ!BuFMn4O2V_&_>C)%>2Gdje3vLL9p zFL;2c0d#buS=-N?=E30sfT;YN4e%*6U8C(VsL|Dcq9Hn|@kx%LL5Jj-;=fCKR87x% zfFFz-&H1)<%O-sN3-88Pzj--2o%#1%v2+4&e);3@uoDi&NW0~P6(;10zUVZ2wC^?m zeoFx$PBWp;0;3Go_c9FZdOX#pR<|X`$29RdOhOC=O4qfZQ@49ycgr?qDbhp^1A}6T zo5cRiDPI#AI7(yV&2z!FSZeQU>}l9)Omc7l!R~uZ1gW!P-^?7YSa$ZTRF@u0V`QEknW6AAKxNKk*2(TJvjV zW>#?JZ7Z>H+wz|BO5fM6CF)YLXLV*f7HN%x$iIr#f#mrQ{aPsoT(@y0W;(foEcFnS$g+jpx zDJ2Z|ElSR&g5h9u$-~Kf2L8RONb?#IQ!Jzc+Zc1t-V%V2)=vNcAOJ~3K~xx?lK)+V zo4RNjuxz|N(8gn#s6!82hF3oK5m-DiiWDPmU-uJScHxIHxnt`B`n&K#N(pz}dOg1K zfwyAAwLeCR5h8+ROU7~Diyn(dKlErUo*02U#_bm1&YClfeW1gL6fY@S_Fo6YC9NI` z79bTbe1k1c=%7wyZIl%XdfnBzkDaGT@~j_pVNp!#cI*^fyCk+u;)aR;yDBscNR{9# zx}yV9N$v^TfL1YYj`e<+dHae(q9iAc8hN9h9RFnoyWN5>29Ne~GXh!(ilYe~G&YtZKv0{VKN*#u9C19HQzEfY@0-~%gewHLKm zm7VeYrN%~-x>i)^rBT~zf`n_c$`Ln+bN^IR>xPI2_!A=bJ!9-*)23VT?JvIzU;g@K zsO$OjZRw&h{Nb}t#}m$Y0G2Ll6KIhf;5#Znnns>e?GTj}a#dWi%4U>uXCjOePOF^z zDq=$nb2u@Dsb!N%P7{|BZoO*>Owgzs0$n>6Ew%MJ)*i~52um7FPh?#oR;}K=XN}w{ zDB6&!zRz_kO*1jD<0;MtjbcOf&ZY2U@G$BU- zR_{EUnx4gnF1!poc2AqTw0!9}UisXIW64AdDMs9U=Mr4EaW#N3>l19AU#<2eAg58w zdBBVV3}>oKwko6kBvts?#sjfqvQ3YiCKGvYkM_B4EHRuc6Eh{?dGW&s6d6F5lG0Mu zh9Xue*-R1F$W@I(IVi~?@wm?n1EE0!sI>C>Pn?Mfw`ca$A3=xC~*?0v9oOZw>t(r{A+Q--|rabJPdj6eoYR0C z(rum<-oG@M91Hh@!n0jMj0j2zmee=knB<>NXRo;4_kcfj=S`V;SPctyIz%WSpXT(e zXd6o)wN5iI7kOqJ3q3!@9cmG_=Mcw)>8m^O@8e(DqhHex9M=vF#qSHBW*nVq$BW*#~hC!g1R$@ z@BinAaQWvxhUv-O3n=h?832zF+c(~dZ+!UgaNYO6ir5?dofvE5)h~E7p7X?0uwuUn z`0B4x>aPVvD`w=fLk0y zVqr1lS`G=z&Bm8J|K{K`!A1cNl)c~_^|Y(rs2pIWrcqN6P$lH^NM5=b80HiUrXUqd zez12LhX#A0AAMk=v5*i4bf5n|qa!0Y_Wo<|mRCFp|8U+jaL576nnOROgw1zu!})*p zF1-Exmtoyi>o6Dp=htfSd*}%T(Gt`W^cHxF$X|P*c z0VO6RqVszLfe*D$7-IC21t^E&6+`0VbJbOVk`t z?Wa6sV@%j`*Cu@Pi|+u@KrX+=zh8I>=H@z$K;zHPc_d!>?1y31@^KZ`9&CfAa|Ku} zsJ-GD7;H#WCj?Gtf}`a5=>aK?3X8~@{^vAfy%jx6pypW-R}zp?z-(vC0+ky4k(TdS zTng;dez|>RxlxxT2hT=Lx^8j2v3Ruyf#!Qk-cw}Lt&s#LdUBF| z+STy_@+Y`M!~1Hmo2Qrw6Mo zK-xURY#j(&|7uGqlhLKa(`hQg5PD9}DULmj&;*W@EP6RJOHBd0?gq498QVT4rt6$! z)%$Wb9bHmQ_k>o@K48f&Jzk| z7$Rd5EC{jJs6VkbpRrTj_dLO8r}yF7Z+`)I-n_0U+*U4IgqQr*X*h7@63mkVLp;v- z0q{aiTqO{Dw0Vk#fTBMssQE_WkT9T0v;hYVW2{G7*{e$OMkjfpE1m@JD+$juK&T;(CHBu3$Od$YtQyA_}-^3z!hKpG`e%M z0Oo!CU-0Bp@sejg38#LpD#xTiY}s`jDs#Y^ei^>%gmQO{g(C(-81KM^&II zMp!&M0j-o}&`1}D6>?vH9>oq$;lzhTjXZQx1Hdh3|BCeAqkr&c1&in53P&YKeq;t% zbS8B;;Ig^ini%vvGwHJ?9vM%0h?eK?ZuV|3P?Uldbz_uLp-34tVnKid_g{kNJ?Uip z)A`TFX~(ZctC~OXQ%cx3HH{B`>>|AECC|avKL2U#+WSAZR_EqAPUsh{4IV8A*~Jts zO**-<#wa)fHC>MSt!c(;zrbTlA=l1_!*N1^B+;r-an?-8)%}{pYC``a%0YR~9^(bq z3I$y1J&qe>SE(knwkfQ#lxM)6wxSwKL%yHURkONDI$@(n)yXQ%=UpUk1<{aX&SXk9hR)vfT6qfs=+a2F&QFJc9~mx}ot? zRseFUF*P%dE3Ut>@dFnT9CzeuEL}8;cDu?6WZ^Jb4=7?lEN@WvO?UB$FJFaSleQ*b zy<#z*dDiKetH*Kcod*CI$(wgpTBc;dlqP7l9#TgzAN-msW-2Uk9TIxiF5t$^ z%hBluM@1SO&=}s8l(hlpV>G~FAVs(rR1f%pz#(p!i|O`5Z@-QnQ}{Z-*5hme4U#!m?toX*&?Dq3IH}>6lFp|ocdmS z+?#1H4#*@To{4WGlHmM@kP917`_H+)KTK}RFaXaZ=>zhRc(4BqK3SXPGB|;V`unGt zduOwaXVG#uIs1dqzA6Q*s)j#-Q6Qn&b})I?XmIR*BawkIcRWbRnd}1XakZ0EheA&d zOQNzpVe-fpk9c9AT;Deii}gr32eZi3s;}5p8>&BjM%+(6MpigPonO2AR-7s@Z>Weh?9;v5Thf+ zf~M$$F>W}f*GPH{a&(vt{(t?D)=m@WBnf9lEBOs;AY6lG=8!3jVVQ&01F=c1klCG( zI#x;xVZKPHsuqqt;y}FexeuSWMM(*}w{FJQ{?FfH^Nm*{*4+g}_&)a9yYp`R`12pf z_dor?1^^#vxA3$_pMY0A|4~@8a+z9sCAOadT#q4!1qWPKl00O&pvct7Y>mVO7%9iH z05Y1OaQ*!hfT7hTsO=goDVfdhL-}(SN1{@J-14@0W{f#thz?9oEo#!}z0qMI&u0y4 zcnu5kB6Gt}MvX^}Z5CP^?E7og zX{P!PmgqCedRy4nbr-kaeha?*nRnnnKmV-;0G}9Z;{|7*gx9>_;W%j3l7W9=Mg(e) zP_?%i|K{Wnt=dmhjdC;Cs};G;dkQHo^?SGThDcvC4dxlpM}uV1QDhE)yj$;D+WTf| zbiI_}(GPXhihnb5PxfTZK9UBcTOxalH0PXmq*P5B)Cz;3Rowt*AP%V`*)voFcs-@; zLY$!NCd64;{s~P@8<1R0Y)Np4gWB#<45(%*c=)wsW`m_I3I%?^ zw^p@BB4L0mG%~X{O#a!)K&2s0BoAOMSP7WE!<>2KrJPwZc= zO#)*^_C0`Tf7rD>9lMFngNWhN;!U>lrz7RV+{;bnIf>T{jX zWcG`cTP7JYE5gqKV2fhMhn+1CoBo|JK6qBgF$c@tUNriopNB(c_g#kEe-;v!>`q~A zX}I^#o*zwIfy9A=1TlcOgn$sL`;I60?DRg|cGYFrcE>HfXDDIyip6;TlOBu}`z;zg zCW+FU)38HMJ*>%N&e-3EAJkCzS!RD6W|2KH8%EbN(kC?lgDkpO(9MYu2$uzBX~0mZ z`7MQsiE|KG=68Ioji)^FI6UEuV^D>FloB@Ga1}1T;BDA^)3uqw{le?l_cgU=Cw_YI zf8ZM*eJ5u3P4>oE1dlxBNWA`~Pr%V@S0My%6vlf7dHtoI1Mu|R13byLsbsKQ}^SF<Nx#xevDO{fqU8}?@DJ`@j%OhKi zzr8N>TcjA(qkkv_%0{>WrY;$y?pJ1krby__4^K@xc|-{cz^w+Zr3I^Qj!wfu4SEI+ zIU}l?Y+qVgnNR!`zHssPF*`di&KPM|IOpjP#hd=% zEF8UdCB!I@BRz+Dgj}#n|Ym-7|GCBr9E;&)&A=fmtu1 zv8|cwL|k~uHQ2htrYo;lI*zj*b_SBH=zVnpI(75kfZ4SLq|M$}(Y`HCXl{+%-x{{o z%fhNtzW=KUqdJaas#N;CFZ;*jjx`r8OID%l_I9MeY-(YZxnb&GtvqKTNg(g|=nFJVm@9=sn(qb+iW_xx zoeN+xg*`~YuWD2SpmObB!-QgrQWTqMn=U=eL6I)V*Qu^66W7T^24vG&F}HZjL>FE1 zy2qgB@vLq#P)cJO&IFt11Iz)XSxpei`xnGoO(a%cg97Er(^~(xtdB|#pq&Z;Utto^ z?b}F%VfsDJhJqrUDD0HO()Bsb{ZB@C@U`YlJLJ8Su@2=RTqZ)i`pW}fIfOPM_vQ{( z0Hd$FNTF93viM7dsZp}q;pf~;hmZ$*Gf7hA06crM8;p(j%OR@y>^ge+J-RM*`l_Pv zOLCIm4O3;}m%ZXWvZ$n3kF-a^!32X-vj$(dmWglFxudRMU3XE(!Fz_P)w4sn_kF>C zDW70^au=??fH;9D`%;e;`JcI?ggNr41rF2PQXx-nhTVD0@Gv!(s}H zAv^p$Z$YpBt9?Kx`~8VVrxbw1f8X^{W1m~^fbiJA`2*^Z1NOtKp7$smchnk$Ac%F1 zpMC$Uxa1@6#P*H1_Izg-Ucb(-&dfA!`q8)X)ertP_U_o$0N@XPz#%yQCn%4dNoTtM;IljoPt z&7(NLt8+b#`ntAzo*CtJ#`7|7HzyoLje(o-(WFM#bu%HJ0zc(JLE^U>Rn!?pudb!k@6XimI+QF>lfsG?$(vyfVrWlnV?R?<27x%hM=B5%YJW~% zNHCoX(y~E{hMcm^^z7^mZo2Vm{M*OghVOj;O2l5s^Y~~BFF5;T{LynChJ#lxg=hgq z<6GHPszthYaZafj9cvhoJfMlmJlAR|<>#Xbx{aiEmRzZ+?N@X&#YCs}GnQaR|0icg zQP)}(jDdxTKIi(Nrfyh!*CeId5uiAPxH}=)%|pyQ6_Qpvvpq^Pl3mf7(h6v{Olw<` zO$0Nuv$*!gTQM~=(+EQj*ncq&UbP5gBV=b{>=mK~jYKTisKfSj&PnQ`P8GK7*oXi8 z#x>9G%mE@@0VF}LWyz*3`!FsZ%y6{{AzMm>x)1+0lu?(zaq#Xz_Vg;VA zTgk_r1!CD5pO7mRIfoz;_#LT!jOtzh*_0N0{xaa1`SeqmWG3(+6{kmn7?78OQ-%5q zGY!H0LBIC*LQJEowLN=BCM;<0_f(H867Wbq#Jq-2h2XvHKC@L0D^%H964Vcn|G8eX zMo1G1p2XgirQREoosQue!4Sf*0vnf1W~;hL05J=k92*qwFAaI2a|sBnHZ~}di#pxO zg_K*Vu)R&m4k!ya)+C45@51SewetZ@P-wsXY)=RMnXQd&16vD+O30Z>RO9DGR1!ZROUKJJo^-{K2AAdqsakt zy<$!%8N$T@<2CtWa04RhQbdXgiF(6ORS>z4c!I~ei@Wc*6}MjbgXRlQjJNUh$2g^PLX4t4hs{+C1jmbK}lc|Oc;$(ZKM7Av;@GcQ4nEXOH zC0~ue!I7EGh*oB6@6_mkDk)dSG6T=7y-~nAfmLQ773%>itZ;Ia7hD{*T{F=E3Vcj66iekWe~dr!ePF8%^0 zr~ey^S1XN0$SaS)I1Vq&EK$TM%$%$W{#g+VA~)(S)r9nwZYJbZgP6L>&|`VMVmo%6 zwafQB5zv)wGQlbfvzJDCH{$A5yd6sv5<56Y_mY1#fQCJbHn=yiRG{ zG$kK&O?3`%8Gtoe^+zHL8y%9>*mDpm*QgaEksG9nYo0^)WKRQyt8kF=pb6cxXAiFa z=~wXHcfAfj{^|ATcIV%B(Rdqw{QNWUx)(nRM;^LTCD&691lva>?ExuHgOJJ|`Wc{` zR1jjYfK@{>mNE?Vz3&XJ83#;iu#O3`2G|$Mu$g}bHf>)#Q0|BqAgHfB*}3%IN2EgP zkK;2T>Wzhm5ldW}&`$-@r#YA`ho*n19e`5XpvB(b1*ytf7Kqb7lOp!)ox+cgj+Z6FspxTbOeuo_@gjB zHrBgrjuOtZO*DX=sDBU6^DTL}uKA3tYy<5*GVpJ2$m^amo78Or!N$ACdxT3MaYUpk z82BP0ZP%lJZ)hX8(9+;Xt$sc@{U&VBm5ub*WE0k*uw(@`CHA=$I{!RnE9VC2K=nEY z9QD+YIg>q-EjZ*p*Gq*kJhShUy^*d3HCf&OV`Q0Tu46se6QyA9k>zO7zN`0a_HynM zJOJJu3MJ#^B zfx7P56YTmEZ-O~mtTB7;Vs4#g!gvc7uvs`boL;s>Oz>xRGK)MR2-_brc&>#pO>I`^ z=YS^QnQ-DjRQ>E{Ry6bb#$2a^*}1L_@otph_W=-mc4{APU-uJC?cUj3ga_UK06gHZ z)z%A~i}Z};a~@vLdc@s~JRqYqav&&<6KCUIj$#loXMeIVB4R{6mN+@8M}7beL&aj=AyQrH#v4 zn;v1)`){Li)F2{{e`-K3`JcfZqb5~l=A}ozi0M}hI4TBRo7tV|G_NW zjKU{x+#9){qEX^dFiuk}b?jQ}14)g20EO>qRk2Y{NkM(UYcSGtO-i@S^EM#&n?-&e zd%#Eb=h2cpa7HxE`__&cMFGU@`O5^iYe^KS8D>zpOX~jGl0(@xNz*2&RR2JMfW4my z?ZJI8VRIGCc(t(uP#&6ng|s*F+bE7|d(9g4TQ#I~)ghR}$kO@u+Od5ruKTZl!T)~G z+p%%;wnhQIeCaq|^MXgf&8(-|4;6>(1e-qzqg>b<}vqXFq#S~S3L zD_3mxpS9Q_AU&z|*Cp$fI&XkeFPt$sYGDb0j3}@=4Zec{6;eG-fzlB>_Dtf&^|v?m zQM*;)%!eF~MH6Fa@)z`4_Xr3fI~L>pTN&|6Lc;FJY5dC3BjDF1Is-;3WD4MB+QT8Xyh&r-%VkPYQW9p!fKU?Szn-N?EC03ZNKL_t(=W?{pCbIN_mvx&wo zT#LU(@!ur{wv$uj+Hh#WNF;EWNG_3r=tWIxWP5~jX6U|vC*egLOrj8It+O@Uvr|v3 z#DXt#L>^kH`!)^&PDHduN9-4J@}Gqo*`z#8H)XvRXEuq`mwKY85@62Oj#RI@Jx8+B zd&yJmN&zg@^?4|Or^v6FXUFC$wxctl$31-IJXguq9hvAvocqC~s?!5!!V4+vSwbp% zIF`X6!q5wEO|~}Y=d8&VAuB%DevrJwnG`d%oU+q1(_e8=BQSoEfzT9k&9y5}cAC7O zn)(GPpC5X1gZl}MLF(G7cVA}bI@moqZ8A(kYd$wcLiOtpf=}()i5o7vqzP4QRRL!| z;(=JPbgZYgaeU46IB|-8YOKo!p?otl@0{RViUdEb4?`GWARoB_vY-|{?jw~2{@maM z^&4rbDznBM3W-6bQAC?-x<4`~Iv!Srhmq2Ue&8K^hO4c}zg2kx#!#zBQ zxCi2g7;*L4LkKu%^-}!KZ=Qq?zx8=|*5e=C?61JQD*Uc3+wrdVe;mL4%(L+iZ~bFj zedX2IJM(iK=%KR3d`8?rjj=1hF;PJ);{RP}HCG^&90Sin4PEWu!xYJLUEfO%({&U( zOy(MZJXxU3c#0-RMWxiF+M=L&)`Cx1>!#HN%fVVKFz~@X$XcN)Uf2^`lX%ZRtI|TD z*#)vdB^{iY?WJM(o}N;!D&}yfOjQz<+Lu0~QK43jM>$!NWMstrf9rHQxaH<+@#W9_ z4gT)kAI6TI^Z6Dcf;B6b;4SAq4(C4WbR4*H@jL*omAdRBY4)t>+uLP|OraoIde)P& zYG6P3)XBk1u&<>C6)Lh<(f>Wc+UbbnN#C^qPw%tdvTYfVDm!r?YOQEbb_oP-@(3}9 zYR;;&ZT>w{;?PuTb`2q=YHXo1wDD^v@6cu)b_g`peZc%@lK%bb0mQSN8rR=;2lnjU z+kB&?i$-zMF^6E$Sj%Yy!vJ76A>P$Mb!?`oD%w{n#3;D#w!87;bsK5F4>`Y9BGOuuk)mysJfG?cxk8fdGT0BDCTNV68i(?VwL{YXt|#;i5hIRpiUO!vA?c~D zvpwFK)<|q0RH}t#2!JX>gk%YM9taClyoo^q37b7qkMAd|v`=ge<*AV2gzm9u#LN8v zvgy_2kp#&Hwi}X`6|lk9S0ed+?yoCtGsf2n9I~DK{2R8V(L{y`dvp}xMtm?NRMy2y zkWW47tPi2!PEm?+35Cgn!gRa=fs;e_cIkda0$8O`A4%Ra3#zdIHyE!0dJboi6C3zrL~tPl0<{eX0v?UBork4Ww#pp68kx*;)ZaP6M3${1R>62jJ;0LV1KfdAV_`Rn*1Z!3;R`;((>KCWs z0F5teZ)pxrYk=iM0Jf;>90{P5+?GKu22noxz6pHQ#Yy6(NnqP^CaxH9BsdjoJb}T8-=}=YdfFb z**G<|4?n!(YIN(t^M3T&l~}!EG1~2xGlHEg86paV>H`c-5HA#nKUlZ3a~)jt&2^Zb z?Wm6?IAH%3_>B`Egep|l;zmC!*?FzbJ)QhN8k|?8$#hTr6P#L{{pOP;r#*1Ycx7|{!Rss(YF{s7M-v7W)w3mlP;xO4 z*XtQj9PR#+yh-^!aaCKwCj(dm35TTcdA&*FwY+z`3s26OW+3)cg5`E!`nXZ=d+D<9Ak8w#h z>I0Lr_j@**8~~eY)OC%mJNF`~?>;g%(enkr_w7)sC%xj$Z~jHSd1rPSx3BvNe)6SH zBG%oWukijj=jo^7fc+OMCAj24Ac+r+L>Jg$0l6_TKp2D0$!TO#@5h_~schpE3?0)L zI)0xDiagi_r&%MZoJ~QGr^Bkw4AUNIERG5@k>WKF30Ssd3@09a5W02571wVC<3qOpnT<}+o-+Lbb|I0skBA$2l zL$G?qlAcN~S)j;_fqF^+CUHDZtY8a!0sL_}ZX!U%m@^V3aC`uJpEY~#DQM08?0leO z04Qc*kfOd12ToQ6vaVmmd+U=J=qy|VPI|j4y0g8Fu0^S-fdiyAf44&BUzZi+Jh~g5 z_eu_^SLMouY=0Fh97Dc0i&L0pfIxCA8)}~v6*U4b$%32$vN`b1x4}Lw60l^^I39TT zYMl9yBT)sx`b|49GuJhJ^WEEb;d?*$F~0Ymiy?Enu=2noFtKDQTEvsiblcdubB`@- zGew9dN|OC|@l?W5*#VRi=)E8!ARB+rrXjeAU<)PWg_hUorIf2T#Is9N3LN8!obof2 z)ppr4r~zsPAepmTHw}HO2&I^1U}2b*nXwM?nmo^^S?{l2Efaiggm`1Om0FjvEJ_d} z#avI*%4wJtU?NrS2Pw`Jhz?lo2dYYiZnulO?%aTDF8>HF_~3_d$EK~uy5g+UkHkA( z{REtG(qULU(I%hTIM{=Yx}|oSbN$tac%EwC(x!p*LNZD1&9)7!@-lWb)c6RTCb4$* zS-_5}*XH-`nHt58$q9&5IoauY>;sv_nX%C+SOfHdR`&Jhj2rWvT12we_WBnUOT0&^ z=UQ65?^0#H&nZRRws{La{`s$9-}HQFLlpvE^wg7Z=E-ZZXneFl5^K+TuRlnI&m55e zY~HpHZ+P#;*tuugfZ$Jk?4$6=Q%*p;CA}b5vI}dTW40jD(m{9y8JdbWiXOQ+GQ_*n*wZ!v!tpbSEqTCtr2iN)#Tm;-N(xFFCP zDEYl22VxTieP)D}5QtOLxgJRPfE;Mi(>wwzhG2!C=MkP#A#*FhoxaL8AqEs{2RNtm zifdWDez=d<-&Ko9vokO@*3XN!>M8mAdXtE(@{KUz;mtME^?gg( zDNui;!)rZ~E}MJ|1rS)=0{A&veiS$HZI@>6D)6B`) zA9!7bd%(l)2{Uk}9m{A2e09HPkz5koj&w_?01v~+8%6oDN zj=gbmKz8RkXIKh<)89+eg@v+?4vO^N)o3WtccRFRO|8yFHHI$&a9tVJ#4gI6!bA3pmG{PyEcM7vcX zrG(jillaaj--jQ6@e|m)bK3%<{QudjGc%1%*I$V*zV|Qj)epTLQ@eLG&DDV`m*B5n zc{YCcDG$YgE0_A9v+<)Zu#Vg$LGp1gW-(LYP)Zc~m>m!fNtW#q1)pm3IRhyhC_qg6 zA7-AbQYbJY?O)xT?BeuyGm2m5qgJ4?&=R1|-d+Zz>DoWnz$k;liIwfq30f(6rBeft zDfoF@jsixtg3jE(I^T;$-@ix&hgK9j1x>d1I?Y|9SnJs4Q7U5VIT;+tLv7}-!;(c~ zIO&)}@YYv65g-4X=i}**J|0UKjX^{j@NQ;i4p&@#BhGvM+wk0HJrVzM!8>r<`c2Tn z@F0=cdk&3KMN41hr|lASu$%^~^=PaM@UlWXkb1%M9OWRm?ka>rD&7~RZ4HW!FsvuLBuq6ox2A4n@hm6p+ z4*f1qfCB=A`Fuk_iXBxO zcJ2Pfp718Sf$n=sj)jkIqALr~Ynu-B9Nw{gX)h3yo~Ps}x+hawI-AL&L5I(36~6{yv+1R%!0!IqQvsYhGl9ZiXFDCNyXAK5+`XrHw~6sK9)8kc z^Usn2Fq5O44ml~8t^dkQN_D#tKfG!^?zn5W`D){%qj>xor=rzrK{Dl{N3^Gb?T)Dr zf?Zc8JWKn12W2Z$Tk9iuzlSEdvb~mmUI)82>i7}dy?cyQ{dBf**q0&vytUT<_liIy zU4!yeTFSv>H;k=A7s9h_&Ef;2F;mU z`#`@TP#nc$2{g*4qhj8B2m$8J^PQY}nQ;M-FRo|B2q(9uK>lW`dzugzwk7d;5%v)7 zT0q?N9$lE}I9-dU!aN4?{Es-`hC@6j>P`;7&j$rv^4XiATorGtbk{`u++LB&4uz`btGWYvpfBL)HWX z+U(<>3ZETTO>J^byx`S>Z+eyyK$b#adqlxK22;9OLnvStj<`+t|5-f%xPibf_#f!G zXKXO$n4?Fg8^SW=IVVNSW;IE#?dUQb63%+}{)Ynio(n@J!JM%#WB3Qd-InF=#iFn$hPr!<$<33rHZRl{;S5;7aNnuo{pr+>Lp!prhl}sK8 z&xd{%9H`Y&N%_*z2(33>Cp0GJeJ5{U>w^xO_$sNr``Bggdi%(M^^f zKh%M0O%Yqc_xxfYa~R7`%5DRg)(#)5i=_(L=y0RNZsiT938V@R_zfoy0k(iMc2k-d zV3hzV3b{ZxVWKqFYZ^eH3c$)`i}0A!j>ZW`AB1oJYtS7K|Qd*7Esf1MLLqPx+^IgrQz14w{D3?iveiq?ptCA-GfRC#JtV_V}H zIhJJ0V_8(7L`tGW5rUZnA(6;AG#Y4h10B(g&iRY)y?c&-ym#;2d!KzCsInnpNOYA7 zRQLD2aPPV2?7i07YdyOaFTVU+xag0*f}i>Pr*X>%KZ`XRE`%?Dk&z)xPEH%el!qN6 zTObb(t>0SwP&s4;2&nK&RRg3d|;rOnP!UN;m>Wu?zd zS1V-A2?P#YfsrBQ|861504UFMur(saaJj;xPjlz!$(iT zv)Xg>x<&ZczjP};^uA4)80&|y!4T(T6Ur_O0%{Z~%D*O7N-3cKy56UN7H!dM-z^-ROYe)ia_4h}k|KEU$iaL39`( za5-_9v-kDMh6;hy^UZ8qg72!Kbs!?_rmYKr1@A$npLDS74r&$P^vo=tc=2TvzW#1& zmQP^y@`dPYC~F+J7<`XHrgP;LPCzJwWIM{&>Df7ax96J0eoUTWCrN0>M*j%YWAAZ^=ErRG+}4hc9^|1E-K+VvzwX(F_oWN~+qxRCkhrT__=)sBc^>bg9T)Ce$G^gb)U4MNWa0 zkncr?9i?TV#O-;&GXS&=UXa8S-)FfGyjT-t^jX&4KyiO5`chJLldf~s^b5bvA*6Hd z5E4BP8SB9iGDh{ZmqZy4ZG|;8twd$zS`gS!YJx(AOA^Vj?qEze1YckOXo{H!P__~0 zHE@BLz6T{ho=GwR3e1mccw@Q@DyK?_3mk0QQyAhfC-0%i1JYA@lor2e{8A8IE|K{M zMuIsho-qX`8ua#x%q7IxKBS)85CiBTpzy%4lV`j4b5w!8S^V!&P@J;(2-YZ#@_0o;Y%1_y!<^N{9XDdgn-jW4q(fJ_u#%S{|-(a-d{bRdFF7{g{$ye|KbkZ zaQQk6RinLRD5;c9k04PDB}q`=h6cN%Nd*?9B0PG74faMwi!*{!xNoaE2({f(P&Oi5 z1x=QkTMlpl5FEIdT^8j`RfXWMskYKxXTs|Low&OuR=7{c3EWx8;ns{#iL04)hrRA94yUKNQ~ojG|0_D)Tn!Ol0f z;J)wt0Umi`3tFvqrT*^k%kYuwH{oCY>`l0IT-0&Iw}V zwwS7LLfB9gIZjXIm_OQNs&BBpz$?&`l>MWcZWE*;Cxn~?vPFQXSHWo+Q_m{ERD;YB zNWmu6Dhmrp@KO-ih94^@BSk$^s7ae(kMNs91=X{P2`?>H(bgS4(Jxy+2iO7Shykw( z5L4LzqVEj`;X~^A^M)XWdq^{~hm`NUw&f_-3STo~?PyPFtqAqT|K`tsS#yz1rs|qR z)R;_l%t?(XLqu7yL?R(;Ejwk&ngSAGJXfS_=0YN9RDp?+^-i#BZj(@8IFZg?f$?%M{pWB*O|;w0@6O%jV%XfBtp=gulM` zMa;~#(3+dU_rLmkn3+6{n}7N@uz1bJ_ki$s8vyP-j_u!t2ma)L#xvjk8s?_!5taVF z93Q{sBK+ph-;VRwFT-Ge9@}hGYXdRJ7gD1>#<&w#x$tm`kVqTXc0rc+zb3de5H3a$ zi}>{|Kr8KoM$IrMwr{CNuUmNF|W?YZW-dl{Y-pFB*#{ zrKU}(e)QkF7$B-tEl4y6T5+z6k3t>NTD8L(AWod{@1xVk$r&l&P|Y*9oKQ_ACkMy^ ze}i50iN+?V5z6}a`x_4HS1rM^MdP^nsttJP=^gmW|MP4GhL=_;b8}5>-L@0|=C^+j zU;V3l@cEzo1eUD+AQmoKhQ9uO7P#i?Lc9V%a`yckOfO@haa`S^6fB~JBoHK2 zE6j2!1htKM^-Sr;Q|)u2NmibbI!I4|5nA0_+9+`Q5O3Fk)`)xwOtb6KZWlOmWFOw# z{w@6BpZ+Zl9XWvz0zwFIj<9UuD8BgF>+tyxUyRkuC*TONvWf43)KF`sP(eaYsnxz4LFOC@|Z~ z5v#Qo7$$6qxVVBOFe$8pWb+zAyYs%0kfnb8&|TX^u1j!$T?fm@l0Pp+OlDbxU1&mB z<1htQv(>~aZ|ugYGiSP=gD}|Nz-?Ebi=lxAQ&?N!v1IRK6)=t1PK$E1iZ&j4W+zUb zoe`IQVr&#wU$C(gq)a-17?9RWT&Y_A?_AxtmYPU0l&O)@6bbSyxA!zs3Ssd&YAm}V zSUSIbVzM6-BOXN7nZp!_71*x5SDmT_oUz6<@tW12lX%UgY7Gs1RCWMd#jC*sCxr*4 zupydY_68tPu6eBv4X3gOS0;lpm)3xpm7wufoK<5?{hENfPM zEsdZ}WbqU@=^n33&`^Omq?3W{QC<^CQk{#Wgok+>whEq9Kfs^SfFIhYm`{UNWPvmK zE@k->46%X`Td+N$dM*lC)04OT;YE+>kqi_UDtIyknR<;l)!QaK_2DF8!i5-Sc9Bav zH3V-=Q)EWp17`o3sm~dtbqepJbbzZ^rw)*`9>k6Hg&>n;M3 zHO|=!JkAn?V6WdxSu-0Zd{>bG03ZNKL_t&*UeUknX;G`6H;94c``hGIt6kvCq|7oI zTeJ+$Wk1>=xG&mhH)qkBt-t(&c|#Z+XdusAk42}vtt}v2vtX%1F7gkym_8_vUG+c) zA2Uyp%E2WTQEHsX+Q7V0<`@AQL5;0P1y}|%5FqHoKg0)K1hxTYYB>U&bJ)CYF@F0? zAHkxDVf-I|`6y=QT4>Hr>&{uoo+P!FbTMdw#9I9pDH$x_Iw&&6@a`7=-s-)G z42vX#Y33}r26V(ISTG7B7=cgP503ltdYB4Q?NwNPMGj=SxY#h24u(o180p_ZAEa#5 zDY&@Miw@yn9B{!<{*e81mAy>c-k&&dDw=5KV0}DHaLN(to#z8d+>mb9x zph!YJk)VPYEz&VqDh#p&KoblBhT-|AKm>lp4_q*Q!~x_ z8E>`m%4@su-~JE3hqbG}fzN#M!&tKBgIK&|6^2H}kvScjST-uTY#c*d0;fcYwV;U) zZxoH%Q(K*()%_{t?}cFRCqfOzm8C&~{d_G{_oRrt*ke%B#bhukwRUB3lEol0ZyY?g zq)^~S(Di}U@OZg53NVY}#x1gn;fhZm3k8zJuA%tn&qy@pTHdol0zgsIQAnTa>bkYn zHO%BlaZp4`2nfOB^yw4W{l->&`|jVz3tL{t>|C=V-Us^|xb2$t`1LQmAJ<*H3L`^( z#&k^OO>5xw-qAizzWYEe;{(O3&aO;4;PJw=MVnZmm;gu@L z2HJ>O3GO>S2Jidpz(t{2gCg)KVb`NUAFUqmP8kZINCt9+u3DQIVJTGdVrnN-=L{ra z6%6IIP>%A^dVanan4Foz<1cKftWZJ-IA_T?Hm;tJfj+0e{(9uO0{HbvF(28E@&G#L z&)KP2-2LDy@IHtp^78XHW8uUYGD3nlXd7ocn;Z#Ec3nce*KvYR)FN%^!5tuN2`Cko zMJk+|r0twOCk3b`1_GRW)YTf`mxI&YI-5m5)6J78z&}OM& zE1!B73j(TV!@-_r=I4&GoD=GIVpE2k^nne6RJWvU1YH^mXin%*!pm2Hq&ed01{k%W z>ftN0RcBeX)$^gVN!T8%6~_GBuJ#7sBV-+Fnm~c5Xdt$5$Yq{bGhMwBGJb5!3t0~Cf5!f;UuRJe5NUI#;1pzMjvp3CTsqwA%fNdq?jD9Oi0JMdgOv-xfU+VQWh)fn(t%N)}qeb*Z#(LEg zL(o&BPT~o|y}}TIMS>&ivrz)bw$3oi8YPAIc*9z#^S|4L$K>=Jt6v=EFIxqd{fL9$ z?dBY2r_NSh!vL^k{wN0e8XfgQv=G(BkNll{+FMEgofzX#p1N9z#{=|;5~<4V*xOD# z7<#130>1T_h}9feqY{>HoHI6kgTaYZIzZB+ELzZ6T%-oct}k0OiZ6cd229Vk@Td1Y zjp^AI+RZsU_r0&fdym_H{=dSqb1#6)a=iEFpXW~q0h1?=;MGU(#ozzIZ{ygTJB3I8 zrRS}{fBkc};pVG0VDW;H&a-M2ky<5bO>me%I1KeGBtT0Vz_pZIKu_xl4Oj#hD@THl zi&z05s}$(S&(kTJ1nVGiwgrnQoYk`zd|c>irC|h+TBCo)K^Opg8b<%u`gdmlWtk%J zjG~@5l_~of0fy#Gt;LFO(TJ+?Ox}z``$DpUhbXa^I;GAaBUCsT3UKQ_k}8VT_YIcc z8YO}dyMS8Nc!jFD%(H-%OUCi3+b_ZOm#xG1pLrc$`POrIa?4&!&$cQBY_r+I_Sg5~ zKm4y>#?mE!hg)y?04}-mqgb|lHAcrKkY%}4>ITCToUHM{Ug`usijO!zSNN_w)wpp* zt(PEcfT2(!rNUQ@p}wx98c7XWTUI62XDH(5jaxPGHLi&bF%sXFV73*y2E#f<6qh~@ zLNW_i9;OtO+TX(-%|^oJM>PgKm{Ht60M9@$zwKuklnq@_Bjbv&;}aaB5!3()VRm*J z`}gm`i%Cpa>*Ee`6sTz7w)(e=PVgVUtg}s47C;_U^J7&1X(~A zUylt1vgukj!1U!TgLNx=5KeY@1-5aI$qYn=Y^0btq_$FNL-=GyAx2~XeVxA#!Qt$5 zqYHpTo!MlNPW5L9UGk7zE}wakvydU4dgQ@l^*ZiYq_oww?X2StK;Ey$+OznX=Cy6) zIqaEDRa-sNozLQf!;#}B@XG7EgcZuISFgkT@sX|-N-)nkD)+L|zJ~!4Ar#&3R|v2# zgaRP|yY`>Ji`x&%rY+BL+jUo=k-6GyJ*xRL1$1$xuHi8)rd}w%P9j?*7-AweWoFq) zR37zudN%8TVUd+kA=YK^4a_uiG#aY*@-3$NV|HU2_z@Fwg$ix6giw$~t>uGCmYtWf z>WD~ZZ-9P=XE`~;E87q;=~^Y|@LFrqMhiT&?{FrccmAD&3V5u}7nM& zCY1V9kWy-@LaSUWdnBk#8%8n&!ld{#>q}d&`>32p*4Ywt^(p#I;h^6jkla$%af3VnGrMrUy1(N0#kJYRX=} z7N3g9R8Q7M>^-iDKV~asO%?-jZjJ@a3K5nf2PhS$$b~fx*zN$m2o+6?df1_fA+fd; zpl$Z=o+-$|K5i5RxE5=&fa$>vE7MP}?IN}|ia^~$?jfeCzcAKd zPy{Lz`0QhnU)xqipPgrxWrm>3BhEAkHo0R?*S_5|m6$f?&zmOy43NFuZewbu2EnsD z$MD3$cMUH1j)LH4jvhoPipraD@%$0wxy3Yu1PiKsfOWH`i-Jf2=?&6Ddvba;7H=#N z-aJJLGiPknK5j5UiJ~Yo7?EuT^5|@11j4vwQ-- z`SZ76;k;q|Z(scZ&Q8stXf^TNcmE1gCy(K--}rY}vFYOXfbf5YKdspr9NM)Fk9_?< z;)Q#^f!WE^RRh<^Gkoa%oAIxI`GdH4^w5fA@yz>JH5!G=DzE{T)yWT&W}O;IM#3A^3WyBG{$>D@pchqDP;8hB*Ukf5__ib zsHIqS1f!X$_U97(;thXUU>2~)&^-DYInG%+j?aGR5?p`zx%k1euj9|Y^&Fnwx~~Gm zJHWv3GGbn&3zm-fIyi+Jb0zrgj(B~p~|5|6QHb%$Wki>n3*L)X zDoj%g4xCD=2Vz^5&U8$>-NfeA)?7m}$`Gnn99PKz*Uk8?LG@ zfpD*W&I;v?>%Ga@49!;F6|fWv?604d;9K3$%%I+10q)V*c@0hmUrwcET~M1U0-wks z_-3V~4wdao=NTsj2z7qnDIq}7{fscqxDbPZA~T~)yv#N6>aM*weYOsG8tBV$+coE6 zWT>G48|FpZ{eBdwK-uS4_YahV5YTKDxc{lwF*)62Eem1Eg88`U+%?Gayt{WanVMbi zvr0`|okdOpXc}~^$WRpw7TB6D_quK!)lt0b$sb0Yt$PaNTu$vl z+8Pis=q)B04Z>NA#{}W6YE`nt7TzWetlqb((Y(<&2T6|mrkp&A>^}_R*aF|gHKllJ zEVBQi-UPg5A0}#&9OmQ@pe7s))pxZaWU=*Ym6y?u&s~JrrcICr6cb+JtW!WTf7bYU zPD(T&NKg*mYlW**WB?CRw5+Z)p~LGU6*wNaC8N>1@~k;6UJ`_tM^YUg`TIix?!lTy zA-RtUFx1$i$t8L`Yhu$IVyR3`2*VZ}L>7tO#*nJ#sI5H73!7x&bqE>uOToo^5C`_f zT2$euWUN17U>L_Vp*W}AVnf901AV& z)ZRTnbyJZJ^Jm*dz+AJ}Fru`sVu zoEm+BRC0BHch%Af{K{wE2Ok1{_p1-%?DQOb(Z*{}+>h4W3_kK}{}!t+x*B~0L+>He z{{(-Eb_=JEyoGI#{{w#Twf`N5c5Z_&+Eo)ZHavizx$8>&+UIY=##Ia1WCq2SA;B6C zv;3e#%(#oSNC^P92NNBULy5yADrPN`C`b@K0y;^7WICXNjO)QY8ZA)X$&pQyrMGM* zQh^^%y+?txiu>(?b{*_c77ey&%LY9n_I64Y?Z0P%Kt8btdi(Q;BGDPaD_#{B>N9c` z3s)UiBcDEQ0<1kEt3HEj8Q@`;K;I5 z5CB@P#^h7B03kuRQ35DX=Pp4h%Yvcp&k&i)jQ_<#)=Dw)EyA}$FXD?&Z z7HTxq8pno%FAAJKeGGf|yoLw9`(-@w%&VB5nFUeDJ3DiPwJRp@pMUN;+z(Cgtf4)c)w5&oezcgU6nKsj@-= zfHlh}y7?&$dq3~)4V~{>bggOPi4yU-L(u^fkm1bKG`{=jcJZD7aLpwbVSHqu3!pa* zP=Hypn4n&ptv4Q`rvhKa_&A?v$RrWd^|GeuY*amu7}3|0g`u`r5odqBZ%xfKP!s`~ z)7R0nbBXUe8KOL;DomIE|An$(@v&gS^l(lE^RelR>KXI$J_uqV0Ip9dR2e8P`Zu*F zi2cR)5I%&Mq=r%nYl48tsJS4gh0Q#yfOr~1sq9Vhh3X{$gMd{5#eyIw$N)p-V=h2B zuLL)U?QJx;X-;x#;hiR)6}c=X1T-MZEz5jNnnmI7r2PGvwNGflp5!#FA*=h(6yHJB z9s*Mc5_5=r!d+z{Rg=y-kQlN?(f=;O){Q;E5(ZZLnpY$&d!~f9btb2@$jb46BAB$@ zr=H5N+zPa{pIY;Jx3iJ*dniakjwCvgiEhIHr{yd z5q#s{{}=e^ul-w`_x=yQ2ZXr)CtQO+S^-CPvCIn;5e`QNa2?{q zS~OmWrz`mLCJG7*m{tH&C}69lbz$mZst+sB!vdER3YQ2pMuMpgs$od6zZRjV2s6^f zoMS+rCMz@;s1#$oh|wdpxAy{W(5x%T?HX*~hWsoQ)VCn?R${h#T9gam%F=MXQGO8LEAqbvTVUQ;N8@ zia>5YO`w$F{CVd0sRHs5pPk%_DN?EhrF2oBT{KKS@jlAeFj5p5sv53P=A+gjbV90h z@Mq*vi^RCPv5%3D!3;q_s75WS8xnaZLHV2Wpjsrv36*+FDjKJz&fv{`Z{XQS{~X`F z?+KhfGbP??bf^z^-nbcG{K;!^$;PD^8O+t^Lv4{kSy!p*V-RE8@ z;3C2iG3XP48C(g znl2P6Q;Q}#s^=^M=LMjS0HOv^sk~i+Xsq|c5=ho{cJQ;^_j3YFuisPqHfu5`NP8c) zPgD2b3Qst2^aNhs{<^58Zog(d7L4_wqw5I@q$wD1l`#^c1lFnAPl*$b-QV}Vja>&$ zW9u77#CmV!Ic~c0Vl*24wc zfZ2KRbFMHzE^8Wx)!zY98Ej5FTYr2VSSosHPF||-$Ik%bxP-H9+#&!kC1`PPj~`fp zj6K8nAcb&39AKPtflbB*<=w9>hN?OxNWv=ep!cc{rbJGM@9{lJWd;R<6ah?IBRGWz zCHg-rs8-~R0KJ_Fw7nD;T{^YqRen&EN0rt4XOvIJC-cfPs4!kD*!zXJ=b7q}g1iR- zhA4~oqYm0y%*@;(*!GYXA)poid^$<=bUvP7i0Y|e3+f^-e?$elYaVr zs9_|HClEhff>@LRwCJsdoC z76<`v?bw2^|Msup)}Q?^apj#qg|UT8S;*0QfBygY)0~;Y!JV(-iEsWfUcB#bF?I5o z@JSsS=)*^DI3K_MQ#a!B&F5fvun)1?SQjQ);yJa7#*iqWoLwLXUBG$9PWMUy_q~-l zK?6|w`EUw+(28fnpD{YrRe)9HnP-tup+_-FO5p)S_A3?0mZ|4G6)x1PC`nykz3&2X z=p{e6J?wx}NMJ$iflNglsdov{__9zX>EhL^qQxf^C1iuq++vGV@E2DZMc+@aFEWBx zb+hWF(pX#hgaC7NQK-VLq;jpc56H3%i|3Ev#(AT-c*Ao1^hdA2cOH2K-+W*z_8mNh zcHyf%!TSP-4j;x>zy2MJeET81@9K+i-Hji|vU4uMym|96I5djPxgJ4JMGfRcDjQNE zb%}GBPaL5w0Sz(=)#^GoBw%4B+v_kzq4eW{tC{g^q{3oJDQWn+)O($=KUQlkSHvSz zYUpW%%C4;>4})=yxC)5{b%l29TbuO#*88_X`kPa6P`;y#G~&vV=$X|MCXMdjcLMw7 z=H_tZ@ILH)?OXWTUw;St_8(!7V?drcoWE`fzVx|kao0`fbp#edwWe*Bysg-&yyvx5 zPF4p23hM(-NEM3g$&5zQE5(`mOet#$IE2t*%4eV0yA`0;{Vb(z3sJoXa^Rb&QG0h2 z31IAv!{Y#Q5c#fUN9P&^&;6^F{X?k1>No(?v-e@(aJM(G>sKD~+4(;r>+c9=C~XCV zXGo8}b5bZ1AV&q}hc@Qsns{~RZk(R137CQY93Qy$TnzS?e)}D;IdoO}HRzwQ&*5Vw zyXa}^bbx>)f6I$q5J*;5Mo^@3&h~X6_Mg^0HpO6Y(CTroo(pd%OI2MMWyt70 z$w^xiK{QxkluL*ttR64O=d==bSi&WjsAY0BT_579;Z&wkbOt*mpedAvo${C_3#8Vy zvN!svp#D8TDx0kdU>G7J4RAX{e5s!azJ`OGnyUmj8b}Q>amYbSD{MIe>#aK2vU^MU zWvjZ)vYm?RM^bfhro;e2O$EWYZdzERu|2CUSN#H! zGM^R^b)kjPDL;Gd4K4t8E;vK{x}^NYg{5Fh>0ZQudj$3e0~1s|ka#vbKQlAi#GV7k zD%(N;7#y32M&H1Xz7o7>H8DGRrfOP$Q)i(GZBDO#{-93o7z+ zQUP2b)? zZodT15&qpD-jCe}j>G$aGe-~Nd;iyej}r&?;eDU}B`jTg9@nJK>1_J&l8aL z?c#)C2_PsRG9-clVNBPEKpVCHMU1y9^10$WA`ewscF=)zkc9^+&$#Gw0=8NnO63G2 zU&8W=H9XaY4>au861F@*TH)0T8AK0pZ_k3M=n;>Micxl-76%Cba!z!XeurKuwq31qA*QGk0G3mr zq9Wq7Ql10*%=K}arL1xiaEO{ki1VceQ1!GCNndhy&1>&z zV&HPt1=GQ%FkKgr)n1T5QFu(w_RHqD`}(z4x38>9`2N-Tdl?|t@%!$Az|1c+bin{3 z4x;Ni!!ZwV9}!fQ*EhHtk1I5b3ZU*N&U3^HK{Cz=&#te-!=Hn_r6m!%a>L>7x@tx!EnL+o3Vvx5l5 znQl3eCC=QC9#OB(5Cd!y0jWj3Usa#E9oH)2I(gM2I>Uw|s8DZCTxi9rVFwpr)DTA9 z781(wXi6r?zmEa{gJFZzjxAA=mYO~e+6)OX8R-B=Ro_!W=_v@r5_D@bg*YTgCVZ9I z-b;yEt(;_tL_vvAYfgY@D^@)vUMkW>^@9Tfp2w~q*JCvETr$mza=Qhdi2X13|?T3Wl-#hivuZm!x$7`LDQx1zp8&PQ~{=K z4O{|n(+$627Z>rf001BWNklR`|2j5Ybu-2mEa?&>@BR5lkxcCt&K^IE*Ps4A9{rpD z8~e6CgLZR{*$)8==Z)a=AGrcQ_wlQ6!TP1>YveuFLJAZo1?r>{r}g0o1@IY4@?>x; zV21)C0Yq5;9(pJt5Hsh&P=Hv0bfO6L^*F0Jo^JVY`vhAL`}rk;5n`Q>kRn(# zK&?G@5f`J@S`~`2EDo8`KG9JVtU{}Z1()gY$*Ku#U~r%h=dW9YwJYZ1&Ku9iQ!nqs z-`w{S9(jH@PM(>re8WQsm}@q%{f)i&pMLi%m_P4sTz}mqxa^uwV8yBnx!vvTbS?>Y(5TN)dy|E ztItDBXK;l*86LSrDiJ<0B@w(DWlj)Q+LN%l2SJ6?@c__Z6zq`dq`-kh#GfTN5J5`C z#BCWwpW@|v9!`40kCl|Z>HQ9YH0{RZN8Q}z;vOATw)+{ zy|?ZP9)3|By`sq(8q{_-=ly~mqJj$+#zyQ-hgoWn=1--yxSe&ku!B`l}{vWc=7 zsG$Z3eJ1%`uNUeP5p5hidKz1H91otE9W2hyOMT8nc0@hSuc(NQ+Y*v5A-BrFs5O3da$9#{{z$TH(7BcXzNGz7g9x&=zt@_p*eY%m+Ajk?NL~h1DZW1=ZAO;PrpvqEF z`(kBr7t*8;U$@CXQEgEaV)BnHi((+1=cU$%u$T-9yXMluN!9BxG8J{L8-gTUiRAQl zwSQ7v>jxjz!tJ)l-nWideI_}Fc}rHjYeF&KQ4qW++Gx$rh{CZicgP&2S-@yRNC96d z7S`DSm)`gSq+NqhgKHnpwrmLX7(m3J=`k45Me0{9CGBUuct?!$f;(;QlLW?Nl}p- z5?vm}-S-4GtUm{zxa)SzUvU!_FIk1*;bHXk4aCi_Nz_;*1xfHjs5-Q| zF~kL=rS2A?*;*yW3p4)tm_oOl921R>^z*Hs5$>U#Ay&a>ux*?r{0$<@n-fufvDmw*d<$hPonpl1)scLZn24&4aK)LP4w*OWL+5gKf(f zDmAbGfTIy%)))%XhRk|PX6ckxDVYKl5+RvH)wq5QZu$!3EQ1++QDAB=SHEA|cm(qq zug||4U=9kv@m+Ov9RL}+s#@V6PFXiRvTm@6q=f@jYp(-t)uEDz&q}6{F5kDbbCDsM z@?5L|=>oH}(|G=s9XLBZU45m&fgB&Wc70_jN3O5?*(3p9E9N1^BgyHw&U$DU1)ke> z5U0-0ilcJg=omJyUDfpM9=t z>M;DYxm8N_yG{YaDhN;u4or|%6YtFKCL#c>={awMn;}SIHE3Iq5R(d|>PYT2O^LdT zlN{PQh1WbB@E4gf8fdqsGJ#kToX8ch!oa!Dbam!I3Ixp1dX*Cs1<YcK38lwC`d3!#<6svi=2tm-$oy@n>Ms>w*L);FeLNV^m0`y6C`68Ei#wzf=7 zQiu3^2@z>X2#YM-N@E0M3zm}8wMg{bDRGlA2^Ixt2Gx`3bI--SsaBzf5R;5n?t%zC z=azCI&ZiPYhl}4w?9JW|{H&&aNQ%bF_vAv~;Eesw5aTg2ajx0Kfg>k{m}TM0b?+({ zh zWsc)&FD9=x4j6#D^_{Iv9r1xA7$1+czqs)*Y2XUE0(~HXfe_Hw0Iod$9Q^y=xD)GE zF2En%{WOlBo`UxQvy*4=%(uUW?N2^{OK$rluDtULSh4Y9^bd`^hjd%eYX~@d{4jRC z@E9KZn?J;^7akMfclnHMUbh6l_{nSWv0E<0@v&PY4`*oqQX`p05AnEhj_%y+P`?y8hPmkqsW1w8c78}6{^VRYu*?YjQnd2@{)8= zta_c`kxXef8&ftxPC_Fa zRvTx}p1|Hcui?d~zKQ!DdK#zC$nz|74y%@pM^b9NywQ@WX#drkYxpqXhEu#d-9ZsH^#v{*ff%i2izkcNc ztXZ)D{e6wj&!b({5;Zvyq@TOk+no@l)HX96Km4iL0^fUV2MQlV^LW9A^%x!+fODm? z-`9by%C}ywKfYF&7p`c+JL=tzrH%%C^hAYMAi80H5UdOozP<~l)VJ(8xLr~W3R57= zHggR0%}MgOTF+Krrl+t91^j9NDp#2tN)*K{4)|V6M&A|H#R?ENC%lNA^(lZ33cxpd z%%IhM+8k0zAbeo44y->R}t8z1Ky3#l3Hp)s3hZy*iVv=|#k9bXEt&b$|tQ zC-QOl{;BOww3sHc*Hb~%)pz#>$VUmWh%-ng7+}ATg#*x2YB~!fgK5cVVl&p%YY?QB zEq>quhh&q~+P23OS0SFyk84YUY&^nhNuIOs_Ybz>=n_R2nH4Y{sB== z5*eQ8l(0CW4DG_>$ceM;adcR`b`zZYF;Ies;8C=iqKM10yj$>Ph{G;ZjgkMd_F}f#?x>oN9>k-6{RepIfxB_x zO?Tpw+dhF6n=Zk~{6)y}#*aPtU9_4wbNn!NJ^vV<`Sw@w#tSvn7& z{m^Cj{2iC$+*J!PGSp`nhC3skHbI1N+gv)xL4oIAChbl8^k7 zRAlKU79O?wH%{P|Y8gIs`?XlQ_5)b5WEF--#xOWIj4bbq&p}aW zY660Tm@I5Fcu2bhi$DWnD!muXQvIj)U1#jW zoCx#s+VKXh8i@^w*VK);o+eQCHIYwl0dq9oA_YnB`K<2fl1Qyq6K75z$DUnV@#0f= zldTHuVFMeT(w^UiERZgE1L}EQ{0ni z6(i)GYZrv#SMMPu@ZVq|f71SXTHR85~c)RYqfT1QBngx zl`_4WVyWLR_<%E0jq1Beu-&uIEYGeGNj3A~bPJx+1_`-do3(+Lk zyh%GF^ zm}MhKF?e3BIU}sG%Hzruz)MD*rhR2y8l>S$M*))Z`m?+iUMci>P&65$5HE?1V0j=r zN!piF1(EoMj5^sfiz#pT&}R@H^3d3WR){m}cMO2B`uUI`T}VwTAhvdd5&~F(f86?p5_Y>O@<)8;%&1v|QO}YT zJMkJ!_+W0-U`; z3>t)oMV{zsjc9+Q9|D`SFbON@+!^8l>VXMRT5M?jte7;hROQzG5BohruRI~dK)f}9 zD+DDTvvVz+KFb_I@*Lxfmi>4r!O6IYou(QPzC4u|s>QsfRFjAqq>wtip&CS$R2wX2 zC8)Pm3R$km3SKcsh*OOD;Uv7_D1J@u2bxryX_bH;MbaT_h7Xcx{E8m`W*idmF{xmN zxz)crG|<3p*PM$Ds~6$!2VTM-|J^fqW8X2f+66+<#+joB@x(X(2ru0GH&}DYwYdDl zpT+viug8KFYv8gRKW=|Ip5I5X`=uxF+;{#GJDz?>cIz2sIU;_9Vq_I2-*uOsDwfc25NPQE)GR% zxkZo|O)*!2h>`3v)X1~2I(@Li06YU?%NV||1xDO?Lp`O|r3jl0#-7U0uQt+COo-K4 zLS3v?zACAl)aW#+ke{eVX&Z&9@;xRMav1^|d5$IXhjGhQ=i>6sEAfk;xE%LBxfg%? z;A?n&_kPUI&I)z-%EKsJc3EmCF)`r~t2Tpb4t%WS;$VmHZp@VW3DVzH zG%SVjT`aI57~|`t$a5&Aku!)Z4F>uiYngqwpr`DDe1_S+>V3fU^hq2&`WB8HcnJ^Q z|1G?*<#kNY%n609bA$!sL-_d3oAI-EU5?8(Eyc*tKnz$VRmp*=c!L7*+D4cpx6|U+ zxnQcM(j&P80@mtYE-+A&3!)~~ial%X+96Vv*R!c|)c~^xxkk6{j+IkHjmmwJu^Ftr(b>z)3bBcD-I7faO+j;G1%YN4cu&XU&~kjEp1r%b$#opR33T)qd3`b8)i4{IHFo4T8t?N$GCUO-3rHW^Sa)2RJ(Ly5yq=bObwMnV% zQQFL(KCpY~4Ye4X1V0!VJvKy&pR zLE1p^K2G}^N9so&Ugy*Vu$T3c2n+Kn4A~)`vMh{DDQ58^fFy3~SFlW*gjcT)(xn5?68|0BrUl;wq!eSoe- zf(mQZHW(>@m$F!Stv%?8Vt;Mj=UCUv?E8YUSV{oj(G&*T*Z9N`pIRwv_F&Yd=AI0NeoM{XN70d+hByex7MMX0p@f; zDqPgU2gPfqtVgYhcZ-mu9($}sfQGnVh;pwi^2W-I2u6P#5+FRsPSZlb;DOm@3)8c; z7&>qCV_AH(7`n=m|Y!Mi3=_MQ6Ui#ARjK7idXK7pt1`3iQu@R(43m*Dr31s(AFb9Y>Z zi#9Cp`ctZnkSJ!qO-m7Vc#tu5AiU`iCn~4xIViy_R9%8m&upN!8YAQi?#x!u z2+-XM4dno1VB@f%zV>AhN`M47Nn6e+)fH<*8aZL%ydf-{w+a_;Sc;#z<05?jrPKJE z2VTRoFTISDCypV6TCrOc9%s%@;hE>R;e{ey^MXJk9Pcrb^*ngMRF~P*O65}eKj0I$`Jp<3Gx$4{Td6EAKNYxUe!3$S*@I0pK2@f~?x zYJG;z8Y;whDM9$!+J(?+2R!`TZZz96lxywE<(M}%0w;oyQ7Q3D6*~##aFGBxLqfO^ z`=1KpsQZk_DF&4{R9!#7R+KZ6qnZ$FqYg|Z2}VXr;sWi0PiMQ9l|bx;B@#iDJucXV${L~C_lzW!b=c zb!LADf*GzZ>P<+1O-z5Wi8FDnGMK9WNUV~YShR9}tlSdB{`ygl6R)dWOqyGkcmlMx zEPVLCd9~LVYgk*z1YkRbi6=d73VJLUX92{PdA{-gp!EzC6}dTZYU#J4^-VXoQ4iPO_n-V^}z z504_t8^{{(9+!uA3(7JwMYYE?=vSAa(dJ_=`WlaY6FYe((GyH z_l5=sammI(tX+O9e&V)^@QwSn;F}L@!JCIpq1EoD$~Nb4XxBCz-m@J~e)Es9=HhE` z;mvnp{pHtVV%aJT43GZE0N){WJkpQv--Yc@K7i-G_jMfH`HBdZ1pwy=i|3Ex&Ku9i zPv3bZF5kQoqeFeh=%ull^EGO2)>haese{>2p;~dHkZLkS8?)e)5bE?=1 zAue9|wbQ_qE)0VnsZ_u=S5QO>GGm<5Jk%+nBp|8wG7AHbc0P-0!TYd#_v@IMneM)2ZI^Q9>=d4Q_7yzy{5A{@d@nYG{iO--E)j~}fFf%iSr_W4Ps&5W{FBl)f?bocw&wcE2Tz=j%ESMN6HLc>_m1@%p*bU0-H3It_3sB^B zTAO_bS*O$%99~$)NEJC45KR^MSp(I1_cL;U*4gVAI-HTcZvcBw$JDj}w-zbER4Y8Q z@(~xyIjcxh>ehbK%?9RL{oU`8C7K@8O6)2B zG9_hHWR24Mr1S+7yz;@Vvqqw8e?u z4|z}QdJ6!fiD_r7e+xWM0o)eem9le5iDWF7i(ud`?rr|w!fJW}{6KnYN8c+$>T#n$ z001BWNkl068 zK`K}*70{6KV>L!cQVGTSXM|5U;>{QwC=bdKh2#c827AiG&^QYgl&7425UaNdJ-{x@ zA6yqM9#Qgn&(ROfZo3~s4WNoGwuz374&$l|2C#AUBK+isF2zI7yn$~%@G@S0{UD}i zn;oA}?=f}iI9_?=d)WTegBV}59P2N?9viQ@70b>&ALEObV`yvwje)`c zKa2z0U&7WOd78dN}40(jTNm{u26 zg?=J6+p-IZ_AA38N!v2N*0fT^dx?N>m*}6)8`d9f`18FqrMg217St zx|vA%LhJEdhjehMr6BP=7;g`Av`nve>M?ahR>7~8s>~-+_zfH5!J^<)iYa~uac^pI z@3KTQ9FUR6^08?w*xZjx)@;V7K6oXz?>mXdpL`OJKK?Kcy!94lX6FQG6GFh$^bEFc z+l5zN+l~IdZ)3^g`MB!x^Kjv%w`0N5^D!|oAH&0A=yhL>d3P-i%M&vKbewTa5YR zL)~eCLOtj5KGm5rwX!<+CIdP3b6rT_s|5VS?*O%$SNdI-3TRpLv|(jUlmK}7cQtrd zf_*I&*eKVpRCxp1&VyS&bRO@(LLLEW4N`|c)^;FN0pkd$zSo<_2H93ozZVB50w=Dg&K^4yDPw(44JWUvpnUVScx1{wlDuL3@WH3%__kHVuV4pP^9c?*OFyJiwh;p+TakstRFq$YQ$ z^0B7+Ge_h~rtYb$)?u>+^fy$`#d;(XlU3zjsDTh}kKzsMHg5pK2?CK%Gm)hXgdu2f zO3cB0c!Lp)8H~xw@@GibV3bto)z=mYQdswGR@ksdJYmJNAdG%JD9_)ZYez0xYeRU< zlNJ$VQslq^=t^Kfab0fq#6gOH1c)18`>3;PNJapr@Kd(dgO#gM$gsQ;$d81B6tCCl zGmz11kX?&%v7g2}qFPlcqs7##lK``szm&nw$l>-Nye>g3d_oEvQL5&sFHxW`x2UZ` z>J>n4+0F=Y73!J`Mcn@cBYaW^xK{mXu865#%DKYuJBJ}q;&we2ZbmW5q_MB6e{?Do zF{lZeOe(R168&gGOAE3h;96(Ocmm@Mpze*;S16%av={ag z(o@L}n*cP<#o1;HukL)S>J5nq^Omec-spQ* zIXb*!Ab8g3!|=qy`ttgKL&wjeT@>+!HEjpdqm}l->k~J>m+zu_UAu0jbmiz0Oy zk;A;vL0obEN?g2gDL(h%%kb>0Z{nVZw&K1gcHqc~NwnG>@S{C9i(_x@#PI{W@%-O^ z9RnldSh98#R$q7(&bib#o1TPM&qkg(EMGj1yKcGwpZVY=xM2M<%pV_ybBK!=9fqN;NUVtg&U{BU1qO&~ zsRqeOR#m9zV2tZ&P%6a5n)W1*)H1;s)idl$^w^(12=#Z->S+GDWO(LB<68!aW&Vy< zc>7qnDZnwKnbFr+6o5s2_(#e{V#;A}lM2zc>lHBGW1lgL9b!chsh_b9XN!14tdyzt zl1zbKiV!6$q(_G>X11EfBw|$&p%nyC)23BkPFkQ?#UWRXX#iY5145bMjZ}83RW;h@ z&s4X^*T3J*VC86mrNd`%!IEKo;DT#$>NA_MXWxGO;K?nx_wm=T_uxrP&$iUk449p3 zV(*)W@aBOdxaYf%Vti~E8`rPGEjM0`(IwYm{(_|#A76;U!6D>%mH@nYK&5rofIaU$ zM)o+76s!p>RS1glN~_4!0EJg7DK(;5uD7azB^gc|ytw~XyUI@2U?-ntn#U%3uzmd(Swu|Z@G4EWSaAQ*drto3TJR4Y*H%nAvbrpOI$ zyWyBebwjKx?SWj|TWCS=7|lFvNon1z2C+gEk8j zErHsOa=Gvh+jbwu#xoMS%b(Q{CkYAs2Kpt=rqNNHe7Y)t@BS6yEQ zd~zF)xKEQ|pZx6M>P_~)h1Y!n1U}(oDbZ?WcdKAzk{}I33@k=DMtp**1XS}lbk-af z2itFvs5yfmLF#=|)hd-ov9dtnM5eG0fL*(q0t(CH)g|mQDN%c+e8PMA)TZh}r$SuI zb1+wcXNV`Pdx>03kWmxpO1KiKK(mB^tCxZkj9h8g{e#Gz;Mb+FK`SAa%M8Jg4*d-V zsQ~-)3xM0nI#>&oME*=n&{o$oB4WHE0$@zfrtBk(2@LVMtSM1TaZ7Rimh`(v43tMc z;uQCP8eEQqQ0jRS)1E1CR$2b&DSzG5>2)r0xl&>cO7u=n)uII>3DrIstshdoqE#!C zO{&1?E%lxo?NNv^3_XD^dUwmioMN#MSH%++a80Xd7+0RV$NXihK+Yj} zkD>_JvG*8mzh*-op9 zZzG@K5W~;A}Vcp6F`1mas;;x%6z{b@}FmJTc8NsbUGnXJhEE@{M zqz$>asMd#o04%AdLQD`)OvLDk z0?HJq&WfebgUKhSvM~%&n0rn#pn-x%gPNFVG%+#mv1**KdD(K@aM67Hi_ct*?R$>l z{wH_fp=Wnt_kk0bnQe(tIN!BIJ9hjuj-S|yr=EKS1N~pavZV`g?Ufhc-1Be7f+ZU< zIy!-&p&<+ml%P0ZkAPZ%U;19Dv1aWv+AD-cgv}}y8CR+y#AH>uCZn-$ClxhTjS;E! zxi_~CVdEGXXT0z#NhCJg!vHfqfqiHrMyIqoQq8Kw}LgLxd1Y zpJu7#3_>}VG3yL4@H%JTk+AE~NVg5}kcw|GCAnt+ZmqZvYE8+|!yp15YY-^wK6(zp zw+zr$@8fm&qO`?;2%jW1JyiqKO#NT22M4YyE`jxODa^H+*tYXc96fPT2ogSV%VvxY zmvtC*!$zCz{%2x84Gb`-z1#UUt!rN*pw({S;pg{?J(GxV?&_5o9&8|Uo+*%Gnlo~R<+0^fHcOS6Dh z(E!MIe!g746_`~ha**$_Y)=o`Ul{DOg@kP;8JR2P{!cP=t`ZwCzh+^#>0`xfRqwS~ zxuNUX0#V?d$ZQD`h!ZN^OaYsgXLm^S!AGMMfM9R0f?@>eLYEN^)dYX z)OMyCXcD9Y)byuTrz-J*>HAG_ZD)m?b4wx)yhl@5p-2C$udA9Sh$igWXBOVmuq^^B z)xENM6+mpRL_bK8Poe>4TZF@1wBCa=o!`aG?436oE^XUF z8(~;R&@lgA<}|2*r3J&YTv*{4eU}+dsjch~_q9nt+Qq^@N=z0-B&Qbn`2^|J%RAh% zh3REAlR680ntV0-@@A`zw~n5wYQQYZv2^|U$p4A3w|{mJywN{^#cMXfkwXCw9|B(4 zc^Grec8U^;0b6ovL*c%_us5z~QCMTqzz-Mb5qhWq)q7Njnr671V!@%j=*SMTON};Z z)i#U*C<06j>jjYz41?87U044$Oc7%BfiXrIZveH@zL95GG%gO`@ckSfgCMs4I&!{x1}a9H(gask@jNK%7cVmkoj}!Inn^8uye71ai{Etf=xDw z&*0O~dap54u2K+SnJSQy%@cdJG{7l7A9}nNqza-^UmI!X!t+g$h9aDhdFTos@l?1e zdMJi8;Ofycaoq%^6UDL)3bj6?MKpv$k`eqpHJOtHO`(EPGqyg1-5Bs-8Qz?l6AoIb zpcFU3#|kP_0bt}*i2WF{+2P?~Ca~Q3o{dJ1iLoI}j16JU@(H~E($)CVsY&eIe*%v@ zzXuOKvlH9*9L3qGxeDAVm7g6zbrx^z+K)GO?MGkVgP1oyf=%bH!j0EogVDv;V8MbV z7#&-Hp`j55h_mx7YCa90%23pGL$B*=HHCWbsnk-1e9rip&ewn@=QOabGe0Z=fJx~0 zvck!v^3WW=&(%n4J3(YS6y9Tc>I_aCKZGNPUdQ&AAH?HNZ^fa*C(vxQgcT0ZvG3|{ z>mOH zL&1KIDnK*@kLkG_)6E7Pc?BlB>i0WGdI^?hm5R7lW4EjKsKIVYCUo9U-scVg9x9bK z;3_b;45#Gay9}GG8`ARnOW$!BgxdML9MaQ02%w(_cAlM@!NbqKh=O_8FPt}o_g%6I zgZ&Mr%GYZB5Zx!Ox-R!n4u+SvXKJQ}$6nkgh#3I5=8_ALXRca{+Izk9>*k<*{X9w1 zxAVRA6onInw)nkjUyBuJlBiK2oAUDKAYkx?vhb<*@A^AByGie!*{7!(SUffZaybJR z3kI481u(jrgb6(?Dxz_I!!Dqz6*A_jjJWrzKtm`HtW;fcvKh51(F&Tgd~b!2!^OnD zI7gh_<_xP)sD8k` zjVOrkS8AF^*|xr>4`A_@Y2-ZWc3VPvPXDH?i-P=RmHb$SFbZ zM*jf%het6uGLFHqc^DWT!@%$;`UZ#4H#m%}(T6O{k>!n!f=PkTAq4oMjppn$rcNEl z@dJBs;=mqEoj#7a=_v$XM2$@e77X+?uxi;n+r6s-LlxM3Dl)@(P6f%+Y>mD1D=VL{=nmWs7Ocpvfsxuj%D8 zS`~)9>`@ZF%n=}NvF*XwyREP$t~NS1p~nyf0h{$`cnqa*(0i=qKW~K8R!wiF zj;kUOxNPjdV(+KeE79@^hgR8HgoygQ(ftanne9ySOpIli80*Kms}|wLE7svxKYK0q zA3lv|Up;_-cwz@$c?;tja; z@*6O^;CxI>EX3&OI0goWy2X?RzzyX@lvJ-8+NkJMP51xH-n+$Gc3oFuW3GM9xzD=w zWbsjCQDhaV2T6&ND9WNG*@|Vi+wP#-opfLzK@!9t9XNmek^W302!clbf+Psg0n+|) z5C>==t#-$5r!C2{WmzwhvLuQUA0mrnz2CR)>zuRK%Evi-uQ|t>YhU@J4I>f(LB-;| z=dt(NYt1>vm}3}qJ~e!%F>dI*XN6$2&y^uYoIH~bnC_o7Z%>ZdA|;Uzeg_7bfT?Bu zlE`0_l(#WP?C$O3# zPo2TT_aDXP`pOdUn;9F83<6pkkq`}_7*#bl zQaMOc1HI7znVsr6tMmhb&Ldb05a;`)PMP1Rz)!2H?(V$?mAiYg0K;Jb@~j}&=R!+f zkj_%hp(IIyq|yeEFQjp3#*ec@&tjk9MJ%SRhK8Tu5?MVxUMq*0oywV zc9mhO>I-av6T9pZ^@9nKKXOZ9wWZ<{l^-om!T|eW6535%p{mQpBPum6NOzHMWA{ zoV^i{iQ3~SN5%mEi6$$PZ@t;wQ*8+%kw{i9Z5^90)5D3=SL=J<7CoEIY#{Q=*dm5X zJ;Qcc&`o20< z)YAjDJ*LhJPR}NO(6(>@Y@mFhSSrJXtTlv{vjl1juNkhlLkY+a3TA?{{@?_aD$BaU zo(7IEvvE}2lnEz}u#(rUXP4;Ksma-Y1HBFtHNn=VRif$;+rSj*8Bcc7xxm#tWpr@X zWJIZ`=Zpom6h`UI4&}R_hMp%-Uro~(EIO-U9W3}P>}HeynTzQHFP|-xKUe&@7IK+} zU&~zU*1>Ja(nqWGUBR*LTg3&#+jfq<{VDG4?i*qB+UC)p9uRyqS;6Ls(^y&Cz-)gH z0C4fzHg4bD#cXyIlgWtGhaC_wxeZDB*Ai(6gf!3lAtU_7JJ_C^N15u8w0T)5U7;w!X`wTSq^ zi^X#RTkxgm0NKe=!3X>AUZ^80*j?t7Q@v{-p;Y!Khq2`%$0PrWtN?MEfr=-dcTW&V zRo*(_n-D3ND(Yf5jpAWp#TeKpgQFfx6}3Zy!BH@&1(8s5tHZy#hOtKY=sms&nH{M$ zCQj4pol_u{FIf>W>0uPcX;}U1dAWPfraAAD)0jy)6>(^gbb>ejx3)6EnbSw`(0yBY z=KTHm2fzF@E??iqYZq?d&t7^9fAZ}&@#FVy^?})XuWZ|ho!x!x>|Vy(?_9>e`ophc zZFL0?K5!DxJ^Mkt|LITT*va!adh9-IY#zb-+6MZ-@nS?gIeVZ(4)Z-SWW@5G_WRRZ zDaFaU%n%+;**KVn7^DtExwjYsuys6XQyzWRubuQ*v{V`s`yB1=?BM3jYqlIwRehbs-+<;s?925eM9$CTD=kCX^f9C!8+;i{4xkv89u_LPp!K&S|_wu-J z(zJ!d0tg#9-r(K@UUZa(dOy^FaWKl*&VHo>=QL=S!B>5hB?7hWTIqmI9c;Py-4R)E zz$kFDqB`_y@RX(nU|I$~LV=M28)}Hc=eoPb87L3f*&AVRx(XWr3RwG-j&RVP-$B{R zvxykAN@wbK~lAcupB@&k`OIG@Rh449QZ?jSo63uJenb#V{$q<|=I_C!GV;`;3G z@8jhkyoNj5+x>g3PDc3k&%7U-Yt3@Kh+3a|5E`;Q+(2*KPdYh|MABz5}tV*)C*)oW@!^*T06{{Ft|=Rtas zrn^Sj_dToTGYFqZk(kJ9e6cQKY!FjG=>6k$s4jtD)u}nHzUDoosnkhIG@;drdXLuN zq^M~m1ICW*+0y^HC6Y9iz>mA~0DT05kcY*$@%2 ztcTn{H-T$S(G$b!`X@Dwpq1U``Z&N>N{)C3j!It>5F_fDT1A+I3Mi-d%+^}+a2?H) zg9V9D1Mva@vF!r>(b$X0{+X-Z3knp|>l!G$+gW6QME=fg2|ynzd=aN_ke>j6O(odg z6HvioFa@@uRp6}>GEhCp^;qooi{MK?@mtA^Wy@q zHESAR*fBvX#pyK)J4bJ?t_8u?M6WbCVEQ4oC(EefWzKnA^j+D?QonY;eX3*-!{V3wIjzcUR^^o{wV>$ zMFeY`TR3+A!?<_rIsjmM_W*BQyovX}@6-|mPyT^XTO{ImXL$;)BJ61h?5gbDubeyE_NCb$1VU@9pB=-V9f6Y~%F{H}JjJFX4@MZ{X6k zySQ_2AA9>V%;qg(LZL?N8@~?7?o{R87C_1uR(q$E5Q1PlYH)OO6(4;3e*AmSKY>qu z_$(efa{{N1Z(?hs0}Iq?HVujd5RQ{jQ?C?g;IhFs8p2h>9-$TP2NkWwIjXQv=$MP#Z0 zzx4c@1o;|xgv$P>!gGdzL1{hkV>NouVWxf7%U=%2@C;GB%AX{?=V4eDceAhj1D zXtBPwg7vjAPM_Gs)8`++ue|Vn+`6-acdy*Wi?3e7m%jNrzWvI3xN-Bv`TzhR07*na zRC;p<(^+e*2s%*w-p(Fgd*fZa{^olaec?-3TV28Zr;p>=XP&@^o_PUVCqIBATgS1! zwvM&+Ev&4pEd~lzONW7Af;Lmqb|XQ3CeJb}7Qv*}&s&zSmjfdgUe{x=Rf$y# zm-YY|z-LRFNI{y5d!Uu=fM9!fA7A?Vi)R0Mp zOEe9N=*h{}_Gv{vj_Roym}V=2etbUqA{Q2Qp{AbX8dV1_vf8&cb?n(TgtABCGaNMG z*^3w8)Lo7;SHub9BP$whebZ06Qr%IAS(bZI4^{<7TmuI*Y@Hgxsi_kKiF$fc=K|?o zQ%~Pk>bpW!pR6+3*tyY^EniDh69s4ed0~L07}p{4)y%g*_b$Nq$kxw$B#@L;$j6BAx96;Mv+CI?I7fMFdDjDgPv z6m~Vmy%-=eTvD)tClvcav^IzZ{=ft)Y>y8Q45wa6PZJcA7J#eFcl&iGpjFsf$a`%M z2={uH=m6b`thS`whefcncYs%ae6g=*LJ@bb#n`keCT6% z?}y((N(r-hi?6=?Hh$r`$8j`y(tiSEZ58f=+J?yr6;+x76>FZcg%T_tvT3j)DZ#gA zNWQwu^V~x4ZBO|B4VyKP6kUwbbK%3vT9BQJcg@&8t~QRu_p`>2A_Q9EZ+aV`*HSxEu1*I zfl(u<2UpYp4i07Y4qwfZ&Q$;&kFlUUV06(`SVIKgKfLO*?b!AtCupcY*qsqHUc0O| zV8wS4py@mlT$C6eLT3_0DxnvwdiO$R3bMc{UW@xpMWd_MaR`W%{N!%bfcSY%uY98gv9@S4geC{+=d`HvOd9) zwFYM&Jcj3=Ig9`J*Pg}Io7;Hf-COwjcQ4?}-+U84eES-1-QB}%9tnI(n9b&x&E~kf zy@S`^d=JgVTX8=$?+wH$(K?&f6^1$r$5l#_?J>(Q>qRrP17S!@8a*%UjwJGgc8GHzUb zV`+8r{od+C6T_X)brS?zn=5$c`~&#>&z;9FeC$y?cIE_5pV-7?Y;6oAjEo{`@#u7Z z!^tRRvsFUufrQTESOcIU9znNIe_EAwbii&X5Y+yh_PEw-*#;T1`Zy`TdDMGYXOMiN zfW6rJVK0IuHTY=(f34ijfO6=S>zOFXU}N^rZkN}3tbpCQdcCZwJ(xDwn~u%G$KoQyUnMnx1^n#7Ay4GE;D9YpLIVb%Eao_NuOfS#PlwksoAvtqpO^Eyq2)X;lQUVHj= z#Q^m@`5}e4rd32wix?APWYwi6*x2{nf@2z7U)b=>vr4`DK2clEfWWBah!&P4Rw0}a z$M07xsAIf>sUJuKHFyD(dg@#45iQP{#aSbbQUb>cDXh-wIZm0`**tcARoV~DwfL5MV=6+UG?P$n?P+~de&uuw9QdkPX**|n2tO+%Z z0oB5DK_Ue2jFyVB=$@?=1Jc14p7raJr(0Y5`UR0!!xG4r%Iw9BwZbyiO#1&( zis6!HYa%5!$M^tGxog}GpvIN*XOf1<-Q*(5jnm&A*%ju*fei#d?wCDo!gQp~ZEUipMz| z0E?JkzVgSc zh(sDX1fA=5$k#qPYHn?t6sgE^lm=e%w`m$;X%$q2oQP7`gwiWbyk{#?u(47L^v#bm zK_Je0V|7m9*DV8uq|~29Z!A%(g{#>Y(Z9D+1IWc8K%@Q6<{q+L1KI4bDnc@eFlq$H zw^ng{YZd1nxeuRy_AGwu?>&d>w|DT`h3ok0%NOvq?_9u}@7=)m&eQ~KcK<)0x0ugc z?CkF2o%gQd%YXI~Mx)=w+Ug2UpE{0nkDb9sp7{VaPCkpxBd4&swt>~vb*!zeV`X(6 zlks>7fOOwyW}ETEdz{#F&VkjT^!fYow_Z4p7e4YR z&OLk_r;Z=N>SP3KX`sO7*t-6{S+Q+H6SeYLU|%b%qk~cvC!>Vc=c%?}(8?p@dEEo; zLMq~!**7iNYoAT4)E=wv5Daji6|+(V73S|gS5_IV37pJUBZ(BWjRB?^1hJ)HFrVkb zjSZwIWX+L*d_TvbQI;s^0r~7zZhf6Qkkj6)X8E}m0gcu>T`CG{Yax)YXIp8QGXS2F zXO9>%@SWy>jC&w@@1Vt(zwr|G4-Wc$Wou&ItF}370-k;UIRr`SIm-d98aU3tI0~RFUkm??>6Q0V%SqCn@Amm! zJTr|_+-m|LDDpuoy*nTp{n@d&9%8XT78&qn)fYhi^EXecGA79wd<-t=~keOFu45F_rH z@uPA`ldn~^z;b-eiqS!DBdsW@&F3!H!l(gGY^~wM)`~jxqE9?f(OmbZuO!bK#Z5#x z=9P$i0X)x3_ueuy+gpM}`pgc2QoIhaer(I&7N`UqnnJ71gh z3G6ezxv5U(2v1(bvbd?Kyji8}u8B%;4JTXo4ZXH_;Q}faN;AuP(U^@_Zq}@x3_n!Au9?G0_tyL&mja2w?!zw+z!cwBM?vl0r&}+%F&?&|$ zYeCSpKYQWC-RGbCgrF|0izcO8Z{icTrjZR84l(VTrsRb4I1Nz|0FKrV+C8A zt2q1MaXj#m&Oh-C){Z@a%_AqVvbv7ZXpGH` zO{}b}V>}*N1t1euA{MOHd#?VOq6q~l*i@0^H@Zz&2E!Kjt!)!_cJAQby}Q`i z*~Xn)7jgIMxAEo8LF+chj1dB2VVipz`RzNW~DilMMkT@#ikN&nTG38 zlp&c}X{?pc(eaNK6LP72mb);>g=L5af? zFz&x^j1d>FU&mKp{Eo3g`N)$G;qfyku`-&NwP68WeU0*w zz?B>K%r#kGUBj8vC(tw_WE+)v<=!_0bZc+!Xe?jq)+x!otG26b~R_Rb@ZWgh)#E{9Xb~ z;s%i=hvaAb!exEZc|iAy+L*0sigA1uRGLEh`9xc(bwJpNCWez$;Id7Msl!HAq}2Z` z?TLwcNCZdlP!Vtp+V(|Kka_?o)hAv3-`mzvpI?0MKxcEbVe(q2=h+u603PVe zlNj1kmo1SrkT)d!a{6+UW7Q5|OVls9;5+}Cl9LzK@4fRZ zR4~&RaQXrMT^6_2#8Zx7Rs-M$PfQN5t_UBt?@6J8@1;WQcrcB4@9OQmLpLLwe)I{9 zCaXVPAh?KN>(m2y=*egBqpyDv0I<6^!v;gBR&@G;Y~ zl*pe%>aXkmyHxIjCc9d= zBZ6AR?M`C^R0A?OG|)}8PXmX)4E&u25L;(28B#^meBa~{1|ElhzJi2G14K}&KbtaC zBngTTPxIcIM03Wn%(OzZgkLQ*Q`?-RR4S@GHI=vajnYB}l>5$pkUZZ${XDQ2W(hRf zb;Ih03h~;Hq&oYa@fA$e7_=3DyHh~LQUNB;HPp?4NAfKTvhgV3_|^uFZ>`~d4<5yH zPd$u(@XOEO_Vzw5UB8PTym<|O{++k+(yN#7&XwEP*_&ZLkA%wAF&a%U9yJ(^SFpOa zg|*ey1wfvhXOY2+R1172m3?1)2O{IFhiZ&-?CtO4V1Ebu2m6>E>|;9J$M&6T*uV2# zy!4${@Y);i;M$El*xlR5Y}OWbGP*_!vak~S@RJYVZ++?seEOqj@#urcaAIo>>uckZ zbm@Ort6GEl`wl#{{=WwB4CAH6gC>Vt)A(dR>r@cMR%u%*0Y&V&oM>de`)rHP2m0(# zKH8q|@?5F79krQ5&}%^5g5Oao&UL_GP@$1YDZX1}<-i`yC~QNrI(=~#zIo*sQY@!Q zvfp?H(lyxJ1zzUskzhkK#en~dKR3$uWkiba@?6(y^^|O5l~wPNz~7NlqvzT(srSt4 z?*tQy*6;HHdk4Gt#&=)E^;@}d8;=@%{OM;9nstN#1)g@-X$EaklPz$v`a6>fGh{z^ zQ6aF4DZ{tkyMeufxw$I$oji^s>+4JVJXGvX%JWt~mmR^O73|vE-2&o`0UtVGJUOA@ z+FHn3>gav0QACvvCeg{P*JueAdDcuOl>8{B2wF)6?r=->rSoi?EcP7 zX-5iDR6VWn1=h-ZO`bd7&%K_Gg+l@Es@Ex|{0{3O$m*l-2{oWfV!Hw`_og#6!P1b( zL|;?K7D8V$PhjDmGc|FBl=Zy+?5U<+u3hT?>Fh5!LI{x6q84P>8p@t^ zEC6erz77PG%fNSKlCMR5I>GC~NZIWQ0-c_>-)Ci@u8t^ec4LJ+Vo_UL>9H%nQ%vTF zBTVHQwPHu>*|M6R)xiP1^^-`wulFGYN65od+zs5RaYGcaXfyx$U^>I?yL=gf*&NNH&OOR^Fki` z05ZV!ua!^-A*88nh@NdpGr)3r2fLJNfP&RMlum$aUs6-R8-HL{2WtOYXVj(`&vvW_ z*jhl_1(;-Ul}+=Pw`OEB!st&m&bLtrstZ zqPF>Y>Dhq*vP6JyaC%E-u>qr5<>fEzG;=?Ht@xg}+Q1#a?RK9eG=v4Ya!h}5YT-zM4dGHi6a6XIYG427ZumO^; z=eYAsn4;hD5=WM>eN`D=+*zsY?H}OwoqKre!exBzo8LzWe}qxfU}a^DjrBDgKXwGC?>mOmr;g*n z2TtMWiAOP7dk8CQN3pW9jt~SPgyl%SU^MC!oC}~VG-Cv6Dmu@+80ScFan{CmhIza2 zGH%;N!`ikj4)%9(uy+IP-rKl*`4ZlF?d(#Q_4#uRy*524Hv{g%TY}0I*rCl4= zcBQ-TBWODf?H|6l*5az?GuYZqrHq!Lo;lPp1JN4bY?fQQ{ytDZuI&>#!1emAJNSS9 z{9Bl}xdA?PYy;=cz7O-ZDb(xM21Z-nbVrJ)&z1@@MSE?}=QDikm5YYB6A_$yN|v`;N`)9L035+$w3ml6^XChYrTw(D^0DaMOIHHb1fLK$G$8z66 zP2k{JwbiD~R)8oD8#Ev(KZvcpU*aYDrpmR^b}J6J$Ug3c*PKTbcnlVt z_fp_;58^1rcM%|=0Y0hR9}QAB6}2rY;342!YQQ-V0_r~Xw8nZM*&_jj{1T-Mb|?T` zD#lW(Fs5DzY^wbGPZF9M2Y?v{w4+Y~Rmlj)Z{0LWwJ{)6SZRTq1CWLk=gw!6p>>0w zfLzhnx^;*;udwje=3$IFH!yHM4~?7^3YF+9T?FMi(IFw)$6Lhi8~k@Xh9*pevI5Id z#TOGiiZ~M~gMt!DwUt>PPR2s7jE~f~$RT8@0)x={g=tOAQrJf*^>^}$Paee{!S#F; zal9L8e7=?gQV^+jZ=Xy?I5}=`^5{As4LHm zy!7fNyz%Z0T)MW6dwWw%XKin#!b<6s5@H0}He&x^iaU3AaPjhWeE-!P7Adj_uM0uY zga%Es`152k#;9qqx;nwy>Ix>45!O~$F`108x-vls0i)64TF+)Jrn4D#clU8Hone1} ziv5Erc6awNTY~d3#>M~lpDUtm#GpHLCsEZyH?10L}>nCKJ3=OC!+U|7Nq>v)EQGnxE zg+0PplIVMr71}M3MtJMWdQZ?K6|iKymNocnz-|Whg8@7<3DGD*pmiIn#dnzznGuy@ zIoS8?f2JwIJF`MQ8WJFb@)|UT3FGXP?$hZEul)F3yz%xs#>4Wn&pn0nkDS5obQL?( zZEUW#$`^d3z+1hJbx5Z5O1Jkg1L(U4bG-QKC7MVOeE7-7F&+g2q<3m*3+ktS9a~Ej z8{X;lGxpx1(%dIA#gNqGX|`c0E!i|t(ycMQ_Vwq}#BEZFY9YZ(_Q#J9jIdDHC#u=? zYsEfOKofTP*-OQ~qCan*a#3}(Rw5?OMQH7H77A%Ib{nx2Y8k5^ICU-AH?Unp4^r!2 zZ}MmNz%8SMCjV!#6BdQ=D5X+Rpn+=^B8i~LxhW=kJRw8PGq}sq5WlACeclO2h%*I- z5}?@S0cn3_FO#FMTR^yi7Uc!U8e@58df7KBTOj{@80ZT+SdvhMB~5hJoM)dR6)Z^i zo~i< z;T^K+9I`L2DY9|M?|3*ztn}o``JX3HlEq`)qjNBLDi8*pYQFLC*R99&AG%2=tBOh5HiVzK zHUn1uh~J#l!BnJGgH^>T3Z+!P^4Ogz7CdiaPeCICEVAc=*3$db)H>b)8Z9GVB?2ty zQU~BYV#KpxVKqdw#h}YXI|XwwLMfH~u|ZwE>@nW4Lf&bDh6`Rrs`Y`!O7w|jthuiVA=UcZ9xy>SI^zIzi_ZrsE6?g6H=7HyjlE4d`ut^o>+o(+Q0d7R$9 zPVHy^s{eGq*QvZW)+RV}dJ7+V{4}0_`e8hM{xnXX*u>Vx8crTt!}{t7qoyf{JL?S` zNtNvpWOi>6rT91Dkjs!eZA+3tDf=D^wQp1)V?)0aj9rOUKLgt0qXVL?U$zF{k^)hs z(g-yMWcIu*?RAnRP&p%2Hk6gd9M&GA1G`6L2>}Ieb^!Iu&m_h5wm z*_u_;5>T1%VbcTHIoQ&I-HY{}eZNa3zZg4>d|i^V0-5)U>J9*3Y!3ub(Vn>Y*~OWi z$%3pH&-W_tdC91HZT+#kKf@pW+1If@o%YvYV{MF2ee@GJvax|Sjqv)VF`hnq4WlLz z=$Vw#I)hh>H5!!Hd`sbGaoyAWhjU7)t^z{%Xp) z(W_r{zL2pY<*+#NTQ;D(R_em(n*)jf_0G1%5R_yI*iYa&`8GvO>0~#F9MX4qLL;Zn z>+AF6kR;I&1Cmt)hrJpihWDuC*Z|QwGlIIPu31H-QJu1d^Z%YNdo0(OyKXfOP!qN} zsOD#DT^1AaBtX%lQokrQ@o5dr z2I`@l7!b9Ig9EXBrBu!a@0kh}qJZ%L&$}E0&uOZVHJ-&Ti}@PV?Pk4+_qh@?X|Z5~ z-TfJU_||39KW!dAh4IQ-#SZWP=O8!$tRFdskNnba;QN2_ud%Cw$hmGxnB7c6tVoRk8)AS0jdG=dhl?#Ta0qBV6yP_+z72UxJ0Tf~ zm`%}z4}9fgUkvC2n>Q};y>xXNtq^lwTwhNOs>eMJyGAujks*(8$G)b2uv?HEB_Ck@ z2B0<=0}^_hRD*J)#RGty!^8lM-tY4mmh%2KjH)+k6rK0hV}>m;l;W!gIE1yP%qO6t zY@i(C!zj?55Dy7XAO;6vcp$R(9J2ZbCGcFR)TQE`kIG@`jX(juhnn|{sPGqW98iF& zuOEk}^k8EwNkaWh3zH}gVC_vz^dH45)U}P0l*$AV+jNNsR*Ncb;S*wsn!%LnV6RJ1 z)WUw9AXRrQb2D4Z72uqU;G8AuJd%O2OE+XHp$vxc!OVgj?$tHHHlAFNCMwK?GAIl< z?x?{`VXnzs9{ZzlaVFB$zAXUORz_G`o#4J>EB*C}G2+)g{RHmqMcmun$KL)FJ9|^S zd*u#Zed{{D|Hf6kb@3Li-P*zJ?LACqEoSqG*}O$t36}JLYzx3?u=uYAfG+?sKpG!k|G8gk0Ram=X?VFrk(yAY~5 zg@D(-v|tZr&cpG1a~(^};xi=zweb^*OHv)6t@?<2HiitEbEXzl5H?N5df8^Ir0;D` z2mmzU?x+w2hX}elU|*us;}Q-awGhO{o=t@~CRM}|3<`T$Upn_BmDkr;^k|U_^+^S2 z%fc4|P5b@^rHHR80MXWd3~C>S!+4X&9!B8^g51dfsz6o0ezyK?o&M2TdpeZ0pI|{n z@JP>`&ZLp1JlhSCrtginPME}Vf^-dm5#TD2J(8?C$x!R1G0-o?3TDU8n+KXpMF3U{ zj%-onH@R!a`)_Gr?G35(HDSXo5sps&cZ+r;=aC>_n|Kg9okEhSykF}K}%7YRP!`GBIp1oELdz(r{ zByW5Mh)Fm!z|1g=a9Em9f)s-rWIPMnn-}TkLn@7nNFt+>b&! zigBZGaSm!d`kRQ*5R|GJagw)%JPwm{P83Ci41m9U?RAqDP`6qN^qe^<@5Oy#3lz^H zOP_%O!&Wrns1~5?km#OzSq{Y>B2JMEhX4$wq3>TeIn9&M2r~O{8e+>)n(?S`3ckmD zasYibq8@@^V{HW+>jC#KRpS8giFS_N{Tc4<&9J+7fP-1YbT-GqEaKkI0lxi%ck$o+ zuV2L8!9x9gWMdT{di*rz^EvjXa~w=t98Bk!&Reu?#Jr7&F)i&(I)!8Yx*;sWDMzD# zCIpO{fc4ceHr6KCSesyTeFaB0COCO?4X00R;=xl#aOU(Djvbj`V|9X+l?m1+0mqMS zU~6Lqlkunu7;>Y_U`#UO*!;T!>yh1POPnn@`%p9-^maP zp0{{PHs>X!N(0)Tv9{6geqIM5<^aq&fxkh4iutv*6-ZX_LIHY_2oo{Dq_%I#whvjs z-PH!W2NUcaj4I@AfVQeZijXj(>(MTO@$!7MUeR?06ca%ymFJyZd&M_yWbeHVfKB}~Zm)|J`-vu7I+D&3aeDfrn;1DjR)Wu!l3IKGmuIEWWRpnJEAx~j7B;_^N)S;AV%D(NI(CNiwH4y}hi#SV53jk}Psv0<`g?L^bSSqmzlikw= zR0@@-gcE6zRSK$KPgca}Wz`sQrQSnANxB*QNDEg4rPWMu07w}SU53hM;_H#>q8rmE zNhusMqDA;#_}U(o>+u9DJOSe`YOV0p2a9Gzh@44|I-M@DmzuXZ5hlu#Z91Fd?TfdJsNnRY zPoNq7&GQ5QYXiXnVDrRjeEipb6F>gTzrbvN4>2Zu;ZJ^m|KRgaeW?l^BONy03cLIBi&G@ z0ksI=j|XZWOm94s)_!qjkrF^)NzNjO)l*)ua?4S+)Pi@oc{cVctp(i;0h&m0CUC=b z4kPdQcl-OWxK1GiY_6|jb7QTjJ@yV}n2hbZT%9!dC;#Q=aOS=(tV~9TDPcaJqm4k@ zwuot=I`34FkuFJ)fF>-yR}%!ICM*H*#eW}RD^|A@92l3n} zrSKb?m7PgeX=)(2vk=K)dg5Al)Jg4Z-C*B8C}2{Q z8nvNd&Bg%c9oT8r^HK;PiU3AHDR$>d+1(J>Us~o^PwPNIk5MUK8}fqIq&slo`Vrb6 zk^i5*wK~Fy9>4rexfhSDz^KHGtN6P`TXq4uwY062be@@E$QZX5vXZEHu?@duLs?Ty zOKDH&f#Ti%BqM9n*?+I#3x!g0gd-X&qG=4ylM|F8Jg}8tbZYln{#DK5)w67oL%>q! zTBhWSYjk#8Pp&znQlBXhC;$~@Z=ica-Ph~ul{5h{Dg$si(}{&p{45MAzH3-e?YcQ& zbniFcl2w~j`mdVc)e+aZf;j!0YO!mLaAL4q9I(A+OI%Z%AC^z(uj}3YDK1~XYtHp! z_dkr$WaXzD1fQ&~l8r1p=uw6@unLwBdb3&8 z4t7?EdS1{DyDseEL=B)x`VLNU0=jo;;Gm_$mX!@=j0dEW0D;yPMZafp6n#aCr#3NxP#kCtOXL-beNv}* zDvVTn?vo7yGvoB$Svr(0p`Y&-)=M=9F-~VQT)VY{R)J;*(-vp$+rqg=PGD`NApj?b zB8t?;guM_e&-SVz1){cBX_Oim22j<0wF_W|*QxfiPA*}{Ug7q=1F4qTazJ_jO{=&U zz+mG5>l)m*{^A|*n}OC0LX90|0O-sWUF8)I)eS@!nYi#+!Ch(W`Y1dya&$L?V% zY0vnuwC2!$~zyEF# ziuu$Nk6~ppQP-JQU8gQD-9;{zG zzh83pqmeov7;GOoz@a^tvr^s*ua{B`;MKoI6$f^bz@4E?~1bD zO;Lg0sDq;-rEr9M1Ks}^kMcN7s0{XH;)KRJ!bDFsT@7~iROI~gIsh=y`>TFYTbtGb zO#5phhtwWGeUiZgws|Vqv5c+yPjl_g8D-oDCzTmDBEcF+A+EjK`MHUT$cc76dSUn6 zM@U6&EMEAjgAJH~S}A)@Ijj$_tTAKNIdrd?TpdzR53Lc-9%QvTERJG&`B;jm3X%~6 zA`9>} z@6q=c4q{YAiqJvKY`HrUlhpXW7pMwHaTsBh;|YEU1{YtElo_Gi0O5J%J7Es)VSCuN z!0Wh$AF!#%t%6gWae)+VactBQt+QF{wb`KVbzJevDjIM0QcwPYqm^vzWvKTc7oc+v zGm(LVm(}uKk~ADJInw?`1dfm*M;8$s2$T~1#Q11c1m?S^dV`e6>sy@P?MD-nKh1&K z`_MS70qz@GTLP1Rpsx*I*ab)x&$U_`pzkTZ z{g|~D5CVP{dr#X&ynFQyV$7c_rnvYdF%i%K0+EA%{#DOiZi*rSB_)`W{e1KHP39c3 z4VPA8TXpEDS5a%QHKm!dQh-q^vv0Mi;GC@d)Yc{=0fvwGac&OPCblo5@TNXy6wEqz2UIwENFOT`K)|@tY=18g$^JwsQ&D z`Xd5Ax_ATvtMt#n84A+KdfB&hExTtUD3GzW*D~2!C0`@!KcClXtL_c^hw|hddR2C| zr-<(PpTBG9Utd4dF$pf;xPw3V%GV5`b!_VhKKJ}bu(7&IAn&3+5ovJ!?kciy+Y;^h zKExi-)%P#^cP~Eo{=potym`f3_a+29b?$u#p)u=6WJ12!nP9W~NUYQl$@pdGV9!Xt z?l3^Ln3_2DKc5xd4edp9wMH^2*i8cDeWmmIkFY_lt@?ao0Be!4qiVN%P6t$X&zMNJ zzM6tmVauVO;88?|wvoxd)2eBQX!gx~opbFVriN^s`@xDrarS!e?CeNeI_uT5QUo=c zObFHIn8~bG^=>?67aZY>5?ZB7&7pr^Po#EYiN2R>sn(<3$JmhQy3gBpWk57j6GXK3 zXA1E|gq<3t$+@I!DbIc?Qok$q_X=1hICWU?afE_2s7-x~V>c&MV=?)_wQz7?q;ew5 z7alCL4d7iPeLvb^VU)&-c)GG%!&PyLT321o+24oO5nIqCr@5|F^Vf)qL;G#O57(r% zog&JqY>%t~e4p|}>sBhZqbwc?R5yV7E^p#_piks$#^2F(cVMyNKq#!2HC2djoIbnn zM}ogLlVkalYN~Q?S{$DL5sR8eUQW1jR`#Ub=q^xLncwhq?UNQwfhNw~eehn>9~ zGTw~FSlKx8GY}jAR@OK1ffs%mk3RE!f57kT&G5hc-q-NG*RNnYYaQT;4*VJ@%_jSz z4p(jIAmXRgvOkwdd8p_IuK-aZ{4oLor9}<_Q(^_w^FVZJs>ShCho4AaDrh{Av~fO% z2F@xL793{6MNoHG=|Zaqy4x~9tvH1A!PLSoP$nDtmONk= z6}1vus&FtRd3hP|%mOuqa=ifPht?Pq7t75s4TZ$kHu?&q?{2QDpi8yj5pIGB;41u) z8y|p95p`euM1=+4uT%vyim;3ntq(c|$P(S z;MrK(!=&0o5KY?@3JeYQwiWWF^$QmhTuMrQh(iX$2||W#5OlND0VqX^{Q!B_$mRxV@md#dY+^bayA5}t3^q-*wrOdd{f-;CCV#(fEZu|v z259xV^-aeTP+Z#KgfS5|mdvnZlAxRdhy_W;fsg>Ox4(xkf9o%C@#-~o4+Nij_8B~O z=6;MvnsjM;z#yfF7}s(6)LJ&YxLiYyekn4dmH<Z>tg|CnD@7~QDtDXC`FwOq~+`bAwd%8+17hHdnbE9r~ND` zaqTM=!cfYd!Q87_NF-?DM1A%Y>p+Jg$#vZ|x8fwO!3sZc>iPPfUG?Zai9as|P$`!E zk=yIFCAnWr&w1c(r2aP%=vE^;d1|8uZg~@5Abi04yN;lkt0_lhD-ac&>x%h|;6zXl zdQ6TITS@^=71Yx;X{^+`!CjYS=2`9hVNpg~5fubSbcb?%CK8PqF;Ad#QuiBDVhx`4 zELi+i6N;r$IL0Cgsf97Z0jX==@3A6?tcddrcuH2ii3uae{!yI1+E`asz+6uZQzLWC zeM}CPq=-7*>!xITkK|!qPEVOg)MvzgJXsPQ0&&O!H9Ft9VnI|8RYI5p28e<%ATr~r ze%M}=&h@r!arfRHrpn%JWqlKqwRME1`56cjCfXYtwJ{B3L=zppQPUb}Du|MTyC z4VSLp#X^*k>;?|)HR~KOy$ZY`P%@T4lL=`g_KDeB^I-D^A;X|a59SJdZ}8x3dY(l_ z4d~XJV}$iK^?)5mWn5K^)DAbtJGp-t+7hrZ2W@l?mCA;0fb!%NWgyUx6UtkE^VRB9 z16or-RfKh^dy|MLDJ))UBW84Pcy<6vF=hVeSw$fFK%EydS5es&Ad~S;uNpyCXESsiOX5tW) zWyVPctay*L*C%@y+gd3r$JtUN+cTg5huWfX&p~+&fvx(U+JL=m|Db_N{qu7JKv{bn z@tf79eTPw&_CVzvo~4h7AjO0`_g2Wd!II6!wn6NEktZNV6|gT6kexCBX%w?b0h?NZ z>V>?6>?Abkt$neh2_H?#3z=7hQJkx0kN^MxAOJ~3K~xoW)0G>y@dsb|bIjYkPaWA< z$FF|o6WCZ?=`CLJb&lrqU%PV@^ENCM(XD!qpq`Id1@3`>ww>ed&H--T*)u!Fkapr$hvIh(=PXgkpZ*w{b`->S|Rm%21)Y0&^AkDEw0y?4c*lHNH7FZ2ck2m zp1uF`v(zcZbC!V@+N()9F?)~&ek=g2_q7b5>yX=4?O(|O!&AQoxE{z;GjpmbEMcCU zGv4~8ivx^@ia3S)#yHRefX>7~z%oyOCdUt#KsU~4F<^FUYo0_Q=WuNCQX=76tqzsy zgjX>^mRJNKPEF_h_kO>PbT4atj~Bq%RzN0i5>u$A@$!pc0Y9&wF*PECUE)jt#!_VH z^=iqy5ejSF zpSHMq^PUk2t!*90%K8!fP5meQb-&?wWew*({uzAoH~w>sCMysT#F+3ezw`tA@BjCU zxOjcr8Q;}oLZM_{dRq>~@OX@Bp?2edwO~hT*rQs)A(xF7345ib0S2xw0$TVUp$z!& z;o%)d!D%8J_zFh`Q9ST3RG2MF67K!n0*!cyPd=E#+8eRKfS(kDOX}ZQjmXKunt}8V zJ5$6Fu)~U22|h?)3nS3B1ZMLK&gLAbSaB5bwKc^mS?@q`H&i%4qx0NU?MV*VZlw0U z%r=UDy^D?ikndI~@LBbc{MR+FO^rq(B8e@0dQ!#%NL3+`h*{Q6p7C-_rE0z?QbXB* z2ze|r38+b+BD^w{1XUt$Iz0i=tC&N{UW+rmkcjOzYRTk)G^jKwm9^)MDi)IqUg7O| zvvZ-|IEAtr@ipFTZ8-^`Exh=i8nrd3kaX5pB9N36Lj6(k$?MgNp(JhGi4iq1;3{Qw20?embjr!4>d=5BxnY{kBQ9LNZ65K} z$r$5NKoB^}oz#OG7I2QGa-)*Yu1E6A^yvONQ!{fsrJnjhy`5f-X_j`RPQU|fH_ zy64ga2L=U>X`2ry0IahO7%58{^lIzH&oBIA^L5Vwknh|)ig`Oy;AC(>HElanCvSW) zMIajtMeL*&eqgt*AsbT6r~Y@XPq|Wq79hy*%FO-~JxnxqQW3^G|>5 zBlzI^&SE@j%-SeN`WI{V$5%G<_Yxu{)wACL$7XsV%`uxtynAKagkp*a9yoOp_PW}{mPS>Sn(`}ydKI1hk~X}c0ss*YT__JWC4}uLK9Y? z^8?sV9Ti|aRm3V7ATGjyILlEmr{v=%1*l7X4-2Y{r3O$}=&EbUwyRvbn>xP&JXS4E zYFTkoITJkLrAN#=&%G8Ex)zNZ@QoEx&Y5;_El5E76I+u=In7*PB-|sjvq7qed!jGs z;h*XM*Ome{uHXA!mq-B58o2g3s{3%Ld!rXbnOKWdO&YTGq~4c`T(QM#?;p(Z_NANV zHwIh_V#|JYIg6uM&XN1ipiurdNg<^;xyj8F$ef|5)8;h=dffIqkfGR;f=z*Pbf!s z3L6&!dJFY+^bZF2b>JVgd~h(SGg#b+-5B}aYAcEqiMe#Vm6Jnq2zg+eG2wLhA!$?# zG*&g_tDhW20SCd<#;%eBlxnuv8}qCI@@xUq1A^W&mKd-vRr{As>1Iy2*fw7jD^sDgAeD zQBJ2wg)EK^xyTBC_VQ$~pdmuAEx>b;QN@-=uy-)SJD2YmQ2O}RD#nd0L96H}A@y@2 z3IJ&cY~bcOz$zER5@eYzUuUKOAgw@cDS$2!Xq|e6W%kFO8*oM(A9wwoG(c`&KS2j! z=HG2iXlEHNDV3sLj4yfVTiGcwXDEX&wF0|^_A~aULXxtSu)tRay<&y*Z3{3t_4^$w zrXp$~klE6~4}Q*S+NDA_Ot4U{E1Qc5+}hUQTg>330xT9F{k$L`@^jS^XlVUIQ@?-2 zvPMvVk`xvx!G30amKfltwNsw1xC5y9{pzsAF2Fs-7MHHy!N2~KuVOyW()kv1&!-x?BOTkUqe&pdtw7Pf+Ol{c>k6Pp~Gj8wwcgE$|CQ~ zdA4N8zNH4;)ztH`(i2CNHY%RA2j3U67OIJ+jFqeSxRbW(G@$=sAn?G{XknG)2o61r zPb#W)wnr8z9S@3o@7U({|L&1Sa4c>Veq?^1Nfs%uosdna!B12jUG$q|2~!A_;0p$q z|9&u?;_~&o=0D%}=o6T%uKx@KH*eZBIR3yR_~qaF$2jrOqkTbfdwU=M!|(hlzVPK& zaqZ?klpe7tK@fN#dGy)80-%fKX3nfq8nSor{CF@B1m<`>>Y!ulT%5R+03Usy*p z4$%Y^43nJVkH9PThEJ)!zW9D~g1R9&yn7SMvBF}Ejt*%r)U>dkp!X^~4u#a?;;3^y z);rm8Q}NU?Em<%*g_JnztVCYNojrhQnqi;qR2xU-eML8J9*7z%1-jP&hKg!LY>~#` zd8(;b_*m`sp{68myXz|2%iLL4TA`4V(=gJ=oKZxG^Lup9jGCOz0yo1TIeU@Q{PlZ9 zbna^^)$-=s=I#~(5nzmDQH}JiK1;bebOZ$SD@b;xUxN&FKkoxByIf<2( zF`Ch+2QxC*!Wk2-0%~SdqeKO0XSJaS+lF+O0%H?Msa5A0=uQf(h610P9%$-R%i7yl ze?NW>t$(%lUC!^b@CFtGk|)Pzth6-I;f{^5XGtlR0ml5CrBzKgdn zURIVsf{%XaNt}D=K1@bzUug4UG$A6A@Xoa@Iv+T%AR3?Qekvd(9L!pL`v>ot?XzhD zo_gYa7&Rlyg-l(%tv#_N)x3r-Jb7fN%~)&DSU@Ks=fMruU`NUdF1_vyDqbWT7Y@ z|2gd=OysqFV5qhR(%0JV#X7XLo6Hb(@5NDV>v}di1Y9J7B&d+gR@FlA0VtgjQuH6e z)@(coT}u%judlvxETGnTE)7`s>c4+niN2 zMOavJd08MV0&r|Msw!B=$K7Be(Xom3EJ#T;U-7QbeF3P(sd-)tto@F_RdtKDlxgX; zJ)%JzAU9U94E~%_3Z)nfWcxi)cn&N2S-jO-_wqDC@_Qur+^al`)ey#1)*sdXrte8~ zgc?J?3&)yJDwE7IC<^euqlZh(OEDhE>ZE3`Qizp2@thN|Yb;+X*?lYo@_HwcvL8>C zEQSKeZ%c4mKcD<;7ZbXnE}-=G;6ebI@9WXcRs7;}=dr#zSzgM3`_7)n_-7z^`A;(% z}MdtygS#Y2ca(9m;n%8_LI{e+RLh`@z z?0}4QKq`TM!wd%0!~MKqyg7}~G>%U?P+ESlRfd$Ha&iJsU0V_+WF;A{ch z>>teWXD_{l{b`<-2qO6OvuCk3X&|Hm7pW7)+Lj>uV0!=_$dV)|P)3i`YtPum`5qbg z6e)=x4I*hjbYo9o)Z$t>IRe|#EIuQv%0or9A<|$IW}2(77=w+0SQv z)t6_7G&q>f@uRnIn2Cu|)8PEW4=pnW8V3NA9Eh4)s$sRVJHLMhcawA7Eb*zWi8wfO zp>EE~W=p`K-<$H<(H`cZ0B5vkd4(zu3we+7mUz4Or6Skl##aa0?=dY-}2R13}|iwe{x zUA_CH0dOxkvr-cl)53I~C$3lZT50VxqpOS;!g8dv;V9OPlvn`w(*6D)4-p}T@;aDx z=V2`3h%H%E64bNIy<%x^<<{^;sI7-jIX1^U2~oxUY7^jIE)dn7tc31K946&7S&_;f z-UY}}vHq=0jEgu*Z!OC5rsW+BK|+O8OO9~S6EZngtBiFy_hEI?;L(SU_vh(kWexW| zatUgwSZ7m8z6@$sP{1B_v;Fo4NX z3^3qcQ-f$$H~FujS$WS2LmZ_)KePs{Wh;k}53oYL?RlTI{se$w<`OaTa5hi}kS*3; z#e=tCnl=00`eSe@4m9io{_;`@HF3iqDqdY2M5;smgna#aWp~X}oLNyP*j8U(?U~H? z%Zxe-Sr!HV-W20Qj`E*hmx%&5)W*3-IuJvL2WfS%3v|blnKpz&JR}g6w*4YS8x@iT zP9e^FGMrFZZjve>YNC)ylLrun!R~5d5BOFw6z*&G3-6x@-%Ae;Q(seGc=v}VFT5NK zRd95+0;0w$bzvt`u?-?S2BW^B(Zs&tYpHnD`+XpVJZ!Vj7tBqm{1{aFdrA+lsj?(( z8KhVX7eYmi=K<@sxe*Dty}g4!{OW6FDXmNzyzr5;m`t<^yaQj7QUXTvc{y;h14u+o zZgh4Ic|4!fk?jzYd9}LB5kuC$tEQePWku5sjILIXv~0- z=tf>baZP@F?F5ik)HB`WeWM_OKwtt-X5{8DheLu$ET@SxO{@h(OV49|eG+nLkf$f$ z8+*O9e|!%(w^>!YJfHUu_VBguzKRPMFPk;-^pofD%(+J}8BZ3U!-N@jMA|a=GR-p3 zyZnAP?v8q}TnZv&`8@W%(|Mg8Oy{_A$%)c@-&+9_-7!vODKw9^Y|(J+~5B%@OS^wKgIgi@xIu& zy}ghB_Md$b|K0!gCH(O1>u6(b42!^t;-QcJ!EUTGbV{-_>Mc^SNpXN^V-*o9fYi|6 zg$gqT)PkQ%FCnP|%dR@nJE&^@O9Az83&8iEswg{Ml~=5Q`_VZ-Jw~i8nK*C504Mhn zc*{jpiVo`tyD^Cj`*Ry0o58v0uLn+8*59$P=BT`=ogFtEo$0~(3U~zo2ICM36>RU(Et%FK*@#xtm=|frP02F|HP3i2dCzR?76Amnv zU?}V;NX6?~IMwn7qO(^HCB0YnT^FpDN^_-ExXHOUY~LQc@~#ZCR2OiPr~@CT9=k_XvJN*cJB0WQCAT5}zMr1JMJB zG=&2%0Lmj<`FGlZGm?R`06XsAIPay^-#Vx*IE8r}Sl^4Eo6lRk{?0AD^5#{esC?|q zaXfbBIL4z9c-lw%+G+qshiz&9tCy$wzppLaD&;gLPzR>%C6bkix?Sk_xdVyC-DHnlWp>5Re-k2?XfS?D; zt^cySFQY~ZdCxtHeNl`xTQtq24f~6(GAE@ucK65F-5)K%#*qa_l%m#tPSr#%foN;V z0y}*|pn_G1Yn!@G72MEXUlPI+#>>}l)VfL**fjy-(@GuEfly6Bs>cM}xU-Ef{PCZv zUIJK|jPdXP;tM#owTTckxd40LmFOjPVBPZCZtreje=78RDkc8%8fJnfAV%QEoju&$ zIWYauspH46W!qj*=8D*&rloWYb`9OH;@t#7ODB_E&!)eA?^FsW+HG-q*3;o z=TO-^IikrpCK2;q7yzXhA1%S)jsVOV3jF#xYhbRj5pr&XR>5mqDP1So{W_WVwtFm8 zcxW=jWPZ=qSX6PnVM#MN(YWcI(ubI$J`V{*6JBXo2c9 zbAoeA(#@z5Q*yF@x_*5|z*EiU&-2SA)h7e(fD=U90ly;$U`|9#Qeb0mQ7}i{>VlqM zv{ZL_{^6mHCrEJWBG_I*#F+$+r3gxsuQid9Auqf=hSkT~8nR+pS!8MG43yyX(G`o1 zLZCxXm^5^4JfN?o|4yPE6OfonjG!klrOX7=*i->z*6u}if z91%rmvmtyv+hU=6>4C39J%qQOyn2^~n_Tk;A8d9f3RKM|JcaMnBj%h=zUadQt0olI znQ1^gi&PRu-1{>rF9E(gL~^|8rF@=J93(Gx_h)$T>K(N0;;d@MV}#Hwb5?!^f>;09 zICc^r`TTF-^S||9W8>J#{_l79XZW2jyoBHW@4tY5`xmccdv{&|Y2mBi3dSdvKFxzl zZE=8YIF<~K_p|}DqO-B53LwH>XP(D&>l7foxloZ@^_!~Mq%bfY;QLX*2e?fG78Da- z3#{{0UWpoJ4fM6;dm9S@3flx*ip0F(6t*KCP~)(B;wZAs8f)Pz^Z9=2&_X8&PL$0K zPb-*I-^%NoqA^*IU@mAx%2Z?X-#s-qjXLQt2onOSElFC3m4s3@c!W>oGwTiB^{;9z z_?&p6AeAcaqIsY~8`iC*>dP0fvo|xK)vvzr1hzI-5QM$NYfXMIAV>#TEXMLRxG_>e zc1bD5HK-ocHMeV9B%j;bE}--f4?Sok;;9FP!1Gjn=JI#&h$JZhZE^j*yET>7)rq|x zi*+FtHB(XwV?k*FlD&%ab!$*q<@M8KV^YrO_1Y>hP61iV*Gon{7>oBy%PGQz{R8s* zi1ta374?%KMZud_j`mg=7TD7J)|>!ko_f^pqd*?Le{}c5WDltGskaW9`^1+t<{G9r zTdLKks*zS%3R?9nPVSAcJ=g&#Ze6iV;&YAGLUKmgE#bmsjZ(6ceUkRk)_})?+-r#BwEIP9;*zvTy*)|xAy1?_ zhjVWQexR@2Cv{+Fwmq?D*ka!sDbPK+1VNtmX;dh1jgYf|zqLrwb~1La&Nfsv&t6S} zX<{&{DGIUskm>t^`kuO0j};*fPmKlCE!6Y`OydJ*sa%sTkZ5`fSdu8E(ihyDj01-D;@^sk=2GBq4zS2{eER7!V)~ zhNy6C6TsNPi4~G6SJ_UL6FUw8%HNnkY z?>+ll`Qx0u_gcTTzVkvwR9bQ0D%ES<;hcT;@O^9j)^7-GO8fcyWN*s|fUSFmYHPQ4 zGZ@HZEcNOVwt5I^YveeDbouw$ibnZd2=#FZsmxiCD4kR83mZLT+HVc@cy9n*yVqxf z_{=_6Jy@&_3)xmyR8W6P?q;C10eEJ>IHLDBht*4o`+-Pq6&%(DS%dCL1NW-b6KEUc z4=`W9W-x%ukQ`ddKg1wS+qY)-VF)fxtbW`Ojft*&oV8JdfY!bQ#%)>5*xoacd`WfL z%8*EjY!#WBWp~lz-iJ=2ugm>?Hs3($IvSoo1%k)NL%Kwv&hV$)?wMh&ip*7Q`0(TE{{a zX)hEB3oUFIj-AUOk|rCT5*reTp`#hwxfSjy$o#^D9xsm>Ng`AOJ~3K~#AG%8ajIuf$Tib+#ug`7`S&TjAL6NtZMh$fa7& zC-HJjCT*ufD*WX~khb@yC^Yev5I4oI{h(*VwNrl=|Rua@FB54ja3p&4DFOn+6?rGAf~@YeZm3}$L!hqr(5F3%#JcX-V=-HLsi9ZH!7KbBoMc}`nKI^WO5un4_u-hw6e ze*#5SB6)}noltQfZ;ft8NQTDvG>kSv3B zVmy{xp8jAN(fiL6}ZEc+_AX{n%SfAkMyx4SfHrUydt}9$f*dePaO3pQSVF-17Tp zFYL#e3meHm-dK=~mJo_dyNWySI*wY^JzLLx*3IZ<8yNlKjT%Gg8cd(tuBqMV74M!S zvu1dZY>^C&jTM%&7(uco*W{k=;XU&w#`EN-T?kMX140*Q-Jx{>ZjGFmiX~ZI$a<+7 zI};NC3!4wX&k$e(dGmh94;Y6bTQZ(3g{swS5f> zKs$1f9XyB!t269Ehfi3a^$|UBzS=BKeJHWR;Z`uSW>{B6io}-pybPjVhIV*9XB)6iGgmd zF;SCeCa(#0_ZGPS;nU-H=bKxY%{TF6{whzVgE?^Y7+&<+AI6XV{a?Wicf1g#Te6^P zRowI7DZKHQ-iE*Xi*LpIKXpHzIKPd^+FK`!pc_YP;{j4Kn3sHtX94kW)6w4sn*=m& zN(PCNAVZ}^!G)dan(1)DvUHwCY5+8C17PXYEt>|G1grvbPpgt#LqR))jTw%D=$%(R zP#HG8>i@O=Uv}YX`E!j8Wyu%)H0VL{MKpkvVkX||eatPxIwWvs=gj)dcZqb$$oZse z07WdfB_KNd9T#9GF*_7iWMMHrR|L)>890pLkBLmuHmo*qD+CTE%n@b4fB}Drpk}Hl zDed(oV<@D+c-D}w36#-fqs#^xX-fEI3KN$IUz0+D1{x_~n%QDx)+5;J*Z z@F%mw%Jy5!^zP{SXGv+s(6bCTBx|}2&MToY_sljiz+_K>U;e&T)yB|g2}1OJ#p$!# z_~N~fyGQMYYYyY~XCA|R*1>v!4>l;1N33W4+20#ji@dk8?SS=|omh#zVUic}vYn3K z`rNjdJU-A(%yCu2ME4da6BDtAw|`Lswsq7PN?h~Pg5HD@j=x_Wc;wY#6}ca%_mLOb zNXlPskovgZYW20|xF+z5BG?*2N;I};yq~HnrsGzNPID!a-d*m zZ-Ebf`t!Kw!H3*4^n%-;g%{s(D>mmdq+xbpPwvxwdQe(Ca%vM=ZJ?e|O+Ed)v$wz( z?mdBO_Li;`+r}eFl>*!!# zGOS-V;C1?0%imkgAagN3(|NPQVtUMX~Q*h~5d>`N=)5iyLA$wVphKEb9^n-fIU z_t*m`JwKD$IPj85k5Uqxr`6lG>TwR3Ey?HCWEjyRchyFiIpbX!v%Dk&kLyKt{GIr*fB3)R1+RJ?=9~M*hVa7nF5dL+FW|5K{eO@D>9^j8JMTJA;qBaa+ zT~awWUfP(BF>u$I)V3DDELbftHfsY6RRW?(`eMOD&HT^{EgBMs60UGde3q0X!R~c> zztOqPJZUaROPrpH2`VydQu`T)3_TP9`e8=EcAR$wSK7TTD~a(M7M038i> z7ieSVd%0yf)jE#seR<7gP+HdH%2xgBt;WehnxtjUv+&Ubc}PJ!^X^U8+m!>MeewZvz&aPh1ZRVf*19(VA_M4nX?H(Po}C-jN0x&zgko0Q|Hv7))@*Lf zan;cy=!&tPvdnEstR$Gl>1v-Y8R~WL>WbFT#jo*7b++@$H$zr&!;;2vjrJ@iEOBI0 zM;7o>Z7>aBMFbo31%!Z#Nu@GbJh>Vl825)^2BNXr@dfc+uL)l)=JT=?UtqQRYTR~Kv<=LI4}B1-J=%t zlCA;rzypj)uOHLgj&#w423AkiVQwP3JZec$dZ24@j8cH~MT&^c@gVO38b2R(PeV1ZfT(+xui`^uG-|<}Al4 zJ4aT*;P%4aV;x!VC>>fk9hbkJj6+BRn?nMuFMqzbsCfL;`LVA#c;(ek>QKxlB?t}x z^L<;m@wwlCANcuSz<2-6e}F^Bt~Js!#aE6$fnWHS@57J$H~$9z^f%v&_kHR;D?y3YrQX%2SAg}FbjFKprul%rc0_W$U`hae_IHAv&?Yz!)ka;xdqNjQ8|PO zae_KNP(4DDZfehvv96^7+GRyj_FB?j;6t&VNu*e|!{LIurT|isX(dv9vB41P7mzVf zio-~H0-Q=@oGG94ge^WcN?A&=X*AiRnk`L)nAjE+Mv2~SQrapAw*mK!sdI@F=$0RI zn*7dk#|3hmAtXVh#JaTJZ_c(SX*PpLnnY#=Z|*j9)27Ua%?1gRpcPCg)Kn)0UHYt8 z*a@QVM!Pg_PNOb|2}3aq-=Ou|D3w}q|d=~ku|>miKNr|V5?y&+WUYl zMywT1=HCx)rYeFreXvK7#NWS93S!GBnI$34;u%ltLIT5D(l_qGR*}cgM&^C#*}GoW zo+&2O+a+KEF(#Is8u_`>F=qBH2!Ux_9^L!U8T{LKd?xt!zWSv%V`HN@uU+rc+8cnt z-`7gTw}=OcEt7l+^4A0q7kVvqV8ry^zEHJ*jrZK`OsJv_9GyV0iP4_h4=B zi!Y6VpEd?u2z&d;Ms_~3WesDdtQpKBXWClkp=P-Z*7~SU|2ltLA@HHl8r{Q(Zm~ke z?ipU1esO1pa~HO}hqP+4xBK(x?o&11`A${UMSwtre2-};JFbP61zsGm@ApQdP8(HS z-NbHob+82#7S1+i`Wtb;>ZRRXy!&IH#(fVx;s!I%d)6(uhp=JD?)U$R{agGV zoW4H1bzrJ+G+8l@>0E=q{^TRAt2NCGxP%8m>OoNgb&qacgp_Ic=))m`c?x2d#!WMx}wL(M`HsB*N}47g~n!>PAl(; z>oN@k?|l8doH{0Z?l>YCxxrQf8k=NMZ%9AZ*hB{=JZ&`A z=X?D9B-}ClU4yA>ec;A>k|z9W3Q@OtBM05a*QohIZ6$E_xYYPlH@)c!u^reySjc+C z-mBSgsnT_lcyABq0Cl=QoF_fspN-dX*S~K7<7^GV1#BU}u=?j+EBStAtmp)+Qf8e{ z0I_t*W|BYtXdK=TNe;t0pq(sfQ4b-McXZL_e@sgDFw|; z-l`(%K#7U97PCT@zYpiRI(=_3vfcW=$CvIqfxq|9{|ImUz+Dc|J-D@j7d-nqY|Q2f zz}=6)%w!|t?Gq-u5g`Dhj6lv5R@qZ9rkHanCKRrv?f@q5Tx*$P0d8Ueqplu-jyz)R z^_q>JRRg0Y7TeYiVfi=SzkT_0AP?G>X>T8;>;>L0*#!x+qW@Io+ zaP&zgASJM(#0LbbLW)3D8jVJ0z};E0k8#ttv_ZM|(SuaFl+_wm{jk&x8p$rhvOC4T zp8=&s&AFr33_u2hx5N5P=i7zOmsksp=QIh_9f%y`zq3$ND>^)K;xyj!?hjzmPeAYH z#vHGE^(%1X(4iHOIsh6A@_z5)e#yBK@Cw46-7P$R?jWu`dfx20@IyT9vA5`P@zS0H zMvojii1}=`vO^i}WunLh1L6EnNrn_33^G)%6J@$MBoCAA3?$rQiVdMmSt5LefV8&nU+v}aUWOi~&= z>`MbwlKh@?b|iGIG+{70*6~0JTbMeX^A8w^>rJg$A|pK`D`cc2t4?IbYzR?LvThix z9c$Gt>7gu1Yqh2+@6Tk5>aHs*fige+gsDB&wuLYk@x&3E^}v0a?WuW><(k;y64Fqp zD*G&JB#WgONJioicsq*H7?9QmS!DHhtNkD!u4hCfvzDnj#?-?e5$qiAZ_dy_qldKT z8lKqct~nw`B-C@Mn!X8iOtsBKANL+mJ&_PdGfXIutTd&|D66kPR;XFcgX z!Do1qe{F0Xz_VZaN?i5yTkwgu{TqDvO}~ZHk34|7Dry&f#Um%q;Xl0db9nQ6zJS9A zHgV&1NAZ&9UXPbN_Xga4)77}*&^{d8zlmc@I+6g)0sPiDXD0%phNY#TIbqCkzNPN7Nx z2(JX-^2B<$pOJup*>NVU?{xA>p6COJ=n5$0OoDJPXGM<01oyG2%!WBM_zEFq;;k{p zMxB9-4!NIxvYB#l>i{r_G^X7^&csa$Sjp1oNqW~*)zJN6hjW1eoCUlt=-#Vs$#*E! zfau3sRXcik?__7(>gZP|Uh|O>c8D03}NX zpg$f}#fdW)@V~$5lX&a<{|pOaciwp25ga|V5A*qqZkx`5$&=qK=om|2Vc5VlYh_|T zm$xP0fwKj88LSZkzq6XhvcbCm)GwLsgN=%~&uE`R{`v4cTK2I9U| zF*0I<+D8}D8YRT)W;UI$7pUC}7lz$!1ED(u!&>F7js}3#Grp+?6wVX!7L=+LTl3xwtRk_)=OWBjYqDqdPseT7vV{S0 zXU=Xa4)x2pKFXRwg zXLq>{lx~J=p7HD_y(jpS9s~z~`Q|=cbJJ~j_?F+BfS*Wh`#UW;q5Jb(jR z8`#{Kv96qr8p9n8Bt>B;KP1*Or?p}}Gy&n7b%`u;~7_7-=tKq2x>j!PT7xK@b}V3RTa z)HTu~1gbbNdU{RC0&5BUo><#^rupwoqwiU66YE$E^SdUX0Y(7e+{GQd`8{92Z@lRf z0RR^fyzJ|4#GwQGR=%{I2`Q5RUi15K$fU>wGiF zwlLHA%lxOy>bM8sWoOmyuOJ6hYhRGg05(=<{Y_#fE@ceCR9~qwz6tq#u9u;_7F5V0K!7@Uo-ry3Y>i6 z0)FpZ?++~SANijJB z7C3R{0xE42*I#oLX0v49O-U+^8o~AmJUF%ut{JdMnHj)3>w6|k6sO)$T|HNkU}3@K zNhwk(MAK#z6jH{_OfY3N|5iX2kg|I3x|i1iruo+tEbUjfX95-6X; zOXKb9*bFAKMmiO$CPa{|4z9^sgM{2Mgu>2<@hph;Zlq`pAhGR>`UI4+_5&3@^illK zhOJRE0Nj!*0%0z*IJ5&uI|Q@Os!_720@4%Vp-=iD%63wt3Xy``YK3}B?N`TA8i0AG zYF(oiR$gB_BQf-4w>`vRSh82VW~{W{awxO&^F^8M_-f1{bg)ljD-ry2!Fe{QZ6Y;w60g zOAn&1GKjj_97nFX9s*2+$&tYeGfuH!k z7vZ{NhZE3}0B3E;7`o!e9-BgRW_i%NlS#Yf||=`vfRn7Y3TK2TFUP38~fz0Ijt#J?5eS2Iy`~X)}Pj z`QJ*6s4fYpVt}&bfv{}(;{afi#yN101_=!t;vCy-vdwyLA z1vdd)Hf7!dY(gIR*5BTR(lEk>B_olS~;pb;+xCe$zpMdHZ*P3OMjQ}DH4fzC`$Dqaua6w?% ziLrwiUZ1_TRV#LOdwlW>591gA)dyV|=2$d!1+RR`&6v-{TrMxa9{_Fp`8*IZ*@<}h zyk!vf4*1X3@W}@~8~PR}cb`Hldjq&sVnm8z$@lJ_o7jTWS|iRQdIG$)VbwE%W@r@E z+3?7+!?|hfX`PyWu0~evgZvVunI<)t4XzsH-8DAMp*G4auYknpRN2C#M`4lZo%$aYZ-;EcZ9q@;7cvr`s;mqHiw zxoks9o}~<|jK?n6*;(MdpZE;!eehv7yn4>9H{*r3-HgqRjnzlDA$1FXpN;=NAvj19 zE@yz?lTYl&6$f{5cx#W=Rl)9FkFPv>7Pa~z-!0F$9$hC9j2Z94KDk#dP(F*t%nVg% z0Lz!#g$$bj03ZNKL_t(Qatom8&2{ZP^GwuxRXcl}+4$V5Rk~Bf}gtpx}&(VNbTl(kJH{Ms+kiLv;l6C1l}5dqN)|o$P7CB%Ms% z%IeOf77Bp8HW;0f)QjxX&z{|hvNW(Q3lY_H4e&(u+PKz9LYkwz7{`z{y@Vsn$^SD9 zBGiWhZ)d|QF0xW-sLukB?9`d+`&wc06q3O!|2Os7fg~ujuN6d9jU=BrBP7^oqaamf zhCC4QHi;=osa3mYeP#u;LvAUT5C?^o;(jPN9hW6LWdz7ZE*AGu+UkK32N@|j0l8%> z=>87^|}8=vzc ze9P;9636fR62APgKfzre`x6|$_lwv*{{;HIU1+V&b5B*#*NVO_+1uwX?BKCe7jV}D zC&&A&h+sbJFrO97X3K~E;-x+8?)4DJvPcES3qAf_5zM*{f9tQj44ZRe2w4ffvJ@VP zuVQ8;ku+`g!EZ6av!+r?8$e~iJoRj%#n?*8v){1*J_DLr_|V9FznpyrXoD8Cy_j15 z#sW?|j~f<)?Fnd`f=&dOU2a3O3sJ`Y4I|c$8n8m=LK>Uxf|?8QQ%HBb$j_H%{@t|r zW-L_)5M~}=7UUPhtd>Rrz+i9%>PiL}rpz^&?q^B^p8O|X^WG2O5Mn|IuOTc&V>z89_fW!s7}pguJYl~) z)dmP=7?6R*Z&~K#F*pA1qP^DGJOEU>CyT%D?fZw%S!md$i8^CVNKRl3C>>*;H#dRt zV*R!AOo+j&d-@$28{HwyQl!%F_eNT-rWyBOwr%Xaol2#kN;Mwb3d`2^((UEvTl78d zedsj)$#1+DU;fIebelYKa1$@Q?OM#c35cGU=pF=_z)jzj+xNDZxmlO4`k#!{TlD@*O;P}hUv18~yO=gjWgNztKhaF`8m3UalLATmh%ggM89%%m;| z&8=-J1i>aQ1O(NQ^ZXQAuO&9O&U?0)b#y+StK%n6<1Gmb z{0Cn1Z8&!HFiPp-Ju$LdbsDayt(*Fsapv})<>wZe;h_`zaqxySD8;j17k$OO51sNL zIDqS~zKVR8k<<;KA%G26?_+K6!tIfGdm{-nGqu;aSJwp8ff?qht09;7oK*~23pl?& zP4+Xj!FKdDc!vcfQw)p)gQPAM3Q-*P7MVeHFB#fd&`;dDHtao0^{rJUO}^d?q!dy+ zO@qhfy1SQ>ZEW_!^yfkVxAzmDK7-%$r{nJ($Udoj<|`)#N-Q z*7#!2VI&-+Jyx)Mha6=fPr4d4^7So)u=uodMDb zZlei_F*p*CWs$QL(!7Vug1_0;hV4~?uX*RmON?~|r-c#+Pp*F}IcYCAIdplBAZPcb zeK@P64HoC>(wdx4jprv|7FHd?O74E@h0V3xzO;w?9y&Gl9*2%ygN?2ItNf0qK=8ki zuWr79BiCGyBiCGyTVD7rc=?b149=f=9H$@s3Lg3L=WyR=K7z;ZzYAwi9>>nb^Gje{ zs{_Yv!JrCMC>DLirCo90`6$8eO@SdmDIMx!x$*w`n?8BheFY_9 z3nXBX1GJL{MKb?>B%n2~b%P|cr$QjP547dcOV=%x#c@MX^J3NkHs-!?fh`2Sb8%#u zgX#UqRtnV=W9(sH;u@m0vDS%sHVCY9_f?O!jC0NNY;z65;0F!x2kX3NLMWj&3b*SW`ixbhJSedlV{H1U;Mj|;@uy+&w*6->m|>< z0assn0P|U9NhAh*F3oFT0SNC0Ywc8G6F!|EzE!)q=YoIXac@j`dgFwHyYUlP!&5XFI8U=YuOnBKYAx@9@tY zA^6LMvRlQMdXSs#MnW)r2gm5NR#(nuV0e%DxXA8{st9$g2Bs`a%7yx`hCobng>x11^i%Us-iz|IV_z%V;OH9A0;rJjc}ypZ%ViDK4Y(XRtP#>H`e`dE5`# zeqh?FcC(a1kb72K=@LcBhj5#vm+;)1pt{f%&NC-+LV z(Hq))2fKglnZ3V<4=>GtU0#nUq&oDN?DbyaFnPp{`1doMq$WfprBY2A!=y%Cr<8Ta zHBSJ@v!NLL{XYI~rYxsxnPGC0s4If%kB0teS%M}6HEZXoH6Qe$Bt!wig_wvX@Hm}N z9cr&*Rucy$yTm-ZY9bRgKTW#@Kx90 z@Kx90`rEz^x4-N)xODz3w$Gix?xl;^KKBGpKk@*M-}fav{=k=U=J-R{K6@IME}TQZ zw~N~MsCCth*5w7CZ|=j^;VZCp=m>T%URZAQWx3F9?AyZ8>u$u6Yp%zq-u{2$?1@M5 zrTb3cxBuW%xas;UaqX1{;C#W;8@})wkbTFVv7{^FyatG4pDH& z#qT5jGmAv9Ts5Dtr5?~dv2i4BY?Arb7Bqd;nhCq50o-b%xkmzsWgVew_|JH99`E1=J~|XF7Qlie~#?% zJ?>G(F}^bfxR>R}LfQtrc`zh;-CCeUR}K0y0J9h{U&hy+p2?ZJ=REMGjV7(Z4l{v| z$SeT@gH;kBgjiC6O<4V)+J%-0S%}OKtjlajrLY=jO_Rri5cXXRSq!}YOp@*gP9DMT zVjo1zklxg0OAqwHnyDmvrA8nWy2k$-WWAktf)PKc zabbD=WKZF|$Y%+I%zC4O242k2Ed)@iW4&E@XxFqsav9Q1tbNBlV+^XLfsgU_&H>zE z-BkMj)p(hMK;<6ZGQ|(Ut)0X3i8~u2IG1h2v>T3ySUFgR%{mHhXk0F z%Yfd9J*_I8w?t9vSgwl~>But7{M)LQl<%$Apg zXw*{DTZ`6A2~ZRKL8;G?2)1iYFfGZSU1taDhkWk$nZ0d$Atp!Z8kJMn%S!^3n?06Q z8O|@?hKZW6@RZ>W-^XTlO)kSlBe)-IIvZ=2B*E9CWnRhaQw}W;cFbs;-lc7P=y!h|ec$8X z{n2Of>X+V%zx0aRu`!<|wkE|-qP4UaX$N{}W1|204|b!~uB>j2k&&Bmf@ zrtl1waUoWXeMrk=Jp=tLAeXVvv!Kw7m7E2y@(@EBO^u@M`Oe<*B?mQAfTq$wD6>mp z#uZP}Iq=PbC(%0qFg>dlz*g-cMr!Vv$KJ+7qzmW50_MZd zrl#FmufT;>3JqEZpyR^!F5dQmyYN5$=KFAAdpE5qL7WV|O6em^BKnEYfX65ePN^0NH?`7)^2Rqq;NUNz(SZ~{0#Q@|! z^%*F~N|hObxcqlQ>wMo(pjBdinJ{G+0%n_7mb#aG_-mP^V*OiZ{#oNes9S4w0#Tjx zTClxSaQfWFGK_Ut&r&NQve8l6cY>8w@j!P=eG_V+;kD+|-!l-zHI)Tw9MDd7Wh2O4 zuw=M$b4E4Ks%hNW-Nk!9aVPG3=n-dy_`GM`f*0O)EB0;divWFgFWW(<%Z@OT@{zTu zE8qErx6=~AUOj+^PhG;(uR1?|udj+zXSdxu&Sx{sXR~ST8unFD4`dC)R1U5W=i7dU zl?QcT!ip!C4A0rfj-Qz!6W2j9JqyBvwbhze=EiEt{JZ))5h0tX+So_@AgwFAh*p2a z58|CAS_aV4XK|pYRr1s|WQBe@x6TG@3I<;O%l3oTYkfw02I#o{$a-h^6LN1T98Zkr< z$w)&P>5JCzQDNEuX|2krnf;XnY6j9qW{Z~9yPDVG?)&uIvNa8Zi_D;x1cY@YokdPg zwCa2dvX20J;*%{&@2A?>`>aYU>uXziYDfrX_L*RndDb%k(GrKw9k1h#&CTb(c;cnC z_)&f~5*$o*P0tGt_K$X7YaA2!`5WIuJz(sJ6bVk`a4Y-s;{R49={fskh=XX+$<}be z_Ql?VhS)0bq2O8n?$)E4OE<{P--_7`Ad>%dbW_>&SG-`K># zE3W!;|Lu{iT&@)_`Aa{J&%Wm^ID6tzoH%_EzxjKgzzc7`9yi}`6uB3522ztBvuzG^ z%|^^p|JH)-CY;H?>4II?$h;6O2&`Q|7LX{(=WT)BJf&myWjMALOI{mHG~S>a-pZ1( z%vx+@_$Ia$IMM{aTRwD^rm>PthvhOGUuKISG^OT3B~Jl%O-oby*)`Y<_FQLxNCwJf z?CzG;i2aP!Gm~6k2@r#(65A6s42x9iPYkV;ZAsTZfa;n6Lodq_+e0z`JyH49(Vs{zV=kWhsJtFUbt2gOL9$a>Xbt& zL126G%-FEj5#U@H@6AHqhOCm%G;fB0KqeKt!JnOm?c?< zy;X?~yM+55v$Mq5Dp*j9pB?LQI(dJ4pY92Cv0<9Ph3y@@=VSNazx`+L!10sk>Am4V z?N`0@W?XmGLCj_t0gtJ{?@XXu?gj2cF>PQa62RL7nnS>v2fZ28&)GY=8n#$_xAyuB z17;{OgUaMFov0Zm@TMgDskniU_c*LkvYRpfY!eZ}yJc!rvigOs1uS#cuG`ikBMSry zgV4@5!t4)g!@@&wxP6XiWLGw=m)ci6aPms1ZqU|8GFB(uCX130gk-f@;!Qisd^>8^ zd*hv5y%mTBfuRX`g6#n$VXqAX1&}v6$#R2gu!q(q3;a#*e4q0I-|Js%bx#!@cRfTL3r=sM95N z@p8|Ym%)}}X4FFP$7KmQGOf|7J*o0$YleEQ8r&wpx)@AZKwPxwR^> z84TXeiUXtV+A7IjTg?7%Z9W$xvwX4-^ZTc@MTzw}lH-B{!>56+Cg8lR8NxC!&V3iN zUAqK4>}k*G))14{5KdST;QDh0-xGy{%~~1jY|eBs0JT;RSh-r8Z4d3?mNv7s*_YG? zh`8F*%50UfRH!D;EYBnfu+B&tNY0aG*v<&3y_^Dodtt<$RtYN^SjS<2fw(_g)g^<0 znc`urD-eejj8g>0d5P=ZI$PV(8ZINBWkfU%eWZbQnVT9UQA?);1{$0wkSbJ_hXWR% z9jt~jTr7LNjOdgN>8%>7OnqVtqslVTLJ%k`3~G||$>FG`Z&g!cq$&fOMUwcKkAEj* zGe^z}DWKmI*iH6g)g2 zmz091-|_W$(Rcl2lx~KqiuZi{Ui{&Q@51&@?-!xe?7p^HQL5o)bMn3M0VGrZ09H4C zmIcIRQzy&VberrtW*B|W09bd^v9vy?lbP6ww$ek4q!~~|nN=ewloO;KkiZ__dU;S< zvj9#cuOpM+Br4WgAVAkl>Mv6yG_6$l*!pBy&_<($2H4IGNlWt2At9OfSZQ2W_LwBA z3UFFDvp2Qi&Nnjw63s()rRL8349Y= z>sJy-(0y#!odi0L4DHd1rAvUY)^pu@t`LC%4ge-u^TgWAyqo#noMhG$yW0c*)~aI) zqZIm{m?qsax+kww3l<555@mkc7C2xaVX_ffD!(pX+Qz#+dJq1qUwk_rdhDD#yYsnc zb#HCX@WZcp4)*Vxp~w(6*%=UCM{s6h$5}9kCGi=EWdZR@tf;{wT@C2HFkrdTIhtP2 zd$;BT`8b4-WGE@lKRgeW27-(;088qh!)!lB;?K%JxovP52$7^g=b`&pbCgD%Mxe^r z$Pkd=)G9<+7_Uc7YNi_fok!4QQp{c4o#Ep4ydfEsVgKXH}I{L1aNCC3=Uh_QjpOJ-qkhcjCcEA9Dk<+irRWUhVu(KPJAF}QdbEYxw| znZh)C#Ow_Tp4`j*u#y!R+)#MhBV`P~oIaxk%)R%wKd$QDUno#msJ!j(uetvab9w?FBU`iVoplR@sNnw8{!>7%DUt0YIZz8wV5ky=S{KOqEi^7E|5 z+A#yg!g>LZD~#V?eU1?Tx9gheSFQg(TA{wu?rk}gdjx1TAyZj}SV>gh0h~z)Hntu~ z6f_QZfG7T_Mxvh>e`jS&NmAU0UQQD`56y=QY^^i)3}reWN=$86&$FFwD<`Q>>V2%i zA2L7k%p2YgT&jOhc;xiBUmUsS2JAa{7^Qpi z^Q@l&!M_S$TZfL~8^8Z2aODj*0U|hmaTmY(?>~w^yZ`Z3Lb?UKdNgecvc?PA@C>KL zjO7zKc7*r(pY(%8^4FZHZ>5dwfT z*>D)37X!*m0_3YHREV9#0j{ZiPK)(nldIPy8h8Glaf2F-iO+U(WT00vWr8MPt$H@0 z)+954!z~)aHFrI*eq)CwL$PYW50K1HVyZU}x}Z6jVb=s#>}awU(sW(u9EGA!BSQd^ zJTu~pUM}`Hz%5whbY?B6N#m7RO<8F=YQp-ijo~Rbfm5TWDOe`1nVuSGNnRHexCn4) z;{aX{O|uX{DH1~+C(r48VCTaeEBT?y2wwZ9)rPE9Sh@GGhD|{G^f@kG+QUchd>C*1 zrMKgrhfX`-?8xB*E*Mip@Z4Lj#tZMb9-H&I`8*1ifKLHp#j)OVw!ToKk_|cRV2^{F zJLKvit469W1WvWCn&gFBx9w*Tb8m`dUiO9TXfm*%Bx|x=vvo~5x^Ax#0$0_n1D$Ui zv$arYs3l2L?gG-7%`Bd=7iu)g2b@av#K=4Rj zvCMDYi?l{?(>y=ktDPEp*BnX&l}E5V83G0+V~MY;H4kt!=d#v{M^8L~H^1xssODO1 z&gXdjYhQ`O2e;65g@9MOr^7JT-ZR~FeyyB(7+N?WsW+c}_}>hVoIZeBmv$)Im-gIx zvwv%AX@^qC8&+GvR9pjD0EdSNWY6aaC^ZRd=3I)b2JGQk|Ypz+0BUfMOOT>rB1YH-dLLXpws>Kb)KPCZ89x+?RSVLt3>JsP0+W!#NQ# zmN=nLDQ@s$@z*k&2uTTxbWEFpX2aA;$ zj5*a4?5RF6);ZWS_9fAS9r3tisM}->fNT79Q^0QsP41nIRhxiifU)5(Yvvqc;zl#~*YBB(mgb2r~5Vjyq)QnmFhpP=VA!1C6>^pEc^ng!+;Qv4V zy6%=c@GYNoh1%hp6Topj(6pM6#fk ztg)ZqMJ)9tPdu);F}1QLt@(tRecl2CB>~_9P@6GNvjVxSSx}hilx_4#z-?ZjCE18t zlk|d|{cV_dsdshqKEl&^24YI1aFgV^tn(nxCeE46N*aR)W^WStds+IY^2Z=hw(d)gcVyTOmr$Sx@wq#aB$ z{GA%6it{}yK=v=_(1c2j+|-lN5QzmAQwl`>nV^wd~KDc9Uz-1Wdo2Y4Sk zxP_~a9YNn)A6mg*{?6y)*wOtc#j>F7x$fQCGd1gbjeWZ$g?&q@V}~URzvk1L8NqC! zy$X=B;Vc{Y9#rLfqE7}hv`44G#;u@gjRQ{W@gIC(r`H~tn3nMphL)AqlyyG({0uh~ zWdW?F>m%%E4L`KB&A9`WZ9_wYbnS8XV@I*GyXkG}0vph-Pd(asAsRvR@%#ya)d@?@ zGMZeFo5nzP``<#$JvUVCqT6o5zKul|b@Y*y}kES?T&sY;Qi! zmL(?-bk%_UjUHkg_=*{d+G|@3^IYKVvUpFxpKn3N$Wk4r9 zSS%ET%F2AL`FiL;O(tG2Hc^v$L1=KmqytR|5ZT~Av$f=2xs`(@hFm0(z?E9I^hu9j ziJVayScw_>XV0*+*ztk)!D&HgSS^>sRG6SuW3A+BjjVr2`ot`oWvtm3NG*m_J2FY1 zw{sV^@rlnrgx$SmuO+3!O)vN+bn}g`3GDVM5d5q3wXt;oFL?FqaQ(Bt4gj#|EB@^} z?!-s#d;q(9eFVG%vxBFk9a09AWm0Hsde+*slgSeUvYMp#1`jOzv)(W#dk?Bf=Bm#riSU}l^Aq^n7=0$f4z-Sgj>ws%s5c&0cl0Mgb zP?8q1+5qn}=4?gI0M9^<>^15dU{@{!elyUXY;JCIYz;KDJu%j7`c2KTX8!7$fYR`V zamIRXJ#+khB`KC=a`DC~6!@WRuhP@tsKmb!D(-lIpb4`<6I+%bGhC1-DdJk=vJh(Y z*L4hyRv_%<{Emm?o2?%#av_&8r;_Kw0gvp_U16og5iBe;JSx=iwsHWNQL2q*y`ts0 zyabVFromMAGY@L7dzO_NTs2;&46@pWTTMgWH=1=gtCZ=rs(ZhQ<<^;oy#zDOK-zn51e$bePI7SyzYBmj)xyT=>Y!guRes=zU)?PZOli{*SOb4d9G*VGlRKD zTbX3nv*8-fm!I8TX9H|IZ{xv3w@>cFN{m5P7BE|=H|LRAd>xwBOCUyUun!XtI*nl0 zECCv)wRH&;EzI*otht+@Zu<9OTqK7?AQ&$YQR$Ln763S4#N6)4@n240rr}rr4_h(cWS#~@ttvdte3vy*_Pf$po z5FF~7KHaFHM)0`R6V?V0ECf`SHNBzwVOCftDS*+f-IjFLdqolB0-CXrvtCpqz^E0` zDuahtg=!8CWA2i3$om-+!|cA11fVLZckO4hy^bv5HE-dVm<|ef0e(ky#6M<{6~Ho8(RmUs(9@5dHmY%ejE=!evTfl zidKM`Z!Ee7u$_2uONoIC4v+zXG?~=#a%@%e@Q;Q0%x}1wSvVl^`^~~0temqDpxz}m z3*;%xi=2}i)ini0-vBUWJusXy_!4$**br?4*qFek1w+#81YopM!=HfCS{q=QM$k0) znzE05)_fFNL_zmr#*)w8yC8-yvDYe3I17SQPRV;x6E^)gv{BFEYcg=P0e+wfL`GkK z_yWawJD}7<~#r)$T#l5^r3(-P3&dT zK_9Ir-pT``3CNa-${$`fAdU@z7*}wkl&?et;jg zsR0Pp6z+p;c?$iij%780(+dZlPu`*8e7PsET3iFI#;crJTvI4yEPg#py_)x!q~;ed z?cu$jxF0|BKfD=tKX}@`!odSu_?f@<{Wx{{EVeK0y3h4}-*!80eA-dWW|p~L45-l2 zxvyy3lvK23oE2<8Gkv}VS&;bQiiUtFP3jIH563D=VPEL;*k-BFwH6w>kQ`hrP>`q_ zT-HaX#K?xJNl>vQ4U!GQa}4p`0E4`CRL`_k&DR=hkCE9QSz8M0?JRS$Q(<;@f%X;m zA3p?W=h@^=31_ngbQNr+(`RFL8z=yD1VT6y#x!Q52d;W@!8lB{67}8;Q!N{60q5b# z)_Eg{(6IM$YAe5&UAVM^KX~s)@aW?w9iaDu+nQUJU_L%;39Acw7^ zY~D`B?&F$;J;s@>sTHb%^VGyVP<5DR{!-iQ`bF2#*UI+zA+d+D7epi!zD^o17D!}f6 znRTV+J-ORYOLC7e@ScT}C%rod^M)azMun&D`97D`onzl%dLYYW9fywvO^X+o4^a|w zU5oWQtWSN?KO11&sYojAw=Ey|qz}(*z--SXQs^XvOId?wIg6m$xDPF>-3~%4&Rx8OdmcPF z+C%O?d<702yXI>m6!R$%{Hy#m-`t1WzVTJK^~EoTh@e)*J3o3i-u{6v;llQAqfoLS zA6*t@%Z;R{u>hKz`qh{!j7(O6Xn~^C?2N@EF*Zaf*ro-bYh;`9R5Kh;0+ic_*#e+! zM-e7*h%8dqge4MKD`N?OyCl>4#;}0BgB@7H#Z#ADuaYf0hjr>thNv6}?6r#AN7fdKl{P{f`e2#XT~Y*q*Z@hus{?RBg{MaF zAf4_~6X}W?+B`*KxQcDU1FO7xrh}BcII>C)=UY}H9|FZYrbUr;JiJ!ABxgWEEO-7SNsmEi3cZM(H9hoHFJa02eRq z;QgPx7ysq|{8rri&>06d?BCkN-}&j+<0UV=4IlW(XWh@PIJ^%(^4jO&z&_7Vw#+#- z3a!bDydbwd>4IHNyuJ*q+r3{Y09XxUQ<8z4pl!c`Fl0z`MaJ_;&!@`=@GQY8h|WmW zwVGzOB>SRz%OzJ2nGi`$f{rbVJM7JguQaP(Mj&7o8-cJE7Z37fAY0v|{l9qNJOtqS zx?_896BqaPAy`iZX3i|Bi8y2l1nwJlaR~WMn2U~m)=;#m`q$G&*!lpJ+C5CIXDhAe ztVS~X)81l%FMs7x{P71r=Dfi7@7sqT`i^hIu_K32O6O}<%j&ciUD>)l9((mHM+c5C zXu#e3+Q2ZY7d>!cXBU0-=jOU&S1zA-XM0k7eJ2U9Au|H#85EoO``y-g!}B?S){+E# zajuUWNYlPQ{LCsjgh&Yk80nrTB%}ydlrG=@=+?#f47%Uz5VB+_OxgET!}TgjjcWp5 zU5L10qL1ng&Q++ScCsOyeIU(n{)V{cy_mgEFtNj#P*tV@_G;)f>_v7EJq?m4>zk#; zRF|;D3t5s4p`QyHa{G{M3wBR7YNY{)sT+v<&`ceVYYL$jVy62nk%3$wiSkA@tEXDQ zm=b%Spc2T43t3;-Qfc$vEXV`sH1_$9lxF?(6GaO+AlCNq6j;xJ@j{9aRz%qvH&Y|3 zQQSCE4EIo_UGI#0Mnz=qO9LdWd7W=Pnx!CkjN5^g}eXk>l8N96Txc=1xJ5ng+IJ_9sXfD2ga&>pZxY0`4tap!EewY&M5xaFH;AW6?MP z&%V*}HW|GMvz#Q+mfbxxpi>jt8|HfSBDJ331GC)wSu?oYlck6aVGoxL7^ z`o%}^#$WzJ{Mr59>SSx*Cf@kBegr@E`d8u2Z~GvgID5ej1it56pN;3-at$`-Gk9ry zKZ3%`FdB@5ivhsvRC2{7mEc;IF1sL8$8 z(SFh;;QI2O-P_y6sWa#Od;q}J$F5jL9~UvTTB-icb4^0BW+omxfO~ zV!n|DDD87HJ_{M^k<@A9-_6`TKI<$fMAj)vwu6~mT>Hi_dbn;vHEcKiZyc_{{I>^^ z?R_B}tcH#T=B;66HA7YZJct9KCh*!b$}MXa1`O|4`{}~$wH>^5mm2VzRau#m4CFfw z1Eg0{df6d%XX=Iy*4AaJODYY>)zun)c*|>GKmNX$`d%peCz1d%d(n)XkP(8Iti=Ov zB%ozR#^A7QNo=Etbf%;nc3#&VsYdNH!sIs&#+-R;#lRp}q>A8R8%9GUm+ggy&1Y+U zD2?A~<#4g;e9;I&7OJPLf>_&xEmc|@`TS;h0}+rMaj!uN;{mtJ${?_GSl7pzjqn+( z)^fPUpe*CCP8y(~PZ;%R^p-V$M#k4Rc#2ahCAL<`Y+u*qlqL40X-`!f_=L3k$IIHd zuCvZmBAJv%&yWq#`s8(W&3mG8FE!LAO;V>-!z};y!lhk&{_f-0*3DRfKf`|c^V9= z#Bd>LjkdgZvjrNoS+ML>67V$xxJqnz)=u~+7%^cYwmrx-nLcYf)!2fl!Ee4NmVWWg z9|O?RVz{>k16aSgI4hEp6qzMXK(i*%g4QgZcFc?7ue&CaLdQ~M21Dk1-^C`sl^oC4 zI|D*m!vGif*4pe_UUy0f*^8u6&Fmbk$1eNU@mfd)Q)qZ;5an!R*qbr|p3r^3Y@W zgFpPR`}v{$8+gO_yZ{Hb=H_*ylyV6!u>UrJu_^G)&ri1k`DgU~zOkNnaou)-SzQ7K zWdqMF99R)Te~>XfD}o(KI*_#cjrH>FsG%NyZdtIiWXMdGFlq2m;_W%uoUoO}2(%|b zY3X_c1#yb0?mk6q{ zr)?PWEd0GD(vUnO2Uo(NSSakPvB!%vYz(^ypt;&)f#5~X(*G4Wy0I}F$1DN|(lwfY z${b0RQ^TIqA$k&L88B=a(9zIRjkQNvt?5zS;_bUEgLxXNPX87YqG`h@0k6Dj0U5=- zZ=r#>XGKOElWOuddbhvZ_lw}PWrO#|GHnk&4``eHa<9wbkL_{{rU#=n{V z?TJ0ktb4u8dcZxTRcbAgzbU3>BpazQ7sFf6?;hrSw^IS#QY1_Z`F7o zyS=R@85uy^W+=DGN;CP^;W$WCe?j5VupxHeZ&@i0$CmY++5pBgEYPY*vs^etus$d( zmj8eI(jGqk`3KOivRJxqh8ypA(btR>%2OctU(naSgNO0WKlIme^Vh#@waEhS`sls* z?YDj!kDffAOvZH0^fO`kga?iR3ueS=0DRJi&`m8fnOJE9RMsy{N&1xq-nk&G%uYfR z@ZE0ob3cg%PgD)7j3?QliL<_7-I~dnY5W6giH|!0zMLN-d;#DZC@bZual=S$A?W(3 zt|^8y2^xbVEznuwRG9&NZqVHCC;p>OcBRpqO&a$=xFQ!1B1%jv`h?fW@Asjo@yG;>ZHmR+_p?H+dzBSa~+xA%%JvG zE!@y!Wl1LZ;=PaIjlc8`eD?0g+|M>Q=lI#b@jCqNpL`v{=W^0cuE7HH;)pAv27tSC%+14AYQ%w8k)Mx?u<+ zq{6cU$N@NonAhnXz`eaY!QmiPAvRxivsS7tUYYc6Z=6zwr6E?U_$svcSj2 zegU74v3gJT3Ld~YVcB+aA1Q(LRu!QM*uVPQlV{EX2B7Oo!J+*d7`=3PXl`F$HIiTK zGiqxEM=T+Ar3JV+7|t=dYhv$)hGik*Ua6d2AhD(s^5nH(kF_TeUHYb{>Qf6M>3YIL zSj(opDl!et8l{}&K-M~_0brl@#D!xtM^GXT$Oh%rVpzA*-dj`Rnrh2V!Pb)Y-tQWOH42<|>JIb#D}k{t__>Qc zzXh!A5IY-KNy}1!Ek*3>chvKA-fEG9W-Wf;vd)U>69?O)(&+uzmeBe^x7fEe85Cwd z<`&c7oFOI;Eqw1|Ykgr74-dNw)lwS4?98Il;tfIlt2x;zkohuFma+G;J!`85bUkKm z;1H~2k_I^>>-T^>f5#4?>Y5%?6D$Fd$P(@gMN4s-TT%AO_t3a+TZ$BE5T-Irgxnqi zS+z6(b5db90sLw2JAZK(ci#2r*bC10?Z?sUo{rhZzNbL&|Jc8d-Eb3L`G%jvfh(>8 z0PHP#{KlI;fj|Dp-MDyZ(ca{OtR`!`OJlOh8^9V?u1m#k*<@rMXPK`P5d1^k=B3`h z%CW&U0e@la9WqaJCf;nwQ^D==2M=wD;Fyy*oBPT7=qoY(M$4ia?Lf48HX^f9*_+H2 zcne>Ig*7MfM-M)_89TG(TiOxO#~Xf4Hsd~7gE9{_1F%_uk|o@s*`Rwq0N54L)VpQPg{i=Ptj_Qr%NQ# zO2Jq)3KXokdqX+llufOiaIDB9OUDq{=PRm5^OQ&w0(8 zGFHi05Rw^WQqZz2laV#l(Q|>sUthidFt6JTcG@-7g2x$vHiEkrP^3_~fd%RqR+_8g zMj$&0^c|HbO2f;N?7bQR^pv?ei+lgL|MW4CS(pvJ{L_1mAEEPay@zWO-q^?ej~hQ? zBricdvmaZK-R;W>LlBwe4Lq~a*5E{HU-3K)Hu1v`5^KJ=L{;NzeBqI+hK z96Es4zxLa)f8QppeI+QEw(np;b)1w3m|N4t_d{4Bfg ze9t$5=1OJlylt^%_HOS}4)^b5rP7<)rWiol0^=M!E^Z({0`TMe4SSJ{gLVsW51{sB zJr)Pj)3MYfv=ao*+wXPb=WDUUy{CC;3?!nBf;h%^766!8tzZo>CO+udKEs-Uo6>k4 zJJeGT)`~4FDX0dub5f3UbCQk`T=X9^vjiO$J!nAR}gACifvV z$zP&82)94Bdf5yIG61yLaN${Qufik)9$bR#XI-5Luf(^#hXcL|q_@^CK}p8F|E#gj zO42(gc@wU8=IhkwWGZc0pfm`E;dv{uHyo9oHR(H%Sh(;#m(*oV`<0rIU$UVy|DDEO zI^@tL>XD|UOUrwI*(;vCa0w4Tes)}|4_u`YS2y3lt>5qpeADax zDoVH97*3tt#y|Ss-i`Nu;$CcD+BFM(W@V9uhafH@P1#35@D&RSM3*e|t>Qil6(rV& zm}#qR%xoj)n#aas=cHDB8?1CpB8^hj@VlK41F;^!A-E$8ZO|oC$b}XXxXsP0m4>+h zzmfo439~JDt1;jvQD(1;T<#QtF%!_*C5N;3sJ0jKl%;|;P~(O&>}9KoPk7=r9~kGv zhO?nCsV{aCR>HwD!{3fYLW{kOB-DfN>q0<;DO~w}mC`7fJ#~-9001BWNkll_Eb$a^UK*eWz+Y9+~>_6mmr3vWK0nc z$a8}T=VMvdfae`Gq*DVuHG!>S90b1Q@;D1zd(aqZ;WV+Y#2uTE&5vbtO>FL6_jjK4 z%`CV*Iu_q3s@9}Hl)xmL7+!_WBRALsgMEg*1#r)Ur||Q?{0_Y9WB0h@n9Vx;`0HPT zH~#G(#dX&n!{aAT<5zzD_i%B0$2H2|^YYv9(&t}~jrlBCw&edN&9P)@?aTtJ#B$*T zd&?^FHY{OaBFTU)Q+iSOm@DSp+Mfj|8)X^qV+_z``4~epF*X$hwgnbu@k8%W->hNd zNCH+!iT9mqWa?WvGXwm54>}7k+B0AnUCh2$>xC_N;KTv!?rbEX-sJB|9^!7e&w!-` z&7E&`N1&q}l$g(v4#_JWJIH4pMp-wU?CkDN z%}gnH{%&n9n-1M{$Ut0dH+1t1UH?Hum#mEwZ7ON)5UQ6dlf-yXe-Vu3HWj zix~1pu!9p%w6H^c_BjvAv4yX>r2w))wnkl2e3tl+zSQU>K>^a#oyQVbGd<*gz$GAnVdBaV?r2rHZTIR0JX^;rMP-y`Tedz zHmYRFl>nuq1q;`8Rx#GHiBkfIr?qeTn*#R3p1|Xb**$@Vo{?>b+Wq+bX?Wh5{Xerm zna*Q25Fdc@3;anc0 z>yi7qXMM|Hi%F zKBOXNr6Uf)(g0vS9=7-uT-vR8__4D%e{pB*2d};9Hf(Mk_?ijDdE2NpW;yw90f&gYUX zD3riwx>oEr$pF3cVN5n!279&Pb>@x@Q4-FqFz4rqxaqrN?rC~V3qBY3BKa`D9V4*; zQT(|Y|JNtLlqR4*qAWZ#88+agqk^Wy2FpnnTR~Rb&}jtar6iu`4HkjBhTPa$Z{H4i zsy5=JJ$S`R956VEp;D2<9%+5@jA?@*lS#o!!t}}lPBKtDTYLJ1IWqm-6d+Y;0Am>g zEt#41ww}&|^|uUQL|Bho*L`9|O--i1Pc#8;taXWHkS`fgJv?K4dL5BjL(V)g=ceYh zOWEl@JW>PjZdv0|9zE?@lWmK*dv9;Ci@U#a693>=-i1H>(A|y!Ub-1x@ExzmGk@ZL z!S8oJg5BL+y#1XY$De-o%kDjn9y)*@{jL|`$bk)%qOtKYOt}0W)`Uq>kXxA$`+{ZH zjtx58djs2V5rgtVVao$^E_nNB)#aKYVxwB{TglRZhixGsxf*}W4uK7vHK@94*21I# z4pwW`4~Q+u&ulq27_a_3Sz8gYmP!QBO5zczl)2&9wdz^EE4J{?j^On9jnzw)s9efy z<3!M8fOFV#@Ra3&odxVA0ck9tYQPT%z?*PH=WB125t1-|m07}?tcA-p=;HP^e*aHC zg8LqN#N8>^9J>Oqd(}5%|JJ@$6Q&6W$;~8L=-5Cw4gp2q2!pcR9~MPQRIg6j@gCbEh3qPD}+aahWP8^Bwdz>|lVAY=C`r)Fk?Q(}+NvTkbv zzkRd_k&e9DTNa2&$QgZuq|&ARLOZlH3;N_9vL*z#EH}xL?h=w$u!i}^urVZxb2RX(ga{ajKNRq; z73)JNk=XrZnNmr(J-@FB8IF5WMowdLYinOtoWFPpci#0d7K>HyR|;-??l)kz`L$z( z@)QXE7yKoq;M$w-z<2%B-@`S}ylv%Cs`%LF9>PESoe$!{$IhZwmR114C(L~h4Nyek z8H|ec39;GKDf1!EzE=agz;9wg)4@a*&5b`FM>^eXEu<0y9BnE+12Ix!k(+J=856Fj z20@5LQ^^yuMu}23X$>HCW3dfvWIpFKq2^`S zGdw&?S)5O|4%Pv*2CJ2yyT((J!K4Mq&Fj0@z}QIopr}^S2xDc^nPhnzH!>Nc?DARK~y$-WPs$*#{dc}PYJ%NAtFW!a!@XpVV zfh|h_yu~CKsPRIO;gJG3M0td#l3)o_uR2{ey!95*mY~U z#%66?7nrG|6r9*4woa0O(X$osrlc+z&g0wzg(BV$SqSuZ4IfFN-8z{ZzXOAX)^2L( zq=RaQ`yM|8t^1PFTxe~8XAH|Mw-00Hy<@E!Ae7h9pq8>KCUgBYVdE-+L7Id!DZf`u zNES+a`|>pwRq@699>iPU`(ae8?&vyv?<-%9o3FnHvm$g3vJk8Cf3x?d(Yl^hmFQg0 z`|W-DE`3KJA%qBo&b${&rzVBLdt>@cOYLuqN*<)nnoPGBGzVGdx zXRSHsn$v)weG=L|kKWkmk}+%R8Ex*Jx|)bS1d17sudcZ(HJi;gF3Yg4bcr2|@$6;b z)dACFHOIh>z4x;4Z3eSkJ={fbz*)VmMnEoD+$6tmtyn_+HeLU&D5T>Y0aI7GI@)*< z+jD5aeg~rS=sx=^+jY3hYY8b+R*`TYW#Z)eBJt_N1KRy53mjapC$H8Bav@` zlPr*WP(#lVm42)f2etKtP5Ek&yB3*B>K zh+wu}60*kxSwAv(u36AypG=0>b69Af0PRN_K~BxW>obfcn@pFSBn{$$#1<~KOKYk8 z6MIPIz)wj)@8o{4b(3URjU_Ytb`2^Wk<@HuBfbuBLEKifN51r&eG*6$plN>-@Ffn1 z?GdKP9I+~qAe?~+ULo&V++uw(DZV^HQ_ zU3L|I|81Ybt#=(t*sMNh4Hw!2WQs{et|HfDGXXI}thCag%t$@QGaC}N-bimlX((M2 z_BaEFZNtaFG>1s(14-ybW6_hGCA3OUO?<(TfeH!GYR8Cp9La@V(P*qy)i~BR1J@-6 zJh6hBmEXc6uaYQ+B(kAW&<=DEq>6Q?6iA9D*L;!UDky&>e=X-HFG;8>eBg{GRw0@Y z8LY%h744D)fh41csan4haUe(&&E2SXW^KS0Jjr!%pM!n2Th~<)gGG?PZyL&45-@yF z{3Pp8;&*MYQ*4m3W@Y$Y>wBH}lN(P;A3VA4KRKzoB>`@GWaIOywXx2qxm62=Ou;m2 zQ*%6wS5KeOHelA;BsOP09CP{{gKEnAc(X#gWf9_!VLD%cS5tu+WWKI7IbJS8JM{g0 z9RUCR596JeeboWrB7%oM;c0lmPrVK&pZzeDZie~l3a+~1{kZCDH@iFZq&++El4pNA zj;x-I8}HtYJXPL?s~W1 zV>OnpMUvA3@)j%+i2x5z=mbTS0sUmNP+geO;1vR_?EB5*IwvJp+9(0p!@V|;5J7Q; z*xb1AOj$o?s$qm&d&RYP?7`7vTYNJW#{Uh-mIY4+tF7KEfySJVhVtGKr}RBHp+Mf3 zZa*^WaR(yL{rWzHKx_42pICbcxF%P%;{HR2@n?ViVH~*skPEpz@0_#n+^0Ss+qZ2q zAYhm5C3H^>_eq$Rv0;s^n$W!N=u$JUnrg1C4ebu(Hwkt`Hi&@U*W0$HvbEkA_}V9eh4uH_vwekv;=81- zCQCg_0I~>044}>Xn6m)V>3$BPp3FBEh#t0Fi&4%)5Ipq$vm*f#4eoyx-9@-k=wGd$N)*rqXyhA1k&qRr%YhAuOT>;)C2o9 z1ZPfLfl@6b@ap!)WGK|tgC3xqYEYh5TkI9g6OAp)ys`<5!}X@^vw3o)mJd^q>`~ z$$w}nYqZF4Dzn6+lAFSisGKBGJ1`Eh0Z0Ke_28%`UTnHa5-@vxbEBVyEkgasTKIm6 zz-X%=vDbtF?qLMUfwxIAvn1Cqd@l==YLF5zcl_VZiN z$tux90H#C_TuFjSSq;dFNzhpRSSV)R+SUSxJgr?*GBkU$+!AISm!u6n^%S(=V~5;t zQXMGC1)tV6Y&=yqp$|^~`^wa@$bNZQS8yytb>k8{0 zPLY+UNd`r?S820~JOjjM=JQUTrIR9?mDGGZ)ir(-$X*gvcWfNhd5$8nDzQy-W^Gjx z)q%L?J*uWkn~>aijd|bW`dbg+m)`g{c-sfRf_Y!32DB8M|AcSDOJ4PBIQ_hf*7x9A zao^py;bZ^h_c5P))%>$B{T7^m&Y4)6E#bbSTXFY&+YqhC?6b&|3`q!;1Jn@rr{MpZ zsdXrDO*r7HBt^a?_D@s5-~`O`M1@g74nQHVPr*M@JwWg33R9Pi0G$CK$Gyvr&{9aS zYt9MK9z&xF@*EYq9?mP>HZq00vJpu=9{(PLCaq_aI+wi_%EDPH-@0g86Y!ja!rc|7wZN60A22<`RfuDZ(LM`YXA7yit)I5e%`sJ))FYxJ)RjVNYFz;ER1cD?<{-7Q^&hJS z6XoN^bzDD93}(XvH`Z=$e8!V$R4X_V0}NR|+cAvR9;5i)WPIj2Un@HmtVWQ{-Jdn7 zD?4*Pb>uDV_n8SSt~pp|!uhPH_(0q{(s1;0UO#VkB5trlv*H3TPOyJ3jlB(sHewik z!1D|i#=xfE@xZ_RT$2rpRhUnJwBJ|#_pN%~llKFd9Vgao{iO}T2@uuTi-0RZRQ^hX zh+~Cp@B0U#DHoKuXNy%$BLZXg8FlMILYSvh&Gd6aFUvic-2?1|S|%dWWO6rJz8^GnhA;^Fy))@R}AsOF8E@w&*vRpDNHrMyl z-$fci1NHW(s(Dt5BSC7i-(8feJaint`Ie94^3Pt6V=MDU(;*E8(G+o^;AjE7R!vwI zH0|^=TCvzzpOiM%2QXz(OWgc}4N38%xS^5Fl(fJDQog6ZM+x?>A!L8&M5$%{N<$MZ zNny}XI5*jEV*djBN_HdcLnhJyXFDoD3fGQno~nJHF&zw_*hkxRVeu;Qa8N6``}wX1X;1q z=A@!p8=KilC12e&;_xliwFHFCfXw1lSHtV{RdD^+58xMm_rrMmhrc`m;KMWh(8oLp z-~XE5#o3R%WK=1vtsKLZA9y?Ny76ka1nk+l1225$w_@w^(uSH*u>a6Dto0og-J0yL z#vhVHC`Z*R?IoH`KWH-Tk=+9}MAImZoi}c>f4aRx8_zK{b_1x*imRYT<-IbQo)V)H zA4gexvLi5!&Ip#RkwR1Q_mxDU=7`rMoN-(i=LW>4;5%p6z;#8J5WKX;jD*6pm#?fA z>_4;>QaTEff?w-`BHNM*eFQk%|EIBDxW;gBgw?qBPXJV*4S2Ps?0>T0;B zl*n9jy=q;e3cSbl-rU?!X)C@Lm6(Rd& zcrJq9ErA9O#7~rgA|Bjw87sZ9`Z3q4R?K7`8~+hZn8l|%qjt-D^IM9*?Nxn?KyybVfk{K1P8La+^-^$}-*!BiV% zfuOcV)kYo7;J#n0y#1X+tw|C%|Mj3F6kNf?z8e`b!p0 zl_)M7h;80KoAxCPT2{)Psz%&Jy=^o6QyzdQu;nXW8+e2yVnrYqJ0gGHrD4a^#75At zj-<~ohCmMM76Z)G_mBV2gm9c=K~{0&Yj(cwQuedggg8-}j;DT_g(sSb5Hn(^MGP;R z{C4|+Mq5^whlXU0XG<>@UsRe>Mz|CA`{#y-yZG9?8o_uq$%^@Juny1rM{DKn&tyuOiwoo1eL2aX3Nt+DW*T-2{X; zHc8lUT6Du`y0$kcBp%lc^gHiXuXb^bJllL&l`=Dm0mLPCk_#3F@~wJCvoKC2MxDdI zN}_Nvi?pypMtlg%xXAK7)OnBcg+Ues>{zxpG&^?esm8|Gs=71Ppxr2)TDYf1k4Nrm z(lj;{|1e&^`T$0>>Y>i~Nva8Knm&^afmB^&AB41t@_v=}m|)I( zb^e;eaallo_}Qu1?cvpC76{LZ_d<$xzn@K`%vNo}W7YoNm_n+0qqbTv%jD+ijO9QZG@{5Xm z4r!*scUp@o{jO4IC!!^nYqIU{kW$EwTw6fgg?4p*LdSwvwuyC3ks^k5BWY+i{Cash zD_EPcO~!Cf^j=NHM6B6wR#pnWdh1D0-9r16RroH!TUHf%Z+^~@+=r5=ovObkBBTPf zpt|__D1dWB1tIypX0@c&q^9h^2{TXUPjEZkdpS|YO@l&I1lr#gnIwRsG6M8(oF2fx;Y=x>CB z2dgIr#Vh44uxGF)e!UF^;s`QRpCL0uy9_nYiyH7x5|t`h3ZW9P%@%X9Zi*q3eKN7t z=X*@3NwUd@NYqa1aB+Kg6h|Rgpm2>j)L}OJ#0GK4EEX}U@Rq7v0^mN8`je0NP}i`U zTqK*a_Vu|0J3@c#K9@yIUDi?k%$9IG$thGDd*PFA+(R1ts!h%Z`bZA*Gj3JyVk}k| zM0B-b-^l-<-Z$7fA_9k&pbpP^qEL6!CoQWIo7-g8C2d)vG$xT3k{#L*?X?J$q(9PZ z>QEE1cM)zxIDuPZkk?Jw{otly>^)KvfrS11$@#bYfLjaE5EN<@gSoW^lo^wVLBviB zWTZsRL4DzxNZSN#ATdf(b6X6fk2p{86X*JT5l&V~93r_OQ%WR7__^Hp>_?8R;L59S z$LiYpXDwZahdk;D*s^`+gASWL0fPSz2ExyM)D!UhSH2c|PCaYf^uGADJMbUg^if=O z!`&OBlA0(|vUJ$20BMcnXrd(G%}*Avm#oaIjm5V3;vLdZF7$~HBdEw@KqT>7MZ=eH zRLIQzcn`m)kdoGd84Q?9mY6G~dXWh12cOi;E`^vlCH1jw@L@(^c_dvI6=Mlo=^6rR zZi013V{>Kiat6TD4HVO65`rz+kFq9Vahd8sd`MiDRBj76>yd_r&lVFQ9KaHa6bnKz z5D&5zK(gVGVlof_l@y#zh_x&hkZkfm+fR(u)q)EDMsIahpogP^3M!(DT_v!-Z zo~iu(sBh;&HpMAvI5^YTg~&AS92;jbKA{qTc3x*hvONX{gwOX6WuHdav2EVZ){kLz zt>SAp?Z?ml#{2N@%fA{dP|myLQvAR#{vOV`=y4+e4gkjw--j#S_J=rd$1U!&pR{K; zUi9rx#qv@I9&5hiz&5P)(jZ=~GNa}DZJJK4@mUG$rm^?n5aVE5fDN!zshQjGkal5> zWRJpXyG-3Gl6ZX*=pRCMLCS6edfSGHZJ&ZaFL`|0y^g1o9AP~G;cI@s(Il&31f096 z7Ev8L#@k^NFE7jOJr1P+>#OOaE|&(C2MOWXOY2* zc%DqK(`}vi7$20oDXCfDf-i?4y`a`g8pIKFTtBY)yvG->xgH<5;!_(z@*698DR}l% zo`}aj;$c|oIsyP0Q0Mz=qgk%2bdT3$N`i@W0-wVk%Qfj#msC~M+M7K{Fq_R#N=ZQW z8B&EGi%Ucz;1j?HX#hIZPbe$vX3=^j6`~YVYr}&FT-yi>Cb%x{lJGJ`VfC7=Q=EUl zl3KEr(_%;XjnzrWVdxBiUgNW(6s+oOvx=FFWw3!m5CNy2c529My_Q^r5K001BWNklZ@ni?QvdKLfL&f8l&v1=za-IO;^D6z#U5GTv|nduUnA5E0pmc%f`vnH0Tj2T!k zJdhR|#gX*B_Z>ctPyhYR<3}ppY<<#p`N8D}egXvlC-~}?mT~^$F2(bH;x*X1bN70C zTq{2O$?Nf3Z~X*rz3V>I$|Ee=*en)}$^*H@02&~23s47A+X`0{WeW452r^@^k~CLg zd=3c-F#Ngy2e6!GOyKx*eLPUG>)3u;GWOC?d+SWozl7F?swbN+Y1!*`1g$0&7Qh+V8NhZcn5-veZe{Wt2If| z8r$>*uZ9tNU4KCv132y9IQ5yECn3i zw{lV(u_CL|&j^k4MsIH)ie&-&Xni$+-^20Q#wNF*neKt_e@@h6azSsABdG zyZ#osuPvE69mDa}iod`1PW;TTzZW0+y5Md==^#SfUCM-x}@_{JtJsG#P6WaQA;vsmS}xco@6!)nL3OK0K1mEbFLl? zbImn*zB}8IWKSL~Cdih|Wi&+P+1k9rP511<+S;-?raq|`N?zxwHi*}ntmAf)2mV|O zsmPqqs|60{iL%#>mXC_SZo0NZkfUk@W5(yE$^XM`wt&+KYG?_ zr{X2gz7*THZCSUI3BK=LvM17hH4p?^6SCWa^Rpa$l(K-#wIKTX{!lkO!R=bUG@C)P zy)mqNmYAQL5p-5k_I{1wz)24Kkyt5)X+Z+AT`*o^bsz#MJ)~$- zJJEVOs_2!1VA=nj!!i?6Az0g~52R-z&#rwuktm#1VE4}&KsBwa<9o@VARm?djs1cx z=0;-Kp7WBBG+7XD87JBzsBPE7Osv4Qb4UBVea2;hfT9(!?rTiWDY3PUwOz4fzMb4t z+DF!Fv6%zPr<%{7yQvlu0>u4wk(88~!1mn!&I9iL=Q0sVX`G|1ukZZ+k>)2bP&p{! zJ9-V{@f<9=#1lC-#FEwGtGL`fM)6^o98e9u@3=-H(nT9n-2wdX65Cw5e_j1d z;Qq$X9yzv(Yi_=0T#vSF--*3vob#Xy#XJFm{}X*}+r1ALKkLPK@{4|CRH*f};vIkU z75vp@SK+|@$CAZL^T5XdkTLMxMUXcDR6U~V6A5sfg|GCD_bmts%bGE%tqr740OAbD zt~vYc#`=2Gm zfqMR(Fyh|Fu~$2G=9KF5hN_%^eiRA{)_9rt{Cclm^g|DS6m8Fe3*l@&LlxRx6~1JBJ$8+0sE zl+2qN7+>&Ng&nKHxp1{%M*~nR6f8O@th3jjnnl@Aa@X;9tksBBcMXc~2$b94N*>|O ztW)5cGFCvTEjWSk^9@!k)9V)ky(Kh-k)TxaVUOUv9b5Jab1o!1B2p7?QDBvb+Q-Z2PtTzW3h09cy!tjmH28_C$EW14GuL!>&DU8U;xMVu@zNeISf| zc2u~Mk7Q7G%)R}ARiBT(yrg;&iR8qhz$KS0F`SPz-&ome-BP?bMGGcyZUl!A#x}j3 zlsy-f6g+H4M%Gcm&Li9Z6X3zxQb4h?+Tm-r?ZS~`TM$$^_Bm7A*k$_TzxHtVJ_ii&wB>W zKkE$4I-%#$JVzmzi&buh*mb~&sfA?*Khe@pdwo!@mIk1)0kCb<`j#vmgE8&kqC4mCKLE%&0)pUI|^ba<;a!@L(1GIDS zZ#oaw8gH5&^mR-oUhtN1g2@+Lo7cwLuGnl9E9UUZeE)hPnQE9r(dY1%IR%R|cq+Ut zQ9@4WqUlXZ1W-H`(fRtw^{k}=m5}PeLz(W?Y=SQ9i82pm zp*q%{kFbO`iR%CiMf?$Sk6(i-G&pLf6_7 z&OMl)_Av?310a7|-;B>YDwnF`~4Q|nKCjgOVOnhP+BLvvk(U_3{ z;c-*b=nIEuP+{+i5<_sL~sX19;G#2p{aeNG>n8-Z1Gct-iVcnRlJ+Gx*yrkz^s9>P=!-2va+B2v7-70^9 zblkd0YPGDE@*vJ3z(}ODNfq2_0X0o#eHMvXPkAD?Y}tYkXwG$+_9TkPn(R6O$gFg8YiBk4Y}WupcoJ{A-#kgU zab`*}>$|nYnHwN@PC;^|Q5$rAWSc#~?Xfedlm)-q$vqqF3ZqDNlO}~~hQzKQyAQIu z#nh|f03Azu6v{zRssl3*@yrJ{@jur}H8I%^sW$4IN|OWL-#&mI?pfn$S+rU;AgfIDx}N z%=gWHe5#i;%}TKuE^H?<0q7MRhGQ zB#O&KY8hB+roLI_&C?q0n2qw=O)^_ziuPRFGpROuj1u>9+ZnumB~iutP3y3mhC$qbfK6hK=6O!uhSm-2t4N%uf{_j z^@MTLyX)Q~_|3O`0w2HfW*j{}UknDj@y=H0r8XF`g5b{?Sh{TCWhTES0B>mk>PUbs z>zOnoV2nt5q}rZwJU4uJ0sIH3#J z{(`7Lw$EKnp1;z#-#`FFE3Bk8nzD>I+AP%4d*?;}MhkYg{O}g}NwObwwk;L+c_yn9 zRwE+?xOttKnv326$E`8b=mj1Dj7(`XHBf~bB~UPBC7^q_XZ-K;bJDVHi69NguiUSD zQ>dps{*ow>c-<-{3`&x5-a0AcH=5VzrI}grlw_Tliun5uui$-GT#Fz5<-fw0ue&<{ z;E#U#3-Hqa^EYwoxfeJO@Zp*qK5!2%d+TpwZN*PoJ?yMA@tmhT4qKLI1klFu^ZO3% z#GUu;T2Od{2q_LYV}HTK#v=f6+8~i(K)Z9YDj(U8`oAS@Y6Oi*7G_BF0ZW4 zaP1xYaCBuC5e}sRAUEn5R-BFvTlL=ydwrosl5$X-|8#HEsTq-<5jRYRR>T|?{^}B7 zbU3#??mK)GfBLQu;_d?n-I}|1*G~NF?|B~f?cTN#hRFn7ArP=7{NOs21E>oYho7}F zG)P?GK&j}*yM9|z^E_TN<1L@o5=o6EiSKp*l#Cq`lVEnL#9FHaQG{LJs`nCC&B+P2 zxD%_i&jQ=l->XOuu?ji&3{u$qnE67$w=lSFpO+*PLB#tA^Rr+l*w_{)ti#2Ciya9T zXsRQtneFpw*TtaJuB3WRCIH62&*}bM2a7$3+R-r-0-7uGU^P&HE(;kJJxd*OUvl=~ z#wH*b9B>^0>0b0XuU0S0r3Zk}xu^CpmFwNxy&r_BP>D{_HbLvW%M`Q*O@p;K;uDM@Alzh@%$ zlUDAW?dQ9s?l8Y&L(|>8+(#=sJ6)_c5V48HqI;f_V{2FI@V=m7| z8$EoI-yz9s1ROELXt<_Xf4%#U9LE(`-ZW(}m4b&o_FJ&DW!r-ihdlv;|5Kj)ZiX{2 zcr>2>%GctQhdg}z{!O**SxUIt+6CQWV}axRyvjLTNPJSkPQ#$D7^jngat)T~bm&Jc9KM zOw{Hzh#+&H5)xKHJ%PCW=+ix^y?sNWVG2ZyC5R0s67z2nXvkF8u}K5GwF%poi2Hn! z+BDhUS9k?sPvEyEV7HnEsv5w(B(Gl@3JN9zD;?Y1kP{U?cynFR6_ri|#EhUo?$I#S~yD(c{`#CYU{kgFY=t?iy07IwhMiXQ#yLKZPs@l{iha zIj`bYb^`A`MEtvP^n#U@f@^Nyi`BJli7JR{9pRAFO5`&W0<)-8w!o$%kcVUM;Vtm8 z;PFfqxS+<#Y~`FlBby`~K8L;M*57Y!t;c1b{sKPn`7fC@PSBNt?|S;Bc=Y)X!P0Db zx^`m|Jo9^y%NMc7*TbvvOwFY&q8&*c)tcXD-ielZRN@)^SJV5W1aAo-jTJw5!oa#tw+@vNO*5cgq!+!Rj{J9hLuggX04RJ3C5hWua&Wi5|be8~r zduuqD+H&ru|Av0R*O|UcpPbE?xt&kj6|^&g4gHg2mRD9r8)<1sPod z;3e@-$lZ_}P;_eo_2gL{%iwBei<5+$di#guXGh|&i+!|`#Tr_Z5%4w^LUvxxZZuQS zZ{{;j`3oGpo&xG7064X#CM7+^22unr;)<=6Y3I$D7-K-R6P#ck4ad=OcV0Rv8x&QDneEzGq zjqAelwjDU@!i%xIea8t9{KVHk{HvQS;rz!v70-Fa&tvCFr;b3*7p}eozxW?NgwKEV zHmuF7FGRI9I>Jn((x``S!X{?GYM(b`%>Yh*_-n!-RGEqIyyxpCpo=abt6D%s z%f~Jws3f_!cwACVF`Oyi_!;M-+u=Ivtq2yPA*d1aFSY!mojjpE#fS582jt9YN5`9Gn@Oaq77b zAFaiF|59=9?Kk6NfAL22^ELNx=bv*nzWoUoV|kWXLIfgneJwt=vJJQ0yOToW=4S0- zJEWFc1c@KDBsl@eUMWV6CB`C&M{>i&k4%;(B9Umc9=gtJxJJTk1W|ed)B8xO=zJoj z#fBGgXjQfs)yA5bG@lFe9jtO%lX?jrl*&RzQ^Lro-r>FYkF6A3b?ZK?&1Z;#sfncp z+k453nmKLwP&d?Js(ufW%pgiJ-HNDmt4RoYp*ls93Npt06$VnQWk-q6Kw0uNg|=!3CY_QnyWt!K#Tx@JR$x#FbYK5} z8PAa6c(C|{ zy=r?eLJ+$~HH0Nn8US=AAepYAw?kWG!zWY|vjtmJMBDQrfz0x?qd%T%z}tQlLpTD; z^ou;L=T+y{uNwqhPwSHyqIa;#vjPS0CC;EcgZDLn^_*vu_nc96?1SNbpY7|;xc)?N zUP+LlRP)&|VCvnZOGxXa&(oGQQcc1OsRyw(YA!3K5keWlvC-&p?ejkO`*fOP!oSl~ zkY`E4y~$EEkauj)#)KSMu}E@FgWX{(*P=A~#O%6dZUl_^$buSyGG&B;=Gv%rvVJ$~ zVKjMvzJCkhAvM8Lv;i!G$eoN3s_pYPTBd2l2(0ILGxU^56?aef2>B-tVDB45mIiQq z-Yf39_bBeTXX?Xt?mY!N_nnGaB0f3+f}i+$Kwn#T?#2_J|3mohpZXPS*}ilA@vIe> zefkFc>VLW%*WR)p*^4TB5Nf?ToDV%j(Jcq>U0)llH`H3yHDCxEOg zDr}HXmja2=zp!ru*bY=*#CRtgL25H1$#utK&@1?!4QiZuLf8O)M6_#I6tq0ZTi>e- zHuaip@=WYxqiH2!)mtEEE0DG|GOpNMrSIR%2O+in#0Kzq0=;bzkUEvM2hzQV<+}fM z8Jm&ewKTENVY`w^!EHk?y}!2)QYr?FwkmVKrcKRLRQOqI6jdKEB{CzTAPWl~&cm8h zRQiS}vnJ}3wIx$g`L#qcRc^YTv9f&fS06@z*Vg8^;kJW#{U3i6uls|`aQ~4N_i9_V z@5D3y88~_G?v3Bg8hG|3 zUH{zo-nSJiYqMx0V)tCl@(mbxtv|_9`MVAkVJ5F5AIa z4LCpCNrjT@@@{vhVZ=iara> zg!9-T+6vShxEpJkev|dBMq+Wue#q8OT~zONrXDSgCO9F0q_peOVZCypr4l`HIULLN z1X)G$vt!FTbf@I56I=pII2KHu{R_HS<0nYP|#u$C0WT1P>Iwx%^RLNt(3FtwB* z4`jFbEfPp{%`$_6H+R7lsy>OKe2};mUG#|+RyI8_t8-;ogVOtST+RBxJZm^3Ymus7CK>{!DhimXe56N*i+tf#cc!!p~eQ z0GhH3#?L!T0Ao#v8Ni1Hqy3s`|5@{W(J7ow{()N$wT)46Ju4ZW!;_7=09!z`&`R+s zN%|0NfbvE)u7qKQe8EB_Q9*PEKoEo+J-&i3U3&+PtxV#Cvo5?C%iDG|`>zuq_=&Fv z288d}g^Qo{Vm#@EFGshu3=u(JEB?PLuEBr&%TM92+Uo=d?L4pgZy#R5`j6HoedJpd+u={Z_{U>a11_VugzU8O>t z6~Qpa6Q4r{l_#*48zgA}aJQb1UMa2t43ABMwQ8}!p-NUJKo)qK z`Ax=ki~StofaB?Sy-MAyr;r@ef?yT8FDA8l-aJfdtD(p&1d=G){`V7Da(uPNm#@1U zKmCUH;*a0?IUGIi72Ml*@52j!=Jj~izxrA1JL4hE0<88u?!M(ZeB!_Uu~UJI2rhis zxp?~HFUD*(^ZTe~WFrSAb-3l;o!+9t0dF<2uMh$xOb&*$)G?M|Brn|&P@d-`ngy`~ z0A#=@r)VMoc1)-5;Z%(y@I5nt42Au0!^UC9qbkfaK5lGRBUmmxi6zuDk)OTw{|w`* zN^3snlE?(mg|TgJkjyhs3vRe`7jC`Pm4SE`+?+Mm zb4`Pg@&C6&Mu=!-01w%M2x1yA2RiG{`w@bj)tmakP4;oXU?Asj1!3$zw ztz8R}pkD_rnA&Qzw3``KIep$HA!lk$@qwD9B=!q7a92rDXr~#iC%OeO>~Vzr1AZS# zJh;mOQ3aEo@Z=kZp1C!v&-Y-L=Rl#$n%ob%MnInphO_Teq7qY0_KhR?d>)0mDWRmV za3E$iH8N!fq=e0MeI_uurgireC|;7awuBl=WU_j)e*8A@GVhyUYQ-rVhiy%K?P`6! zr-?mHEf}&o+V}9&v|L^ji%7nJS3RDeO3e3Ach#(ICh( zkzPhb)nskUY`_)?$THiFnjGt9duP@gCDtba6t~Lv4(U`}n&D*wvs*cK4NOBd2f0-# zqpy`uSEzo;di92VNjT>mcpU*nL;wIF07*naRE~&0@t(rwf-ZWjHYwOnm5!qz@6nJHO zO$sL^@<{!-?x=$CMYT8uD#ix=;Gtu9-xb&3hkx-Mc>mvChqbx4%-MIwL-69Cdjp>Q z!k1&`zEdHkUB>iltN84D{~Y^oy}^Bdd1(nh_=0C+-=3ZR9E=K|)-yj9^@k2`#~lZ@ zQ=!ekXsh^drMr_Kx3#OV!I{A;5;U$alq%24Bm;U`izhebl#rjUNyOwE90*TV9w&|O zSbNMT@NXO!F0m$13Uv$tqLS>VS>RlzaJ7M@lra*lOF-aYackzy`*-2Mq3sZrq(NkY z9UlDBHL49bfV?7CUbBihQ8h`n4{~Vh27oXI0(R6Ws=vo=NNFl2uwsfq=|4-ZO%JUV zx8HpbfB2XG4Tq2V@Y<92?8cA1^m*8|a|a|$cJUtFB{iubG}5|{!>)Sd3iw5qfQg!H zB&a4}y^w`MU#s`lcNTWpgcuUiUmA`7;Qwq@gr8jX#=v-E5%NubmsFl>;tmqo`LYpo7KKIub2F9c1+%S?`Piq15w0^X`A^FYzgOH zvBy~~?A5N-_bKlDlxVdhOLSd{oYvllgG$N8Oi~ahcU!_Hn}^a-ztROTe5(EC@b+n4 zDu_`&hK6^wpU5jgpppfi^Re3+(R+aRMs4naaW8g|CLx&naA!Z~_f|gp}_8>?h@(;B@wt~H8HOP!}BEU zso&EST>_SlnJtp6rL>oX2^Tx1o!N9~qfgKM^4lV>%!WrB!Y*0R^YDI}Sr)ahiIQMV zEGp#ujBFj^{;S6ORV1miXsr#eyGcHqv@*D)@hoO`tt~8zdyGmGq}mWm@UyU)^{Q9u zA3SsnpS$YTu^;YcOE~AE$6;y9))OH3iLY<`OGI$`c^BaYKlM61>S^DF(yfD2M~|=J zP4D_F-t?}|Z)iGu8@Dl$<4$4tY8|zee9+F9EM6 zQ$#Q8*6~=6MWAhoP!?d-E^0n#z4zlv_&#f3wNvp*1Ds&+mk3yif z($A|2q+Fv0M_quV53Y==3E#k2^-M|C;_*D9Nq~5DyjMQib;k!^PC)Z|GdG6|7ULxK zu#2+s4+aH9hCl>6=+SO*Swqs|8ox zax(5cw1;vNDuTDP9j6XH@0J+r7KjNXdEO);1O{NTN1DG9a#U>HkSUJXuN@7*lLMvA z8W3uN4u_8(#oIsp30!@{&F)!UTAJbIFMcl0JL?q8I&Ody@Z^sX7V@l z7_E(_pUJaHL{UmX*A=(V&HFiGE{rSy3hIJuZbtYmIc342(a)AFUaZgbI0<6cZX({C z?MQEcXaaFTuY*Ef@{MQDfKr{TO}{e&(S7vU9l<2B{IQ zhi6-$wNl;EC%Ga+?T}d(wQ`TL3Fa*D*G?4{s@uA;cJr!larP*KD8c5#3?dLON|{0F;BAS&@&7E+WU7Krm!fP6+cD%GEM z&&pnxb1pQgaWw{txAtWlTxi#habG3CmUCP(JSSv@w5AIaav>ID$TLqg@85ZE8`ti# zfYc~C(H!0*^Bu3T#!3V0Ga$J~oX|y1Mg-7aliIW<*SIv+J&j~)inW+ixho4?G9x;99V?3yqr#zjTf*q|At?hrg!u_&duy$Py55a0RQV3(0> ze2wOIRND54iY!4p?6fA|mxUl??!(U`pcw<4`JHB)e+^2N$y>W?tO*Zf3d4fB3|MEX zL96^O4!F+No5A0^t!@}BP&%~y`!fp^d%wkyPH6-;3EE?aO2@sKH~*vrx51aw_i2nh zZ0Cy<7kqyex&=SieC%FjMRpa^L4PI?`OF2u03!;L^7NFTb&}X5nk8|&E%0-H)1QahEtfFHu62j z@pbd(5!5jwrJ5D)Sn!Oq-!B#L+6wtJYEWloK;F78;0h*;Q#}|wDzVDcOsApFT~2mN z)?i!3qaBN$jh}sGb%yKj+>7HYv%~{l{bv?QL7b|)?(9P?Kid z)?H!&`x2GE7IaW;)V2BmYRJ~8aq%^`V4Zj~Uu$b~%;$3gvbE7*x2Jl%ecb}3nl_02 z(Vx2`b#>=!X$OL05;}~^#2!9?m)6k$%t-?+0$Wv2~Qqf*pP7uswUuRLcJ zxEheVryAG;>QnvA(|d5Q<$-mcq%4?nXZ-I>s&z@~(Kr#AgOWnveWjkp??vh?%Fw7; zk@P4`HrIym320Bl4C_{h=v8f}EsV{co#qJlOcruz0O63aV%7sk&?DNbjN~3?$WTqi z%3^C@ClYPw+`bk?Ol^Dx4KWyq&}>anXDV`OWPD*kKe-@mv^DJ(>YFUXsz$=uS=I3C zW#UH8BWc;SCbg1QMC)K654-03KFQ|O%wja#XF23s3Absu8En)`$5z(x#cOVNe&DA) z^g?Xix%)xu2Yvzs|7Qz?&+w3MdIDbjvv0sz7e00bLJl4}j(_(@m*H(6{4x&Qf6NDF zh0*7lj0z`bMz^Jx>!WA=Jit#-Ux246!7ENEWne)T_aYASx&) za!AY=b88YuaQ~4NeB?9N<6r&aJMiZJc4hGYUfQ}1Pk!MK<7Kb;e{uFBFL^-zb6P9z zy76oH21p@x4$J$d-pPTX?OZUWyr0y`sF;D8&a z98|xTIwg}Kt!?8YPjN%pV zNP_UJQWT{D2zIo$n{_<1nF0F+ZxG9M1%Tp~{d@40ub+hDtIMQ(rRRPO2A!LF&DxK& zGBKpF2V}mPweidoC>-_|wz??`Y5{sp%~Vs_R98oyo$Iet>m2(J9>Sa6`Fj{`|tfP*2unJ%%tC>iU1!Q_Qy@*6$K<8Qn1&XDa4>Vru zdqkTyt7M6 znTjZ?upqWoNRCzo1Zbvfq6L|%2gB{!Jg$#(19l5pB8We?N|pu=@HXpL3czK`#iVx{ zuCu#lb9x3q>l%r4c#YJxjsHljpsdoh5_W*58>K12uy%UUlbpp7WHskN`a0IC{&gz7CZ7ul)_-=I z(ORwypnv>)QH&wdHGss@s2e09D#V16wSCo=VI&fl28ognN*$@)OG+g1;x3LQA0{7g*Ty)GLSt4E85CV^89v|B1(X> z64_^zpy?XZs2wbTC5;If`+fF1b;>HX80qNv#qU$2Dt^t|d*~tyvh{PYvbF`+-mwpN zAKU@x656V#?AQ@OE6Iof0=}hd)H)?;)H8CYB8GWV0~KtJ5cb$S7_Ai`ovE^>_dIrd z1@F21llbD**SU4B>pHyXS>KAsUhq)NX6#LF*O!uj$XKwC0*lA0v&K3bVOBa%Eu!6f z952mg&SGjlpRfCZXZ6HrH8j+cU2ZV|q7m!$TNheDkkwmeE zxYh(dE@Xv9>RQWPJ#jBt(rYku1j+7*>zQw04YhlkC9|E z!GP|4(o67Km-Hp0D5~?p$6?aQ>;a?doSx?;IS zxCfBiPB%`1l4{-~9`_JDYBO@YvJ{DkqCuK0wBAIrM%4x2X(i$}+j~j_IOP7aHYQej znjEPfn6~RHTi#i*p|dlo9{g4McclqG>qYLC(GqLN(V~g{vW3<`a~_2~{u5!NQ?9o} zk3t^jpmh=roS-hKOnf-Y(S*P*4IC-UMQdfo6)g7l z&umXh4tCqm8VGV}U?bCe9Xxa#S6+SFxUS5Wx8U4IKM_k?wmqn^))OH3KjW`%wuJK@ z`xLz7=Y9=)PCI+t*lxY+e*D|t`2arhnVWFz_-bS&?VnRMIH<8LQ4zuE$d0vSphjZC zc_{7@pCbyt@oEJQ(rJv@Xv==UJp6%)SL8lvNEYA3zce&WC1Fo9Vur8j;Ax8HL( z_QINQ1Jn)zqMI|11jc<>$A{k3kr`Y}m;p zd-i-j#}~eK1ODQ@A4X5U{f~b5!|>8)U5f2nx0uJFq=Z_VtS`wmV6ROJq}N8XDGTZv z&V?ySo3(zAmZDf*UUJ7d?-@WZ9*nhWX0>WByRI%G(XE|?QNl?f0K6o9M4@#`BDt2G zdnM6{Hfrdmy`Ddoiq1cWl1;@~Rr=7!%*{PnBQe42EPG&&)+Y0uII-kqAQuQAw#rxw zGAfHlESYJno$MaMp4(cZh)9!sBp0r1!TBx$)*7~JA`OyLkXyC2JZ%Sm?_8ZZ^%vRo z;rmwN=WGTt)>P=EOg@a_89`fkg{ELYQz2M&HZ7CLqcf^(wrN2i9f#U`ebTX-n$~CI zSg-P2jNv3zz(w;zKFs~3PVFfh@&D+|c~;_F$R!{>$d3vd!(ZQkR~{fBVZz0;)L)*ZWX^4aG-s6#PNfZz{;ucfWq zaN)N+6VLmJ*I?&Kr;gvh?(6sBwZDHEKJ%5^aeS2)U~U|x!MKKC%!GkcjY-H(L14Xu zl4SSL)EoAceeu#lg+3Rn#Iv!n)FVlA5F%~VT4A7QH$%dkaYd@mNmbxOu`xp)&;(k{ z7Nri?2H0O3fOt=vg*4s+3l{yX&~16RO`pq#&G`4oKt2x8kOTna#XdWaYCzAvc}+x0 zl9~K$?1t+z28OI(~a~9qzQUC?cb>9xC{>{&d4AVyKZO<#{_OHvm!esB$qYHg26r=X>2RMj?eLJebPXH*S&P;ub? zV|d>uuEon=^LG6C`@iHo<^W)}w2a3*PX)o`v=CWp7-2kGOMI zs6e;huO9r9%s){RFf=1YDKDc1R&U$`x7@QESKYb~M~`nu@J4n@CM8mz>ILZ%;4lmD zB2ayN9+NB-CY7}{Ds0BE)BRKlD9ExcB--k@W8%HpHiqkK=RF7R#~;7reYo%N5%($g z?AnQ+_<}aTFRQ6;|!skV>+|837 zK#Vs(huICEZ;94K6FzCdatj7oun7b(r)o(eucT`LzGm$mLN=XxF%!NN1JuC$Z1o`h z_!)XXEij({Bx}imR0ePhqNAD*AS-U?O>+*a8vP+JYtq(Z| z2MHMG0dk*V#nv!|YSCFv`~({v2F1k_dkd{IGcuGwZ^;z9NGxSrlj&+KTg+tfC>+R$ zGgCiljr+7%0*oi-3W3*}_=(dR8tnE=i0)|9mh}N7bl@J;5|V5M$F_bBu$GABjASAR z_pwA+m(-ez2r1+uC1(rOH|oC@srNuEUo*mm-Z#Z#N>aBZ)|5mt#beK>yvKU4X^G0% z#rkt__~;70c+Kt3s`BJ>&coInyHFnBbnXcd{KVHk`fJ;+y?D|KUyhf&>esP#=Wd7y zYE@kMwcGL9-~St2b;I50YXVl;W}E%P9qX8k?pdF!u)t=&U&#Zn5V$Ul1x^#|6rgFt zB3*mI(`-{i1Od{*B?G_(xldEZd~2idVOtWUi`?j=%SyI|sl@PLRocMU#2!Qwz_sP^ z%A0>_oF`^R%K~;24Zx0zT!i9{LA87n$^b5_cCPR$4^~Z2O|>7L%mGGi+V^Tb>cDGj3F5zB4Ith*|7@$c_9Oscl`5(& z|JiI}Ktf1S{7hCUW5YBxQTbcDlS-B{LQ3~6RUQce6vHrm=#jnFow@!zCBk4#XZ~-2 z!b(ejM&R^b?IeX73j2(A1Tb~3(N_o3*lUuF^ABo*iW_gc55N6qe~16&_3y@)uDvtZ zpKRZ~56}7We~a&Z^>1yA+Wo^+23jljfBgnr`Js29lCt!PkG=?xKJOe99yhgM0jymF zg=F%YZ%5oWn!NiC@4_wncPAh(?Nb(nb|dJC6^jVcFg3BG`yjO;5Nt2(=e2vKZ9c5Z zDOG0|B25hNG>+dQg1}?AYRyObIec%l5let>N%Akkv;qS!JppGWX)tJ#iWJu?s~xVr zV-M~=xC2_3(Nx^1CQ8plFfcwF+NedO(cIT$zqbIq1xX~r_%ZyK4}Kh9zUBtEe$ToNFMj5?;^K#&gIPx;zLduK$(m(p)G^jp zP7-2;y{?5whkUQjZD@#uEP}0Dws>f}R%lf~B^Ons1P_5q(&crKS`w9%bK@G`HGsmB z9G`uD;6pYU6tsYtYD3t-_eYZ9qZJ}G0nZ2Eb?(%db-j8x4aTrLzpe7=HuG5&}5&&=h3iTNGs=P5D=7vtPOktOr zTAk!sKjJ1S2k}arkhHlu@!Cx_eGKHZ;vl=%#+sg|4SQshj`>sz_uCci$>vIXk|0cd z*gZ^{tTx19m=5rP?tWsBChgSP-DNcu$gWMiP{0P63rz*737WRg9oKdlIU{C25VDR6 zp5UN*ut&@QNJv5Vd0Q4(>TA!Sc$c_FGH&43az#2B)DkYbkZzi4aH6xapx($b=cEBH zv+ZDQ_Vn@fOM-tadSCmzak#S56j%nJ+vldkp`)w#*ynB^0?>K=RWQ zNjx{<|BbA_WRIKA0)W~UpTUA6V^A|@Rgxx=SUu$?Dtmpa zVldu=DYFzxng9SG07*naR5RWhnXv_hA5rv{4Q+Ko%Qs4cg$*kbGaHXKxEhO89*e35 zw70(5*+#=aIfpOi!F`jzbL*Z11qF5n%$z46W4G~|Q&XhrsJRD#C!iVd%5%U6XLiOj z(1WP{^{hYkq_Vb!vn}j>AsquRGX=N@+c|7=8UdTeGdIs7n3OEj@lKz!5$2nK4NL?K z*U+D5+uYb`1c6tqXlR~>Ybq|l$~HPRJb!r;=m{YSL2*c)sXkE+)W#YqbPr}WDg4Z{ z=VC=Wqy-C#H}>n*4Zs{YbYumeyXtoQ^soIje*MiK$G!I*^Y>OMIO`D?<44}`7Cie$ zUxky-dKkK;<$v%#+0WPTm5;v<2X4Q`6Uke);Kk4SR&3k41S!72o50}OXc#iz$1F&0 z9aOsa{$<>Ga3}4FG{(y0vD=ebnP)+cJ`xNA=wp?5qZPoMJSfStR_kISRP0{IwhYNg zE*jpwu->}K_-z1+iviIr@KqW?SN8eo8f2+Vjje7*Ob-Cf`p?{Q&u(0O+bJ9NCm;nS z?`IY;Dn4*a$Uhx?ep^`=tR`;+No!3Ad-mwenyhHg7HS)w^w2E-!T_>kU|+1^=KUHz zclAwp*M~laIgwS5y5Kx~?{l8E{;W205`@+pYE}n3AQ$Le8l-u){#wz6wX4}IBd2WA zI0HL(?r?SVeBNVTdsMa0L2F{6Bw`Gu07!FRIF&TtFT?#g-(j`Ay5GMjoMSrl$=)>J1dlGsBwkKbN{>cN?C&u77!T*DM2-Y7|(Xi0pf ze#lynSmIwz&6foZRuWhg#DK}n0wl``@;!-Fcw2yZ>RoDM4d;8#PKp)-miK5Y*SR-{ zq0G^%T#dM<7+`;v^qVb_8UK50(uM;Al}IWeS|4RoQM|{|^dDNJL}sBWaJdIcHmoe< z67kRHSih+kNrcebB)i4s%pk5~u71*76bX&to({w5Lq>xaNG764R%`R?vUQ7_P!z8! zcY&eVlo!|KY;8j|O=chCEPr{8t_x}=Am-Td^kC9cXhv%Hk=P6Zg&uw~rUksWtZg-l zVzMAk(-){J4%~MHpa1Hu<9at+TE=;ge=3%@KDhnB0bq6lUViX=?L6r;JpEt15-Z1! z;FIrqGy1hv%=?OW{>@d`yK5_6^~2wW^UvNpZBAUIjbL#Sl)z&;_WL3Ecwqez!E*P2 z!8iCqiUzybr>g5#7|F1(W`MsYql$Jzv)+2O@xDS0UAAd+Bg*HJMubAR0Tz}FWO5^-ZfN!)qX#=5R0xi56!4@PolrU3Vs4Gz8 z`L+IdwRx`X`J4)C85PFjRExa>GoxyFx(7un@&HAkJxNdvP>$w#or>Kl5q|hyuGsMR zfNE_5-nKaAr28q=zJ$LIKktiad)*2F`!KINEEoLjcm;e60u^J=GK_=HH-3H=o)Pxf zR;>hy}>^Kl4R+){p!w&VJ-2|7ednRmI^0cjHswwl;UB+$uw_yMMJ0U3X9NNuR3sSFqDG%VD zv!lb6Y(;wC@JeeGyqH57>X();w=_t6+c+XolA3EGnG%+-ITLw`S_RjA{Vx1JZ+ScJ zKXTN)?Vepb@nhffoj7&hPL$GZLL~BfW$p=9f;Y1pTD2#re(X0967cc!eYXDoUFmSz zzTNIqtj^Z}6jZI~Lin~_&+W68d6Wv>hxT_8m8kX;_-W7S2cvk#ytEJt35B$FwNt^wN{n9rx=6FaVx#Q;BQJ|C|=W=(cBQ!`rUlV?sB**3}4 zn+z5U<65kVofN#S3$Kl0$VOZDs?wuS5|YgJeiC~*kTH6dE^`zA~XNTbeS z;f^*4{LTQ*b3`wHHQ(>tIke&Eli;N-v~i%T40Wfvnv~ZcD?D+wNKO#LKi?Z4@tO!h zgoGV{_4yuNb2_d{LK-VlQTlfczc+pMp$5)+hq#Y>@Er6#?#=Sa;&n^Ij`}m8ovnjp zUCTlXnRFe_TjsM&Yi{P-Z9!}`fTn%UoY0}q@f#(QYs@X^@@JUql61nKfKkb&EyRP# zF7T5vqU7%)@%=LIaNR6ZL=u6-@De<&l4Q;WTirrrKryeCPgHw{g2tL;_ZNFV%c4mZ zq4!2oe<+&SIH`4Np?kX~`-LLQq*+<*al>r~oges?9lLPqLmrOV@`KwC`~(R8Ao~&# zoOIU1@SGoiH4Y!R8(+HY-O#?r%36;%zvoJvyk|Rp>Ia{K)Ans&_fS>xU$ab|aC$fr zpxg$-5aY(|UZxOl{O$-W8g@?y;4)DnSYUQidBOn1ee`Fun~E!@7%0~U+blWguG;Vk zd!PUj+fihTS{E8qAy0Mh1wDCehQK>W0yc9oI;DQce=qQg+RXPFp*Rs~jB5w>Q841;9lz*swp6Wd^EA9*OF~RCZ%%bwOQSH_Q13yEj0Z(|5+^=Fo54ZysF;^`dEdx zeP1EZM_aIZ#RZhTuLR&x; zIv0cD(0lW)_3I(dZ~V(o;g8<=IUGE6JnUz?PdNk6`q5Y6@z4D}>^b$!f0X)r!tHuo z^XbcR$8}%v_6oBOFM0OUv1|LbX{~WVMWhn3MY33x9}#B`H1UmX-_LOE9eZ)X83(at zX+D8dLQRnanKSRyLP2k=kY>W06&_gdJ$i53RJjH&yXRXCfdxoQ^hI}50!ztjw?Jzo zfLoV*&#HYGY$0XW2nux(yw!?34{paj_ix4O+Ez$9fufNx30~&hfY|?c$#ZMQvPTuG zwY_M0N&-=}ZG)h!m0U(*FmR6s`DoXo4qkDWDJHr0sW^D(DE{P~AHa>b-tL~$uIuoF z-}P)f;iB`gG-Kelw85rU4uZ(WA6Ws|3f@N2INF-5r~9om2uma+$ok*AuHcltd)B8> zHa=FZ6@Bdu0ZXbpcl~NxurYdm5^(6o(wW5Q>HG>=eei^#5Gc7KY-GDJtvQGjtQm{%$1E_W z^Th53WP8$0-nQ1)d-NSQ&w*1S!cR@k?u2qcpt47@W&5-=8t^|4!17;w)l^SCxfT$A`% zLO49HM_C_uh@`KYs;O6~|WQ_`SdU z6wW$zH(vIfN8yyc+o@=1`DaD%Z$*VDjoY|Jo5C`|50H9)Qt?WQpp+GXgoVulz#V*G z$n?Idb^Uj<(9bab&!Dzop`y|$9;l%iH<60mci9vTA_4sIptLm9J#fVg|DIKXPk?Ro z4EKPjUktsnSeoqQRFq(G6PB`+SkUZnc$PL*J~}4Gw|u(W1yxE;IF&+4fZFW3X*h2= z09ykf&4rWq*&ePbH|-h<*5Ng*=e7mi2jF~qT^RpyZ->I3+_p%cj)T<|t?^4FMX@d} z6aWLNTlIJ~WI!I!=|8gsOO_bUw%!=~^Jb?l{Pkzh#D);5TA$(0D0b$EwoREmleAR; z4n*q+YyfhFET7u}fJ*FAMi14@x3uO-@bq(9=ZT7TI*&(=t>H`8-icrNgUj(ZpS}TW z^Pcvx86JA^lklSd{XgKGi!Q;|9lQTQ;g{LHaP+5XLGE-L>wMM$xJ}N$qC=^#Fb+WaW4tmUT~Bu==^69oX08Y1U!yo*f%C>-yJx-lJAU-&bI^q0kM@Ey&Nh67Xj4 z0|NRqBkP&KZG~jDLMrlpZ+}}SCXM=)! zRB~sN21Ky92^>rA(YbKSdU&sW`{I#9;^lRkjl>i~F7 z*LSaw)`W1B@wKP^!Pj>hriSb@;{_Ae1~IP-g@hdfn^zO94nehUv^cVTsHV1|+&9Kv zJD)}@1cY~ij9BkyXK4GuYY-f*A7h88d==`eX2}}C{rN^eF+R&1f7cQPQo+mHVhm{X zyC9%k8+(-cHE)~*f?w-gkUEJ!tc|P#=qmxa#gkyc9uE{&$-M=E<$(wU+2ctBvu%CL z(~%D6Dv^8(ubHh$$a`FS4Fpjn(+XA9Ow@p6FICfLlt%wm<8i63?-Sx{Ew>N3sUIuo z?4uQpBRSSz@8F>oeDrfSpqguZ!8bo0Tej`^hI+PtHkj%OSoy&SgwJr!BQL>s|8M^u zXFcNLaT7Xl|1tdgKmG{befib6@9;{aVK86^FCH7-OEQc_3yt$yP*^!&07>wK@t~3g zsxlqa;Obv5C~Pz=lrjJi8Q3;@e<%Llj*+!YV9R?BNfAu`uI6_|3fihUA#k>)8@Vq= zN>C2xRtj*hX~)V`^U#!7gybQbA`!^rvAK8*H3@CWeET#2koNa{m|=sm;M6OcCU;{j@cp#~IA}DEWZG*pG$z`3zOrLr3zO(+FOH-un*cCOU}b8ftaxT0 zTPCNb;!>;+uT^ZN!LZ^B(zN+k0&=Qf@1!92bj>V!Vkn#{u>asuy!#_x#Sg#c9r)lU zuL}V9)*ZWW=}UhMKlIu^#QBeZDz@#~`wbUUT6^5`)z9Pl&t2i3iz0&OKm94#w|j?C zFBvjZ8dD)|j8Qz`FSCa7rP5w1IC^|LzIOY`SXn7vr4xW<@mUoP7#9x;x!~%Kj)B6k zrHgyw_Ir$khwm&XR;Av7$4kBQNCFyaKmOSOhaY9vOIOASepYk z-MtfE`TEH?d}JH#3uP1Xs>Wcz5H85JA)rZwk~F_mw>d&grm2AJxs|dB@yvU$Z8p1{ zv~z1`pIj$u+N6y4(Y)_*)eSe}t?&K-R#w;CZE*U@`|yhIeIEAh-honPXa{v0WxQ(4 zoN@Id`)c;cC&7lF&88Nt3V((y^I-Cr&%E&Ap0}l0hwWRIHXiwjfUdP}2>jT(1D^B> z%6Q5e7)d2wn-$Rqmxu&M3^UPMlKrp{fZ7ufL3NBOh5Oo&&1}z-bpTuyB0XYOL9(9M z*KHD0h1NSEi-JS}Dv7mGAbPT}Wm0So1mbYqx@P{(s`%EBDjpqJR7ly#_bLH8O5vRL zIT2dZ#%zh=bDx}LR3VRE5+RM}VIE1Caos1vNoJ(J7r#ClYoYkNewwf?zR3bc3)Pmk zR+MBN2Ze*z(D%eTv5c>6g&otMH3+5h`ZAyLZ4)=XW@X{aWSdxntxA^rqoF^KmWp;7 zlEp;6->IgTigo1#-23TP)!HC4kProGL_C^Igth{qk*u4ZjL^D9L<*%xF12! zzx|%W_;-Kw5q$J>H{r0t*LCUXS-_AV*I!%faosKZ@oRtjas1S;y%*Qt>ixe( z1ba_E2QT?Qegn^ctRjJ{v_kHhqp8n(BbI#st@8=Z#H6nz%zaPI8 z_r3SrGd#oIYp=Z)P$nvF&|{z3htwHRBAAAb8)e}Vl64w`Q)EiU3Y-}P;{-??XFGN~DXYk*xP z>{97esQMaIlJ_v7kIaLkB(q|Y?g|M&N)t>b6C?$K~11?m=Y7mVsm3N)d=GXEZ)7Yx!ffIfID z4PbOlf`bZ9^ZRe*DY^5>pRdjxqI_h?S(3?(gmP=v9v_T58lCRQpwKB>sHtR7p(r@wG34jmat zwcB=|hTUh~>;JcR(+Lp##Otf}Y8Do8uS+h&cmB+O#@1b@^qa|bHy^++{Lb6)jt_kS zM^-n+D{Z5T3jz&O1q5kR1`ZG;Fofvat}E>_5fCg?<%}dsx(!yd+f2eJKIwNlsQMla zfoy+V)@{|BY~jFd07CT!R}3hrf)VkWi?-q&wHkA~S0Ny=Qr&YBBK4P+lo<4|>%kQt zZ>abe1!N}*lClX5#|;`&07wpu^g=qwy{$@6y`yiLXVD_LH9kbhQ;5r1$ zCFm+B=6PC>UPeIVn%P-`)f65}a3VG$0#LlIfH#0=)YfEB5P*EVHgEt-GC8iWRPj7u z28INBiLMi{iLGPPF=>n+C~kW#uQ4Sy67-@vwSq9l6Yb*{V6Fz;#zThBAYK%B)tuZ=N%=6q)5V(pl93NU+ng;b#?Dsl1Ui$GHZq&nXe)MucM+yPykiyXDKy#$>gqgkZBqA zHJw+u4nMH36r6|8Oq!+i5-nD4Fa{PiqkRCmwH|mP#(8UU87;Rmqis@3*J- z!Ae)Pk-+K;oQVjiGLo0V$JLT70jC6=X{H;f(0hf*7Qn$H>v;D^zKCf%tQq%s;HB8K zeHT)5_fXS5p$YyC{#x3+6%V}pDL8ohEqLc2{{~hM9e{}73t!%kUw+xUv9h#)M_qCb zHm@wii#@l1gc2g+oZAIyt{qO*rcx?wB8fGbw619+7ov^I)B@2PY0ej2F%In<_|z86 z$T&_+rA+$3i}cC`frfcSlWhJQUV_3ea15G?Gd5sz!4d$WTv?Ayts>3s>{{h)0F{G^ zJ)Ftm;5aUdy_;0<P@d50;^N3-812g%P z2Y>rB@!03R5WCMl@2kfC?p_;ftN7@fUyap62h981w{F3=J@OJXO*6j*fd*l}mQ%3X z>yEOUJb{}|-;j&HD$y;1eFwH+t!;45Ne8j8AS1=0Za(R+a3P45;+G)d92EY*%tU+^<5*73O3QC)C{2e z_u;VdYDV42yIv4!(gZ2luBq%w?eG0!J3H#OZ^ky&xB#3q8eNh+IXYH+bpd&JylqXcq9C07bl zdA?R_2{WmXbMmmR8}mCJliBL~IslA}a|`Dx8qku!JQ|h}FRV{Xrj&(Q=V=Bx6dF^V z7J6p_Y6|b!gIZOY7^z5WRSG#;GDfH<9mI*TyjMgliVA}1D;Rgfo>oGzfB5Z)STX?2 z`uws2Z0#O2yPZ*IYcv-USh_Is>WT9s3wqn@n9_TN2s-G!l5E~)3s~&QG~}wu0N{h9 zV-BP%i!V&O7`}BRAzx4qNPZ>Q>lt`-<8(sOWhDniz7nsWCcl~AJI4`d`_JWEu>ZhOeB?7X8Zy&;ANE)* zZMu6%p_~B0?*=as!KUrI@W?BF1WTK?;IDuC-(&6QVUz+~b?xo=ncw^y{N@Xuh{rwb zp4hr+2{AJ!kVe5wqg$vlWSF)l8D=9Qt{4^@h`GrbCAzTgx+(|~1X_3!nMPC=0aKx@ zv@3>{MNmKnYf4bajLy98L3zXACJ=f6hzDJ0ng1Tkoan0kjJ@midbz4T1PHA$IO*KH zS&qXSJ&FRA1$9$OYwpOPvt|ekPUN<=)@oZ92U6Er&NHA;LhWCn04icl=xgU^rmv0f zYiwp31Mb>jhMu?7m_-&S*Tn>8vJd;G7}KA6M?fLa-7~jCU1KE;W2JLy2A2%T)ZE*1 z5P-oX-@4c^uw)`h1^Yeeb@>!yt-nqnmSjK$NQ$H!0+6{s2Z3dm(z6InDY-xp0e49i z?izpW(h^wCY*1~;HW@yrfv}Qs1%0m`~Ab*)Q5 z--oGcqc7A3Uy~PLqbN1MB`~#f1xy4WXfzjTp3Lw4Mmxc+cW%O+hZg7HH(X+CfGx96 zWChGeogCc$o@i{1`B|uSrZ>t|tS=#*(vC5%b)t*0C1jr z62y|)s4T@q3ir$`IGd7SabaTe|J(1p3pwWzl0vP(B13_%y4S#-r`{9#bLApXP|Ovn ztO=19hK`w=N{c#~#u=?{3#gRdNVW|mfU+HXUGXqtW%o(G23><<2O^+C&6m!AuCNqa z8s9)Vn0W{I$LMI=^v|~#E=tqEgi&*13HrK0zbhW}m)W(QF9wWF%&derLa!K9_5`gPP z1LcvXxd)i0ZNaVk595vRx(YA-vk&9?TMiobcPRzUWC8bn$fNP(=l?3sIRAlI+PpO= z==`6*+UW*9`~JVdUHfh|@2@N`;VG9t0*i|av)^^Cfh`pb0`q0viKI=0IB+)LdbF=n zyLoAGWOXwRA8m1LU2xjYRm?E4LNZ&Kz#9U;d!VPpauuv^UYOZLhL$0)C6#y~(ea}1 z-O>4v&cE)roDII zC9nJo+)vYg8SpOv{qy)s?!=}%qKHEW1WD1L=4DOH~(aYp_871y|?-| z3ay<+f{{9MyLhbc-UW3dl~}e!uQz=GfQz@V=5mpyuK}XP92H_v zs%U8gy4$h?$r;@Cal24QE_aPepEqgCP`(tZC_qIsx9)IJgC%Yv`8~a^MTJcniDP)5tpoXS@loP6 zpyW#79l@Sl)M;_YA;;Uby-~;alxrE_xdh!Y$##UY$DPwoM@1@;JsScxdSMAlS`!_6 zJ(BL_qT?7bfdGH!+s7DO!QrFF@DKm=C9G`>J{66MUrvDFCthC{FG&g8 zcAtjJpYt|j$Pi{{m7oG& zDj=29g<{q?8-@)V;Sg_k=YU@3WWK$sbF+#4jG<0iQYa&V8s?w3Z7T(37We4npk@Nv zZ`h3m=tF?Of?49&F9b|TcL&7Eq4ehq0`oYSsOcCBnOh}8vj+4z3o-S*bczM_z4>J^;QXLht-){$jK@yw;xxbGdtE~55__NgzlVZH zalvnQ-pm%^`#$`4&}{F%7dyOn_he(v5b;`m)=*WHUUy`s0vBu+ome>*L<#S+2L5Bf znzdGIZTU65$Q;!0B1Q$vmT>!P3(uY`K`@945W($=6=NBbRU41KF{HhP&o&R_(j;&9rE-F~rx&x1V`j6tWr~epsoq6t8 zUH(MBjvTxL|Md1ZAh-5BF1qjexX(S#n6tpCW2f*q$ODsF7f4Gc0GbOlt$n5?HuyD# z+G0CU_8r`geFryV$ChI_>!iD|Fi95hi8>l|tGfe~sU6p~eQF?}h1XQh2o2C!rbEld zAQ525<2ftMR}Gkg=0l3_Up3*$zNK}ZtZuXu+;M0T2aYV_$m;T(EW3a~yI<;icBt!L z`&&}aw)KFG>$oTgHNbV^+&}k-joJjsZ39R5sn*o0pfBhApwujGldtyEQ^E2SKq?NHV0>O+aHpN$x>2 z__TpM%eXjlh3!ggl3;0Z!Ti#}!$&bK^sGy%NSbi5h>8Hb-m}z+V_MftbrmzW0~5K3 z(*b?bFtzT;p7eo0N2;REI|Vru}md(ooV)XIKSAaP33yVlcTYJ=PnN| zTh@d3ZDoA}#gv-aZ^>1X7UprWmj9T{@>3(P1P_!~bIDvOxY)vJDdHptJzySnBuNEO z9T>l}V-LWxCi`d-1LqsIlXU>8Ju6)kkOaWQ<$G+NsdG|mehEi-;x1%saw(=G*LFK+ z$|*qv9`qnJ1NqV$wtAVB*u>itc!s>w&dV8*ih=M3aW`yZV+j|R=E~mI!m{WC=?y2z zh7sVL<2n88+o13nouj(8QV<(>mr#KqT$f9Yga-n^HA9+!ZzDei8*d|#k!DK;Ljsp0 z@{2p49DwhE@0yV*P8Rr%I#6q5H11N3^vBgbI(X<9-utmH4Fo3<+~=WJU}@8qe-T2{ z2@w3m>;D`G7s1Zc&c@}>eE~|zc;9PZHV48BZrpnpe*U-LfnU7yD1P9{7h%V?B_wJO z>%nEyj#mp3K|p%Mb`Zyy69ZiG!ci;$Y+Ar)z;h31J1tjRWgD&qjs;Unt3Y;m=X9sF zM4P9GJ$4vC>qT&2s11@P#L_lQZdD;yn?Rw>B9aF2ps*15Jrp8@oYsA%9~7{#R77^I zX_h^n0}y)v@LAhCW}atv4jQPRt>ML7%K+wD@Mkb!X&pPBr$2D!iQb~fin2;(!R<`m` z4)~DRh{XioHDHC>`wf^QIJQ2;mv6lbulbu#;g8?+3EZ;pup9BIX>j^^55SXt^8d#9 zmtKx7yH5TW-S2YS;-)>H#4Xo+#=O6{uz;sN?pv{W(~4aS3+$fKPplLt=BBkV2f#s~ zWy!{4VUS%Y7;bRj@Mau1yo_Djj^d16t5|5J-T*1sPd%fTBne6$Vb4UG(d-)$X*45X zfkVkEFuSs$0)YZMdr6h#K`)8sWz>#4yw)}*xMBY$99~^O$qVzfNrAgz5i3>ZIy|ru z#zDFpO`l_A%p7UN5-{nEL^b%+TCLui3`M9*npKBL4hxdDxE75M&2EMQ11)&AzCOj< zKJ-bv{U1K;bimIzWjB82IZwsTZJQuT;`?mQRTTvd%d}JgpCGB{bL3}I?Ye6fZxTY zlOSf%`;7igsemUWOC`w{+l&_mchR(PT{UcuXISB=04+6%OI{zLBy!q8o~OGGB$e0c zVuC)l)-jg2U?jnMpu6EvJb}Sn_J#tax;S-e3u9q1MxCSUkd2Clx^sE>jMeonmBJpv zV{3WI`uZRaq-5503~txg9PZB5;4_cVN%M1Q)o*}w{BuxPq)sg=oY?c$;BEG?gEWJL zky$H1Q?ti&AitX``<0GGxyTkte*%W3?(&JKSc`zg z9hejwKfX-esIcs9M*yMk8J0M&)umD(m>s{(1-I)Z$P8NY4iEG_tM6k_O2;pu2SDm`1N$telDpk|cBx zjuzZX)t=pm(dm{+uh~5u8>Rx={k`-BffA%H7I63S6+VDqtz|8nVa*c@RmS1W5j6;H znE*m^9QGMUReD$O2&7kr-_Uw*xd+;3%T%Et3E?#l%mTp6qaXzQwL7_HS(j46!jEOn zXEJ5c>}gvR(SWo4cM1YqZ6=A(z%thElYrG>0X#isG{fDuVZw}U4cKcDOb233+9=`AL4rZwXA>z&7;RxQ=SwCs z!flvA(Z@j4ok;m1RMLI}UBf{)3xv(vD-;w6K94TUN2qFgT-wdIE4{GPKHvNh`AjBi0DZ zJ4`6)fiDyY11-8R6lvFYvI0T7tgum3t^f@!Hl_);9@v7rjxJ(-x-c(H=y|E{PpW{+ z5eTcEVF(_4C5B>wv{2DtIe(9}{Xu{zGnz{scq~CTNeBcaB?ADfUu+6U>Kyp_h%LfS z+ZLa__RIJmZ+xrM0pGG|1wZ+W@4~sKpMuF`k=Vej&x;XoGx_z}B(Rj^N=@fEkn&>! z1{lZ=WI7PEDOX4&lcvGeO`FWs99}(!Y1<+;%Nvs#tQ9>eu@)W!nE;CftEt?v&bk6Z z_xV&Qum&K3VWn$1iOBS}RDc~J;F9NY4vII-rp&>;tjHlT3sSUBIp$z=f|q=PpW~%e zirfg+z8tKz-SO1Apn<7K&czfv*$A^(zXRtrLB2?m{PQ)wAjR&fI*zRwv-N8X$3l~! zC^NC$2Ks#U?{O?8fw^$EPwI7%HO+aAb5cgMe)fNlq$d&;3neIm=yg_qrwPU^gQmO| zwEbA{Kystr)8vsZADDuDb!;w}6^0j)a1fBFgmMAvS*7JaXUFMeQ|#Vi4J}JZM$-9| z&c7tuSNej+phs?V)frvvvfjZn1Io8TlP;6+u z2dpfeRPh-rQ4++j%n(P^-6m#y+BJ{8bu<`UiNhs|8@V8sVhJj~-l8O;SYEBrUd}|4 zQesS~FsO|_2!Ezx2{~;-=dV;m5Ch zFwQ#FYPD)Pl89L%PMa&5OwU;4$puI<5A=#zTsj@p*+eb8AyP%mv~Lk0 z(aE4#&2f+sX6eE6f^0WuXM!{^!v~3#WI=Z=E1&>-fnwm#&ym^G8u-+b91Mcmjl0&) zEg=wX8N($2IF%esFQuV@S=Kg(3B>fd4{e6pxTI8)RQ>z*oLE{!M1QAMK@|s(J|Xff zgAA{Ehw$H8*G`|K2fbk=NVru`Gu`9rvxLDW2cwpe!3+V61i39@?QRBxBR6*m0bP47 zV{P4Iob?ng19}KB@6W5`8RR}j7Su?20DHs^*Pxyp%5o_B}ha| z8%ir#laoMmoY~MiNK|v}$gvIVxo#g`{)Ug?&)@M`9A4dUI+LlH;H(QS#^ZnJ=W(Bh zKMtF=?Lcb&<->|n3XUAuk3AoJCrY*jy(=E}U~J#Aq*$f|N@yKv0|K;&wGZ_^re$Yf zwF3>nOTjoB-1O&>D6pN)y*mzW#vLfQasO6qUS7vJyYE73fQ2SkfMsQ@7y*P(Exm<6 zPd3hBJ=*@5IbgC(N!vEky05TO!+N$|Mz)GG7ZeAHiekoWzwl)XB5&J=~9E%W$X8dMyC3c`VUD$}W0^FM->XZxy zOCZe^6-X4YY3{u$3TdeuTARdyEwIHc;qC_RG$~c0L0n7t#64;=PQ9wNT)E40Jc21f561G9;+5F*N|LC3X@# zYrn+nTgYH9b%}toK@vVC0Llu<9dQRtvS76-IwmT-aaRg=^p$#n%XBFR@v@0OF%qAa zcpY$s=7>nuke`qR!#xot(&Zm?!7V!+1jxq{EEeo8l!NJR;x4D01p4AS7Mh0nh&Apk z&V$JU?N@YJ|kB#W~QNBsiCn7}L zAkt6R^$Wx@yzFIHktA_ag%nfhzZH-U`F!mxRBVR^t_h4D!5M5mr!lnX*(jsrs;+mK z9K`^4NRndx^4aemIJAnt`|uYrZSy?OYjEBrmtlGHHl(IG0fL`+ePaOOJ5M_smwoS# zW4gYE_r3P_v37LU!hYz;8h-arKZK2q7XRk^9)>ec-ik>h1SN|Csfz)fg(os<;{BC> zkH}5*o0$TYXaAU50Mr1vq~qn<&tU+G5ESpV9|yhf4xAQl$8)a0!=lv7z35<22SXxr zw!2z7d83~HRtJ_B6PVB)cZ}>BsLgUK-i^Cn5trUTa9l^5Wj$I00+(Vp#ljLe%9w@C z9W~(1nsudfhKJX|)a(W}sgDCobrUE~1`Mi)stEJ4Rr@8)*x}$|HFoLW57lTo%N|Jd;o*&zd7=@b!(1 zn{Pjax4v%=Ui?2lgd1+V%NSpF<8SlM-FW!Zeh3eL>ho~YnfJuP($|h5P;!eKKKpUp zdE1TV{gtIfTz=_=XqpAu3t9za6vPHMdYx`)?;;&n-SXZ870H8W92AQ(;w;%8A5d() z0u;fK)fHTI!!jVirlq6Uz9r+Nt*cl_8}ORH(OhAGx*P|Xh*u)nBSE zhH=3#(v6MG=foBXSPDg?0>X1*T9aF9J#fM1b3A6ux-?t=?>uxEfAG4u;OgscaO=f` z?t317@F|bSrsX9_uVtQxXVZh(X#`vrzive=Z=-=s#D!4noW^L)^e-?9t^&Z0**yEb zNdugD%5Ft^5Uj4PVVYY4YlQAev5C8glMFN-09+8&$+PfYN_&JHM;68umzhaTT^Od@ zg1`ZR2g7v%st3p;b6N@ZS~(8*5fnkfd8yB}vFn|S6j0@1Zb z=Q>DvAOLlvYnRYDoy}YH_bo`Q#*)**lOX78=$_PD6uY3Z6s^TRsesn>3hcGTFqCN zG)BcHpw5mfBZ*S5&Ip?{Wzvc+L6XP@kSzhV5erZ=WLuIPr~oSlxKHtT=rww$N~$8o z396A$uzSPmv30!hT_42zKK?1!nRMz&yYO>A@I5$b=eGH&@^v;=Rwe3cF=MGwpj*_M zt)*4QSJtUWmPtlH8uk?kNJAQMiA>`Rxg*czSg5dNfS9hps-$ZS2&&hAHb72_ zaMXAiHOIIv0~6B7tq>`S3oM%Spywy=qsC~n#QQRX>!AHqlc>yZljlGr+fq~qp=Rj2 z`Gt{!Z>=y*9xQ?Y9MpilP`3k)lb`84F2&CoLPVBCfO!O{Gx7B_Bn3vua3q4^`Lux~sRf2bjw7!IT~L@*3O-}n-;t+-_CaWZ@0ZG$YKg3p zM+%rswy2S#Bq$7K$|0y=)%y%J)PV`Rx0NxEj56~70WV)T29$#U??epnNH(R*W6?9q zj~?5=r?0*Z2M!(U$LZExr{L6kUGOy}I-LN)PrSZruk9zFj?2FH$B}c3cfaB#SUq$Q zz-+Mp;p;z&yAH46mw)WhxW{Qbkdg+trMejQK)BLV5~N;E#eSocH_82RJD#^F=1pfB zsR43P?I{dC3u@X&gVag~kQd$3q!xqO-zScZ(Qm?vEv}_pOl7zXiE#g0^B_z{*zVp$ zZ8)z!aOiZzyQ4b&Z}dTw*DzxZaa(ogfPukR>#kkG`%^dN90Cx_9`>4Z9thXk*0I*L zDaRBWbVVkbrFe$04eG3XNp!x^2Bg7XEpNiXmIu@&xcAJ$w%5aknf7xUNnb#PD5pWjVFViwx zVx77k+!`@`iq_@6jTmq&tWcLyCyIi#^(k)Jdlz2$=1<~}-}DLGy8noqZ;}#rpM4%4 z^Zn1qMUQ_Pwx4|Z*F^dxDzqIrcn3cJp?8^cOex_pmtKsOrR7nKv1{r*D3ZTPx{yRp(Pr6yq#>G%f)Bvr)Tn9lA~ZVPU>V=LCyCumzih6cMS zfev*emFBqw%$!gXKo{3^;>jjfk!L}%`mxbkVf19BQheaKs*5A7mmhG6fPHjv#@S#tC9??8avrnIO92!pp zX1GW5i{(uiC}LR{zBho=IqyOCb{JQz`N{@cnx!sd9S+5RPo3l9WP($6?J{?EV`Bqt z+oH`GP1E?~JCcVnMS@5>8>Dd@NW`!yykpL1np;rgp9@RTc;x%u((yU|%|UTVFrC(l zR1wfY>zX^?N@q(5mZTBDDN~_|!TAac+QcUXh>7wz{QFmB?o z66lXJcw3VblAxGK z&c@S_3$|dxN;Zg`9XGi`swSe$ysql;;SeJ=1f-|FYg~xEZ*|I}{J2zzHFo}rz<}-| zm97Io0p=|AnOwnO@XeBubub46pUB+2)(sLB?1weX0{4a3?3`oeAm2lh=gKoF z6u_VYvZo-ZDwTjyMv}6Mu~W}F%|Sw0)7~tV-wxO`&Ww-2_F7>%J&Nki@0AeLFA`wa_f7h-E` z?Z2o)gnNd6c~&kSk6BA?w*_ zS8GtOQH(?&ZkY|*@i`fGOsk05Sv&yDCUM-B+XJr*T*uGfCwRKkCh&4_ti}{bEd^_7 z4~7fcw#7eR^JV<^SH2#HkFMGTqiOKe$2|()ddYpUFd>-*!=^@Hpr<;6!nI6GeYC2} zu8rCGu(EWv5J<;#4D>uCtjtIvMb3+oEk-q*4kQ|2chSsT9?--Pg?hAye1t9vOqS1u_B_tL^~P&7c|S+DMy0 zm>S3-Be6uT6vDX(9(kBVe~V;_c7<_I-}!NnIeXtclB2Y~eqtIH-_5`5?m>gTyuYt=f8$ zg5nCtKb(_6JqK+nTFdJ>*BtA(jC9RYrNC4pIhBAIh01zcBVpCCe zEOhkHzwqZC~?_-xDDC ziPu-{B_i0i`!qc2nLmY1+jruvzxOLRa$r9IV11*-8{Tylj;&4cqMy71_rKT4m^4-k zd|+`G((9f9;?jfV=s(|q#J%i^0$Ph&D6|ZU5ZKM~BEz{Pu&jy{2ATmW^UuyVBm0?- zy&i+?j@>{YI!KzLH`^r8S9*3j3>azv6!G6-Q%tW3?RC91u+7ik1HQge=#MLv?@ASv zw+w8qVltqMz7ozYTag3`x70<)8v>wKRrDLzE*EW7U1!7K?(ILP0eA-Etp;Cmz`ZXj zaB(0xK;LVO^F|g03pohRBY+*M8XvJ0M6oBLR_P4SOzD^w6XWh)N;yttJ!ZWE6 zupJOo$eH=ThAxo?aq-|d>;F3Noz0z?F`6luA>Ck|1 znf<3glhw5ieDQ|;c=;PXj@SI{Klkl#CWLJ!IO~Fo@Yo-GAo;kAn>NGj3nfM(LWAVgxzi&{~Xlbf_ed!A4U!OTqk20f3VO262vAkghPN)>o+{Ha+0O?-yn2 zSMylV_eRD6aJ8Q0TyX3DgLvuxd=qZlf2WH%E`8tyc=mT(fz2zMRKm>HR|4=q9UrXJ z&&+_@1hN;UtsBW6fR3Ztp29l)IWXbVYdeAL=DcQOC<(C8Owgo+ZUt*|#(LYLZ6hXh zrEuIA5duKm0r?2VSn!NB;N5|A9XnQP%se5GJ78@WGKLmGy+eV`e1Tlp__?8Vt)jo| z3iYLL7_LA=fvc$0R2D$zs-NG zE9>?(DkS!wZ$pxW0lZvcM(rsDq-hJUDc-GPGEw6mR9w_!ih;*W<59D~8;SvgE(KF$ zYG|BC9xgd9th!>Ac!@hB;i6^u$|y*w!N4J($-$ULK)y*qo)9rnxtmnT@KQpeQ49#8 z0@8cJP$_`z*0nN)Ow{7sDUwamgeKt*7y?YKZa5H2zBDdx)x@YlD#hlJBH85B1Is>I zQ;W-;Oqaef$Shw$@sEL4sjO?+?BiCmJRXC?m}-bv(wcR0=-_US4KwudNrLa=FxFSs*6~k!Zo%z$9vKKw z+jipY`(1*?Z1e;O{!RAUw0#%8G<-+x)AG)xi1)?Dn+6LGzN;fMNJ1GA~kk# zi=ovCh+5Jt*j>~qSnX@u%2k&VvD(%NRuTo~Ja~h#5+_p83fI9>Tu>N(Tc1-bh2mN8 zQRP_cnK#rv=&S#H&ck=aIh&8^fqAn{X7*PS)-a&e_ir{Xn9c5w6X{gjwnQ&SqqWXk zHBP(MvIgGlv{=w947yUV(U&0cY!K^o&J%BmOj;s|7!61y&tU4=bU82(Qw-JKD5?z- zoU!V^dItSv1X3%CF*R)q?zrm+{`McP!GC}CKjNxu_oA&BUq1SoKaFpB(lfB@%yY4@ zwDPac1SqB8=)pU2^@rc>&iArQ9)y+UxfDvNn2wg3DWYPn^-RL~ICS%`@d>&E)wyV+ zP1P#KL0bN#2V1iRa(ZA}19FW&7oA`jGtUwvDM2D&n^xTHh z##b%=5*duu*gC0_lu#_L`oxcllvoqLKCGnbT-!Df^I>7s%(!TM8M zqttVf;(?#gvw_ylQi4`}s5Kopc<2cJ;B{}t=dQip#VPkZ^K|^|bDoObJGT-59x<=A zEJ@7|p~kSHJ-`@dj(tz84!Hxog!Fo|2XiAZxe7iE=d`#Wm^6)9*Nz-r>$@i$(9ML2 zLR!gs&PUg8%rdj>0Emh<(i|sdh}f|svPp)$J289ykmPHFLEDLyvjXsii`--S?A)hkqexH?(K1toiiw2`Ukh~-&{$`Avc7oT6~l61bQgg7ZcOrg)5L{^!O*>^f@$bM zp{}|2LEuh8mb}U%Yn?WSPhpI%0pfb`Q}4ZzUylYVBc>|nZuOio0uyx}#@#A#p`*0nWAT*d~ip%GjSkQs&d_VXe`*^3IoU?Z^|uaUueaq#dO-unJMSX&?T z?a#jdw_wYzQ_w6d-YqfFbOILs=6Z<;w(Q)EM?CF^@V)=xrP#Xbl>TpR&Uo*~ug42t z@-}?@bGKsk*i?bZ1k$?gN9Ittk~8Vyas6FoEU6YC{rv%$9i&$V!%91`Bg4)ToU8Oe z)BJjRcD9x^2_#TpO)qsaq8aWYY54bCj)eiEK{9683{7|>(lh9bX)&X-F}mRq19||+ zi_#0U74l>jbK4GqAeC`~m=>R8UO4#Iy+2E#-M4I8Fg!Wuf0fuVYuR&`lfiCvg zV@xXjEaC21>Et2IW}GPTDm~2R^MB)S@tH4L09-_{u(XT| z9`OYHz^}g&mp}IfIQ5nV_!0vf5<5?SA(RyQa5rZJywOuB}T_o!KN^8fI z0U75;j)?RalfTd41ighfvQ(grH0nH~t`|N>o{!P}Q1Uk1IU)?!1@lfwfVa;$IH*BE99uqd%JhHlqSHAi0@Qx3D3~jar zlaqFA!wa5!CC)kHRHPJ0<`mM5m*j!7TGALXQVrO~vUO51xFWV`QO`yg=qvSeia1r*@kStYlzCgQCxH1K;R z0tJ*YrP&g~e$QkBsQfoM1yPYIB_o8AKHEy)gFSF1YbZ1Ey z4TkHEjE+>H$BYCWR9f$!p^fYt$pOb^9nxMIx*!w!I+RM>PQ`dRUdLn^ zDcIB)ytQI|sqFj3jk}?P^!SF0q6*I)yLl`Dm#nyEA@Cf4*h6H^6#TctK1 zDc=lZ-W=>lDo!n9*E2hpoA=&@4}9|a{uwos1w7zU-;R~7+wYcAD8LCO_&4oq)An7s z@G(!u+L1$e+sl6q2X4Em2g3jHpKrvE|L4ELum0p?@x(`*hizMy%))CK;5h`1V<{6Q zaWZF7Yc4q4r%MRBYX*1;!FhYMPAWwM@cO&aZ`Htl9ekPVE7s&wFRY#Zc=X$%^}|Yc zZ37_1+GxR+R|%TqdRMfNF*Df`-jf238xvg0wJ5G0!{Z@~#`h4ECFoyU6W8W_j{h*(IgR7Qe&_~bxH zlB1B3lm;;j$e>wBtv89%?0XHsi)Lia#?`U)7B}s^3vYPWRe0H-e+)O>eiw4U{@!`| zJ@A-k|65%A_$#sFw6oBBof)A_H`cM|gYUp}W8J)e+U}EZ?&+r>B@KR;fLW1zQXjSr z7BZ^=LPlPxn6yfo$)E@smx%(|wcL(ocpH;VHk+mM>6vW|_(U4`EvgJP!zQoExpd=i z0?%Y2@I?}kHxzhW;`!b))Rk7T^C-}o$`d$gAtxQ6*^X+Rk%eH6BL?n`)J8%qwGgdq z{C%k$TSkC~fI+3faASlRB{qQ7!=;V_^GqtHpscHFfOf&LwRQaUdq0BLzx_RETdOC( zw77`pJ@rX=@cqui!ldya7j8Lp}Smg41psz5?QUt@{b=Tg)EXJhRg0&sr6Z%OK6jOiV*GBto29ZM>N0kLs{ z)0Ztl(XtLKTKOveE^Filpi>E0_Mw*rNJ~G_8m=_;O_vjcLm1lrCHZp@sYvPwNusDC zh)f0ogl3iNIc%hZlpL2CkJ%RloNhnV-ze@B?j%V)_*j=93C4>V|4jC%?Q0T_0c%QG zV2xMH$k?bATx^lMII}-Hr-%Hu2|S(>X>5d_8)n1&8XVC=fSCQK1|YFTL)kZyY|50!w}Chp#fuz{s7 zj`%&H!8p@B1;BKP*W4-_n=fbB!^ISale+KhQ#DekDwSBU`WYrXG?k8?n$(H}dt0r$ zlaH5OQTFJuHGK55H)8+6qXSO3Z70rs(8I8_viWX{g`NPxzlmQfTX*2W-|;LgZ`p>w ze9152;NF}1&0x=U`|)(1w^de+Jx3)v*nk2A%10XIHgWLa zJLotq{Z{w58fSuOjWT@;R;PvC1vy$T&x5qZIiwFo0gP<=fHrmYpm+p?MG`e!rH=wl z(%v;}{uYtW=Ai8j)Y&I&C=zK(22v#k;2H}MvIRi2)PZSz4fHZ~AUbN87wOVQdY*tc z#zSBP1+Sgi1B0yDs@jGflXC_HOs6gOA3TEhef-OK>1#iXk6v{%Hm2D<aDJqd#DUsMGROqVLTuiO>8q2s=sF3MEJ7gw+khDH{ErJ!K&QelergZ?`1NnWu{B$aYMKV$eZ?d3U6(%`%S#JX zz=#-BG?#>pYBf*}dkw4|>P#(3&ZU#xG1463!P&_Cv}FGbYr5Nd?l{xU*>6vp3ASun zF{5_x{yWeXDt49<%mb-Nkr415&W-v0)X92;dj|n~qJVHz^v0ds1rSN-)QK83)9hK% z@X+cCPRr{`haYtL!Z6THO=lC=Q zbkg?yiokyH0whX z6fuM178k78_*EBN5p*JGi5SVjcu7GKo90re=?%nke{Ax}hR>0dmL8KVVN%m@FBJDP z=pGT2A~Vhs7KuBOO({X48=7Se0(}d~nY5Ibscc$lbaOsz4LgN=tJvJKsI4h7wDd86 z?QE_|ELou3p0}1vsj<;B<-9_j+BFH#0$_uf>C*dh*$(C5J#B=kiwOEz%sQ|&m>+3l zCq(`XGbxs2I-`f)Ay&X5Lz&j z%SZYCSnfR=8wU@sfW;zJpOl0-_dNLq($T^tw|Msqv|=-O88 zqMU_Un|s*ctmC$>M6(o%)hT4Q7}VyOVdYF1I2Y8kw6v5-7Z6$VMGgcL0m)i2M{ic` z9DMbr939Z_jV|?Zy;h*UHVgdg;Az+(2Q$d7jZ6ZkYtl$7AcjCq2Q^}Ga!|$2@~Hx* z(@g5w-!*V6Hj1$c%JAF8$T?^rjhRig<3<2s2>@`|q)!`|VZ>Oh54IW$zIP0sNX7s% z9#9y7Q-c!9u+AAn(Y+4YOhP7Q@IZtHu1ZEOfwb9L5B&n}|EMQn^Y&f;>c*F~S1APtZ@(G0Uc1KzF_Q+5y!d`tm@EY2j9GOw zb_`=QTcBFAIST_*`dE$qzGm;cR{zL^wgf;;H0IJsq8zm->$x#iV=WP&NAuh1(sN+W z44szdpFXW=UZP|pC@>wS)|)qqtX05(c8Dy$yU_D;ZLj}VbSaM>jn z;zytML~L4KnER`=RxU&$lVSpVxq#wK-*W0Ij0; zxCo^7g@s9jUE8-AbGCg4?!v~jwZNbOwF1LVyFgly-<+?$<_KsH#+PBujukUN`%rAU z?oCC-uPY8boc;f4E3@dD*Al&c$XFXbgXa|I81{IeU+lWHl$@SfpVCO25P{rLQNN}$ zD@_>@y_u=Ni&YKUiG&qd0@OBqrAp7w%bb=Ys|PH z6HD#;A;Fw6MWogjzDlV`VKwvEajF1xz4yXPOob-WHPVPGUYj)~)z^PX@Y?Xv_>T7W z2waq)5Hm)q;as}QiI_aa<1GRZ8DJK82DCQkER>UK;*!qKBB?JXmK6o6Pf=45o&mOv z0;Gq$+b-7@Sk``B%m&vUTf;du1jNHgpxRDlo4PxGq|;Br)QM= zxvo2ixd>>B8(GQ0G$UiFgx3}ql~4hSLDv#>g|dWSgHQsm>Ki2$@=ZDpkc|p%Fh(lN zRE({4G1_$?=ZtG_+>ei6byGiZi2;03ZNKL_t(J0fL`+0RWaa zZ^eBcdIg^T?|uh={X72wH(d4ce(^qd_!xfcRUg1LH|)pH|G;Iq|GiGe%F;q;NLfNw zcrx1H;#k@w#o*qH0;|p(QyXVOnPqCWd7*GL$Dp;k4k%!~lU3^GVa@UyJ(;y~;gC_1pL1N|%G z{+;QXJOCD&G1A6iOi5jk6)}Kjo0|RXm|Jur09@$z+sZlV=aT~Ps+Qnbwv&hi_kxY0 z5&*MF6(>^DL!c_1HSDyX7wY#ov7nFMs35aP#el$q!&Q zhBj^6iEnw*Gw`j?_z9eL-u*FIT>84+r}A_I*L?i_*jQUN@9)~S4dMC?e+Cjw0)1!Lxh1N_Q-e4nWOyl+ zqEiIuG>GMnqI*>FABZ$Aok3X&5^t7zY85z^Z315n;Pc2i2J1&JFBF($Iw=obn6a0vw?4L!CK9jRZpKXU`p`8~ zS~gmh1n(ixJ$o`oL`ItvaxR!Pqw@V_^Hw&dR_m<3hXzQOm@uFLRAV$7nTVzsc&|#m zmCCsTbz{Zs<7l&H1WbAtS4OfbrLqR9&lJ7(g6?&)dt2$oOrrfyXwM1cR-$;&Jh#Rd zc^nyli-1}_sqt$HAH#L%krZ8j&#AM|$?#ASQ?DUmH&L*b8OfI8uscP9B21*&9qrlC zoCL;wP`G0^Rn}g;X1C~=-Ch?TsGHH33iv$41_OB9Qm*C!d)?(5$zEy@S~IgHl+E(@ zoWX6D5C!>u`7UXpS}lXnMS;aa#~HetJ8)iunmZP|4S&VA5Bv3NI@LOB6~pLq4Jh2<5T|Io|v%wPEfyygG- zkGT3D{|@bR1EmzKtxxfWcU^_+Za#ot`SHi#ArCkcySA?&iPh$g?W$fs~S~Rrpd6fUp*H9{}-W0)a7k2+ef2@+LLY zpRr1)21`1?UQlCA>w9J8M?53h%c*G4A_9%P%d`);YMX7Y0!O;iA2XxbF`5B&RI9;O zCZT4iGp0)!=@atj8^jVS7&#V*UCq}G0=xnsEQ}xYcZeb8m|w6UO3!j6E%6W-C>9)z z!0)c8q5&`ibSGl@fXu&uwe=}(*>?zk^Zu*x2XFWoK7ZYQOj{2arDlS2F1!?veclUk z{-u{=)An885S9Mv#yY<6k-v9RDEGhjJ+Wo;3M3`V;Ns-h$P}dEo`>sGRA|XT@u`dy zv_J(Pz{{*ezYhXSSTB^;=fW&P3BU>s6e|#+@LDtm@>k}M`%I+OT1ncYR`P0)PsOwz z1f!PG($X;l?NTGP0RlTKdb=VXm@t3_t*v?;WjPHeuM)8H4WpZ+okHzrDx&FYXNJDn zrz8NsRolG?a@*qSFW-Xy^77Z<=Dqve6FP18F8tgNehF%_3ljv^0 zCN6%4d!5wd?nvH_pM?Y4BPKMhTgG#Qo@-%4)UowBS7L)Gw@;Pp7^(O?V(mHTYm;lvSnay zmp%`+xj*}4X+3oRoHd(WgVo*dSSEF)8__Yn8PJzXY$;#~SFIP{{ad649!n*rV{P?T zoeKiOK-39QBY;GEN-^yDSo1s5*dLJ!Bcod1sXqp;cU|%Yd+#`czkcr?0k z^q2Vg=U#^IeZu{5)~VZ&k_D_g<~IZ3%m5#zrKnG319a0ej99{AU{7nq%wePQ8|U!3 zNMqav426Q-fgzsfpuLrIka^HFT&I;^@pVwU;1!aC;f2dfR=@>Volp%g(#0ikUXOGD zvh610^|bjo;xx$PMHgV5Hyc1i#w<}_=8eZXK;7%1N3Q_{7$i(MF&lo%Yjh_CT9$f( z!l2Knju?Y$5`xWxiKzO$j&;`qvkiQ!qe|3RhCs^*m}HXWCC1t}HRHTyW*RVCrN$^l z98C4>E`9y1v8&I$4aQ>ke$Zjiv%R%MKmd64_ggc~$jAvQA?Y=GS=IsSdKk!vSf7?T zxv{Z<{Rda^o{wIKm%s7j_{e8&!m;&f0Dd>vdHOx@=x6>kE_%Y1*tYvLEG(^j!?e0> z99zXrpZ}D-CJ{XBK^I_gVPUqDIEGn@i%um61tXsKsZyMgN`N1MA`Rm13=KfE0n01; zcR{_=qQ)T9hHI$~1e;{FX0{a>(W-kQm3B*!da^A99QI60*6l`RUkDPBzN;fy4QT^p zLV=VTl*oY`g#H^mkm!sDLEu{P+RzR_t!c+103HKb6sdvYnu#f%>1=elGcg%w=aO^5 zp6hSHi(d9BTz~Uz?#}Ppz7@apBhSP|=bwYggn$4H*TNV6H?( znFzRxiVhLOU8G*PU>P6%42%hL4hlsQfb%7gJ`rD(>0+L|h<2KR1@SRle_y7-e2adM z*U3CyU=ai$bVQb@>B3?J>`TFZ0NNAA49DS%tmZh8B;i=GDNzV2%3*9Pg!XH<>I566L~P-Ec$o5j;c(>Vm5|WOmHrm%9x~| z9s|?`X<|tRw<0b5QYrc+wHN2$d1`Q+8Q`E;9f*lJoRcKf2}ZH*xBtzy0{o2u-xvY> zit~Qz#$O3zzZB%9F{8G)xas(eUf(SZBXLrQ(BjEzNy(MgiV(I~6=`#Kep9wH6a-8| z>7`o?May?}%y^9r46OOdTso%veeD@$yQVweEFLcdgWYyETB#T)AX{K{)uU@_0?dP1 z@y%C|hcf#;Re)?eMnqC&Jua18BAbGSi!rNY!DxPPN675`)wK=m`O@vU>e{`76w2Zf zE`0Qpv9fjh-5&Qm0fL`+*#WV*gj4T%0lxjGe+4^EKO66T^-FR1&VBtNa@+nR_?16= z4?cVC?Rden9*PU@c?y;m=NeTsfkiDeo;A%H;e%{Sy!h0>(b$|424F7)Y_sX5WqwC2 zb};~T2c!>yUH5kzVyZSRCEH@bdTU%U` zjz$n{MtXb6ZC-Y;H}=0_aHj+LCJ5f+K-P{W4u}(Ny3A+~m?$CB3e`%rXJ-X+B~lBL zb0yKs^~8eBj(T=Yv1Xc)v0Aux1#SF7_ffOTMVVS@X%tG%+YB5$d=#I$`ZoOj>pqIN zf9M({)B3Ej#<(an((O?c zlh4TnOemQSihCtuQ_^+zz=;OM@^OG9(pS~{hS4D>KwJOUbi9Df)smM^VEt8QWosrO z>tE}(e53hKfKb#?!dkUl7&H3SS`V7WgjsWf0)f%Y?f~$Nn{PjWUwip$aP18@yV2l>lfkfN>g% zA|+rohVKvecwu1yJGX8@(y^{#6o-ziVwy7+%ZTx21XergEX2S}t?M8F>W%TQ z1Ns^K(?-;)TgerZSf(UklR5*}*?a5l0#+~$))}E@pI zs=QZ%B5FVq=zqI~Wn$OJB{k`YR3TabRZj$0$fbSB0fEY-xiEV;)eDy0xo9c7F80x2 za|z^2`rn-no-3yK0xF0W)u9Uu8i$6%&wOQ0qKq7zAMT5vm(0ks}s9wd$ca0Z+`E1eBA^>^Fjj$Ij*auax| zl?L3wuJH`U12k}KndZ@�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

X zElsga>>F*+T~0;7+J=K*`d=&gL&@OPNZY>>`L}bSeVa?o?s08*;caVnFE@6CA3mfi z;M!K0GZdF^*O+A(&gOIcQ%P9+D+fKW8;uJORg)+y&)DYXNm6h~clX(OlblTbX2~L& zZT?wwK=ZBs3Zee{${WPYiD#1y3Yxq_v}nWzch4XGB=|h8WpNqLy!fpi*_xuXI*KCJ`qR0lc6LeLbux zsrc$)KVVE3Xpp4zR9hfefJuLs0ZIQ8=2uiWSE>pj<+`56EwRxVEJ_e3vZ6CXJJ|oL zkr%R2R;D>ZVM|{fu|Lb3yrWo{MsMD-*t(v)m}KRC?{};{z1$NtbzA%-wR0Lscf6~} zAux+cSINL^)^nrN%5m$Arr6sc%B7%-2D&`w-m%+*&N~^62y`rH+V- z!iXJ6=4Y`{MP-blTF%PJyn8u8eTKD%03n1VeR_WfK{BRRl_HIN>M>a>CR z7(rX`5MZT5&9&3rp8f@4Rx}yUHLiwC%T&%`nI%NjC<6Y|QaykBIjS1B>kW2`f0yWH zC?USgR9n%3V}rSs)h58EZCualne~L>f73(;5KAVgxeO#b#(oob29ibxwk0CbNV#(zrW<`i@b}RAH@{4if z^^rxeaPy9?{mEqY`T3Pbm%<|S*NFwe`?nAO?#&xr z!r7j*T{P)&WmGE6iB!Yk>xP7q$E1{OaEB7v#}|~pnH1tTP5X^)ckfqAt?8VF{bO+C zr6GQ^o66;s0h!viN{_W^>A4~sYv!M|F@1MPo2>~^Z98j1t_v>|7`slYI-Y{L+$l~Q zO|v~%>=g^z4Mb>6YhB4kEM|AKc8lVqo2p}7eR@9>-t%6&ZFwy7<%y42aF!=W=2te2 zGDqF{wBW;R$;v&OYvMP7dR)xYen#?o@KQa)_<@v~cjDp{e|t|SFh^YPdQ2qvv@dr* z)b=O^xZSX_J)3JX5Xo>%gX(NP$<>sbTIf&-MDy`~mER%T-uKxnxWybhy5w*1x&8Ms zK2E4MVS*^|h?=mf)A_xU!j#JTlwG=J-xij*+l*ZjR+KnWfFT;9-|M;#0PE^={Ta3^ zryF~qaLx0AzA}y)oijDEw^!Wtc%g^Byty-hQR`26dEd6<0IC#{!V>G;k6X{*^psHH zkb9bU=wJSMMLzkwka3?sM~5KvnN<(}H7BA^;5<*~x;g7kQI!NSA+zrC=x}|{Riun7 zEKG21G%%E{mY0x)U+wL#gQ523lEyBi^p%g$=N9J1qfVC2Kjo5Um+9L7yYAF<=B{0z z#(AVlk0&ECrEHzzY9=q+gx)kwQ69fxgmc39CisyYT&6oWY|wJA>9&Ou;sn1WU%$Y; zc(cnk>-+gM+vNMq{Z1pv6lq=d&fSee?KaNDV6HyAd&0p%vz&X>k7jwHxd;oV$W)HH zYq1UFsI->O7bvEkQ%ix{4j8X!FqT6LyqWp(A!XLCYyEs+T@u5uudk1m8sgM+-2)>(aJ?2vvxo7hgyh|6*Wzo5 zIzNBX*^}=uip(NMqC4F0?Lr=BUl6_2#tfuCAZaP!NH*KHwwmGV&DX^Drl2sST%q6_ zdiSf;=nO+lV}@w*PdRXA9dnbgK(m!Q2i|D??&U*6lfeDM=IPtF16D1=<2;8>O2#hk z75ptu{Ce}9(1FGLGMN#L+2${^nGP)=D<|r5e{`4*7Q`{_oz<7KU9XS-!jjBVH z)(gZJdY4kG@e)oR;*ek;I3UCg-zvfFiY~_0nC$y9Q$6ZxKY9xm$Yt(8S6>9kAZKs= z{r$fnc%`AGm*SyP>2j4uUR!H4`Kb)0(A+khHE7>8GcC#Xbps=<{+hDN?qewJml4D0 zRmJ^g0oz~N7C7fG7vVNSDUCX=)U>-M2%bJ|F6|MnY0lbsAOsPdBZl<8SMsMe30j#V zD_*uOsI5&{ZgQ(K8zWs(a8P?_-MsL9_!L(S@+W-nXwEBmY5Odg8^Q=6$xbLE8VE*&?t z^P0Of#&+(ppO7-a%|RAy><7DK0&`<>0xMFKc$w$7{X6y*$C0OJOLk9g%A7U*Z<019 zNNT9y@Gq~OJB>79Ll)ag4^DVHE;OgzyVFVv0qVML%yv6nO$O@I|tOBd^i_{s2 zY|R>H4P4v_hls2!Y%G7*X5-WiMX5~vRc9wwMP&;9^n^PxFmYVqLl?z%JasYf9tD@> zRN2!^nkvauTC5j&w~&vj$M3X+?O9jB zC4ZL?>7{;4dw7Ripmlx3Lb5+z;1GDeGg@)qB^gcU`^HTyo_WKuHouFoj~`Q1^ry&g zB=*E-&zYO%yq<>nd_rDlAohWXsF>cN>1eKmh%+2MJU{yn9o=B}>Z9{ln>YDcIdW-3 z-PjJjFb1|a7>*|w=#5ZBLZV9`H%jCy?h%%1U)U7nTg)B14h{~g*I456xgMCT{9 zyw=NJ(ivvE&RqvNh=?o_>&y1xc{-!Tfcm?Wf#uba9VTHW2E91_k`us z5(M$E(!>a;jHF8f_Cp(#pAkN#SkJPxr0^}?{3+s9**-o813Ay^c%cUH4v3j9R#Vc` zlT%T_&CAQbZ{zubWEr+N0cUt6|p5#<^o(<wp_Cz?ZHd9K4R5aC3tesa(&~H>kXm(op^7z`m+mZ8)o(ed^V!Z3yCC2__EqRU zG$I1gRQt3jMSQbJruk;<8Gj)IjMp^uDHxqqFlq(cFZ`R=gZ}I!e;d~?k-V!%JU3u8 z?h8A6cd1q#x6=+kXDeF1-c}~*};zf}{Vj{&Y zK#*!-Tg$6&!w!Y>{raP#f>k&R3;5C6D!|Lf*8sU^tFv1*1qLSDR^_;fKgUbPe5YiI z;KN<|*%HR5Cw713OHaL+3~tf2w6fA@aHLA*vNHuPkO$(}#yOaVkueX*83jtRC;?c} zsy=W6doj9e!VHu_Wt(IN+ef>0m;1Lb8^Zob{b>l&Gm8dBiHr$2=DNPK?FV3 z%*g`B|KcTlw}sX_IKxZ5M>*xnB+Y5O*JM$o6B~R`7>&yO&F~fxL9?4|;oxR_H`rf0 z9v<<;PwgWxW9P(0yJlYYKRq?}Z>W)(miE@my&nY%m~@k;WB+Z_ZzkKlyp{9XbfYaS zOMJ`H^T_w#C*cf7k+C&r4%SQrb_wP;5GgeQ8a5h2Xpf=Nx*IofetCIxv0Ay~<&F#h zObLmII!|xkqXg!|I8L!oxR9u*DBx_%LU91J#=d0B#lgW*qTK*kA#=XEc>#ZCV9*_; zwNTPdjEN}_>+<^~P${fieg)1DssaU3K6Hb&^{(S(Yoee-X*AW0A^Io@af zcw@*K=WZ)FxJB^s7R^nsYy3KS)lf-AmBD6XQO`Xi{h0pTUAuBKpx<4^N}$_inCfb@ zIg+?8RScA22(>ZO(rfMD3r8;-U=zd<{9}?}Q5DoZ?`K6L0Aa4xkt%yq9%gg2QS05z zm=<|tN=PUCL60(^99H&h@O-j7c6W3p(K#^}VJBIf61Xh~>au#dev$4fisW9><&h4# z_k>FX>P<9R)Dp%(m+iIM{%0&`p3M4FY&pDS?^@!7d0JdL*Zq)> zN1_y0qgl0}0uFrBP}fcQ6GoHIQ>MbiUz`y-f5vckZ_(F>|BlC@bKO!XjL?DuJo*mm zvb5R{J)*=8mOyoBG#%DGZTqC0PAvKvs zx4>vC6g+vGt$-(7Hcq3U-cN1oat9jXG&xM$ zc$jE%rzS`Et)77Gc|Ry*h^~6H!P+RxW(3IZ??O@={BDIyHS+o8K2K>D(GcVhfLXd@ zs?_eHU+$RrVMVHn+H|P4kDh0I{@Y7=9O#qJq99jFIQ(0cJlI+_kvOgYTMe1PA8}nQ zIPm};%@)9;e4iVO{Kk2CtrXw&^1%r~@Y$XWzkE4G;T}J-kLRC*FY2t_`BJS6#Aply z;0$y1>ajF%r^LG%99OLUjqomU%aV1sivC{TDWbMeb$UVEbTN!Q6cu;F zc|~;BL$l`>r%zI}5EBQ{@#<7To5c=4h-Zt-e>H1`mZaBp-hm6z=H&n|HxOtZS;9EpQxTni= zT245wz^NK@fwS+e9NwSE4fu+6)vbp0kJ@7)qQm_-wxM1yt-$)gI zsEib{g#`061PG*W;AYt)9}XN_uP>&owPt&x1$o>k(EVGp-aStN|8h!% z8f-N-b+l3)v@ob>ty+kNpZ(VmF^$2LaQ;EX%m~k6@#-gso{J-^jba#KH#UlzteI7O ztWEm7-;Or!oa8$w>*^-^Wr^VGWlH(rlPvcm+mZG5 zjM`WasbVfK7TGVyKk5Cn_nV?3*+4Scrbvz zXOyZ~)RFFSZEfdX6c|-y%q*|;Wb$<`!z3D}sQq$zBTR-joWVsT=h#r3*!FM^B^F$j zU`tM64K%H&d<-=M-`_q{NpXRIWs9vVQ^x`}p4)Awf`N#8<5Q@}s8itU#-q1rKPTS{ z|Na4o94;wHmXakXln2)`HJ>LZFEpD5yeylcU6-aJb;tubK@s#gMP*t(qKKa?*pZ@) zOWSYmoz|*zH+-UNJ>QU3<>Hb*a01xQKGih#11&fCx4cJu#i`uHbd& zT9eBKnj&`^>9jGLj=64NUZUfsQ-QpBrGE^FrLK&~=mPlc@V#O_{!|R?jb_ zB=IC9GqR7>F*+e%R6S+1IePAZ28nM5(zlcIB|Z|HtPX@jP76*azOaC*ZtJr3UFzqq zCb_^Td@pG!3Db&CjCc&l9byv@Rd6jS(K7ZA)Ymk+Y)*`UnGf|vCGV!38kgv%U}?eD zR-nz-U$m{NG?XCmIV+t7TlASe@8>)b3wUMdQ}X8244&0zlKE68!WN9450=?9R~o&) zR@t7jVFTx5U0(HnUH@A@{v&a!V8D7ihLL+r`x|QqWXE;O$|Uyi#yWmAd3rtha?8?8 z@ei{HE2BIDDV8AQ)JZ_lG3+~o0R0>0a=V?t)%*7gdUr&vMU8}| z6#?qzz^M@{bm?$%k!KPke%)Zr_!4=rXa9k(ZfStKi4H38R>OfW&d;Xl@jBK~zyUE) ze^6tenw0OEFP1yojJ|QY=)}!F=X)D&ORz*ryaN@4{*VJu!U%rG&OD=4VKH4-_P}pp zVVr`w=Vd1iQl112>Ad@vTKVMWHu=L}hEVshyn_eZ2MaUQ9#nLXWUEyizK^D?EpwNG zx?SUhm}1=a4}f(K)W~+_lRxR<4 zj%{Y_ZY^ZJA=zj-u&Dji#1nv7ND z>xgef2q4fn&KxXcK8-#0l2vZk*sT|rh*kC1Id^Y-B(Lu;?m=y`?D*6t`if~*rewHz zU=pA9GXt?G;#emz#1wD<{~(3Qr*_=ylTPzuv7GGTJ}W-13U?J$y)^DVzD$zbCZ7=F z16jd*W4fNm#iz$UvX(BsOtP(bokj3-C_4MJvVNUL9*jZ=aN+8YnB+e znleMJbm>e1z0~)Pk7Zl#kM}c~r7)mXfn;w_R#?lOMY*ctjW}BW=XC`E9><_eNOSb_ z`UIg((Hr*g_?Z#8s@=9bGV}TB_rZPC%$^m0fB@#Gx#7F)vJW8Q*F|X~{Olaj-k^XC zM6ibBAR)TsBor~6>l4_seW05x!+{HN8pCj{E;n2~zkGCDHSl-{{=UCI;Z9B8)dUT` zOU-N^Lxe_O04L?h-SJc8^yC-qkZ)k){yQGM#b5h%_={y?v@CX6D8~?3S3FO>Ry>Bl zg?wYCrlc8~dyhZ6MKsi7-eW5%JuGN2>onASb{Cj!k7-V7R6Gp51tM7{-x6i!NZ5U`oNm0 zDA@BHGuRcGNZ7zLAJ27vLzFvT_cgl0h%zokduehLSkHm&bGKdmoZ;gLTZ+yB*2X~Y z3amGCLT)dpV^uhD(C8V}vL=xAh5iB!4K)icLXvNHQ3_DuPZ}2TaV*^w%@_FUsA45N zf_v|d%p0!<#`o?@e3@}o@=9t$UsIyB`?c1u8TQ{ACcn8V>LrG0P5(G_MiIU4Ab=R( zuDp@_$d6@8Lkkr_QW*B_5|zu#_wXw|@IUUcsnXO?)f;hJ1!v&b)?LoWe1V*8D*!C~ zL_y$sBS7JR1_hg62+2sf2S;TN?+&WuCTEm`7q@@DWe-fMYASrgg}RiF!^*Fb&$U~x za}RT=omHiw-*gFoWcqHABQaxZYhIkH&m$h@Q04nRt@x7xhO_ntHQDi|<*bb&Ky5uN zo?QF|E_!jl;d%*a+_tJ{0o+(LH}mySoF=zVzafr!qm9Ih7*uAo zSI7sOXF*hSu~uAq%t;S?Q}*U(hB3hg-?nhaG=3+FukUWe%c{lO?)IydzJ9=F3 zmz1(>8g6QjATH(j%ca_DVt%(ky%YY<>kM7P^KRw9MvD}<&UZH?r)%B!vI}ap7Yipg z*1FTe?xBd`SJk-TQ9PKl76P5eBhz1+lZsBX7mK$v5OKKFO<5Py80$0nOAS&)jaY53 zFfJ~~FfQlUZ0NCl3&6Tkf^20ri05#9y@V5hgoAayH=mkK@d#qDPYcAMOPX zfCF(9rWAZVmf?x?RQvcf;juia>#B{5CP8a%EfC|&Hs=D1A2+7_wd=jZ!4y2W7fJaN zG}zl~`v9<0p@W^U(U4iOnVI)_v6t-iodZzXnV|o~eotuh<+^W9#DjlTmz|hIoq+p}%d2X_LbC<=HG&e7JO0Gd{@cj@ zB*!a?{E9KOCVxaJaPz}B=-dRqK5SPz`y?V35Pe9`+vD(La`Ll(CDz&*AEs;*^LPf{ z-jJ+6PNxDWozMVGiMKh|Am!|=Yhocn!hE{asdQXyUQ*U>P$#hpbnoJu3VTPn?8;VF zrwX`Er+C>46kgdsoqL3v;TwXJl1~}m$N5=05dqk`p4bPBqNH=|QN8Bk{h(veWvb8j zp_ zu@?Po*lt=Quca_p%*S>9F931cSVD$MHdqGX$9qF>Vw)4g3~K||GJ#bm9n&l*TXB0l=yLY}HNz&w8fv`b6=Z-d z)!o3)J-FL9da=^_=?VkGNV+;GMKe45_aCBbn?vvp5cGlas1qoUOk;eP189N**20s< zQ1~p{smftq^RO=J=k@V7+L(T}g8)sn#6QK(@|mtfW~$q=Vz?N^GId(m#T}VhpuzX} zaAB``x~~ZuWxsdj-s^7=VSyXdXfV#lJ&fsn{;qAwGbufF=DhPJvP5I%N8k3Z)^%YJ z%dO&e`Yn=6=8jTWTG`z5y5zgV0gfN0wJv!+oYHaXAlcP3?o2YiAt*F@d`eJMGE?XH z_a8dkYpMC09lMI{X}!4CRpBN0P(gfJ72lC~Hmv;D$dZ}dZjXk6DJ;jmj0r5mNnnPg zfh=llDc*6`EgbWKhnNcOdExR*m*}6Gs%ok zD==!yv6AC=N zsrN_;Hl{wAfqh;S9)iD_5zpo)6cydkSO8r3RD&q0j-a@W=BH$)I+e# zY(gkYvp;Y}9|4eLnc7*Rs!fE2*XaiP6@wJ#7s+{{Xt*u~VqB#sxGL z58kK_n3QmO0fR?>TZl>=kN%_n@^atq_D#a-2Pstw24LOBSY#I{?ypq-7_k(a-gyc1 z%`d!LV&Y`5Gu@8$Xnh!tJL30_!fXXes;zz;_?PaVXFw1@p@5MgFm`^KsG+IX70y>% zX|zd~Vrh&eLw-`O&0jSFYD?a}V^0T+KSdduk z-WAlrsl?66hCszuWWuGx@io0F$^OeZV8VG^NyIh(iEq$tL-OvonY_>Eg=BS_C0U4*6%3LmT^@qI-H)AmcX~oG zs@z8;bype!YZxPcC4wt7a|abe5Z!{l9FnB%wl-<3XrC~ft{4_inIW#{Tf~0PC%_Ea zuXl`dyCu!qoa6xb?vjN6_6;tFHTYSEv*oe)UtMY6Hhuh=RtVzP6_xOiK9moG9TYtn z|DiAJ+4Um=Z32Iw#Ru&3j_*_(0e#={5qgzz0%NgHjV3Ut$YhjguRXwxUbr6;nAab# zNdqKLX0ALn9w^>dAbUyLn`j$?G#&_O@Q7#gikC4 zQC#>;O!%$p-S0_qDDboaNpgw4T@}vPZf;15iqDJz;2+NXV)n*wK5J&tgb90@?ECFU zms-%72w*PG)>X9Dgr<7&y#iopRA!c)xv?q%X_)9MY55+%>~C&a3VyBK#=eY|`5&gf zP3PZ(Z=8jf#4haXsJ~!tQ1&+mTjUES3}>3j#(m#Mi-zZ!bBJ+kt1Ne>nCaFL*a9TZ?!)}$LsKy)eml@DC8Dg(7JzCS9GZN@O?He|&*Q|PBq6HWFls?Q}Y$&CwSL9}3N53!bp_on<#&P?l@$pdA@evYikkpNhjPUJ=c(1&mGqHsuX-?&mhZ;%1S?+Inxx~?dbw{>qE7Hq0H|Bb7wjE2kAIvrfd z2;5x|?3OKk#0ecm>T>DQ2M>=m0pPHzi&|rOVHgM|f4yuzOyg3`l{gAfi7vF%G9@z~ z(wgdz?R&L#u%H`Oz_oN49SOSl-rkbr75n^9mK@W(w{fXgpJ`1$w)0AyVQe~6nK7)G z-=?DM{`8UjjzZob7?-L+pzSsKb$4M;t#^VOZ{0qU`|F{QlQIEXplD1vcn%<5SD2fl zJ|1QRr||FMpK_)G0HYKvsyXJF{fNd$TWc?LLW{niKsOTqNE+44?eNTI##=t6tTo~! zXS?;fIZBxN4qXjn4rD6+@c;ReH2n6z29dOhKMoK+qgpG*YmfHSzHc3B1bh#l@!Wfy{pnYK06 zMNLRd(wB78F%JYedk-m%%PV^8r@=Z4Ajl<_qlGV%GsXubAyN|QtVvq`{r3qf1ROlD za-yRzTpG#$)by2MRdrq02arxFr4?zAmM#&bySux)K@dbhK)Ra)($XE0lG5Es92)8V z7WeahT<7BF-YaH|Ip$b%{K*Y8*(zi1S(uoWSX`Dhf2dS&UnC+d@m^S)RkA~ z;{I9MmOA6%usIuI<9oHq#;n^c&O@9w#~?mKM1FbtkR)+^w_}yaHTiD{k7TyZh+x<) zf&F^{4*G#-5edjbe9hk1XO76X^65sV>pE{zROPz#w54t{D*(=LP+F)w17L7y(9GE@_M2uHKc0(BUjrM=DfijU+tj!8o0OR zj?g$W&SM9@t~I-kS&zqLTTbb)}BN)a5BTn1n3l>+6nGwc%uio?w%7Od*h%EXMc znbW^FTu*d^Tk}tCQv-CiEUH+kpd32x+fW|IT}lH|LAj%2lz!8T2R9H}tBOL(D(?9X zSo|}J3)D+NXuTy|XM6qn3Vw5RyiAdkm+*=9#D1V0_%!(7dUQ0_un!v0cX86)Vb6M5 z&s-bw=+F|N)U&ogy&O?o+>q|BE6=Y6*0n;nx9q{_BCDn20ncJ*mn4~3(#87~d00<_ z;{jn(xyMP~WqPT-o%u}Sxvh5Xx2AA*UHN8=AN1XCVr5}s8%}^K;92te44iP(D=*EF zDz$bK_0#ZLu78hrUF!*%x~)&tcR}DXrYuY$&_wPD$`a8_5zMh*+8O_?7!1~OkURX)}tj8G! zS%wDD2{Ido$;Um=raBJoB;|F9!P{n0S$C^85=VdH)_2V?C)MNE-FZeiQOASnGDW?2 zPJAypOj6^^@xpqDh_J`KN|IXp{y5*P6ZFErexeCB`%MSw3hRRt<@o0wraiRkoRF9Q zF>sdnF6n>myKrdS4+<&jPAy0JuSxUyxojsa<_t8dc=aha<@y|upYJowRrhD88DRN>#>P_VXs8? ziqLaL?b%AJw>H|uMJ04y2Q_)pW<@xN$>K}kqY7)9-+om>W_)gVJ^Aj9CXbV|Oc@et zXXGD#t^cb29;3l#+d%xr5dC|%{wY=QPP&K6978|Y-#5ACr-pH-Z`7+~Sw`snDBQfIY zygJF-bc+;5jjJL!OZ%bTl)YzlhbN1Sw`bXe>`K61y`I^queY|;!KR?8^jX$I*syhs zewXM_Ab`}lY&R0UjgGCMCKmj>elUi-2gBu667gS$t||*nU*uRG85rvXCA|DNu2%_>5laE;+&aeU#bY!sPaH-PHTX+_M9 zha2rh-|P7Jrv$e_`#b{YB3l0b(5)Fzl(=V$78A%5r6o)zdNyy`AO6{wpPijX#mmJdiMj#F?i*7;QDKTgP7R*~`YSzaN+aylt>PP{4CUl7g!6qE>hhoJM z|51V_WxwUC?t@>?NAw$e)}kUnUZj2*HL^P_ym4P-HA~9OK&+$Lc#o(qa4k?pk#j8lNXTO%Q9 zy+)h*8GtBiJsZyJPP|1$bY_FaW*7<>LmoS4;(UA+?5ynalqu=nnFS9IJA65k@j%Ma z;F=c^aCeMu%{XXfFgI{pg&QxGxJRT-czWg?1ZcfO_R_p~h*J|Dj!w&f~H_tNA%kbkwT zsq$;&B0(kaDke%M{jg=AaE8*s5jli&nCA?XdBL7WUcy z*8=pw7@?p|r*60M;q(hFeThw{o^s&QX5y+2Ac>c+(NCn*%oJsxB4#;D69z~})h4XO z$RCQ^ffBLNlS=GQk4myRALlq{Lc(AwXjMK~md|k7G2l3qm#n7@+q^svZCG6D8>`NE zV#qQBUjywMz26oDA1IkvF}{54BO)f-9)+Fq>~rlFGia{VeS2%OU|Cv}UDX}&XQR`o zI=2`%JmOkm2D7vB<%3~xTMXNX-og4+qkQ>dlN>8<|J;htzt4gZ!%>ATsav%=TD7Ot ziKR=@T6S;b9q0+u&LRjz0X}&p1&T8j(V|%^RF>M;pUrm!t}p!+(h2P>%)E%Qq?G zDMJw2u8v8uh4`o1VBRgQURe0+AS}DCDt+p$%xsM}@35O%ytgi(!*#LvxzY&K=2yR7 zJ03zwp1pbgr8npdBg%2TQ%yd-UG`}8ST!xq_rA5vot6Mo#%iu6u8uYn3b+wz8xkjP zX{swi(IH9;LG*vJ((Zx4v6V_;WeVk26Q2#yUU!S)MhCwV*g`Q_HBN&RdGRo87}-%YGA>#5s*Djo(3)LRIqG|8BWHbhWjl7d&!zX$zY z1r8#{X3VF1(RI!CGGdz~Rti8`g#sfSa*Ef)FVmXJ3aT)oCtlmJZ&mh-EN+}txl3X0 zC25?@kEnk{U@KoC-|m2sxAFK#pmTpY30xnDE2l^gxbiv~h$0yp&uvYt+ zCxdfZy|M|KQahNYrK}+pHW)T@&<*=(RI5p)h<_>fiZmy{R6y{@Ce#LW{N=&59AlcK zf-<$2e{B?$-j%u|w-xgx);d^#+5E85lCyFXERS`z#d;A=+82x?4&rT2=04^7r*In+ zVK1uiQa(CgCp(|&o=}uY@kH`#TgkRmcdiJZuC^-S@esZ2(b-}sOzV$P|w~HAbmHc z5B%?PP{K@|du^Qg0AXBOmol|Xl9gL(k9s(cMrvPyVND<0VB-w#A^`z7*9iXMSvu(# zl3%XWU~){RW8bq#$U<2o&*1)mQwKIW;c`elzD#sKf^*eL0d$Sdb<9tiJT3GTLLuRYYFHyz|qB;iRX}RJSjk^enfcvl+|7HLOC*K zV22dl6c~64G!`{HDWt!ZmGBkuIU@)P>*EIs2(`Hm4Xtk7fyE!IO|AV)$kF<%NgdoE z4BFmLvs`bGoLGyc7>WEJ%V_NMH3WX~P=JF#fcJna)w%>^$to9egz#LPaIGSy{`=5D zYbE+iUhuQBqBGmu<@0y@!_XVV_NDKQZri(owd#6a_qJ%Ad;g%dXZ`W-rL*RIyo$AT zXTo;*#x&CdW7y>N8-m0q9OvyO)zyAlYvCO*>S#_Yen^>-3!4cUG)hwR4V-X82w)vb z$n?Jfb-&zaG0L6d;?fY@#tcss=~>CL=X3I6z@t%j-@xvH5n(vq zi3&^nId^WfiT^dmI_7De%YC}PN%ZA?C#xh?9BAb*uk3FDfyM?X_~}l@n({L-8Fj4e zilJ4L5q+@kJ?B;D*|EQF7oKDsvUpvrO88G4+Wu}HXj|tf3C}d$?(7~|m(wI)vO312$s(NOwew?~{cgxD%ZnJ9(3<5W0T&mAkxD z*x;V_WhoJ>2ac;o?eq>$22~>N8)7a-q(pKWFYOLM*!7-!4*L*I9fOu*kvB)=u6Hj z8>cE=7~uJBuk|ya+Fuf%yRp7%>&T1nbq)em@n< zMXX*s(O~_?tX2-xx+n1(06UrX0X~Ze_19Bxy>hkNZRf0OZp;;jxd$A)=%FJ-bFAKA z^=3#Rca&GtYIi2GC&E9i%q1aia(ZN5CO}MgN0)C78BnGjOdFW1sY>K_ujrr%UjtiA zhUQf4^68C*gUd-T%4ZWJTq!>WaPcaqoU7mx{2M|AR(A5$^>ZE2p?_XVh#5Nk1z`53 zmTzBDrL|LcHI;Qj{%mv`RU3_QGNp!3S^qMsTy>qTTqwnjU$GeTgb!eqeT7Sn8vz=y z@)Fx_Sebl(MxTm`cT==Nmo^gbYc(r*bsJ;`=*#T#iyI@Grr)Wu=mi#*qA6%mXa2JW zv1;EHC{-u{WHcQ}Xam)S_yFsg`%C#q`5Ga%Cw7FeLX$^iCIk;}289L?4s`|Ir0%f# zTTi{!qI_4xTZ9`)ZVr6p*@n))jb+2nI-P=Ip1s*nVqPZQI!;+gZw;lrwUw@j6OVJ!J9VcAJZvS7^$HV;!bVRjkLk}PN3LVj|0Zh)aInm*&ga%(T%>#K|YO@Ak zn9%Z*)5@YvIvd=^K=B6AUs!A@WntkGOjGrGBY+1(gJ$D5CGX!b%)$? zJ2H^Wh)R`FPG;k(vk*yl+lK$Gm3}V5epIB#8`y$#q$@=#y1k$Zo;FmagGdrq2T&v)TMe{bF93 zt5vFL>kdey<#1vK5*H@kT~P{<)7x+b(Q6=YVDOP zOMW756wTLeWijLaqW4@TVfcZLLFN9!_1^cc=g2!GSZwRj?Bw4->itSPK2cE8Kf(Wt z6%Bba?hF);$RsMANnb?E&jFx(bJamNp`X>&KPl4BeRD1hMbB~6P-|wl_=9Y?=S#F@xK)mjzzWd7uAX7$?5bPV z{n&-z7v9(S%vR#PA>&u3o_W{42v6JBq>uZ;mv=vv5ZC+5kc)i+1%z#|?KlR(p}cMH^+;T^^&hLyMa-2h=Kf$qu~>Bz(#hCwfkTM)Wf$Hp6mh z%m-5$Csm85)tF|~F5w&Xvsu6WMb7DDwYFci+LbBK+P6>ttXuE(SGn`-&;Ih`tZDrc zN|T(Olt7AlLA`rUkUC>3$1ZOe5uc^wYDqv5bEE`+9tgoq0P~O;$8J!$d-dqWP1X0i zh{;xwgwz!FOJXB0e5v;@iz|_VDt7#@u6V#XcEz4X01u;9V%^ehJo#<(qt;wopt+&l zLKM@2I{ug8euu#-)496!uy|b9xAlHbIBv+IY49r94{~X71!5x?3y4S>3gyJ9A3KX4 zlN7ZA;9^ z{f``y_~v*wwar()whD$2ohz9p@g+fy+Kj_%zKu!7zk}||TBeuGj_kn3SB7ag(jZZX zzLFI(iiGluU-6~XX*ue19yxeOY0rjgoBgi*2x0y;pWg~(l%dvHiK6u}6@Dd-YObz~ z-+d{U)Nhr{>8^WMnuc_#smLJ8t{Z60rK;s zXAY-6TLNv;pmIo&1H`h?+DU(VB|y#yM>2MuO``s&K|F=?wP!PW$}=z zOp!WfjkQHW0<-gMp}!r6R?Yo&ZZh9(Xpl$#l=kN=u$@7COO1!z#kFt5PMX%s$CCCd zm3WRR+hlt&lUBrQ&zA!w>dDWLKXHkmEdToFRzxhR)iwzEL}(D)9OznR9CTDdQ2jz& zQ zc}IvP0&q$HAWkJVBhLXNK?uYkk|I^^Eld2+@MKCVZzAgkn7~8}d|8O;jabs1?I0jU#vlSS9Qm~ zZZFf1e=2G4cU1%04!%+MrSsbce_R2y4~T6NC|D4?PdF`I;<3FYs<{vdA#*m=`jy^W z8HXuI61_v@IVSX8J z{~FReh-;sCRlfHtxf$81{>>`b-NjrzDuhqEmZw6cqJ6ehw312Ya(@XLsH@I3Q6w^m z_&&es1y`m+UDf^PDl$<=h~^&3ujcN}DpXOfd@Xdyj%o}QOT4-DxCHgYc}9hdTaW`} zN74xA2MvbzQjv*YrV>z z`ok-%TBMw`;%Sp%wjgcpW7_vs9b#CvkG|Kx>z$U zXJe-xTq(X^aM_qRK^`%&EExkb1|*3*)JUH$aK*Ot1o6~dR8F<0Z0)7`xFN2EtjF)T zowO`ggl2u2GGupbJoeSOGK>THzMECDZCRHz2A0bwq`J|`GcnT=7UGdY<{_^=xijb_ z%w1~y_VUS>$xtCS+EjRs+k4}+;jWF8a%#|U2Y4rlh=&U!HORD>1Qs;ZDfGv0^GIsE zy0USdm{0lsExt02w>qyVdK0OTl$w((T^Dzb z%2IXXO7WiX{Ner2-}Pv|4k4w~pN)d+xJsyFVdrOWiuR>k$~l$dXiCgK4{94Ow;}*Q zmpS3%7MaCgF4MP?U|P`O!)~=y?@-8YCI63~C}XvR5#!CKj6KI$6s^ixAc9C*L(%I7 z>i$aVzMC`rDi}A%FOioiKNBH_W?orj9bf`Ggj<9L55J1pz_ zf|x|x`8RNEwJGKIwEFjD)|;ZIl}q)u(*CnG&;zU%oxTRV&0Z&Ir7*-!V4Hz2;eHx&&kb_fazvMBf)o~e2w31PupX<|xbi}fV)p{auf0a#cb;Mx2RW5S6ORY%z*-ZR1h8kj+(w9l63>>x( zThIYZG0NcP)OOO(u?(6Mhd%?9(yG2@lc zOU2trL!&lkIaO$XDyNPP27c$)+coZ7a_OU?!T8nQ0#zgv}|Ba0MO|lzK6Jl|^CG;1(>#Q=2H!zK~OV zk95*wt_S<91q(Fdh{T3u*uS3Dzq%JaPozktx98^UOV}0teef1(sf7d;@{=%ryWo6{ zu|4)E#Y%Od&du--v)#^7!myZiUml*X+qM6X0k_wlO@#(^A82{NmL!I*Cg!_I!P;KK zrZW>THOK~o*BcvZcx~V@xxW__kB7tp*sw{WS8`Ru8Y{mAE#tK^Nj!&)@>bZP!+8j@ z{&Mf(&bjEUFl%QUUP5WMf#X(ygV-40e@Siie!soqqo!oZ?95)2Pu?ETUX_B6K8Y!e z;2Km>+(hx?5HXf&ur7h*r7OtC?Ove1d~E|UD1q45%h#DUm&=lo&bQzgv&K{MFj zmK0nM1o;<2Me8yZ3Q{Ywb>_wt5c@A7nDKi#s;5wCL;XMD`X=7ZN=nKnayTP4!jNpd z$pP^U|5G!yf7M$zeN{Dnr^)WNi`io7abAYdYk#_Wi)SnfrQR?{MQ`^Gjdmx`8kzhJTj5^N#o?E1g@gN-j9V>_t6a-5w0 zQtu8jilt2$blEFcfA(c){#Jr7kux#oylHnuHUjj{A|!FLFe_wV0d8v`#6hr`H@7h z3pd7QRC7k&#G2+m&(ad*phn|NPkwn`VqF)1cF+K!~F$LV0ZZmp+x_VTlV zn$b9n%8d>(N|Q(yR7hs^_$l79iy4;LaCY^z$obkZ(Hp;CwwHo9DRa(p8W|!qC^~x( zx>Z}f&hlk(CUmLxlg9!C@>4fcXKFL<$mVcf{69QdW8|1&zfdPtM5Xd$sk3SbSzTfY z{cNnZg_x)zHYMG-AD_eoUL;LZ9mQT}e0p(y4#hZc!#&^S}i%A z5Pr7s5ocKj2g^0`=X1{)c#eL-4Q6{~EyF6Xq-g=RSiYOI6+4rAEKh4njq80}E;wMm z!@5ti$F4?bM4+Z;z;WGk^nT^|Bek*>ArfT1yGrzU>>KCg`-gI7eK>%-g)K zc|N{;F@auqH$0iD`v2!v=`O6UutRDh zsI%Vn*jZUP+$sbHj9d0TTVv6C*IKu9sNJ)O@9F$)m_5+FZglM+q@dkrI)SDHAjg(l zC}FZNG6Z5H02-@pl~NR=L* z7~_aT>ylK$r%#kD4)Bycc@}338D&l+4RVl7!#a?!rKVltrXtH^HBzcibCJXGH*Bq` zU$Lb_GjwCpeGrSeZl#buS7f*?7@%MI@h+u8rl;xe7g;X^$Y@kCv_(kZD&2ZBh^m@s zrMxVy#?DrfEfnvcy$OH%Xjx+F-rnyNdPE~oE5%D%B<#ZC@GKDCf-%d4SDGZIBp&_^ zGnAp(&nT6q-AYN09}tz_S#Z74Y2_{dEuWbK(8gou!6DWhaY$fPhguBAju8IZ*4 zH+>Yo3Swn%?QCzPJb)z~62*@%LXd_0%5r;#=}Ow-E4Zztbyd`qkB2sbLFibG8#v|Q z`?oI4c)U9doA7a1Da(1#=T*&dUGp-dijX>1Q!2S7&Y~~TJ%7p)ePg|Pw*)fd$RJSv z{gNjmQ-GA0#+Ot7H$TH~d`zpec&{<=>{qF48Re27o!#&lL6m(foz~*lam*oAk2ZUI z!eK7>qi_eBb}v*oP$kk}z{~0Jm7E^6PcPzdq{+j^5b7DzXgv4Sb*;;yoTny`3u)CZ zW#7i&Mc8Z{-iOo9r4vHt`!PdT>!{CZ`I@ossvm}ZZlR~*6Ri<@@}qC8av54Z)rf~B zJ+P!rh)&c6UDM4aJgBZCe>U%?Ssh+Cp|+m7RkKk~fdx0@1?DDC`Vd*%<0Tb|$yRSS zJu>`8y4wrgoV%)2gpmHKm@aY8`?A~9-B%*Ew&*ttJ+IfN|ZURuk>8 zi5~w^#eOPTtb5LaSE}`irN>@GUEqJD=`Kg4nPlcHmI=?C`&zZQb8_*a(;fmDT|fQ) zYV_{P%3b8Yna-&OO z_ARS_Yo#O4$E&b&F5aTZrx9PSI^?~?ONU97g3&i$%erHpD>Zu&pJyiz=^M`}P*~P;WKp@Qpohd14 zC&kxYO4nZ`538kM^*O(_m4t=Rw3NT&f|gz@zvYbfdA~8ESd3KAo4=d(Djn4UWXQy4 z`g$7jZ51v@w+fmJbG^r zn@ll)<-SWVV9h?XCZ{w=xwhOzV=FD|vYbLGRgMiVTQC|bb4}s42TKx%EGrwC@+G5t z!Bm&eLa?Fv!&+7@^1G2TP78~k9lH%}GCuT=3n8Bt+RLNz|E5HTI|vQ5d9_Ucc#E36 z1&B1g9|FR8^;x$$3?YrZwV}|1w7!~vZFOiID&dd8b8}sq5c{fE-#9r8rhF@>eQiBS z(v0Cnnw!>e?r!9^nqsK=erbf0NG1(#ZA8*fkO(ER#jPVq6>T>urmI8|W-f|HWX$>J z(Jo--=UUh+Go4vTjJXNlW%=SVxo&ckqnouQF3f%!*F$M|lgSVEA`2fWusoBu7#sUR z`iT(5JxR{=KPJbl*rRs*%)}VmLw6;oR^-L!?ys#jlVr-(v*>;67hX+I1F3;h+kKlW zBZLo`|A><^vaO}T$7d0ABrB_(75i~wYv!SQ-5mOC!ytn~n%baAJ8^^%+Fy)X zbR7fML6a=uu5|foo8pH6_fo_1&ln#Epv{$YkZF^Pa( zun~T2W4P9G@we8RulFk0}r>0j1PS7 zj!tL-8M3=`h2)cp0Ts4Q9k1z?snVPh(~5P=_U={i7&P{VBN`5n$(0yp2G>E)0T`)o zPKlS1LyNt0nX#y3O%^Nr#8_=Htm7fS!H%!bXPpK=dLhE-sw}1Yz8re^3I(-xk2CQ@e>F*;R*N(UM1(BI+z71h z_f&fHctIWvES%@Bula0%DSS%UR+r|x`N!h+u+*iDPajTcHbH;iKY?wP-5yHs2o5H^ zzLIOba8S)@@!Houtz15T16o5;m15zD@SnJ9^FP4S8HcBvY;v}A@g5Ms0(Lly8T}|i zFFfB>c$Cl7QNtInVv_M#s{7z^)FxgemM-48F5XNQu0zSK0NsN9PLYxuPVtu;tg5-s zl!!l|h(F+A!hzK6ow!ONBO37O>}N`UksMD6D#{1XhJ4!mk@(O1GK9kBZZXXKg=c_* ze89!I1R%9-)bk**e`jNC)9R^Km|Q|q{oQtKtI@!TO6%==1-gtq6DLS^Qgm-}yW}*sy;_5hO1K|7;Kc`!^whFzs)=QElft_f2N5 zno%Fd!xSR;b-yh$0r$DTgT|o|Px$w{s{2sfCyuw?GXbu@(JaF(K>&77R7CE+wT>?U zi=;n2diJyyW_rTIe|91Rt|dUd`a~%Xzxm*O)*)mzAw`IiMJOKrJZJ@9ZDwXqqGIRj zI%UheHjm$7X6M2$oOa@ADH_c}R^R85+|BB4PvwH1^Kmc$NdGPJ@nY&oyN9NP|07Gd zD2F(HbkEsAAH`@Q=I1KAf{qib9LhOhY|;^wR@UXY6m5>WwcdFp!h|zR0cV2eoN$=~WHm*Mhw4aw$+Dk{68jLGNK;1i&4%&BQss9HD{ z5!_2fi;tl8e<~s&HLKe67ztS|#To%Om(Gk(^O@sio%-Ft`{sCQ8cizS2gGJP#n7tG zyH}GbgDyAcYt`YDr_7PE4(;{<`_TzQ?1)$pG8b99%@^QyK<+|W@qspf`e_;jOkhU? zG7fTSMea|pu|%v_9&fzF+Utzr#uuj<8ZsNdIpm18bp2_-Wzu$)i|)>EI|x_pu1weL z{cy}HH~iKfrEX)n?_G^sp)qQ4I3(Ky%;h0ST*2E%I@JT(j0|0VCoqfCfA{EX(R&uq z3@429^d9X(R>ATv;cLLW&=^*OUc%v0+3khB2K#f1z~c}kXEm*w&C-{`C~gnZ`oa%O zsECow$DZtE&Fv=+2{01F53-P*SCt7@xl4$#zGzK|e&o;2O$I>h&QOwZo^H=qZvFvn0JX>`IcR5+yW3Oki+pJ)1_E;RA$dG3j_*@ZuMPsfCLV$3_ z`@O7Mqz_QR3qKLGAcavTY!&{O1Yj~2X=z4S7w5bD3If@IZREhVp|ldUiNtkI$&a0G75)@6F_e6nBQD)#(lif6!l zcx4;jD4HwT#Hloj{c!%(+RflUi$6aXo>=YGG39SjL4fcL%LSNSimJr1Z%7xO(%={* z#UrU~T?#tkh4Uv~|D<}0A*CB|XMj@E_1kwi+@WpDQ#|!Y>O39`)fK==5XaNt_t~() z?X%{i#{^K8xsaJ?&9`~Uu6V8cpPRBX;kM29G~o@@HRkG}s?ALN@?e48Pv8yrdCxeE zk|_w3xGGSfKZ9g=>gv_Tb^V@<|E4hFheNPU zU0Gq9do+2QNj>)bM-Dd|9B>~$+79$Q-P+e-S>j% zU{OFC6V3kX#?`t+!FdqtI1tQa2ArpNvVty{bUu62UW%|vfd?6PF>oL!O+@glPi8+7 zB5sZo40dNJGBqZ5G`{v3-`sq-+^uZBpv%ZNdC5&faQXKqz4;(;Ml$cC*j|f);l7Xd zOL+9KyKVcJ?Y{gNj0waMI z^c39ml&4kiz&y5A1NC8gRLfa}Ii@rv`OIb8NyFhnvtF1d0C2HlO8Mul@3eG_>K)~v zpe5@6uNm*(XTSpXyOS=RbXV`{2~#dOX;MLU;7PTgp18^w-l@2;9kqA)cxEDWV3z|v8dLH zKLxt{2%IROZk?>-K;x$GyZ0s}r?C-7hRUrE?+?QS_p68=q)+9)7=@k&<%<{sb87t; z@E8invsgejCXN~1!zQqc>S-qy9kDgT>Cob(gPFw8)vPnI0vxq8Xd;IDKymN7w}j0Y z^WPrQ{BIABsRil_I2>AYLASh3>vOC$)mf{9P|lK0FTRP3Ad?EEeo_~Kw~XAd##!|X zg#qj#m+30I1OH>9bF9dLu#*u?$PNvu@qeo>GZbwwKKOXsK3En{1)yB><^Jdf@&$cD zuExv3nY5xY)QLul2So6I&$0je#-XvPS}v&0mZrkkmpY6kV)Siq$mHcI62U(jbt zR*FDI&3L*2>jUZ7{@SUCw+*N&gFBJH`j-WQj@v>9E0y9Wn%~4btF-D0gS+rOO8|SW z^1|Y5B1yiO?HMy|=BVDvm5bRe@*EBxqzR|u?rBiRfT_!UN=&J3uJTV30w&ChOOOzS zvfD`0jB?+NqbhKz(Y;kEo;;6O$(p`$Ez$~M2l_mBQcu->*TkpkiT!VSS+AcMM}abr ztVi0AKnLb*CYk6JpF)u33dGXs9cw<)XeABb$0r`&DblhG?Mk!@mcQbJYdGk3y`=C{ z08%;Ub=NBd5pK%=!Q4Nqpq}#I@fy}|rt6=~#=tz=(}`X#$+S&H6qNyvO5;$_Ik(yDl96zAYuQNj3zf* zO}0Lxm{H1{ShiwC?W$O#d_dKlS0~B$pME%PskK`=j})F6O(c^Ajq?|8{x>8A#}YF= zzK5s+=5%{^H0-mBov_@MJO6noZ+1U@=9y|U|h(5!)ZE&39IqVNQ4SQ zT-pB5>4LTY7xBF8)t-R$<;BuG7khqkml?h`ZN~8?2xuQvnG;8U_)sv+=U$z{rQOHLXIcw6#LbZ}JV5BFqtvFSQAC&EC1C0 zq!}CswW&$~^P4m)

-
+
{children}
diff --git a/app/javascript/mastodon/features/annual_report/archetype.tsx b/app/javascript/mastodon/features/annual_report/archetype.tsx new file mode 100644 index 0000000000..fffbc1803e --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/archetype.tsx @@ -0,0 +1,69 @@ +import { FormattedMessage } from 'react-intl'; + +import booster from '@/images/archetypes/booster.png'; +import lurker from '@/images/archetypes/lurker.png'; +import oracle from '@/images/archetypes/oracle.png'; +import pollster from '@/images/archetypes/pollster.png'; +import replier from '@/images/archetypes/replier.png'; +import type { Archetype as ArchetypeData } from 'mastodon/models/annual_report'; + +export const Archetype: React.FC<{ + data: ArchetypeData; +}> = ({ data }) => { + let illustration, label; + + switch (data) { + case 'booster': + illustration = booster; + label = ( + + ); + break; + case 'replier': + illustration = replier; + label = ( + + ); + break; + case 'pollster': + illustration = pollster; + label = ( + + ); + break; + case 'lurker': + illustration = lurker; + label = ( + + ); + break; + case 'oracle': + illustration = oracle; + label = ( + + ); + break; + } + + return ( +
+
{label}
+ +
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/followers.tsx b/app/javascript/mastodon/features/annual_report/followers.tsx new file mode 100644 index 0000000000..196013ae9d --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/followers.tsx @@ -0,0 +1,69 @@ +import { FormattedMessage, FormattedNumber } from 'react-intl'; + +import { Sparklines, SparklinesCurve } from 'react-sparklines'; + +import { ShortNumber } from 'mastodon/components/short_number'; +import type { TimeSeriesMonth } from 'mastodon/models/annual_report'; + +export const Followers: React.FC<{ + data: TimeSeriesMonth[]; + total?: number; +}> = ({ data, total }) => { + const change = data.reduce((sum, item) => sum + item.followers, 0); + + const cumulativeGraph = data.reduce( + (newData, item) => [ + ...newData, + item.followers + (newData[newData.length - 1] ?? 0), + ], + [0], + ); + + return ( +
+ + + + + + + + + + + + + +
+
+ {change > -1 ? '+' : '-'} + +
+ +
+ + + +
+ }} + /> +
+
+
+
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/highlighted_post.tsx b/app/javascript/mastodon/features/annual_report/highlighted_post.tsx new file mode 100644 index 0000000000..3a2a70713d --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/highlighted_post.tsx @@ -0,0 +1,105 @@ +/* eslint-disable @typescript-eslint/no-unsafe-return, + @typescript-eslint/no-explicit-any, + @typescript-eslint/no-unsafe-assignment */ + +import { useCallback } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import { toggleStatusSpoilers } from 'mastodon/actions/statuses'; +import { DetailedStatus } from 'mastodon/features/status/components/detailed_status'; +import { me } from 'mastodon/initial_state'; +import type { TopStatuses } from 'mastodon/models/annual_report'; +import { makeGetStatus, makeGetPictureInPicture } from 'mastodon/selectors'; +import { useAppSelector, useAppDispatch } from 'mastodon/store'; + +const getStatus = makeGetStatus() as unknown as (arg0: any, arg1: any) => any; +const getPictureInPicture = makeGetPictureInPicture() as unknown as ( + arg0: any, + arg1: any, +) => any; + +export const HighlightedPost: React.FC<{ + data: TopStatuses; +}> = ({ data }) => { + let statusId, label; + + if (data.by_reblogs) { + statusId = data.by_reblogs; + label = ( + + ); + } else if (data.by_favourites) { + statusId = data.by_favourites; + label = ( + + ); + } else { + statusId = data.by_replies; + label = ( + + ); + } + + const dispatch = useAppDispatch(); + const domain = useAppSelector((state) => state.meta.get('domain')); + const status = useAppSelector((state) => + statusId ? getStatus(state, { id: statusId }) : undefined, + ); + const pictureInPicture = useAppSelector((state) => + statusId ? getPictureInPicture(state, { id: statusId }) : undefined, + ); + const account = useAppSelector((state) => + me ? state.accounts.get(me) : undefined, + ); + + const handleToggleHidden = useCallback(() => { + dispatch(toggleStatusSpoilers(statusId)); + }, [dispatch, statusId]); + + if (!status) { + return ( +
+ ); + } + + const displayName = ( + + + + ), + }} + /> + + {label} + + ); + + return ( +
+ +
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/index.tsx b/app/javascript/mastodon/features/annual_report/index.tsx new file mode 100644 index 0000000000..91f03330c0 --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/index.tsx @@ -0,0 +1,99 @@ +import { useState, useEffect } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import { + importFetchedStatuses, + importFetchedAccounts, +} from 'mastodon/actions/importer'; +import { apiRequestGet, apiRequestPost } from 'mastodon/api'; +import { LoadingIndicator } from 'mastodon/components/loading_indicator'; +import { me } from 'mastodon/initial_state'; +import type { Account } from 'mastodon/models/account'; +import type { AnnualReport as AnnualReportData } from 'mastodon/models/annual_report'; +import type { Status } from 'mastodon/models/status'; +import { useAppSelector, useAppDispatch } from 'mastodon/store'; + +import { Archetype } from './archetype'; +import { Followers } from './followers'; +import { HighlightedPost } from './highlighted_post'; +import { MostUsedHashtag } from './most_used_hashtag'; +import { NewPosts } from './new_posts'; +import { Percentile } from './percentile'; + +interface AnnualReportResponse { + annual_reports: AnnualReportData[]; + accounts: Account[]; + statuses: Status[]; +} + +export const AnnualReport: React.FC<{ + year: string; +}> = ({ year }) => { + const [response, setResponse] = useState(null); + const [loading, setLoading] = useState(false); + const currentAccount = useAppSelector((state) => + me ? state.accounts.get(me) : undefined, + ); + const dispatch = useAppDispatch(); + + useEffect(() => { + setLoading(true); + + apiRequestGet(`v1/annual_reports/${year}`) + .then((data) => { + dispatch(importFetchedStatuses(data.statuses)); + dispatch(importFetchedAccounts(data.accounts)); + + setResponse(data); + setLoading(false); + + return apiRequestPost(`v1/annual_reports/${year}/read`); + }) + .catch(() => { + setLoading(false); + }); + }, [dispatch, year, setResponse, setLoading]); + + if (loading) { + return ; + } + + const report = response?.annual_reports[0]; + + if (!report) { + return null; + } + + return ( +
+
+

+ +

+

+ +

+
+ +
+ + + + + + +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/most_used_app.tsx b/app/javascript/mastodon/features/annual_report/most_used_app.tsx new file mode 100644 index 0000000000..2d8c8aa582 --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/most_used_app.tsx @@ -0,0 +1,29 @@ +import { FormattedMessage } from 'react-intl'; + +import type { NameAndCount } from 'mastodon/models/annual_report'; + +export const MostUsedApp: React.FC<{ + data: NameAndCount[]; +}> = ({ data }) => { + const app = data[0]; + + if (!app) { + return ( +
+ ); + } + + return ( +
+
+ {app.name} +
+
+ +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx b/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx new file mode 100644 index 0000000000..0e4c78f639 --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx @@ -0,0 +1,29 @@ +import { FormattedMessage } from 'react-intl'; + +import type { NameAndCount } from 'mastodon/models/annual_report'; + +export const MostUsedHashtag: React.FC<{ + data: NameAndCount[]; +}> = ({ data }) => { + const hashtag = data[0]; + + if (!hashtag) { + return ( +
+ ); + } + + return ( +
+
+ #{hashtag.name} +
+
+ +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/new_posts.tsx b/app/javascript/mastodon/features/annual_report/new_posts.tsx new file mode 100644 index 0000000000..9ead0176b2 --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/new_posts.tsx @@ -0,0 +1,53 @@ +import { FormattedNumber, FormattedMessage } from 'react-intl'; + +import ChatBubbleIcon from '@/material-icons/400-24px/chat_bubble.svg?react'; +import type { TimeSeriesMonth } from 'mastodon/models/annual_report'; + +export const NewPosts: React.FC<{ + data: TimeSeriesMonth[]; +}> = ({ data }) => { + const posts = data.reduce((sum, item) => sum + item.statuses, 0); + + return ( +
+ + + + + + + + + + + +
+ +
+
+ +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/annual_report/percentile.tsx b/app/javascript/mastodon/features/annual_report/percentile.tsx new file mode 100644 index 0000000000..a758db72c1 --- /dev/null +++ b/app/javascript/mastodon/features/annual_report/percentile.tsx @@ -0,0 +1,53 @@ +/* eslint-disable react/jsx-no-useless-fragment */ +import { FormattedMessage, FormattedNumber } from 'react-intl'; + +import type { Percentiles } from 'mastodon/models/annual_report'; + +export const Percentile: React.FC<{ + data: Percentiles; +}> = ({ data }) => { + const percentile = data.statuses; + + return ( +
+ ( +
+ {str} +
+ ), + percentage: () => ( +
+ +
+ ), + bottomLabel: (str) => ( +
+
+ {str} +
+ + {percentile < 6 && ( +
+ +
+ )} +
+ ), + }} + > + {(message) => <>{message}} +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_annual_report.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_annual_report.tsx new file mode 100644 index 0000000000..8b92f31add --- /dev/null +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_annual_report.tsx @@ -0,0 +1,59 @@ +import { useCallback } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; + +import CelebrationIcon from '@/material-icons/400-24px/celebration.svg?react'; +import { openModal } from 'mastodon/actions/modal'; +import { Icon } from 'mastodon/components/icon'; +import type { NotificationGroupAnnualReport } from 'mastodon/models/notification_group'; +import { useAppDispatch } from 'mastodon/store'; + +export const NotificationAnnualReport: React.FC<{ + notification: NotificationGroupAnnualReport; + unread: boolean; +}> = ({ notification: { annualReport }, unread }) => { + const dispatch = useAppDispatch(); + const year = annualReport.year; + + const handleClick = useCallback(() => { + dispatch( + openModal({ + modalType: 'ANNUAL_REPORT', + modalProps: { year }, + }), + ); + }, [dispatch, year]); + + return ( +
+
+ +
+ +
+

+ +

+ +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_group.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_group.tsx index 36f033261a..d5eb851985 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_group.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_group.tsx @@ -9,6 +9,7 @@ import { useAppSelector, useAppDispatch } from 'mastodon/store'; import { NotificationAdminReport } from './notification_admin_report'; import { NotificationAdminSignUp } from './notification_admin_sign_up'; +import { NotificationAnnualReport } from './notification_annual_report'; import { NotificationFavourite } from './notification_favourite'; import { NotificationFollow } from './notification_follow'; import { NotificationFollowRequest } from './notification_follow_request'; @@ -143,6 +144,14 @@ export const NotificationGroup: React.FC<{ /> ); break; + case 'annual_report': + content = ( + + ); + break; default: return null; } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.tsx b/app/javascript/mastodon/features/status/components/detailed_status.tsx index 5811efb190..deb330b9a0 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.tsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.tsx @@ -49,6 +49,7 @@ export const DetailedStatus: React.FC<{ domain: string; showMedia?: boolean; withLogo?: boolean; + overrideDisplayName?: React.ReactNode; pictureInPicture: any; onToggleHidden?: (status: any) => void; onToggleMediaVisibility?: () => void; @@ -62,6 +63,7 @@ export const DetailedStatus: React.FC<{ domain, showMedia, withLogo, + overrideDisplayName, pictureInPicture, onToggleMediaVisibility, onToggleHidden, @@ -319,7 +321,11 @@ export const DetailedStatus: React.FC<{
- + + {overrideDisplayName ?? ( + + )} + {withLogo && ( <>
diff --git a/app/javascript/mastodon/features/ui/components/annual_report_modal.tsx b/app/javascript/mastodon/features/ui/components/annual_report_modal.tsx new file mode 100644 index 0000000000..8c39c0b3aa --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/annual_report_modal.tsx @@ -0,0 +1,21 @@ +import { useEffect } from 'react'; + +import { AnnualReport } from 'mastodon/features/annual_report'; + +const AnnualReportModal: React.FC<{ + year: string; + onChangeBackgroundColor: (arg0: string) => void; +}> = ({ year, onChangeBackgroundColor }) => { + useEffect(() => { + onChangeBackgroundColor('var(--indigo-1)'); + }, [onChangeBackgroundColor]); + + return ( +
+ +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export default AnnualReportModal; diff --git a/app/javascript/mastodon/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.jsx index 64933fd1ae..42a00acf81 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.jsx +++ b/app/javascript/mastodon/features/ui/components/modal_root.jsx @@ -18,6 +18,7 @@ import { SubscribedLanguagesModal, ClosedRegistrationsModal, IgnoreNotificationsModal, + AnnualReportModal, } from 'mastodon/features/ui/util/async-components'; import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; @@ -72,6 +73,7 @@ export const MODAL_COMPONENTS = { 'INTERACTION': InteractionModal, 'CLOSED_REGISTRATIONS': ClosedRegistrationsModal, 'IGNORE_NOTIFICATIONS': IgnoreNotificationsModal, + 'ANNUAL_REPORT': AnnualReportModal, }; export default class ModalRoot extends PureComponent { diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 7e9a7af00a..ff5db65347 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -217,3 +217,7 @@ export function NotificationRequest () { export function LinkTimeline () { return import(/*webpackChunkName: "features/link_timeline" */'../../link_timeline'); } + +export function AnnualReportModal () { + return import(/*webpackChunkName: "modals/annual_report_modal" */'../components/annual_report_modal'); +} diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e91d6e52fc..5bc8c4ad71 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Oops!", "alt_text_badge.title": "Alt text", "announcement.announcement": "Announcement", + "annual_report.summary.archetype.booster": "The cool-hunter", + "annual_report.summary.archetype.lurker": "The lurker", + "annual_report.summary.archetype.oracle": "The oracle", + "annual_report.summary.archetype.pollster": "The pollster", + "annual_report.summary.archetype.replier": "The social butterfly", + "annual_report.summary.followers.followers": "followers", + "annual_report.summary.followers.total": "{count} total", + "annual_report.summary.here_it_is": "Here is your {year} in review:", + "annual_report.summary.highlighted_post.by_favourites": "most favourited post", + "annual_report.summary.highlighted_post.by_reblogs": "most boosted post", + "annual_report.summary.highlighted_post.by_replies": "post with the most replies", + "annual_report.summary.highlighted_post.possessive": "{name}'s", + "annual_report.summary.most_used_app.most_used_app": "most used app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag", + "annual_report.summary.new_posts.new_posts": "new posts", + "annual_report.summary.percentile.text": "That puts you in the topof Mastodon users.", + "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.", + "annual_report.summary.thanks": "Thanks for being part of Mastodon!", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", "block_modal.remote_users_caveat": "We will ask the server {domain} to respect your decision. However, compliance is not guaranteed since some servers may handle blocks differently. Public posts may still be visible to non-logged-in users.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.admin.sign_up.name_and_others": "{name} and {count, plural, one {# other} other {# others}} signed up", + "notification.annual_report.message": "Your {year} #Wrapstodon awaits! Unveil your year's highlights and memorable moments on Mastodon!", + "notification.annual_report.view": "View #Wrapstodon", "notification.favourite": "{name} favorited your post", "notification.favourite.name_and_others_with_link": "{name} and
{count, plural, one {# other} other {# others}} favorited your post", "notification.follow": "{name} followed you", diff --git a/app/javascript/mastodon/models/annual_report.ts b/app/javascript/mastodon/models/annual_report.ts new file mode 100644 index 0000000000..c0a101e6c8 --- /dev/null +++ b/app/javascript/mastodon/models/annual_report.ts @@ -0,0 +1,44 @@ +export interface Percentiles { + followers: number; + statuses: number; +} + +export interface NameAndCount { + name: string; + count: number; +} + +export interface TimeSeriesMonth { + month: number; + statuses: number; + following: number; + followers: number; +} + +export interface TopStatuses { + by_reblogs: number; + by_favourites: number; + by_replies: number; +} + +export type Archetype = + | 'lurker' + | 'booster' + | 'pollster' + | 'replier' + | 'oracle'; + +interface AnnualReportV1 { + most_used_apps: NameAndCount[]; + percentiles: Percentiles; + top_hashtags: NameAndCount[]; + top_statuses: TopStatuses; + time_series: TimeSeriesMonth[]; + archetype: Archetype; +} + +export interface AnnualReport { + year: number; + schema_version: number; + data: AnnualReportV1; +} diff --git a/app/javascript/mastodon/models/notification_group.ts b/app/javascript/mastodon/models/notification_group.ts index 09d407d449..01a341e8dd 100644 --- a/app/javascript/mastodon/models/notification_group.ts +++ b/app/javascript/mastodon/models/notification_group.ts @@ -1,6 +1,7 @@ import type { ApiAccountRelationshipSeveranceEventJSON, ApiAccountWarningJSON, + ApiAnnualReportEventJSON, BaseNotificationGroupJSON, ApiNotificationGroupJSON, ApiNotificationJSON, @@ -65,6 +66,12 @@ export interface NotificationGroupSeveredRelationships event: AccountRelationshipSeveranceEvent; } +type AnnualReportEvent = ApiAnnualReportEventJSON; +export interface NotificationGroupAnnualReport + extends BaseNotification<'annual_report'> { + annualReport: AnnualReportEvent; +} + interface Report extends Omit { targetAccountId: string; } @@ -86,7 +93,8 @@ export type NotificationGroup = | NotificationGroupModerationWarning | NotificationGroupSeveredRelationships | NotificationGroupAdminSignUp - | NotificationGroupAdminReport; + | NotificationGroupAdminReport + | NotificationGroupAnnualReport; function createReportFromJSON(reportJSON: ApiReportJSON): Report { const { target_account, ...report } = reportJSON; @@ -112,6 +120,12 @@ function createAccountRelationshipSeveranceEventFromJSON( return eventJson; } +function createAnnualReportEventFromJSON( + eventJson: ApiAnnualReportEventJSON, +): AnnualReportEvent { + return eventJson; +} + export function createNotificationGroupFromJSON( groupJson: ApiNotificationGroupJSON, ): NotificationGroup { @@ -145,7 +159,6 @@ export function createNotificationGroupFromJSON( event: createAccountRelationshipSeveranceEventFromJSON(group.event), sampleAccountIds, }; - case 'moderation_warning': { const { moderation_warning, ...groupWithoutModerationWarning } = group; return { @@ -154,6 +167,14 @@ export function createNotificationGroupFromJSON( sampleAccountIds, }; } + case 'annual_report': { + const { annual_report, ...groupWithoutAnnualReport } = group; + return { + ...groupWithoutAnnualReport, + annualReport: createAnnualReportEventFromJSON(annual_report), + sampleAccountIds, + }; + } default: return { sampleAccountIds, diff --git a/app/javascript/material-icons/400-24px/celebration-fill.svg b/app/javascript/material-icons/400-24px/celebration-fill.svg new file mode 100644 index 0000000000..d715cf2fb3 --- /dev/null +++ b/app/javascript/material-icons/400-24px/celebration-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/celebration.svg b/app/javascript/material-icons/400-24px/celebration.svg new file mode 100644 index 0000000000..1d1b19ee72 --- /dev/null +++ b/app/javascript/material-icons/400-24px/celebration.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/explore-fill.svg b/app/javascript/material-icons/400-24px/explore-fill.svg index febe0a63b4..919ecb580a 100644 --- a/app/javascript/material-icons/400-24px/explore-fill.svg +++ b/app/javascript/material-icons/400-24px/explore-fill.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/explore.svg b/app/javascript/material-icons/400-24px/explore.svg index 547a999421..bb8ba1f4c6 100644 --- a/app/javascript/material-icons/400-24px/explore.svg +++ b/app/javascript/material-icons/400-24px/explore.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss index 465b748078..109b69bca5 100644 --- a/app/javascript/styles/application.scss +++ b/app/javascript/styles/application.scss @@ -15,6 +15,7 @@ @import 'mastodon/polls'; @import 'mastodon/modal'; @import 'mastodon/emoji_picker'; +@import 'mastodon/annual_reports'; @import 'mastodon/about'; @import 'mastodon/tables'; @import 'mastodon/admin'; diff --git a/app/javascript/styles/mastodon/annual_reports.scss b/app/javascript/styles/mastodon/annual_reports.scss new file mode 100644 index 0000000000..39784e3b5e --- /dev/null +++ b/app/javascript/styles/mastodon/annual_reports.scss @@ -0,0 +1,335 @@ +:root { + --indigo-1: #17063b; + --indigo-2: #2f0c7a; + --indigo-3: #562cfc; + --indigo-5: #858afa; + --indigo-6: #cccfff; + --lime: #baff3b; + --goldenrod-2: #ffc954; +} + +.annual-report { + flex: 0 0 auto; + background: var(--indigo-1); + padding: 24px; + + &__header { + margin-bottom: 16px; + + h1 { + font-size: 25px; + font-weight: 600; + line-height: 30px; + color: var(--lime); + margin-bottom: 8px; + } + + p { + font-size: 16px; + font-weight: 600; + line-height: 20px; + color: var(--indigo-6); + } + } + + &__bento { + display: grid; + gap: 8px; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr); + grid-template-rows: minmax(0, auto) minmax(0, 1fr) minmax(0, auto) minmax( + 0, + auto + ); + + &__box { + padding: 16px; + border-radius: 8px; + background: var(--indigo-2); + color: var(--indigo-5); + } + } + + &__summary { + &__most-boosted-post { + grid-column: span 2; + grid-row: span 2; + padding: 0; + + .status__content, + .content-warning { + color: var(--indigo-6); + } + + .detailed-status { + border: 0; + } + + .content-warning { + border: 0; + background: var(--indigo-1); + + .link-button { + color: var(--indigo-5); + } + } + + .detailed-status__meta__line { + border-bottom-color: var(--indigo-3); + } + + .detailed-status__meta { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + .detailed-status__meta, + .poll__footer, + .poll__link, + .detailed-status .logo, + .detailed-status__display-name { + color: var(--indigo-5); + } + + .detailed-status__meta .animated-number, + .detailed-status__display-name strong { + color: var(--indigo-6); + } + + .poll__chart { + background-color: var(--indigo-3); + + &.leading { + background-color: var(--goldenrod-2); + } + } + } + + &__followers { + grid-column: span 1; + text-align: center; + position: relative; + overflow: hidden; + padding-block-start: 24px; + padding-block-end: 24px; + + --sparkline-gradient-top: rgba(86, 44, 252, 50%); + --sparkline-gradient-bottom: rgba(86, 44, 252, 0%); + + &__foreground { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 8px; + position: relative; + z-index: 1; + } + + &__number { + font-size: 31px; + font-weight: 600; + line-height: 37px; + color: var(--lime); + } + + &__label { + font-size: 14px; + font-weight: 600; + line-height: 17px; + color: var(--indigo-6); + } + + &__footnote { + display: block; + font-weight: 400; + opacity: 0.5; + } + + svg { + position: absolute; + bottom: 0; + inset-inline-end: 0; + pointer-events: none; + z-index: 0; + height: 70%; + width: auto; + + path:first-child { + fill: url('#gradient') !important; + fill-opacity: 1 !important; + } + + path:last-child { + stroke: var(--indigo-3) !important; + fill: none !important; + } + } + } + + &__archetype { + grid-column: span 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 8px; + padding: 0; + + img { + display: block; + width: 100%; + height: auto; + border-radius: 8px; + } + + &__label { + padding: 16px; + padding-bottom: 8px; + font-size: 14px; + line-height: 17px; + font-weight: 600; + color: var(--lime); + } + } + + &__most-used-app { + grid-column: span 1; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 8px; + box-sizing: border-box; + + &__label { + font-size: 14px; + line-height: 17px; + font-weight: 600; + color: var(--indigo-6); + } + + &__icon { + font-size: 14px; + line-height: 17px; + font-weight: 600; + color: var(--goldenrod-2); + } + } + + &__percentile { + grid-row: span 2; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + text-align: center; + text-wrap: balance; + padding: 16px 8px; + + &__label { + font-size: 14px; + line-height: 17px; + } + + &__number { + font-size: 61px; + font-weight: 600; + line-height: 73px; + color: var(--goldenrod-2); + } + + &__footnote { + font-size: 11px; + line-height: 14px; + opacity: 0.5; + } + } + + &__new-posts { + grid-column: span 2; + text-align: center; + position: relative; + overflow: hidden; + + &__label { + font-size: 20px; + font-weight: 600; + line-height: 24px; + color: var(--indigo-6); + z-index: 1; + position: relative; + } + + &__number { + font-size: 76px; + font-weight: 600; + line-height: 91px; + color: var(--goldenrod-2); + z-index: 1; + position: relative; + } + + svg { + position: absolute; + inset-inline-start: -7px; + top: -4px; + z-index: 0; + } + } + + &__most-used-hashtag { + grid-column: span 2; + text-align: center; + overflow: hidden; + + &__hashtag { + font-size: 42px; + font-weight: 600; + line-height: 58px; + color: var(--indigo-6); + margin-inline-start: -100%; + margin-inline-end: -100%; + } + + &__label { + font-size: 14px; + font-weight: 600; + line-height: 17px; + } + } + } +} + +.annual-report-modal { + max-width: 480px; + background: var(--indigo-1); + border-radius: 16px; + display: flex; + flex-direction: column; + overflow-y: auto; + + .loading-indicator .circular-progress { + color: var(--lime); + } + + @media screen and (max-width: $no-columns-breakpoint) { + border-bottom: 0; + border-radius: 16px 16px 0 0; + } +} + +.notification-group--annual-report { + .notification-group__icon { + color: var(--lime); + } + + .notification-group__main .link-button { + font-weight: 500; + color: var(--lime); + } +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index f688b9b4ba..1bfe37cee6 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1686,7 +1686,8 @@ body > [data-popper-placement] { .status__wrapper-direct, .notification-ungrouped--direct, -.notification-group--direct { +.notification-group--direct, +.notification-group--annual-report { background: rgba($ui-highlight-color, 0.05); &:focus { @@ -5784,7 +5785,8 @@ a.status-card { inset-inline-start: 0; inset-inline-end: 0; bottom: 0; - background: rgba($base-overlay-background, 0.7); + opacity: 0.9; + background: $base-overlay-background; transition: background 0.5s; } diff --git a/app/models/notification.rb b/app/models/notification.rb index 695f39a316..7b90fd92f9 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -67,6 +67,9 @@ class Notification < ApplicationRecord moderation_warning: { filterable: false, }.freeze, + annual_report: { + filterable: false, + }.freeze, 'admin.sign_up': { filterable: false, }.freeze, @@ -101,6 +104,7 @@ class Notification < ApplicationRecord belongs_to :report, inverse_of: false belongs_to :account_relationship_severance_event, inverse_of: false belongs_to :account_warning, inverse_of: false + belongs_to :generated_annual_report, inverse_of: false end validates :type, inclusion: { in: TYPES } @@ -309,7 +313,7 @@ class Notification < ApplicationRecord self.from_account_id = activity&.status&.account_id when 'Account' self.from_account_id = activity&.id - when 'AccountRelationshipSeveranceEvent', 'AccountWarning' + when 'AccountRelationshipSeveranceEvent', 'AccountWarning', 'GeneratedAnnualReport' # These do not really have an originating account, but this is mandatory # in the data model, and the recipient's account will by definition # always exist diff --git a/app/models/notification_group.rb b/app/models/notification_group.rb index b6aa4d309c..9331b9406f 100644 --- a/app/models/notification_group.rb +++ b/app/models/notification_group.rb @@ -51,6 +51,7 @@ class NotificationGroup < ActiveModelSerializers::Model :report, :account_relationship_severance_event, :account_warning, + :generated_annual_report, to: :notification, prefix: false class << self diff --git a/app/serializers/rest/annual_report_event_serializer.rb b/app/serializers/rest/annual_report_event_serializer.rb new file mode 100644 index 0000000000..555a596357 --- /dev/null +++ b/app/serializers/rest/annual_report_event_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::AnnualReportEventSerializer < ActiveModel::Serializer + attributes :year + + def year + object.year.to_s + end +end diff --git a/app/serializers/rest/notification_group_serializer.rb b/app/serializers/rest/notification_group_serializer.rb index 7e8f00df3c..f4af842e38 100644 --- a/app/serializers/rest/notification_group_serializer.rb +++ b/app/serializers/rest/notification_group_serializer.rb @@ -13,6 +13,7 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer belongs_to :report, if: :report_type?, serializer: REST::ReportSerializer belongs_to :account_relationship_severance_event, key: :event, if: :relationship_severance_event?, serializer: REST::AccountRelationshipSeveranceEventSerializer belongs_to :account_warning, key: :moderation_warning, if: :moderation_warning_event?, serializer: REST::AccountWarningSerializer + belongs_to :generated_annual_report, key: :annual_report, if: :annual_report_event?, serializer: REST::AnnualReportEventSerializer def sample_account_ids object.sample_accounts.pluck(:id).map(&:to_s) @@ -38,6 +39,10 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer object.type == :moderation_warning end + def annual_report_event? + object.type == :annual_report + end + def page_min_id object.pagination_data[:min_id].to_s end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 9aebab787e..0cf56c5a24 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -3,7 +3,7 @@ class NotifyService < BaseService include Redisable - # TODO: the severed_relationships type probably warrants email notifications + # TODO: the severed_relationships and annual_report types probably warrants email notifications NON_EMAIL_TYPES = %i( admin.report admin.sign_up @@ -12,6 +12,7 @@ class NotifyService < BaseService status moderation_warning severed_relationships + annual_report ).freeze class BaseCondition @@ -25,6 +26,7 @@ class NotifyService < BaseService poll update account_warning + annual_report ).freeze def initialize(notification) @@ -100,7 +102,7 @@ class NotifyService < BaseService class DropCondition < BaseCondition def drop? blocked = @recipient.unavailable? - blocked ||= from_self? && %i(poll severed_relationships moderation_warning).exclude?(@notification.type) + blocked ||= from_self? && %i(poll severed_relationships moderation_warning annual_report).exclude?(@notification.type) return blocked if message? && from_staff? diff --git a/config/routes/api.rb b/config/routes/api.rb index 57ce3ba9fd..ccdd83dec7 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -52,7 +52,7 @@ namespace :api, format: false do resources :scheduled_statuses, only: [:index, :show, :update, :destroy] resources :preferences, only: [:index] - resources :annual_reports, only: [:index] do + resources :annual_reports, only: [:index, :show] do member do post :read end From 871e3b25e8da711bc4e297ed23e476976e0cd0f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:21:13 +0100 Subject: [PATCH 317/550] New Crowdin Translations (automated) (#32782) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/br.json | 2 ++ app/javascript/mastodon/locales/ca.json | 12 ++++++++++++ app/javascript/mastodon/locales/de.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/eo.json | 2 ++ app/javascript/mastodon/locales/es-AR.json | 9 +++++++++ app/javascript/mastodon/locales/es-MX.json | 9 +++++++++ app/javascript/mastodon/locales/es.json | 9 +++++++++ app/javascript/mastodon/locales/fi.json | 6 ++++++ app/javascript/mastodon/locales/ga.json | 22 ++++++++++++++++++++++ app/javascript/mastodon/locales/gl.json | 10 ++++++++++ app/javascript/mastodon/locales/is.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/lt.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/nl.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/pt-BR.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/sq.json | 15 +++++++++++++++ app/javascript/mastodon/locales/sv.json | 7 +++++++ app/javascript/mastodon/locales/zh-CN.json | 20 ++++++++++++++++++++ app/javascript/mastodon/locales/zh-TW.json | 17 +++++++++++++++++ config/locales/simple_form.ko.yml | 8 ++++---- 19 files changed, 244 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 575bc56724..13ca521ab0 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -82,6 +82,8 @@ "alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.", "alert.unexpected.title": "Hopala !", "announcement.announcement": "Kemennad", + "annual_report.summary.followers.followers": "heulier", + "annual_report.summary.highlighted_post.possessive": "{name}", "attachments_list.unprocessed": "(ket meret)", "audio.hide": "Kuzhat ar c'hleved", "block_modal.show_less": "Diskouez nebeutoc'h", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index e5c8440236..160a74af4f 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -87,6 +87,18 @@ "alert.unexpected.title": "Vaja!", "alt_text_badge.title": "Text alternatiu", "announcement.announcement": "Anunci", + "annual_report.summary.archetype.oracle": "L'Oracle", + "annual_report.summary.followers.followers": "seguidors", + "annual_report.summary.followers.total": "{count} en total", + "annual_report.summary.here_it_is": "El repàs del vostre {year}:", + "annual_report.summary.highlighted_post.by_favourites": "la publicació més afavorida", + "annual_report.summary.highlighted_post.by_reblogs": "la publicació més impulsada", + "annual_report.summary.highlighted_post.by_replies": "la publicació amb més respostes", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "l'aplicació més utilitzada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "l'etiqueta més utilitzada", + "annual_report.summary.new_posts.new_posts": "publicacions noves", + "annual_report.summary.thanks": "Gràcies per formar part de Mastodon!", "attachments_list.unprocessed": "(sense processar)", "audio.hide": "Amaga l'àudio", "block_modal.remote_users_caveat": "Li demanarem al servidor {domain} que respecti la vostra decisió, tot i que no podem garantir-ho, ja que alguns servidors gestionen de forma diferent els blocatges. És possible que els usuaris no autenticats puguin veure les publicacions públiques.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 1d59b14724..d048a191e3 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Oha!", "alt_text_badge.title": "Bildbeschreibung", "announcement.announcement": "Ankündigung", + "annual_report.summary.archetype.booster": "Trendjäger*in", + "annual_report.summary.archetype.lurker": "Beobachter*in", + "annual_report.summary.archetype.oracle": "Orakel", + "annual_report.summary.archetype.pollster": "Meinungsforscher*in", + "annual_report.summary.archetype.replier": "Geselliger Schmetterling", + "annual_report.summary.followers.followers": "Follower", + "annual_report.summary.followers.total": "{count} insgesamt", + "annual_report.summary.here_it_is": "Dein Jahresrückblick für {year}:", + "annual_report.summary.highlighted_post.by_favourites": "am häufigsten favorisierter Beitrag", + "annual_report.summary.highlighted_post.by_reblogs": "am häufigsten geteilter Beitrag", + "annual_report.summary.highlighted_post.by_replies": "Beitrag mit den meisten Antworten", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "am häufigsten verwendete App", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "am häufigsten verwendeter Hashtag", + "annual_report.summary.new_posts.new_posts": "neue Beiträge", + "annual_report.summary.percentile.text": "Damit gehörst du zu den oberstender Mastodon-Nutzer*innen.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Wir werden Bernie nichts verraten.", + "annual_report.summary.thanks": "Danke, dass du Teil von Mastodon bist!", "attachments_list.unprocessed": "(ausstehend)", "audio.hide": "Audio ausblenden", "block_modal.remote_users_caveat": "Wir werden den Server {domain} bitten, deine Entscheidung zu respektieren. Allerdings kann nicht garantiert werden, dass sie eingehalten wird, weil einige Server Blockierungen unterschiedlich handhaben können. Öffentliche Beiträge können für nicht angemeldete Nutzer*innen weiterhin sichtbar sein.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} meldete {target}", "notification.admin.sign_up": "{name} registrierte sich", "notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} registrierten sich", + "notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!", + "notification.annual_report.view": "#Wrapstodon ansehen", "notification.favourite": "{name} favorisierte deinen Beitrag", "notification.favourite.name_and_others_with_link": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} favorisierten deinen Beitrag", "notification.follow": "{name} folgt dir", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index ee4d733ab8..6cfc94d139 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -87,6 +87,8 @@ "alert.unexpected.title": "Aj!", "alt_text_badge.title": "Alt-teksto", "announcement.announcement": "Anonco", + "annual_report.summary.new_posts.new_posts": "novaj afiŝoj", + "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", "attachments_list.unprocessed": "(neprilaborita)", "audio.hide": "Kaŝi aŭdion", "block_modal.remote_users_caveat": "Ni petos al la servilo {domain} respekti vian elekton. Tamen, plenumo ne estas garantiita ĉar iuj serviloj eble manipulas blokojn malsame. Publikaj afiŝoj eble ankoraŭ estas videbla por ne-ensalutintaj uzantoj.", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index e8302a4c75..b7e5b919af 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -87,6 +87,15 @@ "alert.unexpected.title": "¡Epa!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", + "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", + "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "[sin procesar]", "audio.hide": "Ocultar audio", "block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar los bloqueos de forma diferente. Los mensajes públicos todavía podrían estar visibles para los usuarios no conectados.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c73a64c4e0..40061d1cf2 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -87,6 +87,15 @@ "alert.unexpected.title": "¡Ups!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", + "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", + "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", "block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado ya que algunos servidores pueden manejar bloques de forma diferente. Las publicaciones públicas pueden ser todavía visibles para los usuarios no conectados.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index dea526f8a0..2de5a4136a 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -87,6 +87,15 @@ "alert.unexpected.title": "¡Ups!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", + "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", + "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", "block_modal.remote_users_caveat": "Le pediremos al servidor {domain} que respete tu decisión. Sin embargo, el cumplimiento no está garantizado, ya que algunos servidores pueden manejar bloqueos de forma distinta. Los mensajes públicos pueden ser todavía visibles para los usuarios que no hayan iniciado sesión.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index f06566df75..32069b1a03 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -87,6 +87,11 @@ "alert.unexpected.title": "Hups!", "alt_text_badge.title": "Vaihtoehtoinen teksti", "announcement.announcement": "Tiedote", + "annual_report.summary.archetype.replier": "Sosiaalinen perhonen", + "annual_report.summary.highlighted_post.by_reblogs": "tehostetuin julkaisu", + "annual_report.summary.most_used_app.most_used_app": "käytetyin sovellus", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "käytetyin aihetunniste", + "annual_report.summary.thanks": "Kiitos, että olet osa Mastodonia!", "attachments_list.unprocessed": "(käsittelemätön)", "audio.hide": "Piilota ääni", "block_modal.remote_users_caveat": "Pyydämme palvelinta {domain} kunnioittamaan päätöstäsi. Myötämielisyyttä ei kuitenkaan taata, koska jotkin palvelimet voivat käsitellä estoja eri tavalla. Julkiset julkaisut voivat silti näkyä kirjautumattomille käyttäjille.", @@ -508,6 +513,7 @@ "notification.admin.report_statuses_other": "{name} raportoi käyttäjän {target}", "notification.admin.sign_up": "{name} rekisteröityi", "notification.admin.sign_up.name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}} rekisteröityivät", + "notification.annual_report.view": "Näytä #Wrapstodon", "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}} lisäsivät julkaisusi suosikkeihinsa", "notification.follow": "{name} seurasi sinua", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index aa7892163b..3181d7978e 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Hiúps!", "alt_text_badge.title": "Téacs alt", "announcement.announcement": "Fógra", + "annual_report.summary.archetype.booster": "An sealgair fionnuar", + "annual_report.summary.archetype.lurker": "An lurker", + "annual_report.summary.archetype.oracle": "An oracal", + "annual_report.summary.archetype.pollster": "An pollaire", + "annual_report.summary.archetype.replier": "An féileacán sóisialta", + "annual_report.summary.followers.followers": "leanúna", + "annual_report.summary.followers.total": "{count} san iomlán", + "annual_report.summary.here_it_is": "Seo do {year} faoi athbhreithniú:", + "annual_report.summary.highlighted_post.by_favourites": "post is fearr leat", + "annual_report.summary.highlighted_post.by_reblogs": "post is treisithe", + "annual_report.summary.highlighted_post.by_replies": "post leis an líon is mó freagraí", + "annual_report.summary.highlighted_post.possessive": "{name}'s", + "annual_report.summary.most_used_app.most_used_app": "aip is mó a úsáidtear", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag is mó a úsáidtear", + "annual_report.summary.new_posts.new_posts": "postanna nua", + "annual_report.summary.percentile.text": "Cuireann sé sin i mbarr úsáideoirí Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Ní inseoidh muid do Bernie.", + "annual_report.summary.thanks": "Go raibh maith agat as a bheith mar chuid de Mastodon!", "attachments_list.unprocessed": "(neamhphróiseáilte)", "audio.hide": "Cuir fuaim i bhfolach", "block_modal.remote_users_caveat": "Iarrfaimid ar an bhfreastalaí {domain} meas a bheith agat ar do chinneadh. Mar sin féin, ní ráthaítear comhlíonadh toisc go bhféadfadh roinnt freastalaithe bloic a láimhseáil ar bhealach difriúil. Seans go mbeidh postálacha poiblí fós le feiceáil ag úsáideoirí nach bhfuil logáilte isteach.", @@ -386,6 +404,7 @@ "interaction_modal.description.follow": "Le cuntas ar Mastodon, is féidir leat {name} a leanúint chun a gcuid postálacha a fháil i do fhotha baile.", "interaction_modal.description.reblog": "Le cuntas ar Mastodon, is féidir leat an postáil seo a threisiú chun é a roinnt le do leantóirí féin.", "interaction_modal.description.reply": "Le cuntas ar Mastodon, is féidir leat freagra a thabhairt ar an bpostáil seo.", + "interaction_modal.description.vote": "Le cuntas ar Mastodon, is féidir leat vótáil sa vótaíocht seo.", "interaction_modal.login.action": "Thabhairt dom abhaile", "interaction_modal.login.prompt": "Fearann ​​do fhreastalaí baile, e.g. mastodon.sóisialta", "interaction_modal.no_account_yet": "Ní ar Mastodon?", @@ -397,6 +416,7 @@ "interaction_modal.title.follow": "Lean {name}", "interaction_modal.title.reblog": "Mol postáil de chuid {name}", "interaction_modal.title.reply": "Freagair postáil {name}", + "interaction_modal.title.vote": "Vótáil i vótaíocht {name}", "intervals.full.days": "{number, plural, one {# lá} other {# lá}}", "intervals.full.hours": "{number, plural, one {# uair} other {# uair}}", "intervals.full.minutes": "{number, plural, one {# nóiméad} other {# nóiméad}}", @@ -506,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} tuairiscithe {target}", "notification.admin.sign_up": "Chláraigh {name}", "notification.admin.sign_up.name_and_others": "{name} agus {count, plural, one {# duine eile} two {# daoine eile} few {# daoine eile} many {# daoine eile} other {# daoine eile}} a chláraigh", + "notification.annual_report.message": "Tá do {year} #Wrapstodon ag fanacht! Nocht buaicphointí na bliana agus chuimhneacháin i gcuimhne ar Mastodon!", + "notification.annual_report.view": "Amharc #Wrapstodon", "notification.favourite": "Is fearr le {name} do phostáil", "notification.favourite.name_and_others_with_link": "{name} agus {count, plural, one {# duine eile} other {# daoine eile}} thaitin le do phost", "notification.follow": "Lean {name} thú", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index e89d386c85..06a7ac8ca4 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -87,6 +87,16 @@ "alert.unexpected.title": "Vaites!", "alt_text_badge.title": "Texto Alt", "announcement.announcement": "Anuncio", + "annual_report.summary.followers.followers": "seguidoras", + "annual_report.summary.followers.total": "{count} en total", + "annual_report.summary.here_it_is": "Este é o resumo do teu {year}:", + "annual_report.summary.highlighted_post.by_favourites": "a publicación mais favorecida", + "annual_report.summary.highlighted_post.by_reblogs": "a publicación con mais promocións", + "annual_report.summary.highlighted_post.by_replies": "a publicación con mais respostas", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "app que mais usaches", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado", + "annual_report.summary.new_posts.new_posts": "novas publicacións", "attachments_list.unprocessed": "(sen procesar)", "audio.hide": "Agochar audio", "block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 8c87298910..adc86faf40 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Úbbs!", "alt_text_badge.title": "Hjálpartexti mynda", "announcement.announcement": "Auglýsing", + "annual_report.summary.archetype.booster": "Svali gaurinn", + "annual_report.summary.archetype.lurker": "Lurkurinn", + "annual_report.summary.archetype.oracle": "Völvan", + "annual_report.summary.archetype.pollster": "Kannanafíkillinn", + "annual_report.summary.archetype.replier": "Félagsveran", + "annual_report.summary.followers.followers": "fylgjendur", + "annual_report.summary.followers.total": "{count} alls", + "annual_report.summary.here_it_is": "Hér er yfirlitið þitt fyrir {year}:", + "annual_report.summary.highlighted_post.by_favourites": "færsla sett oftast í eftirlæti", + "annual_report.summary.highlighted_post.by_reblogs": "færsla oftast endurbirt", + "annual_report.summary.highlighted_post.by_replies": "færsla með flestum svörum", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "mest notaða forrit", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest notaða myllumerki", + "annual_report.summary.new_posts.new_posts": "nýjar færslur", + "annual_report.summary.percentile.text": "Það setur þig á meðal efstunotenda Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Við förum ekkert að raupa um þetta.", + "annual_report.summary.thanks": "Takk fyrir að vera hluti af Mastodon-samfélaginu!", "attachments_list.unprocessed": "(óunnið)", "audio.hide": "Fela hljóð", "block_modal.remote_users_caveat": "Við munum biðja {domain} netþjóninn um að virða ákvörðun þína. Hitt er svo annað mál hvort hann fari eftir þessu, ekki er hægt að tryggja eftirfylgni því sumir netþjónar meðhöndla útilokanir á sinn hátt. Opinberar færslur gætu verið sýnilegar notendum sem ekki eru skráðir inn.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} skráð sig", + "notification.annual_report.message": "{year} á #Wrapstodon bíður! Afhjúpaðu hvað bar hæst á árinu og minnistæðustu augnablikin á Mastodon!", + "notification.annual_report.view": "Skoða #Wrapstodon", "notification.favourite": "{name} setti færsluna þína í eftirlæti", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# í viðbót hefur} other {# í viðbót hafa}} sett færsluna þína í eftirlæti", "notification.follow": "{name} fylgist með þér", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 7d53c2702f..d03833e11f 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Alternatyvus tekstas", "announcement.announcement": "Skelbimas", + "annual_report.summary.archetype.booster": "Šaunus medžiotojas", + "annual_report.summary.archetype.lurker": "Stebėtojas", + "annual_report.summary.archetype.oracle": "Vydūnas", + "annual_report.summary.archetype.pollster": "Apklausos rengėjas", + "annual_report.summary.archetype.replier": "Socialinis drugelis", + "annual_report.summary.followers.followers": "sekėjai (-ų)", + "annual_report.summary.followers.total": "iš viso {count}", + "annual_report.summary.here_it_is": "Štai jūsų {year} apžvalga:", + "annual_report.summary.highlighted_post.by_favourites": "labiausiai pamėgtas įrašas", + "annual_report.summary.highlighted_post.by_reblogs": "labiausiai pasidalintas įrašas", + "annual_report.summary.highlighted_post.by_replies": "įrašas su daugiausiai atsakymų", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "labiausiai naudota programa", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "labiausiai naudotas saitažodis", + "annual_report.summary.new_posts.new_posts": "nauji įrašai", + "annual_report.summary.percentile.text": "Tai reiškia, kad esate tarppopuliariausių „Mastodon“ naudotojų.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Mes nesakysime Bernie.", + "annual_report.summary.thanks": "Dėkojame, kad esate „Mastodon“ dalis!", "attachments_list.unprocessed": "(neapdorotas)", "audio.hide": "Slėpti garsą", "block_modal.remote_users_caveat": "Paprašysime serverio {domain} gerbti tavo sprendimą. Tačiau atitiktis negarantuojama, nes kai kurie serveriai gali skirtingai tvarkyti blokavimus. Vieši įrašai vis tiek gali būti matomi neprisijungusiems naudotojams.", @@ -507,6 +525,8 @@ "notification.admin.report_statuses": "{name} pranešė {target} kategorijai {category}", "notification.admin.report_statuses_other": "{name} pranešė {target}", "notification.admin.sign_up": "{name} užsiregistravo", + "notification.annual_report.message": "Jūsų laukia {year} #Wrapstodon! Atskleiskite savo metų svarbiausius įvykius ir įsimintinas akimirkas platformoje „Mastodon“.", + "notification.annual_report.view": "Peržiūrėti #Wrapstodon", "notification.favourite": "{name} pamėgo tavo įrašą", "notification.follow": "{name} seka tave", "notification.follow.name_and_others": "{name} ir {count, plural, one {# kitas} few {# kiti} many {# kito} other {# kitų}} seka tave", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 9f265782e1..b66fcf09c0 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Oeps!", "alt_text_badge.title": "Alt-tekst", "announcement.announcement": "Mededeling", + "annual_report.summary.archetype.booster": "De cool-hunter", + "annual_report.summary.archetype.lurker": "De lurker", + "annual_report.summary.archetype.oracle": "Het orakel", + "annual_report.summary.archetype.pollster": "De opiniepeiler", + "annual_report.summary.archetype.replier": "De sociale vlinder", + "annual_report.summary.followers.followers": "volgers", + "annual_report.summary.followers.total": "totaal {count}", + "annual_report.summary.here_it_is": "Hier is jouw terugblik op {year}:", + "annual_report.summary.highlighted_post.by_favourites": "bericht met de meeste favorieten", + "annual_report.summary.highlighted_post.by_reblogs": "bericht met de meeste boosts", + "annual_report.summary.highlighted_post.by_replies": "bericht met de meeste reacties", + "annual_report.summary.highlighted_post.possessive": "{name}'s", + "annual_report.summary.most_used_app.most_used_app": "meest gebruikte app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "meest gebruikte hashtag", + "annual_report.summary.new_posts.new_posts": "nieuwe berichten", + "annual_report.summary.percentile.text": "Dat zet je in de topvan Mastodon-gebruikers.", + "annual_report.summary.percentile.we_wont_tell_bernie": "We zullen Bernie niets vertellen.", + "annual_report.summary.thanks": "Bedankt dat je deel uitmaakt van Mastodon!", "attachments_list.unprocessed": "(niet verwerkt)", "audio.hide": "Audio verbergen", "block_modal.remote_users_caveat": "We vragen de server {domain} om je besluit te respecteren. Het naleven hiervan is echter niet gegarandeerd, omdat sommige servers blokkades anders kunnen interpreteren. Openbare berichten zijn mogelijk nog steeds zichtbaar voor niet-ingelogde gebruikers.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} rapporteerde {target}", "notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben zich geregistreerd", + "notification.annual_report.message": "Jouw {year} #Wrapstodon staat klaar! Laat de hoogtepunten en memorabele momenten van jouw jaar zien op Mastodon!", + "notification.annual_report.view": "#Wrapstodon bekijken", "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.favourite.name_and_others_with_link": "{name} en {count, plural, one {# ander persoon} other {# andere personen}} hebben jouw bericht als favoriet gemarkeerd", "notification.follow": "{name} volgt jou nu", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index c620933abe..5e69741f20 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Eita!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Comunicados", + "annual_report.summary.archetype.booster": "Caçador legal", + "annual_report.summary.archetype.lurker": "O espreitador", + "annual_report.summary.archetype.oracle": "O oráculo", + "annual_report.summary.archetype.pollster": "O pesquisador", + "annual_report.summary.archetype.replier": "A borboleta social", + "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.followers.total": "{count} total", + "annual_report.summary.here_it_is": "Aqui está seu {year} em revisão:", + "annual_report.summary.highlighted_post.by_favourites": "publicação mais favoritada", + "annual_report.summary.highlighted_post.by_reblogs": "publicação mais impulsionada", + "annual_report.summary.highlighted_post.by_replies": "publicação com mais respostas", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "aplicativo mais usado", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag mais usada", + "annual_report.summary.new_posts.new_posts": "novas publicações", + "annual_report.summary.percentile.text": "Isso o coloca no topodos usuários de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos à Bernie.", + "annual_report.summary.thanks": "Obrigada por fazer parte do Mastodon!", "attachments_list.unprocessed": "(não processado)", "audio.hide": "Ocultar áudio", "block_modal.remote_users_caveat": "Pediremos ao servidor {domínio} que respeite sua decisão. No entanto, a conformidade não é garantida pois alguns servidores podem lidar com os blocos de maneira diferente. As postagens públicas ainda podem estar visíveis para usuários não logados.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} denunciou {target}", "notification.admin.sign_up": "{name} se inscreveu", "notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# other} other {# outros}}", + "notification.annual_report.message": "O #Wrapstodon do seu {year} está esperando! Desvende seus destaques do ano e momentos memoráveis no Mastodon!", + "notification.annual_report.view": "Ver #Wrapstodon", "notification.favourite": "{name} favoritou sua publicação", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# outro} other {# others}} favoritaram a publicação", "notification.follow": "{name} te seguiu", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 410d7c2ef3..088b48a3f3 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -87,6 +87,19 @@ "alert.unexpected.title": "Hëm!", "alt_text_badge.title": "Tekst alternativ", "announcement.announcement": "Lajmërim", + "annual_report.summary.followers.followers": "ndjekës", + "annual_report.summary.followers.total": "{count} gjithsej", + "annual_report.summary.here_it_is": "Ja {year} juaj e shqyrtuar:", + "annual_report.summary.highlighted_post.by_favourites": "potimi më i parapëlqyer", + "annual_report.summary.highlighted_post.by_reblogs": "postimi me më shumë përforcime", + "annual_report.summary.highlighted_post.by_replies": "postimi me më tepër përgjigje", + "annual_report.summary.highlighted_post.possessive": "nga {name}", + "annual_report.summary.most_used_app.most_used_app": "aplikacioni më i përdorur", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag-u më i përdorur", + "annual_report.summary.new_posts.new_posts": "postime të reja", + "annual_report.summary.percentile.text": "Kjo ju vë në kryetë përdoruesve të Mastodon-it.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nuk do t’ia themi Bernit.", + "annual_report.summary.thanks": "Faleminderit që jeni pjesë e Mastodon-it!", "attachments_list.unprocessed": "(e papërpunuar)", "audio.hide": "Fshihe audion", "block_modal.remote_users_caveat": "Do t’i kërkojmë shërbyesit {domain} të respektojë vendimin tuaj. Por, pajtimi s’është i garantuar, ngaqë disa shërbyes mund t’i trajtojnë ndryshe bllokimet. Psotimet publike mundet të jenë ende të dukshme për përdorues pa bërë hyrje në llogari.", @@ -508,6 +521,8 @@ "notification.admin.report_statuses_other": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.admin.sign_up.name_and_others": "U regjistrua {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", + "notification.annual_report.message": "#Wrapstodon juaj për {year} pret! Zbuloni pikat e theksuara dhe çastet e paharrueshëm të këtij viti për ju në Mastodon!", + "notification.annual_report.view": "Shihni #Wrapstodon", "notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer", "notification.favourite.name_and_others_with_link": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}} i vunë shenjë postimit tuaj si të parapëlqyer", "notification.follow": "{name} zuri t’ju ndjekë", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index e404c2244b..5f551fc4cd 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -87,6 +87,12 @@ "alert.unexpected.title": "Hoppsan!", "alt_text_badge.title": "Alt-Text", "announcement.announcement": "Meddelande", + "annual_report.summary.followers.followers": "följare", + "annual_report.summary.followers.total": "{count} totalt", + "annual_report.summary.highlighted_post.by_replies": "inlägg med flest svar", + "annual_report.summary.new_posts.new_posts": "nya inlägg", + "annual_report.summary.percentile.we_wont_tell_bernie": "Vi berättar inte för Bernie.", + "annual_report.summary.thanks": "Tack för att du är en del av Mastodon!", "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.", @@ -508,6 +514,7 @@ "notification.admin.report_statuses_other": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.admin.sign_up.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har registrerat sig", + "notification.annual_report.view": "Visa #Wrapstodon", "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.favourite.name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}} har favoritmarkerat ditt inlägg", "notification.follow": "{name} följer dig", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 603ec5d791..57b2011bb1 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "哎呀!", "alt_text_badge.title": "替代文本", "announcement.announcement": "公告", + "annual_report.summary.archetype.booster": "潮流捕手", + "annual_report.summary.archetype.lurker": "吃瓜群众", + "annual_report.summary.archetype.oracle": "预言家", + "annual_report.summary.archetype.pollster": "投票狂魔", + "annual_report.summary.archetype.replier": "评论区原住民", + "annual_report.summary.followers.followers": "关注者", + "annual_report.summary.followers.total": "{count} 人", + "annual_report.summary.here_it_is": "你的 {year} 年度回顾在此:", + "annual_report.summary.highlighted_post.by_favourites": "最受欢迎嘟嘟", + "annual_report.summary.highlighted_post.by_reblogs": "传播最广嘟嘟", + "annual_report.summary.highlighted_post.by_replies": "最热闹嘟嘟", + "annual_report.summary.highlighted_post.possessive": "{name} 的", + "annual_report.summary.most_used_app.most_used_app": "最常用的应用", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", + "annual_report.summary.new_posts.new_posts": "新发嘟", + "annual_report.summary.percentile.text": "这使你跻身 Mastodon 用户的前", + "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉Bernie。", + "annual_report.summary.thanks": "感谢你这一年与 Mastodon 一路同行!", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", "block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重您的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} 举报了 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.admin.sign_up.name_and_others": "{name} 和 {count, plural, other {另外 # 人}}注册了", + "notification.annual_report.message": "你的 {year} #Wrapstodon 年度回顾来啦!快来看看这一年你在 Mastodon 上的精彩瞬间!", + "notification.annual_report.view": "查看 #Wrapstodon", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.favourite.name_and_others_with_link": "{name} 和 {count, plural, other {另外 # 人}} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index a3de26ffc4..e1f9eeb210 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -87,6 +87,23 @@ "alert.unexpected.title": "哎呀!", "alt_text_badge.title": "ALT 說明文字", "announcement.announcement": "公告", + "annual_report.summary.archetype.booster": "酷炫的獵人", + "annual_report.summary.archetype.lurker": "潛伏者", + "annual_report.summary.archetype.oracle": "先知", + "annual_report.summary.archetype.pollster": "民調人員", + "annual_report.summary.archetype.replier": "社交菁英", + "annual_report.summary.followers.followers": "跟隨者", + "annual_report.summary.followers.total": "總共 {count}", + "annual_report.summary.here_it_is": "以下是您的{year}年度回顧:", + "annual_report.summary.highlighted_post.by_favourites": "最愛的嘟文", + "annual_report.summary.highlighted_post.by_reblogs": "最多轉嘟的嘟文", + "annual_report.summary.highlighted_post.by_replies": "最多回覆的嘟文", + "annual_report.summary.highlighted_post.possessive": "{name} 的", + "annual_report.summary.most_used_app.most_used_app": "最常使用的應用程式", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常使用的主題標籤", + "annual_report.summary.new_posts.new_posts": "新嘟文", + "annual_report.summary.percentile.text": "這讓您成為前Mastodon 的使用者。", + "annual_report.summary.thanks": "感謝您成為 Mastodon 的一員!", "attachments_list.unprocessed": "(未經處理)", "audio.hide": "隱藏音訊", "block_modal.remote_users_caveat": "我們會要求 {domain} 伺服器尊重您的決定。然而,我們無法保證所有伺服器皆會遵守,某些伺服器可能以不同方式處理封鎖。未登入之使用者仍可能看見您的公開嘟文。", diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index c40814d61b..b2ebf5666d 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -32,9 +32,9 @@ ko: warning_preset_id: 선택사항. 틀의 마지막에 임의의 텍스트를 추가 할 수 있습니다 announcement: all_day: 체크 되었을 경우, 그 시간에 속한 날짜들에만 표시됩니다 - ends_at: 옵션입니다. 공지사항이 이 시간에 자동으로 발행 중지 됩니다 + ends_at: 선택사항. 공지사항이 이 시간에 자동으로 발행 중지 됩니다 scheduled_at: 공백으로 두면 공지사항이 곧바로 발행 됩니다 - starts_at: 공지사항이 특정한 시간에 종속 될 때를 위한 옵션입니다 + starts_at: 선택사항. 공지사항이 특정한 시간에 종속 될 때를 위한 옵션입니다 text: 게시물 문법을 사용할 수 있습니다. 공지사항은 사용자의 화면 상단 공간을 차지한다는 것을 명심하세요 appeal: text: 처벌에 대해 단 한 번만 이의제기를 할 수 있습니다 @@ -110,7 +110,7 @@ ko: invite_request: text: 이 정보는 신청을 검토하는데 도움을 줄 수 있습니다. ip_block: - comment: 필수 아님. 왜 이 규칙을 추가했는지 기억하세요. + comment: 선택사항. 왜 이 규칙을 추가했는지 기억하세요. expires_in: IP 주소는 한정된 자원입니다, 이것들은 가끔 공유 되거나 자주 소유자가 바뀌기도 합니다. 이런 이유로 인해, IP 차단을 영구히 유지하는 것은 추천하지 않습니다. ip: IPv4 또는 IPv6 주소를 입력하세요. CIDR 문법을 사용해서 모든 범위를 차단할 수도 있습니다. 자기 자신을 잠가버리지 않도록 주의하세요! severities: @@ -119,7 +119,7 @@ ko: sign_up_requires_approval: 새 가입이 승인을 필요로 하도록 합니다 severity: 해당 IP로부터의 요청에 대해 무엇이 일어나게 할 지 고르세요 rule: - hint: 옵션사항. 규칙에 대한 더 상세한 정보를 제공하세요 + hint: 선택사항. 규칙에 대한 더 상세한 정보를 제공하세요 text: 이 서버 사용자들이 지켜야 할 규칙과 요구사항을 설명해주세요. 짧고 간단하게 작성해주세요 sessions: otp: '휴대전화에서 생성된 이중 인증 코드를 입력하거나, 복구 코드 중 하나를 사용하세요:' From 2bea74e69d43f15aff646de5948cfbb4b9296145 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 6 Nov 2024 11:51:54 +0100 Subject: [PATCH 318/550] Avoid latest featured tag use on post removal unless necessary (#32787) --- app/models/featured_tag.rb | 12 +++++- app/services/process_hashtags_service.rb | 2 +- app/services/remove_status_service.rb | 2 +- spec/models/featured_tag_spec.rb | 54 ++++++++++++++++++++---- 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index a4e7b7cf6f..529056f9c6 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -44,8 +44,16 @@ class FeaturedTag < ApplicationRecord update(statuses_count: statuses_count + 1, last_status_at: timestamp) end - def decrement(deleted_status_id) - update(statuses_count: [0, statuses_count - 1].max, last_status_at: visible_tagged_account_statuses.where.not(id: deleted_status_id).pick(:created_at)) + def decrement(deleted_status) + if statuses_count <= 1 + update(statuses_count: 0, last_status_at: nil) + elsif last_status_at > deleted_status.created_at + update(statuses_count: statuses_count - 1) + else + # Fetching the latest status creation time can be expensive, so only perform it + # if we know we are deleting the latest status using this tag + update(statuses_count: statuses_count - 1, last_status_at: visible_tagged_account_statuses.where(id: ...deleted_status.id).pick(:created_at)) + end end private diff --git a/app/services/process_hashtags_service.rb b/app/services/process_hashtags_service.rb index 17c347b088..0baea0185c 100644 --- a/app/services/process_hashtags_service.rb +++ b/app/services/process_hashtags_service.rb @@ -33,7 +33,7 @@ class ProcessHashtagsService < BaseService unless removed_tags.empty? @account.featured_tags.where(tag_id: removed_tags.map(&:id)).find_each do |featured_tag| - featured_tag.decrement(@status.id) + featured_tag.decrement(@status) end end end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 221791ad32..dc9fb6cab6 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -115,7 +115,7 @@ class RemoveStatusService < BaseService def remove_from_hashtags @account.featured_tags.where(tag_id: @status.tags.map(&:id)).find_each do |featured_tag| - featured_tag.decrement(@status.id) + featured_tag.decrement(@status) end return unless @status.public_visibility? diff --git a/spec/models/featured_tag_spec.rb b/spec/models/featured_tag_spec.rb index 0f5ead8f97..20059cfba4 100644 --- a/spec/models/featured_tag_spec.rb +++ b/spec/models/featured_tag_spec.rb @@ -126,16 +126,54 @@ RSpec.describe FeaturedTag do end describe '#decrement' do - it 'decreases the count and updates the last_status_at timestamp' do - tag = Fabricate :tag, name: 'test' - status = Fabricate :status, visibility: :public, created_at: 10.days.ago - status.tags << tag + let(:tag) { Fabricate(:tag, name: 'test') } + let(:account) { Fabricate(:account) } + let(:featured_tag) { Fabricate(:featured_tag, name: 'test', account: account) } - featured_tag = Fabricate :featured_tag, name: 'test', account: status.account + context 'when removing the last status using the tag' do + let(:status) { Fabricate(:status, visibility: :public, account: account, created_at: 10.days.ago) } - expect { featured_tag.decrement(status.id) } - .to change(featured_tag, :statuses_count).from(1).to(0) - .and change(featured_tag, :last_status_at).to(nil) + before do + status.tags << tag + end + + it 'decreases the count and updates the last_status_at timestamp' do + expect { featured_tag.decrement(status) } + .to change(featured_tag, :statuses_count).from(1).to(0) + .and change(featured_tag, :last_status_at).to(nil) + end + end + + context 'when removing a previous status using the tag' do + let(:previous_status) { Fabricate(:status, visibility: :public, account: account, created_at: 1.month.ago) } + let(:status) { Fabricate(:status, visibility: :public, account: account, created_at: 10.days.ago) } + + before do + previous_status.tags << tag + status.tags << tag + end + + it 'decreases the count and updates the last_status_at timestamp' do + expect { featured_tag.decrement(previous_status) } + .to change(featured_tag, :statuses_count).from(2).to(1) + .and not_change(featured_tag, :last_status_at) + end + end + + context 'when removing the most recent use of the tag' do + let(:previous_status) { Fabricate(:status, visibility: :public, account: account, created_at: 1.month.ago) } + let(:status) { Fabricate(:status, visibility: :public, account: account, created_at: 10.days.ago) } + + before do + previous_status.tags << tag + status.tags << tag + end + + it 'decreases the count and updates the last_status_at timestamp' do + expect { featured_tag.decrement(status) } + .to change(featured_tag, :statuses_count).from(2).to(1) + .and change(featured_tag, :last_status_at) + end end end end From e4b4d6d262131c5cf326435e003c80d143628e19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 11:57:42 +0100 Subject: [PATCH 319/550] Update dependency ruby to v3.3.6 (#32773) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index fa7adc7ac7..9c25013dbb 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.5 +3.3.6 From e581c1a520cd961620ff3edd8907c8d2c4e00bbf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:58:01 +0000 Subject: [PATCH 320/550] Update docker.io/ruby Docker tag to v3.3.6 (#32784) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c6d8466f43..a6c7d46b57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM} # Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"] # renovate: datasource=docker depName=docker.io/ruby -ARG RUBY_VERSION="3.3.5" +ARG RUBY_VERSION="3.3.6" # # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"] # renovate: datasource=node-version depName=node ARG NODE_MAJOR_VERSION="22" From 4053cd2bff25f830fd1e2a3cdd6c95ef8ae28c7f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Nov 2024 05:58:28 -0500 Subject: [PATCH 321/550] Update faraday to version 2.12.0 (#32718) --- Gemfile | 1 + Gemfile.lock | 34 +++++++++------------------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/Gemfile b/Gemfile index bc7a219789..690e2a59d2 100644 --- a/Gemfile +++ b/Gemfile @@ -47,6 +47,7 @@ gem 'color_diff', '~> 0.1' gem 'csv', '~> 3.2' gem 'discard', '~> 1.2' gem 'doorkeeper', '~> 5.6' +gem 'faraday-httpclient' gem 'fast_blank', '~> 1.0' gem 'fastimage' gem 'hiredis', '~> 0.6' diff --git a/Gemfile.lock b/Gemfile.lock index 617233d702..7328afa523 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,29 +229,14 @@ GEM fabrication (2.31.0) faker (3.5.1) i18n (>= 1.8.11, < 2) - faraday (1.10.3) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0) - faraday-multipart (~> 1.0) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.0) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - faraday-retry (~> 1.0) - ruby2_keywords (>= 0.0.4) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-multipart (1.0.4) - multipart-post (~> 2) - faraday-net_http (1.0.2) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - faraday-retry (1.0.3) + faraday (2.12.0) + faraday-net_http (>= 2.0, < 3.4) + json + logger + faraday-httpclient (2.0.1) + httpclient (>= 2.2) + faraday-net_http (3.3.0) + net-http fast_blank (1.0.1) fastimage (2.3.1) ffi (1.17.0) @@ -430,7 +415,6 @@ GEM minitest (5.25.1) msgpack (1.7.3) multi_json (1.15.0) - multipart-post (2.4.1) mutex_m (0.2.0) net-http (0.4.1) uri @@ -760,7 +744,6 @@ GEM ruby-vips (2.2.2) ffi (~> 1.12) logger - ruby2_keywords (0.0.5) rubyzip (2.3.2) rufus-scheduler (3.9.1) fugit (~> 1.1, >= 1.1.6) @@ -930,6 +913,7 @@ DEPENDENCIES email_spec fabrication (~> 2.30) faker (~> 3.2) + faraday-httpclient fast_blank (~> 1.0) fastimage flatware-rspec From 1392daa638abbfc7bce32903aeed4fa9303c21cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 11:58:50 +0100 Subject: [PATCH 322/550] Update dependency discard to v1.4.0 (#32785) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7328afa523..844eb1b6b2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -200,8 +200,8 @@ GEM devise (>= 4.0.0) rpam2 (~> 4.0) diff-lcs (1.5.1) - discard (1.3.0) - activerecord (>= 4.2, < 8) + discard (1.4.0) + activerecord (>= 4.2, < 9.0) docile (1.4.1) domain_name (0.6.20240107) doorkeeper (5.7.1) From d482211aa6293f78f161cbc7149e829966cd8e3a Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 6 Nov 2024 14:30:53 +0100 Subject: [PATCH 323/550] Fix out-of-view post contents being inconsistent with in-view post contents (#32778) --- app/javascript/mastodon/components/status.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 4792136368..96ccf3aad4 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -393,13 +393,16 @@ class Status extends ImmutablePureComponent { }; let media, statusAvatar, prepend, rebloggedByText; + const matchedFilters = status.get('matched_filters'); + const expanded = (!matchedFilters || this.state.showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); if (hidden) { return (
{status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} - {status.get('content')} + {status.get('spoiler_text').length > 0 && ({status.get('spoiler_text')})} + {expanded && {status.get('content')}}
); @@ -408,7 +411,6 @@ class Status extends ImmutablePureComponent { const connectUp = previousId && previousId === status.get('in_reply_to_id'); const connectToRoot = rootId && rootId === status.get('in_reply_to_id'); const connectReply = nextInReplyToId && nextInReplyToId === status.get('id'); - const matchedFilters = status.get('matched_filters'); if (featured) { prepend = ( @@ -538,7 +540,6 @@ class Status extends ImmutablePureComponent { } const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status); - const expanded = (!matchedFilters || this.state.showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); return ( From 4ed3ce237739643cd9145396e25bf4d4b020dccd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:45:05 +0100 Subject: [PATCH 324/550] New Crowdin Translations (automated) (#32793) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/eo.json | 4 +++ app/javascript/mastodon/locales/es-AR.json | 11 +++++++ app/javascript/mastodon/locales/es-MX.json | 11 +++++++ app/javascript/mastodon/locales/es.json | 11 +++++++ app/javascript/mastodon/locales/fo.json | 20 ++++++++++++ app/javascript/mastodon/locales/gl.json | 2 ++ app/javascript/mastodon/locales/ko.json | 20 ++++++++++++ app/javascript/mastodon/locales/sk.json | 15 +++++++++ app/javascript/mastodon/locales/tr.json | 20 ++++++++++++ app/javascript/mastodon/locales/uk.json | 1 + app/javascript/mastodon/locales/vi.json | 20 ++++++++++++ config/locales/fo.yml | 38 ++++++++++++++++++++++ 12 files changed, 173 insertions(+) diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 6cfc94d139..757bb39866 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -87,6 +87,9 @@ "alert.unexpected.title": "Aj!", "alt_text_badge.title": "Alt-teksto", "announcement.announcement": "Anonco", + "annual_report.summary.archetype.replier": "La plej societema", + "annual_report.summary.followers.followers": "sekvantoj", + "annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj", "annual_report.summary.new_posts.new_posts": "novaj afiŝoj", "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", "attachments_list.unprocessed": "(neprilaborita)", @@ -510,6 +513,7 @@ "notification.admin.report_statuses_other": "{name} raportis {target}", "notification.admin.sign_up": "{name} kreis konton", "notification.admin.sign_up.name_and_others": "{name} kaj {count, plural, one {# alia} other {# aliaj}} kreis konton", + "notification.annual_report.view": "Vidu #Wrapstodon", "notification.favourite": "{name} stelumis vian afiŝon", "notification.favourite.name_and_others_with_link": "{name} kaj {count, plural, one {# alia} other {# aliaj}} ŝatis vian afiŝon", "notification.follow": "{name} eksekvis vin", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index b7e5b919af..a556d90e33 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -87,14 +87,23 @@ "alert.unexpected.title": "¡Epa!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.archetype.booster": "El cazador de tendencias", + "annual_report.summary.archetype.lurker": "El acechador", + "annual_report.summary.archetype.oracle": "El oráculo", + "annual_report.summary.archetype.pollster": "El encuestador", + "annual_report.summary.archetype.replier": "El más sociable", "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.followers.total": "{count} en total", "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos", "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "[sin procesar]", "audio.hide": "Ocultar audio", @@ -517,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.admin.sign_up.name_and_others": "Se registraron {name} y {count, plural, one {# cuenta más} other {# cuentas más}}", + "notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!", + "notification.annual_report.view": "Ver #Wrapstodon", "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}} marcaron tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 40061d1cf2..4faa35e5c8 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -87,14 +87,23 @@ "alert.unexpected.title": "¡Ups!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.archetype.booster": "El cazador de tendencias", + "annual_report.summary.archetype.lurker": "El acechador", + "annual_report.summary.archetype.oracle": "El oráculo", + "annual_report.summary.archetype.pollster": "El encuestador", + "annual_report.summary.archetype.replier": "El más sociable", "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.followers.total": "{count} en total", "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos", "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", @@ -517,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} reportó {target}", "notification.admin.sign_up": "{name} se unio", "notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} se registraron", + "notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!", + "notification.annual_report.view": "Ver #Wrapstodon", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# otro} other {# otros}} marcaron tu publicación como favorita", "notification.follow": "{name} te empezó a seguir", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 2de5a4136a..d14b718016 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -87,14 +87,23 @@ "alert.unexpected.title": "¡Ups!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", + "annual_report.summary.archetype.booster": "El cazador de tendencias", + "annual_report.summary.archetype.lurker": "El acechador", + "annual_report.summary.archetype.oracle": "El oráculo", + "annual_report.summary.archetype.pollster": "El encuestador", + "annual_report.summary.archetype.replier": "El más sociable", "annual_report.summary.followers.followers": "seguidores", + "annual_report.summary.followers.total": "{count} en total", "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos", "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", + "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "(sin procesar)", "audio.hide": "Ocultar audio", @@ -517,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.sign_up": "{name} se registró", "notification.admin.sign_up.name_and_others": "{name} y {count, plural, one {# más} other {# más}} se registraron", + "notification.annual_report.message": "¡Tu #Wrapstodon {year} te espera! ¡Desvela los momentos más destacados y memorables de tu año en Mastodon!", + "notification.annual_report.view": "Ver #Wrapstodon", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.favourite.name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}} marcaron tu publicación como favorita", "notification.follow": "{name} te empezó a seguir", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index e15385725a..6b26ed84fd 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Annar tekstur", "announcement.announcement": "Kunngerð", + "annual_report.summary.archetype.booster": "Kuli jagarin", + "annual_report.summary.archetype.lurker": "Lúrarin", + "annual_report.summary.archetype.oracle": "Oraklið", + "annual_report.summary.archetype.pollster": "Spyrjarin", + "annual_report.summary.archetype.replier": "Sosiali firvaldurin", + "annual_report.summary.followers.followers": "fylgjarar", + "annual_report.summary.followers.total": "{count} íalt", + "annual_report.summary.here_it_is": "Her er ein samandráttur av {year}:", + "annual_report.summary.highlighted_post.by_favourites": "mest dámdi postur", + "annual_report.summary.highlighted_post.by_reblogs": "oftast lyfti postur", + "annual_report.summary.highlighted_post.by_replies": "postur við flestum svarum", + "annual_report.summary.highlighted_post.possessive": "hjá {name}", + "annual_report.summary.most_used_app.most_used_app": "mest brúkta app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki", + "annual_report.summary.new_posts.new_posts": "nýggir postar", + "annual_report.summary.percentile.text": "Tað fær teg í toppav Mastodon brúkarum.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.", + "annual_report.summary.thanks": "Takk fyri at tú er partur av Mastodon!", "attachments_list.unprocessed": "(óviðgjørt)", "audio.hide": "Fjal ljóð", "block_modal.remote_users_caveat": "Vit biðja ambætaran {domain} virða tína avgerð. Kortini er eingin vissa um samsvar, av tí at fleiri ambætarar handfara blokkar ymiskt. Almennir postar kunnu framvegis vera sjónligir fyri brúkarar, sum ikki eru innritaðir.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} meldaði {target}", "notification.admin.sign_up": "{name} meldaði seg til", "notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} teknaðu seg", + "notification.annual_report.message": "Títt {year} #Wrapstodon bíðar! Avdúka hæddarpunktini og minniligu løturnar á Mastodon!", + "notification.annual_report.view": "Sí #Wrapstodon", "notification.favourite": "{name} dámdi postin hjá tær", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# annar/onnur} other {# onnur}} yndisfrámerktu postin hjá tær", "notification.follow": "{name} fylgdi tær", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 06a7ac8ca4..23f444715b 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -97,6 +97,8 @@ "annual_report.summary.most_used_app.most_used_app": "app que mais usaches", "annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado", "annual_report.summary.new_posts.new_posts": "novas publicacións", + "annual_report.summary.percentile.text": "Sitúante no top das usuarias de Mastodon.", + "annual_report.summary.thanks": "Grazas por ser parte de Mastodon!", "attachments_list.unprocessed": "(sen procesar)", "audio.hide": "Agochar audio", "block_modal.remote_users_caveat": "Ímoslle pedir ao servidor {domain} que respecte a túa decisión. Emporiso, non hai garantía de que atenda a petición xa que os servidores xestionan os bloqueos de formas diferentes. As publicacións públicas poderían aínda ser visibles para usuarias que non iniciaron sesión.", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index dbdb5062cf..b5c8d4bd21 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "앗!", "alt_text_badge.title": "대체 문구", "announcement.announcement": "공지사항", + "annual_report.summary.archetype.booster": "연쇄부스트마", + "annual_report.summary.archetype.lurker": "은둔자", + "annual_report.summary.archetype.oracle": "예언자", + "annual_report.summary.archetype.pollster": "여론조사원", + "annual_report.summary.archetype.replier": "인싸", + "annual_report.summary.followers.followers": "팔로워", + "annual_report.summary.followers.total": "총 {count}", + "annual_report.summary.here_it_is": "{year}년 결산입니다:", + "annual_report.summary.highlighted_post.by_favourites": "가장 많은 좋아요를 받은 게시물", + "annual_report.summary.highlighted_post.by_reblogs": "가장 많이 부스트된 게시물", + "annual_report.summary.highlighted_post.by_replies": "가장 많은 답글을 받은 게시물", + "annual_report.summary.highlighted_post.possessive": "{name} 님의", + "annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그", + "annual_report.summary.new_posts.new_posts": "새 게시물", + "annual_report.summary.percentile.text": "마스토돈 사용자의 상위입니다.", + "annual_report.summary.percentile.we_wont_tell_bernie": "엄마한테 말 안 할게요.", + "annual_report.summary.thanks": "마스토돈과 함께 해주셔서 감사합니다!", "attachments_list.unprocessed": "(처리 안 됨)", "audio.hide": "소리 숨기기", "block_modal.remote_users_caveat": "우리는 {domain} 서버가 당신의 결정을 존중해 주길 부탁할 것입니다. 하지만 몇몇 서버는 차단을 다르게 취급할 수 있기 때문에 규정이 준수되는 것을 보장할 수는 없습니다. 공개 게시물은 로그인 하지 않은 사용자들에게 여전히 보여질 수 있습니다.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} 님이 {target}을 신고했습니다", "notification.admin.sign_up": "{name} 님이 가입했습니다", "notification.admin.sign_up.name_and_others": "{name} 외 {count, plural, other {# 명}}이 가입했습니다", + "notification.annual_report.message": "{year} #Wrapstodon 이 기다리고 있습니다! 올 해 마스토돈에서 있었던 최고의 순간과 기억들을 열어보세요!", + "notification.annual_report.view": "#Wrapstodon 보기", "notification.favourite": "{name} 님이 내 게시물을 좋아합니다", "notification.favourite.name_and_others_with_link": "{name} 외 {count, plural, other {# 명}}이 내 게시물을 좋아합니다", "notification.follow": "{name} 님이 나를 팔로우했습니다", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index dc31f6100f..7b9254c0d3 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -87,6 +87,11 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Alternatívny popis", "announcement.announcement": "Oznámenie", + "annual_report.summary.followers.followers": "sledovatelia", + "annual_report.summary.highlighted_post.by_reblogs": "najviac vyzdvihovaný príspevok", + "annual_report.summary.most_used_app.most_used_app": "najviac používaná aplikácia", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "najviac užívaný hashtag", + "annual_report.summary.new_posts.new_posts": "nové príspevky", "attachments_list.unprocessed": "(nespracované)", "audio.hide": "Skryť zvuk", "block_modal.show_less": "Zobraziť menej", @@ -345,6 +350,9 @@ "home.pending_critical_update.link": "Zobraziť aktualizácie", "home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia.", "home.show_announcements": "Zobraziť oznámenia", + "ignore_notifications_modal.filter_instead": "Radšej triediť", + "ignore_notifications_modal.filter_to_act_users": "Stále budeš môcť akceptovať, odmietnuť, alebo nahlásiť užívateľov", + "ignore_notifications_modal.filter_to_avoid_confusion": "Triedenie pomáha vyvarovať sa možnému zmäteniu", "ignore_notifications_modal.ignore": "Ignoruj upozornenia", "interaction_modal.description.favourite": "S účtom na Mastodone môžete tento príspevok ohviezdičkovať, tak dať autorovi vedieť, že sa vám páči, a uložiť si ho na neskôr.", "interaction_modal.description.follow": "S účtom na Mastodone môžete {name} sledovať a vidieť ich príspevky vo svojom domovskom kanáli.", @@ -428,7 +436,11 @@ "mute_modal.hide_options": "Skryť možnosti", "mute_modal.indefinite": "Pokiaľ ich neodtíšim", "mute_modal.show_options": "Zobraziť možnosti", + "mute_modal.they_can_mention_and_follow": "Môže ťa spomenúť a nasledovať, ale ty ho/ju neuvidíš.", + "mute_modal.they_wont_know": "Nebude vedieť, že bol/a stíšený/á.", "mute_modal.title": "Stíšiť užívateľa?", + "mute_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ho/ju spomínajú.", + "mute_modal.you_wont_see_posts": "Stále uvidí tvoje príspevky, ale ty neuvidíš jeho/jej.", "navigation_bar.about": "O tomto serveri", "navigation_bar.administration": "Spravovanie", "navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní", @@ -468,12 +480,15 @@ "notification.label.private_reply": "Súkromná odpoveď", "notification.label.reply": "Odpoveď", "notification.mention": "Zmienka", + "notification.mentioned_you": "{name} ťa spomenul/a", "notification.moderation-warning.learn_more": "Zisti viac", + "notification.moderation_warning": "Dostal/a si varovanie od moderátora", "notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.", "notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.", "notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.", "notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.", "notification.own_poll": "Vaša anketa sa skončila", + "notification.poll": "Anketa, v ktorej si hlasoval/a, skončila", "notification.reblog": "{name} zdieľa váš príspevok", "notification.relationships_severance_event": "Stratené prepojenia s {name}", "notification.relationships_severance_event.account_suspension": "Správca z {from} pozastavil/a {target}, čo znamená, že od nich viac nemôžeš dostávať aktualizácie, alebo s nimi interaktovať.", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 5ac5a3368b..4699b9f4bd 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Hay aksi!", "alt_text_badge.title": "Alternatif metin", "announcement.announcement": "Duyuru", + "annual_report.summary.archetype.booster": "Trend takipçisi", + "annual_report.summary.archetype.lurker": "Gizli meraklı", + "annual_report.summary.archetype.oracle": "Kahin", + "annual_report.summary.archetype.pollster": "Anketör", + "annual_report.summary.archetype.replier": "Sosyal kelebek", + "annual_report.summary.followers.followers": "takipçiler", + "annual_report.summary.followers.total": "{count} toplam", + "annual_report.summary.here_it_is": "İşte {year} yılı değerlendirmeniz:", + "annual_report.summary.highlighted_post.by_favourites": "en çok beğenilen gönderi", + "annual_report.summary.highlighted_post.by_reblogs": "en çok paylaşılan gönderi", + "annual_report.summary.highlighted_post.by_replies": "en çok yanıt alan gönderi", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "en çok kullanılan uygulama", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "en çok kullanılan etiket", + "annual_report.summary.new_posts.new_posts": "yeni gönderiler", + "annual_report.summary.percentile.text": "Mastodon kullanıcılarınınüst dilimindesiniz.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Bernie'ye söylemeyiz.", + "annual_report.summary.thanks": "Mastodon'un bir parçası olduğunuz için teşekkürler!", "attachments_list.unprocessed": "(işlenmemiş)", "audio.hide": "Sesi gizle", "block_modal.remote_users_caveat": "{domain} sunucusundan kararınıza saygı duymasını isteyeceğiz. Ancak, Uymaları garanti değildir çünkü bazı sunucular engellemeyi farklı şekilde yapıyorlar. Herkese açık gönderiler giriş yapmamış kullanıcılara görüntülenmeye devam edebilir.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.admin.sign_up.name_and_others": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} kaydoldu", + "notification.annual_report.message": "{year} yılı #Wrapstodon'unuz bekliyor! Yılınızın Mastodon'daki öne çıkanlarını ve anılarınızı gösterin!", + "notification.annual_report.view": "#Wrapstodon'u Görüntüle", "notification.favourite": "{name} gönderinizi beğendi", "notification.favourite.name_and_others_with_link": "{name} ve {count, plural, one {# diğer kişi} other {# diğer kişi}} gönderinizi beğendi", "notification.follow": "{name} seni takip etti", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index fc396aa933..b34785ebc3 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -87,6 +87,7 @@ "alert.unexpected.title": "Ой!", "alt_text_badge.title": "Альтернативний текст", "announcement.announcement": "Оголошення", + "annual_report.summary.new_posts.new_posts": "нові дописи", "attachments_list.unprocessed": "(не оброблено)", "audio.hide": "Сховати аудіо", "block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 7ae955c1b0..2b5401a878 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ốiii!", "alt_text_badge.title": "Văn bản thay thế", "announcement.announcement": "Có gì mới?", + "annual_report.summary.archetype.booster": "Hiệp sĩ ngầu", + "annual_report.summary.archetype.lurker": "Kẻ rình mò", + "annual_report.summary.archetype.oracle": "Nhà tiên tri", + "annual_report.summary.archetype.pollster": "Chuyên gia khảo sát", + "annual_report.summary.archetype.replier": "Bướm xã hội", + "annual_report.summary.followers.followers": "người theo dõi", + "annual_report.summary.followers.total": "tổng {count}", + "annual_report.summary.here_it_is": "Nhìn lại năm {year} của bạn:", + "annual_report.summary.highlighted_post.by_favourites": "tút được thích nhiều nhất", + "annual_report.summary.highlighted_post.by_reblogs": "tút được đăng lại nhiều nhất", + "annual_report.summary.highlighted_post.by_replies": "tút được trả lời nhiều nhất", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "app dùng nhiều nhất", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag dùng nhiều nhất", + "annual_report.summary.new_posts.new_posts": "tút mới", + "annual_report.summary.percentile.text": "Bạn nằm trong topthành viên Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Chúng tôi sẽ không kể cho Bernie.", + "annual_report.summary.thanks": "Cảm ơn đã trở thành một phần của Mastodon!", "attachments_list.unprocessed": "(chưa xử lí)", "audio.hide": "Ẩn âm thanh", "block_modal.remote_users_caveat": "Chúng tôi sẽ yêu cầu {domain} tôn trọng quyết định của bạn. Tuy nhiên, việc tuân thủ không được đảm bảo vì một số máy chủ có thể xử lý việc chặn theo cách khác nhau. Các tút công khai vẫn có thể hiển thị đối với người dùng chưa đăng nhập.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} báo cáo {target}", "notification.admin.sign_up": "{name} tham gia máy chủ của bạn", "notification.admin.sign_up.name_and_others": "{name} và {count, plural, other {# người}} đã đăng ký", + "notification.annual_report.message": "#Wrapstodon {year} của bạn có rồi đây! Hãy chia sẻ những điểm nhấn và khoảnh khắc đáng nhớ trên Mastodon của bạn trong năm qua!", + "notification.annual_report.view": "Xem #Wrapstodon", "notification.favourite": "{name} thích tút của bạn", "notification.favourite.name_and_others_with_link": "{name} và {count, plural, other {# người khác}} đã thích tút của bạn", "notification.follow": "{name} theo dõi bạn", diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 3ade3007f4..1060ee1609 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -1368,6 +1368,44 @@ fo: merge_long: Varðveit verandi teigarøð og legg nýggjar afturat overwrite: Skriva omaná overwrite_long: Legg nýggj teigarøð inn fyri tey verandi + overwrite_preambles: + blocking_html: + one: Tú ert í ferð við at útskifta blokeringslistan hjá tær við upp til %{count} kontu frá %{filename}. + other: Tú ert í ferð við at útskifta blokeringslistan hjá tær við upp til %{count} kontum frá %{filename}. + bookmarks_html: + one: Tú ert í ferð við at útskifta tíni bókamerki við upp til %{count} posti frá %{filename}. + other: Tú ert í ferð við at útskifta tíni bókamerki við upp til %{count} postum frá %{filename}. + domain_blocking_html: + one: Tú ert í ferð við at útskifta navnaøkisblokeringslistan hjá tær við upp til %{count} navnaøki frá %{filename}. + other: Tú ert í ferð við at útskifta navnaøkisblokeringslistan hjá tær við upp til %{count} navnaøkjum frá %{filename}. + following_html: + one: Tú ert í ferð við at fylgja upp til %{count} kontu frá %{filename} og at gevast at fylgja øðrum. + other: Tú ert í ferð við at fylgja upp til %{count} kontum frá %{filename} og at gevast at fylgja øðrum. + lists_html: + one: Tú ert í ferð við at skifta listarnar hjá tær út við tað, sum er í %{filename}. Upp til %{count} konta verður løgd afturat nýggjum listum. + other: Tú ert í ferð við at skifta listarnar hjá tær út við tað, sum er í %{filename}. Upp til %{count} kontur verða lagdar afturat nýggjum listum. + muting_html: + one: Tú ert í ferð við at útskifta listan hjá tær við doyvdum kontum við upp til %{count} kontu frá %{filename}. + other: Tú ert í ferð við at útskifta listan hjá tær við doyvdum kontum við upp til %{count} kontum frá %{filename}. + preambles: + blocking_html: + one: Tú ert í ferð við at blokera upp til %{count} kontu frá %{filename}. + other: Tú ert í ferð við at blokera upp til %{count} kontur frá %{filename}. + bookmarks_html: + one: Tú ert í ferð við at leggja upp til %{count} post frá %{filename} afturat tínum bókamerkjum. + other: Tú ert í ferð við at leggja upp til %{count} postar frá %{filename} afturat tínum bókamerkjum. + domain_blocking_html: + one: Tú ert í ferð við at blokera upp til %{count} navnaøki frá %{filename}. + other: Tú ert í ferð við at blokera upp til %{count} navnaøki frá %{filename}. + following_html: + one: Tú ert í ferð við at fylgja upp til %{count} kontu frá %{filename}. + other: Tú ert í ferð við at fylgja upp til %{count} kontur frá %{filename}. + lists_html: + one: Tú ert í ferð við at leggja upp til %{count} kontu frá %{filename} afturat tínum listum. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat. + other: Tú ert í ferð við at leggja upp til %{count} kontur frá %{filename} afturat tínum listum. Nýggir listar verða stovnaðir, um eingin listi er at leggja afturat. + muting_html: + one: Tú ert í ferð við at doyva upp til %{count} kontu frá %{filename}. + other: Tú ert í ferð við at doyva upp til %{count} kontur frá %{filename}. preface: Tú kanst innlesa dátur, sum tú hevur útlisið frá einum øðrum ambætara, so sum listar av fólki, sum tú fylgir ella blokerar. recent_imports: Feskar innflytingar states: From 8f4af29a73a406c29eb8007decd59fd157276aaa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:45:19 +0100 Subject: [PATCH 325/550] Update dependency aws-sdk-s3 to v1.170.0 (#32791) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 844eb1b6b2..00ec451af9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -100,8 +100,8 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.997.0) - aws-sdk-core (3.211.0) + aws-partitions (1.1001.0) + aws-sdk-core (3.212.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -109,7 +109,7 @@ GEM aws-sdk-kms (1.95.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.169.0) + aws-sdk-s3 (1.170.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From befb44a08c6048337f27cf93db453249624e9a34 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 7 Nov 2024 10:57:42 +0100 Subject: [PATCH 326/550] =?UTF-8?q?Fix=20=E2=80=9Cuninitialized=20constant?= =?UTF-8?q?=20HttpLog=E2=80=9D=20errors=20in=20tootctl=20(#32796)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mastodon/cli/progress_helper.rb | 2 +- lib/tasks/mastodon.rake | 2 +- lib/tasks/repo.rake | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mastodon/cli/progress_helper.rb b/lib/mastodon/cli/progress_helper.rb index 5634343796..da9527ffd7 100644 --- a/lib/mastodon/cli/progress_helper.rb +++ b/lib/mastodon/cli/progress_helper.rb @@ -5,7 +5,7 @@ dev_null = Logger.new('/dev/null') Rails.logger = dev_null ActiveRecord::Base.logger = dev_null ActiveJob::Base.logger = dev_null -HttpLog.configuration.logger = dev_null +HttpLog.configuration.logger = dev_null if defined?(HttpLog) Paperclip.options[:log] = false Chewy.logger = dev_null diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 2822f2eeb1..e1e2dd8194 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -596,7 +596,7 @@ def disable_log_stdout! Rails.logger = dev_null ActiveRecord::Base.logger = dev_null - HttpLog.configuration.logger = dev_null + HttpLog.configuration.logger = dev_null if defined?(HttpLog) Paperclip.options[:log] = false end diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake index 539c44273f..c8f977f651 100644 --- a/lib/tasks/repo.rake +++ b/lib/tasks/repo.rake @@ -18,7 +18,7 @@ namespace :repo do url = "https://api.github.com/repos/#{REPOSITORY_NAME}/contributors?anon=1" - HttpLog.config.compact_log = true + HttpLog.config.compact_log = true if defined?(HttpLog) while url.present? response = HTTP.get(url) @@ -43,7 +43,7 @@ namespace :repo do path = Rails.root.join('CHANGELOG.md') tmp = Tempfile.new - HttpLog.config.compact_log = true + HttpLog.config.compact_log = true if defined?(HttpLog) begin File.open(path, 'r') do |file| From ae667624acbdcba796921dc44c24efd362d4a49a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 05:07:04 -0500 Subject: [PATCH 327/550] Use `with_options` for shared settings options in routes (#30847) --- config/routes/admin.rb | 6 ++++-- config/routes/api.rb | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 3dba6fa5b8..2afe570236 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -40,8 +40,10 @@ namespace :admin do end end - get '/settings', to: redirect('/admin/settings/branding') - get '/settings/edit', to: redirect('/admin/settings/branding') + with_options to: redirect('/admin/settings/branding') do + get '/settings' + get '/settings/edit' + end namespace :settings do resource :branding, only: [:show, :update], controller: 'branding' diff --git a/config/routes/api.rb b/config/routes/api.rb index ccdd83dec7..95fdf332a0 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -44,8 +44,10 @@ namespace :api, format: false do resources :list, only: :show end - get '/streaming', to: 'streaming#index' - get '/streaming/(*any)', to: 'streaming#index' + with_options to: 'streaming#index' do + get '/streaming' + get '/streaming/(*any)' + end resources :custom_emojis, only: [:index] resources :suggestions, only: [:index, :destroy] From 73f66af6eb6c344768ab30c38fc2f82c45482d4d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 05:28:59 -0500 Subject: [PATCH 328/550] Update location of unused `MIN_SCHEDULE_OFFSET` constant (#31217) --- app/models/scheduled_status.rb | 3 ++- app/services/post_status_service.rb | 2 -- app/workers/scheduler/scheduled_statuses_scheduler.rb | 8 ++++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/models/scheduled_status.rb b/app/models/scheduled_status.rb index 27f0cbd280..cb49e90705 100644 --- a/app/models/scheduled_status.rb +++ b/app/models/scheduled_status.rb @@ -15,6 +15,7 @@ class ScheduledStatus < ApplicationRecord TOTAL_LIMIT = 300 DAILY_LIMIT = 25 + MINIMUM_OFFSET = 5.minutes.freeze belongs_to :account, inverse_of: :scheduled_statuses has_many :media_attachments, inverse_of: :scheduled_status, dependent: :nullify @@ -26,7 +27,7 @@ class ScheduledStatus < ApplicationRecord private def validate_future_date - errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET + errors.add(:scheduled_at, I18n.t('scheduled_statuses.too_soon')) if scheduled_at.present? && scheduled_at <= Time.now.utc + MINIMUM_OFFSET end def validate_total_limit diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 98fd95f025..ee6b18c74c 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -4,8 +4,6 @@ class PostStatusService < BaseService include Redisable include LanguagesHelper - MIN_SCHEDULE_OFFSET = 5.minutes.freeze - class UnexpectedMentionsError < StandardError attr_reader :accounts diff --git a/app/workers/scheduler/scheduled_statuses_scheduler.rb b/app/workers/scheduler/scheduled_statuses_scheduler.rb index 4e251780de..e2ccabf70f 100644 --- a/app/workers/scheduler/scheduled_statuses_scheduler.rb +++ b/app/workers/scheduler/scheduled_statuses_scheduler.rb @@ -20,7 +20,7 @@ class Scheduler::ScheduledStatusesScheduler end def due_statuses - ScheduledStatus.where(scheduled_at: ..Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET) + ScheduledStatus.where(scheduled_at: ..time_due_at) end def publish_scheduled_announcements! @@ -30,7 +30,7 @@ class Scheduler::ScheduledStatusesScheduler end def due_announcements - Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', Time.now.utc + PostStatusService::MIN_SCHEDULE_OFFSET) + Announcement.unpublished.where('scheduled_at IS NOT NULL AND scheduled_at <= ?', time_due_at) end def unpublish_expired_announcements! @@ -40,4 +40,8 @@ class Scheduler::ScheduledStatusesScheduler def expired_announcements Announcement.published.where('ends_at IS NOT NULL AND ends_at <= ?', Time.now.utc) end + + def time_due_at + Time.now.utc + ScheduledStatus::MINIMUM_OFFSET + end end From 68b545ef338fc772c56d0f9dde781698b5730ae6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 05:32:33 -0500 Subject: [PATCH 329/550] Add `Status.not_direct_visibility` scope (#32065) --- app/models/account_statuses_cleanup_policy.rb | 2 +- app/models/status.rb | 1 + lib/mastodon/cli/cache.rb | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/account_statuses_cleanup_policy.rb b/app/models/account_statuses_cleanup_policy.rb index 6e998e2dca..ef41bb3ee3 100644 --- a/app/models/account_statuses_cleanup_policy.rb +++ b/app/models/account_statuses_cleanup_policy.rb @@ -130,7 +130,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord end def without_direct_scope - Status.where.not(visibility: :direct) + Status.not_direct_visibility end def old_enough_scope(max_id = nil) diff --git a/app/models/status.rb b/app/models/status.rb index f0a4f50ff6..c58de5114c 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -127,6 +127,7 @@ class Status < ApplicationRecord } scope :distributable_visibility, -> { where(visibility: %i(public unlisted)) } scope :list_eligible_visibility, -> { where(visibility: %i(public unlisted private)) } + scope :not_direct_visibility, -> { where.not(visibility: :direct) } after_create_commit :trigger_create_webhooks after_update_commit :trigger_update_webhooks diff --git a/lib/mastodon/cli/cache.rb b/lib/mastodon/cli/cache.rb index f32ab292ee..cfb6cba1ff 100644 --- a/lib/mastodon/cli/cache.rb +++ b/lib/mastodon/cli/cache.rb @@ -52,7 +52,7 @@ module Mastodon::CLI account.account_stat.tap do |account_stat| account_stat.following_count = account.active_relationships.count account_stat.followers_count = account.passive_relationships.count - account_stat.statuses_count = account.statuses.where.not(visibility: :direct).count + account_stat.statuses_count = account.statuses.not_direct_visibility.count account_stat.save if account_stat.changed? end @@ -60,7 +60,7 @@ module Mastodon::CLI def recount_status_stats(status) status.status_stat.tap do |status_stat| - status_stat.replies_count = status.replies.where.not(visibility: :direct).count + status_stat.replies_count = status.replies.not_direct_visibility.count status_stat.reblogs_count = status.reblogs.count status_stat.favourites_count = status.favourites.count From e0a44b8317504bd953779495cd77156359b60550 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 05:34:13 -0500 Subject: [PATCH 330/550] Use `shell.indent` for list output indentation in CLI area (#31969) --- lib/mastodon/cli/accounts.rb | 4 +++- lib/mastodon/cli/email_domain_blocks.rb | 6 ++++-- lib/mastodon/cli/emoji.rb | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index 23c907543f..c8e91224cf 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -321,7 +321,9 @@ module Mastodon::CLI unless skip_domains.empty? say('The following domains were not available during the check:', :yellow) - skip_domains.each { |domain| say(" #{domain}") } + shell.indent(2) do + skip_domains.each { |domain| say(domain) } + end end end diff --git a/lib/mastodon/cli/email_domain_blocks.rb b/lib/mastodon/cli/email_domain_blocks.rb index 6b9107c8ad..4aa31f8af8 100644 --- a/lib/mastodon/cli/email_domain_blocks.rb +++ b/lib/mastodon/cli/email_domain_blocks.rb @@ -10,8 +10,10 @@ module Mastodon::CLI EmailDomainBlock.where(parent_id: nil).find_each do |entry| say(entry.domain.to_s, :white) - EmailDomainBlock.where(parent_id: entry.id).find_each do |child| - say(" #{child.domain}", :cyan) + shell.indent do + EmailDomainBlock.where(parent_id: entry.id).find_each do |child| + say(child.domain, :cyan) + end end end end diff --git a/lib/mastodon/cli/emoji.rb b/lib/mastodon/cli/emoji.rb index 4a8949de0e..206961f854 100644 --- a/lib/mastodon/cli/emoji.rb +++ b/lib/mastodon/cli/emoji.rb @@ -62,7 +62,9 @@ module Mastodon::CLI failed += 1 say('Failure/Error: ', :red) say(entry.full_name) - say(" #{custom_emoji.errors[:image].join(', ')}", :red) + shell.indent(2) do + say(custom_emoji.errors[:image].join(', '), :red) + end end end end From 6ae1fcd0591ece24867483865f41e95b80cc0fb2 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 7 Nov 2024 12:45:46 +0100 Subject: [PATCH 331/550] Fix list of follow requests not having a back button (#32797) --- app/javascript/mastodon/features/follow_requests/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/follow_requests/index.jsx b/app/javascript/mastodon/features/follow_requests/index.jsx index a8f40a31d0..7d651f2ca6 100644 --- a/app/javascript/mastodon/features/follow_requests/index.jsx +++ b/app/javascript/mastodon/features/follow_requests/index.jsx @@ -68,7 +68,7 @@ class FollowRequests extends ImmutablePureComponent { ); return ( - + Date: Thu, 7 Nov 2024 08:46:20 -0500 Subject: [PATCH 332/550] Add `EmailDomainBlock.parents` scope (#31968) --- app/controllers/admin/email_domain_blocks_controller.rb | 2 +- app/models/email_domain_block.rb | 2 ++ lib/mastodon/cli/email_domain_blocks.rb | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/email_domain_blocks_controller.rb b/app/controllers/admin/email_domain_blocks_controller.rb index faa0a061a6..fe822d8c99 100644 --- a/app/controllers/admin/email_domain_blocks_controller.rb +++ b/app/controllers/admin/email_domain_blocks_controller.rb @@ -5,7 +5,7 @@ module Admin def index authorize :email_domain_block, :index? - @email_domain_blocks = EmailDomainBlock.where(parent_id: nil).includes(:children).order(id: :desc).page(params[:page]) + @email_domain_blocks = EmailDomainBlock.parents.includes(:children).order(id: :desc).page(params[:page]) @form = Form::EmailDomainBlockBatch.new end diff --git a/app/models/email_domain_block.rb b/app/models/email_domain_block.rb index f3a86eae8f..583d2e6c1b 100644 --- a/app/models/email_domain_block.rb +++ b/app/models/email_domain_block.rb @@ -28,6 +28,8 @@ class EmailDomainBlock < ApplicationRecord validates :domain, presence: true, uniqueness: true, domain: true + scope :parents, -> { where(parent_id: nil) } + # Used for adding multiple blocks at once attr_accessor :other_domains diff --git a/lib/mastodon/cli/email_domain_blocks.rb b/lib/mastodon/cli/email_domain_blocks.rb index 4aa31f8af8..7b2da8ef9f 100644 --- a/lib/mastodon/cli/email_domain_blocks.rb +++ b/lib/mastodon/cli/email_domain_blocks.rb @@ -7,11 +7,11 @@ module Mastodon::CLI class EmailDomainBlocks < Base desc 'list', 'List blocked e-mail domains' def list - EmailDomainBlock.where(parent_id: nil).find_each do |entry| - say(entry.domain.to_s, :white) + EmailDomainBlock.parents.find_each do |parent| + say(parent.domain.to_s, :white) shell.indent do - EmailDomainBlock.where(parent_id: entry.id).find_each do |child| + EmailDomainBlock.where(parent_id: parent.id).find_each do |child| say(child.domain, :cyan) end end From 16b074d731de2ee03d392f91dede60fe0b24b0b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 14:56:14 +0100 Subject: [PATCH 333/550] Update dependency net-http to '~> 0.5.0' (#32794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 690e2a59d2..f7808d4e75 100644 --- a/Gemfile +++ b/Gemfile @@ -221,7 +221,7 @@ gem 'concurrent-ruby', require: false gem 'connection_pool', require: false gem 'xorcist', '~> 1.1' -gem 'net-http', '~> 0.4.0' +gem 'net-http', '~> 0.5.0' gem 'rubyzip', '~> 2.3' gem 'hcaptcha', '~> 7.1' diff --git a/Gemfile.lock b/Gemfile.lock index 00ec451af9..087af73d9f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -416,7 +416,7 @@ GEM msgpack (1.7.3) multi_json (1.15.0) mutex_m (0.2.0) - net-http (0.4.1) + net-http (0.5.0) uri net-imap (0.5.0) date @@ -946,7 +946,7 @@ DEPENDENCIES mario-redis-lock (~> 1.2) memory_profiler mime-types (~> 3.6.0) - net-http (~> 0.4.0) + net-http (~> 0.5.0) net-ldap (~> 0.18) nokogiri (~> 1.15) oj (~> 3.14) From 41227aeb9534ed566241c3038bfc91401b971638 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 09:58:20 -0500 Subject: [PATCH 334/550] Update Rails to version 7.2.2 (#30391) --- Gemfile | 3 +- Gemfile.lock | 135 +++++++++--------- .../system_check/database_schema_check.rb | 2 +- .../concerns/status/safe_reblog_insert.rb | 19 ++- config/application.rb | 7 +- config/environments/development.rb | 10 +- config/environments/production.rb | 35 ++--- config/environments/test.rb | 9 +- lib/active_record/with_recursive.rb | 65 --------- lib/arel/union_parenthesizing.rb | 51 ------- lib/tasks/tests.rake | 2 +- .../database_schema_check_spec.rb | 4 +- 12 files changed, 118 insertions(+), 224 deletions(-) delete mode 100644 lib/active_record/with_recursive.rb delete mode 100644 lib/arel/union_parenthesizing.rb diff --git a/Gemfile b/Gemfile index f7808d4e75..47506929b0 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ ruby '>= 3.2.0' gem 'propshaft' gem 'puma', '~> 6.3' gem 'rack', '~> 2.2.7' -gem 'rails', '~> 7.1.1' +gem 'rails', '~> 7.2.0' gem 'thor', '~> 1.2' gem 'dotenv' @@ -63,6 +63,7 @@ gem 'kaminari', '~> 1.2' gem 'link_header', '~> 0.0' gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'mime-types', '~> 3.6.0', require: 'mime/types/columnar' +gem 'mutex_m' gem 'nokogiri', '~> 1.15' gem 'oj', '~> 3.14' gem 'ox', '~> 2.14' diff --git a/Gemfile.lock b/Gemfile.lock index 087af73d9f..1888485af0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,51 +10,46 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (7.1.4.2) - actionpack (= 7.1.4.2) - activesupport (= 7.1.4.2) + actioncable (7.2.2) + actionpack (= 7.2.2) + activesupport (= 7.2.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.4.2) - actionpack (= 7.1.4.2) - activejob (= 7.1.4.2) - activerecord (= 7.1.4.2) - activestorage (= 7.1.4.2) - activesupport (= 7.1.4.2) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.1.4.2) - actionpack (= 7.1.4.2) - actionview (= 7.1.4.2) - activejob (= 7.1.4.2) - activesupport (= 7.1.4.2) - mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp + actionmailbox (7.2.2) + actionpack (= 7.2.2) + activejob (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) + mail (>= 2.8.0) + actionmailer (7.2.2) + actionpack (= 7.2.2) + actionview (= 7.2.2) + activejob (= 7.2.2) + activesupport (= 7.2.2) + mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.1.4.2) - actionview (= 7.1.4.2) - activesupport (= 7.1.4.2) + actionpack (7.2.2) + actionview (= 7.2.2) + activesupport (= 7.2.2) nokogiri (>= 1.8.5) racc - rack (>= 2.2.4) + rack (>= 2.2.4, < 3.2) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.4.2) - actionpack (= 7.1.4.2) - activerecord (= 7.1.4.2) - activestorage (= 7.1.4.2) - activesupport (= 7.1.4.2) + useragent (~> 0.16) + actiontext (7.2.2) + actionpack (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.4.2) - activesupport (= 7.1.4.2) + actionview (7.2.2) + activesupport (= 7.2.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -64,31 +59,33 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - activejob (7.1.4.2) - activesupport (= 7.1.4.2) + activejob (7.2.2) + activesupport (= 7.2.2) globalid (>= 0.3.6) - activemodel (7.1.4.2) - activesupport (= 7.1.4.2) - activerecord (7.1.4.2) - activemodel (= 7.1.4.2) - activesupport (= 7.1.4.2) + activemodel (7.2.2) + activesupport (= 7.2.2) + activerecord (7.2.2) + activemodel (= 7.2.2) + activesupport (= 7.2.2) timeout (>= 0.4.0) - activestorage (7.1.4.2) - actionpack (= 7.1.4.2) - activejob (= 7.1.4.2) - activerecord (= 7.1.4.2) - activesupport (= 7.1.4.2) + activestorage (7.2.2) + actionpack (= 7.2.2) + activejob (= 7.2.2) + activerecord (= 7.2.2) + activesupport (= 7.2.2) marcel (~> 1.0) - activesupport (7.1.4.2) + activesupport (7.2.2) base64 + benchmark (>= 0.3) bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) aes_key_wrap (1.1.0) @@ -120,6 +117,7 @@ GEM base64 (0.2.0) bcp47_spec (0.2.1) bcrypt (3.1.20) + benchmark (0.3.0) better_errors (2.10.1) erubi (>= 1.0.0) rack (>= 0.9.0) @@ -613,20 +611,20 @@ GEM rackup (1.0.0) rack (< 3) webrick - rails (7.1.4.2) - actioncable (= 7.1.4.2) - actionmailbox (= 7.1.4.2) - actionmailer (= 7.1.4.2) - actionpack (= 7.1.4.2) - actiontext (= 7.1.4.2) - actionview (= 7.1.4.2) - activejob (= 7.1.4.2) - activemodel (= 7.1.4.2) - activerecord (= 7.1.4.2) - activestorage (= 7.1.4.2) - activesupport (= 7.1.4.2) + rails (7.2.2) + actioncable (= 7.2.2) + actionmailbox (= 7.2.2) + actionmailer (= 7.2.2) + actionpack (= 7.2.2) + actiontext (= 7.2.2) + actionview (= 7.2.2) + activejob (= 7.2.2) + activemodel (= 7.2.2) + activerecord (= 7.2.2) + activestorage (= 7.2.2) + activesupport (= 7.2.2) bundler (>= 1.15.0) - railties (= 7.1.4.2) + railties (= 7.2.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -641,10 +639,10 @@ GEM rails-i18n (7.0.10) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.1.4.2) - actionpack (= 7.1.4.2) - activesupport (= 7.1.4.2) - irb + railties (7.2.2) + actionpack (= 7.2.2) + activesupport (= 7.2.2) + irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) @@ -755,6 +753,7 @@ GEM scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) + securerandom (0.3.1) selenium-webdriver (4.26.0) base64 (~> 0.2) logger (~> 1.4) @@ -838,6 +837,7 @@ GEM unf_ext (0.0.9.1) unicode-display_width (2.6.0) uri (0.13.1) + useragent (0.16.10) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -946,6 +946,7 @@ DEPENDENCIES mario-redis-lock (~> 1.2) memory_profiler mime-types (~> 3.6.0) + mutex_m net-http (~> 0.5.0) net-ldap (~> 0.18) nokogiri (~> 1.15) @@ -984,7 +985,7 @@ DEPENDENCIES rack-attack (~> 6.6) rack-cors (~> 2.0) rack-test (~> 2.1) - rails (~> 7.1.1) + rails (~> 7.2.0) rails-controller-testing (~> 1.0) rails-i18n (~> 7.0) rdf-normalize (~> 0.5) diff --git a/app/lib/admin/system_check/database_schema_check.rb b/app/lib/admin/system_check/database_schema_check.rb index c2f01fd55b..a3ef0613ea 100644 --- a/app/lib/admin/system_check/database_schema_check.rb +++ b/app/lib/admin/system_check/database_schema_check.rb @@ -6,7 +6,7 @@ class Admin::SystemCheck::DatabaseSchemaCheck < Admin::SystemCheck::BaseCheck end def pass? - !ActiveRecord::Base.connection.migration_context.needs_migration? + !ActiveRecord::Base.connection_pool.migration_context.needs_migration? end def message diff --git a/app/models/concerns/status/safe_reblog_insert.rb b/app/models/concerns/status/safe_reblog_insert.rb index 60ddb78e52..48d585ea18 100644 --- a/app/models/concerns/status/safe_reblog_insert.rb +++ b/app/models/concerns/status/safe_reblog_insert.rb @@ -15,7 +15,9 @@ module Status::SafeReblogInsert # # The code is kept similar to ActiveRecord::Persistence code and calls it # directly when we are not handling a reblog. - def _insert_record(values, returning) + # + # https://github.com/rails/rails/blob/v7.2.1.1/activerecord/lib/active_record/persistence.rb#L238-L263 + def _insert_record(connection, values, returning) return super unless values.is_a?(Hash) && values['reblog_of_id']&.value.present? primary_key = self.primary_key @@ -30,14 +32,19 @@ module Status::SafeReblogInsert # The following line departs from stock ActiveRecord # Original code was: - # im.insert(values.transform_keys { |name| arel_table[name] }) + # im = Arel::InsertManager.new(arel_table) # Instead, we use a custom builder when a reblog is happening: im = _compile_reblog_insert(values) - connection.insert(im, "#{self} Create", primary_key || false, primary_key_value, returning: returning).tap do |result| - # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible. - # For our purposes, it's equivalent to a foreign key constraint violation - raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil? + with_connection do |_c| + connection.insert( + im, "#{self} Create", primary_key || false, primary_key_value, + returning: returning + ).tap do |result| + # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible. + # For our purposes, it's equivalent to a foreign key constraint violation + raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id'].value}) is not present in table \"statuses\"" if result.nil? + end end end diff --git a/config/application.rb b/config/application.rb index f94366d36f..18a1b1a0fd 100644 --- a/config/application.rb +++ b/config/application.rb @@ -52,8 +52,6 @@ require_relative '../lib/action_dispatch/remote_ip_extensions' require_relative '../lib/stoplight/redis_data_store_extensions' require_relative '../lib/active_record/database_tasks_extensions' require_relative '../lib/active_record/batches' -require_relative '../lib/active_record/with_recursive' -require_relative '../lib/arel/union_parenthesizing' require_relative '../lib/simple_navigation/item_extensions' Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true' @@ -61,10 +59,7 @@ Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true' module Mastodon class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. - config.load_defaults 7.1 - - # Explicitly set the cache format version to align with Rails version - config.active_support.cache_format_version = 7.1 + config.load_defaults 7.2 # Please, add to the `ignore` list any other `lib` subdirectories that do # not contain `.rb` files, or that should not be reloaded or eager loaded. diff --git a/config/environments/development.rb b/config/environments/development.rb index f5f22a3c1f..8533935a88 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -37,11 +37,6 @@ Rails.application.configure do config.action_controller.forgery_protection_origin_check = ENV['DISABLE_FORGERY_REQUEST_PROTECTION'].nil? - ActiveSupport::Logger.new($stdout).tap do |logger| - logger.formatter = config.log_formatter - config.logger = ActiveSupport::TaggedLogging.new(logger) - end - # Generate random VAPID keys Webpush.generate_key.tap do |vapid_key| config.x.vapid_private_key = vapid_key.private_key @@ -51,6 +46,8 @@ Rails.application.configure do # Don't care if the mailer can't send. config.action_mailer.raise_delivery_errors = false + # Disable caching for Action Mailer templates even if Action Controller + # caching is enabled. config.action_mailer.perform_caching = false # Print deprecation notices to the Rails logger. @@ -89,6 +86,9 @@ Rails.application.configure do # Raise error when a before_action's only/except options reference missing actions. config.action_controller.raise_on_missing_callback_actions = true + + # Apply autocorrection by RuboCop to files generated by `bin/rails generate`. + config.generators.apply_rubocop_autocorrect_after_generate! end Redis.raise_deprecations = true diff --git a/config/environments/production.rb b/config/environments/production.rb index 1cf752f3b2..6d4c30cd20 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -17,7 +17,6 @@ Rails.application.configure do # Full error reports are disabled and caching is turned on. config.consider_all_requests_local = false config.action_controller.perform_caching = true - config.action_controller.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present? # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files). @@ -26,8 +25,11 @@ Rails.application.configure do # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false + # Disable serving static files from `public/`, relying on NGINX/Apache to do so instead. + # config.public_file_server.enabled = false + # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.asset_host = "http://assets.example.com" + config.asset_host = ENV['CDN_HOST'] if ENV['CDN_HOST'].present? # Specifies the header that your server uses for sending files. config.action_dispatch.x_sendfile_header = ENV['SENDFILE_HEADER'] if ENV['SENDFILE_HEADER'].present? @@ -37,6 +39,10 @@ Rails.application.configure do # Allow to specify public IP of reverse proxy if it's needed config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split(/(?:\s*,\s*|\s+)/).map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present? + # Assume all access to the app is happening through a SSL-terminating reverse proxy. + # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies. + # config.assume_ssl = true + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. config.force_ssl = true # Skip http-to-https redirect for the default health check endpoint. @@ -46,14 +52,19 @@ Rails.application.configure do }, } - # Info include generic and useful information about system operation, but avoids logging too much - # information to avoid inadvertent exposure of personally identifiable information (PII). If you - # want to log everything, set the level to "debug". - config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym + # Log to STDOUT by default + config.logger = ActiveSupport::Logger.new($stdout) + .tap { |logger| logger.formatter = ::Logger::Formatter.new } + .then { |logger| ActiveSupport::TaggedLogging.new(logger) } # Prepend all log lines with the following tags. config.log_tags = [:request_id] + # "info" includes generic and useful information about system operation, but avoids logging too much + # information to avoid inadvertent exposure of personally identifiable information (PII). If you + # want to log everything, set the level to "debug". + config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info') + # Use a different cache store in production. config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache @@ -61,6 +72,8 @@ Rails.application.configure do # config.active_job.queue_adapter = :resque # config.active_job.queue_name_prefix = "mastodon_production" + # Disable caching for Action Mailer templates even if Action Controller + # caching is enabled. config.action_mailer.perform_caching = false # Ignore bad email addresses and do not raise email delivery errors. @@ -87,18 +100,8 @@ Rails.application.configure do { key: controller.signature_key_id } if controller.respond_to?(:signed_request?) && controller.signed_request? end - # Use a different logger for distributed setups. - # require "syslog/logger" - # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name") - - # Log to STDOUT by default - config.logger = ActiveSupport::Logger.new($stdout) - .tap { |logger| logger.formatter = ::Logger::Formatter.new } - .then { |logger| ActiveSupport::TaggedLogging.new(logger) } - # Do not dump schema after migrations. config.active_record.dump_schema_after_migration = false - config.action_mailer.perform_caching = false # E-mails diff --git a/config/environments/test.rb b/config/environments/test.rb index eb29ab1e17..5406eac9ec 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -19,8 +19,6 @@ Rails.application.configure do # loading is working properly before deploying your code. config.eager_load = ENV['CI'].present? - config.assets_digest = false - # Show full error reports and disable caching. config.consider_all_requests_local = true config.action_controller.perform_caching = false @@ -32,6 +30,8 @@ Rails.application.configure do # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false + # Disable caching for Action Mailer templates even if Action Controller + # caching is enabled. config.action_mailer.perform_caching = false config.action_mailer.default_options = { from: 'notifications@localhost' } @@ -41,6 +41,10 @@ Rails.application.configure do # ActionMailer::Base.deliveries array. config.action_mailer.delivery_method = :test + # Unlike controllers, the mailer instance doesn't have any context about the + # incoming request so you'll need to provide the :host parameter yourself. + config.action_mailer.default_url_options = { host: 'www.example.com' } + # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr @@ -58,7 +62,6 @@ Rails.application.configure do # Raise exceptions for disallowed deprecations. config.active_support.disallowed_deprecation = :raise - config.i18n.default_locale = :en config.i18n.fallbacks = true # Tell Active Support which deprecation messages to disallow. diff --git a/lib/active_record/with_recursive.rb b/lib/active_record/with_recursive.rb deleted file mode 100644 index 4bd3e81eed..0000000000 --- a/lib/active_record/with_recursive.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen_string_literal: true - -# Add support for writing recursive CTEs in ActiveRecord - -# Initially from Lorin Thwaits (https://github.com/lorint) as per comment: -# https://github.com/vlado/activerecord-cte/issues/16#issuecomment-1433043310 - -# Modified from the above code to change the signature to -# `with_recursive(hash)` and extending CTE hash values to also includes arrays -# of values that get turned into UNION ALL expressions. - -# This implementation has been merged in Rails: https://github.com/rails/rails/pull/51601 - -module ActiveRecord - module QueryMethodsExtensions - def with_recursive(*args) - @with_is_recursive = true - check_if_method_has_arguments!(__callee__, args) - spawn.with_recursive!(*args) - end - - # Like #with_recursive but modifies the relation in place. - def with_recursive!(*args) # :nodoc: - self.with_values += args - @with_is_recursive = true - self - end - - private - - def build_with(arel) - return if with_values.empty? - - with_statements = with_values.map do |with_value| - raise ArgumentError, "Unsupported argument type: #{with_value} #{with_value.class}" unless with_value.is_a?(Hash) - - build_with_value_from_hash(with_value) - end - - # Was: arel.with(with_statements) - @with_is_recursive ? arel.with(:recursive, with_statements) : arel.with(with_statements) - end - - def build_with_value_from_hash(hash) - hash.map do |name, value| - Arel::Nodes::TableAlias.new(build_with_expression_from_value(value), name) - end - end - - def build_with_expression_from_value(value) - case value - when Arel::Nodes::SqlLiteral then Arel::Nodes::Grouping.new(value) - when ActiveRecord::Relation then value.arel - when Arel::SelectManager then value - when Array then value.map { |e| build_with_expression_from_value(e) }.reduce { |result, value| Arel::Nodes::UnionAll.new(result, value) } - else - raise ArgumentError, "Unsupported argument type: `#{value}` #{value.class}" - end - end - end -end - -ActiveSupport.on_load(:active_record) do - ActiveRecord::QueryMethods.prepend(ActiveRecord::QueryMethodsExtensions) -end diff --git a/lib/arel/union_parenthesizing.rb b/lib/arel/union_parenthesizing.rb deleted file mode 100644 index 852d8e92d8..0000000000 --- a/lib/arel/union_parenthesizing.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -# Fix an issue with `LIMIT` ocurring on the left side of a `UNION` causing syntax errors. -# See https://github.com/rails/rails/issues/40181 - -# The fix has been merged in ActiveRecord: https://github.com/rails/rails/pull/51549 -# TODO: drop this when available in ActiveRecord - -# rubocop:disable all -- This is a mostly vendored file - -module Arel - module Visitors - class ToSql - private - - def infix_value_with_paren(o, collector, value, suppress_parens = false) - collector << "( " unless suppress_parens - collector = if o.left.class == o.class - infix_value_with_paren(o.left, collector, value, true) - else - select_parentheses o.left, collector, false # Changed from `visit o.left, collector` - end - collector << value - collector = if o.right.class == o.class - infix_value_with_paren(o.right, collector, value, true) - else - select_parentheses o.right, collector, false # Changed from `visit o.right, collector` - end - collector << " )" unless suppress_parens - collector - end - - def select_parentheses(o, collector, always_wrap_selects = true) - if o.is_a?(Nodes::SelectStatement) && (always_wrap_selects || require_parentheses?(o)) - collector << "(" - visit o, collector - collector << ")" - collector - else - visit o, collector - end - end - - def require_parentheses?(o) - !o.orders.empty? || o.limit || o.offset - end - end - end -end - -# rubocop:enable all diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake index cb7fce3139..74269439dd 100644 --- a/lib/tasks/tests.rake +++ b/lib/tasks/tests.rake @@ -11,7 +11,7 @@ namespace :tests do '3_3_0' => 2020_12_18_054746, }.each do |release, version| ActiveRecord::Tasks::DatabaseTasks - .migration_connection + .migration_connection_pool .migration_context .migrate(version) Rake::Task["tests:migrations:populate_v#{release}"] diff --git a/spec/lib/admin/system_check/database_schema_check_spec.rb b/spec/lib/admin/system_check/database_schema_check_spec.rb index 311d524956..3dc5763f92 100644 --- a/spec/lib/admin/system_check/database_schema_check_spec.rb +++ b/spec/lib/admin/system_check/database_schema_check_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Admin::SystemCheck::DatabaseSchemaCheck do context 'when database needs migration' do before do context = instance_double(ActiveRecord::MigrationContext, needs_migration?: true) - allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context) + allow(ActiveRecord::Base.connection_pool).to receive(:migration_context).and_return(context) end it 'returns false' do @@ -24,7 +24,7 @@ RSpec.describe Admin::SystemCheck::DatabaseSchemaCheck do context 'when database does not need migration' do before do context = instance_double(ActiveRecord::MigrationContext, needs_migration?: false) - allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context) + allow(ActiveRecord::Base.connection_pool).to receive(:migration_context).and_return(context) end it 'returns true' do From 870bb06994753023cde350bc94c4c317091d3d7b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 10:37:26 -0500 Subject: [PATCH 335/550] Add coverage for misc serializers (#32781) --- .../activitypub/actor_serializer_spec.rb | 39 +++++++++++++++++++ .../activitypub/add_serializer_spec.rb | 27 +++++++++++++ .../activitypub/collection_serializer_spec.rb | 39 +++++++++++++++++++ .../activitypub/remove_serializer_spec.rb | 27 +++++++++++++ ...ionship_severance_event_serializer_spec.rb | 18 +++++++++ .../rest/account_warning_serializer_spec.rb | 19 +++++++++ .../rest/admin/account_serializer_spec.rb | 25 ++++++++++++ .../rest/admin/cohort_serializer_spec.rb | 19 +++++++++ .../admin/webhook_event_serializer_spec.rb | 33 ++++++++++++++++ .../rest/appeal_serializer_spec.rb | 27 +++++++++++++ .../rest/custom_emoji_serializer_spec.rb | 18 +++++++++ .../extended_description_serializer_spec.rb | 35 +++++++++++++++++ spec/serializers/rest/rule_serializer_spec.rb | 18 +++++++++ 13 files changed, 344 insertions(+) create mode 100644 spec/serializers/activitypub/actor_serializer_spec.rb create mode 100644 spec/serializers/activitypub/add_serializer_spec.rb create mode 100644 spec/serializers/activitypub/collection_serializer_spec.rb create mode 100644 spec/serializers/activitypub/remove_serializer_spec.rb create mode 100644 spec/serializers/rest/account_relationship_severance_event_serializer_spec.rb create mode 100644 spec/serializers/rest/account_warning_serializer_spec.rb create mode 100644 spec/serializers/rest/admin/account_serializer_spec.rb create mode 100644 spec/serializers/rest/admin/cohort_serializer_spec.rb create mode 100644 spec/serializers/rest/admin/webhook_event_serializer_spec.rb create mode 100644 spec/serializers/rest/appeal_serializer_spec.rb create mode 100644 spec/serializers/rest/custom_emoji_serializer_spec.rb create mode 100644 spec/serializers/rest/extended_description_serializer_spec.rb create mode 100644 spec/serializers/rest/rule_serializer_spec.rb diff --git a/spec/serializers/activitypub/actor_serializer_spec.rb b/spec/serializers/activitypub/actor_serializer_spec.rb new file mode 100644 index 0000000000..ad24455953 --- /dev/null +++ b/spec/serializers/activitypub/actor_serializer_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::ActorSerializer do + subject { serialized_record_json(record, described_class) } + + describe '#type' do + context 'with the instance actor' do + let(:record) { Account.find(Account::INSTANCE_ACTOR_ID) } + + it { is_expected.to include('type' => 'Application') } + end + + context 'with an application actor' do + let(:record) { Fabricate :account, actor_type: 'Application' } + + it { is_expected.to include('type' => 'Service') } + end + + context 'with a service actor' do + let(:record) { Fabricate :account, actor_type: 'Service' } + + it { is_expected.to include('type' => 'Service') } + end + + context 'with a Group actor' do + let(:record) { Fabricate :account, actor_type: 'Group' } + + it { is_expected.to include('type' => 'Group') } + end + + context 'with a Person actor' do + let(:record) { Fabricate :account, actor_type: 'Person' } + + it { is_expected.to include('type' => 'Person') } + end + end +end diff --git a/spec/serializers/activitypub/add_serializer_spec.rb b/spec/serializers/activitypub/add_serializer_spec.rb new file mode 100644 index 0000000000..3b3eaeb1b0 --- /dev/null +++ b/spec/serializers/activitypub/add_serializer_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::AddSerializer do + describe '.serializer_for' do + subject { described_class.serializer_for(model, {}) } + + context 'with a Status model' do + let(:model) { Status.new } + + it { is_expected.to eq(described_class::UriSerializer) } + end + + context 'with a FeaturedTag model' do + let(:model) { FeaturedTag.new } + + it { is_expected.to eq(ActivityPub::HashtagSerializer) } + end + + context 'with an Array' do + let(:model) { [] } + + it { is_expected.to eq(ActiveModel::Serializer::CollectionSerializer) } + end + end +end diff --git a/spec/serializers/activitypub/collection_serializer_spec.rb b/spec/serializers/activitypub/collection_serializer_spec.rb new file mode 100644 index 0000000000..7726df914f --- /dev/null +++ b/spec/serializers/activitypub/collection_serializer_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::CollectionSerializer do + describe '.serializer_for' do + subject { described_class.serializer_for(model, {}) } + + context 'with a Status model' do + let(:model) { Status.new } + + it { is_expected.to eq(ActivityPub::NoteSerializer) } + end + + context 'with a FeaturedTag model' do + let(:model) { FeaturedTag.new } + + it { is_expected.to eq(ActivityPub::HashtagSerializer) } + end + + context 'with an ActivityPub::CollectionPresenter' do + let(:model) { ActivityPub::CollectionPresenter.new } + + it { is_expected.to eq(described_class) } + end + + context 'with a String' do + let(:model) { '' } + + it { is_expected.to eq(described_class::StringSerializer) } + end + + context 'with an Array' do + let(:model) { [] } + + it { is_expected.to eq(ActiveModel::Serializer::CollectionSerializer) } + end + end +end diff --git a/spec/serializers/activitypub/remove_serializer_spec.rb b/spec/serializers/activitypub/remove_serializer_spec.rb new file mode 100644 index 0000000000..0e4b199838 --- /dev/null +++ b/spec/serializers/activitypub/remove_serializer_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::RemoveSerializer do + describe '.serializer_for' do + subject { described_class.serializer_for(model, {}) } + + context 'with a Status model' do + let(:model) { Status.new } + + it { is_expected.to eq(described_class::UriSerializer) } + end + + context 'with a FeaturedTag model' do + let(:model) { FeaturedTag.new } + + it { is_expected.to eq(ActivityPub::HashtagSerializer) } + end + + context 'with an Array' do + let(:model) { [] } + + it { is_expected.to eq(ActiveModel::Serializer::CollectionSerializer) } + end + end +end diff --git a/spec/serializers/rest/account_relationship_severance_event_serializer_spec.rb b/spec/serializers/rest/account_relationship_severance_event_serializer_spec.rb new file mode 100644 index 0000000000..95b4d7dcd2 --- /dev/null +++ b/spec/serializers/rest/account_relationship_severance_event_serializer_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::AccountRelationshipSeveranceEventSerializer do + subject { serialized_record_json(record, described_class) } + + let(:record) { Fabricate.build :account_relationship_severance_event, id: 123 } + + describe 'serialization' do + it 'returns expected values' do + expect(subject) + .to include( + 'id' => be_a(String).and(eq('123')) + ) + end + end +end diff --git a/spec/serializers/rest/account_warning_serializer_spec.rb b/spec/serializers/rest/account_warning_serializer_spec.rb new file mode 100644 index 0000000000..0f335d1215 --- /dev/null +++ b/spec/serializers/rest/account_warning_serializer_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::AccountWarningSerializer do + subject { serialized_record_json(record, described_class) } + + let(:record) { Fabricate :account_warning, id: 123, status_ids: [456, 789] } + + describe 'serialization' do + it 'returns expected values' do + expect(subject) + .to include( + 'id' => be_a(String).and(eq('123')), + 'status_ids' => be_a(Array).and(eq(['456', '789'])) + ) + end + end +end diff --git a/spec/serializers/rest/admin/account_serializer_spec.rb b/spec/serializers/rest/admin/account_serializer_spec.rb new file mode 100644 index 0000000000..58f58a997b --- /dev/null +++ b/spec/serializers/rest/admin/account_serializer_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::Admin::AccountSerializer do + subject { serialized_record_json(record, described_class) } + + describe 'created_by_application_id' do + context 'when account is application-created' do + let(:record) { Fabricate :account, user: Fabricate(:user, created_by_application: application) } + let(:application) { Fabricate :application } + + it { is_expected.to include('created_by_application_id' => application.id.to_s) } + end + end + + describe 'invited_by_account_id' do + context 'when account was invited' do + let(:record) { Fabricate :account, user: Fabricate(:user, invite: invite) } + let(:invite) { Fabricate :invite } + + it { is_expected.to include('invited_by_account_id' => invite.user.account.id.to_s) } + end + end +end diff --git a/spec/serializers/rest/admin/cohort_serializer_spec.rb b/spec/serializers/rest/admin/cohort_serializer_spec.rb new file mode 100644 index 0000000000..ed6067c0d2 --- /dev/null +++ b/spec/serializers/rest/admin/cohort_serializer_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::Admin::CohortSerializer do + subject { serialized_record_json(record, described_class) } + + let(:record) { Admin::Metrics::Retention.new('2024-01-01', '2024-01-02', 'day').cohorts.first } + + describe 'serialization' do + it 'returns expected values' do + expect(subject) + .to include( + 'data' => be_a(Array), + 'period' => /2024-01-01/ + ) + end + end +end diff --git a/spec/serializers/rest/admin/webhook_event_serializer_spec.rb b/spec/serializers/rest/admin/webhook_event_serializer_spec.rb new file mode 100644 index 0000000000..3cbfbd92a3 --- /dev/null +++ b/spec/serializers/rest/admin/webhook_event_serializer_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::Admin::WebhookEventSerializer do + describe '.serializer_for' do + subject { described_class.serializer_for(model, {}) } + + context 'with an Account model' do + let(:model) { Account.new } + + it { is_expected.to eq(REST::Admin::AccountSerializer) } + end + + context 'with a Report model' do + let(:model) { Report.new } + + it { is_expected.to eq(REST::Admin::ReportSerializer) } + end + + context 'with a Status model' do + let(:model) { Status.new } + + it { is_expected.to eq(REST::StatusSerializer) } + end + + context 'with an Array' do + let(:model) { [] } + + it { is_expected.to eq(ActiveModel::Serializer::CollectionSerializer) } + end + end +end diff --git a/spec/serializers/rest/appeal_serializer_spec.rb b/spec/serializers/rest/appeal_serializer_spec.rb new file mode 100644 index 0000000000..1ae6617de5 --- /dev/null +++ b/spec/serializers/rest/appeal_serializer_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::AppealSerializer do + subject { serialized_record_json(record, described_class) } + + describe 'state' do + context 'when appeal is approved' do + let(:record) { Fabricate.build :appeal, approved_at: 2.days.ago } + + it { is_expected.to include('state' => 'approved') } + end + + context 'when appeal is rejected' do + let(:record) { Fabricate.build :appeal, rejected_at: 2.days.ago } + + it { is_expected.to include('state' => 'rejected') } + end + + context 'when appeal is not approved or rejected' do + let(:record) { Fabricate.build :appeal, approved_at: nil, rejected_at: nil } + + it { is_expected.to include('state' => 'pending') } + end + end +end diff --git a/spec/serializers/rest/custom_emoji_serializer_spec.rb b/spec/serializers/rest/custom_emoji_serializer_spec.rb new file mode 100644 index 0000000000..a694ca515a --- /dev/null +++ b/spec/serializers/rest/custom_emoji_serializer_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::CustomEmojiSerializer do + subject { serialized_record_json(record, described_class) } + + let(:record) { Fabricate.build :custom_emoji, id: 123, category: Fabricate(:custom_emoji_category, name: 'Category Name') } + + describe 'serialization' do + it 'returns expected values' do + expect(subject) + .to include( + 'category' => be_a(String).and(eq('Category Name')) + ) + end + end +end diff --git a/spec/serializers/rest/extended_description_serializer_spec.rb b/spec/serializers/rest/extended_description_serializer_spec.rb new file mode 100644 index 0000000000..d7bd078e1d --- /dev/null +++ b/spec/serializers/rest/extended_description_serializer_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::ExtendedDescriptionSerializer do + subject { serialized_record_json(record, described_class) } + + describe 'serialization' do + context 'with text present' do + let(:record) { ExtendedDescription.new text: 'Hello world', updated_at: Date.new(2024, 1, 1) } + + it 'returns expected values' do + expect(subject) + .to include( + 'content' => eq(<<~HTML), +

Hello world

+ HTML + 'updated_at' => eq('2024-01-01') + ) + end + end + + context 'with text missing' do + let(:record) { ExtendedDescription.new text: nil, updated_at: Date.new(2024, 1, 1) } + + it 'returns expected values' do + expect(subject) + .to include( + 'content' => eq(''), + 'updated_at' => eq('2024-01-01') + ) + end + end + end +end diff --git a/spec/serializers/rest/rule_serializer_spec.rb b/spec/serializers/rest/rule_serializer_spec.rb new file mode 100644 index 0000000000..4d801e77d3 --- /dev/null +++ b/spec/serializers/rest/rule_serializer_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::RuleSerializer do + subject { serialized_record_json(record, described_class) } + + let(:record) { Fabricate.build :rule, id: 123 } + + describe 'serialization' do + it 'returns expected values' do + expect(subject) + .to include( + 'id' => be_a(String).and(eq('123')) + ) + end + end +end From f180880f657c92b5deec181486c4ebd3a0aa4f79 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 7 Nov 2024 10:40:41 -0500 Subject: [PATCH 336/550] Remove postgres version support check for `REINDEX` in migration (#32744) --- ...51_add_unique_index_on_preview_cards_statuses.rb | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/db/post_migrate/20230803082451_add_unique_index_on_preview_cards_statuses.rb b/db/post_migrate/20230803082451_add_unique_index_on_preview_cards_statuses.rb index 4271f8c08a..c35ad80028 100644 --- a/db/post_migrate/20230803082451_add_unique_index_on_preview_cards_statuses.rb +++ b/db/post_migrate/20230803082451_add_unique_index_on_preview_cards_statuses.rb @@ -15,21 +15,10 @@ class AddUniqueIndexOnPreviewCardsStatuses < ActiveRecord::Migration[6.1] private - def supports_concurrent_reindex? - @supports_concurrent_reindex ||= begin - ActiveRecord::Base.connection.database_version >= 120_000 - end - end - def deduplicate_and_reindex! deduplicate_preview_cards! - if supports_concurrent_reindex? - safety_assured { execute 'REINDEX INDEX CONCURRENTLY preview_cards_statuses_pkey' } - else - remove_index :preview_cards_statuses, name: :preview_cards_statuses_pkey - add_index :preview_cards_statuses, [:status_id, :preview_card_id], name: :preview_cards_statuses_pkey, algorithm: :concurrently, unique: true - end + safety_assured { execute 'REINDEX INDEX CONCURRENTLY preview_cards_statuses_pkey' } rescue ActiveRecord::RecordNotUnique retry end From 8df867b20a5542a29a66c8380e97aa5bf5921c90 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:53:47 +0100 Subject: [PATCH 337/550] New Crowdin Translations (automated) (#32803) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/it.json | 15 +++ app/javascript/mastodon/locales/ru.json | 162 +++++++++++++----------- app/javascript/mastodon/locales/sk.json | 7 + app/javascript/mastodon/locales/sv.json | 13 ++ config/locales/ru.yml | 54 +++++++- 5 files changed, 172 insertions(+), 79 deletions(-) diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index a692fb7fd3..13ba1f8836 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -87,6 +87,19 @@ "alert.unexpected.title": "Oops!", "alt_text_badge.title": "Testo alternativo", "announcement.announcement": "Annuncio", + "annual_report.summary.archetype.oracle": "L'oracolo", + "annual_report.summary.followers.followers": "seguaci", + "annual_report.summary.followers.total": "{count} in totale", + "annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:", + "annual_report.summary.highlighted_post.by_favourites": "il post più apprezzato", + "annual_report.summary.highlighted_post.by_reblogs": "il post più condiviso", + "annual_report.summary.highlighted_post.by_replies": "il post con più risposte", + "annual_report.summary.highlighted_post.possessive": "di {name}", + "annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato", + "annual_report.summary.new_posts.new_posts": "nuovi post", + "annual_report.summary.percentile.text": "Questo ti colloca tra ildei migliori utenti Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.", "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.", @@ -508,6 +521,8 @@ "notification.admin.report_statuses_other": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.admin.sign_up.name_and_others": "Si sono iscritti: {name} e {count, plural, one {# altro utente} other {altri # utenti}}", + "notification.annual_report.message": "Il tuo #Wrapstodon {year} ti aspetta! Scopri i momenti salienti e memorabili del tuo anno su Mastodon!", + "notification.annual_report.view": "Visualizza #Wrapstodon", "notification.favourite": "{name} ha aggiunto il tuo post ai preferiti", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# altro} other {altri #}} hanno aggiunto il tuo post ai preferiti", "notification.follow": "{name} ha iniziato a seguirti", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 9d937939a9..f5617550e1 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -40,7 +40,7 @@ "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", "account.go_to_profile": "Перейти к профилю", "account.hide_reblogs": "Скрыть продвижения от @{name}", - "account.in_memoriam": "В Памяти.", + "account.in_memoriam": "Вечная память.", "account.joined_short": "Присоединился", "account.languages": "Изменить языки подписки", "account.link_verified_on": "Владение этой ссылкой было проверено {date}", @@ -62,13 +62,13 @@ "account.requested_follow": "{name} отправил(а) вам запрос на подписку", "account.share": "Поделиться профилем @{name}", "account.show_reblogs": "Показывать продвижения от @{name}", - "account.statuses_counter": "{count, plural, one {# пост} few {# поста} many {# постов} other {# постов}}", + "account.statuses_counter": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}", "account.unblock": "Разблокировать @{name}", "account.unblock_domain": "Разблокировать {domain}", "account.unblock_short": "Разблокировать", "account.unendorse": "Не рекомендовать в профиле", "account.unfollow": "Отписаться", - "account.unmute": "Убрать {name} из игнорируемых", + "account.unmute": "Перестать игнорировать @{name}", "account.unmute_notifications_short": "Включить уведомления", "account.unmute_short": "Не игнорировать", "account_note.placeholder": "Текст заметки", @@ -87,6 +87,20 @@ "alert.unexpected.title": "Ой!", "alt_text_badge.title": "Альтернативный текст", "announcement.announcement": "Объявление", + "annual_report.summary.archetype.booster": "Репостер", + "annual_report.summary.archetype.lurker": "Молчун", + "annual_report.summary.archetype.pollster": "Опросчик", + "annual_report.summary.archetype.replier": "Душа компании", + "annual_report.summary.followers.followers": "подписчиков", + "annual_report.summary.here_it_is": "Вот ваши итоги {year} года:", + "annual_report.summary.highlighted_post.by_favourites": "пост с наибольшим количеством звёздочек", + "annual_report.summary.highlighted_post.by_reblogs": "пост с наибольшим количеством продвижений", + "annual_report.summary.highlighted_post.by_replies": "пост с наибольшим количеством ответов", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хэштег", + "annual_report.summary.new_posts.new_posts": "новых постов", + "annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!", "attachments_list.unprocessed": "(не обработан)", "audio.hide": "Скрыть аудио", "block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение. Однако, соблюдение требований не гарантировано, поскольку некоторые серверы могут работать с блокировками по-разному. Публичные записи по-прежнему могут быть видны неавторизованным пользователям.", @@ -146,10 +160,10 @@ "community.column_settings.remote_only": "Только удалённые", "compose.language.change": "Сменить язык", "compose.language.search": "Поиск языков...", - "compose.published.body": "Запись опубликована.", + "compose.published.body": "Пост опубликован.", "compose.published.open": "Открыть", - "compose.saved.body": "Запись сохранена.", - "compose_form.direct_message_warning_learn_more": "Подробнее", + "compose.saved.body": "Пост отредактирован.", + "compose_form.direct_message_warning_learn_more": "Узнать больше", "compose_form.encryption_warning": "Посты в Mastodon не защищены сквозным шифрованием. Не делитесь конфиденциальной информацией через Mastodon.", "compose_form.hashtag_warning": "Этот пост не будет виден ни под одним из хэштегов, так как он не публичный. Только публичные посты можно найти по хэштегу.", "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", @@ -161,14 +175,14 @@ "compose_form.poll.single": "Один вариант ответа", "compose_form.poll.switch_to_multiple": "Разрешить выбор нескольких вариантов", "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", - "compose_form.poll.type": "Стиль", + "compose_form.poll.type": "Тип", "compose_form.publish": "Опубликовать", "compose_form.publish_form": "Опубликовать", "compose_form.reply": "Ответить", "compose_form.save_changes": "Сохранить", "compose_form.spoiler.marked": "Текст скрыт за предупреждением", "compose_form.spoiler.unmarked": "Текст не скрыт", - "compose_form.spoiler_placeholder": "Предупреждение о контенте (опционально)", + "compose_form.spoiler_placeholder": "Предупреждение о содержимом (необязательно)", "confirmation_modal.cancel": "Отмена", "confirmations.block.confirm": "Заблокировать", "confirmations.delete.confirm": "Удалить", @@ -178,17 +192,17 @@ "confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?", "confirmations.delete_list.title": "Удалить список?", "confirmations.discard_edit_media.confirm": "Отменить", - "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", + "confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?", "confirmations.edit.confirm": "Редактировать", - "confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?", - "confirmations.edit.title": "Перепишем сообщение?", + "confirmations.edit.message": "При редактировании, текст набираемого поста будет очищен. Продолжить?", + "confirmations.edit.title": "Переписать сообщение?", "confirmations.logout.confirm": "Выйти", "confirmations.logout.message": "Вы уверены, что хотите выйти?", "confirmations.logout.title": "Выйти?", "confirmations.mute.confirm": "Игнорировать", "confirmations.redraft.confirm": "Удалить и исправить", - "confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут удалены.", - "confirmations.redraft.title": "Удалим и исправим пост?", + "confirmations.redraft.message": "Вы уверены, что хотите удалить и переписать этот пост? Отметки «избранного», продвижения и ответы к оригинальному посту будут потеряны.", + "confirmations.redraft.title": "Создать пост заново?", "confirmations.reply.confirm": "Ответить", "confirmations.reply.message": "При ответе, текст набираемого поста будет очищен. Продолжить?", "confirmations.reply.title": "Перепишем пост?", @@ -243,7 +257,7 @@ "embed.preview": "Так это будет выглядеть:", "emoji_button.activity": "Занятия", "emoji_button.clear": "Очистить", - "emoji_button.custom": "С этого узла", + "emoji_button.custom": "С этого сервера", "emoji_button.flags": "Флаги", "emoji_button.food": "Еда и напитки", "emoji_button.label": "Вставить эмодзи", @@ -350,12 +364,12 @@ "hashtag.column_settings.tag_mode.any": "Любой из списка", "hashtag.column_settings.tag_mode.none": "Ни один из списка", "hashtag.column_settings.tag_toggle": "Включить дополнительные теги для этой колонки", - "hashtag.counter_by_accounts": "{count, plural, one {{counter} участник} few {{counter} участников} many {{counter} участников} other {{counter} участников}}", - "hashtag.counter_by_uses": "{count, plural, one {{counter} сообщение} few {{counter} сообщения} many {{counter} сообщения} other {{counter} сообщения}}", - "hashtag.counter_by_uses_today": "{count, plural, one {{counter} сообщение} other {{counter} сообщений}} сегодня", + "hashtag.counter_by_accounts": "{count, plural, one {{counter} пользователь} few {{counter} пользователя} other {{counter} пользователей}}", + "hashtag.counter_by_uses": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}", + "hashtag.counter_by_uses_today": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}} сегодня", "hashtag.follow": "Подписаться на новые посты", "hashtag.unfollow": "Отписаться", - "hashtags.and_other": "...и {count, plural, other {# ещё}}", + "hashtags.and_other": "…и {count, plural, other {ещё #}}", "hints.profiles.followers_may_be_missing": "Подписчики у этого профиля могут отсутствовать.", "hints.profiles.follows_may_be_missing": "Фолловеры для этого профиля могут отсутствовать.", "hints.profiles.posts_may_be_missing": "Некоторые сообщения из этого профиля могут отсутствовать.", @@ -404,15 +418,15 @@ "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}", "keyboard_shortcuts.back": "перейти назад", "keyboard_shortcuts.blocked": "чтобы открыть список заблокированных", - "keyboard_shortcuts.boost": "Репостнуть", + "keyboard_shortcuts.boost": "продвинуть пост", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", "keyboard_shortcuts.description": "Описание", "keyboard_shortcuts.direct": "чтобы открыть столбец личных упоминаний", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", - "keyboard_shortcuts.favourite": "Добавить пост в избранное", - "keyboard_shortcuts.favourites": "Открыть «Избранное»", + "keyboard_shortcuts.favourite": "добавить пост в избранное", + "keyboard_shortcuts.favourites": "открыть «Избранные»", "keyboard_shortcuts.federated": "перейти к глобальной ленте", "keyboard_shortcuts.heading": "Сочетания клавиш", "keyboard_shortcuts.home": "перейти к домашней ленте", @@ -420,7 +434,7 @@ "keyboard_shortcuts.legend": "показать это окно", "keyboard_shortcuts.local": "перейти к локальной ленте", "keyboard_shortcuts.mention": "упомянуть автора поста", - "keyboard_shortcuts.muted": "Открыть список игнорируемых", + "keyboard_shortcuts.muted": "открыть список игнорируемых", "keyboard_shortcuts.my_profile": "перейти к своему профилю", "keyboard_shortcuts.notifications": "перейти к уведомлениям", "keyboard_shortcuts.open_media": "открыть вложение", @@ -432,7 +446,7 @@ "keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании", "keyboard_shortcuts.start": "Перейти к разделу \"Начать\"", "keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением", - "keyboard_shortcuts.toggle_sensitivity": "Показать/скрыть медиафайлы", + "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы", "keyboard_shortcuts.toot": "начать писать новый пост", "keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска", "keyboard_shortcuts.up": "вверх по списку", @@ -470,12 +484,12 @@ "mute_modal.show_options": "Показать опции", "mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.", "mute_modal.they_wont_know": "Они не будут знать, что их заглушили.", - "mute_modal.title": "Заткнуть пользователя?", + "mute_modal.title": "Заглушить пользователя?", "mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.", "mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.", "navigation_bar.about": "О проекте", - "navigation_bar.administration": "Администрация", - "navigation_bar.advanced_interface": "Включить многоколоночный интерфейс", + "navigation_bar.administration": "Администрирование", + "navigation_bar.advanced_interface": "Открыть в многоколоночном интерфейсе", "navigation_bar.blocks": "Заблокированные пользователи", "navigation_bar.bookmarks": "Закладки", "navigation_bar.community_timeline": "Локальная лента", @@ -501,27 +515,29 @@ "navigation_bar.search": "Поиск", "navigation_bar.security": "Безопасность", "not_signed_in_indicator.not_signed_in": "Вам нужно войти, чтобы иметь доступ к этому ресурсу.", - "notification.admin.report": "{name} сообщил о {target}", - "notification.admin.report_account": "{name} сообщил {count, plural, one {один пост} other {# постов}} от {target} для {category}", - "notification.admin.report_account_other": "{name} сообщил {count, plural, one {одно сообщение} other {# сообщений}} от {target}", - "notification.admin.report_statuses": "{name} сообщил {target} для {category}", - "notification.admin.report_statuses_other": "{name} сообщает {target}", - "notification.admin.sign_up": "{name} зарегистрирован", - "notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# другой} other {# другие}} подписались", + "notification.admin.report": "{name} пожаловался на {target}", + "notification.admin.report_account": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target} по причине: {category}", + "notification.admin.report_account_other": "{name} пожаловался на {count, plural, one {# пост} few {# поста} other {# постов}} от пользователя {target}", + "notification.admin.report_statuses": "{name} пожаловался на {target} по причине: {category}", + "notification.admin.report_statuses_other": "{name} пожаловался на {target}", + "notification.admin.sign_up": "{name} зарегистрировался", + "notification.admin.sign_up.name_and_others": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} зарегистрировались", + "notification.annual_report.message": "#Wrapstodon за {year} год ждёт вас! Откройте для себя итоги и памятные моменты этого года в Mastodon!", + "notification.annual_report.view": "Перейти к #Wrapstodon", "notification.favourite": "{name} добавил(а) ваш пост в избранное", "notification.favourite.name_and_others_with_link": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} добавили ваш пост в избранное", "notification.follow": "{name} подписался (-лась) на вас", - "notification.follow.name_and_others": "{name} и {count, plural, one {# other} few {# others} many {# others} other {# others}} подписались на вас", + "notification.follow.name_and_others": "{name} и ещё {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} подписались на вас", "notification.follow_request": "{name} отправил запрос на подписку", "notification.follow_request.name_and_others": "{name} и ещё {count, plural, one {#} other {# других}} подписались на вас", "notification.label.mention": "Упоминание", - "notification.label.private_mention": "Частное упоминание", - "notification.label.private_reply": "Частный ответ", - "notification.label.reply": "Ответить", + "notification.label.private_mention": "Личное упоминание", + "notification.label.private_reply": "Приватный ответ", + "notification.label.reply": "Ответ", "notification.mention": "Упоминание", - "notification.mentioned_you": "{name} упоминает вас", + "notification.mentioned_you": "{name} упомянул(а) вас", "notification.moderation-warning.learn_more": "Узнать больше", - "notification.moderation_warning": "Вы получили предупреждение от модерации", + "notification.moderation_warning": "Модераторы вынесли вам предупреждение", "notification.moderation_warning.action_delete_statuses": "Некоторые из ваших публикаций были удалены.", "notification.moderation_warning.action_disable": "Ваша учётная запись была отключена.", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Некоторые из ваших сообщений были отмечены как деликатные.", @@ -561,16 +577,16 @@ "notification_requests.view": "Просмотр уведомлений", "notifications.clear": "Очистить уведомления", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", - "notifications.clear_title": "Сбросить уведомления?", + "notifications.clear_title": "Очистить уведомления?", "notifications.column_settings.admin.report": "Новые жалобы:", "notifications.column_settings.admin.sign_up": "Новые регистрации:", "notifications.column_settings.alert": "Уведомления на рабочем столе", - "notifications.column_settings.favourite": "Избранные:", - "notifications.column_settings.filter_bar.advanced": "Отображать все категории", + "notifications.column_settings.favourite": "Ваш пост добавили в избранные:", + "notifications.column_settings.filter_bar.advanced": "Показать все категории", "notifications.column_settings.filter_bar.category": "Панель сортировки", "notifications.column_settings.follow": "У вас новый подписчик:", "notifications.column_settings.follow_request": "Новые запросы на подписку:", - "notifications.column_settings.group": "Группа", + "notifications.column_settings.group": "Группировать", "notifications.column_settings.mention": "Вас упомянули в посте:", "notifications.column_settings.poll": "Опрос, в котором вы приняли участие, завершился:", "notifications.column_settings.push": "Пуш-уведомления", @@ -590,27 +606,27 @@ "notifications.filter.statuses": "Обновления от людей, на которых вы подписаны", "notifications.grant_permission": "Предоставить разрешение.", "notifications.group": "{count} уведомл.", - "notifications.mark_as_read": "Отмечать все уведомления прочитанными", + "notifications.mark_as_read": "Отметить все уведомления прочитанными", "notifications.permission_denied": "Уведомления на рабочем столе недоступны, так как вы запретили их отправку в браузере. Проверьте настройки для сайта, чтобы включить их обратно.", "notifications.permission_denied_alert": "Уведомления на рабочем столе недоступны, так как вы ранее отклонили запрос на их отправку.", "notifications.permission_required": "Чтобы включить уведомления на рабочем столе, необходимо разрешить их в браузере.", - "notifications.policy.accept": "Принять", - "notifications.policy.accept_hint": "Показать в уведомлениях", - "notifications.policy.drop": "Игнорируем", - "notifications.policy.drop_hint": "Отправить в пустоту, чтобы никогда больше не увидеть", - "notifications.policy.filter": "Фильтр", - "notifications.policy.filter_hint": "Отправка в папку фильтрованных уведомлений", - "notifications.policy.filter_limited_accounts_hint": "Ограничено модераторами сервера", - "notifications.policy.filter_limited_accounts_title": "Модерируемые аккаунты", - "notifications.policy.filter_new_accounts.hint": "Создано в течение последних {days, plural, one {один день} few {# дней} many {# дней} other {# дня}}", + "notifications.policy.accept": "Принимать", + "notifications.policy.accept_hint": "Показывать в уведомлениях", + "notifications.policy.drop": "Игнорировать", + "notifications.policy.drop_hint": "Отправлять в пустоту, чтобы никогда больше не увидеть", + "notifications.policy.filter": "Фильтровать", + "notifications.policy.filter_hint": "Отправлять в раздел отфильтрованных уведомлений", + "notifications.policy.filter_limited_accounts_hint": "Ограниченные модераторами сервера", + "notifications.policy.filter_limited_accounts_title": "Модерируемые учётные записи", + "notifications.policy.filter_new_accounts.hint": "Созданные в течение {days, plural, one {последнего # дня} other {последних # дней}}", "notifications.policy.filter_new_accounts_title": "Новые учётные записи", "notifications.policy.filter_not_followers_hint": "Включая людей, которые подписаны на вас меньше чем {days, plural, one {# день} few {# дня} other {# дней}}", "notifications.policy.filter_not_followers_title": "Люди, не подписанные на вас", "notifications.policy.filter_not_following_hint": "Пока вы не одобрите их вручную", "notifications.policy.filter_not_following_title": "Люди, на которых вы не подписаны", - "notifications.policy.filter_private_mentions_hint": "Фильтруется, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя", + "notifications.policy.filter_private_mentions_hint": "Фильтруются, если только это не ответ на ваше собственное упоминание или если вы подписаны на отправителя", "notifications.policy.filter_private_mentions_title": "Нежелательные личные упоминания", - "notifications.policy.title": "………Управлять уведомлениями от…", + "notifications.policy.title": "Управление уведомлениями", "notifications_permission_banner.enable": "Включить уведомления", "notifications_permission_banner.how_to_control": "Получайте уведомления даже когда Mastodon закрыт, включив уведомления на рабочем столе. А чтобы лишний шум не отвлекал, вы можете настроить какие уведомления вы хотите получать, нажав на кнопку {icon} выше.", "notifications_permission_banner.title": "Будьте в курсе происходящего", @@ -679,7 +695,7 @@ "privacy_policy.title": "Политика конфиденциальности", "recommended": "Рекомендуется", "refresh": "Обновить", - "regeneration_indicator.label": "Грузим…", + "regeneration_indicator.label": "Загрузка…", "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!", "relative_time.days": "{number} д", "relative_time.full.days": "{number, plural, one {# день} many {# дней} other {# дня}} назад", @@ -692,15 +708,15 @@ "relative_time.minutes": "{number} мин", "relative_time.seconds": "{number} с", "relative_time.today": "сегодня", - "reply_indicator.attachments": "{count, plural, one {# вложение} other {# вложения}}", + "reply_indicator.attachments": "{count, plural, one {# вложение} few {# вложения} other {# вложений}}", "reply_indicator.cancel": "Отмена", "reply_indicator.poll": "Опрос", "report.block": "Заблокировать", "report.block_explanation": "Вы перестанете видеть посты этого пользователя, и он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять, что вы заблокировали его/её.", - "report.categories.legal": "Правовая информация", + "report.categories.legal": "Нарушение закона", "report.categories.other": "Другое", "report.categories.spam": "Спам", - "report.categories.violation": "Содержимое нарушает одно или несколько правил узла", + "report.categories.violation": "Содержимое нарушает одно или несколько правил сервера", "report.category.subtitle": "Выберите наиболее подходящее", "report.category.title": "Расскажите нам, что не так с {type}", "report.category.title_account": "этим профилем", @@ -771,32 +787,32 @@ "server_banner.about_active_users": "Люди, заходившие на этот сервер за последние 30 дней (ежемесячные активные пользователи)", "server_banner.active_users": "активные пользователи", "server_banner.administered_by": "Управляется:", - "server_banner.is_one_of_many": "{domain} - это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в fediverse.", + "server_banner.is_one_of_many": "{domain} — это один из многих независимых серверов Mastodon, которые вы можете использовать для участия в сети Fediverse.", "server_banner.server_stats": "Статистика сервера:", "sign_in_banner.create_account": "Зарегистрироваться", - "sign_in_banner.follow_anyone": "Следите за любым человеком в федеральной вселенной и смотрите все в хронологическом порядке. Никаких алгоритмов, рекламы или клик бейта.", - "sign_in_banner.mastodon_is": "Mastodon - лучший способ быть в курсе всего происходящего.", + "sign_in_banner.follow_anyone": "Подписывайтесь на кого угодно в федивёрсе и смотрите ленту в хронологическом порядке. Никаких алгоритмов, рекламы или кликбейта.", + "sign_in_banner.mastodon_is": "Mastodon — лучший способ быть в курсе всего происходящего.", "sign_in_banner.sign_in": "Войти", "sign_in_banner.sso_redirect": "Войдите или Зарегистрируйтесь", "status.admin_account": "Открыть интерфейс модератора для @{name}", - "status.admin_domain": "Открыть интерфейс модерации {domain}", + "status.admin_domain": "Открыть интерфейс модератора для {domain}", "status.admin_status": "Открыть этот пост в интерфейсе модератора", "status.block": "Заблокировать @{name}", - "status.bookmark": "Сохранить в закладки", + "status.bookmark": "Добавить в закладки", "status.cancel_reblog_private": "Не продвигать", "status.cannot_reblog": "Этот пост не может быть продвинут", "status.continued_thread": "Продолжение темы", "status.copy": "Скопировать ссылку на пост", "status.delete": "Удалить", "status.detailed_status": "Подробный просмотр обсуждения", - "status.direct": "Лично упоминать @{name}", - "status.direct_indicator": "Личные упоминания", + "status.direct": "Упомянуть @{name} лично", + "status.direct_indicator": "Личное упоминание", "status.edit": "Изменить", "status.edited": "Дата последнего изменения: {date}", "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Получить код для встраивания", - "status.favourite": "Избранное", - "status.favourites": "{count, plural, one {в избранном} other {в избранном}}", + "status.favourite": "Добавить в избранное", + "status.favourites": "{count, plural, other {в избранном}}", "status.filter": "Фильтровать этот пост", "status.history.created": "{name} создал {date}", "status.history.edited": "{name} отредактировал(а) {date}", @@ -829,13 +845,13 @@ "status.show_less_all": "Свернуть все спойлеры в ветке", "status.show_more_all": "Развернуть все спойлеры в ветке", "status.show_original": "Показать оригинал", - "status.title.with_attachments": "{user} размещено {attachmentCount, plural, one {вложение} other {{attachmentCount} вложений}}", + "status.title.with_attachments": "{user} опубликовал {attachmentCount, plural, one {{attachmentCount} вложение} few {{attachmentCount} вложения} other {{attachmentCount} вложений}}", "status.translate": "Перевод", - "status.translated_from_with": "Переведено с {lang}, используя {provider}", - "status.uncached_media_warning": "Прослушивание недоступно", + "status.translated_from_with": "Переведено с {lang} с помощью {provider}", + "status.uncached_media_warning": "Предварительный просмотр недоступен", "status.unmute_conversation": "Не игнорировать обсуждение", "status.unpin": "Открепить от профиля", - "subscribed_languages.lead": "Посты только на выбранных языках будут отображаться на вашей домашней странице и в списке лент после изменения. Выберите «Нет», чтобы получать посты на всех языках.", + "subscribed_languages.lead": "Посты лишь на выбранных языках будут появляться в вашей домашней ленте и в списках после изменения. Снимите выбор, чтобы получать посты на всех языках.", "subscribed_languages.save": "Сохранить изменения", "subscribed_languages.target": "Изменить языки подписки для {target}", "tabs_bar.home": "Главная", @@ -845,7 +861,7 @@ "time_remaining.minutes": "{number, plural, one {осталась # минута} few {осталось # минуты} many {осталось # минут} other {осталось # минут}}", "time_remaining.moments": "остались считанные мгновения", "time_remaining.seconds": "{number, plural, one {# секунда} many {# секунд} other {# секунды}}", - "trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний день} few {последние {days} дня} other {последние {days} дней}}", + "trends.counter_by_accounts": "{count, plural, few {{counter} человека} other {{counter} человек}} за {days, plural, one {последний {days} день} few {последние {days} дня} other {последние {days} дней}}", "trends.trending_now": "Самое актуальное", "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", "units.short.billion": "{count} млрд", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 7b9254c0d3..1102754fd7 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -89,9 +89,11 @@ "announcement.announcement": "Oznámenie", "annual_report.summary.followers.followers": "sledovatelia", "annual_report.summary.highlighted_post.by_reblogs": "najviac vyzdvihovaný príspevok", + "annual_report.summary.highlighted_post.by_replies": "príspevok s najviac odpoveďami", "annual_report.summary.most_used_app.most_used_app": "najviac používaná aplikácia", "annual_report.summary.most_used_hashtag.most_used_hashtag": "najviac užívaný hashtag", "annual_report.summary.new_posts.new_posts": "nové príspevky", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nepovieme Berniemu.", "attachments_list.unprocessed": "(nespracované)", "audio.hide": "Skryť zvuk", "block_modal.show_less": "Zobraziť menej", @@ -409,6 +411,7 @@ "lightbox.close": "Zatvoriť", "lightbox.next": "Ďalej", "lightbox.previous": "Späť", + "lightbox.zoom_out": "Priblížiť na mieru", "limited_account_hint.action": "Aj tak zobraziť profil", "limited_account_hint.title": "Tento profil bol skrytý správcami servera {domain}.", "link_preview.author": "Autor: {name}", @@ -535,6 +538,8 @@ "notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača", "notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá", "notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.", + "notifications.policy.accept": "Prijať", + "notifications.policy.accept_hint": "Ukáž v oznámeniach", "notifications.policy.drop": "Ignoruj", "notifications.policy.filter": "Triediť", "notifications.policy.filter_limited_accounts_title": "Moderované účty", @@ -542,6 +547,7 @@ "notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú", "notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ", "notifications.policy.filter_private_mentions_title": "Nevyžiadané priame spomenutia", + "notifications.policy.title": "Spravuj oznámenia od…", "notifications_permission_banner.enable": "Povoliť upozornenia na ploche", "notifications_permission_banner.how_to_control": "Ak chcete dostávať upozornenia, keď Mastodon nie je otvorený, povoľte upozornenia na ploche. Po ich zapnutí môžete presne kontrolovať, ktoré typy interakcií generujú upozornenia na ploche, a to prostredníctvom tlačidla {icon} vyššie.", "notifications_permission_banner.title": "Nenechajte si nič ujsť", @@ -712,6 +718,7 @@ "status.bookmark": "Pridať záložku", "status.cancel_reblog_private": "Zrušiť zdieľanie", "status.cannot_reblog": "Tento príspevok nie je možné zdieľať", + "status.continued_thread": "Pokračujúce vlákno", "status.copy": "Kopírovať odkaz na príspevok", "status.delete": "Vymazať", "status.detailed_status": "Podrobný náhľad celej konverzácie", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 5f551fc4cd..e3571704bb 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -87,10 +87,22 @@ "alert.unexpected.title": "Hoppsan!", "alt_text_badge.title": "Alt-Text", "announcement.announcement": "Meddelande", + "annual_report.summary.archetype.booster": "Häftighetsjägaren", + "annual_report.summary.archetype.lurker": "Smygaren", + "annual_report.summary.archetype.oracle": "Oraklet", + "annual_report.summary.archetype.pollster": "Frågaren", + "annual_report.summary.archetype.replier": "Den sociala fjärilen", "annual_report.summary.followers.followers": "följare", "annual_report.summary.followers.total": "{count} totalt", + "annual_report.summary.here_it_is": "Här är en tillbakablick på ditt {year}:", + "annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerat inlägg", + "annual_report.summary.highlighted_post.by_reblogs": "mest boostat inlägg", "annual_report.summary.highlighted_post.by_replies": "inlägg med flest svar", + "annual_report.summary.highlighted_post.possessive": "{name}s", + "annual_report.summary.most_used_app.most_used_app": "mest använda app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest använda hashtag", "annual_report.summary.new_posts.new_posts": "nya inlägg", + "annual_report.summary.percentile.text": "Det placerar dig i toppav Mastodon-användare.", "annual_report.summary.percentile.we_wont_tell_bernie": "Vi berättar inte för Bernie.", "annual_report.summary.thanks": "Tack för att du är en del av Mastodon!", "attachments_list.unprocessed": "(obehandlad)", @@ -514,6 +526,7 @@ "notification.admin.report_statuses_other": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.admin.sign_up.name_and_others": "{name} och {count, plural, one {# en annan} other {# andra}} har registrerat sig", + "notification.annual_report.message": "Din {year} #Wrapstodon väntar! Upptäck ditt års höjdpunkter och minnesvärda stunder på Mastodon!", "notification.annual_report.view": "Visa #Wrapstodon", "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.favourite.name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}} har favoritmarkerat ditt inlägg", diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 41b74c8cb4..831f68b24b 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -65,7 +65,7 @@ ru: demote: Разжаловать destroyed_msg: Данные %{username} поставлены в очередь на удаление disable: Заморозка - disable_sign_in_token_auth: Отключите аутентификацию с помощью маркера электронной почты + disable_sign_in_token_auth: Отключить аутентификацию по e-mail кодам disable_two_factor_authentication: Отключить 2FA disabled: Отключено display_name: Отображаемое имя @@ -74,7 +74,7 @@ ru: email: E-mail email_status: Статус e-mail enable: Включить - enable_sign_in_token_auth: Включите аутентификацию с помощью маркера электронной почты + enable_sign_in_token_auth: Включить аутентификацию по e-mail кодам enabled: Включен enabled_msg: Учётная запись %{username} успешно разморожена followers: Подписчики @@ -147,8 +147,8 @@ ru: security_measures: only_password: Только пароль password_and_2fa: Пароль и 2FA - sensitive: Отметить как «деликатного содержания» - sensitized: отмечено как «деликатного характера» + sensitive: Деликатный + sensitized: отмечено как деликатный контент shared_inbox_url: URL общих входящих show: created_reports: Жалобы, отправленные с этой учётной записи @@ -166,7 +166,7 @@ ru: unblock_email: Разблокировать e-mail адрес unblocked_email_msg: E-mail адрес %{username} разблокирован unconfirmed_email: Неподтверждённый e-mail - undo_sensitized: Убрать отметку «деликатного содержания» + undo_sensitized: Снять отметку "деликатный" undo_silenced: Отменить скрытие undo_suspension: Снять блокировку unsilenced_msg: Ограничения с учётной записи %{username} сняты успешно @@ -1316,7 +1316,7 @@ ru: csv: CSV domain_blocks: Доменные блокировки lists: Списки - mutes: Ваши игнорируете + mutes: Ваши игнорируемые storage: Ваши файлы featured_tags: add_new: Добавить @@ -1439,6 +1439,47 @@ ru: many: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename} и отписаться от всех прочих. one: Вы собираетесь подписаться на %{count} аккаунт из файла %{filename} и отписаться от всех прочих. other: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename} и отписаться от всех прочих. + lists_html: + few: Вы собираетесь заменить свои списки содержимым файла %{filename}. В новые списки будут добавлены %{count} аккаунта. + many: Вы собираетесь заменить свои списки содержимым файла %{filename}. В новые списки будут добавлены %{count} аккаунтов. + one: Вы собираетесь заменить свои списки содержимым файла %{filename}. В новые списки будет добавлен %{count} аккаунт. + other: Вы собираетесь заменить свои списки содержимым файла %{filename}. В новые списки будут добавлены %{count} аккаунтов. + muting_html: + few: Вы собираетесь заменить свой список игнорируемых пользователей списком из %{count} аккаунтов из файла %{filename}. + many: Вы собираетесь заменить свой список игнорируемых пользователей списком из %{count} аккаунтов из файла %{filename}. + one: Вы собираетесь заменить свой список игнорируемых пользователей списком из %{count} аккаунта из файла %{filename}. + other: Вы собираетесь заменить свой список игнорируемых пользователей списком из %{count} аккаунтов из файла %{filename}. + preambles: + blocking_html: + few: Вы собираетесь заблокировать %{count} аккаунта из файла %{filename}. + many: Вы собираетесь заблокировать %{count} аккаунтов из файла %{filename}. + one: Вы собираетесь заблокировать %{count} аккаунт из файла %{filename}. + other: Вы собираетесь заблокировать %{count} аккаунтов из файла %{filename}. + bookmarks_html: + few: Вы собираетесь добавить %{count} поста из файла %{filename} в свои закладки. + many: Вы собираетесь добавить %{count} постов из файла %{filename} в свои закладки. + one: Вы собираетесь добавить %{count} пост из файла %{filename} в свои закладки. + other: Вы собираетесь добавить %{count} постов из файла %{filename} в свои закладки. + domain_blocking_html: + few: Вы собираетесь заблокировать %{count} домена из файла %{filename}. + many: Вы собираетесь заблокировать %{count} доменов из файла %{filename}. + one: Вы собираетесь заблокировать %{count} домен из файла %{filename}. + other: Вы собираетесь заблокировать %{count} доменов из файла %{filename}. + following_html: + few: Вы собираетесь подписаться на %{count} аккаунта из файла %{filename}. + many: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename}. + one: Вы собираетесь подписаться на %{count} аккаунт из файла %{filename}. + other: Вы собираетесь подписаться на %{count} аккаунтов из файла %{filename}. + lists_html: + few: Вы собираетесь добавить %{count} аккаунта из файла %{filename} в свои списки. Если соответствующих списков нет, они будут созданы. + many: Вы собираетесь добавить %{count} аккаунтов из файла %{filename} в свои списки. Если соответствующих списков нет, они будут созданы. + one: Вы собираетесь добавить %{count} аккаунт из файла %{filename} в свои списки. Если соответствующих списков нет, они будут созданы. + other: Вы собираетесь добавить %{count} аккаунтов из файла %{filename} в свои списки. Если соответствующих списков нет, они будут созданы. + muting_html: + few: Вы собираетесь начать игнорировать %{count} аккаунта из файла %{filename}. + many: Вы собираетесь начать игнорировать %{count} аккаунтов из файла %{filename}. + one: Вы собираетесь начать игнорировать %{count} аккаунт из файла %{filename}. + other: Вы собираетесь начать игнорировать %{count} аккаунтов из файла %{filename}. preface: Вы можете загрузить некоторые данные, например, списки людей, на которых Вы подписаны или которых блокируете, в Вашу учётную запись на этом узле из файлов, экспортированных с другого узла. recent_imports: Недавно импортированное states: @@ -1511,6 +1552,7 @@ ru: unsubscribe: action: Да, отписаться complete: Подписка отменена + confirmation_html: Вы точно желаете отписаться от всех уведомления типа «%{type}», доставляемых из сервера Mastodon %{domain} на ваш адрес электронной почты %{email}? Вы всегда сможете подписаться снова в настройках e-mail уведомлений. emails: notification_emails: favourite: любимые электронные письма с уведомлениями From 4ef3a1a38d505e05e8ba19adefe84186b16eedba Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 8 Nov 2024 04:55:15 -0500 Subject: [PATCH 338/550] Match dependency-generator output for `require_relative` usage (#32800) --- Rakefile | 2 +- config.ru | 3 ++- spec/rails_helper.rb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index e51cf0e17e..488c551fee 100644 --- a/Rakefile +++ b/Rakefile @@ -3,6 +3,6 @@ # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. -require File.expand_path('config/application', __dir__) +require_relative 'config/application' Rails.application.load_tasks diff --git a/config.ru b/config.ru index afd13e2112..842bccc340 100644 --- a/config.ru +++ b/config.ru @@ -2,5 +2,6 @@ # This file is used by Rack-based servers to start the application. -require File.expand_path('config/environment', __dir__) +require_relative 'config/environment' + run Rails.application diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index d2ad40be73..574d543844 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -32,7 +32,7 @@ end STREAMING_PORT = ENV.fetch('TEST_STREAMING_PORT', '4020') ENV['STREAMING_API_BASE_URL'] = "http://localhost:#{STREAMING_PORT}" -require File.expand_path('../config/environment', __dir__) +require_relative '../config/environment' abort('The Rails environment is running in production mode!') if Rails.env.production? From df54196a144d088a0621c916c34061c456362f06 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 8 Nov 2024 05:00:15 -0500 Subject: [PATCH 339/550] Use `touch_all` with batches (#32799) --- app/controllers/admin/invites_controller.rb | 2 +- app/models/user.rb | 2 +- app/services/unallow_domain_service.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/invites_controller.rb b/app/controllers/admin/invites_controller.rb index dabfe97655..614e2a32d0 100644 --- a/app/controllers/admin/invites_controller.rb +++ b/app/controllers/admin/invites_controller.rb @@ -32,7 +32,7 @@ module Admin def deactivate_all authorize :invite, :deactivate_all? - Invite.available.in_batches.update_all(expires_at: Time.now.utc) + Invite.available.in_batches.touch_all(:expires_at) redirect_to admin_invites_path end diff --git a/app/models/user.rb b/app/models/user.rb index 69c5a01569..8827a8fbd6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -340,7 +340,7 @@ class User < ApplicationRecord Doorkeeper::AccessGrant.by_resource_owner(self).update_all(revoked_at: Time.now.utc) Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch| - batch.update_all(revoked_at: Time.now.utc) + batch.touch_all(:revoked_at) Web::PushSubscription.where(access_token_id: batch).delete_all # Revoke each access token for the Streaming API, since `update_all`` diff --git a/app/services/unallow_domain_service.rb b/app/services/unallow_domain_service.rb index bdc71b1c08..bbe9571450 100644 --- a/app/services/unallow_domain_service.rb +++ b/app/services/unallow_domain_service.rb @@ -12,7 +12,7 @@ class UnallowDomainService < BaseService private def suspend_accounts!(domain) - Account.where(domain: domain).in_batches.update_all(suspended_at: Time.now.utc) + Account.where(domain: domain).in_batches.touch_all(:suspended_at) AfterUnallowDomainWorker.perform_async(domain) end end From bde0f1239ab016a6dfc8229ba579c5e2cf96a8e6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 8 Nov 2024 05:08:36 -0500 Subject: [PATCH 340/550] Add `InetContainer` with scopes of `containing` and `contained` (#32802) --- app/helpers/registration_helper.rb | 2 +- app/lib/suspicious_sign_in_detector.rb | 2 +- app/models/concerns/inet_container.rb | 10 ++++++++++ app/models/ip_block.rb | 1 + app/models/user.rb | 4 ++-- app/models/user_ip.rb | 1 + lib/mastodon/cli/ip_blocks.rb | 4 ++-- 7 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 app/models/concerns/inet_container.rb diff --git a/app/helpers/registration_helper.rb b/app/helpers/registration_helper.rb index ef5462ac88..0f141c4359 100644 --- a/app/helpers/registration_helper.rb +++ b/app/helpers/registration_helper.rb @@ -16,6 +16,6 @@ module RegistrationHelper end def ip_blocked?(remote_ip) - IpBlock.where(severity: :sign_up_block).exists?(['ip >>= ?', remote_ip.to_s]) + IpBlock.where(severity: :sign_up_block).containing(remote_ip.to_s).exists? end end diff --git a/app/lib/suspicious_sign_in_detector.rb b/app/lib/suspicious_sign_in_detector.rb index 74f49aa558..60e5fdad4f 100644 --- a/app/lib/suspicious_sign_in_detector.rb +++ b/app/lib/suspicious_sign_in_detector.rb @@ -19,7 +19,7 @@ class SuspiciousSignInDetector end def previously_seen_ip?(request) - @user.ips.exists?(['ip <<= ?', masked_ip(request)]) + @user.ips.contained_by(masked_ip(request)).exists? end def freshly_signed_up? diff --git a/app/models/concerns/inet_container.rb b/app/models/concerns/inet_container.rb new file mode 100644 index 0000000000..da03bcc5d7 --- /dev/null +++ b/app/models/concerns/inet_container.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module InetContainer + extend ActiveSupport::Concern + + included do + scope :containing, ->(value) { where('ip >>= ?', value) } + scope :contained_by, ->(value) { where('ip <<= ?', value) } + end +end diff --git a/app/models/ip_block.rb b/app/models/ip_block.rb index 5ed4d2a846..416ae38382 100644 --- a/app/models/ip_block.rb +++ b/app/models/ip_block.rb @@ -17,6 +17,7 @@ class IpBlock < ApplicationRecord CACHE_KEY = 'blocked_ips' include Expireable + include InetContainer include Paginable enum :severity, { diff --git a/app/models/user.rb b/app/models/user.rb index 8827a8fbd6..9a215669b9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -125,7 +125,7 @@ class User < ApplicationRecord scope :signed_in_recently, -> { where(current_sign_in_at: ACTIVE_DURATION.ago..) } scope :not_signed_in_recently, -> { where(current_sign_in_at: ...ACTIVE_DURATION.ago) } scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) } - scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value).group('users.id') } + scope :matches_ip, ->(value) { left_joins(:ips).merge(IpBlock.contained_by(value)).group('users.id') } before_validation :sanitize_role before_create :set_approved @@ -444,7 +444,7 @@ class User < ApplicationRecord end def sign_up_from_ip_requires_approval? - sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.exists?(['ip >>= ?', sign_up_ip.to_s]) + sign_up_ip.present? && IpBlock.severity_sign_up_requires_approval.containing(sign_up_ip.to_s).exists? end def sign_up_email_requires_approval? diff --git a/app/models/user_ip.rb b/app/models/user_ip.rb index a6da2c0740..25aa81ccd4 100644 --- a/app/models/user_ip.rb +++ b/app/models/user_ip.rb @@ -11,6 +11,7 @@ class UserIp < ApplicationRecord include DatabaseViewRecord + include InetContainer self.primary_key = :user_id diff --git a/lib/mastodon/cli/ip_blocks.rb b/lib/mastodon/cli/ip_blocks.rb index ef24f2e047..f1f40c99ce 100644 --- a/lib/mastodon/cli/ip_blocks.rb +++ b/lib/mastodon/cli/ip_blocks.rb @@ -80,9 +80,9 @@ module Mastodon::CLI end ip_blocks = if options[:force] - IpBlock.where('ip >>= ?', address) + IpBlock.containing(address) else - IpBlock.where('ip <<= ?', address) + IpBlock.contained_by(address) end if ip_blocks.empty? From 10c895dc849d074681e292102ec28dc3a16d2824 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 8 Nov 2024 09:21:44 -0500 Subject: [PATCH 341/550] Use existing arel scopes instead of string ordering (#32801) --- app/models/admin/status_filter.rb | 2 +- app/models/session_activation.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/models/admin/status_filter.rb b/app/models/admin/status_filter.rb index 8d20e4f6ab..fd4d0ef59d 100644 --- a/app/models/admin/status_filter.rb +++ b/app/models/admin/status_filter.rb @@ -32,7 +32,7 @@ class Admin::StatusFilter def scope_for(key, _value) case key.to_s when 'media' - Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).reorder('statuses.id desc') + Status.joins(:media_attachments).merge(@account.media_attachments).group(:id).recent else raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" end diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index 31f18fd7ef..d99ecf8adb 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -30,6 +30,8 @@ class SessionActivation < ApplicationRecord DEFAULT_SCOPES = %w(read write follow).freeze + scope :latest, -> { order(id: :desc) } + class << self def active?(id) id && exists?(session_id: id) @@ -48,7 +50,7 @@ class SessionActivation < ApplicationRecord end def purge_old - order('created_at desc').offset(Rails.configuration.x.max_session_activations).destroy_all + latest.offset(Rails.configuration.x.max_session_activations).destroy_all end def exclusive(id) From 1e71c4e247eb8900a718b04113ffce9c1b8ad2f4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 8 Nov 2024 09:23:52 -0500 Subject: [PATCH 342/550] Use enum-generated `IpBlock.severity...` scopes (#31210) --- app/helpers/registration_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/registration_helper.rb b/app/helpers/registration_helper.rb index 0f141c4359..002d167c05 100644 --- a/app/helpers/registration_helper.rb +++ b/app/helpers/registration_helper.rb @@ -16,6 +16,6 @@ module RegistrationHelper end def ip_blocked?(remote_ip) - IpBlock.where(severity: :sign_up_block).containing(remote_ip.to_s).exists? + IpBlock.severity_sign_up_block.containing(remote_ip.to_s).exists? end end From e22ec250770a395579ab52965b2feeacb697e128 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Sun, 10 Nov 2024 13:26:51 +0100 Subject: [PATCH 343/550] Fix typo in account unlocked localisation (#32821) --- config/locales/simple_form.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 25de9f5910..f451c780b0 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -10,7 +10,7 @@ en: indexable: Your public posts may appear in search results on Mastodon. People who have interacted with your posts may be able to search them regardless. note: 'You can @mention other people or #hashtags.' show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless. - unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers. + unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and choose whether to accept or reject new followers. account_alias: acct: Specify the username@domain of the account you want to move from account_migration: From 157fba4698361348c8211bc64e522492a13ff23b Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Sun, 10 Nov 2024 17:16:07 +0100 Subject: [PATCH 344/550] Backspace hotkey should override default behaviour (#32826) --- app/javascript/mastodon/features/ui/index.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 2f9f962b81..b90ea5585a 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -482,7 +482,9 @@ class UI extends PureComponent { } }; - handleHotkeyBack = () => { + handleHotkeyBack = e => { + e.preventDefault(); + const { history } = this.props; if (history.location?.state?.fromMastodon) { From d033920b7ed9a01f31b367a67551094b1856eb12 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 11 Nov 2024 03:29:55 -0500 Subject: [PATCH 345/550] Move account silence-related methods to concern (#28866) --- app/models/account.rb | 15 +------------ app/models/concerns/account/silences.rb | 22 +++++++++++++++++++ spec/models/account_spec.rb | 8 ------- spec/models/concerns/account/silences_spec.rb | 18 +++++++++++++++ 4 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 app/models/concerns/account/silences.rb create mode 100644 spec/models/concerns/account/silences_spec.rb diff --git a/app/models/account.rb b/app/models/account.rb index 957ccc73c4..007fad7830 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -90,6 +90,7 @@ class Account < ApplicationRecord include Account::Interactions include Account::Merging include Account::Search + include Account::Silences include Account::StatusesSearch include Account::Suspensions include Account::AttributionDomains @@ -129,9 +130,7 @@ class Account < ApplicationRecord scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } - scope :silenced, -> { where.not(silenced_at: nil) } scope :sensitized, -> { where.not(sensitized_at: nil) } - scope :without_silenced, -> { where(silenced_at: nil) } scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) } scope :recent, -> { reorder(id: :desc) } scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) } @@ -244,18 +243,6 @@ class Account < ApplicationRecord ResolveAccountService.new.call(acct) unless local? end - def silenced? - silenced_at.present? - end - - def silence!(date = Time.now.utc) - update!(silenced_at: date) - end - - def unsilence! - update!(silenced_at: nil) - end - def sensitized? sensitized_at.present? end diff --git a/app/models/concerns/account/silences.rb b/app/models/concerns/account/silences.rb new file mode 100644 index 0000000000..bd785df311 --- /dev/null +++ b/app/models/concerns/account/silences.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Account::Silences + extend ActiveSupport::Concern + + included do + scope :silenced, -> { where.not(silenced_at: nil) } + scope :without_silenced, -> { where(silenced_at: nil) } + end + + def silenced? + silenced_at.present? + end + + def silence!(date = Time.now.utc) + update!(silenced_at: date) + end + + def unsilence! + update!(silenced_at: nil) + end +end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 7a5deed599..77341b7786 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -983,14 +983,6 @@ RSpec.describe Account do end end - describe 'silenced' do - it 'returns an array of accounts who are silenced' do - silenced_account = Fabricate(:account, silenced: true) - _account = Fabricate(:account, silenced: false) - expect(described_class.silenced).to contain_exactly(silenced_account) - end - end - describe 'searchable' do let!(:suspended_local) { Fabricate(:account, suspended: true, username: 'suspended_local') } let!(:suspended_remote) { Fabricate(:account, suspended: true, domain: 'example.org', username: 'suspended_remote') } diff --git a/spec/models/concerns/account/silences_spec.rb b/spec/models/concerns/account/silences_spec.rb new file mode 100644 index 0000000000..0d8337ce1d --- /dev/null +++ b/spec/models/concerns/account/silences_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Account::Silences do + describe 'Scopes' do + describe '.silenced' do + let(:silenced_account) { Fabricate :account, silenced: true } + + before { Fabricate :account, silenced: false } + + it 'returns an array of accounts who are silenced' do + expect(Account.silenced) + .to contain_exactly(silenced_account) + end + end + end +end From c78dc23b497ae71e91c6362b91c57a4810715b72 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 11 Nov 2024 08:08:23 -0500 Subject: [PATCH 346/550] Move account sensitize-related methods to concern (#28865) --- app/models/account.rb | 14 +------------ app/models/concerns/account/sensitizes.rb | 21 +++++++++++++++++++ .../concerns/account/sensitizes_spec.rb | 18 ++++++++++++++++ 3 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 app/models/concerns/account/sensitizes.rb create mode 100644 spec/models/concerns/account/sensitizes_spec.rb diff --git a/app/models/account.rb b/app/models/account.rb index 007fad7830..206529301e 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -90,6 +90,7 @@ class Account < ApplicationRecord include Account::Interactions include Account::Merging include Account::Search + include Account::Sensitizes include Account::Silences include Account::StatusesSearch include Account::Suspensions @@ -130,7 +131,6 @@ class Account < ApplicationRecord scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } - scope :sensitized, -> { where.not(sensitized_at: nil) } scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) } scope :recent, -> { reorder(id: :desc) } scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) } @@ -243,18 +243,6 @@ class Account < ApplicationRecord ResolveAccountService.new.call(acct) unless local? end - def sensitized? - sensitized_at.present? - end - - def sensitize!(date = Time.now.utc) - update!(sensitized_at: date) - end - - def unsensitize! - update!(sensitized_at: nil) - end - def memorialize! update!(memorial: true) end diff --git a/app/models/concerns/account/sensitizes.rb b/app/models/concerns/account/sensitizes.rb new file mode 100644 index 0000000000..3bb74324a8 --- /dev/null +++ b/app/models/concerns/account/sensitizes.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Account::Sensitizes + extend ActiveSupport::Concern + + included do + scope :sensitized, -> { where.not(sensitized_at: nil) } + end + + def sensitized? + sensitized_at.present? + end + + def sensitize!(date = Time.now.utc) + update!(sensitized_at: date) + end + + def unsensitize! + update!(sensitized_at: nil) + end +end diff --git a/spec/models/concerns/account/sensitizes_spec.rb b/spec/models/concerns/account/sensitizes_spec.rb new file mode 100644 index 0000000000..3596c9a126 --- /dev/null +++ b/spec/models/concerns/account/sensitizes_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Account::Sensitizes do + describe 'Scopes' do + describe '.sensitized' do + let(:sensitized_account) { Fabricate :account, sensitized_at: 2.days.ago } + + before { Fabricate :account, sensitized_at: false } + + it 'returns an array of accounts who are sensitized' do + expect(Account.sensitized) + .to contain_exactly(sensitized_account) + end + end + end +end From aeae1520068c54cb51dd3a350276df393ef43149 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Mon, 11 Nov 2024 20:56:28 +0100 Subject: [PATCH 347/550] Prevent Web::Push notification delivery if notification is outside of TTL window (#32842) --- app/workers/web/push_notification_worker.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb index 824e7b5940..3629904fa7 100644 --- a/app/workers/web/push_notification_worker.rb +++ b/app/workers/web/push_notification_worker.rb @@ -13,6 +13,8 @@ class Web::PushNotificationWorker @subscription = Web::PushSubscription.find(subscription_id) @notification = Notification.find(notification_id) + return if @notification.updated_at < TTL.ago + # Polymorphically associated activity could have been deleted # in the meantime, so we have to double-check before proceeding return unless @notification.activity.present? && @subscription.pushable?(@notification) From c099797700c5f84b83cf3096c1b58ef2adadb7d7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 03:28:31 -0500 Subject: [PATCH 348/550] Use `mastodon` config namespace to load software update default value via `config_for` (#30534) --- app/models/software_update.rb | 2 +- app/services/software_update_check_service.rb | 2 +- config/application.rb | 1 + config/mastodon.yml | 3 +++ config/navigation.rb | 6 +++++- .../system_check/software_version_check_spec.rb | 7 ++++--- .../services/software_update_check_service_spec.rb | 14 ++++++++------ 7 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 config/mastodon.yml diff --git a/app/models/software_update.rb b/app/models/software_update.rb index 51a73c2731..2cb935130a 100644 --- a/app/models/software_update.rb +++ b/app/models/software_update.rb @@ -24,7 +24,7 @@ class SoftwareUpdate < ApplicationRecord class << self def check_enabled? - ENV['UPDATE_CHECK_URL'] != '' + Rails.configuration.x.mastodon.software_update_url.present? end def pending_to_a diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index 24a6955b88..148f269289 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -27,7 +27,7 @@ class SoftwareUpdateCheckService < BaseService end def api_url - ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check') + Rails.configuration.x.mastodon.software_update_url end def version diff --git a/config/application.rb b/config/application.rb index 18a1b1a0fd..cfeed02e98 100644 --- a/config/application.rb +++ b/config/application.rb @@ -105,6 +105,7 @@ module Mastodon end config.x.captcha = config_for(:captcha) + config.x.mastodon = config_for(:mastodon) config.x.translation = config_for(:translation) config.to_prepare do diff --git a/config/mastodon.yml b/config/mastodon.yml new file mode 100644 index 0000000000..255213b4b7 --- /dev/null +++ b/config/mastodon.yml @@ -0,0 +1,3 @@ +--- +shared: + software_update_url: <%= ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check') %> diff --git a/config/navigation.rb b/config/navigation.rb index 7ec7ecb7e7..bdda569092 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -6,7 +6,11 @@ SimpleNavigation::Configuration.run do |navigation| navigation.items do |n| n.item :web, safe_join([material_symbol('chevron_left'), t('settings.back')]), root_path - n.item :software_updates, safe_join([material_symbol('report'), t('admin.critical_update_pending')]), admin_software_updates_path, if: -> { ENV['UPDATE_CHECK_URL'] != '' && current_user.can?(:view_devops) && SoftwareUpdate.urgent_pending? }, html: { class: 'warning' } + n.item :software_updates, + safe_join([material_symbol('report'), t('admin.critical_update_pending')]), + admin_software_updates_path, + if: -> { Rails.configuration.x.mastodon.software_update_url.present? && current_user.can?(:view_devops) && SoftwareUpdate.urgent_pending? }, + html: { class: 'warning' } n.item :profile, safe_join([material_symbol('person'), t('settings.profile')]), settings_profile_path, if: -> { current_user.functional? && !self_destruct }, highlights_on: %r{/settings/profile|/settings/featured_tags|/settings/verification|/settings/privacy} diff --git a/spec/lib/admin/system_check/software_version_check_spec.rb b/spec/lib/admin/system_check/software_version_check_spec.rb index 8460d90668..75dc1a4732 100644 --- a/spec/lib/admin/system_check/software_version_check_spec.rb +++ b/spec/lib/admin/system_check/software_version_check_spec.rb @@ -27,9 +27,10 @@ RSpec.describe Admin::SystemCheck::SoftwareVersionCheck do context 'when checks are disabled' do around do |example| - ClimateControl.modify UPDATE_CHECK_URL: '' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = '' + example.run + Rails.configuration.x.mastodon.software_update_url = original end it 'returns true' do diff --git a/spec/services/software_update_check_service_spec.rb b/spec/services/software_update_check_service_spec.rb index a1eb9d86e9..4098bd470a 100644 --- a/spec/services/software_update_check_service_spec.rb +++ b/spec/services/software_update_check_service_spec.rb @@ -124,9 +124,10 @@ RSpec.describe SoftwareUpdateCheckService do context 'when update checking is disabled' do around do |example| - ClimateControl.modify UPDATE_CHECK_URL: '' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = '' + example.run + Rails.configuration.x.mastodon.software_update_url = original end before do @@ -148,9 +149,10 @@ RSpec.describe SoftwareUpdateCheckService do let(:update_check_url) { 'https://api.example.com/update_check' } around do |example| - ClimateControl.modify UPDATE_CHECK_URL: 'https://api.example.com/update_check' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = 'https://api.example.com/update_check' + example.run + Rails.configuration.x.mastodon.software_update_url = original end it_behaves_like 'when the feature is enabled' From 5a99ac3cfd234d61c9f23fe2a6c0a76da3c1a354 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:31:08 +0000 Subject: [PATCH 349/550] Update dependency aws-sdk-s3 to v1.170.1 (#32846) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1888485af0..64abf4d77a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,7 +106,7 @@ GEM aws-sdk-kms (1.95.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.170.0) + aws-sdk-s3 (1.170.1) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From 67a2b03909a5ba459fdb5aff2a32fe396551ce29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:32:43 +0100 Subject: [PATCH 350/550] Update dependency postcss-preset-env to v10.1.0 (#32835) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 218 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 123 insertions(+), 95 deletions(-) diff --git a/yarn.lock b/yarn.lock index c4a35c9328..db834ec39e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1480,26 +1480,26 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/css-calc@npm:2.0.4" +"@csstools/css-calc@npm:^2.1.0": + version: 2.1.0 + resolution: "@csstools/css-calc@npm:2.1.0" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/ecb68fc9f8d930b861d5c9c5d4fc6eb43dabc619a4cd6c82dc18034ee746f907dba106fa6cdb909ac727fbfc9b1f7ceac1f356641542faeb2fab99c5fcd52a2e + checksum: 10c0/c707bb533a6ea63ed5bb4b8f1ffcbf3cd2daf970a6d76d42b684243426f5aa7513179a8f34d2e3c5a85df3870f44d3bc2850ca40b085c5fe00b41a291a2ecae2 languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.5": - version: 3.0.5 - resolution: "@csstools/css-color-parser@npm:3.0.5" +"@csstools/css-color-parser@npm:^3.0.6": + version: 3.0.6 + resolution: "@csstools/css-color-parser@npm:3.0.6" dependencies: "@csstools/color-helpers": "npm:^5.0.1" - "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-calc": "npm:^2.1.0" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/535e2a38222ad7ee9e1143c3ef09ba07b2e70a4214bbdf7ca13398388b8d2db9ee295fe15d9d306342036e554d97dd235567a8c8ee03fea6825483f1c4dbbf7e + checksum: 10c0/7c4f42a704c8c44cece75f5dcd647a83634dec0f44d398ae1fbdc6e8527d4fbdc3a809eaaba3b739edf8e3c09d62c28234636f250f9b0b0d52a599e824c22047 languageName: node linkType: hard @@ -1551,33 +1551,33 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.5": - version: 4.0.5 - resolution: "@csstools/postcss-color-function@npm:4.0.5" +"@csstools/postcss-color-function@npm:^4.0.6": + version: 4.0.6 + resolution: "@csstools/postcss-color-function@npm:4.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b47cc4567445eb12dd3e67a4298470d62a449a4d754fd4dd32eb78b23615ba6bd1fe8dacccc6c95087ce8749a6552bace8de0b9b6eee0c9a7b7202a0bcb8fcac + checksum: 10c0/facbae01fd58898a176219cfcffee9ffb06fb466a2c439fd28403819e48778b682621b86a69682c0f758c659f8ec5f14eca1a9612b12b8777a2198173f386b49 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.5": - version: 3.0.5 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.5" +"@csstools/postcss-color-mix-function@npm:^3.0.6": + version: 3.0.6 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/a17d20dcc42d2c1ccd7a5ceb8d1413133ae9461bf973a9aad997a5782bf4cbbd847aef06accc20fa391ac6fbd44a1003e18c30a621d7c77052d4256fe39619aa + checksum: 10c0/66b906b2425ed137b1c2ef3d166036719ae69039668385dccce4e02bd91e41733b37dd3c884b74a2999067bfe8a8d8d1afa4082ef21a0bf044ba7e7fffb77e01 languageName: node linkType: hard @@ -1595,16 +1595,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.4" +"@csstools/postcss-exponential-functions@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.5" dependencies: - "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-calc": "npm:^2.1.0" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/b174faa8782b7b3f3a9636412f90963740ff033c6506acf662f002fa07f59b370eb23937dbe3f1a05d7df277373f662d6970237d34ae938cf282a0b8dbde9a47 + checksum: 10c0/8935cb69f70d7448aa5a3dcdfd188bdcfbc34e9a99131306947df8847126272773212011dcff85e10bcee4c9d01f94f7f8557ef93933122a0b82743185684ab1 languageName: node linkType: hard @@ -1620,46 +1620,46 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.5": - version: 2.0.5 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.5" +"@csstools/postcss-gamut-mapping@npm:^2.0.6": + version: 2.0.6 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/a9d7365bed5c323dddad06d53c137ef3508870e541c6275dbdf3a73a50d44437830c22fa62c510d9316441d1e9f3b5552730778d1b73d083422245673bd00dac + checksum: 10c0/8a3f012774ab261924cc9f3519caa87a25a6abcd70d78f622144d8e7126a687bddbdaa92995fc30f53355759cd5971e71ac099b6b8cb85c89d8ca86455588e3b languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.5": - version: 5.0.5 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.5" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.6": + version: 5.0.6 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/0ef258478270005ab3a879132dc6dbf2bf80788c79861515c826607953c551df1c2ef7005ba9592c31c6dad332d12ee247928a9fdd1569a51927a18a75dcc865 + checksum: 10c0/0d97be76837f972ea323b58189ded2310b618ad94b40777464d0d8ac050b557ca9fd1f20af5ada105d61574cc9d8c119ae0daf294a3aacaaa89926f864d9d674 languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.5": - version: 4.0.5 - resolution: "@csstools/postcss-hwb-function@npm:4.0.5" +"@csstools/postcss-hwb-function@npm:^4.0.6": + version: 4.0.6 + resolution: "@csstools/postcss-hwb-function@npm:4.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/9ce0a66bf288c9ec7f1fc28323d56ec54d38a30cb2ab722d1afbd46ec070cc5e61121bacb503803cb00293fc5ed117269969ac21071d7f4ce94b385c96168445 + checksum: 10c0/e7bcc98095ef2873a7b1a7326f1618bbeecc1c78660b23805bbefd8ec067bf2f35f2a2d4675be51a02d2280046f36f74d55f6af78e3ce107b82624d1a421ffcf languageName: node linkType: hard @@ -1761,17 +1761,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-media-minmax@npm:2.0.4" +"@csstools/postcss-media-minmax@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-media-minmax@npm:2.0.5" dependencies: - "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-calc": "npm:^2.1.0" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/f9fe1e99b83a0724250f9426335da6f13bfbc28be6d10ebfafbf037766fc5245240ec33be7e68c9c5b60c013fbc2fa0be96fbed0d41383c919ee9e6f1b8225ce + checksum: 10c0/0d17782076fcaba2c3c85bd769fc102d95809e9ee6141ad9de706ee116466cada62424fd68623c58cc2456771725291c356e550377ba73a102ab6fe628931e30 languageName: node linkType: hard @@ -1811,18 +1811,18 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.5": - version: 4.0.5 - resolution: "@csstools/postcss-oklab-function@npm:4.0.5" +"@csstools/postcss-oklab-function@npm:^4.0.6": + version: 4.0.6 + resolution: "@csstools/postcss-oklab-function@npm:4.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/a49e2ee60066f7da18316c7c80e5b2ced286ec962052f83c01f1952a1c5fe5b65ba9803a04698260125270a1dd47416f0b287a8f42e591f0d88c9a660ae844ce + checksum: 10c0/74ec74eb7171881deeff7a79e0dc696097fb53dcdcd9627d9559cd7be63f41adecec06c1e88ddd5d8a37f4705715d1c0c135ca2b001fb70fdc0b76ab1e491b66 languageName: node linkType: hard @@ -1837,18 +1837,31 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.5": - version: 3.0.5 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.5" +"@csstools/postcss-random-function@npm:^1.0.0": + version: 1.0.1 + resolution: "@csstools/postcss-random-function@npm:1.0.1" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-calc": "npm:^2.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/5e8f29c024aa6ed1f89ee8b9c8ece39c8e72602d63faa82d9684e3183828f01971cf2f760b7d5b773605d44a4ea661d6d4389ec03f7e21002f9aa9e8db613a61 + languageName: node + linkType: hard + +"@csstools/postcss-relative-color-syntax@npm:^3.0.6": + version: 3.0.6 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.6" + dependencies: + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/505da97e7b219095a9fb6fa0ad6c6a1358ce1f5debada00564e635e1aa11d034c588be9ce2f76263172a8d1bd07d90647fde826f4565de22dcfc0a76beb68ff1 + checksum: 10c0/207ae711831f8ae9170093dbea3727cd6f32ca31d22c1231b5b678592679eb49e329e87ea403714b8e10feb5b9137780364cc7e1e7d8cc4c90d47483a42132dc languageName: node linkType: hard @@ -1863,16 +1876,29 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.4" +"@csstools/postcss-sign-functions@npm:^1.0.0": + version: 1.0.0 + resolution: "@csstools/postcss-sign-functions@npm:1.0.0" dependencies: - "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-calc": "npm:^2.1.0" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/c8413a855a5ee9ad5b800263545d24d1bbd815f5ae0693c7dfd10c5f5b47bae5a9d985efdb2c46b03194ed3cae39f3d82c3ccfde502dee0b35d620fa539906be + checksum: 10c0/ec745b2f1e714ffead43ade5964234dfc1750c3a71d2e29df862ab3f79ba4a1275187b270b4c226bbb1155bee8e9e63c35597b4f4cb3effaa632e5e07e422344 + languageName: node + linkType: hard + +"@csstools/postcss-stepped-value-functions@npm:^4.0.5": + version: 4.0.5 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.5" + dependencies: + "@csstools/css-calc": "npm:^2.1.0" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/76f1f60c24b9e6a80b044eb19f37c1816788a2335fbf7c25f3fbea1cd7104857f424a451dcff60e4f8841618c6b6ffa6091f8b840d6d5930c1c7100c2f8ae74b languageName: node linkType: hard @@ -1888,16 +1914,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.4": - version: 4.0.4 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.4" +"@csstools/postcss-trigonometric-functions@npm:^4.0.5": + version: 4.0.5 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.5" dependencies: - "@csstools/css-calc": "npm:^2.0.4" + "@csstools/css-calc": "npm:^2.1.0" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/344c07961d24894f315faebf43c0128167fb2e33964c70d0d39d99a051c045678511d7378959105d672c5286a5360fde28fe390cdebfe823f3949e3cd1d50c4e + checksum: 10c0/b8518c8b81da047448dcee12a5f3716dbc19671333387a4a673991a16f1a120441d2768de8a30ce1e2ef8d0d76509b9509f506ef1e8630da84834451414b23a3 languageName: node linkType: hard @@ -6714,10 +6740,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^8.1.2": - version: 8.1.2 - resolution: "cssdb@npm:8.1.2" - checksum: 10c0/056149e713a78921f56d9ef0cd734577cedb93c27966c3d0eab01956a2aa8d3c260a911766064b57ded8b4d9c55dd5275626cbb022ccd8d2d0b93b53fefd1603 +"cssdb@npm:^8.2.1": + version: 8.2.1 + resolution: "cssdb@npm:8.2.1" + checksum: 10c0/d27d7db0a39e1105181aac119a98d6c92cd5ceba2e8bd349cdf2ba4a8d9ead149b685a1dba9542ca24f094cc70eca4a3e02973fe1f74c11a373b508606e5e1c0 languageName: node linkType: hard @@ -13270,18 +13296,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-color-functional-notation@npm:7.0.5" +"postcss-color-functional-notation@npm:^7.0.6": + version: 7.0.6 + resolution: "postcss-color-functional-notation@npm:7.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5e1771b8a43abd3cb18142842e8ac100b205f37a6757d6686da49e0c61ecf33d09244d256f3802962105e7ef79fbde2dffbfc1eedf1700198c54d2d5e48f3dc1 + checksum: 10c0/15f6dfc9a24d6f5186fb054623a92bcf9e804f4eaa35b339551a8048cdb0c7bd2e4655fdbb09a0c9a89f854e9fb1d71e298e8749597660ac034e79bd0d38d7dd languageName: node linkType: hard @@ -13492,18 +13518,18 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-lab-function@npm:7.0.5" +"postcss-lab-function@npm:^7.0.6": + version: 7.0.6 + resolution: "postcss-lab-function@npm:7.0.6" dependencies: - "@csstools/css-color-parser": "npm:^3.0.5" + "@csstools/css-color-parser": "npm:^3.0.6" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b688f6332ac12974452c97c5a40f4d0a604ce16b074124a1106add9cf9c25fbe7717d23423d6e92d937dc6e288e03e885b70e0793b96f41d28d2f7403bce7bf5 + checksum: 10c0/8b8d498dbc939ee79737b29232b39d09cbda26cc92e8926fb74fe56a1bb05af1198e85a67a822f39cc69109ac6757a6ff7b20842ba5ffafce891abc9bc1c3c68 languageName: node linkType: hard @@ -13824,18 +13850,18 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.0.9 - resolution: "postcss-preset-env@npm:10.0.9" + version: 10.1.0 + resolution: "postcss-preset-env@npm:10.1.0" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.1" - "@csstools/postcss-color-function": "npm:^4.0.5" - "@csstools/postcss-color-mix-function": "npm:^3.0.5" + "@csstools/postcss-color-function": "npm:^4.0.6" + "@csstools/postcss-color-mix-function": "npm:^3.0.6" "@csstools/postcss-content-alt-text": "npm:^2.0.4" - "@csstools/postcss-exponential-functions": "npm:^2.0.4" + "@csstools/postcss-exponential-functions": "npm:^2.0.5" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.5" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.5" - "@csstools/postcss-hwb-function": "npm:^4.0.5" + "@csstools/postcss-gamut-mapping": "npm:^2.0.6" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.6" + "@csstools/postcss-hwb-function": "npm:^4.0.6" "@csstools/postcss-ic-unit": "npm:^4.0.0" "@csstools/postcss-initial": "npm:^2.0.0" "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" @@ -13845,27 +13871,29 @@ __metadata: "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" "@csstools/postcss-logical-viewport-units": "npm:^3.0.3" - "@csstools/postcss-media-minmax": "npm:^2.0.4" + "@csstools/postcss-media-minmax": "npm:^2.0.5" "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.4" "@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.5" + "@csstools/postcss-oklab-function": "npm:^4.0.6" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.5" + "@csstools/postcss-random-function": "npm:^1.0.0" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.6" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.4" + "@csstools/postcss-sign-functions": "npm:^1.0.0" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.5" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.4" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.5" "@csstools/postcss-unset-value": "npm:^4.0.0" autoprefixer: "npm:^10.4.19" browserslist: "npm:^4.23.1" css-blank-pseudo: "npm:^7.0.1" css-has-pseudo: "npm:^7.0.1" css-prefers-color-scheme: "npm:^10.0.0" - cssdb: "npm:^8.1.2" + cssdb: "npm:^8.2.1" postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.5" + postcss-color-functional-notation: "npm:^7.0.6" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" postcss-custom-media: "npm:^11.0.5" @@ -13878,7 +13906,7 @@ __metadata: postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.5" + postcss-lab-function: "npm:^7.0.6" postcss-logical: "npm:^8.0.0" postcss-nesting: "npm:^13.0.1" postcss-opacity-percentage: "npm:^3.0.0" @@ -13890,7 +13918,7 @@ __metadata: postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/985ef4cfd2dd6a94d8a802db8e392c4b4c47ae0de8fd5224c60d8172cac3d7ce9011e63ab80470cddc77f21f09b2be850f97ac2478f651bc0a8956b538b079fe + checksum: 10c0/bd157dbed38c3c125b3bf86f5437a8094539ec5bf24428487c7bbf29da393731e48053afc695494cc9dbe4d182cfe405c398fcf0b22eb326b6db395e7315f892 languageName: node linkType: hard From 90b5017c190b705b73b5d14488db8aec152da527 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:33:02 +0100 Subject: [PATCH 351/550] Update dependency postcss to v8.4.49 (#32831) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index db834ec39e..3da56cf38e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13079,10 +13079,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 languageName: node linkType: hard @@ -14052,13 +14052,13 @@ __metadata: linkType: hard "postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.47": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" + version: 8.4.49 + resolution: "postcss@npm:8.4.49" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/929f68b5081b7202709456532cee2a145c1843d391508c5a09de2517e8c4791638f71dd63b1898dba6712f8839d7a6da046c72a5e44c162e908f5911f57b5f44 + checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 languageName: node linkType: hard From 88512220bbd21c49730ca676668c2b61d0a690f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:33:23 +0000 Subject: [PATCH 352/550] Update dependency @formatjs/cli to v6.3.8 (#32830) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3da56cf38e..665ebff051 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2232,8 +2232,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.3.6 - resolution: "@formatjs/cli@npm:6.3.6" + version: 6.3.8 + resolution: "@formatjs/cli@npm:6.3.8" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2262,7 +2262,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/55f10699644c8b879d7fcf38660e7d9b0642c5f40ca59076c25ba190f350b48d7edb7f3d8481cc6139d3a708ee73f877c2c0a7d1865f15e80a73667270c9b7e3 + checksum: 10c0/61fb0e56a2da26befad5ca6ff5a8bcf9c383d22634cf288f3cab5661bece7686e6f064adaa500954b37726a7745c73134b459d115d52c931b76d68d998c7b22d languageName: node linkType: hard From a34edc211f9f33ed0bd5a1891ef2d475a935b0e6 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 12 Nov 2024 09:35:08 +0100 Subject: [PATCH 353/550] Add audit logging to Relays (#32819) --- app/controllers/admin/relays_controller.rb | 4 ++++ app/helpers/admin/action_logs_helper.rb | 2 ++ app/models/admin/action_log_filter.rb | 4 ++++ app/models/relay.rb | 4 ++++ config/locales/en.yml | 8 ++++++++ 5 files changed, 22 insertions(+) diff --git a/app/controllers/admin/relays_controller.rb b/app/controllers/admin/relays_controller.rb index c893802159..f05255adb6 100644 --- a/app/controllers/admin/relays_controller.rb +++ b/app/controllers/admin/relays_controller.rb @@ -21,6 +21,7 @@ module Admin @relay = Relay.new(resource_params) if @relay.save + log_action :create, @relay @relay.enable! redirect_to admin_relays_path else @@ -31,18 +32,21 @@ module Admin def destroy authorize :relay, :update? @relay.destroy + log_action :destroy, @relay redirect_to admin_relays_path end def enable authorize :relay, :update? @relay.enable! + log_action :enable, @relay redirect_to admin_relays_path end def disable authorize :relay, :update? @relay.disable! + log_action :disable, @relay redirect_to admin_relays_path end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 51e28d8b4e..859f924687 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -33,6 +33,8 @@ module Admin::ActionLogsHelper else I18n.t('admin.action_logs.deleted_account') end + when 'Relay' + link_to log.human_identifier, admin_relays_path end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 1f48e0a497..dfb7fd00ed 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -31,6 +31,7 @@ class Admin::ActionLogFilter create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze, create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze, create_ip_block: { target_type: 'IpBlock', action: 'create' }.freeze, + create_relay: { target_type: 'Relay', action: 'create' }.freeze, create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze, create_user_role: { target_type: 'UserRole', action: 'create' }.freeze, create_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'create' }.freeze, @@ -40,6 +41,7 @@ class Admin::ActionLogFilter destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze, destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze, destroy_ip_block: { target_type: 'IpBlock', action: 'destroy' }.freeze, + destroy_relay: { target_type: 'Relay', action: 'destroy' }.freeze, destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze, destroy_instance: { target_type: 'Instance', action: 'destroy' }.freeze, destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze, @@ -49,8 +51,10 @@ class Admin::ActionLogFilter disable_2fa_user: { target_type: 'User', action: 'disable_2fa' }.freeze, disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze, disable_user: { target_type: 'User', action: 'disable' }.freeze, + disable_relay: { target_type: 'Relay', action: 'disable' }.freeze, enable_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze, enable_user: { target_type: 'User', action: 'enable' }.freeze, + enable_relay: { target_type: 'Relay', action: 'enable' }.freeze, memorialize_account: { target_type: 'Account', action: 'memorialize' }.freeze, promote_user: { target_type: 'User', action: 'promote' }.freeze, remove_avatar_user: { target_type: 'User', action: 'remove_avatar' }.freeze, diff --git a/app/models/relay.rb b/app/models/relay.rb index f652b4864b..1a8fdebc7f 100644 --- a/app/models/relay.rb +++ b/app/models/relay.rb @@ -25,6 +25,10 @@ class Relay < ApplicationRecord alias enabled? accepted? + def to_log_human_identifier + inbox_url + end + def enable! activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil) payload = Oj.dump(follow_activity(activity_id)) diff --git a/config/locales/en.yml b/config/locales/en.yml index e9c8822d5a..cf783338e2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -187,6 +187,7 @@ en: create_domain_block: Create Domain Block create_email_domain_block: Create Email Domain Block create_ip_block: Create IP rule + create_relay: Create Relay create_unavailable_domain: Create Unavailable Domain create_user_role: Create Role demote_user: Demote User @@ -198,14 +199,17 @@ en: destroy_email_domain_block: Delete Email Domain Block destroy_instance: Purge Domain destroy_ip_block: Delete IP rule + destroy_relay: Delete Relay destroy_status: Delete Post destroy_unavailable_domain: Delete Unavailable Domain destroy_user_role: Destroy Role disable_2fa_user: Disable 2FA disable_custom_emoji: Disable Custom Emoji + disable_relay: Disable Relay disable_sign_in_token_auth_user: Disable Email Token Authentication for User disable_user: Disable User enable_custom_emoji: Enable Custom Emoji + enable_relay: Enable Relay enable_sign_in_token_auth_user: Enable Email Token Authentication for User enable_user: Enable User memorialize_account: Memorialize Account @@ -247,6 +251,7 @@ en: create_domain_block_html: "%{name} blocked domain %{target}" create_email_domain_block_html: "%{name} blocked email domain %{target}" create_ip_block_html: "%{name} created rule for IP %{target}" + create_relay_html: "%{name} created a relay %{target}" create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}" create_user_role_html: "%{name} created %{target} role" demote_user_html: "%{name} demoted user %{target}" @@ -258,14 +263,17 @@ en: destroy_email_domain_block_html: "%{name} unblocked email domain %{target}" destroy_instance_html: "%{name} purged domain %{target}" destroy_ip_block_html: "%{name} deleted rule for IP %{target}" + destroy_relay_html: "%{name} deleted the relay %{target}" destroy_status_html: "%{name} removed post by %{target}" destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}" destroy_user_role_html: "%{name} deleted %{target} role" disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}" disable_custom_emoji_html: "%{name} disabled emoji %{target}" + disable_relay_html: "%{name} disabled the relay %{target}" disable_sign_in_token_auth_user_html: "%{name} disabled email token authentication for %{target}" disable_user_html: "%{name} disabled login for user %{target}" enable_custom_emoji_html: "%{name} enabled emoji %{target}" + enable_relay_html: "%{name} enabled the relay %{target}" enable_sign_in_token_auth_user_html: "%{name} enabled email token authentication for %{target}" enable_user_html: "%{name} enabled login for user %{target}" memorialize_account_html: "%{name} turned %{target}'s account into a memoriam page" From 1f85ca2b0e6cf0b928f255271e1b1f491a41dc6d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:35:31 +0000 Subject: [PATCH 354/550] Update dependency react-select to v5.8.3 (#32817) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 665ebff051..9e3ec41017 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14682,8 +14682,8 @@ __metadata: linkType: hard "react-select@npm:^5.7.3": - version: 5.8.2 - resolution: "react-select@npm:5.8.2" + version: 5.8.3 + resolution: "react-select@npm:5.8.3" dependencies: "@babel/runtime": "npm:^7.12.0" "@emotion/cache": "npm:^11.4.0" @@ -14697,7 +14697,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/3089b8bfb23f556a7b1de07ea654fc5f5976f531a731a0231bbcbc195afb9294c36f49d712712f2deefc13eb6d7ede4aa1d80cb45b80afd3e26fde2f09db35eb + checksum: 10c0/25aaf0ad964a31dcf991be8b9eb478f94b2ff5dfd2e74a894f692c6dec9247f6ded6258fbf875984d2ada5aeb0ee742b85c6a94f58fae89112e913526cfd0577 languageName: node linkType: hard From ea6d3ca8c10e37a98a687a4a922061973dbac1b7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 03:38:08 -0500 Subject: [PATCH 355/550] Define constants for sampling sizes in `AccountReachFinder` (#32805) --- app/lib/account_reach_finder.rb | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/app/lib/account_reach_finder.rb b/app/lib/account_reach_finder.rb index 481e254396..19464024a6 100644 --- a/app/lib/account_reach_finder.rb +++ b/app/lib/account_reach_finder.rb @@ -1,6 +1,10 @@ # frozen_string_literal: true class AccountReachFinder + RECENT_LIMIT = 2_000 + STATUS_LIMIT = 200 + STATUS_SINCE = 2.days + def initialize(account) @account = account end @@ -20,13 +24,27 @@ class AccountReachFinder end def recently_mentioned_inboxes - cutoff_id = Mastodon::Snowflake.id_at(2.days.ago, with_random: false) - recent_statuses = @account.statuses.recent.where(id: cutoff_id...).limit(200) - - Account.joins(:mentions).where(mentions: { status: recent_statuses }).inboxes.take(2000) + Account + .joins(:mentions) + .where(mentions: { status: recent_statuses }) + .inboxes + .take(RECENT_LIMIT) end def relay_inboxes Relay.enabled.pluck(:inbox_url) end + + def oldest_status_id + Mastodon::Snowflake + .id_at(STATUS_SINCE.ago, with_random: false) + end + + def recent_statuses + @account + .statuses + .recent + .where(id: oldest_status_id...) + .limit(STATUS_LIMIT) + end end From 0d06d70d114a9c25d8c68a284384b3d9a57288bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:47:59 +0100 Subject: [PATCH 356/550] New Crowdin Translations (automated) (#32811) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/be.json | 2 +- app/javascript/mastodon/locales/cy.json | 26 ++++++++-- app/javascript/mastodon/locales/da.json | 21 ++++++++ app/javascript/mastodon/locales/de.json | 10 ++-- app/javascript/mastodon/locales/el.json | 32 +++++++++++- app/javascript/mastodon/locales/es-AR.json | 24 ++++----- app/javascript/mastodon/locales/he.json | 20 ++++++++ app/javascript/mastodon/locales/hu.json | 20 ++++++++ app/javascript/mastodon/locales/it.json | 1 + app/javascript/mastodon/locales/ja.json | 20 ++++++++ app/javascript/mastodon/locales/pt-PT.json | 4 ++ app/javascript/mastodon/locales/sk.json | 5 ++ app/javascript/mastodon/locales/sq.json | 2 + app/javascript/mastodon/locales/sv.json | 22 ++++---- app/javascript/mastodon/locales/th.json | 8 +++ app/javascript/mastodon/locales/uk.json | 19 +++++++ app/javascript/mastodon/locales/zh-TW.json | 15 +++--- config/locales/doorkeeper.ro.yml | 14 +++++ config/locales/doorkeeper.sv.yml | 2 +- config/locales/el.yml | 1 + config/locales/lv.yml | 5 ++ config/locales/simple_form.ar.yml | 1 - config/locales/simple_form.ast.yml | 1 - config/locales/simple_form.be.yml | 1 - config/locales/simple_form.bg.yml | 1 - config/locales/simple_form.ca.yml | 2 +- config/locales/simple_form.cs.yml | 1 - config/locales/simple_form.cy.yml | 1 - config/locales/simple_form.da.yml | 2 +- config/locales/simple_form.el.yml | 1 - config/locales/simple_form.en-GB.yml | 1 - config/locales/simple_form.eo.yml | 2 +- config/locales/simple_form.es-AR.yml | 2 +- config/locales/simple_form.es-MX.yml | 2 +- config/locales/simple_form.es.yml | 2 +- config/locales/simple_form.et.yml | 1 - config/locales/simple_form.eu.yml | 1 - config/locales/simple_form.fa.yml | 1 - config/locales/simple_form.fr-CA.yml | 1 - config/locales/simple_form.fr.yml | 1 - config/locales/simple_form.fy.yml | 1 - config/locales/simple_form.ga.yml | 1 - config/locales/simple_form.gd.yml | 1 - config/locales/simple_form.ia.yml | 1 - config/locales/simple_form.ie.yml | 1 - config/locales/simple_form.io.yml | 1 - config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.lad.yml | 1 - config/locales/simple_form.lt.yml | 1 - config/locales/simple_form.lv.yml | 3 +- config/locales/simple_form.ms.yml | 1 - config/locales/simple_form.my.yml | 1 - config/locales/simple_form.nn.yml | 1 - config/locales/simple_form.no.yml | 1 - config/locales/simple_form.pl.yml | 1 - config/locales/simple_form.pt-BR.yml | 1 - config/locales/simple_form.pt-PT.yml | 1 - config/locales/simple_form.ro.yml | 59 +++++++++++++++++++++- config/locales/simple_form.ru.yml | 1 - config/locales/simple_form.sl.yml | 1 - config/locales/simple_form.sr-Latn.yml | 1 - config/locales/simple_form.sr.yml | 1 - config/locales/simple_form.sv.yml | 1 - config/locales/simple_form.th.yml | 1 - config/locales/simple_form.zh-CN.yml | 2 +- config/locales/simple_form.zh-HK.yml | 1 - config/locales/sq.yml | 1 + config/locales/sv.yml | 14 ++--- 68 files changed, 307 insertions(+), 94 deletions(-) diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 97d4dc4b4c..06d86a0e85 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -154,7 +154,7 @@ "compose_form.hashtag_warning": "Гэты допіс не будзе паказаны пад аніякім хэштэгам, бо ён не публічны. Толькі публічныя допісы можна знайсці па хэштэгу.", "compose_form.lock_disclaimer": "Ваш уліковы запіс не {locked}. Усе могуць падпісацца на вас, каб бачыць допісы толькі для падпісчыкаў.", "compose_form.lock_disclaimer.lock": "закрыты", - "compose_form.placeholder": "Што здарылася?", + "compose_form.placeholder": "Што ў вас новага?", "compose_form.poll.duration": "Працягласць апытання", "compose_form.poll.multiple": "Множны выбар", "compose_form.poll.option_placeholder": "Варыянт {number}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 675f7a203e..ca83af9215 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -87,11 +87,29 @@ "alert.unexpected.title": "Wps!", "alt_text_badge.title": "Testun Amgen", "announcement.announcement": "Cyhoeddiad", + "annual_report.summary.archetype.booster": "Y hyrwyddwr", + "annual_report.summary.archetype.lurker": "Yr arsylwr", + "annual_report.summary.archetype.oracle": "Yr oracl", + "annual_report.summary.archetype.pollster": "Yr arholwr", + "annual_report.summary.archetype.replier": "Y sbardunwr", + "annual_report.summary.followers.followers": "dilynwyr", + "annual_report.summary.followers.total": "{count} cyfanswm", + "annual_report.summary.here_it_is": "Dyma eich {year} yn gryno:", + "annual_report.summary.highlighted_post.by_favourites": "postiad wedi'i ffefrynu fwyaf", + "annual_report.summary.highlighted_post.by_reblogs": "postiad wedi'i hybu fwyaf", + "annual_report.summary.highlighted_post.by_replies": "postiad gyda'r ymatebion mwyaf", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf", + "annual_report.summary.new_posts.new_posts": "postiadau newydd", + "annual_report.summary.percentile.text": "Rydych chi yn y mwyaf o ddefnyddwyr Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Ni fyddwn yn dweud wrth Bernie.", + "annual_report.summary.thanks": "Diolch am fod yn rhan o Mastodon!", "attachments_list.unprocessed": "(heb eu prosesu)", "audio.hide": "Cuddio sain", "block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystro mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.", "block_modal.show_less": "Dangos llai", - "block_modal.show_more": "Dangos mwy", + "block_modal.show_more": "Dangos rhagor", "block_modal.they_cant_mention": "Nid ydynt yn gallu eich crybwyll na'ch dilyn.", "block_modal.they_cant_see_posts": "Nid ydynt yn gallu gweld eich postiadau ac ni fyddwch yn gweld eu rhai hwy.", "block_modal.they_will_know": "Gallant weld eu bod wedi'u rhwystro.", @@ -163,9 +181,9 @@ "compose_form.poll.switch_to_single": "Newid pleidlais i gyfyngu i un dewis", "compose_form.poll.type": "Arddull", "compose_form.publish": "Postiad", - "compose_form.publish_form": "Cyhoeddi", + "compose_form.publish_form": "Postiad newydd", "compose_form.reply": "Ateb", - "compose_form.save_changes": "Diweddariad", + "compose_form.save_changes": "Diweddaru", "compose_form.spoiler.marked": "Dileu rhybudd cynnwys", "compose_form.spoiler.unmarked": "Ychwanegu rhybudd cynnwys", "compose_form.spoiler_placeholder": "Rhybudd cynnwys (dewisol)", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "Adroddodd {name} {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.admin.sign_up.name_and_others": "Cofrestrodd {name} {count, plural, one {ac # arall} other {a # arall}}", + "notification.annual_report.message": "Mae eich #Wrapstodon {year} yn aros i chi! Gwelwch eich uchafbwyntiau ac amseroedd i'w cofio o'r flwyddyn hon ar Mastodon!", + "notification.annual_report.view": "Gweld #Wrapstodon", "notification.favourite": "Ffafriodd {name} eich postiad", "notification.favourite.name_and_others_with_link": "Ffafriodd {name} a {count, plural, one {# arall} other {# arall}} eich postiad", "notification.follow": "Dilynodd {name} chi", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 5531576447..927d0a7cb8 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Alt text", "announcement.announcement": "Bekendtgørelse", + "annual_report.summary.archetype.booster": "Cool-hunter", + "annual_report.summary.archetype.lurker": "Lurker", + "annual_report.summary.archetype.oracle": "Oracle", + "annual_report.summary.archetype.pollster": "Pollster", + "annual_report.summary.archetype.replier": "Social butterfly", + "annual_report.summary.followers.followers": "følgere", + "annual_report.summary.followers.total": "{count} i alt", + "annual_report.summary.here_it_is": "Her er {year} i sammendrag:", + "annual_report.summary.highlighted_post.by_favourites": "mest favoritmarkerede indlæg", + "annual_report.summary.highlighted_post.by_reblogs": "mest boostede indlæg", + "annual_report.summary.highlighted_post.by_replies": "indlæg med flest svar", + "annual_report.summary.highlighted_post.possessive": "{name}s", + "annual_report.summary.most_used_app.most_used_app": "mest benyttede app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag", + "annual_report.summary.new_posts.new_posts": "nye indlæg", + "annual_report.summary.percentile.text": "Det betyder, at man er i topaf Mastodon-brugere.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til Bernie.", + "annual_report.summary.thanks": "Tak for at være en del af Mastodon!", "attachments_list.unprocessed": "(ubehandlet)", "audio.hide": "Skjul lyd", "block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.", @@ -158,6 +176,7 @@ "compose_form.poll.duration": "Afstemningens varighed", "compose_form.poll.multiple": "Multivalg", "compose_form.poll.option_placeholder": "Valgmulighed {number}", + "compose_form.poll.single": "Enkeltvalg", "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype", "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", "compose_form.poll.type": "Stil", @@ -507,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} anmeldte {target}", "notification.admin.sign_up": "{name} tilmeldte sig", "notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# anden} other {# andre}} tilmeldte sig", + "notification.annual_report.message": "{year} #Wrapstodon venter! Afslør årets højdepunkter og mindeværdige øjeblikke på Mastodon!", + "notification.annual_report.view": "Vis #Wrapstodon", "notification.favourite": "{name} favoritmarkerede dit indlæg", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# anden} other {# andre}} gjorde dit indlæg til favorit", "notification.follow": "{name} begyndte at følge dig", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index d048a191e3..e7679a363c 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -525,15 +525,15 @@ "notification.admin.report_statuses": "{name} meldete {target} wegen {category}", "notification.admin.report_statuses_other": "{name} meldete {target}", "notification.admin.sign_up": "{name} registrierte sich", - "notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} registrierten sich", + "notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich", "notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!", "notification.annual_report.view": "#Wrapstodon ansehen", "notification.favourite": "{name} favorisierte deinen Beitrag", - "notification.favourite.name_and_others_with_link": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} favorisierten deinen Beitrag", + "notification.favourite.name_and_others_with_link": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} favorisierten deinen Beitrag", "notification.follow": "{name} folgt dir", - "notification.follow.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} folgen dir", + "notification.follow.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} folgen dir", "notification.follow_request": "{name} möchte dir folgen", - "notification.follow_request.name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} möchten dir folgen", + "notification.follow_request.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} möchten dir folgen", "notification.label.mention": "Erwähnung", "notification.label.private_mention": "Private Erwähnung", "notification.label.private_reply": "Private Antwort", @@ -552,7 +552,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.reblog.name_and_others_with_link": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}} teilten deinen Beitrag", + "notification.reblog.name_and_others_with_link": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} teilten deinen Beitrag", "notification.relationships_severance_event": "Verbindungen mit {name} verloren", "notification.relationships_severance_event.account_suspension": "Ein Admin von {from} hat {target} gesperrt. Du wirst von diesem Profil keine Updates mehr erhalten und auch nicht mit ihm interagieren können.", "notification.relationships_severance_event.domain_block": "Ein Admin von {from} hat {target} blockiert – darunter {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst.", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 40517f8340..2920968e6a 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ουπς!", "alt_text_badge.title": "Εναλλακτικό κείμενο", "announcement.announcement": "Ανακοίνωση", + "annual_report.summary.archetype.booster": "Ο κυνηγός των φοβερών", + "annual_report.summary.archetype.lurker": "Ο διακριτικός", + "annual_report.summary.archetype.oracle": "Η Πυθία", + "annual_report.summary.archetype.pollster": "Ο δημοσκόπος", + "annual_report.summary.archetype.replier": "Η κοινωνική πεταλούδα", + "annual_report.summary.followers.followers": "ακόλουθοι", + "annual_report.summary.followers.total": "{count} συνολικά", + "annual_report.summary.here_it_is": "Εδώ είναι το {year} σου σε ανασκόπηση:", + "annual_report.summary.highlighted_post.by_favourites": "πιο αγαπημένη ανάρτηση", + "annual_report.summary.highlighted_post.by_reblogs": "πιο ενισχυμένη ανάρτηση", + "annual_report.summary.highlighted_post.by_replies": "ανάρτηση με τις περισσότερες απαντήσεις", + "annual_report.summary.highlighted_post.possessive": "του χρήστη {name}", + "annual_report.summary.most_used_app.most_used_app": "πιο χρησιμοποιημένη εφαρμογή", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "πιο χρησιμοποιημένη ετικέτα", + "annual_report.summary.new_posts.new_posts": "νέες αναρτήσεις", + "annual_report.summary.percentile.text": "Αυτό σε βάζει στην κορυφή του των χρηστών του Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Δεν θα το πούμε στον Bernie.", + "annual_report.summary.thanks": "Ευχαριστούμε που συμμετέχεις στο Mastodon!", "attachments_list.unprocessed": "(μη επεξεργασμένο)", "audio.hide": "Απόκρυψη αρχείου ήχου", "block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.", @@ -158,6 +176,7 @@ "compose_form.poll.duration": "Διάρκεια δημοσκόπησης", "compose_form.poll.multiple": "Πολλαπλή επιλογή", "compose_form.poll.option_placeholder": "Επιλογή {number}", + "compose_form.poll.single": "Μονή επιλογή", "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές", "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.poll.type": "Στυλ", @@ -196,6 +215,7 @@ "confirmations.unfollow.title": "Άρση ακολούθησης;", "content_warning.hide": "Απόκρυψη ανάρτησης", "content_warning.show": "Εμφάνιση ούτως ή άλλως", + "content_warning.show_more": "Εμφάνιση περισσότερων", "conversation.delete": "Διαγραφή συζήτησης", "conversation.mark_as_read": "Σήμανση ως αναγνωσμένο", "conversation.open": "Προβολή συνομιλίας", @@ -304,6 +324,7 @@ "filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα", "filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης", "filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης", + "filter_warning.matches_filter": "Ταιριάζει με το φίλτρο “{title}”", "filtered_notifications_banner.pending_requests": "Από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις", "filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις", "firehose.all": "Όλα", @@ -383,9 +404,10 @@ "interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.", "interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.", "interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.", - "interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα", + "interaction_modal.description.vote": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σ' αυτή την ανάρτηση.", + "interaction_modal.login.action": "Πήγαινέ με στην αρχική σελίδα", "interaction_modal.login.prompt": "Τομέας του οικιακού σου διακομιστή, πχ. mastodon.social", - "interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;", + "interaction_modal.no_account_yet": "Δεν είστε στο Mastodon;", "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", "interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;", @@ -394,6 +416,7 @@ "interaction_modal.title.follow": "Ακολούθησε {name}", "interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}", "interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}", + "interaction_modal.title.vote": "Ψήφισε στη δημοσκόπηση του χρήστη {name}", "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}", "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}", "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}", @@ -503,9 +526,12 @@ "notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί", + "notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!", + "notification.annual_report.view": "Προβολή #Wrapstodon", "notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου", "notification.favourite.name_and_others_with_link": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} αγάπησαν την ανάρτησή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", + "notification.follow.name_and_others": "Ο χρήστης {name} και {count, plural, one {# ακόμη} other {# ακόμη}} σε ακολούθησαν", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν", "notification.label.mention": "Επισήμανση", @@ -513,6 +539,7 @@ "notification.label.private_reply": "Ιδιωτική απάντηση", "notification.label.reply": "Απάντηση", "notification.mention": "Επισήμανση", + "notification.mentioned_you": "Ο χρήστης {name} σε επισήμανε", "notification.moderation-warning.learn_more": "Μάθε περισσότερα", "notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού", "notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.", @@ -563,6 +590,7 @@ "notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου", "notifications.column_settings.follow": "Νέοι ακόλουθοι:", "notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:", + "notifications.column_settings.group": "Ομάδα", "notifications.column_settings.mention": "Επισημάνσεις:", "notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:", "notifications.column_settings.push": "Ειδοποιήσεις Push", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index a556d90e33..9dc7b0d6c0 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -87,22 +87,22 @@ "alert.unexpected.title": "¡Epa!", "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anuncio", - "annual_report.summary.archetype.booster": "El cazador de tendencias", + "annual_report.summary.archetype.booster": "Corrió la voz", "annual_report.summary.archetype.lurker": "El acechador", "annual_report.summary.archetype.oracle": "El oráculo", - "annual_report.summary.archetype.pollster": "El encuestador", - "annual_report.summary.archetype.replier": "El más sociable", + "annual_report.summary.archetype.pollster": "Estuvo consultando", + "annual_report.summary.archetype.replier": "Respondió un montón", "annual_report.summary.followers.followers": "seguidores", "annual_report.summary.followers.total": "{count} en total", - "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", - "annual_report.summary.highlighted_post.by_favourites": "publicación con más favoritos", - "annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada", - "annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas", - "annual_report.summary.highlighted_post.possessive": "de {name}", - "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", - "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", - "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", - "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", + "annual_report.summary.here_it_is": "Acá está tu resumen de {year}:", + "annual_report.summary.highlighted_post.by_favourites": "el mensaje más veces marcado como favorito", + "annual_report.summary.highlighted_post.by_reblogs": "el mensaje que más adhesiones recibió", + "annual_report.summary.highlighted_post.by_replies": "el mensaje que más respuestas recibió", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "la aplicación más usada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada", + "annual_report.summary.new_posts.new_posts": "nuevos mensajes", + "annual_report.summary.percentile.text": "Eso te pone en la cimade los usuarios de Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", "annual_report.summary.thanks": "¡Gracias por ser parte de Mastodon!", "attachments_list.unprocessed": "[sin procesar]", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index ed08a9aba3..48ea869dd2 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "אופס!", "alt_text_badge.title": "כיתוב חלופי", "announcement.announcement": "הכרזה", + "annual_report.summary.archetype.booster": "ההד-וניסט(ית)", + "annual_report.summary.archetype.lurker": "השורץ.ת השקט.ה", + "annual_report.summary.archetype.oracle": "כבוד הרב.ה", + "annual_report.summary.archetype.pollster": "הסקרן.ית", + "annual_report.summary.archetype.replier": "הפרפר.ית החברתי.ת", + "annual_report.summary.followers.followers": "עוקבים", + "annual_report.summary.followers.total": "{count} בסך הכל", + "annual_report.summary.here_it_is": "והנה סיכום {year} שלך:", + "annual_report.summary.highlighted_post.by_favourites": "התות הכי מחובב", + "annual_report.summary.highlighted_post.by_reblogs": "התות הכי מהודהד", + "annual_report.summary.highlighted_post.by_replies": "התות עם מספר התשובות הגבוה ביותר", + "annual_report.summary.highlighted_post.possessive": "של {name}", + "annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר", + "annual_report.summary.new_posts.new_posts": "הודעות חדשות", + "annual_report.summary.percentile.text": "ממקם אותך באחוזון של משמשי מסטודון.", + "annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.", + "annual_report.summary.thanks": "תודה על היותך חלק ממסטודון!", "attachments_list.unprocessed": "(לא מעובד)", "audio.hide": "השתק", "block_modal.remote_users_caveat": "אנו נבקש מהשרת {domain} לכבד את החלטתך. עם זאת, ציות למוסכמות איננו מובטח כיוון ששרתים מסויימים עשויים לטפל בחסימות בצורה אחרת. הודעות פומביות עדיין יהיו גלויות לעיני משתמשים שאינם מחוברים.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", "notification.admin.sign_up.name_and_others": "{name} ועוד {count, plural,one {אחד אחר}other {# אחרים}} נרשמו", + "notification.annual_report.message": "ה- #סיכומודון שלך לשנת {year} מחכה! גלו את רגעי השיא והזכרונות ממסטודון!", + "notification.annual_report.view": "לצפייה ב- #סיכומודון", "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.favourite.name_and_others_with_link": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}} חיבבו את הודעתך", "notification.follow": "{name} במעקב אחרייך", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 0933a7c256..cdc113d8d7 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Hoppá!", "alt_text_badge.title": "Helyettesítő szöveg", "announcement.announcement": "Közlemény", + "annual_report.summary.archetype.booster": "A cool-vadász", + "annual_report.summary.archetype.lurker": "A settenkedő", + "annual_report.summary.archetype.oracle": "Az orákulum", + "annual_report.summary.archetype.pollster": "A közvélemény-kutató", + "annual_report.summary.archetype.replier": "A társasági pillangó", + "annual_report.summary.followers.followers": "követő", + "annual_report.summary.followers.total": "{count} összesen", + "annual_report.summary.here_it_is": "Itt a {year}. év értékelése:", + "annual_report.summary.highlighted_post.by_favourites": "legkedvencebb bejegyzés", + "annual_report.summary.highlighted_post.by_reblogs": "legtöbbet megtolt bejegyzés", + "annual_report.summary.highlighted_post.by_replies": "bejegyzés a legtöbb válasszal", + "annual_report.summary.highlighted_post.possessive": "{name} fióktól", + "annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag", + "annual_report.summary.new_posts.new_posts": "új bejegyzés", + "annual_report.summary.percentile.text": "Ezzel acsúcs Mastodon felhasználó között vagy.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.", + "annual_report.summary.thanks": "Kösz, hogy a Mastodon része vagy!", "attachments_list.unprocessed": "(feldolgozatlan)", "audio.hide": "Hang elrejtése", "block_modal.remote_users_caveat": "Arra kérjük a {domain} kiszolgálót, hogy tartsa tiszteletben a döntésedet. Ugyanakkor az együttműködés nem garantált, mivel néhány kiszolgáló másképp kezelheti a letiltásokat. A nyilvános bejegyzések a be nem jelentkezett felhasználók számára továbbra is látszódhatnak.", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.admin.sign_up.name_and_others": "{name} és {count, plural, one {# másik} other {# másik}} regisztrált", + "notification.annual_report.message": "Vár a {year}. év #Wrapstodon jelentése! Fedd fel az éved jelentős eseményeit és emlékezetes pillanatait a Mastodonon!", + "notification.annual_report.view": "#Wrapstodon Megtekintése", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.favourite.name_and_others_with_link": "{name} és {count, plural, one {# másik} other {# másik}} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 13ba1f8836..bf179ea2f2 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -100,6 +100,7 @@ "annual_report.summary.new_posts.new_posts": "nuovi post", "annual_report.summary.percentile.text": "Questo ti colloca tra ildei migliori utenti Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.", + "annual_report.summary.thanks": "Grazie per far parte di Mastodon!", "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.", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 6f319dbb10..b839764242 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "エラー!", "alt_text_badge.title": "代替テキスト", "announcement.announcement": "お知らせ", + "annual_report.summary.archetype.booster": "トレンドハンター", + "annual_report.summary.archetype.lurker": "ROM専", + "annual_report.summary.archetype.oracle": "予言者", + "annual_report.summary.archetype.pollster": "調査員", + "annual_report.summary.archetype.replier": "社交家", + "annual_report.summary.followers.followers": "フォロワー", + "annual_report.summary.followers.total": "合計{count}", + "annual_report.summary.here_it_is": "こちらがあなたの{year}年の振り返りです", + "annual_report.summary.highlighted_post.by_favourites": "最もお気に入りされた投稿", + "annual_report.summary.highlighted_post.by_reblogs": "最もブーストされた投稿", + "annual_report.summary.highlighted_post.by_replies": "最も返信が多かった投稿", + "annual_report.summary.highlighted_post.possessive": "{name}の", + "annual_report.summary.most_used_app.most_used_app": "最も使用されているアプリ", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "最も使用されたハッシュタグ", + "annual_report.summary.new_posts.new_posts": "新しい投稿", + "annual_report.summary.percentile.text": "それにより、あなたは上位に位置しています。Mastodonユーザーの中で。", + "annual_report.summary.percentile.we_wont_tell_bernie": "バー二ーには秘密にしておくよ。", + "annual_report.summary.thanks": "Mastodonの一員になってくれてありがとう!", "attachments_list.unprocessed": "(未処理)", "audio.hide": "音声を閉じる", "block_modal.remote_users_caveat": "このサーバーはあなたのブロックの意思を尊重するように {domain} へ通知します。しかしながら、ブロックの扱い方はサーバーによってさまざまで、相手のサーバーは必ずしもこのブロックを適切に取り扱うものではないことに留意が必要です。また、あなたの公開投稿はサーバーからログアウトすれば誰からも見ることができます。", @@ -508,6 +526,8 @@ "notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました", "notification.admin.sign_up": "{name}さんがサインアップしました", "notification.admin.sign_up.name_and_others": "{name}さんとほか{count, plural, other {#人}}がサインアップしました", + "notification.annual_report.message": "「あなたの{year}年の#Wrapstodonが待っています!Mastodonであなたの年のハイライトや思い出の瞬間を公開しましょう!」と訳せます。", + "notification.annual_report.view": "#Wrapstodon を表示", "notification.favourite": "{name}さんがお気に入りしました", "notification.favourite.name_and_others_with_link": "{name}さんとほか{count, plural, other {#人}}がお気に入りしました", "notification.follow": "{name}さんにフォローされました", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a4f2e27401..a06d259be2 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -85,7 +85,11 @@ "alert.rate_limited.title": "Limite de tentativas", "alert.unexpected.message": "Ocorreu um erro inesperado.", "alert.unexpected.title": "Bolas!", + "alt_text_badge.title": "Texto alternativo", "announcement.announcement": "Anúncio", + "annual_report.summary.followers.total": "{count} total", + "annual_report.summary.here_it_is": "Aqui está o seu {year} em revisão:", + "annual_report.summary.new_posts.new_posts": "novas publicações", "attachments_list.unprocessed": "(não processado)", "audio.hide": "Ocultar áudio", "block_modal.remote_users_caveat": "Vamos pedir ao servidor {domain} para respeitar a sua decisão. No entanto, não é garantido o seu cumprimento, uma vez que alguns servidores podem tratar os bloqueios de forma diferente. As mensagens públicas podem continuar a ser visíveis para utilizadores não autenticados.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 1102754fd7..8a01263eb2 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -88,6 +88,8 @@ "alt_text_badge.title": "Alternatívny popis", "announcement.announcement": "Oznámenie", "annual_report.summary.followers.followers": "sledovatelia", + "annual_report.summary.followers.total": "{count} celkovo", + "annual_report.summary.highlighted_post.by_favourites": "najviac obľúbený príspevok", "annual_report.summary.highlighted_post.by_reblogs": "najviac vyzdvihovaný príspevok", "annual_report.summary.highlighted_post.by_replies": "príspevok s najviac odpoveďami", "annual_report.summary.most_used_app.most_used_app": "najviac používaná aplikácia", @@ -99,6 +101,7 @@ "block_modal.show_less": "Zobraziť menej", "block_modal.show_more": "Zobraziť viac", "block_modal.they_cant_mention": "Nemôžu ťa spomenúť, alebo nasledovať.", + "block_modal.they_cant_see_posts": "On/a nemôže vidieť tvoje príspevky a ty neuvidíš jej/ho.", "block_modal.they_will_know": "Môžu vidieť, že sú zablokovaní/ý.", "block_modal.title": "Blokovať užívateľa?", "block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.", @@ -345,6 +348,7 @@ "hashtag.follow": "Sledovať hashtag", "hashtag.unfollow": "Prestať sledovať hashtag", "hashtags.and_other": "…a {count, plural, other {# ďalších}}", + "hints.threads.see_more": "Pozri viac odpovedí na {domain}", "home.column_settings.show_reblogs": "Zobraziť zdieľania", "home.column_settings.show_replies": "Zobraziť odpovede", "home.hide_announcements": "Skryť oznámenia", @@ -371,6 +375,7 @@ "interaction_modal.title.follow": "Sledovať {name}", "interaction_modal.title.reblog": "Zdieľať príspevok od {name}", "interaction_modal.title.reply": "Odpovedať na príspevok od {name}", + "interaction_modal.title.vote": "Hlasuj v ankete od {name}", "intervals.full.days": "{number, plural, one {# deň} few {# dni} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodín} other {# hodín}}", "intervals.full.minutes": "{number, plural, one {# minúta} few {# minúty} many {# minút} other {# minút}}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 088b48a3f3..0faee304c6 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -526,6 +526,7 @@ "notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer", "notification.favourite.name_and_others_with_link": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}} i vunë shenjë postimit tuaj si të parapëlqyer", "notification.follow": "{name} zuri t’ju ndjekë", + "notification.follow.name_and_others": "Ju ndoqi {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "notification.follow_request": "{name} ka kërkuar t’ju ndjekë", "notification.follow_request.name_and_others": "Ka kërkuar t’ju ndjekë {name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "notification.label.mention": "Përmendje", @@ -584,6 +585,7 @@ "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", "notifications.column_settings.follow": "Ndjekës të rinj:", "notifications.column_settings.follow_request": "Kërkesa të reja për ndjekje:", + "notifications.column_settings.group": "Grupoji", "notifications.column_settings.mention": "Përmendje:", "notifications.column_settings.poll": "Përfundime pyetësori:", "notifications.column_settings.push": "Njoftime Push", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index e3571704bb..ef2d912c00 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -424,7 +424,7 @@ "keyboard_shortcuts.blocked": "Öppna listan över blockerade användare", "keyboard_shortcuts.boost": "Boosta inlägg", "keyboard_shortcuts.column": "Fokusera kolumn", - "keyboard_shortcuts.compose": "för att fokusera skrivfältet", + "keyboard_shortcuts.compose": "Fokusera skrivfältet", "keyboard_shortcuts.description": "Beskrivning", "keyboard_shortcuts.direct": "för att öppna privata nämningskolumnen", "keyboard_shortcuts.down": "Flytta ner i listan", @@ -433,20 +433,20 @@ "keyboard_shortcuts.favourites": "Öppna favoritlistan", "keyboard_shortcuts.federated": "Öppna federerad tidslinje", "keyboard_shortcuts.heading": "Tangentbordsgenvägar", - "keyboard_shortcuts.home": "för att öppna Hem-tidslinjen", + "keyboard_shortcuts.home": "Öppna Hemtidslinjen", "keyboard_shortcuts.hotkey": "Kommando", - "keyboard_shortcuts.legend": "för att visa denna översikt", - "keyboard_shortcuts.local": "för att öppna Lokal tidslinje", - "keyboard_shortcuts.mention": "för att nämna skaparen", + "keyboard_shortcuts.legend": "Visa denna översikt", + "keyboard_shortcuts.local": "Öppna lokal tidslinje", + "keyboard_shortcuts.mention": "Nämna skaparen", "keyboard_shortcuts.muted": "Öppna listan över tystade användare", - "keyboard_shortcuts.my_profile": "för att öppna din profil", - "keyboard_shortcuts.notifications": "för att öppna Meddelanden", - "keyboard_shortcuts.open_media": "öppna media", + "keyboard_shortcuts.my_profile": "Öppna din profil", + "keyboard_shortcuts.notifications": "Öppna meddelanden", + "keyboard_shortcuts.open_media": "Öppna media", "keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg", - "keyboard_shortcuts.profile": "för att öppna skaparens profil", + "keyboard_shortcuts.profile": "Öppna författarens profil", "keyboard_shortcuts.reply": "Svara på inlägg", - "keyboard_shortcuts.requests": "för att öppna Följförfrågningar", - "keyboard_shortcuts.search": "för att fokusera sökfältet", + "keyboard_shortcuts.requests": "Öppna följförfrågningar", + "keyboard_shortcuts.search": "Fokusera sökfältet", "keyboard_shortcuts.spoilers": "Visa/dölja CW-fält", "keyboard_shortcuts.start": "Öppna \"Kom igång\"-kolumnen", "keyboard_shortcuts.toggle_hidden": "Visa/gömma text bakom CW", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 5cf95554bc..95e3e1e52b 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -87,6 +87,13 @@ "alert.unexpected.title": "อุปส์!", "alt_text_badge.title": "ข้อความแสดงแทน", "announcement.announcement": "ประกาศ", + "annual_report.summary.followers.followers": "ผู้ติดตาม", + "annual_report.summary.highlighted_post.by_favourites": "โพสต์ที่ได้รับการชื่นชอบมากที่สุด", + "annual_report.summary.highlighted_post.by_reblogs": "โพสต์ที่ได้รับการดันมากที่สุด", + "annual_report.summary.highlighted_post.by_replies": "โพสต์ที่มีการตอบกลับมากที่สุด", + "annual_report.summary.new_posts.new_posts": "โพสต์ใหม่", + "annual_report.summary.percentile.we_wont_tell_bernie": "เราจะไม่บอก Bernie", + "annual_report.summary.thanks": "ขอบคุณสำหรับการเป็นส่วนหนึ่งของ Mastodon!", "attachments_list.unprocessed": "(ยังไม่ได้ประมวลผล)", "audio.hide": "ซ่อนเสียง", "block_modal.remote_users_caveat": "เราจะขอให้เซิร์ฟเวอร์ {domain} เคารพการตัดสินใจของคุณ อย่างไรก็ตาม ไม่รับประกันการปฏิบัติตามข้อกำหนดเนื่องจากเซิร์ฟเวอร์บางแห่งอาจจัดการการปิดกั้นแตกต่างกัน โพสต์สาธารณะอาจยังคงปรากฏแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบ", @@ -508,6 +515,7 @@ "notification.admin.report_statuses_other": "{name} ได้รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.admin.sign_up.name_and_others": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ลงทะเบียน", + "notification.annual_report.view": "ดู #Wrapstodon", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.favourite.name_and_others_with_link": "{name} และ {count, plural, other {# อื่น ๆ}} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index b34785ebc3..dcbf8cec58 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -87,7 +87,24 @@ "alert.unexpected.title": "Ой!", "alt_text_badge.title": "Альтернативний текст", "announcement.announcement": "Оголошення", + "annual_report.summary.archetype.booster": "Мисливець на дописи", + "annual_report.summary.archetype.lurker": "Причаєнець", + "annual_report.summary.archetype.oracle": "Оракул", + "annual_report.summary.archetype.pollster": "Опитувач", + "annual_report.summary.archetype.replier": "Душа компанії", + "annual_report.summary.followers.followers": "підписники", + "annual_report.summary.followers.total": "Загалом {count}", + "annual_report.summary.here_it_is": "Ось ваші підсумки {year} року:", + "annual_report.summary.highlighted_post.by_favourites": "найуподобаніші дописи", + "annual_report.summary.highlighted_post.by_reblogs": "найпоширюваніші дописи", + "annual_report.summary.highlighted_post.by_replies": "найкоментованіші дописи", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег", "annual_report.summary.new_posts.new_posts": "нові дописи", + "annual_report.summary.percentile.text": "Це виводить вас в топ користувачів Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Ми не скажемо Bernie.", + "annual_report.summary.thanks": "Дякуємо, що ви є частиною Mastodon!", "attachments_list.unprocessed": "(не оброблено)", "audio.hide": "Сховати аудіо", "block_modal.remote_users_caveat": "Ми попросимо сервер {domain} поважати ваше рішення. Однак дотримання вимог не гарантується, оскільки деякі сервери можуть обробляти блоки по-різному. Загальнодоступні дописи все ще можуть бути видимими для користувачів, які не увійшли в систему.", @@ -509,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} повідомляє про {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.admin.sign_up.name_and_others": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} зареєструвалися", + "notification.annual_report.message": "#Wrapstodon за {year} чекає на вас! Дізнайтеся про найяскравіші та пам'ятні моменти вашого року на Mastodon!", + "notification.annual_report.view": "Переглянути #Wrapstodon", "notification.favourite": "Ваш допис сподобався {name}", "notification.favourite.name_and_others_with_link": "{name} та {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}} вподобали ваш допис", "notification.follow": "{name} підписалися на вас", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e1f9eeb210..91d7f6e45d 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -87,15 +87,15 @@ "alert.unexpected.title": "哎呀!", "alt_text_badge.title": "ALT 說明文字", "announcement.announcement": "公告", - "annual_report.summary.archetype.booster": "酷炫的獵人", - "annual_report.summary.archetype.lurker": "潛伏者", + "annual_report.summary.archetype.booster": "酷炫獵人", + "annual_report.summary.archetype.lurker": "潛水高手", "annual_report.summary.archetype.oracle": "先知", - "annual_report.summary.archetype.pollster": "民調人員", + "annual_report.summary.archetype.pollster": "民調專家", "annual_report.summary.archetype.replier": "社交菁英", "annual_report.summary.followers.followers": "跟隨者", "annual_report.summary.followers.total": "總共 {count}", - "annual_report.summary.here_it_is": "以下是您的{year}年度回顧:", - "annual_report.summary.highlighted_post.by_favourites": "最愛的嘟文", + "annual_report.summary.here_it_is": "以下是您的 {year} 年度回顧:", + "annual_report.summary.highlighted_post.by_favourites": "最多被加到最愛的嘟文", "annual_report.summary.highlighted_post.by_reblogs": "最多轉嘟的嘟文", "annual_report.summary.highlighted_post.by_replies": "最多回覆的嘟文", "annual_report.summary.highlighted_post.possessive": "{name} 的", @@ -103,7 +103,8 @@ "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常使用的主題標籤", "annual_report.summary.new_posts.new_posts": "新嘟文", "annual_report.summary.percentile.text": "這讓您成為前Mastodon 的使用者。", - "annual_report.summary.thanks": "感謝您成為 Mastodon 的一員!", + "annual_report.summary.percentile.we_wont_tell_bernie": "我們不會告訴 Bernie。", + "annual_report.summary.thanks": "感謝您成為 Mastodon 的一份子!", "attachments_list.unprocessed": "(未經處理)", "audio.hide": "隱藏音訊", "block_modal.remote_users_caveat": "我們會要求 {domain} 伺服器尊重您的決定。然而,我們無法保證所有伺服器皆會遵守,某些伺服器可能以不同方式處理封鎖。未登入之使用者仍可能看見您的公開嘟文。", @@ -525,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} 已檢舉 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.admin.sign_up.name_and_others": "{name} 與{count, plural, other {其他 # 個人}}已註冊", + "notification.annual_report.message": "您的 {year} #Wrapstodon 正等著您!揭開您 Mastodon 上的年度精彩時刻與值得回憶的難忘時光!", + "notification.annual_report.view": "檢視 #Wrapstodon", "notification.favourite": "{name} 已將您的嘟文加入最愛", "notification.favourite.name_and_others_with_link": "{name} 與{count, plural, other {其他 # 個人}}已將您的嘟文加入最愛", "notification.follow": "{name} 已跟隨您", diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml index 9c02501eff..08b7c3fa8d 100644 --- a/config/locales/doorkeeper.ro.yml +++ b/config/locales/doorkeeper.ro.yml @@ -60,6 +60,7 @@ ro: error: title: A apărut o eroare new: + prompt_html: "%{client_name} ar dori să vă acceseze contul. Aprobați această solicitare numai dacă recunoașteți și aveți încredere în această sursă." review_permissions: Revizuiți permisiunile title: Autorizare necesară show: @@ -82,6 +83,7 @@ ro: access_denied: Proprietarul de resurse sau serverul de autorizare a refuzat cererea. credential_flow_not_configured: Fluxul Resurselor de Acreditări Parole a eșuat din cauza faptului că Doorkeeper.configure.resource_owner_from_credentials nu este configurat. invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată. + invalid_code_challenge_method: Metoda de provocare a codului trebuie să fie S256, simplu nu este acceptată. invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client. invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid. invalid_request: @@ -134,6 +136,7 @@ ro: media: Atașamente media mutes: Pus pe silențios notifications: Notificări + profile: Profilul tău Mastodon push: Notificări push reports: Rapoarte search: Căutare @@ -148,12 +151,23 @@ ro: scopes: admin:read: citește toate datele de pe server admin:read:accounts: citește informații sensibile ale tuturor conturilor + admin:read:canonical_email_blocks: citește informații sensibile ale tuturor blocurilor de e-mail canonice + admin:read:domain_allows: citește informații sensibile ale tuturor domeniilor permise + admin:read:domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu + admin:read:email_domain_blocks: citește informații sensibile ale tuturor blocurilor de domeniu de e-mail + admin:read:ip_blocks: citește informații sensibile ale tuturor blocurilor IP admin:read:reports: citește informații sensibile din toate rapoartele și conturile raportate admin:write: modifică toate datele de pe server admin:write:accounts: efectuează acțiuni de moderare pe conturi + admin:write:canonical_email_blocks: efectuează acțiuni de moderare pe blocurile de e-mail canonice + admin:write:domain_allows: efectuează acțiuni de moderare pe domeniile permise + admin:write:domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu + admin:write:email_domain_blocks: efectuează acțiuni de moderare pe blocurile de domeniu de e-mail + admin:write:ip_blocks: efectuează acțiuni de moderare pe blocurile IP admin:write:reports: efectuează acțiuni de moderare pe rapoarte crypto: utilizează criptare la ambele capete follow: modifică relațiile contului + profile: citește doar informațiile de profil ale contului tău push: primește notificările tale push read: citește toate datele contului tău read:accounts: vede informațiile privind conturile diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index ca8271ebf1..3c8b08ff26 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -72,7 +72,7 @@ sv: revoke: Är du säker? index: authorized_at: Godkändes den %{date} - description_html: Dessa applikationer har åtkomst till ditt konto genom API:et. Om det finns applikationer du inte känner igen här, eller om en applikation inte fungerar, kan du återkalla dess åtkomst. + description_html: Detta är program som kan komma åt ditt konto med hjälp av API. Om det finns program som du inte känner igen här, eller om ett program är inte fungerar kan du återkalla dess åtkomst. last_used_at: Användes senast %{date} never_used: Aldrig använd scopes: Behörigheter diff --git a/config/locales/el.yml b/config/locales/el.yml index 0df31b246f..3a145cbdab 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -21,6 +21,7 @@ el: one: Ανάρτηση other: Αναρτήσεις posts_tab_heading: Αναρτήσεις + self_follow_error: Δεν επιτρέπεται να ακολουθήσεις τον δικό σου λογαριασμό admin: account_actions: action: Εκτέλεση ενέργειας diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 9e95155110..3e5a1db00e 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -447,6 +447,7 @@ lv: resolve: Atrisināt domēnu not_permitted: Nav atļauta resolved_through_html: Atrisināts, izmantojot %{domain} + title: Bloķētie e-pasta domēni export_domain_allows: new: title: Importēt domēnu atļaujas @@ -872,6 +873,8 @@ lv: message_html: Tu neesi definējis nevienu servera nosacījumu. sidekiq_process_check: message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju + software_version_check: + action: Skatīt pieejamos atjauninājumus software_version_critical_check: action: Skatīt pieejamos atjauninājumus message_html: Ir pieejams kritisks Mastodon atjauninājums. Lūdzu, atjaunini to pēc iespējas ātrāk. @@ -1668,6 +1671,8 @@ lv: webauthn_authentication: Drošības atslēgas severed_relationships: download: Lejupielādēt (%{count}) + event_type: + user_domain_block: Jūs bloķējāt %{target_name} lost_followers: Zaudētie sekotāji lost_follows: Zaudētie sekojumi type: Notikums diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 0a665fb784..f5be51f9c3 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -9,7 +9,6 @@ ar: indexable: قد تظهر منشوراتك الموجهة للعامة في نتائج البحث على ماستدون. فالأشخاص الذين تفاعلوا مع منشوراتك قد يكون بمقدورهم البحث عنها بغظ النظر عن ذلك. note: 'يمكنك @ذكر أشخاص آخرين أو استعمال #الوسوم.' show_collections: سيستطيع الناس من تصفح متابعيك و متابعاتك. سيرى الأشخاص الذين تتبعهم أنك تتبعهم دون أي شك. - unlocked: سيتمكن الآخرون من متابعتك دون طلب الموافقة. قم بتعطيله إن كنت ترغب في مراجعة تلك الطلبات يدويا باختيار قبول أو رفض المتابعين الجدد. account_alias: acct: ادخِل عنون الحساب username@domain الذي تودّ مغادرته account_migration: diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 00617c4e3c..997423449d 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -4,7 +4,6 @@ ast: hints: account: note: 'Pues @mentar a otros perfiles o poner #etiquetes.' - unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales. admin_account_action: text_html: Opcional. Pues usar la sintaxis de los artículos y amestar alvertencies preconfiguraes p'aforrar tiempu type_html: Escueyi qué facer con %{acct} diff --git a/config/locales/simple_form.be.yml b/config/locales/simple_form.be.yml index db6a94f8eb..d7be72b876 100644 --- a/config/locales/simple_form.be.yml +++ b/config/locales/simple_form.be.yml @@ -9,7 +9,6 @@ be: indexable: Вашыя публічныя допісы могуць з'яўляцца ў рэзультатах пошуку Mastodon. Людзі, якія ўзаемадзейнічалі з вашымі допісамі, усё роўна маюць магчымасць іх знаходзіць. note: 'Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі.' show_collections: Людзі змогуць праглядаць спіс вашых падпісак і падпісчыкаў. Людзі, на якіх вы падпісаны ў любым выпадку будуць бачыць, што вы іх чытаеце. - unlocked: Людзі змогуць сачыць за вамі, не запытваючы пацвярджэння. Зніміце сцяжок, калі вы хочаце праглядаць запыты на падпіску і выбіраць, прымаць ці адхіляць новых падпісчыкаў. account_alias: acct: Прызначце карыстальнік@дамен уліковага запісу з якога вы хочаце пераехаць account_migration: diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 2690f07141..5540942d93 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -9,7 +9,6 @@ bg: indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо. note: 'Може да @споменавате други хора или #хаштагове.' show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това. - unlocked: Хората ще могат да ви последват без изискване на одобрение. Размаркирайте, ако искате да преглеждате заявките за последване и изберете дали да приемете или отхвърлите новите последователи. account_alias: acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите account_migration: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index c628bebaad..defb13325b 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -9,7 +9,7 @@ ca: indexable: Els teus tuts públics poden aparèixer en els resultats de cerca de Mastodon. Les persones que han interaccionat amb el teus tuts seran sempre capaços de cercar-los. note: 'Pots @mencionar altra gent o #etiquetes.' show_collections: La gent podrà navegar pels teus seguits i seguidors. Qui segueixis sí que veurà que els segueixes. - unlocked: La gent serà capaç de seguir-te sense sol·licitar-ho. Desmarca si vols revisar les sol·licituds i triar si acceptes o no els nous seguidors. + unlocked: Us podran seguir sense la vostra aprovació. Desmarqueu si voleu moderar les peticions de seguiment i decidir quines autoritzeu o denegueu. account_alias: acct: Especifica l'usuari@domini del compte des d'on et vols traslladar account_migration: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 6242b1ca6e..ef82b3232a 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -9,7 +9,6 @@ cs: indexable: Vaše veřejné příspěvky se mohou objevit ve výsledcích vyhledávání na Mastodonu. Lidé, kteří s vašimi příspěvky interagovaly, je mohou stále vyhledávat. note: 'Můžete @zmínit jiné osoby nebo #hashtagy.' show_collections: Lidé budou moci procházet skrz sledující. Lidé, které sledujete, uvidí, že je sledujete bezohledně. - unlocked: Lidé vás budou moci sledovat, aniž by vás žádali o schválení. Zrušte zaškrtnutí, pokud chcete zkontrolovat požadavky a zvolte, zda přijmete nebo odmítněte nové následovníky. account_alias: acct: Zadejte svůj účet, ze kterého se chcete přesunout jinam, ve formátu přezdívka@doména account_migration: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index dedd50504b..5f3ac2818c 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -10,7 +10,6 @@ cy: indexable: Mae'n bosib y bydd eich postiadau cyhoeddus yn ymddangos yng nghanlyniadau chwilio ar Mastodon. Mae'n bosibl y bydd pobl sydd wedi rhyngweithio â'ch postiadau yn dal i allu eu chwilio. note: 'Gallwch @grybwyll pobl eraill neu #hashnodau.' show_collections: Bydd pobl yn gallu pori trwy'r rhai rydych yn eu dilyn a'ch dilynwyr. Bydd y bobl rydych chi'n eu dilyn yn gweld eich bod chi'n eu dilyn beth bynnag. - unlocked: Bydd pobl yn gallu eich dilyn heb ofyn am ganiatâd. Dad-diciwch os ydych am adolygu ceisiadau dilyn a dewis a ydych am dderbyn neu wrthod dilynwyr newydd. account_alias: acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono account_migration: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 25cf670ea9..32e8e90b85 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -10,7 +10,7 @@ da: indexable: Dine offentlige indlæg vil kunne vises i Mastodon-søgeresultater. Folk, som har interageret med dem, vil kunne finde dem uanset. note: 'Du kan @omtale andre personer eller #hashtags.' show_collections: Folk vil ikke kunne tjekke dine Følger og Følgere. Folk, du selv følger, vil stadig kunne se dette. - unlocked: Folk vil kunne følge dig uden krav om godkendelse. Fjern markeringen, såfremt du ønsker at tjekke Følg-anmodninger og individuelt acceptere eller afvise nye Følgere. + unlocked: Man vil kunne følges af folk uden først at godkende dem. Ønsker man at gennemgå Følg-anmodninger og individuelt acceptere/afvise nye følgere, så fjern markeringen. account_alias: acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte account_migration: diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 9dcac5c160..a04db4b228 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -9,7 +9,6 @@ el: indexable: Οι δημόσιες δημοσιεύσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις δημοσιεύσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει. note: 'Μπορείς να @επισημάνεις άλλα άτομα ή #ετικέτες.' show_collections: Οι χρήστες θα είναι σε θέση να περιηγηθούν στα άτομα που ακολουθείς και στους ακόλουθούς σου. Άτομα που ακολουθείς θα βλέπουν ότι τους ακολουθείς όπως και να 'χει. - unlocked: Οι χρήστες θα είναι σε θέση να σε ακολουθήσουν χωρίς να ζητούν έγκριση. Κατάργησε την επιλογή αν θες να αξιολογείς τα αιτήματα ακολούθησης και να επιλέξεις αν θα αποδεχθείς ή απορρίψεις νέους ακόλουθους. account_alias: acct: Όρισε το username@domain του λογαριασμού από τον οποίο θέλεις να μετακινηθείς account_migration: diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index e20249e6bc..ef252d8aeb 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -9,7 +9,6 @@ en-GB: indexable: Your public posts may appear in search results on Mastodon. People who have interacted with your posts may be able to search them regardless. note: 'You can @mention other people or #hashtags.' show_collections: People will be able to browse through your follows and followers. People that you follow will see that you follow them regardless. - unlocked: People will be able to follow you without requesting approval. Uncheck if you want to review follow requests and chose whether to accept or reject new followers. account_alias: acct: Specify the username@domain of the account you want to move from account_migration: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index f8a5776835..f39eb18f61 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -10,7 +10,7 @@ eo: indexable: Viaj publikaj afiŝoj povas aperi en serĉrezultoj ĉe Mastodon. Homoj, kiuj interagis kun viaj afiŝoj, eble povos serĉi ilin sendepende. note: 'Vi povas @mencii aliajn homojn aŭ #haŝetikedoj.' show_collections: Homoj povos foliumi viajn sekvatojn kaj sekvantojn. Homoj, kiujn vi sekvas, vidos, ke vi sekvas ilin ĉiaokaze. - unlocked: Homoj povos sekvi vin sen peto de aprobo. Malelektu se vi volas kontroli petojn de sekvado kaj elekti, ĉu akcepti aŭ malakcepti novajn sekvantojn. + unlocked: Homoj povos sekvi vin sen peti aprobon. Malmarku ĉu vi volas revizii sekvajn petojn kaj elektu ĉu akcepti aŭ malakcepti novajn sekvantojn. account_alias: acct: Specifu la uzantnomon@domajnon de la konto el kiu vi volas translokiĝi account_migration: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 98254c5e99..dada648d5a 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -10,7 +10,7 @@ es-AR: indexable: Tus mensajes públicos pueden aparecer en los resultados de la búsqueda en Mastodon. La gente que interactuó con tus mensajes puede ser capaz de buscarlos sin importar el momento. note: 'Podés @mencionar otras cuentas o usar #etiquetas.' show_collections: La gente podrá navegar a través de tus seguidos y seguidores. Sin embargo, la gente que sigás, sabrá que lo estás haciendo. - unlocked: La gente podrá seguirte sin solicitar aprobación. Desmarcá si querés revisar las solicitudes de seguimiento y elegir si aceptar o rechazar nuevos seguidores. + unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores. account_alias: acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte account_migration: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 2b5d22aee8..3c340b3005 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -10,7 +10,7 @@ es-MX: indexable: Tus publicaciones públicas pueden aparecer en los resultados de búsqueda en Mastodon. Las personas que han interactuado con tus publicaciones pueden buscarlas en cualquier momento. note: 'Puedes @mencionar a otra gente o #hashtags.' show_collections: Las personas pueden navegar a través de tus seguidos y seguidores. Las personas que te siguen pueden ver que las sigues. - unlocked: Las personas pueden seguirte sin solicitar la aprobación. No lo selecciones si quieres revisar las solicitudes de seguimiento y elegir si aceptas o rechazas a nuevos seguidores. + unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores. account_alias: acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar account_migration: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 8bc2c5f65c..a0338a3029 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -10,7 +10,7 @@ es: indexable: Tus publicaciones públicas pueden aparecer en los resultados de búsqueda en Mastodon. Las personas que han interactuado con tus publicaciones pueden ser capaces de buscarlas sin importar su visibilidad. note: Puedes mencionar a otras personas o etiquetas. show_collections: Las personas podrán navegar a través de tus seguidos y seguidores. Esto no impide que las personas que sigues sepan que las estás siguiendo. - unlocked: Las personas podrán seguirte sin pedir aprobación. Desmarca si deseas revisar las solicitudes de seguimiento y aceptar o rechazar nuevos seguidores. + unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores. account_alias: acct: Especifica el nombre_de_usuario@dominio de la cuenta desde donde deseas migrar account_migration: diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index a2ebf63b11..690661cd49 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -10,7 +10,6 @@ et: indexable: Sinu avalikud postitused võivad ilmuda Mastodoni otsingutulemustes. Inimesed, kes on sinu postitustele reageerinud, saavad neid otsida nii või naa. note: 'Saad @mainida teisi inimesi või #silte.' show_collections: Inimesed saavad sirvida su jälgijaid ja jälgitavaid. Inimesed, keda sa jälgid, näevad seda sõltumata häälestuse valikust. - unlocked: Inimesed saavad sind jälgima hakata kinnitamist taotlemata. Eemalda märge, kui soovid jälgimistaotlusi üle vaadata ja valida, kas nõustuda või keelduda uute jälgijatega. account_alias: acct: Sisesta konto kasutajanimi@domeen, mille soovid siia ümber kolida account_migration: diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 7647e187ec..f6c4f14915 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -9,7 +9,6 @@ eu: indexable: Zure argitalpen publikoak bilaketa-emaitzetan ager daitezke Mastodonen. Zure argitalpenekin elkarregin duten jendeak ikusi ahal izango dituzte, hala ere. note: 'Beste pertsona edo #traola batzuk @aipatu ditzakezu.' show_collections: Pertsonek zuk jarraitzen dituzunak eta zure jarraitzaileak arakatu ahal izango dute. Jarraitzen dituzun pertsonak jarraitzen dituzula ikusi ahal izando dute, hala ere. - unlocked: Pertsonek zuri jarraitu ahal izango dizute onarpen-eskaerarik gabe. Desgaitu jarraipen-eskaerak berrikusi nahi badituzu eta hauek onartu edo ez erabaki nahi baduzu. account_alias: acct: Zehaztu migrazioaren jatorri den kontuaren erabiltzailea@domeinua account_migration: diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index f51a4ce8bf..9872de222f 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -10,7 +10,6 @@ fa: indexable: ممکن است فرسته‌های عمومیتان در نتیجه‌های جست‌وجوی ماستودون ظاهر شود. افرادی که با فرسته‌هایتان تعامل داشتند در هر صورت می‌توانند جست‌وجویشان کنند. note: 'می‌توانید افراد دیگر را @نام برده یا #برچسب بزنید.' show_collections: افراد خواهند توانست پی‌گیران و پی‌گرفته شده‌هایتان را مرور کنند. افرادی که پی‌می‌گیریدشان در هر صورت خواهند دید که پی‌می‌گیریدشان. - unlocked: افراد خواهند توانست بدون درخواست تأیید پی‌بگیرندتان. اگر می‌خواهید درخواست‌های پی‌گیری را بازبینی کرده و بگزینید که پی‌گیران جدید را بپذیرید یا رد کنید، علامت را بردارید. account_alias: acct: مشخّص کردن username@domain حسابی که می‌خواهید از آن منتقل شوید account_migration: diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index d2ce30ec8e..d38aeaa414 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -9,7 +9,6 @@ fr-CA: indexable: Vos messages publics peuvent apparaître dans les résultats de recherche sur Mastodon. Les personnes qui ont interagi avec vos messages peuvent les trouver dans une recherche quoi qu’il arrive. note: 'Vous pouvez @mentionner d’autres personnes ou des #hashtags.' show_collections: Les gens pourront voir les personnes que vous suivez ou qui vous suivent. Ceux que vous suivez verront que vous les suivez dans tous les cas. - unlocked: Les gens pourront vous suivre sans demander d'approbation. Décochez cette option si vous voulez valider les demandes d'abonnement et choisir d'accepter ou de rejeter les nouveaux abonnés. account_alias: acct: Spécifiez l’identifiant@domaine du compte que vous souhaitez faire migrer account_migration: diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 626032600a..b601bf0b66 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -9,7 +9,6 @@ fr: indexable: Vos messages publics peuvent apparaître dans les résultats de recherche sur Mastodon. Les personnes qui ont interagi avec vos messages peuvent les trouver dans une recherche quoi qu’il arrive. note: 'Vous pouvez @mentionner d’autres personnes ou des #hashtags.' show_collections: Les gens pourront voir les personnes que vous suivez ou qui vous suivent. Ceux que vous suivez verront que vous les suivez dans tous les cas. - unlocked: Les gens pourront vous suivre sans demander d'approbation. Décochez cette option si vous voulez valider les demandes d'abonnement et choisir d'accepter ou de rejeter les nouveaux abonnés. account_alias: acct: Spécifiez l’identifiant@domaine du compte à partir duquel vous souhaitez migrer account_migration: diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index c840342db5..6a37a09201 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -10,7 +10,6 @@ fy: indexable: Jo iepenbiere berjochten kinne ferskine yn de sykresultaten op Mastodon. Minsken dy’t reagearre hawwe op jo berjochten kinne se hoe dan ek trochsykje. note: 'Jo kinne oare minsken @fermelde of #hashtags brûke.' show_collections: Minsken kinne sjen wa’t jo folgje en wa’t jo folget. - unlocked: Minsken kinne jo folgje sûnder dêrfoar tastimming freegje te hoegen. Wannear’t jo nije folgers hânmjittich goedkarre wolle, moatte jo dizze opsje deselektearje. account_alias: acct: Fermeld de brûkersnamme@domein fan de account fan wêr’t jo ferhúzje wolle account_migration: diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index f8257a9da9..62d59235bf 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -10,7 +10,6 @@ ga: indexable: Seans go mbeidh do phostálacha poiblí le feiceáil sna torthaí cuardaigh ar Mastodon. Seans go mbeidh daoine a d’idirghníomhaigh le do phostálacha in ann iad a chuardach beag beann ar. note: 'Is féidir leat @trá a dhéanamh ar dhaoine eile nó #hashtags.' show_collections: Beidh daoine in ann brabhsáil trí do seo a leanas agus do leanúna. Feicfidh na daoine a leanann tú go leanann tú iad beag beann ar. - unlocked: Beidh daoine in ann tú a leanúint gan cead a iarraidh. Díthiceáil an dteastaíonn uait athbhreithniú a dhéanamh ar iarratais leantacha agus roghnaigh cé acu an nglacfaidh nó an diúltóidh tú do leantóirí nua. account_alias: acct: Sonraigh ainm@fearann don chuntas ar mhaith leat aistriú uaidh account_migration: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index af1f06a316..4083469b63 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -10,7 +10,6 @@ gd: indexable: Faodaidh na postaichean poblach agad a nochdadh am measg toraidhean luirg air Mastodon. ’S urrainn dhan fheadhainn a rinn eadar-ghabhail leis na postaichean agad lorg annta air a h-uile dòigh. note: "’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais." show_collections: "’S urrainn do chàch na dàimhean leantainn agad a rùrachadh. Chì daoine a leanas tu gu bheil thu ’gan leantainn air a h-uile dòigh." - unlocked: "’S urrainnear do leantainn gun aontachadh iarraidh. Thoir a’ chromag far a’ bhogsa nam bu mhiann leat lèirmheas a dhèanamh air na h-iarrtasan leantainn agus taghadh an aontaich thu ri neach-leantainn ùr no an dhiùlt thu iad." account_alias: acct: Sònraich ainm-cleachdaiche@àrainn dhen chunntas a tha thu airson imrich uaithe account_migration: diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 85fa74f1ed..5ac75aafb1 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -9,7 +9,6 @@ ia: indexable: Tu messages public pote apparer in le resultatos de recerca sur Mastodon. Le personas qui ha interagite con tu messages pote cercar los in omne caso. note: 'Tu pote @mentionar altere personas o #hashtags.' show_collections: Le gente potera percurrer le listas de personas que tu seque e qui te seque. Le personas que tu seque videra que tu les seque in omne caso. - unlocked: Le personas potera sequer te sin requestar approbation. Dismarca si tu vole revider le requestas de sequimento e seliger si acceptar o rejectar nove sequitores. account_alias: acct: Specifica le nomine_de_usator@dominio del conto desde le qual tu vole migrar account_migration: diff --git a/config/locales/simple_form.ie.yml b/config/locales/simple_form.ie.yml index 771e341616..56e737172d 100644 --- a/config/locales/simple_form.ie.yml +++ b/config/locales/simple_form.ie.yml @@ -9,7 +9,6 @@ ie: indexable: Tui public postas posse aparir in sercha-resultates sur Mastodon. E in omni casu, tis qui ha interactet con tui postas va posser serchar e trovar les. note: 'Tu posse @mentionar altri persones o #hashtags.' show_collections: Gente va posser navigar tra tui sequentes e sequitores. Gente quem tu seque va vider que tu seque les sin egarda. - unlocked: Persones va posser sequer te sin petir aprobation. Desselecte si tu vole manualmen tractar petitiones de sequer e decider ca acceptar o rejecter nov sequitores. account_alias: acct: Specificar li usatornomine@dominia del conto ex quel tu vole translocar account_migration: diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml index 1df5008195..631e7182fd 100644 --- a/config/locales/simple_form.io.yml +++ b/config/locales/simple_form.io.yml @@ -9,7 +9,6 @@ io: indexable: Vua posta publika povos aparar en rezultaji di serchi che Mastodon. Personi qui interagis kun vua posti povos serchar oli irgakaze. note: 'Vu povas @mencionar altra personi o #hashtagi.' show_collections: Personi povos navigar tra vua sequati e sequanti. Personi quin vu sequas, vidos ke vu sequas li irgakaze. - unlocked: Personi povos sequar vu sen demandar aprobo. Deselektez se vu volas revuar sequadodemandi e selektez aceptar o refuzar nova sequati. account_alias: acct: Partikulare pozez uzantonomo@domeno di konto quon vua volas ektransferesar account_migration: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index c36fce36f7..b1fb6c3fc1 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -10,7 +10,7 @@ it: indexable: I tuoi post pubblici potrebbero apparire nei risultati di ricerca su Mastodon. Le persone che hanno interagito con i tuoi post potrebbero essere in grado di cercarli anche se non hai attivato questa impostazione. note: 'Puoi @menzionare altre persone o usare gli #hashtags.' show_collections: Le persone saranno in grado di navigare attraverso i tuoi seguaci e seguaci. Le persone che segui vedranno che li seguirai indipendentemente dalle tue impostazioni. - unlocked: Le persone saranno in grado di seguirti senza richiedere l'approvazione. Deseleziona se vuoi controllare le richieste di seguirti e scegli se accettare o rifiutare nuovi follower. + unlocked: Le persone potranno seguirti senza richiedere l'approvazione. Deseleziona questa opzione, se vuoi rivedere le richieste per poterti seguire e scegliere se accettare o rifiutare i nuovi seguaci. account_alias: acct: Indica il nomeutente@dominio dell'account dal quale vuoi trasferirti account_migration: diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml index de37005312..712c2f4e8a 100644 --- a/config/locales/simple_form.lad.yml +++ b/config/locales/simple_form.lad.yml @@ -9,7 +9,6 @@ lad: indexable: Tus publikasyones publikas pueden apareser en rezultados de bushkeda en Mastodon. Personas ke enteraktuaron kon tus publikasyones syempre pueden bushkarlas inkluzo si trokes esta preferensya. note: 'Puedes @enmentar a otra djente o #etiketas.' show_collections: Otra djente podra ver tus segidos i suivantes. Personas a las kualas siges siempre podran ver que las estas sigiendo. - unlocked: Djente va poder segirte sin solisitar tu achetasyon. Deseleksyona si keres revizar solisitasyones de segimyento i dechidir si keres achetar o refuzar a muevos suivantes. account_alias: acct: Espesifika tu nombre de utilizador@domeno del kuento de ande keres migrar account_migration: diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index de3dd2f31c..d9204efaaa 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -10,7 +10,6 @@ lt: indexable: Tavo vieši įrašai gali būti rodomi Mastodon paieškos rezultatuose. Žmonės, kurie bendravo su tavo įrašais, gali jų ieškoti nepriklausomai nuo to. note: 'Gali @paminėti kitus žmones arba #saitažodžius.' show_collections: Žmonės galės peržiūrėti tavo sekimus ir sekėjus. Žmonės, kuriuos seki, matys, kad juos seki, nepaisant to. - unlocked: Žmonės galės tave sekti nepaprašę patvirtinimo. Panaikink žymėjimą, jei nori peržiūrėti sekimo prašymus ir pasirinkti, ar priimti, ar atmesti naujus sekėjus. account_alias: acct: Nurodyk paskyros, iš kurios nori perkelti, naudotojo vardą@domeną account_migration: diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 106e29d2de..da8dac3c22 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -10,7 +10,6 @@ lv: indexable: Tavi publiskie ieraksti var tikt parādīti Mastodon meklēšanas iznākumā. Cilvēki, kuri ir mijiedarbojušies ar Taviem ierakstiem, var tos meklēt neatkarīgi no tā. note: 'Tu vari @minēt citus cilvēkus vai #mirkļbirkas.' show_collections: Cilvēki varēs pārlūkot Tavus sekotājus un sekojamos. Cilvēki, kuriem Tu seko, redzēs, ka Tu seko viņiem neatkarīgi no tā. - unlocked: Cilvēki varēs tev sekot, neprasot apstiprinājumu. Noņem atzīmi, ja vēlies pārskatīt sekošanas pieprasījumus un izvēlēties, pieņemt vai noraidīt jaunus sekotājus. account_alias: acct: Norādi konta lietotājvārdu@domēnu, no kura vēlies pārvākties account_migration: @@ -183,7 +182,7 @@ lv: autofollow: Uzaicini sekot tavam kontam avatar: Profila attēls bot: Šis ir automatizēts konts - chosen_languages: Filtrēt valodas + chosen_languages: Atlasīt valodas confirm_new_password: Apstiprināt jauno paroli confirm_password: Apstiprināt paroli context: Filtrēt kontekstus diff --git a/config/locales/simple_form.ms.yml b/config/locales/simple_form.ms.yml index ecc3588d67..96c6002aa4 100644 --- a/config/locales/simple_form.ms.yml +++ b/config/locales/simple_form.ms.yml @@ -9,7 +9,6 @@ ms: indexable: Kiriman awam anda mungkin muncul dalam hasil carian di Mastodon. Orang yang telah berinteraksi dengan kiriman anda mungkin boleh mencarinya. note: 'Anda boleh @menyebut orang lain atau #hashtags.' show_collections: Orang akan dapat menyemak imbas ikutan dan pengikut anda. Orang yang anda ikuti akan melihat bahawa anda tetap mengikuti mereka. - unlocked: Orang akan dapat mengikuti anda tanpa meminta kelulusan. Nyahtanda jika anda ingin menyemak permintaan ikutan dan pilih sama ada untuk menerima atau menolak pengikut baharu. account_alias: acct: Tentukan namapengguna@domain akaun yang ingin anda alihkan daripada account_migration: diff --git a/config/locales/simple_form.my.yml b/config/locales/simple_form.my.yml index abcb11bdaa..474b0f6cb4 100644 --- a/config/locales/simple_form.my.yml +++ b/config/locales/simple_form.my.yml @@ -9,7 +9,6 @@ my: indexable: သင်၏ အများမြင်ပို့စ်များသည် Mastodon ရှိ ရှာဖွေမှုရလဒ်များတွင် ပေါ်လာနိုင်သည်။ သင့်ပို့စ်များမှတစ်ဆင့် အပြန်အလှန်တုံ့ပြန်ပြီး ရှာဖွေနိုင်ပါမည်။ note: 'သင်သည် အခြားသူများ သို့မဟုတ် #hashtag များကို @mention ဖြင့် ဖော်ပြနိုင်သည်။' show_collections: သင်စောင့်ကြည့်သူများနှင့် သင့်ကိုစောင့်ကြည့်သူများမှတစ်ဆင့် ရှာဖွေနိုင်မည်ဖြစ်သည်။ သင်စောင့်ကြည့်သူများသည် သင်သူတို့ကို မည်သို့စောင့်ကြည့်သည်ကို တွေ့ရလိမ့်မည်။ - unlocked: ခွင့်ပြုချက်မတောင်းဘဲ လူများက သင့်ကိုစောင့်ကြည့်နိုင်ပါမည်။ စောင့်ကြည့်ရန်အတွက် တောင်းဆိုချက်များထားရှိလိုပါက အမှန်ခြစ်ဖြုတ်ပြီး စောင့်ကြည့်သူသစ်များကို လက်ခံခြင်း သို့မဟုတ် ငြင်းပယ်ခြင်းလည်း အမှန်ခြစ်ဖြုတ်နိုင်ပါသည်။ account_alias: acct: ပြောင်းရွှေ့မည့်အကောင့်မှ username@domain ကို သတ်မှတ်ပါ account_migration: diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 46b7af4bdb..008af2c5ac 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -10,7 +10,6 @@ nn: indexable: Dei offentlege innlegga dine kan dukka opp i søkjeresultat på Mastodon. Folk som har reagert på oinnlegga dine kan uansett søkja gjennom dei. note: 'Du kan @nemne folk eller #emneknaggar.' show_collections: Andre kan sjå kven du fylgjer og kven som fylgjer deg. Dei du fylgjer kan alltid sjå at du fylgjer dei. - unlocked: Alle kan fylgja deg utan å måtta be om det. Vel bort dersom du vil gå gjennom førespurnader om å fylgja deg og seia ja eller nei til kvar av dei. account_alias: acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta frå account_migration: diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 73ba17cd4c..fb7a808876 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -9,7 +9,6 @@ indexable: Dine offentlige innlegg kan vises i søkeresultat på Mastodon. Personer som har samhandlet med innleggene dine kan finne de uansett. note: 'Du kan @nevne andre eller #emneknagger.' show_collections: Folk vil kunne bla gjennom de du følger og dine følgere. Folk du følger vil uansett se at du følger dem. - unlocked: Folk vil kunne følge deg uten å be om godkjenning. Fjern markeringen om du vil gjennomgå følge-forespørsler og velge om du vil akseptere eller avvise nye følgere. account_alias: acct: Spesifiser brukernavn@domene til kontoen du vil flytte fra account_migration: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index c5ff55c15d..4fba45098d 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -10,7 +10,6 @@ pl: indexable: Twoje publiczne wpisy mogą pojawiać się w wynikach wyszukiwania w Mastodonie. Użytkownicy, którzy wchodzili w interakcje z twoimi wpisami będą mogli je znaleźć niezależnie od tego ustawienia. note: 'Możesz @wspomnieć użytkowników albo #hasztagi.' show_collections: Twoja lista obserwowanych i obserwujących będzie widoczna dla wszystkich. Użytkownicy których obserwujesz będą jednak o tym wiedzieli. - unlocked: Inni użytkownicy będą mogli cię obserwować bez proszenia o zgodę. Odznacz, jeżeli chcesz aprobować obserwujących ręcznie po przejrzeniu próśb o obserwowanie. account_alias: acct: Określ nazwę@domenę konta z którego chcesz się przenieść account_migration: diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 16d7cfe445..0c6be63aaa 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -10,7 +10,6 @@ pt-BR: indexable: Suas publicações públicas podem aparecer nos resultados da pesquisa em Mastodon. As pessoas que interagiram com suas publicações podem conseguir pesquisá-las independentemente disso. note: 'Você pode @mencionar outras pessoas ou #hashtags.' show_collections: As pessoas poderão navegar entre os seus seguidores e seguidores. As pessoas que você segue verão que você as segue independentemente disso. - unlocked: As pessoas poderão te seguir sem pedir aprovação. Desmarque se você deseja revisar pedidos e escolher se aceita ou rejeita novos seguidores. account_alias: acct: Especifique o usuário@domínio de onde veio account_migration: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 3b606df032..a172ed2752 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -9,7 +9,6 @@ pt-PT: indexable: As suas mensagens públicas podem aparecer nos resultados da pesquisa no Mastodon. Independentemente disso, as pessoas que interagiram com as suas publicações podem ser capazes de as pesquisar. note: 'Pode @mencionar outras pessoas ou #hashtags.' show_collections: As pessoas podem navegar pelas listas das pessoas que segue e dos seus seguidores. Independentemente disso, as pessoas que segue verão que você as segue. - unlocked: As pessoas podem segui-lo/a sem pedir a sua aprovação. Desmarque se quiser rever os pedidos para seguir e escolher se aceita ou rejeita os novos seguidores. account_alias: acct: Especifique o utilizador@domínio da conta de onde você deseja migrar account_migration: diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 458638ddec..63dcf91343 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -3,11 +3,14 @@ ro: simple_form: hints: account: + attribution_domains_as_text: Una pe linie. Protejează împotriva atribuirilor false. discoverable: Este posibil ca postările și profilul tău să fie recomandate în diferite zone ale Mastodon, iar profilul tău ar poate fi sugerat altor utilizatori. + display_name: Numele dvs. complet sau numele dvs. amuzant. fields: Pagina ta principală, pronumele tale, vârsta, sau orice îți dorești. indexable: Postările tale publice pot apărea în rezultatele căutărilor pe Mastodon. Persoanele care au interacționat cu postările tale vor putea să le caute oricând. note: 'Poți @menționa alte persoane sau #hashtag-uri.' - unlocked: Alte persoane vă vor putea urmări fără a solicita aprobare. Debifați dacă doriți să revizuiți cererile și să alegeți dacă doriți să acceptați sau să respingeți noii urmăritori. + show_collections: Oamenii vor putea să răsfoiască urmăriți și urmăritorii dvs. Oamenii pe care îi urmăriți vor vedea că îi urmăriți indiferent. + unlocked: Alte persoane vă vor putea urmări fără a solicita aprobare. Debifați dacă doriți să revizuiți cererile de urmărire și să alegeți dacă doriți să acceptați sau să respingeți noii urmăritori. account_alias: acct: Specificați numele de utilizator@domeniu al contului de la care doriți să treceți account_migration: @@ -20,6 +23,12 @@ ro: send_email_notification: Utilizatorul va primi o explicație cu privire la ceea ce sa întâmplat cu contul lui text_html: Opțional. Poți utiliza sintaxe. Poți adăuga avertismente predefinite pentru a salva timp type_html: Alege ce se întâmplă cu %{acct} + types: + disable: Împiedicați utilizatorul să-și folosească contul, dar nu ștergeți sau ascundeți conținutul acestuia. + none: Utilizați acest lucru pentru a trimite o avertizare utilizatorului, fără a declanșa nicio altă acțiune. + sensitive: Forțează toate atașamentele media ale acestui utilizator să fie marcate ca sensibile. + silence: Împiedicați utilizatorul să poată posta cu vizibilitate publică, ascundeți postările și notificările de la persoanele care nu le urmăresc. Închide toate rapoartele pentru acest cont. + suspend: Preveniți orice interacțiune din sau către acest cont și ștergeți conținutul acestuia. Reversibil în 30 de zile. Închide toate rapoartele pentru acest cont. warning_preset_id: Opțional. Poți adăuga text personalizat la sfârșitul presetului announcement: all_day: Când este bifat, numai datele intervalului de timp vor fi afișate @@ -27,6 +36,8 @@ ro: scheduled_at: Lăsați necompletat pentru a publica anunțul imediat starts_at: Opțional. În cazul în care anunțul tău este legat de un anumit interval de timp text: Poți folosi sintaxa de postare. Te rugăm să fii atent la spațiul pe care anunțul îl va ocupa pe ecranul utilizatorului + appeal: + text: Puteți contesta un avertisment o singură dată defaults: autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat avatar: WEBP, PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px @@ -65,18 +76,64 @@ ro: actions: hide: Ascunde complet conținutul filtrat, ca și cum nu ar exista warn: Ascunde conținutul filtrat în spatele unui avertisment care menționează titlul filtrului + form_admin_settings: + activity_api_enabled: Numărul de postări publicate local, utilizatori activi și înregistrări noi în grupe săptămânale + app_icon: WEBP, PNG, GIF sau JPG. Înlocuiește pictograma implicită a aplicației pe dispozitivele mobile cu o pictogramă personalizată. + backups_retention_period: Utilizatorii au posibilitatea de a genera arhive ale postărilor lor pentru a le descărca mai târziu. Când este setat la o valoare pozitivă, aceste arhive vor fi șterse automat din spațiul dvs. de stocare după numărul de zile specificat. + bootstrap_timeline_accounts: Aceste conturi vor fi fixate în partea de sus a recomandărilor de urmărire ale noilor utilizatori. + closed_registrations_message: Afișat când înscrierile sunt închise + content_cache_retention_period: Toate postările de pe alte servere (inclusiv amplificarea și răspunsurile) vor fi șterse după numărul specificat de zile, fără a ține cont de interacțiunea utilizatorului local cu acele postări. Aceasta include postările în care un utilizator local le-a marcat ca marcaje sau favorite. Mențiunile private între utilizatorii din diferite instanțe se vor pierde și vor fi imposibil de restaurat. Utilizarea acestei setări este destinată cazurilor cu scop special și încalcă multe așteptări ale utilizatorilor atunci când este implementată pentru uz general. + custom_css: Puteți aplica stiluri personalizate pe versiunea web a Mastodon. + favicon: WEBP, PNG, GIF sau JPG. Suprascrie favicon-ul implicit Mastodon cu o pictogramă personalizată. + mascot: Suprascrie ilustrația din interfața web avansată. + media_cache_retention_period: Fișierele media din postările făcute de utilizatorii la distanță sunt stocate în cache pe serverul dvs. Când este setată la o valoare pozitivă, fișierele media vor fi ștearse după numărul specificat de zile. Dacă datele media sunt solicitate după ce sunt șterse, acestea vor fi re-descărcate, dacă conținutul sursă este încă disponibil. Din cauza restricțiilor cu privire la frecvența cu care cardurile de previzualizare a linkurilor interogează site-urile terțelor părți, se recomandă să setați această valoare la cel puțin 14 zile, sau cardurile de previzualizare a linkurilor nu vor fi actualizate la cerere înainte de această oră. + peers_api_enabled: O listă de nume de domenii pe care acest server le-a întâlnit în fediverse. Nu sunt incluse aici date despre dacă vă federați cu un anumit server, doar că serverul dvs. știe despre asta. Acesta este folosit de serviciile care colectează statistici despre federație în sens general. + profile_directory: Directorul de profil listează toți utilizatorii care au optat pentru a fi descoperibili. + require_invite_text: Când înscrierile necesită aprobare manuală, faceți introducerea textului „De ce doriți să vă alăturați?” obligatorie și nu opțională + site_contact_email: Cum vă pot contacta oamenii pentru întrebări juridice sau de asistență. + site_contact_username: Cum vă pot contacta oamenii pe Mastodon. + site_extended_description: Orice informație suplimentară care poate fi utilă vizitatorilor și utilizatorilor dvs. Poate fi structurată cu sintaxa Markdown. + site_short_description: O descriere scurtă pentru a ajuta la identificarea unică a serverului dvs. Cine-l conduce, pentru cine este? + site_terms: Utilizați propria politică de confidențialitate sau lăsați necompletat pentru a o utiliza pe cea implicit. Poate fi structurată cu sintaxa Markdown. + site_title: Cum se pot referi oamenii la serverul dvs. în afară de numele său de domeniu. + status_page_url: URL-ul unei pagini unde oamenii pot vedea starea acestui server în timpul unei întreruperi + theme: Tema pe care vizitatorii deconectați și utilizatorii noi o văd. + thumbnail: O imagine de aproximativ 2:1 afișată alături de informațiile serverului dvs. + timeline_preview: Vizitatorii deconectați vor putea să răsfoiască cele mai recente postări publice disponibile pe server. + trendable_by_default: Omiteți revizuirea manuală a conținutului în tendințe. Elementele individuale pot fi în continuare eliminate din tendințe după fapt. + trends: Tendințele arată ce postări, hashtag-uri și știri câștigă teren pe serverul dvs. + trends_as_landing_page: Afișați conținut în tendințe utilizatorilor deconectați și vizitatorilor în loc de o descriere a acestui server. Necesită ca tendințele să fie activate. form_challenge: current_password: Ați intrat într-o zonă securizată imports: data: Fișierul CSV exportat de la o altă instanță invite_request: text: Acest lucru ne va ajuta să revizuim cererea dvs + ip_block: + comment: Opțional. Amintiți-vă de ce ați adăugat această regulă. + expires_in: Adresele IP sunt o resursă finită, uneori sunt partajate și adesea se schimbă. Din acest motiv, blocurile IP nedefinite nu sunt recomandate. + ip: Introduceți o adresă IPv4 sau IPv6. Puteți bloca întregul spectru folosind sintaxa CIDR. Aveți grijă să nu vă blocați! + severities: + no_access: Blocați accesul la toate resursele + sign_up_block: Nu vor fi posibile înscrieri noi + sign_up_requires_approval: Înscrierile noi vor necesita aprobarea dvs. + severity: Alegeți ce se va întâmpla cu cererile de la acestă adresă IP + rule: + hint: Opțional. Oferiți mai multe detalii despre regulă + text: Descrieți o regulă sau o cerință pentru utilizatorii de pe acest server. Încercați să o faceți scurtă și simplă sessions: otp: 'Introdu codul pentru dubla protecție generat de telefonul mobil sau unul din codurile de rezervă:' + webauthn: Dacă este o cheie USB, asigurați-vă că o introduceți și, dacă este necesar, atingeți-o. + settings: + indexable: Pagina dvs. de profil poate apărea în rezultatele căutării pe Google, Bing și altele. + show_application: Veți putea întotdeauna să vedeți ce aplicație v-a publicat postarea. tag: name: Poți doar să schimbi caseta literelor, de exemplu, pentru a o face mai lizibilă user: chosen_languages: Doar postările în limbile selectate vor fi afișate în fluxurile publice + role: Rolul controlează ce permisiuni are utilizatorul. + user_role: + color: Culoare care va fi folosită pentru rol în întreaga interfață, ca RGB în format hexazecimal labels: account: fields: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 37626ff9fd..d8822d35b9 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -10,7 +10,6 @@ ru: indexable: Ваши публичные сообщения могут появляться в результатах поиска на Mastodon. Люди, которые взаимодействовали с вашими сообщениями, могут искать их независимо от этого. note: 'Вы можете @упоминать других людей или #хэштеги.' show_collections: Люди смогут просматривать список ваших подписок и подписчиков. Люди, за которыми вы следуете, будут видеть, что вы подписаны на них, несмотря ни на что. - unlocked: Люди смогут подписываться на вас, не запрашивая подтверждения. Снимите флажок, если вы хотите просматривать запросы на подписку и выбирать, принимать или отклонять новых подписчиков. account_alias: acct: Укажите имя_пользователя@домен учётной записи, с которой вы собираетесь мигрировать account_migration: diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index d1ae553c8c..1f1867854e 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -9,7 +9,6 @@ sl: indexable: Vaše javne objave se lahko pojavijo v rezultatih iskanja na Mastodonu. Ljudje, ki so bili v interakciji z vašimi objavami, jih bodo lahko iskali ne glede na to. note: 'Druge osebe lahko @omenite ali #ključnite.' show_collections: Ljudje bodo lahko brskali po vaših sledilcih in sledenih. Ljudje, ki jim sledite, bodo videli, da jim sledite ne glede na to. - unlocked: Ljudje vam bodo lahko sledili, ne da bi zahtevali odobritev. Ne potrdite, če želite pregledati prošnje za sledenje, in izbirajte, ali želite nove sledilce sprejeti ali zavrniti. account_alias: acct: Določite uporabniškoime@domena računa, od katerega se želite preseliti account_migration: diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml index 1dec901340..fee7600074 100644 --- a/config/locales/simple_form.sr-Latn.yml +++ b/config/locales/simple_form.sr-Latn.yml @@ -9,7 +9,6 @@ sr-Latn: indexable: Vaše javne objave se mogu pojaviti u rezultatima pretrage na Mastodon-u. Ljudi koji su stupili u interakciju sa vašim objavama će možda moći da ih pretražuju. note: 'Možete da @pomenete druge ljude ili #heš oznake.' show_collections: Ljudi će moći da pregledaju vaše pratioce i pratioce. Ljudi koje pratite videće da ih pratite. - unlocked: Ljudi će moći da vas prate bez zahtevanja odobrenja. Opozovite izbor ako želite da pregledate zahteve za praćenje i izaberite da li da prihvatite ili odbijete nove pratioce. account_alias: acct: Navedite korisničko_ime@domen naloga sa kojeg želite da se preselite account_migration: diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml index 9566e09475..7161627e28 100644 --- a/config/locales/simple_form.sr.yml +++ b/config/locales/simple_form.sr.yml @@ -9,7 +9,6 @@ sr: indexable: Ваше јавне објаве се могу појавити у резултатима претраге на Mastodon-у. Људи који су ступили у интеракцију са вашим објавама ће можда моћи да их претражују. note: 'Можете да @поменете друге људе или #хеш ознаке.' show_collections: Људи ће моћи да прегледају ваше пратиоце и пратиоце. Људи које пратите видеће да их пратите. - unlocked: Људи ће моћи да вас прате без захтевања одобрења. Опозовите избор ако желите да прегледате захтеве за праћење и изаберите да ли да прихватите или одбијете нове пратиоце. account_alias: acct: Наведите корисничко_име@домен налога са којег желите да се преселите account_migration: diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 72c3f000f6..b8303e2945 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -10,7 +10,6 @@ sv: indexable: Dina offentliga inlägg kan visas i sökresultat på Mastodon. Personer som har interagerat med dina inlägg kan söka dem oavsett. note: 'Du kan @nämna andra personer eller #hashtaggar.' show_collections: Andra kan se vem du följer och vem som följer dig. De du följer kan alltid se att du följer dem. - unlocked: Andra kommer att kunna följa dig utan att begära godkännande. Avmarkera om du vill granska följeslagare och välja om du vill acceptera eller avvisa nya följare. account_alias: acct: Ange användarnamn@domän för kontot som du vill flytta från account_migration: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index f8f4d3f119..0ba54e26ce 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -10,7 +10,6 @@ th: indexable: โพสต์สาธารณะของคุณอาจปรากฏในผลลัพธ์การค้นหาใน Mastodon ผู้คนที่ได้โต้ตอบกับโพสต์ของคุณอาจสามารถค้นหาโพสต์เหล่านั้นได้ไม่ว่าอย่างไรก็ตาม note: 'คุณสามารถ @กล่าวถึง ผู้คนอื่น ๆ หรือ #แฮชแท็ก' show_collections: ผู้คนจะสามารถเรียกดูการติดตามและผู้ติดตามของคุณ ผู้คนที่คุณติดตามจะเห็นว่าคุณติดตามเขาไม่ว่าอย่างไรก็ตาม - unlocked: ผู้คนจะสามารถติดตามคุณได้โดยไม่ต้องขอการอนุมัติ เลิกกาเครื่องหมายหากคุณต้องการตรวจทานคำขอติดตามและเลือกว่าจะยอมรับหรือปฏิเสธผู้ติดตามใหม่ account_alias: acct: ระบุ username@domain ของบัญชีที่คุณต้องการย้ายจาก account_migration: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 6586c372ef..5f98d73be6 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -10,7 +10,7 @@ zh-CN: indexable: 您的公开嘟文会出现在 Mastodon 的搜索结果中。无论是否勾选,与您的嘟文有过交互的人都可能通过搜索找到它们。 note: '你可以提及 @其他人 或 #标签 。' show_collections: 人们将能够浏览您的关注和追随者。您关注的人会看到您关注他们。 - unlocked: 人们将能够在不请求批准的情况下关注你。如果你希望审核关注请求并选择接受或拒绝新的粉丝,请取消勾选此项。 + unlocked: 人们将能够在不请求批准的情况下关注你。如果你希望审核关注请求并选择接受或拒绝新的关注者,请取消勾选此项。 account_alias: acct: 指定你想要迁移过来的原账号:用户名@站点域名 account_migration: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index dd134a58fb..c77de84e4a 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -9,7 +9,6 @@ zh-HK: indexable: 你的公開帖文可能會出現在 Mastodon 的搜尋結果中。無論如何,與你帖文互動過的人都能搜尋到它。 note: '你可以 @提及他人 或使用 #主題標籤。' show_collections: 大家可瀏覽你追蹤的人和你的追蹤者。你追蹤的人無論如何都會看到你追蹤了他們。 - unlocked: 大家毋須獲得批准即可追蹤你。如果你想審核追蹤請求,來接受或拒絕新追蹤者,請取消勾選。 account_alias: acct: 指定欲移動之帳戶的「使用者名稱@域名」 account_migration: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 980eff1aa5..6cff74fb50 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -645,6 +645,7 @@ sq: report: 'Raportim #%{id}' reported_account: Llogari e raportuar reported_by: Raportuar nga + reported_with_application: Raportuar me aplikacion resolved: I zgjidhur resolved_msg: Raportimi u zgjidh me sukses! skip_to_actions: Kaloni te veprimet diff --git a/config/locales/sv.yml b/config/locales/sv.yml index bd33e837bd..b2ec21b82e 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -60,10 +60,10 @@ sv: deleted: Raderad demote: Degradera destroyed_msg: "%{username}s data har nu lagts till kön för att raderas omedelbart" - disable: inaktivera + disable: Inaktivera disable_sign_in_token_auth: Inaktivera autentisering med pollett via e-post disable_two_factor_authentication: Inaktivera 2FA - disabled: inaktiverad + disabled: Inaktiverad display_name: Visningsnamn domain: Domän edit: Redigera @@ -142,7 +142,7 @@ sv: only_password: Endast lösenord password_and_2fa: Lösenord och 2FA sensitive: Känsligt - sensitized: markerad som känsligt + sensitized: Markerad som känsligt shared_inbox_url: Delad inkorg URL show: created_reports: Anmälningar som skapats av det här kontot @@ -836,7 +836,7 @@ sv: title: Kontoinlägg trending: Trendande visibility: Synlighet - with_media: med media + with_media: Med media strikes: actions: delete_statuses: "%{name} raderade %{target}s inlägg" @@ -1494,7 +1494,7 @@ sv: not_ready: Kan inte bifoga filer som inte har behandlats färdigt. Försök igen om ett ögonblick! too_many: Det går inte att bifoga mer än 4 filer migrations: - acct: användarnamn@domän av det nya kontot + acct: Flyttad till cancel: Avbryt omdirigering cancel_explanation: Avstängning av omdirigeringen kommer att återaktivera ditt nuvarande konto, men kommer inte att återskapa följare som har flyttats till det kontot. cancelled_msg: Avbröt omdirigeringen. @@ -1703,7 +1703,7 @@ sv: ios: iOS kai_os: KaiOS linux: Linux - mac: Mac + mac: macOS unknown_platform: Okänd plattform windows: Windows windows_mobile: Windows Mobile @@ -1879,7 +1879,7 @@ sv: subject: Andra faktorns autentiseringsfel title: Misslyckad tvåfaktorsautentisering suspicious_sign_in: - change_password: Ändra ditt lösenord + change_password: ändra ditt lösenord details: 'Här är inloggningsdetaljerna:' explanation: Vi har upptäckt en inloggning till ditt konto från en ny IP-adress. further_actions_html: Om detta inte var du, rekommenderar vi att du snarast %{action} och aktiverar tvåfaktorsautentisering för att hålla ditt konto säkert. From e97f4b18ad5abcb992c6027fefd66b7dcc5b7268 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 12 Nov 2024 09:54:18 +0100 Subject: [PATCH 357/550] Update changelog and docker tags to v4.3.1 (#32849) --- CHANGELOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 6 +++--- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fc5291d72..0696f0b31c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,48 @@ All notable changes to this project will be documented in this file. +## [4.3.1] - 2024-10-21 + +### Added + +- Add more explicit explanations about author attribution and `fediverse:creator` (#32383 by @ClearlyClaire) +- Add ability to group follow notifications in WebUI, can be disabled in the column settings (#32520 by @renchap) +- Add back a 6 hours mute duration option (#32522 by @renchap) +- Add note about not changing ActiveRecord encryption secrets once they are set (#32413, #32476, #32512, and #32537 by @ClearlyClaire and @mjankowski) + +### Changed + +- Change translation feature to translate to selected regional variant (e.g. pt-BR) if available (#32428 by @c960657) + +### Removed + +- Remove ability to get embed code for remote posts (#32578 by @ClearlyClaire)\ + Getting the embed code is only reliable for local posts.\ + It never worked for non-Mastodon servers, and stopped working correctly with the changes made in 4.3.0.\ + We have therefore decided to remove the menu entry while we investigate solutions. + +### Fixed + +- Fix follow recommendation moderation page default language when using regional variant (#32580 by @ClearlyClaire) +- Fix column-settings spacing in local timeline in advanced view (#32567 by @lindwurm) +- Fix broken i18n in text welcome mailer tags area (#32571 by @mjankowski) +- Fix missing or incorrect cache-control headers for Streaming server (#32551 by @ThisIsMissEm) +- Fix only the first paragraph being displayed in some notifications (#32348 by @ClearlyClaire) +- Fix reblog icons on account media view (#32506 by @tribela) +- Fix Content-Security-Policy not allowing OpenStack SWIFT object storage URI (#32439 by @kenkiku1021) +- Fix back arrow pointing to the incorrect direction in RTL languages (#32485 by @renchap) +- Fix streaming server using `REDIS_USERNAME` instead of `REDIS_USER` (#32493 by @ThisIsMissEm) +- Fix follow recommendation carrousel scrolling on RTL layouts (#32462 and #32505 by @ClearlyClaire) +- Fix follow recommendation suppressions not applying immediately (#32392 by @ClearlyClaire) +- Fix language of push notifications (#32415 by @ClearlyClaire) +- Fix mute duration not being shown in list of muted accounts in web UI (#32388 by @ClearlyClaire) +- Fix “Mark every notification as read” not updating the read marker if scrolled down (#32385 by @ClearlyClaire) +- Fix “Mention” appearing for otherwise filtered posts (#32356 by @ClearlyClaire) +- Fix notification requests from suspended accounts still being listed (#32354 by @ClearlyClaire) +- Fix list edition modal styling (#32358 and #32367 by @ClearlyClaire and @vmstan) +- Fix 4 columns barely not fitting on 1920px screen (#32361 by @ClearlyClaire) +- Fix icon alignment in applications list (#32293 by @mjankowski) + ## [4.3.0] - 2024-10-08 The following changelog entries focus on changes visible to users, administrators, client developers or federated software developers, but there has also been a lot of code modernization, refactoring, and tooling work, in particular by @mjankowski. diff --git a/docker-compose.yml b/docker-compose.yml index 37cb16497f..6018b85a70 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: web: # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # build: . - image: ghcr.io/mastodon/mastodon:v4.3.0 + image: ghcr.io/mastodon/mastodon:v4.3.1 restart: always env_file: .env.production command: bundle exec puma -C config/puma.rb @@ -83,7 +83,7 @@ services: # build: # dockerfile: ./streaming/Dockerfile # context: . - image: ghcr.io/mastodon/mastodon-streaming:v4.3.0 + image: ghcr.io/mastodon/mastodon-streaming:v4.3.1 restart: always env_file: .env.production command: node ./streaming/index.js @@ -101,7 +101,7 @@ services: sidekiq: build: . - image: ghcr.io/mastodon/mastodon:v4.3.0 + image: ghcr.io/mastodon/mastodon:v4.3.1 restart: always env_file: .env.production command: bundle exec sidekiq From bf609090b1b9c0649fdcb51b5acb3453deef84ca Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 12 Nov 2024 09:55:17 +0100 Subject: [PATCH 358/550] Fix: prevent linking to pages which require extra permissions (#32843) --- app/views/admin/dashboard/index.html.haml | 8 ++++---- app/views/admin/instances/_dashboard.html.haml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 2b4d02fa67..c3b7933293 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -16,7 +16,7 @@ .dashboard__item = react_admin_component :counter, end_at: @time_period.last, - href: admin_accounts_path(origin: 'local'), + href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil, label: t('admin.dashboard.new_users'), measure: 'new_users', start_at: @time_period.first @@ -24,7 +24,7 @@ .dashboard__item = react_admin_component :counter, end_at: @time_period.last, - href: admin_accounts_path(origin: 'local'), + href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'local') : nil, label: t('admin.dashboard.active_users'), measure: 'active_users', start_at: @time_period.first @@ -39,7 +39,7 @@ .dashboard__item = react_admin_component :counter, end_at: @time_period.last, - href: admin_reports_path, + href: current_user.can?(:manage_reports) ? admin_reports_path : nil, label: t('admin.dashboard.opened_reports'), measure: 'opened_reports', start_at: @time_period.first @@ -47,7 +47,7 @@ .dashboard__item = react_admin_component :counter, end_at: @time_period.last, - href: admin_reports_path(resolved: '1'), + href: current_user.can?(:manage_reports) ? admin_reports_path(resolved: '1') : nil, label: t('admin.dashboard.resolved_reports'), measure: 'resolved_reports', start_at: @time_period.first diff --git a/app/views/admin/instances/_dashboard.html.haml b/app/views/admin/instances/_dashboard.html.haml index ef8500103b..16dcb051a2 100644 --- a/app/views/admin/instances/_dashboard.html.haml +++ b/app/views/admin/instances/_dashboard.html.haml @@ -7,7 +7,7 @@ .dashboard__item = react_admin_component :counter, end_at: period_end_at, - href: admin_accounts_path(origin: 'remote', by_domain: instance_domain), + href: current_user.can?(:manage_users) ? admin_accounts_path(origin: 'remote', by_domain: instance_domain) : nil, label: t('admin.instances.dashboard.instance_accounts_measure'), measure: 'instance_accounts', params: { domain: instance_domain }, @@ -43,7 +43,7 @@ .dashboard__item = react_admin_component :counter, end_at: period_end_at, - href: admin_reports_path(by_target_domain: instance_domain), + href: current_user.can?(:manage_reports) ? admin_reports_path(by_target_domain: instance_domain) : nil, label: t('admin.instances.dashboard.instance_reports_measure'), measure: 'instance_reports', params: { domain: instance_domain }, From 897cb1803e14a4e0eafec44de7ffe37d7a0d2a28 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 03:56:04 -0500 Subject: [PATCH 359/550] Run `bin/rails db:schema:dump` under Rails 7.2 (#32838) --- db/schema.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index ec029366a5..30b16a8a82 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_11_04_082851) do +ActiveRecord::Schema[7.2].define(version: 2024_11_04_082851) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -261,10 +261,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_11_04_082851) do end create_table "annual_report_statuses_per_account_counts", force: :cascade do |t| - t.integer "year", null: false - t.bigint "account_id", null: false - t.bigint "statuses_count", null: false - t.index ["year", "account_id"], name: "idx_on_year_account_id_ff3e167cef", unique: true + t.integer "year", null: false + t.bigint "account_id", null: false + t.bigint "statuses_count", null: false + t.index ["year", "account_id"], name: "idx_on_year_account_id_ff3e167cef", unique: true end create_table "appeals", force: :cascade do |t| From 5d9dde3ec04ecd17baa8e6a352599725bd21c3ae Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 03:57:06 -0500 Subject: [PATCH 360/550] Add age/expiry duration constants to `BulkImport` class (#32839) --- app/lib/vacuum/imports_vacuum.rb | 10 ++++++-- app/models/bulk_import.rb | 6 +++++ spec/models/bulk_import_spec.rb | 42 ++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 spec/models/bulk_import_spec.rb diff --git a/app/lib/vacuum/imports_vacuum.rb b/app/lib/vacuum/imports_vacuum.rb index b67865194f..7f101c4506 100644 --- a/app/lib/vacuum/imports_vacuum.rb +++ b/app/lib/vacuum/imports_vacuum.rb @@ -9,10 +9,16 @@ class Vacuum::ImportsVacuum private def clean_unconfirmed_imports! - BulkImport.state_unconfirmed.where(created_at: ..10.minutes.ago).in_batches.delete_all + BulkImport + .confirmation_missed + .in_batches + .delete_all end def clean_old_imports! - BulkImport.where(created_at: ..1.week.ago).in_batches.delete_all + BulkImport + .archival_completed + .in_batches + .delete_all end end diff --git a/app/models/bulk_import.rb b/app/models/bulk_import.rb index 9b3f4c8a3a..e3e46d7b1c 100644 --- a/app/models/bulk_import.rb +++ b/app/models/bulk_import.rb @@ -21,6 +21,9 @@ class BulkImport < ApplicationRecord self.inheritance_column = false + ARCHIVE_PERIOD = 1.week + CONFIRM_PERIOD = 10.minutes + belongs_to :account has_many :rows, class_name: 'BulkImportRow', inverse_of: :bulk_import, dependent: :delete_all @@ -42,6 +45,9 @@ class BulkImport < ApplicationRecord validates :type, presence: true + scope :archival_completed, -> { where(created_at: ..ARCHIVE_PERIOD.ago) } + scope :confirmation_missed, -> { state_unconfirmed.where(created_at: ..CONFIRM_PERIOD.ago) } + def self.progress!(bulk_import_id, imported: false) # Use `increment_counter` so that the incrementation is done atomically in the database BulkImport.increment_counter(:processed_items, bulk_import_id) diff --git a/spec/models/bulk_import_spec.rb b/spec/models/bulk_import_spec.rb new file mode 100644 index 0000000000..a3bd01d2a8 --- /dev/null +++ b/spec/models/bulk_import_spec.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe BulkImport do + describe 'Associations' do + it { is_expected.to belong_to(:account).required } + it { is_expected.to have_many(:rows).class_name('BulkImportRow').inverse_of(:bulk_import).dependent(:delete_all) } + end + + describe 'Validations' do + subject { Fabricate.build :bulk_import } + + it { is_expected.to validate_presence_of(:type) } + end + + describe 'Scopes' do + describe '.archival_completed' do + let!(:old_import) { Fabricate :bulk_import, created_at: 1.month.ago } + let!(:new_import) { Fabricate :bulk_import, created_at: 1.day.ago } + + it 'returns imports which have passed the archive window period' do + expect(described_class.archival_completed) + .to include(old_import) + .and not_include(new_import) + end + end + + describe '.confirmation_missed' do + let!(:old_unconfirmed_import) { Fabricate :bulk_import, created_at: 1.week.ago, state: :unconfirmed } + let!(:old_scheduled_import) { Fabricate :bulk_import, created_at: 1.week.ago, state: :scheduled } + let!(:new_unconfirmed_import) { Fabricate :bulk_import, created_at: 1.minute.ago, state: :unconfirmed } + + it 'returns imports which have passed the confirmation window without confirming' do + expect(described_class.confirmation_missed) + .to include(old_unconfirmed_import) + .and not_include(old_scheduled_import) + .and not_include(new_unconfirmed_import) + end + end + end +end From f8e96e761b8de0d9a0c9ad3664a00225e3984065 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:09:53 +0100 Subject: [PATCH 361/550] Update dependency strong_migrations to v2.1.0 (#32810) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 64abf4d77a..743a78ad54 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -117,7 +117,7 @@ GEM base64 (0.2.0) bcp47_spec (0.2.1) bcrypt (3.1.20) - benchmark (0.3.0) + benchmark (0.4.0) better_errors (2.10.1) erubi (>= 1.0.0) rack (>= 0.9.0) @@ -753,7 +753,7 @@ GEM scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - securerandom (0.3.1) + securerandom (0.3.2) selenium-webdriver (4.26.0) base64 (~> 0.2) logger (~> 1.4) @@ -795,7 +795,7 @@ GEM stoplight (4.1.0) redlock (~> 1.0) stringio (3.1.1) - strong_migrations (2.0.2) + strong_migrations (2.1.0) activerecord (>= 6.1) swd (1.3.0) activesupport (>= 3) @@ -810,7 +810,7 @@ GEM test-prof (1.4.2) thor (1.3.2) tilt (2.4.0) - timeout (0.4.1) + timeout (0.4.2) tpm-key_attestation (0.12.1) bindata (~> 2.4) openssl (> 2.0) From 32e5e1d3f166062e4939b3fbf25dff5657417893 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 12 Nov 2024 13:35:35 +0100 Subject: [PATCH 362/550] Fix a few visual issues with annual reports in web UI (#32807) --- .../features/annual_report/most_used_hashtag.tsx | 15 ++++++++------- .../features/annual_report/percentile.tsx | 4 ++-- app/javascript/mastodon/locales/en.json | 1 + app/javascript/styles/mastodon-light/diff.scss | 7 +++++++ .../styles/mastodon/annual_reports.scss | 9 +++++++-- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx b/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx index 0e4c78f639..4b59b89737 100644 --- a/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx +++ b/app/javascript/mastodon/features/annual_report/most_used_hashtag.tsx @@ -7,16 +7,17 @@ export const MostUsedHashtag: React.FC<{ }> = ({ data }) => { const hashtag = data[0]; - if (!hashtag) { - return ( -
- ); - } - return (
- #{hashtag.name} + {hashtag ? ( + <>#{hashtag.name} + ) : ( + + )}
(
), diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 5bc8c4ad71..9728528f8e 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}'s", "annual_report.summary.most_used_app.most_used_app": "most used app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag", + "annual_report.summary.most_used_hashtag.none": "None", "annual_report.summary.new_posts.new_posts": "new posts", "annual_report.summary.percentile.text": "That puts you in the topof Mastodon users.", "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.", diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 45da56994c..3d4539bb9d 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -535,3 +535,10 @@ a.sparkline { ::-webkit-scrollbar-thumb { opacity: 0.25; } + +.notification-group--annual-report { + .notification-group__icon, + .notification-group__main .link-button { + color: var(--indigo-3); + } +} diff --git a/app/javascript/styles/mastodon/annual_reports.scss b/app/javascript/styles/mastodon/annual_reports.scss index 39784e3b5e..dff1c76eca 100644 --- a/app/javascript/styles/mastodon/annual_reports.scss +++ b/app/javascript/styles/mastodon/annual_reports.scss @@ -103,6 +103,11 @@ background-color: var(--goldenrod-2); } } + + .status-card, + .hashtag-bar { + display: none; + } } &__followers { @@ -237,7 +242,7 @@ } &__number { - font-size: 61px; + font-size: 54px; font-weight: 600; line-height: 73px; color: var(--goldenrod-2); @@ -306,7 +311,7 @@ } .annual-report-modal { - max-width: 480px; + max-width: 600px; background: var(--indigo-1); border-radius: 16px; display: flex; From f5f6273d2badd896cb6ca39ccdd645c339354fa2 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 12 Nov 2024 14:00:52 +0100 Subject: [PATCH 363/550] Move `ALLOWED_PRIVATE_ADDRESSES` parsing to an initializer (#32850) --- app/lib/request.rb | 6 +----- config/initializers/allowed_private_addresses.rb | 5 +++++ 2 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 config/initializers/allowed_private_addresses.rb diff --git a/app/lib/request.rb b/app/lib/request.rb index d7da9fe63c..a12e6e3747 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -334,14 +334,10 @@ class Request def check_private_address(address, host) addr = IPAddr.new(address.to_s) - return if Rails.env.development? || private_address_exceptions.any? { |range| range.include?(addr) } + return if Rails.env.development? || Rails.configuration.x.private_address_exceptions.any? { |range| range.include?(addr) } raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr) end - - def private_address_exceptions - @private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) } - end end end diff --git a/config/initializers/allowed_private_addresses.rb b/config/initializers/allowed_private_addresses.rb new file mode 100644 index 0000000000..65c7af03b4 --- /dev/null +++ b/config/initializers/allowed_private_addresses.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +Rails.application.configure do + config.x.private_address_exceptions = (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(/(?:\s*,\s*|\s+)/).map { |addr| IPAddr.new(addr) } +end From 884bbf7ae239a9b07055e1a7d0238b213c2c8520 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 10:43:55 -0500 Subject: [PATCH 364/550] Prepare the way for banning a bunch of usernames (#32856) --- spec/lib/feed_manager_spec.rb | 16 ++++++++-------- .../models/concerns/account/interactions_spec.rb | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 1d70499674..afb007af42 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -343,16 +343,16 @@ RSpec.describe FeedManager do end describe '#push_to_list' do - let(:owner) { Fabricate(:account, username: 'owner') } + let(:list_owner) { Fabricate(:account, username: 'list_owner') } let(:alice) { Fabricate(:account, username: 'alice') } let(:bob) { Fabricate(:account, username: 'bob') } let(:eve) { Fabricate(:account, username: 'eve') } - let(:list) { Fabricate(:list, account: owner) } + let(:list) { Fabricate(:list, account: list_owner) } before do - owner.follow!(alice) - owner.follow!(bob) - owner.follow!(eve) + list_owner.follow!(alice) + list_owner.follow!(bob) + list_owner.follow!(eve) list.accounts << alice list.accounts << bob @@ -377,7 +377,7 @@ RSpec.describe FeedManager do end it 'pushes statuses that are replies to list owner' do - status = Fabricate(:status, text: 'Hello world', account: owner) + status = Fabricate(:status, text: 'Hello world', account: list_owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) expect(subject.push_to_list(list, reply)).to be true end @@ -400,7 +400,7 @@ RSpec.describe FeedManager do end it 'pushes statuses that are replies to list owner' do - status = Fabricate(:status, text: 'Hello world', account: owner) + status = Fabricate(:status, text: 'Hello world', account: list_owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) expect(subject.push_to_list(list, reply)).to be true end @@ -429,7 +429,7 @@ RSpec.describe FeedManager do end it 'pushes statuses that are replies to list owner' do - status = Fabricate(:status, text: 'Hello world', account: owner) + status = Fabricate(:status, text: 'Hello world', account: list_owner) reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) expect(subject.push_to_list(list, reply)).to be true end diff --git a/spec/models/concerns/account/interactions_spec.rb b/spec/models/concerns/account/interactions_spec.rb index 4868054df7..f7ec3a3912 100644 --- a/spec/models/concerns/account/interactions_spec.rb +++ b/spec/models/concerns/account/interactions_spec.rb @@ -3,10 +3,10 @@ require 'rails_helper' RSpec.describe Account::Interactions do - let(:account) { Fabricate(:account, username: 'account') } + let(:account) { Fabricate(:account) } let(:account_id) { account.id } let(:account_ids) { [account_id] } - let(:target_account) { Fabricate(:account, username: 'target') } + let(:target_account) { Fabricate(:account) } let(:target_account_id) { target_account.id } let(:target_account_ids) { [target_account_id] } From ace426830879b9f4f34fe80430be4ac3235f8c01 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 12 Nov 2024 12:27:23 -0500 Subject: [PATCH 365/550] Remove unused `api/v1/polls#create` route (#32860) --- config/routes/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes/api.rb b/config/routes/api.rb index 95fdf332a0..86e41a2abe 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -225,7 +225,7 @@ namespace :api, format: false do resources :featured_tags, only: [:index, :create, :destroy] - resources :polls, only: [:create, :show] do + resources :polls, only: [:show] do resources :votes, only: :create, module: :polls end From 2bd56f726a99472b722f9ffafc7c2e4c6ea57350 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 12 Nov 2024 23:06:13 +0100 Subject: [PATCH 366/550] Add client_secret_expires_at to OAuth Applications (#30317) --- app/serializers/rest/credential_application_serializer.rb | 8 +++++++- spec/requests/api/v1/apps/credentials_spec.rb | 1 + spec/requests/api/v1/apps_spec.rb | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/credential_application_serializer.rb b/app/serializers/rest/credential_application_serializer.rb index bfec7d03e8..0532390c9a 100644 --- a/app/serializers/rest/credential_application_serializer.rb +++ b/app/serializers/rest/credential_application_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::CredentialApplicationSerializer < REST::ApplicationSerializer - attributes :client_id, :client_secret + attributes :client_id, :client_secret, :client_secret_expires_at def client_id object.uid @@ -10,4 +10,10 @@ class REST::CredentialApplicationSerializer < REST::ApplicationSerializer def client_secret object.secret end + + # Added for future forwards compatibility when we may decide to expire OAuth + # Applications. Set to zero means that the client_secret never expires. + def client_secret_expires_at + 0 + end end diff --git a/spec/requests/api/v1/apps/credentials_spec.rb b/spec/requests/api/v1/apps/credentials_spec.rb index 8e5fa14b7e..3aca53ed0a 100644 --- a/spec/requests/api/v1/apps/credentials_spec.rb +++ b/spec/requests/api/v1/apps/credentials_spec.rb @@ -44,6 +44,7 @@ RSpec.describe 'Credentials' do expect(response.parsed_body) .to not_include(client_id: be_present) .and not_include(client_secret: be_present) + .and not_include(client_secret_expires_at: be_present) end end diff --git a/spec/requests/api/v1/apps_spec.rb b/spec/requests/api/v1/apps_spec.rb index cf43e14d62..4e9147ba32 100644 --- a/spec/requests/api/v1/apps_spec.rb +++ b/spec/requests/api/v1/apps_spec.rb @@ -42,6 +42,7 @@ RSpec.describe 'Apps' do id: app.id.to_s, client_id: app.uid, client_secret: app.secret, + client_secret_expires_at: 0, name: client_name, website: website, scopes: ['read', 'write'], From a6d829e86fb228be6a8ed8f19b2276e07d5a89e2 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 13 Nov 2024 03:39:58 -0500 Subject: [PATCH 367/550] Fix error in CLI EmailDomainBlocks when supplying `--with-dns-records` (#32863) --- lib/mastodon/cli/email_domain_blocks.rb | 2 +- .../lib/mastodon/cli/email_domain_blocks_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/mastodon/cli/email_domain_blocks.rb b/lib/mastodon/cli/email_domain_blocks.rb index 7b2da8ef9f..a830ca3661 100644 --- a/lib/mastodon/cli/email_domain_blocks.rb +++ b/lib/mastodon/cli/email_domain_blocks.rb @@ -48,7 +48,7 @@ module Mastodon::CLI if options[:with_dns_records] Resolv::DNS.open do |dns| dns.timeouts = 5 - other_domains = dns.getresources(@email_domain_block.domain, Resolv::DNS::Resource::IN::MX).to_a + other_domains = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank end end diff --git a/spec/lib/mastodon/cli/email_domain_blocks_spec.rb b/spec/lib/mastodon/cli/email_domain_blocks_spec.rb index a5fbd23e65..6ce1a7c5f3 100644 --- a/spec/lib/mastodon/cli/email_domain_blocks_spec.rb +++ b/spec/lib/mastodon/cli/email_domain_blocks_spec.rb @@ -63,6 +63,22 @@ RSpec.describe Mastodon::CLI::EmailDomainBlocks do .and(change(EmailDomainBlock, :count).by(1)) end end + + context 'with --with-dns-records true' do + let(:domain) { 'host.example' } + let(:arguments) { [domain] } + let(:options) { { with_dns_records: true } } + + before do + configure_mx(domain: domain, exchange: 'other.host') + end + + it 'adds a new block for parent and children' do + expect { subject } + .to output_results('Added 2') + .and(change(EmailDomainBlock, :count).by(2)) + end + end end describe '#remove' do From baad7953849307fa4a6bcdd878b9b2207226352d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:33:02 +0100 Subject: [PATCH 368/550] New Crowdin Translations (automated) (#32868) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ca.json | 1 + app/javascript/mastodon/locales/da.json | 1 + app/javascript/mastodon/locales/de.json | 1 + app/javascript/mastodon/locales/eo.json | 11 ++-- app/javascript/mastodon/locales/es-AR.json | 1 + app/javascript/mastodon/locales/es-MX.json | 5 +- app/javascript/mastodon/locales/es.json | 1 + app/javascript/mastodon/locales/fi.json | 13 +++++ app/javascript/mastodon/locales/fo.json | 1 + app/javascript/mastodon/locales/gl.json | 8 +++ app/javascript/mastodon/locales/hu.json | 1 + app/javascript/mastodon/locales/is.json | 1 + app/javascript/mastodon/locales/ko.json | 1 + app/javascript/mastodon/locales/nl.json | 1 + app/javascript/mastodon/locales/nn.json | 22 +++++++ app/javascript/mastodon/locales/pt-BR.json | 1 + app/javascript/mastodon/locales/ru.json | 4 ++ app/javascript/mastodon/locales/sq.json | 1 + app/javascript/mastodon/locales/sv.json | 1 + app/javascript/mastodon/locales/tr.json | 1 + app/javascript/mastodon/locales/uk.json | 1 + app/javascript/mastodon/locales/vi.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 1 + config/locales/ca.yml | 8 +++ config/locales/da.yml | 8 +++ config/locales/de.yml | 8 +++ config/locales/fi.yml | 10 +++- config/locales/fo.yml | 8 +++ config/locales/gl.yml | 8 +++ config/locales/hu.yml | 8 +++ config/locales/is.yml | 8 +++ config/locales/ko.yml | 8 +++ config/locales/lt.yml | 8 +++ config/locales/nn.yml | 11 ++++ config/locales/pt-BR.yml | 16 ++++- config/locales/ru.yml | 68 ++++++++++++---------- config/locales/simple_form.ko.yml | 2 +- config/locales/simple_form.lt.yml | 1 + config/locales/simple_form.nl.yml | 2 +- config/locales/simple_form.nn.yml | 1 + config/locales/simple_form.pl.yml | 1 + config/locales/simple_form.ru.yml | 1 + config/locales/simple_form.sv.yml | 1 + config/locales/sq.yml | 8 +++ config/locales/sv.yml | 16 +++-- config/locales/tr.yml | 8 +++ config/locales/vi.yml | 8 +++ config/locales/zh-CN.yml | 8 +++ config/locales/zh-TW.yml | 10 +++- 50 files changed, 278 insertions(+), 47 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 160a74af4f..53bfc4474c 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -97,6 +97,7 @@ "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "l'aplicació més utilitzada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "l'etiqueta més utilitzada", + "annual_report.summary.most_used_hashtag.none": "Cap", "annual_report.summary.new_posts.new_posts": "publicacions noves", "annual_report.summary.thanks": "Gràcies per formar part de Mastodon!", "attachments_list.unprocessed": "(sense processar)", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 927d0a7cb8..4ba1f4d9e1 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}s", "annual_report.summary.most_used_app.most_used_app": "mest benyttede app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag", + "annual_report.summary.most_used_hashtag.none": "Intet", "annual_report.summary.new_posts.new_posts": "nye indlæg", "annual_report.summary.percentile.text": "Det betyder, at man er i topaf Mastodon-brugere.", "annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til Bernie.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index e7679a363c..bd24ccd48f 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "am häufigsten verwendete App", "annual_report.summary.most_used_hashtag.most_used_hashtag": "am häufigsten verwendeter Hashtag", + "annual_report.summary.most_used_hashtag.none": "Kein", "annual_report.summary.new_posts.new_posts": "neue Beiträge", "annual_report.summary.percentile.text": "Damit gehörst du zu den oberstender Mastodon-Nutzer*innen.", "annual_report.summary.percentile.we_wont_tell_bernie": "Wir werden Bernie nichts verraten.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 757bb39866..731e11f27a 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -90,6 +90,7 @@ "annual_report.summary.archetype.replier": "La plej societema", "annual_report.summary.followers.followers": "sekvantoj", "annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj", + "annual_report.summary.most_used_hashtag.none": "Nenio", "annual_report.summary.new_posts.new_posts": "novaj afiŝoj", "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", "attachments_list.unprocessed": "(neprilaborita)", @@ -219,7 +220,7 @@ "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.", "dismissable_banner.dismiss": "Eksigi", "dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.", - "dismissable_banner.explore_statuses": "Ĉi tiuj estas afiŝoj de la tuta socia reto, kiuj populariĝas hodiaŭ. Pli novaj afiŝoj kun pli da diskonigoj kaj plej ŝatataj estas rangigitaj pli alte.", + "dismissable_banner.explore_statuses": "Jen afiŝoj en la socia reto kiuj populariĝis hodiaŭ. Novaj afiŝoj kun pli da diskonigoj kaj stelumoj aperas pli alte.", "dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.", "dismissable_banner.public_timeline": "Ĉi tiuj estas la plej lastatempaj publikaj afiŝoj de homoj en la socia reto, kiujn homoj sur {domain} sekvas.", "domain_block_modal.block": "Bloki servilon", @@ -646,7 +647,7 @@ "onboarding.start.lead": "Vi nun estas parto de Mastodon, unika, malcentralizita socia amaskomunikilara platformo, kie vi—ne algoritmo—zorgas vian propran sperton. Ni komencu vin sur ĉi tiu nova socia limo:", "onboarding.start.skip": "Ĉu vi ne bezonas helpon por komenci?", "onboarding.start.title": "Vi atingas ĝin!", - "onboarding.steps.follow_people.body": "Sekvi interesajn homojn estas pri kio Mastodonto temas.", + "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", "onboarding.steps.follow_people.title": "Agordu vian hejman fluon", "onboarding.steps.publish_status.body": "Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj {emoji}", "onboarding.steps.publish_status.title": "Fari vian unuan afiŝon", @@ -780,9 +781,9 @@ "server_banner.is_one_of_many": "{domain} estas unu el la multaj sendependaj Mastodon-serviloj, kiujn vi povas uzi por partopreni en la fediverso.", "server_banner.server_stats": "Statistikoj de la servilo:", "sign_in_banner.create_account": "Krei konton", - "sign_in_banner.follow_anyone": "Sekvi iun ajn tra la fediverso kaj vidi ĉion en kronologia ordo. Neniuj algoritmoj, reklamoj aŭ klakbetoj videblas.", - "sign_in_banner.mastodon_is": "Mastodonto estas la plej bona maniero por resti flank-al-flanke kun kio okazas.", - "sign_in_banner.sign_in": "Saluti", + "sign_in_banner.follow_anyone": "Sekvu iun ajn tra la fediverso kaj vidu ĉion laŭ templinio. Nul algoritmo, reklamo aŭ kliklogilo ĉeestas.", + "sign_in_banner.mastodon_is": "Mastodon estas la plej bona maniero resti ĝisdata pri aktualaĵoj.", + "sign_in_banner.sign_in": "Ensaluti", "sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi", "status.admin_account": "Malfermi fasadon de moderigado por @{name}", "status.admin_domain": "Malfermu moderigan interfacon por {domain}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 9dc7b0d6c0..406c526983 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "la aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiqueta más usada", + "annual_report.summary.most_used_hashtag.none": "Ninguna", "annual_report.summary.new_posts.new_posts": "nuevos mensajes", "annual_report.summary.percentile.text": "Eso te pone en la cimade los usuarios de Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 4faa35e5c8..63dc31c6df 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -89,9 +89,9 @@ "announcement.announcement": "Anuncio", "annual_report.summary.archetype.booster": "El cazador de tendencias", "annual_report.summary.archetype.lurker": "El acechador", - "annual_report.summary.archetype.oracle": "El oráculo", + "annual_report.summary.archetype.oracle": "El oraculo", "annual_report.summary.archetype.pollster": "El encuestador", - "annual_report.summary.archetype.replier": "El más sociable", + "annual_report.summary.archetype.replier": "La mariposa sociable", "annual_report.summary.followers.followers": "seguidores", "annual_report.summary.followers.total": "{count} en total", "annual_report.summary.here_it_is": "Aquí está tu resumen de {year}:", @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", + "annual_report.summary.most_used_hashtag.none": "Ninguna", "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index d14b718016..258b19f411 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "aplicación más usada", "annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada", + "annual_report.summary.most_used_hashtag.none": "Ninguna", "annual_report.summary.new_posts.new_posts": "nuevas publicaciones", "annual_report.summary.percentile.text": "Eso te pone en el topde usuarios de Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "No se lo diremos a Bernie.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 32069b1a03..2763c39168 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -87,10 +87,22 @@ "alert.unexpected.title": "Hups!", "alt_text_badge.title": "Vaihtoehtoinen teksti", "announcement.announcement": "Tiedote", + "annual_report.summary.archetype.booster": "Tehostaja", + "annual_report.summary.archetype.lurker": "Lymyilijä", + "annual_report.summary.archetype.oracle": "Oraakkeli", + "annual_report.summary.archetype.pollster": "Mielipidetutkija", "annual_report.summary.archetype.replier": "Sosiaalinen perhonen", + "annual_report.summary.followers.followers": "seuraajaa", + "annual_report.summary.followers.total": "{count} yhteensä", + "annual_report.summary.here_it_is": "Tässä on katsaus vuoteesi {year}:", + "annual_report.summary.highlighted_post.by_favourites": "suosikkeihin lisätyin julkaisu", "annual_report.summary.highlighted_post.by_reblogs": "tehostetuin julkaisu", + "annual_report.summary.highlighted_post.by_replies": "julkaisu, jolla on eniten vastauksia", + "annual_report.summary.highlighted_post.possessive": "Käyttäjän {name}", "annual_report.summary.most_used_app.most_used_app": "käytetyin sovellus", "annual_report.summary.most_used_hashtag.most_used_hashtag": "käytetyin aihetunniste", + "annual_report.summary.new_posts.new_posts": "uutta julkaisua", + "annual_report.summary.percentile.text": "Olet osa huippujoukkoa, johon kuuluuMastodon-käyttäjistä.", "annual_report.summary.thanks": "Kiitos, että olet osa Mastodonia!", "attachments_list.unprocessed": "(käsittelemätön)", "audio.hide": "Piilota ääni", @@ -513,6 +525,7 @@ "notification.admin.report_statuses_other": "{name} raportoi käyttäjän {target}", "notification.admin.sign_up": "{name} rekisteröityi", "notification.admin.sign_up.name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}} rekisteröityivät", + "notification.annual_report.message": "Vuoden {year} #Wrapstodon odottaa! Paljasta vuotesi kohokohdat ikimuistoiset hetket Mastodonissa!", "notification.annual_report.view": "Näytä #Wrapstodon", "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.favourite.name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}} lisäsivät julkaisusi suosikkeihinsa", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 6b26ed84fd..789efaa40e 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "hjá {name}", "annual_report.summary.most_used_app.most_used_app": "mest brúkta app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brúkta frámerki", + "annual_report.summary.most_used_hashtag.none": "Einki", "annual_report.summary.new_posts.new_posts": "nýggir postar", "annual_report.summary.percentile.text": "Tað fær teg í toppav Mastodon brúkarum.", "annual_report.summary.percentile.we_wont_tell_bernie": "Vit fara ikki at fortelja Bernie tað.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 23f444715b..c69a431f4b 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -87,6 +87,11 @@ "alert.unexpected.title": "Vaites!", "alt_text_badge.title": "Texto Alt", "announcement.announcement": "Anuncio", + "annual_report.summary.archetype.booster": "A axencia de noticias", + "annual_report.summary.archetype.lurker": "Volleur", + "annual_report.summary.archetype.oracle": "Sabichón/e", + "annual_report.summary.archetype.pollster": "O INE", + "annual_report.summary.archetype.replier": "Lareteire", "annual_report.summary.followers.followers": "seguidoras", "annual_report.summary.followers.total": "{count} en total", "annual_report.summary.here_it_is": "Este é o resumo do teu {year}:", @@ -96,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "de {name}", "annual_report.summary.most_used_app.most_used_app": "app que mais usaches", "annual_report.summary.most_used_hashtag.most_used_hashtag": "o cancelo mais utilizado", + "annual_report.summary.most_used_hashtag.none": "Nada", "annual_report.summary.new_posts.new_posts": "novas publicacións", "annual_report.summary.percentile.text": "Sitúante no top das usuarias de Mastodon.", "annual_report.summary.thanks": "Grazas por ser parte de Mastodon!", @@ -520,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# máis} other {# máis}} crearon unha conta", + "notification.annual_report.message": "A #VidaEnMastodon de {year} agarda por ti! Desvela os momentos máis destacados e historias reseñables en Mastodon!", + "notification.annual_report.view": "Ver #VidaEnMastodon", "notification.favourite": "{name} marcou como favorita a túa publicación", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# máis} other {# máis}} favoreceron a túa publicación", "notification.follow": "{name} comezou a seguirte", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index cdc113d8d7..2ba7aef34b 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name} fióktól", "annual_report.summary.most_used_app.most_used_app": "legtöbbet használt app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "legtöbbet használt hashtag", + "annual_report.summary.most_used_hashtag.none": "Nincs", "annual_report.summary.new_posts.new_posts": "új bejegyzés", "annual_report.summary.percentile.text": "Ezzel acsúcs Mastodon felhasználó között vagy.", "annual_report.summary.percentile.we_wont_tell_bernie": "Nem mondjuk el Bernie-nek.", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index adc86faf40..ecfc642969 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "mest notaða forrit", "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest notaða myllumerki", + "annual_report.summary.most_used_hashtag.none": "Ekkert", "annual_report.summary.new_posts.new_posts": "nýjar færslur", "annual_report.summary.percentile.text": "Það setur þig á meðal efstunotenda Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Við förum ekkert að raupa um þetta.", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index b5c8d4bd21..43f1e59e5e 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name} 님의", "annual_report.summary.most_used_app.most_used_app": "가장 많이 사용한 앱", "annual_report.summary.most_used_hashtag.most_used_hashtag": "가장 많이 사용한 해시태그", + "annual_report.summary.most_used_hashtag.none": "없음", "annual_report.summary.new_posts.new_posts": "새 게시물", "annual_report.summary.percentile.text": "마스토돈 사용자의 상위입니다.", "annual_report.summary.percentile.we_wont_tell_bernie": "엄마한테 말 안 할게요.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index b66fcf09c0..eb21d2ad1d 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}'s", "annual_report.summary.most_used_app.most_used_app": "meest gebruikte app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "meest gebruikte hashtag", + "annual_report.summary.most_used_hashtag.none": "Geen", "annual_report.summary.new_posts.new_posts": "nieuwe berichten", "annual_report.summary.percentile.text": "Dat zet je in de topvan Mastodon-gebruikers.", "annual_report.summary.percentile.we_wont_tell_bernie": "We zullen Bernie niets vertellen.", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index cc56754193..b45ff90585 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Oi sann!", "alt_text_badge.title": "Alternativ tekst", "announcement.announcement": "Kunngjering", + "annual_report.summary.archetype.booster": "Den som jaktar på noko kult", + "annual_report.summary.archetype.lurker": "Den som heng på hjørnet", + "annual_report.summary.archetype.oracle": "Orakelet", + "annual_report.summary.archetype.pollster": "Meiningsmålaren", + "annual_report.summary.archetype.replier": "Den sosiale sumarfuglen", + "annual_report.summary.followers.followers": "fylgjarar", + "annual_report.summary.followers.total": "{count} i alt", + "annual_report.summary.here_it_is": "Her er eit gjensyn med {year}:", + "annual_report.summary.highlighted_post.by_favourites": "det mest omtykte innlegget", + "annual_report.summary.highlighted_post.by_reblogs": "det mest framheva innlegget", + "annual_report.summary.highlighted_post.by_replies": "innlegget med flest svar", + "annual_report.summary.highlighted_post.possessive": "som {name} laga", + "annual_report.summary.most_used_app.most_used_app": "mest brukte app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte emneknagg", + "annual_report.summary.new_posts.new_posts": "nye innlegg", + "annual_report.summary.percentile.text": "Du er av deiivrigaste Mastodon-brukarane.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Ikkje eit ord til pressa.", + "annual_report.summary.thanks": "Takk for at du er med i Mastodon!", "attachments_list.unprocessed": "(ubehandla)", "audio.hide": "Gøym lyd", "block_modal.remote_users_caveat": "Me vil be tenaren {domain} om å respektere di avgjerd. Me kan ikkje garantera at det vert gjort, sidan nokre tenarar kan handtera blokkering ulikt. Offentlege innlegg kan framleis vera synlege for ikkje-innlogga brukarar.", @@ -197,6 +215,7 @@ "confirmations.unfollow.title": "Slutt å fylgja brukaren?", "content_warning.hide": "Gøym innlegg", "content_warning.show": "Vis likevel", + "content_warning.show_more": "Vis meir", "conversation.delete": "Slett samtale", "conversation.mark_as_read": "Marker som lesen", "conversation.open": "Sjå samtale", @@ -305,6 +324,7 @@ "filter_modal.select_filter.subtitle": "Bruk ein eksisterande kategori eller opprett ein ny", "filter_modal.select_filter.title": "Filtrer dette innlegget", "filter_modal.title.status": "Filtrer eit innlegg", + "filter_warning.matches_filter": "Passar med filteret «{title}»", "filtered_notifications_banner.pending_requests": "Frå {count, plural, =0 {ingen} one {éin person} other {# personar}} du kanskje kjenner", "filtered_notifications_banner.title": "Filtrerte varslingar", "firehose.all": "Alle", @@ -506,6 +526,8 @@ "notification.admin.report_statuses_other": "{name} rapporterte {target}", "notification.admin.sign_up": "{name} er registrert", "notification.admin.sign_up.name_and_others": "{name} og {count, plural, one {# annan} other {# andre}} vart med", + "notification.annual_report.message": "#Året ditt for {year} ventar! Sjå kva som skjedde i løpet av Mastodon-året ditt!", + "notification.annual_report.view": "Sjå #Året ditt", "notification.favourite": "{name} markerte innlegget ditt som favoritt", "notification.favourite.name_and_others_with_link": "{name} og {count, plural, one {# annan} other {# andre}} favorittmerka innlegget ditt", "notification.follow": "{name} fylgde deg", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 5e69741f20..e2fbaff02b 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "aplicativo mais usado", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag mais usada", + "annual_report.summary.most_used_hashtag.none": "Nenhuma", "annual_report.summary.new_posts.new_posts": "novas publicações", "annual_report.summary.percentile.text": "Isso o coloca no topodos usuários de Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Não contaremos à Bernie.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index f5617550e1..e336e39e01 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -89,9 +89,11 @@ "announcement.announcement": "Объявление", "annual_report.summary.archetype.booster": "Репостер", "annual_report.summary.archetype.lurker": "Молчун", + "annual_report.summary.archetype.oracle": "Шаман", "annual_report.summary.archetype.pollster": "Опросчик", "annual_report.summary.archetype.replier": "Душа компании", "annual_report.summary.followers.followers": "подписчиков", + "annual_report.summary.followers.total": "{count} за всё время", "annual_report.summary.here_it_is": "Вот ваши итоги {year} года:", "annual_report.summary.highlighted_post.by_favourites": "пост с наибольшим количеством звёздочек", "annual_report.summary.highlighted_post.by_reblogs": "пост с наибольшим количеством продвижений", @@ -99,7 +101,9 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "наиболее часто используемое приложение", "annual_report.summary.most_used_hashtag.most_used_hashtag": "наиболее часто используемый хэштег", + "annual_report.summary.most_used_hashtag.none": "Нет", "annual_report.summary.new_posts.new_posts": "новых постов", + "annual_report.summary.percentile.text": "Всё это помещает вас в топпользователей Mastodon.", "annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!", "attachments_list.unprocessed": "(не обработан)", "audio.hide": "Скрыть аудио", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 0faee304c6..d1d92c69f6 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -96,6 +96,7 @@ "annual_report.summary.highlighted_post.possessive": "nga {name}", "annual_report.summary.most_used_app.most_used_app": "aplikacioni më i përdorur", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag-u më i përdorur", + "annual_report.summary.most_used_hashtag.none": "Asnjë", "annual_report.summary.new_posts.new_posts": "postime të reja", "annual_report.summary.percentile.text": "Kjo ju vë në kryetë përdoruesve të Mastodon-it.", "annual_report.summary.percentile.we_wont_tell_bernie": "Nuk do t’ia themi Bernit.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index ef2d912c00..df24db9634 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}s", "annual_report.summary.most_used_app.most_used_app": "mest använda app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest använda hashtag", + "annual_report.summary.most_used_hashtag.none": "Inga", "annual_report.summary.new_posts.new_posts": "nya inlägg", "annual_report.summary.percentile.text": "Det placerar dig i toppav Mastodon-användare.", "annual_report.summary.percentile.we_wont_tell_bernie": "Vi berättar inte för Bernie.", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4699b9f4bd..ece97614ad 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "en çok kullanılan uygulama", "annual_report.summary.most_used_hashtag.most_used_hashtag": "en çok kullanılan etiket", + "annual_report.summary.most_used_hashtag.none": "Yok", "annual_report.summary.new_posts.new_posts": "yeni gönderiler", "annual_report.summary.percentile.text": "Mastodon kullanıcılarınınüst dilimindesiniz.", "annual_report.summary.percentile.we_wont_tell_bernie": "Bernie'ye söylemeyiz.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index dcbf8cec58..0e0906eb37 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок", "annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег", + "annual_report.summary.most_used_hashtag.none": "Немає", "annual_report.summary.new_posts.new_posts": "нові дописи", "annual_report.summary.percentile.text": "Це виводить вас в топ користувачів Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Ми не скажемо Bernie.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 2b5401a878..73016ed8c9 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "app dùng nhiều nhất", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag dùng nhiều nhất", + "annual_report.summary.most_used_hashtag.none": "Không có", "annual_report.summary.new_posts.new_posts": "tút mới", "annual_report.summary.percentile.text": "Bạn nằm trong topthành viên Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Chúng tôi sẽ không kể cho Bernie.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 57b2011bb1..887410dd51 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name} 的", "annual_report.summary.most_used_app.most_used_app": "最常用的应用", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", + "annual_report.summary.most_used_hashtag.none": "无", "annual_report.summary.new_posts.new_posts": "新发嘟", "annual_report.summary.percentile.text": "这使你跻身 Mastodon 用户的前", "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉Bernie。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 91d7f6e45d..56ddd9745e 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name} 的", "annual_report.summary.most_used_app.most_used_app": "最常使用的應用程式", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常使用的主題標籤", + "annual_report.summary.most_used_hashtag.none": "無最常用之主題標籤", "annual_report.summary.new_posts.new_posts": "新嘟文", "annual_report.summary.percentile.text": "這讓您成為前Mastodon 的使用者。", "annual_report.summary.percentile.we_wont_tell_bernie": "我們不會告訴 Bernie。", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 9d861fa30c..00c8f57a85 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -187,6 +187,7 @@ ca: create_domain_block: Crea un bloqueig de domini create_email_domain_block: Crea un blocatge del domini del correu electrònic create_ip_block: Crear regla IP + create_relay: Crea un repetidor create_unavailable_domain: Crea un domini no disponible create_user_role: Crea Rol demote_user: Degrada l'usuari @@ -198,14 +199,17 @@ ca: destroy_email_domain_block: Elimina el blocatge del domini del correu electrònic destroy_instance: Purga Domini destroy_ip_block: Eliminar regla IP + destroy_relay: Esborra el repetidor destroy_status: Elimina la publicació destroy_unavailable_domain: Esborra domini no disponible destroy_user_role: Destrueix Rol disable_2fa_user: Desactiva 2FA disable_custom_emoji: Desactiva l'emoji personalitzat + disable_relay: Desactiva el repetidor disable_sign_in_token_auth_user: Desactivar l'autenticació de token per correu-e per a l'usuari disable_user: Deshabilita l'usuari enable_custom_emoji: Activa l'emoji personalitzat + enable_relay: Activa el repetidor enable_sign_in_token_auth_user: Activar l'autenticació de token per correu-e per a l'usuari enable_user: Activa l'usuari memorialize_account: Memoritza el compte @@ -247,6 +251,7 @@ ca: create_domain_block_html: "%{name} ha bloquejat el domini %{target}" create_email_domain_block_html: "%{name} ha blocat el domini de correu electrònic %{target}" create_ip_block_html: "%{name} ha creat una regla per a l'IP %{target}" + create_relay_html: "%{name} ha creat un repetidor %{target}" create_unavailable_domain_html: "%{name} ha aturat el lliurament al domini %{target}" create_user_role_html: "%{name} ha creat el rol %{target}" demote_user_html: "%{name} ha degradat l'usuari %{target}" @@ -258,14 +263,17 @@ ca: destroy_email_domain_block_html: "%{name} ha desblocat el domini de correu electrònic %{target}" destroy_instance_html: "%{name} ha purgat el domini %{target}" destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}" + destroy_relay_html: "%{name} ha esborrat el repetidor %{target}" destroy_status_html: "%{name} ha eliminat el tut de %{target}" destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}" destroy_user_role_html: "%{name} ha esborrat el rol %{target}" disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}" disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}" + disable_relay_html: "%{name} ha desactivat el repetidor %{target}" disable_sign_in_token_auth_user_html: "%{name} ha desactivat l'autenticació de token per correu-e per a %{target}" disable_user_html: "%{name} ha desactivat l'accés del usuari %{target}" enable_custom_emoji_html: "%{name} ha activat l'emoji %{target}" + enable_relay_html: "%{name} ha activat el repetidor %{target}" enable_sign_in_token_auth_user_html: "%{name} ha activat l'autenticació de token per correu-e per a %{target}" enable_user_html: "%{name} ha activat l'accés del usuari %{target}" memorialize_account_html: "%{name} ha convertit el compte %{target} en una pàgina de memorial" diff --git a/config/locales/da.yml b/config/locales/da.yml index 6447afb493..daf683637d 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -187,6 +187,7 @@ da: create_domain_block: Opret domæneblokering create_email_domain_block: Opret e-maildomæneblokering create_ip_block: Opret IP-regel + create_relay: Opret Videresendelse create_unavailable_domain: Opret Utilgængeligt Domæne create_user_role: Opret rolle demote_user: Degradér bruger @@ -198,14 +199,17 @@ da: destroy_email_domain_block: Slet e-maildomæneblokering destroy_instance: Udrens domæne destroy_ip_block: Slet IP-regel + destroy_relay: Slet Videresendelse destroy_status: Slet indlæg destroy_unavailable_domain: Slet Utilgængeligt Domæne destroy_user_role: Ødelæg rolle disable_2fa_user: Deaktivér 2FA disable_custom_emoji: Deaktivér tilpasset emoji + disable_relay: Deaktivér Videresendelse disable_sign_in_token_auth_user: Deaktivér e-mailtoken godkendelse for bruger disable_user: Deaktivér bruger enable_custom_emoji: Aktivér tilpasset emoji + enable_relay: Aktivér Relay enable_sign_in_token_auth_user: Aktivér e-mailtoken godkendelse for bruger enable_user: Aktivér bruger memorialize_account: Memoralisér konto @@ -247,6 +251,7 @@ da: create_domain_block_html: "%{name} blokerede domænet %{target}" create_email_domain_block_html: "%{name} blokerede e-maildomænet %{target}" create_ip_block_html: "%{name} oprettede en regel for IP %{target}" + create_relay_html: "%{name} oprettede videresendelsen %{target}" create_unavailable_domain_html: "%{name} stoppede levering til domænet %{target}" create_user_role_html: "%{name} oprettede %{target}-rolle" demote_user_html: "%{name} degraderede brugeren %{target}" @@ -258,14 +263,17 @@ da: destroy_email_domain_block_html: "%{name} afblokerede e-maildomænet %{target}" destroy_instance_html: "%{name} udrensede domænet %{target}" destroy_ip_block_html: "%{name} slettede en regel for IP %{target}" + destroy_relay_html: "%{name} oprettede videresendelsen %{target}" destroy_status_html: "%{name} fjernede indlægget fra %{target}" destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}" destroy_user_role_html: "%{name} slettede %{target}-rolle" disable_2fa_user_html: "%{name} deaktiverede tofaktorkravet for brugeren %{target}" disable_custom_emoji_html: "%{name} deaktiverede emojien %{target}" + disable_relay_html: "%{name} deaktiverede videresendelsen %{target}" disable_sign_in_token_auth_user_html: "%{name} deaktiverede e-mailtoken godkendelsen for %{target}" disable_user_html: "%{name} deaktiverede indlogning for brugeren %{target}" enable_custom_emoji_html: "%{name} aktiverede emojien %{target}" + enable_relay_html: "%{name} aktiverede videresendelsen %{target}" enable_sign_in_token_auth_user_html: "%{name} aktiverede e-mailtoken godkendelse for %{target}" enable_user_html: "%{name} aktiverede indlogning for brugeren %{target}" memorialize_account_html: "%{name} gjorde %{target}s konto til en mindeside" diff --git a/config/locales/de.yml b/config/locales/de.yml index 323579f25f..10223f2278 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -187,6 +187,7 @@ de: create_domain_block: Domain sperren create_email_domain_block: E-Mail-Domain-Sperre erstellen create_ip_block: IP-Regel erstellen + create_relay: Relay erstellen create_unavailable_domain: Nicht verfügbare Domain erstellen create_user_role: Rolle erstellen demote_user: Benutzer*in herabstufen @@ -198,14 +199,17 @@ de: destroy_email_domain_block: E-Mail-Domain-Sperre entfernen destroy_instance: Domain-Daten entfernen destroy_ip_block: IP-Regel löschen + destroy_relay: Relay löschen destroy_status: Beitrag entfernen destroy_unavailable_domain: Nicht-verfügbare Domain entfernen destroy_user_role: Rolle entfernen disable_2fa_user: 2FA deaktivieren disable_custom_emoji: Eigenes Emoji deaktivieren + disable_relay: Relay deaktivieren disable_sign_in_token_auth_user: E-Mail-Token-Authentisierung für dieses Konto deaktivieren disable_user: Benutzer*in deaktivieren enable_custom_emoji: Eigenes Emoji aktivieren + enable_relay: Relay aktivieren enable_sign_in_token_auth_user: E-Mail-Token-Authentisierung für dieses Konto aktivieren enable_user: Benutzer*in aktivieren memorialize_account: Gedenkkonto @@ -247,6 +251,7 @@ de: create_domain_block_html: "%{name} sperrte die Domain %{target}" create_email_domain_block_html: "%{name} sperrte die E-Mail-Domain %{target}" create_ip_block_html: "%{name} erstellte eine IP-Regel für %{target}" + create_relay_html: "%{name} erstellte ein Relay %{target}" create_unavailable_domain_html: "%{name} beendete die Zustellung an die Domain %{target}" create_user_role_html: "%{name} erstellte die Rolle %{target}" demote_user_html: "%{name} stufte %{target} herunter" @@ -258,14 +263,17 @@ de: destroy_email_domain_block_html: "%{name} entsperrte die E-Mail-Domain %{target}" destroy_instance_html: "%{name} entfernte die Daten der Domain %{target} von diesem Server" destroy_ip_block_html: "%{name} entfernte eine IP-Regel für %{target}" + destroy_relay_html: "%{name} löschte das Relay %{target}" destroy_status_html: "%{name} entfernte einen Beitrag von %{target}" destroy_unavailable_domain_html: "%{name} nahm die Zustellung an die Domain %{target} wieder auf" destroy_user_role_html: "%{name} löschte die Rolle %{target}" disable_2fa_user_html: "%{name} deaktivierte die Zwei-Faktor-Authentisierung für %{target}" disable_custom_emoji_html: "%{name} deaktivierte das Emoji %{target}" + disable_relay_html: "%{name} deaktivierte das Relay %{target}" disable_sign_in_token_auth_user_html: "%{name} deaktivierte die E-Mail-Token-Authentisierung für %{target}" disable_user_html: "%{name} deaktivierte den Zugang für %{target}" enable_custom_emoji_html: "%{name} aktivierte das Emoji %{target}" + enable_relay_html: "%{name} aktivierte das Relay %{target}" enable_sign_in_token_auth_user_html: "%{name} aktivierte die E-Mail-Token-Authentisierung für %{target}" enable_user_html: "%{name} aktivierte den Zugang für %{target}" memorialize_account_html: "%{name} wandelte das Konto von %{target} in eine Gedenkseite um" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 2f9a76c80d..6fe9c14591 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -187,6 +187,7 @@ fi: create_domain_block: Luo verkkotunnuksen esto create_email_domain_block: Luo sähköpostiverkkotunnuksen esto create_ip_block: Luo IP-sääntö + create_relay: Luo välittäjä create_unavailable_domain: Luo ei-saatavilla oleva verkkotunnus create_user_role: Luo rooli demote_user: Alenna käyttäjä @@ -198,14 +199,17 @@ fi: destroy_email_domain_block: Poista sähköpostiverkkotunnuksen esto destroy_instance: Tyhjennä verkkotunnus destroy_ip_block: Poista IP-sääntö + destroy_relay: Poista välittäjä destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus destroy_user_role: Hävitä rooli disable_2fa_user: Poista kaksivaiheinen todennus käytöstä disable_custom_emoji: Poista mukautettu emoji käytöstä + disable_relay: Poista välittäjä käytöstä disable_sign_in_token_auth_user: Poista sähköpostitunnuksella todennus käytöstä käyttäjältä disable_user: Poista tili käytöstä enable_custom_emoji: Ota mukautettu emoji käyttöön + enable_relay: Ota välittäjä käyttöön enable_sign_in_token_auth_user: Ota sähköpostitunnuksella todennus käyttöön käyttäjälle enable_user: Ota tili käyttöön memorialize_account: Muuta muistotiliksi @@ -216,7 +220,7 @@ fi: reopen_report: Avaa raportti uudelleen resend_user: Lähetä vahvistusviesti uudelleen reset_password_user: Palauta salasana - resolve_report: Selvitä raportti + resolve_report: Ratkaise raportti sensitive_account: Pakota arkaluonteiseksi tiliksi silence_account: Rajoita tiliä suspend_account: Jäädytä tili @@ -247,6 +251,7 @@ fi: create_domain_block_html: "%{name} esti verkkotunnuksen %{target}" create_email_domain_block_html: "%{name} esti sähköpostiverkkotunnuksen %{target}" create_ip_block_html: "%{name} loi säännön IP-osoitteelle %{target}" + create_relay_html: "%{name} loi välittäjän %{target}" create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}" create_user_role_html: "%{name} loi roolin %{target}" demote_user_html: "%{name} alensi käyttäjän %{target}" @@ -258,14 +263,17 @@ fi: destroy_email_domain_block_html: "%{name} kumosi sähköpostiverkkotunnuksen %{target} eston" destroy_instance_html: "%{name} tyhjensi verkkotunnuksen %{target}" destroy_ip_block_html: "%{name} poisti säännön IP-osoitteelta %{target}" + destroy_relay_html: "%{name} poisti välittäjän %{target}" destroy_status_html: "%{name} poisti käyttäjän %{target} julkaisun" destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}" destroy_user_role_html: "%{name} poisti roolin %{target}" disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheiseen todentamiseen" disable_custom_emoji_html: "%{name} poisti emojin %{target} käytöstä" + disable_relay_html: "%{name} poisti välittäjän %{target} käytöstä" disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksella todennuksen käytöstä käyttäjältä %{target}" disable_user_html: "%{name} poisti kirjautumisen käytöstä käyttäjältä %{target}" enable_custom_emoji_html: "%{name} otti emojin %{target} käyttöön" + enable_relay_html: "%{name} otti välittäjän %{target} käyttöön" enable_sign_in_token_auth_user_html: "%{name} otti sähköpostitunnuksella todennuksen käyttöön käyttäjälle %{target}" enable_user_html: "%{name} otti kirjautumisen käyttöön käyttäjälle %{target}" memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi" diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 1060ee1609..6cc1fda6a0 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -187,6 +187,7 @@ fo: create_domain_block: Stovna navnaøkjablokering create_email_domain_block: Stovna t-post-økisnavnablokk create_ip_block: Stovna IP reglu + create_relay: Stovna reiðlag create_unavailable_domain: Stovna navnaøki, sum ikki er tøkt create_user_role: Stovna leiklut demote_user: Lækka brúkara í tign @@ -198,14 +199,17 @@ fo: destroy_email_domain_block: Strika t-posta-økisnavnablokk destroy_instance: Reinsa navnaøki destroy_ip_block: Strika IP reglu + destroy_relay: Strika reiðlag destroy_status: Strika post destroy_unavailable_domain: Strika navnaøki, sum ikki er tøkt destroy_user_role: Bein burtur leiklut disable_2fa_user: Ger 2FA óvirkið disable_custom_emoji: Ger serligt kenslutekn óvirkið + disable_relay: Ger reiðlag óvirkið disable_sign_in_token_auth_user: Ger váttan við teldupostateknum óvirkna fyri brúkara disable_user: Ger brúkara óvirknan enable_custom_emoji: Ger serligt kenslutekn virkið + enable_relay: Ger reiðlag virkið enable_sign_in_token_auth_user: Ger váttan við teldupostateknum virkna fyri brúkara enable_user: Ger brúkara virknan memorialize_account: Minnst til Konto @@ -247,6 +251,7 @@ fo: create_domain_block_html: "%{name} blokeraði navnaøkið %{target}" create_email_domain_block_html: "%{name} blokeraði teldupostanavnaøkið %{target}" create_ip_block_html: "%{name} gjørdi reglu fyri IP %{target}" + create_relay_html: "%{name} gjørdi eitt reiðlag %{target}" create_unavailable_domain_html: "%{name} steðgaði veiting til navnaøkið %{target}" create_user_role_html: "%{name} stovnaði %{target} leiklutin" demote_user_html: "%{name} lækkaði tignina hjá brúkaranum %{target}" @@ -258,14 +263,17 @@ fo: destroy_email_domain_block_html: "%{name} leysgav teldupostanavnaøkið %{target}" destroy_instance_html: "%{name} reinsaði navnaøkið %{target}" destroy_ip_block_html: "%{name} slettaðar reglur fyri IP %{target}" + destroy_relay_html: "%{name} strikaði reiðlagið %{target}" destroy_status_html: "%{name} slettaði upplegg hjá %{target}" destroy_unavailable_domain_html: "%{name} tók upp aftir veiting til navnaøkið %{target}" destroy_user_role_html: "%{name} slettaði leiklutin hjá %{target}" disable_2fa_user_html: "%{name} slepti kravið um váttan í tveimum stigum fyri brúkaran %{target}" disable_custom_emoji_html: "%{name} gjørdi kensluteknið %{target} óvirkið" + disable_relay_html: "%{name} gjørdi reiðlagið %{target} óvirkið" disable_sign_in_token_auth_user_html: "%{name} gjørdi váttan við teldupostteknum óvirkna fyri %{target}" disable_user_html: "%{name} gjørdi innritan hjá brúkaranum %{target} óvirkna" enable_custom_emoji_html: "%{name} gjørdi kensluteknið %{target} virkið" + enable_relay_html: "%{name} gjørdi reiðlagið %{target} virkið" enable_sign_in_token_auth_user_html: "%{name} gjørdi váttan við teldupostteknum virkna fyri %{target}" enable_user_html: "%{name} gjørdi innritan virkna fyri brúkaran %{target}" memorialize_account_html: "%{name} broytti kontuna hjá %{target} til eina minnissíðu" diff --git a/config/locales/gl.yml b/config/locales/gl.yml index a4f63a50e0..1ad8deb179 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -187,6 +187,7 @@ gl: create_domain_block: Crear bloquedo do Dominio create_email_domain_block: Crear Bloqueo de Dominio do correo create_ip_block: Crear regra IP + create_relay: Crear Repetidor create_unavailable_domain: Crear dominio Non dispoñible create_user_role: Crear Rol demote_user: Degradar usuaria @@ -198,14 +199,17 @@ gl: destroy_email_domain_block: Eliminar bloqueo do dominio do correo destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regra IP + destroy_relay: Eliminar Repetidor destroy_status: Eliminar publicación destroy_unavailable_domain: Eliminar dominio Non dispoñible destroy_user_role: Eliminar Rol disable_2fa_user: Desactivar 2FA disable_custom_emoji: Desactivar emoticona personalizada + disable_relay: Desactivar Repetidor disable_sign_in_token_auth_user: Desactivar Autenticación por Token no Correo para a Usuaria disable_user: Desactivar usuaria enable_custom_emoji: Activar emoticona personalizada + enable_relay: Activar Repetidor enable_sign_in_token_auth_user: Activar Autenticación con Token no Correo para a Usuaria enable_user: Activar usuaria memorialize_account: Transformar en conta conmemorativa @@ -247,6 +251,7 @@ gl: create_domain_block_html: "%{name} bloqueou o dominio %{target}" create_email_domain_block_html: "%{name} bloqueou o dominio de correo %{target}" create_ip_block_html: "%{name} creou regra para o IP %{target}" + create_relay_html: "%{name} creou un repetidor en %{target}" create_unavailable_domain_html: "%{name} deixou de interactuar co dominio %{target}" create_user_role_html: "%{name} creou o rol %{target}" demote_user_html: "%{name} degradou a usuaria %{target}" @@ -258,14 +263,17 @@ gl: destroy_email_domain_block_html: "%{name} desbloqueou o dominio de correo %{target}" destroy_instance_html: "%{name} purgou o dominio %{target}" destroy_ip_block_html: "%{name} eliminou a regra para o IP %{target}" + destroy_relay_html: "%{name} eliminou o repetidor %{target}" destroy_status_html: "%{name} eliminou a publicación de %{target}" destroy_unavailable_domain_html: "%{name} retomou a interacción co dominio %{target}" destroy_user_role_html: "%{name} eliminou o rol %{target}" disable_2fa_user_html: "%{name} desactivou o requerimento do segundo factor para a usuaria %{target}" disable_custom_emoji_html: "%{name} desactivou o emoji %{target}" + disable_relay_html: "%{name} desactivou o repetidor %{target}" disable_sign_in_token_auth_user_html: "%{name} desactivou a autenticación por token no email para %{target}" disable_user_html: "%{name} desactivou as credenciais para a usuaria %{target}" enable_custom_emoji_html: "%{name} activou o emoji %{target}" + enable_relay_html: "%{name} activou o repetidor %{target}" enable_sign_in_token_auth_user_html: "%{name} activou a autenticación con token no email para %{target}" enable_user_html: "%{name} activou as credenciais para a usuaria %{target}" memorialize_account_html: "%{name} convertiu a conta de %{target} nunha páxina para o recordo" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 47bd24fccf..1892009238 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -187,6 +187,7 @@ hu: create_domain_block: Domain tiltás létrehozása create_email_domain_block: E-mail-domain-tiltás létrehozása create_ip_block: IP szabály létrehozása + create_relay: Továbbító létrehozása create_unavailable_domain: Elérhetetlen domain létrehozása create_user_role: Szerepkör létrehozása demote_user: Felhasználó lefokozása @@ -198,14 +199,17 @@ hu: destroy_email_domain_block: E-mail-domain-tiltás törlése destroy_instance: Domain végleges törlése destroy_ip_block: IP szabály törlése + destroy_relay: Továbbító törlése destroy_status: Bejegyzés törlése destroy_unavailable_domain: Elérhetetlen domain törlése destroy_user_role: Szerepkör eltávolítása disable_2fa_user: Kétlépcsős hitelesítés letiltása disable_custom_emoji: Egyéni emodzsi letiltása + disable_relay: Továbbító letiltása disable_sign_in_token_auth_user: A felhasználó tokenes e-mail-hitelesítésének letiltása disable_user: Felhasználói letiltása enable_custom_emoji: Egyéni emodzsi engedélyezése + enable_relay: Továbbító engedélyezése enable_sign_in_token_auth_user: A felhasználó tokenes e-mail-hitelesítésének engedélyezése enable_user: Felhasználó engedélyezése memorialize_account: Fiók emlékké nyilvánítása @@ -247,6 +251,7 @@ hu: create_domain_block_html: "%{name} letiltotta a %{target} domaint" create_email_domain_block_html: "%{name} letiltotta a(z) %{target} e-mail-domaint" create_ip_block_html: "%{name} létrehozta a(z) %{target} IP-címre vonatkozó szabályt" + create_relay_html: "%{name} létrehozta az átirányítót: %{target}" create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe" create_user_role_html: "%{name} létrehozta a(z) %{target} szerepkört" demote_user_html: "%{name} lefokozta %{target} felhasználót" @@ -258,14 +263,17 @@ hu: destroy_email_domain_block_html: "%{name} engedélyezte a(z) %{target} e-mail-domaint" destroy_instance_html: "%{name} véglegesen törölte a(z) %{target} domaint" destroy_ip_block_html: "%{name} törölte a(z) %{target} IP-címre vonatkozó szabályt" + destroy_relay_html: "%{name} törölte az átirányítót: %{target}" destroy_status_html: "%{name} eltávolította %{target} felhasználó bejegyzését" destroy_unavailable_domain_html: "%{name} újraindította a kézbesítést a %{target} domainbe" destroy_user_role_html: "%{name} törölte a(z) %{target} szerepkört" disable_2fa_user_html: "%{name} kikapcsolta a kétlépcsős hitelesítést %{target} felhasználó fiókján" disable_custom_emoji_html: "%{name} letiltotta az emodzsit: %{target}" + disable_relay_html: "%{name} letiltotta az átirányítót: %{target}" disable_sign_in_token_auth_user_html: "%{name} letiltotta a tokenes e-mail-hitelesítést %{target} felhasználóra" disable_user_html: "%{name} letiltotta %{target} felhasználó bejelentkezését" enable_custom_emoji_html: "%{name} engedélyezte az emodzsit: %{target}" + enable_relay_html: "%{name} engedélyezte az átirányítót: %{target}" enable_sign_in_token_auth_user_html: "%{name} engedélyezte a tokenes e-mail-hitelesítést %{target} felhasználóra" enable_user_html: "%{name} engedélyezte %{target} felhasználó bejelentkezését" memorialize_account_html: "%{name} emléket állított %{target} felhasználónak" diff --git a/config/locales/is.yml b/config/locales/is.yml index c50b3dd20d..552df8f064 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -187,6 +187,7 @@ is: create_domain_block: Búa til útilokun léns create_email_domain_block: Búa til útilokun tölvupóstléns create_ip_block: Búa til IP-reglu + create_relay: Búa til endurvarpa create_unavailable_domain: Útbúa lén sem ekki er tiltækt create_user_role: Útbúa hlutverk demote_user: Lækka notanda í tign @@ -198,14 +199,17 @@ is: destroy_email_domain_block: Eyða útilokun tölvupóstléns destroy_instance: Henda léni destroy_ip_block: Eyða IP-reglu + destroy_relay: Eyða endurvarpa destroy_status: Eyða færslu destroy_unavailable_domain: Eyða léni sem ekki er tiltækt destroy_user_role: Eyða hlutverki disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt + disable_relay: Gera endurvarpa óvirkan disable_sign_in_token_auth_user: Gera óvirka auðkenningu með teikni í tölvupósti fyrir notandann disable_user: Gera notanda óvirkan enable_custom_emoji: Virkja sérsniðið tjáningartákn + enable_relay: Virkja endurvarpa enable_sign_in_token_auth_user: Gera virka auðkenningu með teikni í tölvupósti fyrir notandann enable_user: Virkja notanda memorialize_account: Gera aðgang að minningargrein @@ -247,6 +251,7 @@ is: create_domain_block_html: "%{name} útilokaði lénið %{target}" create_email_domain_block_html: "%{name} útilokaði póstlénið %{target}" create_ip_block_html: "%{name} útbjó reglu fyrir IP-vistfangið %{target}" + create_relay_html: "%{name} bjó til endurvarpa %{target}" create_unavailable_domain_html: "%{name} stöðvaði afhendingu til lénsins %{target}" create_user_role_html: "%{name} útbjó %{target} hlutverk" demote_user_html: "%{name} lækkaði notandann %{target} í tign" @@ -258,14 +263,17 @@ is: destroy_email_domain_block_html: "%{name} aflétti útilokun af póstléninu %{target}" destroy_instance_html: "%{name} henti léninu %{target}" destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}" + destroy_relay_html: "%{name} eyddi endurvarpanum %{target}" destroy_status_html: "%{name} fjarlægði færslu frá %{target}" destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}" destroy_user_role_html: "%{name} eyddi hlutverki %{target}" disable_2fa_user_html: "%{name} gerði kröfu um tveggja-þátta innskráningu óvirka fyrir notandann %{target}" disable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} óvirkt" + disable_relay_html: "%{name} gerði endurvarpann %{target} óvirkan" disable_sign_in_token_auth_user_html: "%{name} gerði óvirka auðkenningu með teikni í tölvupósti fyrir %{target}" disable_user_html: "%{name} gerði innskráningu óvirka fyrir notandann %{target}" enable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} virkt" + enable_relay_html: "%{name} virkjaði endurvarpann %{target}" enable_sign_in_token_auth_user_html: "%{name} gerði virka auðkenningu með teikni í tölvupósti fyrir %{target}" enable_user_html: "%{name} gerði innskráningu virka fyrir notandann %{target}" memorialize_account_html: "%{name} breytti notandaaðgangnum %{target} í minningargreinarsíðu" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 6bff1703e6..1fe43f7e75 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -184,6 +184,7 @@ ko: create_domain_block: 도메인 차단 추가 create_email_domain_block: 이메일 도메인 차단 생성 create_ip_block: IP 규칙 만들기 + create_relay: 릴레이 생성 create_unavailable_domain: 사용 불가능한 도메인 생성 create_user_role: 역할 생성 demote_user: 사용자 강등 @@ -195,14 +196,17 @@ ko: destroy_email_domain_block: 이메일 도메인 차단 삭제 destroy_instance: 도메인 퍼지하기 destroy_ip_block: IP 규칙 삭제 + destroy_relay: 릴레이 삭제 destroy_status: 게시물 삭제 destroy_unavailable_domain: 사용 불가능한 도메인 제거 destroy_user_role: 역할 삭제 disable_2fa_user: 2단계 인증 비활성화 disable_custom_emoji: 커스텀 에모지 비활성화 + disable_relay: 릴레이 비활성화 disable_sign_in_token_auth_user: 사용자의 이메일 토큰 인증 비활성화 disable_user: 사용자 비활성화 enable_custom_emoji: 커스텀 에모지 활성화 + enable_relay: 릴레이 활성화 enable_sign_in_token_auth_user: 사용자의 이메일 토큰 인증 활성화 enable_user: 사용자 활성화 memorialize_account: 고인의 계정으로 전환 @@ -244,6 +248,7 @@ ko: create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다" create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다" create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다" + create_relay_html: "%{name} 님이 릴레이 %{target}를 생성했습니다" create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다" create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다" demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다" @@ -255,14 +260,17 @@ ko: destroy_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}을 차단 해제하였습니다" destroy_instance_html: "%{name} 님이 도메인 %{target}를 제거했습니다" destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다" + destroy_relay_html: "%{name} 님이 릴레이 %{target}를 삭제했습니다" destroy_status_html: "%{name} 님이 %{target} 님의 게시물을 삭제했습니다" destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개" destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다" disable_2fa_user_html: "%{name} 님이 사용자 %{target} 님의 2단계 인증을 비활성화 했습니다" disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화했습니다" + disable_relay_html: "%{name} 님이 릴레이 %{target}를 비활성화했습니다" disable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 비활성화했습니다" disable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 비활성화했습니다" enable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 활성화했습니다" + enable_relay_html: "%{name} 님이 릴레이 %{target}를 활성화했습니다" enable_sign_in_token_auth_user_html: "%{name} 님이 %{target} 님의 이메일 토큰 인증을 활성화했습니다" enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화했습니다" memorialize_account_html: "%{name} 님이 %{target}의 계정을 고인의 계정 페이지로 전환했습니다" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 8ba3bad070..3850e2e071 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -185,6 +185,7 @@ lt: create_domain_allow: Kurti domeno leidimą create_domain_block: Kurti domeno bloką create_ip_block: Kurti IP taisyklę + create_relay: Kurti perdavimą create_unavailable_domain: Kurti nepasiekiamą domeną create_user_role: Kurti vaidmenį demote_user: Pažeminti naudotoją @@ -194,13 +195,16 @@ lt: destroy_domain_block: Ištrinti domeno bloką destroy_instance: Išvalyti domeną destroy_ip_block: Ištrinti IP taisyklę + destroy_relay: Ištrinti perdavimą destroy_status: Ištrinti įrašą destroy_unavailable_domain: Ištrinti nepasiekiamą domeną destroy_user_role: Sunaikinti vaidmenį disable_2fa_user: Išjungti 2FA disable_custom_emoji: Išjungti pasirinktinį jaustuką + disable_relay: Išjungti perdavimą disable_user: Išjungti naudotoją enable_custom_emoji: Įjungti pasirinktinį jaustuką + enable_relay: Įjungti perdavimą enable_user: Įjungti naudotoją memorialize_account: Memorializuoti paskyrą promote_user: Paaukštinti naudotoją @@ -237,6 +241,7 @@ lt: create_domain_allow_html: "%{name} leido federaciją su domenu %{target}" create_domain_block_html: "%{name} užblokavo domeną %{target}" create_ip_block_html: "%{name} sukūrė taisyklę IP %{target}" + create_relay_html: "%{name} sukūrė perdavimą %{target}" create_unavailable_domain_html: "%{name} sustabdė tiekimą į domeną %{target}" create_user_role_html: "%{name} sukūrė %{target} vaidmenį" demote_user_html: "%{name} pažemino naudotoją %{target}" @@ -246,13 +251,16 @@ lt: destroy_domain_block_html: "%{name} atblokavo domeną %{target}" destroy_instance_html: "%{name} išvalė domeną %{target}" destroy_ip_block_html: "%{name} ištrynė taisyklę IP %{target}" + destroy_relay_html: "%{name} ištrynė perdavimą %{target}" destroy_status_html: "%{name} pašalino įrašą %{target}" destroy_unavailable_domain_html: "%{name} pratęsė tiekimą į domeną %{target}" destroy_user_role_html: "%{name} ištrynė %{target} vaidmenį" disable_2fa_user_html: "%{name} išjungė dviejų veiksnių reikalavimą naudotojui %{target}" disable_custom_emoji_html: "%{name} išjungė jaustuką %{target}" + disable_relay_html: "%{name} išjungė perdavimą %{target}" disable_user_html: "%{name} išjungė prisijungimą naudotojui %{target}" enable_custom_emoji_html: "%{name} įjungė jaustuką %{target}" + enable_relay_html: "%{name} įjungė perdavimą %{target}" enable_user_html: "%{name} įjungė prisijungimą naudotojui %{target}" memorialize_account_html: "%{name} pavertė %{target} paskyrą į atminimo puslapį" promote_user_html: "%{name} paaukštino naudotoją %{target}" diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 9ec4f29f42..62b08f42ed 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -187,6 +187,7 @@ nn: create_domain_block: Opprett domene-blokk create_email_domain_block: Opprett blokkering av e-postdomene create_ip_block: Opprett IP-regel + create_relay: Opprett eit relé create_unavailable_domain: Opprett utilgjengeleg domene create_user_role: Opprett rolle demote_user: Degrader brukar @@ -198,14 +199,17 @@ nn: destroy_email_domain_block: Fjern blokkering av e-postdomene destroy_instance: Slett domene destroy_ip_block: Slett IP-regel + destroy_relay: Slett relé destroy_status: Slett status destroy_unavailable_domain: Slett utilgjengeleg domene destroy_user_role: Øydelegg rolle disable_2fa_user: Skruv av 2FA disable_custom_emoji: Skruv av tilpassa emoji + disable_relay: Skru av reléet disable_sign_in_token_auth_user: Slå av e-post-token-autentisering for brukar disable_user: Skruv av brukar enable_custom_emoji: Skruv på tilpassa emoji + enable_relay: Skru på reléet enable_sign_in_token_auth_user: Slå på e-post-token-autentisering for brukar enable_user: Skruv på brukar memorialize_account: Opprett minnekonto @@ -247,6 +251,7 @@ nn: create_domain_block_html: "%{name} blokkerte domenet %{target}" create_email_domain_block_html: "%{name} blokkerte e-postdomenet %{target}" create_ip_block_html: "%{name} oppretta ein regel for IP-en %{target}" + create_relay_html: "%{name} laga reléet %{target}" create_unavailable_domain_html: "%{name} stogga levering til domenet %{target}" create_user_role_html: "%{name} oppretta rolla %{target}" demote_user_html: "%{name} degraderte brukaren %{target}" @@ -258,14 +263,17 @@ nn: destroy_email_domain_block_html: "%{name} avblokkerte e-postdomenet %{target}" destroy_instance_html: "%{name} tømde domenet %{target}" destroy_ip_block_html: "%{name} sletta ein regel for IP-en %{target}" + destroy_relay_html: "%{name} sletta reléet %{target}" destroy_status_html: "%{name} fjerna innlegget frå %{target}" destroy_unavailable_domain_html: "%{name} tok opp att levering til domenet %{target}" 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_relay_html: "%{name} skrudde av reléet %{target}" disable_sign_in_token_auth_user_html: "%{name} deaktiverte e-post-token-autentisering for %{target}" disable_user_html: "%{name} slo av innlogging for brukaren %{target}" enable_custom_emoji_html: "%{name} aktiverte emojien %{target}" + enable_relay_html: "%{name} skrudde på reléet %{target}" enable_sign_in_token_auth_user_html: "%{name} aktiverte e-post-token-autentisering for %{target}" enable_user_html: "%{name} aktiverte innlogging for brukaren %{target}" memorialize_account_html: "%{name} endret %{target}s konto til en minneside" @@ -1381,6 +1389,9 @@ nn: following_html: one: Du skal til å fylgja opp til %{count} brukarkonto frå %{filename} og slutta å fylgja alle andre. other: Du skal til å fylgja opp til %{count} brukarkontoar frå %{filename} og slutta å fylgja alle andre. + lists_html: + one: Du er i ferd med å erstatta listene dine med innhaldet i %{filename}. Opptil %{count} konto vil bli lagt til i dei nye listene. + other: Du er i ferd med å erstatta listene dine med innhaldet i %{filename}. Opptil %{count} kontoar vil bli lagt til i dei nye listene. muting_html: one: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkonto frå %{filename}. other: Du skal til å byta ut lista di over dempa brukarkontoar med opp til %{count} brukarkontoar frå %{filename}. diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 8b2feb5193..0ff944e108 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -35,12 +35,12 @@ pt-BR: accounts: add_email_domain_block: Bloquear domínio de email approve: Aprovar - approved_msg: O registro de %{username} foi aprovado + approved_msg: Aprovado com sucesso o pedido de registro de %{username} are_you_sure: Você tem certeza? avatar: Imagem de perfil by_domain: Domínio change_email: - changed_msg: E-mail alterado! + changed_msg: E-mail alterado com sucesso! current_email: E-mail atual label: Alterar e-mail new_email: Novo e-mail @@ -187,6 +187,7 @@ pt-BR: create_domain_block: Bloquear domínio create_email_domain_block: Criar Bloqueio de Domínio de Email create_ip_block: Criar regra de IP + create_relay: Criar Retransmissão create_unavailable_domain: Criar domínio indisponível create_user_role: Criar cargo demote_user: Rebaixar usuário @@ -198,14 +199,17 @@ pt-BR: destroy_email_domain_block: Deletar bloqueio de domínio Email destroy_instance: Limpar domínio destroy_ip_block: Excluir regra de IP + destroy_relay: Excluir Retransmissão destroy_status: Excluir publicação destroy_unavailable_domain: Excluir domínio indisponível destroy_user_role: Destruir cargo disable_2fa_user: Desativar autenticação de dois fatores disable_custom_emoji: Desativar emoji personalizado + disable_relay: Desativar Retransmissão disable_sign_in_token_auth_user: Desativar autenticação via Token de Email para Usuário disable_user: Desativar usuário enable_custom_emoji: Ativar emoji personalizado + enable_relay: Ativar Retransmissão enable_sign_in_token_auth_user: Ativar autenticação via Token de Email para Usuário enable_user: Ativar usuário memorialize_account: Converter conta em memorial @@ -247,6 +251,7 @@ pt-BR: create_domain_block_html: "%{name} bloqueou o domínio %{target}" create_email_domain_block_html: "%{name} bloqueou o domínio de e-mail %{target}" create_ip_block_html: "%{name} criou a regra para o IP %{target}" + create_relay_html: "%{name} criou uma retransmissão %{target}" create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}" create_user_role_html: "%{name} criou o cargo %{target}" demote_user_html: "%{name} rebaixou o usuário %{target}" @@ -258,14 +263,17 @@ pt-BR: destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}" destroy_instance_html: "%{name} limpou o domínio %{target}" destroy_ip_block_html: "%{name} excluiu a regra para o IP %{target}" + destroy_relay_html: "%{name} excluiu uma retransmissão %{target}" destroy_status_html: "%{name} removeu a publicação de %{target}" destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}" destroy_user_role_html: "%{name} excluiu o cargo %{target}" disable_2fa_user_html: "%{name} desativou a exigência da autenticação de dois fatores para o usuário %{target}" disable_custom_emoji_html: "%{name} desativou o emoji %{target}" + disable_relay_html: "%{name} desativou uma retransmissão %{target}" disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por e-mail para %{target}" disable_user_html: "%{name} desativou o login para %{target}" enable_custom_emoji_html: "%{name} ativou o emoji %{target}" + enable_relay_html: "%{name} ativou uma retransmissão %{target}" enable_sign_in_token_auth_user_html: "%{name} ativou a autenticação via token por e-mail para %{target}" enable_user_html: "%{name} ativou o login para %{target}" memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial" @@ -1368,6 +1376,10 @@ pt-BR: merge_long: Manter os registros existentes e adicionar novos overwrite: Sobrescrever overwrite_long: Substituir os registros atuais com os novos + overwrite_preambles: + bookmarks_html: + one: Você está prestes a substituir seus salvos por até %{count} publicação de %{filename}. + other: Você está prestes a substituir seus salvos por até %{count} publicações de %{filename}. preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou. recent_imports: Importações recentes states: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 831f68b24b..8a84f22115 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -179,104 +179,112 @@ ru: whitelisted: В белом списке action_logs: action_types: - approve_appeal: Одобрить обжалование - approve_user: Утвердить + approve_appeal: Одобрение обжалований + approve_user: Утверждение регистраций assigned_to_self_report: Присвоение жалоб - change_email_user: Сменить e-mail для пользователя - change_role_user: Изменить роль пользователя + change_email_user: Смена e-mail пользователей + change_role_user: Смена ролей пользователей confirm_user: Подтверждение пользователей create_account_warning: Выдача предупреждения create_announcement: Создание объявлений - create_canonical_email_block: Создать блок электронной почты + create_canonical_email_block: Создание блокировок e-mail create_custom_emoji: Добавление эмодзи create_domain_allow: Разрешение доменов create_domain_block: Блокировка доменов - create_email_domain_block: Создать блок домена электронной почты + create_email_domain_block: Создание доменных блокировок e-mail create_ip_block: Создание правил для IP-адресов + create_relay: Создание ретранслятора create_unavailable_domain: Добавление домена в список недоступных - create_user_role: Создать роль + create_user_role: Создание ролей demote_user: Разжалование пользователей destroy_announcement: Удаление объявлений - destroy_canonical_email_block: Удалить блок электронной почты + destroy_canonical_email_block: Удаление блокировок e-mail destroy_custom_emoji: Удаление эмодзи destroy_domain_allow: Отзыв разрешений для доменов destroy_domain_block: Разблокировка доменов - destroy_email_domain_block: Удалить блок домена электронной почты + destroy_email_domain_block: Удаление доменных блокировок e-mail destroy_instance: Очистить домен destroy_ip_block: Удаление правил для IP-адресов + destroy_relay: Удаление ретранслятора destroy_status: Удаление постов destroy_unavailable_domain: Исключение доменов из списка недоступных - destroy_user_role: Удалить роль + destroy_user_role: Удаление ролей disable_2fa_user: Отключение 2FA disable_custom_emoji: Отключение эмодзи - disable_sign_in_token_auth_user: Отключить аутентификацию пользователя с помощью токена электронной почты + disable_relay: Отключение ретранслятора + disable_sign_in_token_auth_user: Отключение аутентификации по e-mail кодам disable_user: Заморозка пользователей enable_custom_emoji: Включение эмодзи - enable_sign_in_token_auth_user: Включить аутентификацию пользователя с помощью токена электронной почты + enable_relay: Включение ретранслятора + enable_sign_in_token_auth_user: Включение аутентификации по e-mail кодам enable_user: Разморозка пользователей memorialize_account: Присвоение пользователям статуса «мемориала» promote_user: Повышение пользователей - reject_appeal: Отклонить обжалование - reject_user: Отклонить + reject_appeal: Отклонение обжалований + reject_user: Отклонение регистраций remove_avatar_user: Удаление аватаров reopen_report: Возобновление жалоб - resend_user: Повторно отправить письмо с подтверждением + resend_user: Повторная отправка писем с подтверждением reset_password_user: Сброс пароля пользователей resolve_report: Отметка жалоб «решёнными» sensitive_account: Присвоение пользователям отметки «деликатного содержания» silence_account: Скрытие пользователей suspend_account: Блокировка пользователей unassigned_report: Снятие жалоб - unblock_email_account: Разблокировать e-mail адрес + unblock_email_account: Разблокировка e-mail адресов unsensitive_account: Снятие с пользователей отметки «деликатного содержания» unsilence_account: Отмена скрытия пользователей unsuspend_account: Разблокировка пользователей update_announcement: Обновление объявлений update_custom_emoji: Обновление эмодзи update_domain_block: Изменение блокировки домена - update_ip_block: Обновить правило для IP-адреса - update_report: Обновить рапорт + update_ip_block: Обновление правил для IP-адресов + update_report: Изменение жалоб update_status: Изменение постов - update_user_role: Обновить роль + update_user_role: Изменение ролей actions: - approve_appeal_html: "%{name} одобрил апелляцию на умеренное решение от %{target}" + approve_appeal_html: "%{name} одобрил(а) обжалование действий модерации от %{target}" approve_user_html: "%{name} утвердил(а) регистрацию %{target}" assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}" - change_email_user_html: "%{name} изменил адрес электронной почты пользователя %{target}" + change_email_user_html: "%{name} cменил(а) e-mail адрес пользователя %{target}" change_role_user_html: "%{name} изменил(а) роль %{target}" - confirm_user_html: "%{name} подтвержденный адрес электронной почты пользователя %{target}" + confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}" create_account_warning_html: "%{name} выдал(а) предупреждение %{target}" create_announcement_html: "%{name} создал(а) новое объявление %{target}" - create_canonical_email_block_html: "%{name} заблокировал письмо с хэшем %{target}" + create_canonical_email_block_html: "%{name} заблокировал(а) e-mail с хешем %{target}" create_custom_emoji_html: "%{name} загрузил(а) новый эмодзи %{target}" create_domain_allow_html: "%{name} разрешил(а) федерацию с доменом %{target}" create_domain_block_html: "%{name} заблокировал(а) домен %{target}" - create_email_domain_block_html: "%{name} заблокированный почтовый домен %{target}" + create_email_domain_block_html: "%{name} заблокировал(а) e-mail домен %{target}" create_ip_block_html: "%{name} создал(а) правило для IP %{target}" + create_relay_html: "%{name} создал(а) ретранслятор %{target}" create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}" create_user_role_html: "%{name} создал(а) роль %{target}" demote_user_html: "%{name} разжаловал(а) пользователя %{target}" destroy_announcement_html: "%{name} удалил(а) объявление %{target}" - destroy_canonical_email_block_html: "%{name} разблокированное письмо с хэшем %{target}" + destroy_canonical_email_block_html: "%{name} снял(а) блокировку e-mail с хэшем %{target}" destroy_custom_emoji_html: "%{name} удалил(а) эмодзи %{target}" destroy_domain_allow_html: "%{name} запретил(а) федерацию с доменом %{target}" destroy_domain_block_html: "%{name} снял(а) блокировку с домена %{target}" - destroy_email_domain_block_html: "%{name} разблокированный почтовый домен %{target}" + destroy_email_domain_block_html: "%{name} снял(а) блокировку с e-mail домена %{target}" destroy_instance_html: "%{name} очистил(а) данные для домена %{target}" destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}" + destroy_relay_html: "%{name} удалил(а) ретранслятор %{target}" destroy_status_html: "%{name} удалил(а) пост пользователя %{target}" destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}" destroy_user_role_html: "%{name} удалил(а) роль %{target}" disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}" disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}" - disable_sign_in_token_auth_user_html: "%{name} отключил аутентификацию по маркеру электронной почты для %{target}" + disable_relay_html: "%{name} отключил(а) ретранслятор %{target}" + disable_sign_in_token_auth_user_html: "%{name} отключил(а) аутентификацию по e-mail кодам для %{target}" disable_user_html: "%{name} заморозил(а) пользователя %{target}" enable_custom_emoji_html: "%{name} включил(а) эмодзи %{target}" - enable_sign_in_token_auth_user_html: "%{name} включил аутентификацию с помощью маркера электронной почты для %{target}" + enable_relay_html: "%{name} включил(а) ретранслятор %{target}" + enable_sign_in_token_auth_user_html: "%{name} включил(а) аутентификацию по e-mail кодам для %{target}" enable_user_html: "%{name} разморозил(а) пользователя %{target}" memorialize_account_html: "%{name} перевел(а) учётную запись пользователя %{target} в статус памятника" promote_user_html: "%{name} повысил(а) пользователя %{target}" - reject_appeal_html: "%{name} отклонил апелляцию на модерацию от %{target}" + reject_appeal_html: "%{name} отклонил(а) обжалование действий модерации от %{target}" reject_user_html: "%{name} отклонил(а) регистрацию %{target}" remove_avatar_user_html: "%{name} убрал(а) аватарку пользователя %{target}" reopen_report_html: "%{name} повторно открыл(а) жалобу %{target}" @@ -295,7 +303,7 @@ ru: update_custom_emoji_html: "%{name} обновил(а) эмодзи %{target}" update_domain_block_html: "%{name} обновил(а) блокировку домена для %{target}" update_ip_block_html: "%{name} изменил(а) правило для IP %{target}" - update_report_html: "%{name} обновленный отчет %{target}" + update_report_html: "%{name} изменил(а) жалобу %{target}" update_status_html: "%{name} изменил(а) пост пользователя %{target}" update_user_role_html: "%{name} изменил(а) роль %{target}" deleted_account: удалённая учётная запись diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index b2ebf5666d..962f062534 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -46,7 +46,7 @@ ko: current_password: 보안을 위해 현재 계정의 암호를 입력해주세요 current_username: 확인을 위해, 현재 계정의 사용자명을 입력해주세요 digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기 - email: 확인용 이메일을 보냈습니다. + email: 확인용 이메일을 보내게 됩니다 header: WEBP, PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소됨 inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다 irreversible: 필터링 된 게시물은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다 diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index d9204efaaa..77482d8012 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -10,6 +10,7 @@ lt: indexable: Tavo vieši įrašai gali būti rodomi Mastodon paieškos rezultatuose. Žmonės, kurie bendravo su tavo įrašais, gali jų ieškoti nepriklausomai nuo to. note: 'Gali @paminėti kitus žmones arba #saitažodžius.' show_collections: Žmonės galės peržiūrėti tavo sekimus ir sekėjus. Žmonės, kuriuos seki, matys, kad juos seki, nepaisant to. + unlocked: Žmonės galės jus sekti nepaprašę patvirtinimo. Panaikinkite žymėjimą, jei norite peržiūrėti sekimo prašymus ir pasirinkti, ar priimti, ar atmesti naujus sekėjus. account_alias: acct: Nurodyk paskyros, iš kurios nori perkelti, naudotojo vardą@domeną account_migration: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 5318059f4a..2bb31aa0f9 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,7 +3,7 @@ nl: simple_form: hints: account: - attribution_domains_as_text: Eén per regel. Beschermt tegen valse toeschrijvingen. + attribution_domains_as_text: Eén per regel. Beschermt tegen ongeldige attributies. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 008af2c5ac..46b7af4bdb 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -10,6 +10,7 @@ nn: indexable: Dei offentlege innlegga dine kan dukka opp i søkjeresultat på Mastodon. Folk som har reagert på oinnlegga dine kan uansett søkja gjennom dei. note: 'Du kan @nemne folk eller #emneknaggar.' show_collections: Andre kan sjå kven du fylgjer og kven som fylgjer deg. Dei du fylgjer kan alltid sjå at du fylgjer dei. + unlocked: Alle kan fylgja deg utan å måtta be om det. Vel bort dersom du vil gå gjennom førespurnader om å fylgja deg og seia ja eller nei til kvar av dei. account_alias: acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta frå account_migration: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 4fba45098d..c5ff55c15d 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -10,6 +10,7 @@ pl: indexable: Twoje publiczne wpisy mogą pojawiać się w wynikach wyszukiwania w Mastodonie. Użytkownicy, którzy wchodzili w interakcje z twoimi wpisami będą mogli je znaleźć niezależnie od tego ustawienia. note: 'Możesz @wspomnieć użytkowników albo #hasztagi.' show_collections: Twoja lista obserwowanych i obserwujących będzie widoczna dla wszystkich. Użytkownicy których obserwujesz będą jednak o tym wiedzieli. + unlocked: Inni użytkownicy będą mogli cię obserwować bez proszenia o zgodę. Odznacz, jeżeli chcesz aprobować obserwujących ręcznie po przejrzeniu próśb o obserwowanie. account_alias: acct: Określ nazwę@domenę konta z którego chcesz się przenieść account_migration: diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index d8822d35b9..37626ff9fd 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -10,6 +10,7 @@ ru: indexable: Ваши публичные сообщения могут появляться в результатах поиска на Mastodon. Люди, которые взаимодействовали с вашими сообщениями, могут искать их независимо от этого. note: 'Вы можете @упоминать других людей или #хэштеги.' show_collections: Люди смогут просматривать список ваших подписок и подписчиков. Люди, за которыми вы следуете, будут видеть, что вы подписаны на них, несмотря ни на что. + unlocked: Люди смогут подписываться на вас, не запрашивая подтверждения. Снимите флажок, если вы хотите просматривать запросы на подписку и выбирать, принимать или отклонять новых подписчиков. account_alias: acct: Укажите имя_пользователя@домен учётной записи, с которой вы собираетесь мигрировать account_migration: diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index b8303e2945..72c3f000f6 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -10,6 +10,7 @@ sv: indexable: Dina offentliga inlägg kan visas i sökresultat på Mastodon. Personer som har interagerat med dina inlägg kan söka dem oavsett. note: 'Du kan @nämna andra personer eller #hashtaggar.' show_collections: Andra kan se vem du följer och vem som följer dig. De du följer kan alltid se att du följer dem. + unlocked: Andra kommer att kunna följa dig utan att begära godkännande. Avmarkera om du vill granska följeslagare och välja om du vill acceptera eller avvisa nya följare. account_alias: acct: Ange användarnamn@domän för kontot som du vill flytta från account_migration: diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 6cff74fb50..e5becbd916 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -187,6 +187,7 @@ sq: create_domain_block: Krijo Bllokim Përkatësie create_email_domain_block: Krijoni Bllokim Përkatësie Email-esh create_ip_block: Krijoni Rregull IP + create_relay: Krijoni Rele create_unavailable_domain: Krijo Përkatësi të Papërdorshme create_user_role: Krijoni Rol demote_user: Zhgradoje Përdoruesin @@ -198,14 +199,17 @@ sq: destroy_email_domain_block: Fshini Bllokim Përkatësie Email-esh destroy_instance: Spastroje Përkatësinë destroy_ip_block: Fshini Rregull IP + destroy_relay: Fshije Relenë destroy_status: Fshi Gjendje destroy_unavailable_domain: Fshi Përkatësi të Papërdorshme destroy_user_role: Asgjësoje Rolin disable_2fa_user: Çaktivizo 2FA-në disable_custom_emoji: Çaktivizo Emotikon Vetjak + disable_relay: Çaktivizoje Relenë disable_sign_in_token_auth_user: Çaktivizoni për Përdoruesin Mirëfilltësim Me Token Email-i disable_user: Çaktivizo Përdorues enable_custom_emoji: Aktivizo Emotikon Vetjak + enable_relay: Aktivizoje Relenë enable_sign_in_token_auth_user: Aktivizoni për Përdoruesin Mirëfilltësim Me Token Email-i enable_user: Aktivizo Përdorues memorialize_account: Bëje Llogari Përkujtimore @@ -247,6 +251,7 @@ sq: create_domain_block_html: "%{name} bllokoi përkatësinë %{target}" create_email_domain_block_html: "%{name} bllokoi përkatësinë email %{target}" create_ip_block_html: "%{name} krijoi rregull për IP-në %{target}" + create_relay_html: "%{name} krijoi një rele %{target}" create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}" create_user_role_html: "%{name} krijoi rolin %{target}" demote_user_html: "%{name} zhgradoi përdoruesin %{target}" @@ -258,14 +263,17 @@ sq: destroy_email_domain_block_html: "%{name} zhbllokoi përkatësi email %{target}" destroy_instance_html: "%{name} spastroi përkatësinë %{target}" destroy_ip_block_html: "%{name} fshiu rregull për IP-në %{target}" + destroy_relay_html: "%{name} fshiu relenë %{target}" destroy_status_html: "%{name} hoqi gjendje nga %{target}" destroy_unavailable_domain_html: "%{name} rinisi dërgimin drejt përkatësisë %{target}" destroy_user_role_html: "%{name} fshiu rolin %{target}" disable_2fa_user_html: "%{name} çaktivizoi domosdoshmërinë për dyfaktorësh për përdoruesin %{target}" disable_custom_emoji_html: "%{name} çaktivizoi emoxhin %{target}" + disable_relay_html: "%{name} çaktivizoi relenë %{target}" disable_sign_in_token_auth_user_html: "%{name} çaktivizoi mirëfilltësim me token email për %{target}" disable_user_html: "%{name} çaktivizoi hyrje për përdoruesin %{target}" enable_custom_emoji_html: "%{name} aktivizoi emoxhin %{target}" + enable_relay_html: "%{name} aktivizoi relenë %{target}" enable_sign_in_token_auth_user_html: "%{name} aktivizoi mirëfilltësim me token email për %{target}" enable_user_html: "%{name} aktivizoi hyrje për përdoruesin %{target}" memorialize_account_html: "%{name} e shndërroi llogarinë e %{target} në një faqe përkujtimore" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index b2ec21b82e..c41795a168 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -187,6 +187,7 @@ sv: create_domain_block: Skapa blockerad domän create_email_domain_block: Skapa E-post domän block create_ip_block: Skapa IP-regel + create_relay: Skapa ombud create_unavailable_domain: Skapa otillgänglig domän create_user_role: Skapa roll demote_user: Degradera användare @@ -198,14 +199,17 @@ sv: destroy_email_domain_block: Ta bort E-post domän block destroy_instance: Rensa domänen destroy_ip_block: Radera IP-regel + destroy_relay: Radera ombud destroy_status: Radera inlägg destroy_unavailable_domain: Ta bort otillgänglig domän destroy_user_role: Förstör roll disable_2fa_user: Inaktivera 2FA disable_custom_emoji: Inaktivera egna emojis + disable_relay: Inaktivera ombud disable_sign_in_token_auth_user: Inaktivera autentisering med pollett via e-post för användare disable_user: Inaktivera användare enable_custom_emoji: Aktivera egna emojis + enable_relay: Aktivera ombud enable_sign_in_token_auth_user: Aktivera autentisering med pollett via e-post för användare enable_user: Aktivera användare memorialize_account: Minnesmärk konto @@ -247,6 +251,7 @@ sv: create_domain_block_html: "%{name} blockerade domänen %{target}" create_email_domain_block_html: "%{name} blockerade e-post domänet%{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" + create_relay_html: "%{name} skapade ombudet %{target}" create_unavailable_domain_html: "%{name} stoppade leverans till domänen %{target}" create_user_role_html: "%{name} skapade rollen %{target}" demote_user_html: "%{name} nedgraderade användare %{target}" @@ -258,14 +263,17 @@ sv: destroy_email_domain_block_html: "%{name} avblockerade e-post domänet %{target}" destroy_instance_html: "%{name} rensade domän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" + destroy_relay_html: "%{name} tog bort ombudet %{target}" destroy_status_html: "%{name} tog bort inlägget av %{target}" destroy_unavailable_domain_html: "%{name} återupptog leverans till domänen %{target}" destroy_user_role_html: "%{name} raderade rollen %{target}" disable_2fa_user_html: "%{name} inaktiverade tvåfaktorsautentiseringskrav för användaren %{target}" disable_custom_emoji_html: "%{name} inaktiverade emoji %{target}" + disable_relay_html: "%{name} inaktiverade ombudet %{target}" disable_sign_in_token_auth_user_html: "%{name} inaktiverade e-posttokenautentisering för %{target}" disable_user_html: "%{name} stängde av inloggning för användaren %{target}" enable_custom_emoji_html: "%{name} aktiverade emoji %{target}" + enable_relay_html: "%{name} aktiverat ombudet %{target}" enable_sign_in_token_auth_user_html: "%{name} aktiverade e-posttokenautentisering för %{target}" enable_user_html: "%{name} aktiverade inloggning för användaren %{target}" memorialize_account_html: "%{name} gjorde %{target}s konto till en minnessida" @@ -571,7 +579,7 @@ sv: relationships: title: "%{acct}s relationer" relays: - add_new: Lägg till nytt relä + add_new: Lägg till nytt ombud delete: Radera description_html: Ett federeringsombud är en mellanliggande server som utbyter höga antal offentliga inlägg mellan servrar som prenumererar på och publicerar till det. Det kan hjälpa små och medelstora servrar upptäcka innehåll från fediversumet, vilket annars skulle kräva att lokala användare manuellt följer personer på fjärrservrar. disable: Inaktivera @@ -582,10 +590,10 @@ sv: inbox_url: Ombuds-URL pending: Väntar på ombudets godkännande save_and_enable: Spara och aktivera - setup: Konfigurera en relä-anslutning - signatures_not_enabled: Ombud fungerar inte korrekt medan säkert läge eller begränsat federeringsläge är aktiverade + setup: Konfigurera ett ombud + signatures_not_enabled: Ombud fungerar inte korrekt om säkert läge eller begränsat federeringsläge är aktiverade status: Status - title: Relä + title: Ombud report_notes: created_msg: Anmälningsanteckning har skapats! destroyed_msg: Anmälningsanteckning har raderats! diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 942ee2fbf2..88636ef21b 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -187,6 +187,7 @@ tr: create_domain_block: Engellenen Alan Adı Oluştur create_email_domain_block: E-Posta Alan Adı Engeli Oluştur create_ip_block: IP kuralı oluştur + create_relay: Aktarıcı Oluştur create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur create_user_role: Rol Oluştur demote_user: Kullanıcıyı Düşür @@ -198,14 +199,17 @@ tr: destroy_email_domain_block: E-posta Alan Adı Engelini Sil destroy_instance: Alan adını temizle destroy_ip_block: IP kuralını sil + destroy_relay: Aktarıcı Sil destroy_status: Durumu Sil destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil destroy_user_role: Rolü Kaldır disable_2fa_user: 2AD Kapat disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak + disable_relay: Aktarıcıyı Devre Dışı Bırak disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Devre Dışı Bırak disable_user: Kullanıcıyı Devre Dışı Bırak enable_custom_emoji: Özel İfadeyi Etkinleştir + enable_relay: Aktarıcıyı Etkinleştir enable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Etkinleştir enable_user: Kullanıcıyı Etkinleştir memorialize_account: Hesabı Anıtlaştır @@ -247,6 +251,7 @@ tr: create_domain_block_html: "%{name}, %{target} alan adını engelledi" create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi" create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu" + create_relay_html: "%{name}, %{target} aktarıcısını oluşturdu" create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu" create_user_role_html: "%{name}, %{target} rolünü oluşturdu" demote_user_html: "%{name}, %{target} kullanıcısını düşürdü" @@ -258,14 +263,17 @@ tr: destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı" destroy_instance_html: "%{name}, %{target} alan adını temizledi" destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi" + destroy_relay_html: "%{name}, %{target} aktarıcısını sildi" destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı" destroy_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı sürdürdü" destroy_user_role_html: "%{name}, %{target} rolünü sildi" disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı" disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı" + disable_relay_html: "%{name}, %{target} aktarıcısını devre dışı bıraktı" disable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı" disable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı devre dışı bıraktı" enable_custom_emoji_html: "%{name}, %{target} emojisini etkinleştirdi" + enable_relay_html: "%{name}, %{target} aktarıcısını etkinleştirdi" enable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı etkinleştirdi" enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi" memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü" diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 172ce55a3d..1d04f796f8 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -184,6 +184,7 @@ vi: create_domain_block: Chặn máy chủ create_email_domain_block: Chặn tên miền email create_ip_block: Chặn IP + create_relay: Tạo relay create_unavailable_domain: Bỏ liên hợp create_user_role: Tạo vai trò demote_user: Hạ vai trò @@ -195,14 +196,17 @@ vi: destroy_email_domain_block: Bỏ chặn tên miền email destroy_instance: Thanh trừng máy chủ destroy_ip_block: Bỏ chặn IP + destroy_relay: Xóa relay destroy_status: Xóa tút destroy_unavailable_domain: Cho phép liên hợp destroy_user_role: Xóa vai trò disable_2fa_user: Vô hiệu hóa 2FA disable_custom_emoji: Vô hiệu hóa emoji + disable_relay: Tắt relay disable_sign_in_token_auth_user: Tắt xác minh bằng email cho người dùng disable_user: Vô hiệu hóa đăng nhập enable_custom_emoji: Cho phép emoji + enable_relay: Bật relay enable_sign_in_token_auth_user: Bật xác minh bằng email cho người dùng enable_user: Cho phép đăng nhập memorialize_account: Gán tưởng niệm @@ -244,6 +248,7 @@ vi: create_domain_block_html: "%{name} đã chặn máy chủ %{target}" create_email_domain_block_html: "%{name} đã chặn tên miền email %{target}" create_ip_block_html: "%{name} đã chặn IP %{target}" + create_relay_html: "%{name} đã tạo relay %{target}" create_unavailable_domain_html: "%{name} đã bỏ liên hợp với máy chủ %{target}" create_user_role_html: "%{name} đã tạo vai trò %{target}" demote_user_html: "%{name} đã hạ vai trò của %{target}" @@ -255,14 +260,17 @@ vi: destroy_email_domain_block_html: "%{name} đã bỏ chặn email %{target}" destroy_instance_html: "%{name} đã thanh trừng máy chủ %{target}" destroy_ip_block_html: "%{name} đã bỏ chặn IP %{target}" + destroy_relay_html: "%{name} đã xóa relay %{target}" destroy_status_html: "%{name} đã xóa tút của %{target}" destroy_unavailable_domain_html: "%{name} tiếp tục liên hợp với máy chủ %{target}" destroy_user_role_html: "%{name} đã xóa vai trò %{target}" disable_2fa_user_html: "%{name} đã vô hiệu hóa xác minh hai bước của %{target}" disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}" + disable_relay_html: "%{name} đã tắt relay %{target}" disable_sign_in_token_auth_user_html: "%{name} đã tắt xác minh email của %{target}" disable_user_html: "%{name} đã vô hiệu hóa đăng nhập %{target}" enable_custom_emoji_html: "%{name} đã cho phép emoji %{target}" + enable_relay_html: "%{name} đã bật relay %{target}" enable_sign_in_token_auth_user_html: "%{name} đã bật xác minh email của %{target}" enable_user_html: "%{name} đã bỏ vô hiệu hóa đăng nhập %{target}" memorialize_account_html: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm" diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 209683e21c..36d316649c 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -184,6 +184,7 @@ zh-CN: create_domain_block: 封禁新域名 create_email_domain_block: 封禁新的邮箱域名 create_ip_block: 新建 IP 规则 + create_relay: 创建中继站 create_unavailable_domain: 创建不可用域名 create_user_role: 创建角色 demote_user: 给用户降职 @@ -195,14 +196,17 @@ zh-CN: destroy_email_domain_block: 解除邮箱域名封禁 destroy_instance: 删除实例 destroy_ip_block: 删除 IP 规则 + destroy_relay: 删除中继站 destroy_status: 删除嘟文 destroy_unavailable_domain: 删除不可用域名 destroy_user_role: 销毁角色 disable_2fa_user: 停用双因素认证 disable_custom_emoji: 禁用自定义表情符号 + disable_relay: 禁用中继站 disable_sign_in_token_auth_user: 为用户禁用邮件令牌身份验证 disable_user: 禁用用户 enable_custom_emoji: 启用自定义表情符号 + enable_relay: 启用中继站 enable_sign_in_token_auth_user: 为用户启用邮件令牌身份验证 enable_user: 启用用户 memorialize_account: 将账户设为追悼模式 @@ -244,6 +248,7 @@ zh-CN: create_domain_block_html: "%{name} 屏蔽了域名 %{target}" create_email_domain_block_html: "%{name} 封禁了邮箱域名 %{target}" create_ip_block_html: "%{name} 为 IP %{target} 创建了规则" + create_relay_html: "%{name} 添加了中继站 %{target}" create_unavailable_domain_html: "%{name} 停止了向域名 %{target} 的投递" create_user_role_html: "%{name} 创建了 %{target} 角色" demote_user_html: "%{name} 对用户 %{target} 进行了降任操作" @@ -255,14 +260,17 @@ zh-CN: destroy_email_domain_block_html: "%{name} 解封了邮箱域名 %{target}" destroy_instance_html: "%{name} 删除了实例 %{target}" destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则" + destroy_relay_html: "%{name} 删除了中继站 %{target}" destroy_status_html: "%{name} 删除了 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递" destroy_user_role_html: "%{name} 删除了 %{target} 角色" disable_2fa_user_html: "%{name} 停用了用户 %{target} 的双因素认证" disable_custom_emoji_html: "%{name} 停用了自定义表情 %{target}" + disable_relay_html: "%{name} 停用了中继站 %{target}" disable_sign_in_token_auth_user_html: "%{name} 为 %{target} 禁用了邮件令牌身份验证" disable_user_html: "%{name} 将用户 %{target} 设置为禁止登录" enable_custom_emoji_html: "%{name} 启用了自定义表情 %{target}" + enable_relay_html: "%{name} 启用了中继站 %{target}" enable_sign_in_token_auth_user_html: "%{name} 为 %{target} 启用了邮件令牌身份验证" enable_user_html: "%{name} 将用户 %{target} 设置为允许登录" memorialize_account_html: "%{name} 将 %{target} 设置为追悼账户" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index d8fef10816..495a6a4742 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -184,6 +184,7 @@ zh-TW: create_domain_block: 新增網域封鎖 create_email_domain_block: 新增電子郵件網域封鎖 create_ip_block: 新增IP規則 + create_relay: 新增中繼 create_unavailable_domain: 新增無法存取的網域 create_user_role: 新增角色 demote_user: 將用戶降級 @@ -195,14 +196,17 @@ zh-TW: destroy_email_domain_block: 刪除電子郵件網域封鎖 destroy_instance: 清除網域 destroy_ip_block: 刪除 IP 規則 + destroy_relay: 刪除中繼 destroy_status: 刪除狀態 destroy_unavailable_domain: 刪除無法存取的網域 destroy_user_role: 移除角色 disable_2fa_user: 停用兩階段驗證 disable_custom_emoji: 停用自訂 emoji 表情符號 + disable_relay: 停用中繼 disable_sign_in_token_auth_user: 停用使用者電子郵件 token 驗證 disable_user: 停用帳號 enable_custom_emoji: 啟用自訂 emoji 表情符號 + enable_relay: 啟用中繼 enable_sign_in_token_auth_user: 啟用使用者電子郵件 token 驗證 enable_user: 啓用帳號 memorialize_account: 設定成追悼帳號 @@ -244,6 +248,7 @@ zh-TW: create_domain_block_html: "%{name} 已封鎖網域 %{target}" create_email_domain_block_html: "%{name} 已封鎖電子郵件網域 %{target}" create_ip_block_html: "%{name} 已設定 IP %{target} 的規則" + create_relay_html: "%{name} 已新增中繼 %{target}" create_unavailable_domain_html: "%{name} 停止發送至網域 %{target}" create_user_role_html: "%{name} 已新增 %{target} 角色" demote_user_html: "%{name} 將使用者 %{target} 降級" @@ -255,14 +260,17 @@ zh-TW: destroy_email_domain_block_html: "%{name} 已解除封鎖電子郵件網域 %{target}" destroy_instance_html: "%{name} 已清除網域 %{target}" destroy_ip_block_html: "%{name} 已刪除 IP %{target} 的規則" + destroy_relay_html: "%{name} 已刪除中繼 %{target}" destroy_status_html: "%{name} 已刪除 %{target} 的嘟文" destroy_unavailable_domain_html: "%{name} 已恢復對網域 %{target} 的發送" destroy_user_role_html: "%{name} 已刪除 %{target} 角色" disable_2fa_user_html: "%{name} 已停用使用者 %{target} 的兩階段驗證 (2FA) " disable_custom_emoji_html: "%{name} 已停用自訂 emoji 表情符號 %{target}" + disable_relay_html: "%{name} 已停用中繼 %{target}" disable_sign_in_token_auth_user_html: "%{name} 已停用 %{target} 之使用者電子郵件 token 驗證" disable_user_html: "%{name} 將使用者 %{target} 設定為禁止登入" enable_custom_emoji_html: "%{name} 已啟用自訂 emoji 表情符號 %{target}" + enable_relay_html: "%{name} 已啟用中繼 %{target}" enable_sign_in_token_auth_user_html: "%{name} 已啟用 %{target} 之使用者電子郵件 token 驗證" enable_user_html: "%{name} 將使用者 %{target} 設定為允許登入" memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳號" @@ -560,7 +568,7 @@ zh-TW: relationships: title: "%{acct} 的關係" relays: - add_new: 新增中繼站 + add_new: 新增中繼 delete: 刪除 description_html: "聯邦中繼站 是種中繼伺服器,會於訂閱並推送至此中繼站的伺服器之間交換大量的公開嘟文。中繼站也能協助小型或中型伺服器自聯邦宇宙中探索內容,而無須本地使用者手動跟隨遠端伺服器的其他使用者。" disable: 停用 From 95d7120ce6671ec1765e8435b248eb2dc7d8ee02 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 13 Nov 2024 04:35:21 -0500 Subject: [PATCH 369/550] Misc gem version bumps (#32854) --- Gemfile.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 743a78ad54..b832a18df6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -97,7 +97,7 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.1001.0) + aws-partitions (1.1004.0) aws-sdk-core (3.212.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -112,7 +112,7 @@ GEM aws-sigv4 (~> 1.5) aws-sigv4 (1.10.1) aws-eventstream (~> 1, >= 1.0.2) - azure-blob (0.5.2) + azure-blob (0.5.3) rexml base64 (0.2.0) bcp47_spec (0.2.1) @@ -178,7 +178,7 @@ GEM activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) - date (3.3.4) + date (3.4.0) debug (1.9.2) irb (~> 1.10) reline (>= 0.3.8) @@ -189,10 +189,10 @@ GEM railties (>= 4.1.0) responders warden (~> 1.2.3) - devise-two-factor (6.0.0) - activesupport (~> 7.0) + devise-two-factor (6.1.0) + activesupport (>= 7.0, < 8.1) devise (~> 4.0) - railties (~> 7.0) + railties (>= 7.0, < 8.1) rotp (~> 6.0) devise_pam_authenticatable2 (9.2.0) devise (>= 4.0.0) @@ -330,7 +330,7 @@ GEM azure-blob (~> 0.5.2) hashie (~> 5.0) jmespath (1.6.2) - json (2.7.4) + json (2.8.1) json-canonicalization (1.0.0) json-jwt (1.15.3.1) activesupport (>= 4.2) @@ -407,16 +407,16 @@ GEM mime-types (3.6.0) logger mime-types-data (~> 3.2015) - mime-types-data (3.2024.1001) + mime-types-data (3.2024.1105) mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.25.1) - msgpack (1.7.3) + msgpack (1.7.5) multi_json (1.15.0) mutex_m (0.2.0) net-http (0.5.0) uri - net-imap (0.5.0) + net-imap (0.5.1) date net-protocol net-ldap (0.19.0) @@ -554,10 +554,10 @@ GEM opentelemetry-semantic_conventions (1.10.1) opentelemetry-api (~> 1.0) orm_adapter (0.5.0) - ostruct (0.6.0) + ostruct (0.6.1) ox (2.14.18) parallel (1.26.3) - parser (3.3.5.0) + parser (3.3.6.0) ast (~> 2.4.1) racc parslet (2.0.0) @@ -579,7 +579,7 @@ GEM activesupport (>= 7.0.0) rack railties (>= 7.0.0) - psych (5.1.2) + psych (5.2.0) stringio public_suffix (6.0.1) puma (6.4.3) @@ -664,7 +664,7 @@ GEM redlock (1.3.2) redis (>= 3.0.0, < 6.0) regexp_parser (2.9.2) - reline (0.5.10) + reline (0.5.11) io-console (~> 0.5) request_store (1.6.0) rack (>= 1.4) @@ -673,7 +673,7 @@ GEM railties (>= 5.2) rexml (3.3.9) rotp (6.3.0) - rouge (4.4.0) + rouge (4.5.1) rpam2 (4.0.2) rqrcode (2.2.0) chunky_png (~> 1.0) @@ -693,7 +693,7 @@ GEM rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (7.0.1) + rspec-rails (7.1.0) actionpack (>= 7.0) activesupport (>= 7.0) railties (>= 7.0) @@ -794,7 +794,7 @@ GEM stackprof (0.2.26) stoplight (4.1.0) redlock (~> 1.0) - stringio (3.1.1) + stringio (3.1.2) strong_migrations (2.1.0) activerecord (>= 6.1) swd (1.3.0) @@ -867,7 +867,7 @@ GEM rack-proxy (>= 0.6.1) railties (>= 5.2) semantic_range (>= 2.3.0) - webrick (1.8.2) + webrick (1.9.0) websocket (1.2.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) From 8f5cbf537026915215d84945efad9a878ac8cdb4 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 13 Nov 2024 11:22:11 +0100 Subject: [PATCH 370/550] Fix list creation limit check (#32869) --- app/models/list.rb | 2 +- spec/models/list_spec.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/list.rb b/app/models/list.rb index d4915f56fa..bb7dd4cfc0 100644 --- a/app/models/list.rb +++ b/app/models/list.rb @@ -34,7 +34,7 @@ class List < ApplicationRecord private def validate_account_lists_limit - errors.add(:base, I18n.t('lists.errors.limit')) if account.lists.count >= PER_ACCOUNT_LIMIT + errors.add(:base, I18n.t('lists.errors.limit')) if account.owned_lists.count >= PER_ACCOUNT_LIMIT end def clean_feed_manager diff --git a/spec/models/list_spec.rb b/spec/models/list_spec.rb index 62a84dfebf..48c273d3ec 100644 --- a/spec/models/list_spec.rb +++ b/spec/models/list_spec.rb @@ -11,7 +11,11 @@ RSpec.describe List do context 'when account has hit max list limit' do let(:account) { Fabricate :account } - before { stub_const 'List::PER_ACCOUNT_LIMIT', 0 } + before do + stub_const 'List::PER_ACCOUNT_LIMIT', 1 + + Fabricate(:list, account: account) + end context 'when creating a new list' do it { is_expected.to_not allow_value(account).for(:account).against(:base).with_message(I18n.t('lists.errors.limit')) } From 03ecf5df3bee1c667bfdba26887613c8620dc5c5 Mon Sep 17 00:00:00 2001 From: Jaz-Michael King <141073565+jmking-iftas@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:10:01 -0500 Subject: [PATCH 371/550] Adds a range of reserved usernames to reduce potential misuse by malicious actors (#32828) --- config/settings.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/config/settings.yml b/config/settings.yml index 297bf0281d..673a4c1be2 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -21,14 +21,27 @@ defaults: &defaults trends_as_landing_page: true trendable_by_default: false reserved_usernames: + - abuse + - account + - accounts - admin - - support - - help - - root - - webmaster + - administration - administrator + - admins + - help + - helpdesk + - instance - mod - moderator + - moderators + - mods + - owner + - root + - security + - server + - staff + - support + - webmaster disallowed_hashtags: # space separated string or list of hashtags without the hash bootstrap_timeline_accounts: '' activity_api_enabled: true From 7fc8292ea540fda71434d24dd78622d8e94d024c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:08:10 +0100 Subject: [PATCH 372/550] Update dependency react-textarea-autosize to v8.5.5 (#32872) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9e3ec41017..7fd68ac8c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14787,15 +14787,15 @@ __metadata: linkType: hard "react-textarea-autosize@npm:^8.4.1": - version: 8.5.4 - resolution: "react-textarea-autosize@npm:8.5.4" + version: 8.5.5 + resolution: "react-textarea-autosize@npm:8.5.5" dependencies: "@babel/runtime": "npm:^7.20.13" use-composed-ref: "npm:^1.3.0" use-latest: "npm:^1.2.1" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/ea92fda2128983c1a8e84c74706ffb4b8bfa1a19c803d210868ec031c1ac3b8ceee8028766ef5d91017265da2bdccf6a85e5b6e5d553005e839f0c47e5758b43 + checksum: 10c0/d708a31b39a409d0246cd8afbd956ce51db58ce0b6411b9d4e1dc876ce93c329d20875933ce5d337662fdcd3699596966dc630149236fee2835d74e302404c98 languageName: node linkType: hard From 980970ddfd659393877cc4fa87d2811bbd0e0a79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:15:49 +0100 Subject: [PATCH 373/550] Update dependency browser to v6.1.0 (#32878) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b832a18df6..106fb0d0fd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -131,7 +131,7 @@ GEM msgpack (~> 1.2) brakeman (6.2.2) racc - browser (6.0.0) + browser (6.1.0) brpoplpush-redis_script (0.1.3) concurrent-ruby (~> 1.0, >= 1.0.5) redis (>= 1.0, < 6) From aaebf142aac8ae0f52faa847a9e0c206da57a555 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:39:33 +0100 Subject: [PATCH 374/550] New Crowdin Translations (automated) (#32884) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 + app/javascript/mastodon/locales/eo.json | 5 +++-- app/javascript/mastodon/locales/fr-CA.json | 3 +++ app/javascript/mastodon/locales/fr.json | 3 +++ app/javascript/mastodon/locales/it.json | 1 + app/javascript/mastodon/locales/lad.json | 25 ++++++++++++++++++++++ config/locales/bg.yml | 18 ++++++++++++++++ config/locales/es.yml | 24 ++++++++++----------- config/locales/lad.yml | 9 ++++++++ config/locales/simple_form.bg.yml | 3 +++ config/locales/simple_form.lad.yml | 1 + 11 files changed, 79 insertions(+), 14 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 54ed1cb8c8..5c7dfeb128 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -86,6 +86,7 @@ "alert.unexpected.title": "المعذرة!", "alt_text_badge.title": "نص بديل", "announcement.announcement": "إعلان", + "annual_report.summary.archetype.booster": "The cool-hunter", "attachments_list.unprocessed": "(غير معالَج)", "audio.hide": "إخفاء المقطع الصوتي", "block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 731e11f27a..6d8c82385b 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -90,6 +90,7 @@ "annual_report.summary.archetype.replier": "La plej societema", "annual_report.summary.followers.followers": "sekvantoj", "annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj", + "annual_report.summary.most_used_app.most_used_app": "plej uzita apo", "annual_report.summary.most_used_hashtag.none": "Nenio", "annual_report.summary.new_posts.new_posts": "novaj afiŝoj", "annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!", @@ -339,7 +340,7 @@ "followed_tags": "Sekvataj kradvortoj", "footer.about": "Pri", "footer.directory": "Profilujo", - "footer.get_app": "Akiru la Programon", + "footer.get_app": "Akiri la apon", "footer.invite": "Inviti homojn", "footer.keyboard_shortcuts": "Fulmoklavoj", "footer.privacy_policy": "Politiko de privateco", @@ -388,7 +389,7 @@ "ignore_notifications_modal.not_followers_title": "Ĉu ignori sciigojn de homoj, kiuj ne sekvas vin?", "ignore_notifications_modal.not_following_title": "Ĉu ignori sciigojn de homoj, kiujn vi ne sekvas?", "ignore_notifications_modal.private_mentions_title": "Ĉu ignori sciigojn de nepetitaj privataj mencioj?", - "interaction_modal.description.favourite": "Per konto ĉe Mastodon, vi povas stelumiti ĉi tiun afiŝon por sciigi la afiŝanton ke vi aprezigas ŝin kaj konservas por la estonteco.", + "interaction_modal.description.favourite": "Per konto ĉe Mastodon, vi povas stelumi ĉi tiun afiŝon por sciigi la afiŝanton ke vi sâtas kaj konservas ĝin por poste.", "interaction_modal.description.follow": "Kun konto ĉe Mastodon, vi povas sekvi {name} por ricevi iliajn afiŝojn en via hejma fluo.", "interaction_modal.description.reblog": "Kun konto ĉe Mastodon, vi povas diskonigi ĉi tiun afiŝon, por ke viaj propraj sekvantoj vidu ĝin.", "interaction_modal.description.reply": "Kun konto ĉe Mastodon, vi povos respondi al ĉi tiu afiŝo.", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 65bbc25c21..fed111e7e8 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -87,6 +87,9 @@ "alert.unexpected.title": "Oups!", "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", + "annual_report.summary.archetype.oracle": "L’oracle", + "annual_report.summary.here_it_is": "Voici votre récap de {year} :", + "annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée", "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 utilisateur·rice·s non connecté·e·s.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index ed751c244b..10bfc22bd8 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -87,6 +87,9 @@ "alert.unexpected.title": "Oups !", "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", + "annual_report.summary.archetype.oracle": "L’oracle", + "annual_report.summary.here_it_is": "Voici votre récap de {year} :", + "annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée", "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 utilisateur·rice·s non connecté·e·s.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index bf179ea2f2..06779d337c 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -97,6 +97,7 @@ "annual_report.summary.highlighted_post.possessive": "di {name}", "annual_report.summary.most_used_app.most_used_app": "l'app più utilizzata", "annual_report.summary.most_used_hashtag.most_used_hashtag": "l'hashtag più usato", + "annual_report.summary.most_used_hashtag.none": "Nessuno", "annual_report.summary.new_posts.new_posts": "nuovi post", "annual_report.summary.percentile.text": "Questo ti colloca tra ildei migliori utenti Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Non lo diremo a Bernie.", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 563eb3b190..0a5f82aee3 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -87,6 +87,17 @@ "alert.unexpected.title": "Atyo!", "alt_text_badge.title": "Teksto alternativo", "announcement.announcement": "Pregon", + "annual_report.summary.archetype.pollster": "El anketero", + "annual_report.summary.followers.followers": "suivantes", + "annual_report.summary.highlighted_post.by_favourites": "la puvlikasyon mas favoritada", + "annual_report.summary.highlighted_post.by_reblogs": "la puvlikasyon mas repartajada", + "annual_report.summary.highlighted_post.by_replies": "la puvlikasyon kon mas repuestas", + "annual_report.summary.highlighted_post.possessive": "de {name}", + "annual_report.summary.most_used_app.most_used_app": "la aplikasyon mas uzada", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "la etiketa mas uzada", + "annual_report.summary.most_used_hashtag.none": "Dinguno", + "annual_report.summary.new_posts.new_posts": "puvlikasyones muevas", + "annual_report.summary.thanks": "Mersi por ser parte de Mastodon!", "attachments_list.unprocessed": "(no prosesado)", "audio.hide": "Eskonde audio", "block_modal.show_less": "Amostra manko", @@ -97,6 +108,7 @@ "block_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.", "boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez", "boost_modal.reblog": "Repartajar puvlikasyon?", + "boost_modal.undo_reblog": "Departajar puvlikasyon?", "bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro", "bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.", "bundle_column_error.error.title": "Atyo, no!", @@ -155,6 +167,7 @@ "compose_form.poll.duration": "Durasion de anketa", "compose_form.poll.multiple": "Multiples opsyones", "compose_form.poll.option_placeholder": "Opsyon {number}", + "compose_form.poll.single": "Opsyon unika", "compose_form.poll.switch_to_multiple": "Troka anketa para permeter a eskojer mas ke una opsyon", "compose_form.poll.switch_to_single": "Troka anketa para permeter a eskojer solo una opsyon", "compose_form.poll.type": "Estilo", @@ -213,6 +226,7 @@ "dismissable_banner.public_timeline": "Estas son las publikasyones publikas mas resientes de personas en la red sosyala a las kualas la djente de {domain} sige.", "domain_block_modal.block": "Bloka sirvidor", "domain_block_modal.block_account_instead": "Bloka @{name} en su lugar", + "domain_block_modal.they_can_interact_with_old_posts": "Las personas de este sirvidor pueden enteraktuar kon tus puvlikasyones viejas.", "domain_block_modal.they_cant_follow": "Dingun de este sirvidor puede segirte.", "domain_block_modal.they_wont_know": "No savra ke tiene sido blokado.", "domain_block_modal.title": "Bloka el domeno?", @@ -307,6 +321,7 @@ "follow_suggestions.personalized_suggestion": "Sujestion personalizada", "follow_suggestions.popular_suggestion": "Sujestion populara", "follow_suggestions.popular_suggestion_longer": "Popular en {domain}", + "follow_suggestions.similar_to_recently_followed_longer": "Similares a los profils ke tienes segido resyentemente", "follow_suggestions.view_all": "Ve todos", "follow_suggestions.who_to_follow": "A ken segir", "followed_tags": "Etiketas segidas", @@ -335,6 +350,9 @@ "hashtag.follow": "Sige etiketa", "hashtag.unfollow": "Desige etiketa", "hashtags.and_other": "…i {count, plural, one {}other {# mas}}", + "hints.profiles.followers_may_be_missing": "Puede ser ke algunos suivantes de este profil no se amostren.", + "hints.profiles.follows_may_be_missing": "Puede ser ke algunos kuentos segidos por este profil no se amostren.", + "hints.profiles.posts_may_be_missing": "Puede ser ke algunas puvlikasyones de este profil no se amostren.", "hints.profiles.see_more_followers": "Ve mas suivantes en {domain}", "hints.profiles.see_more_follows": "Ve mas segidos en {domain}", "hints.profiles.see_more_posts": "Ve mas puvlikasyones en {domain}", @@ -352,10 +370,12 @@ "ignore_notifications_modal.new_accounts_title": "Inyorar avizos de kuentos muevos?", "ignore_notifications_modal.not_followers_title": "Inyorar avizos de personas a las kualas no te sigen?", "ignore_notifications_modal.not_following_title": "Inyorar avizos de personas a las kualas no siges?", + "ignore_notifications_modal.private_mentions_title": "Ignorar avizos de mensyones privadas no solisitadas?", "interaction_modal.description.favourite": "Kon un kuento en Mastodon, puedes markar esta publikasyon komo favorita para ke el autor sepa ke te plaze i para guadrarla para dempues.", "interaction_modal.description.follow": "Kon un kuento en Mastodon, puedes segir a {name} para risivir sus publikasyones en tu linya temporal prinsipala.", "interaction_modal.description.reblog": "Kon un kuento en Mastodon, puedes repartajar esta publikasyon para amostrarla a tus suivantes.", "interaction_modal.description.reply": "Kon un kuento en Mastodon, puedes arispondir a esta publikasyon.", + "interaction_modal.description.vote": "Kon un kuento en Mastodon, puedes votar en esta anketa.", "interaction_modal.login.action": "Va a tu sirvidor", "interaction_modal.login.prompt": "Domeno del sirvidor de tu kuento, por enshemplo mastodon.social", "interaction_modal.no_account_yet": "No tyenes kuento de Mastodon?", @@ -367,6 +387,7 @@ "interaction_modal.title.follow": "Sige a {name}", "interaction_modal.title.reblog": "Repartaja publikasyon de {name}", "interaction_modal.title.reply": "Arisponde a publikasyon de {name}", + "interaction_modal.title.vote": "Vota en la anketa de {name}", "intervals.full.days": "{number, plural, one {# diya} other {# diyas}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -466,13 +487,16 @@ "navigation_bar.security": "Segurita", "not_signed_in_indicator.not_signed_in": "Nesesitas konektarse kon tu kuento para akseder este rekurso.", "notification.admin.report": "{name} raporto {target}", + "notification.admin.report_statuses": "{name} raporto {target} por {category}", "notification.admin.report_statuses_other": "{name} raporto {target}", "notification.admin.sign_up": "{name} kriyo un konto", + "notification.annual_report.view": "Ve #Wrapstodon", "notification.favourite": "A {name} le plaze tu publikasyon", "notification.follow": "{name} te ampeso a segir", "notification.follow_request": "{name} tiene solisitado segirte", "notification.label.mention": "Enmenta", "notification.label.private_mention": "Enmentadura privada", + "notification.label.private_reply": "Repuesta privada", "notification.label.reply": "Arisponde", "notification.mention": "Enmenta", "notification.mentioned_you": "{name} te enmento", @@ -536,6 +560,7 @@ "notifications.policy.accept_hint": "Amostra en avizos", "notifications.policy.drop": "Inyora", "notifications.policy.filter": "Filtra", + "notifications.policy.filter_limited_accounts_hint": "Limitadas por moderadores del sirvidor", "notifications.policy.filter_limited_accounts_title": "Kuentos moderados", "notifications.policy.filter_new_accounts.hint": "Kriyadas durante {days, plural, one {el ultimo diya} other {los ultimos # diyas}}", "notifications.policy.filter_new_accounts_title": "Muevos kuentos", diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 1fdd0e3533..7181b35b6d 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -412,6 +412,7 @@ bg: attempts_over_week: one: "%{count} опит за изминалата седмица" other: "%{count} опита за регистрация през изминалата седмица" + created_msg: Успешно блокиран домейн на е-поща delete: Изтриване dns: types: @@ -420,8 +421,11 @@ bg: new: create: Добавяне на домейн resolve: Преобразуване на домейна + title: Блокиране на нов домейн на имейл + no_email_domain_block_selected: Няма промяна, тъй като няма избрани блокирания на домейн на имейл not_permitted: Няма позволение resolved_through_html: Преобразувано чрез %{domain} + title: Блокирани домейни на имейл export_domain_allows: new: title: Внасяне на позволенията на домейни @@ -842,6 +846,9 @@ bg: message_html: Не сте определили никакви правила на сървъра. sidekiq_process_check: message_html: Не работи процес Sidekiq за %{value} опашка/и. Прегледайте настройките си за Sidekiq + software_version_check: + action: Преглед на наличните обновявания + message_html: Налично е обновяване на Mastodon. software_version_critical_check: action: Преглед на наличните обновявания message_html: Налично e критично обновяване на Mastodon. Обновете възможно най-бързо. @@ -1102,11 +1109,18 @@ bg: status: account_status: Състояние на акаунта functional: Вашият акаунт е в изправност. + pending: Вашето приложение чака преглед от персонала ни. Това може да отнеме време. Ще получите е-писмо, ако приложението ви се одобри. redirecting_to: Вашият акаунт е бездеен, защото сега се пренасочва към %{acct}. self_destruct: Затваряйки %{domain}, ще получите само ограничен достъп до акаунта си. view_strikes: Преглед на предишните предупреждения против акаунта ви too_fast: Образецът подаден пребързо, опитайте пак. use_security_key: Употреба на ключ за сигурност + author_attribution: + example_title: Примерен текст + more_from_html: Още от %{name} + s_blog: Блогът на %{name} + then_instructions: Тогава добавете име на домейна на публикацията в долното поле. + title: Приписване на авторството challenge: confirm: Продължаване hint_html: "Съвет: няма да ви питаме пак за паролата през следващия час." @@ -1450,6 +1464,7 @@ bg: update: subject: "%{name} промени публикация" notifications: + administration_emails: Известия за администратори по е-поща email_events_hint: 'Изберете събития, за които искате да получавате известия:' number: human: @@ -1607,6 +1622,7 @@ bg: import: Импортиране import_and_export: Импортиране и експортиране migrate: Миграция на акаунта + notifications: Известия по е-поща preferences: Предпочитания profile: Профил relationships: Последвания и последователи @@ -1842,6 +1858,7 @@ bg: invalid_otp_token: Невалиден код otp_lost_help_html: Ако загубите достъп до двете, то може да се свържете с %{email} rate_limited: Премного опити за удостоверяване. Опитайте пак по-късно. + seamless_external_login: Влезли сте чрез външна услуга, така че настройките за парола и имейл не са налични. signed_in_as: 'Влезли като:' verification: extra_instructions_html: Съвет:Връзката в уебсайта ви може да е невидима. Важна част е rel="me", която предотврятява имитирането на уебсайтове с породено от потребителите съдържание. Може дори да употребите етикет за връзката в заглавката на странице вместо а, но HTML трябва да достъпен без изпълнение на JavaScript. @@ -1850,6 +1867,7 @@ bg: instructions_html: Копипейстнете кода долу в HTML на уебсайта си. Тогава добавете адреса на уебсайта си в едно от допълнителните полета на профила ви от раздела "Редактиране на профила" и запазане на промените. verification: Проверка verified_links: Вашите потвърдени връзки + website_verification: Потвърждаване на уебсайта webauthn_credentials: add: Добавяне на нов ключ за сигурност create: diff --git a/config/locales/es.yml b/config/locales/es.yml index 8690c1cdfb..ddd53a2387 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -67,8 +67,8 @@ es: display_name: Nombre domain: Dominio edit: Editar - email: E-mail - email_status: E-mail Status + email: Correo electrónico + email_status: Estado del correo electrónico enable: Habilitar enable_sign_in_token_auth: Habilitar la autenticación por token de correo electrónico enabled: Habilitada @@ -86,7 +86,7 @@ es: local: Local remote: Remoto title: Localización - login_status: Estado del login + login_status: Estado de inicio de sesión media_attachments: Multimedia memorialize: Convertir en memorial memorialized: Cuenta conmemorativa @@ -102,7 +102,7 @@ es: moderation_notes: Notas de moderación most_recent_activity: Actividad más reciente most_recent_ip: IP más reciente - no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada + no_account_selected: Ninguna cuenta se cambió, ya que ninguna fue seleccionada no_limits_imposed: Sin límites impuestos no_role_assigned: Ningún rol asignado not_subscribed: No se está suscrito @@ -132,17 +132,17 @@ es: success: "¡Enlace de confirmación enviado con éxito!" reset: Reiniciar reset_password: Reiniciar contraseña - resubscribe: Re-suscribir + resubscribe: Volver a suscribirse role: Rol search: Buscar search_same_email_domain: Otros usuarios con el mismo dominio de correo search_same_ip: Otros usuarios con la misma IP security: Seguridad security_measures: - only_password: Sólo contraseña + only_password: Solo contraseña password_and_2fa: Contraseña y 2FA sensitive: Sensible - sensitized: marcado como sensible + sensitized: Marcada como sensible shared_inbox_url: URL de bandeja compartida show: created_reports: Reportes hechos por esta cuenta @@ -161,10 +161,10 @@ es: unblocked_email_msg: Se ha desbloqueado correctamente la dirección de correo de %{username} unconfirmed_email: Correo electrónico sin confirmar undo_sensitized: Desmarcar como sensible - undo_silenced: Des-silenciar - undo_suspension: Des-suspender + undo_silenced: Dejar de silenciar + undo_suspension: Deshacer suspensión unsilenced_msg: Se quitó con éxito el límite de la cuenta %{username} - unsubscribe: Desuscribir + unsubscribe: Cancelar suscripción unsuspended_msg: Se quitó con éxito la suspensión de la cuenta de %{username} username: Nombre de usuario view_domain: Ver resumen del dominio @@ -296,7 +296,7 @@ es: empty: No se encontraron registros. filter_by_action: Filtrar por acción filter_by_user: Filtrar por usuario - title: Log de auditoría + title: Registro de auditoría unavailable_instance: "(nombre de dominio no disponible)" announcements: destroyed_msg: "¡Anuncio eliminado con éxito!" @@ -338,7 +338,7 @@ es: listed: Listados new: title: Añadir nuevo emoji personalizado - no_emoji_selected: No se cambió ningún emoji ya que no se seleccionó ninguno + no_emoji_selected: No se cambió ningún emoji, ya que no se seleccionó ninguno not_permitted: No tienes permiso para realizar esta acción overwrite: Sobrescribir shortcode: Código de atajo diff --git a/config/locales/lad.yml b/config/locales/lad.yml index ad241856a4..4486df637e 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -24,6 +24,7 @@ lad: admin: account_actions: action: Realiza aksion + already_silenced: Este kuento ya tiene sido limitado. already_suspended: Este kuento ya tiene sido suspendido. title: Modera %{acct} account_moderation_notes: @@ -638,6 +639,7 @@ lad: report: 'Raporta #%{id}' reported_account: Kuento raportado reported_by: Raportado por + reported_with_application: Raportado kon aplikasyon resolved: Rezolvido resolved_msg: Tienes rezolvido la denunsia djustamente! skip_to_actions: Va direktamente a las aksyones @@ -752,6 +754,7 @@ lad: desc_html: Esto se baza en eskriptos eksternos de hCaptcha, ke pueden ser una influensya negra a la sigurita i privasita. Ademas, esto puede rezultar en un proseso de enrejistrasyon signifikativamente manko aksesivle para algunas personas (espesyalmente diskapasitadas). Por estas razones, por favor, konsidera otras alternativas komo rejistrasyon por aprovasyon manuala o kon envitasyon. title: Solisita ke los muevos utilizadores rezolven un CAPTCHA para konfirmar su konto content_retention: + danger_zone: Zona de perikolo preamble: Kontrola komo el kontenido jenerado por el utilizador se magazina en Mastodon. title: Retensyon de kontenido default_noindex: @@ -882,9 +885,12 @@ lad: message_html: "Tu magazinaje de objektos es mal konfigurado. La privasita de tus utilizadores esta en riziko." tags: moderation: + not_trendable: No trendavle + not_usable: No uzavle pending_review: Revizion esta asperando reviewed: Revizado title: Estado + trendable: Trendavle unreviewed: No revizado usable: Uzavle name: Nombre @@ -959,6 +965,7 @@ lad: used_by_over_week: one: Uzada por una persona durante la ultima semana other: Uzada por %{count} personas durante la ultima semana + title: Rekomendasyones i trendes trending: En trend warning_presets: add_new: Adjusta muevo @@ -1138,7 +1145,9 @@ lad: too_fast: Formulario enviado demaziado rapido, aprovalo de muevo. use_security_key: Uza la yave de sigurita author_attribution: + example_title: Teksto de enshemplo more_from_html: Mas de %{name} + s_blog: Blog de %{name} challenge: confirm: Kontinua hint_html: "Konsejo: No retornaremos a demandarte por el kod durante la sigiente ora." diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 5540942d93..17b7bd6239 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -3,12 +3,14 @@ bg: simple_form: hints: account: + attribution_domains_as_text: Едно на ред. Защитава от фалшиви атрибути. discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители. display_name: Вашето пълно име или псевдоним. fields: Вашата начална страница, местоимения, години, всичко що искате. indexable: Вашите обществени публикации може да се появят в резултатите от търсене в Mastodon. Взаимодействалите с публикациите ви може да ги търсят независимо. note: 'Може да @споменавате други хора или #хаштагове.' show_collections: Хората ще може да разглеждат през вашите последвания и последователи. Хората, които сте следвали, ще видят, че ги следвате независимо от това. + unlocked: Хората ще могат да ви последват без изискване на одобрение. Размаркирайте, ако искате да преглеждате заявките за последване и избирате дали да приемете или отхвърлите новите последователи. account_alias: acct: Посочете потребителско_име@домейн на акаунта си, от който искате да се преместите account_migration: @@ -142,6 +144,7 @@ bg: url: До къде ще се изпращат събитията labels: account: + attribution_domains_as_text: Уебсайтове, на които е позволено да приписват авторството ви discoverable: Включване на профил и публикации в алгоритмите за откриване fields: name: Етикет diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml index 712c2f4e8a..de37005312 100644 --- a/config/locales/simple_form.lad.yml +++ b/config/locales/simple_form.lad.yml @@ -9,6 +9,7 @@ lad: indexable: Tus publikasyones publikas pueden apareser en rezultados de bushkeda en Mastodon. Personas ke enteraktuaron kon tus publikasyones syempre pueden bushkarlas inkluzo si trokes esta preferensya. note: 'Puedes @enmentar a otra djente o #etiketas.' show_collections: Otra djente podra ver tus segidos i suivantes. Personas a las kualas siges siempre podran ver que las estas sigiendo. + unlocked: Djente va poder segirte sin solisitar tu achetasyon. Deseleksyona si keres revizar solisitasyones de segimyento i dechidir si keres achetar o refuzar a muevos suivantes. account_alias: acct: Espesifika tu nombre de utilizador@domeno del kuento de ande keres migrar account_migration: From ec663eaba13294d803fdb8ddab373d7534c5a644 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 14 Nov 2024 13:50:36 +0100 Subject: [PATCH 375/550] Fix Content Warning and filter states not applying to boosted posts properly (#32887) --- app/javascript/mastodon/components/status.jsx | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 96ccf3aad4..f17f0367c1 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -393,20 +393,6 @@ class Status extends ImmutablePureComponent { }; let media, statusAvatar, prepend, rebloggedByText; - const matchedFilters = status.get('matched_filters'); - const expanded = (!matchedFilters || this.state.showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); - - if (hidden) { - return ( - -
- {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} - {status.get('spoiler_text').length > 0 && ({status.get('spoiler_text')})} - {expanded && {status.get('content')}} -
-
- ); - } const connectUp = previousId && previousId === status.get('in_reply_to_id'); const connectToRoot = rootId && rootId === status.get('in_reply_to_id'); @@ -446,6 +432,21 @@ class Status extends ImmutablePureComponent { ); } + const matchedFilters = status.get('matched_filters'); + const expanded = (!matchedFilters || this.state.showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); + + if (hidden) { + return ( + +
+ {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} + {status.get('spoiler_text').length > 0 && ({status.get('spoiler_text')})} + {expanded && {status.get('content')}} +
+
+ ); + } + if (pictureInPicture.get('inUse')) { media = ; } else if (status.get('media_attachments').size > 0) { From e8b6607ece43e6fcda99e76f8db0ad40d54b50b6 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 14 Nov 2024 14:28:00 +0100 Subject: [PATCH 376/550] Fix titles being escaped twice (#32889) --- app/helpers/application_helper.rb | 2 +- app/views/about/show.html.haml | 3 +-- app/views/accounts/show.html.haml | 3 +-- app/views/privacy/show.html.haml | 3 +-- app/views/statuses/show.html.haml | 3 +-- spec/helpers/application_helper_spec.rb | 6 +++--- spec/views/statuses/show.html.haml_spec.rb | 6 +----- 7 files changed, 9 insertions(+), 17 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index e36de19255..3d5025724f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -79,7 +79,7 @@ module ApplicationHelper def html_title safe_join( - [content_for(:page_title).to_s.chomp, title] + [content_for(:page_title), title] .compact_blank, ' - ' ) diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 05d8989add..e8f7b43eaa 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -1,5 +1,4 @@ -- content_for :page_title do - = t('about.title') +- content_for :page_title, t('about.title') - content_for :header_tags do = render partial: 'shared/og' diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml index dde9c50847..1f5f81348e 100644 --- a/app/views/accounts/show.html.haml +++ b/app/views/accounts/show.html.haml @@ -1,5 +1,4 @@ -- content_for :page_title do - #{display_name(@account)} (#{acct(@account)}) +- content_for :page_title, "#{display_name(@account)} (#{acct(@account)})" - content_for :header_tags do - if @account.user_prefers_noindex? diff --git a/app/views/privacy/show.html.haml b/app/views/privacy/show.html.haml index 95e506641b..9eb4f7a570 100644 --- a/app/views/privacy/show.html.haml +++ b/app/views/privacy/show.html.haml @@ -1,5 +1,4 @@ -- content_for :page_title do - = t('privacy_policy.title') +- content_for :page_title, t('privacy_policy.title') - content_for :header_tags do = render partial: 'shared/og' diff --git a/app/views/statuses/show.html.haml b/app/views/statuses/show.html.haml index 08bab63073..f669885de0 100644 --- a/app/views/statuses/show.html.haml +++ b/app/views/statuses/show.html.haml @@ -1,5 +1,4 @@ -- content_for :page_title do - = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) +- content_for :page_title, t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) - content_for :header_tags do - if @account.user_prefers_noindex? diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index ffcc5b81b6..557d08e851 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -257,11 +257,11 @@ RSpec.describe ApplicationHelper do expect(helper.html_title).to be_html_safe end - it 'removes extra new lines' do + it 'does not escape twice' do Setting.site_title = 'Site Title' - helper.content_for(:page_title, "Test Value\n") + helper.content_for(:page_title, '"Test Value"'.html_safe) - expect(helper.html_title).to eq 'Test Value - Site Title' + expect(helper.html_title).to eq '"Test Value" - Site Title' expect(helper.html_title).to be_html_safe end end diff --git a/spec/views/statuses/show.html.haml_spec.rb b/spec/views/statuses/show.html.haml_spec.rb index 1afcb046d4..02b1fe7384 100644 --- a/spec/views/statuses/show.html.haml_spec.rb +++ b/spec/views/statuses/show.html.haml_spec.rb @@ -18,7 +18,7 @@ RSpec.describe 'statuses/show.html.haml' do assign(:descendant_threads, []) end - it 'has valid opengraph tags' do + it 'has valid opengraph tags and twitter player tags' do render expect(header_tags) @@ -26,10 +26,6 @@ RSpec.describe 'statuses/show.html.haml' do .and match(//) .and match(//) .and match(%r{}) - end - - it 'has twitter player tag' do - render expect(header_tags) .to match(%r{}) From 62d65504f66e0361d178ea882c97bdcfbc426c25 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 14 Nov 2024 08:47:29 -0500 Subject: [PATCH 377/550] Add `DomainResource` class to wrap MX lookup/normalize (#32864) --- .../admin/email_domain_blocks_controller.rb | 5 +---- app/lib/domain_resource.rb | 22 +++++++++++++++++++ app/models/user.rb | 8 +------ .../admin/email_domain_blocks/new.html.haml | 4 ++-- lib/mastodon/cli/email_domain_blocks.rb | 7 +----- spec/lib/domain_resource_spec.rb | 19 ++++++++++++++++ 6 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 app/lib/domain_resource.rb create mode 100644 spec/lib/domain_resource_spec.rb diff --git a/app/controllers/admin/email_domain_blocks_controller.rb b/app/controllers/admin/email_domain_blocks_controller.rb index fe822d8c99..9501ebd63a 100644 --- a/app/controllers/admin/email_domain_blocks_controller.rb +++ b/app/controllers/admin/email_domain_blocks_controller.rb @@ -58,10 +58,7 @@ module Admin private def set_resolved_records - Resolv::DNS.open do |dns| - dns.timeouts = 5 - @resolved_records = dns.getresources(@email_domain_block.domain, Resolv::DNS::Resource::IN::MX).to_a - end + @resolved_records = DomainResource.new(@email_domain_block.domain).mx end def resource_params diff --git a/app/lib/domain_resource.rb b/app/lib/domain_resource.rb new file mode 100644 index 0000000000..59a29d8797 --- /dev/null +++ b/app/lib/domain_resource.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class DomainResource + attr_reader :domain + + RESOLVE_TIMEOUT = 5 + + def initialize(domain) + @domain = domain + end + + def mx + Resolv::DNS.open do |dns| + dns.timeouts = RESOLVE_TIMEOUT + dns + .getresources(domain, Resolv::DNS::Resource::IN::MX) + .to_a + .map { |mx| mx.exchange.to_s } + .compact_blank + end + end +end diff --git a/app/models/user.rb b/app/models/user.rb index 9a215669b9..f717dcd860 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -457,13 +457,7 @@ class User < ApplicationRecord # Doing this conditionally is not very satisfying, but this is consistent # with the MX records validations we do and keeps the specs tractable. - unless self.class.skip_mx_check? - Resolv::DNS.open do |dns| - dns.timeouts = 5 - - records = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank - end - end + records = DomainResource.new(domain).mx unless self.class.skip_mx_check? EmailDomainBlock.requires_approval?(records + [domain], attempt_ip: sign_up_ip) end diff --git a/app/views/admin/email_domain_blocks/new.html.haml b/app/views/admin/email_domain_blocks/new.html.haml index 2dfdca9376..4db8fbe5e5 100644 --- a/app/views/admin/email_domain_blocks/new.html.haml +++ b/app/views/admin/email_domain_blocks/new.html.haml @@ -30,12 +30,12 @@ %label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox = f.input_field :other_domains, as: :boolean, - checked_value: record.exchange.to_s, + checked_value: record, include_hidden: false, multiple: true .batch-table__row__content.pending-account .pending-account__header - %samp= record.exchange.to_s + %samp= record %br = t('admin.email_domain_blocks.dns.types.mx') diff --git a/lib/mastodon/cli/email_domain_blocks.rb b/lib/mastodon/cli/email_domain_blocks.rb index a830ca3661..0cc9ccb705 100644 --- a/lib/mastodon/cli/email_domain_blocks.rb +++ b/lib/mastodon/cli/email_domain_blocks.rb @@ -45,12 +45,7 @@ module Mastodon::CLI end other_domains = [] - if options[:with_dns_records] - Resolv::DNS.open do |dns| - dns.timeouts = 5 - other_domains = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank - end - end + other_domains = DomainResource.new(domain).mx if options[:with_dns_records] email_domain_block = EmailDomainBlock.new(domain: domain, other_domains: other_domains) email_domain_block.save! diff --git a/spec/lib/domain_resource_spec.rb b/spec/lib/domain_resource_spec.rb new file mode 100644 index 0000000000..0d239fd9de --- /dev/null +++ b/spec/lib/domain_resource_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe DomainResource do + describe '#mx' do + subject { described_class.new(domain) } + + let(:domain) { 'example.host' } + let(:exchange) { 'mx.host' } + + before { configure_mx(domain: domain, exchange: exchange) } + + it 'returns array of hostnames' do + expect(subject.mx) + .to eq([exchange]) + end + end +end From 766358e52b86ca0dc6cf9bb091565e97af00b19a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 14 Nov 2024 09:03:57 -0500 Subject: [PATCH 378/550] Add coverage for malformed version cleanup in `SoftwareUpdateCheckService`, add helper query methods (#32876) --- app/models/software_update.rb | 16 +++++- app/services/software_update_check_service.rb | 2 +- spec/models/software_update_spec.rb | 54 +++++++++++++++++++ .../software_update_check_service_spec.rb | 5 +- 4 files changed, 73 insertions(+), 4 deletions(-) diff --git a/app/models/software_update.rb b/app/models/software_update.rb index 2cb935130a..7e2b15656e 100644 --- a/app/models/software_update.rb +++ b/app/models/software_update.rb @@ -22,6 +22,14 @@ class SoftwareUpdate < ApplicationRecord Gem::Version.new(version) end + def outdated? + runtime_version >= gem_version + end + + def pending? + gem_version > runtime_version + end + class << self def check_enabled? Rails.configuration.x.mastodon.software_update_url.present? @@ -30,11 +38,17 @@ class SoftwareUpdate < ApplicationRecord def pending_to_a return [] unless check_enabled? - all.to_a.filter { |update| update.gem_version > Mastodon::Version.gem_version } + all.to_a.filter(&:pending?) end def urgent_pending? pending_to_a.any?(&:urgent?) end end + + private + + def runtime_version + Mastodon::Version.gem_version + end end diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index 148f269289..45ec1f50db 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -12,7 +12,7 @@ class SoftwareUpdateCheckService < BaseService def clean_outdated_updates! SoftwareUpdate.find_each do |software_update| - software_update.delete if Mastodon::Version.gem_version >= software_update.gem_version + software_update.delete if software_update.outdated? rescue ArgumentError software_update.delete end diff --git a/spec/models/software_update_spec.rb b/spec/models/software_update_spec.rb index 0a494b0c4c..43e9cd058f 100644 --- a/spec/models/software_update_spec.rb +++ b/spec/models/software_update_spec.rb @@ -3,6 +3,60 @@ require 'rails_helper' RSpec.describe SoftwareUpdate do + describe '#pending?' do + subject { described_class.new(version: update_version) } + + before { allow(Mastodon::Version).to receive(:gem_version).and_return(Gem::Version.new(mastodon_version)) } + + context 'when the runtime version is older than the update' do + let(:mastodon_version) { '4.0.0' } + let(:update_version) { '5.0.0' } + + it { is_expected.to be_pending } + end + + context 'when the runtime version is newer than the update' do + let(:mastodon_version) { '6.0.0' } + let(:update_version) { '5.0.0' } + + it { is_expected.to_not be_pending } + end + + context 'when the runtime version is same as the update' do + let(:mastodon_version) { '4.0.0' } + let(:update_version) { '4.0.0' } + + it { is_expected.to_not be_pending } + end + end + + describe '#outdated?' do + subject { described_class.new(version: update_version) } + + before { allow(Mastodon::Version).to receive(:gem_version).and_return(Gem::Version.new(mastodon_version)) } + + context 'when the runtime version is older than the update' do + let(:mastodon_version) { '4.0.0' } + let(:update_version) { '5.0.0' } + + it { is_expected.to_not be_outdated } + end + + context 'when the runtime version is newer than the update' do + let(:mastodon_version) { '6.0.0' } + let(:update_version) { '5.0.0' } + + it { is_expected.to be_outdated } + end + + context 'when the runtime version is same as the update' do + let(:mastodon_version) { '4.0.0' } + let(:update_version) { '4.0.0' } + + it { is_expected.to be_outdated } + end + end + describe '.pending_to_a' do before do allow(Mastodon::Version).to receive(:gem_version).and_return(Gem::Version.new(mastodon_version)) diff --git a/spec/services/software_update_check_service_spec.rb b/spec/services/software_update_check_service_spec.rb index 4098bd470a..637e1e26c5 100644 --- a/spec/services/software_update_check_service_spec.rb +++ b/spec/services/software_update_check_service_spec.rb @@ -27,6 +27,7 @@ RSpec.describe SoftwareUpdateCheckService do before do Fabricate(:software_update, version: '3.5.0', type: 'major', urgent: false) Fabricate(:software_update, version: '42.13.12', type: 'major', urgent: false) + Fabricate(:software_update, version: 'Malformed', type: 'major', urgent: false) owner_user.settings.update('notification_emails.software_updates': 'all') owner_user.save! @@ -50,7 +51,7 @@ RSpec.describe SoftwareUpdateCheckService do end it 'deletes outdated update records but keeps valid update records' do - expect { subject.call }.to change { SoftwareUpdate.pluck(:version).sort }.from(['3.5.0', '42.13.12']).to(['42.13.12']) + expect { subject.call }.to change { SoftwareUpdate.pluck(:version).sort }.from(['3.5.0', '42.13.12', 'Malformed']).to(['42.13.12']) end end @@ -85,7 +86,7 @@ RSpec.describe SoftwareUpdateCheckService do end it 'updates the list of known updates' do - expect { subject.call }.to change { SoftwareUpdate.pluck(:version).sort }.from(['3.5.0', '42.13.12']).to(['4.2.1', '4.3.0', '5.0.0']) + expect { subject.call }.to change { SoftwareUpdate.pluck(:version).sort }.from(['3.5.0', '42.13.12', 'Malformed']).to(['4.2.1', '4.3.0', '5.0.0']) end context 'when no update is urgent' do From 2de018256ae2ec5e7a508aff6e0e7905ec517118 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 14 Nov 2024 20:42:43 +0100 Subject: [PATCH 379/550] Fix filters not being correctly applied to boosted posts (#32895) --- app/javascript/mastodon/components/status.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index f17f0367c1..95ea53521f 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -397,6 +397,7 @@ class Status extends ImmutablePureComponent { const connectUp = previousId && previousId === status.get('in_reply_to_id'); const connectToRoot = rootId && rootId === status.get('in_reply_to_id'); const connectReply = nextInReplyToId && nextInReplyToId === status.get('id'); + const matchedFilters = status.get('matched_filters'); if (featured) { prepend = ( @@ -432,7 +433,6 @@ class Status extends ImmutablePureComponent { ); } - const matchedFilters = status.get('matched_filters'); const expanded = (!matchedFilters || this.state.showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); if (hidden) { From ddfb3d123bb4195f0b086fe19bc90700fa5170b4 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 15 Nov 2024 10:38:01 +0100 Subject: [PATCH 380/550] Improve display of statuses in admin panel (#30813) --- app/controllers/admin/statuses_controller.rb | 2 + .../admin/account_moderation_notes_helper.rb | 4 +- app/javascript/styles/mastodon/admin.scss | 28 +++++++ app/javascript/styles/mastodon/tables.scss | 16 ++-- app/views/admin/reports/_status.html.haml | 78 +++++++++++-------- app/views/admin/statuses/index.html.haml | 21 +++-- app/views/admin/statuses/show.html.haml | 64 ++++++++++++++- config/locales/an.yml | 2 +- config/locales/ar.yml | 2 +- config/locales/be.yml | 2 +- config/locales/bg.yml | 2 +- config/locales/br.yml | 2 +- config/locales/ca.yml | 2 +- config/locales/ckb.yml | 2 +- config/locales/co.yml | 2 +- config/locales/cs.yml | 2 +- config/locales/cy.yml | 2 +- config/locales/da.yml | 2 +- config/locales/de.yml | 2 +- config/locales/el.yml | 2 +- config/locales/en-GB.yml | 2 +- config/locales/en.yml | 8 +- config/locales/eo.yml | 2 +- config/locales/es-AR.yml | 2 +- config/locales/es-MX.yml | 2 +- config/locales/es.yml | 2 +- config/locales/et.yml | 2 +- config/locales/eu.yml | 2 +- config/locales/fa.yml | 2 +- config/locales/fi.yml | 2 +- config/locales/fo.yml | 2 +- config/locales/fr-CA.yml | 2 +- config/locales/fr.yml | 2 +- config/locales/fy.yml | 2 +- config/locales/ga.yml | 2 +- config/locales/gd.yml | 2 +- config/locales/gl.yml | 2 +- config/locales/he.yml | 2 +- config/locales/hu.yml | 2 +- config/locales/hy.yml | 2 +- config/locales/ia.yml | 2 +- config/locales/id.yml | 2 +- config/locales/ie.yml | 2 +- config/locales/io.yml | 2 +- config/locales/is.yml | 2 +- config/locales/it.yml | 2 +- config/locales/ja.yml | 2 +- config/locales/ka.yml | 2 +- config/locales/kab.yml | 2 +- config/locales/kk.yml | 2 +- config/locales/ko.yml | 2 +- config/locales/ku.yml | 2 +- config/locales/lad.yml | 2 +- config/locales/lt.yml | 2 +- config/locales/lv.yml | 2 +- config/locales/ms.yml | 2 +- config/locales/my.yml | 2 +- config/locales/nl.yml | 2 +- config/locales/nn.yml | 2 +- config/locales/no.yml | 2 +- config/locales/oc.yml | 2 +- config/locales/pl.yml | 2 +- config/locales/pt-BR.yml | 2 +- config/locales/pt-PT.yml | 2 +- config/locales/ru.yml | 2 +- config/locales/sc.yml | 2 +- config/locales/sco.yml | 2 +- config/locales/si.yml | 2 +- config/locales/sk.yml | 2 +- config/locales/sl.yml | 2 +- config/locales/sq.yml | 2 +- config/locales/sr-Latn.yml | 2 +- config/locales/sr.yml | 2 +- config/locales/sv.yml | 2 +- config/locales/th.yml | 2 +- config/locales/tr.yml | 2 +- config/locales/uk.yml | 2 +- config/locales/vi.yml | 2 +- config/locales/zh-CN.yml | 2 +- config/locales/zh-HK.yml | 2 +- config/locales/zh-TW.yml | 2 +- 81 files changed, 236 insertions(+), 131 deletions(-) diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index e53b22dca3..40d1a481b2 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -16,6 +16,8 @@ module Admin def show authorize [:admin, @status], :show? + + @status_batch_action = Admin::StatusBatchAction.new end def batch diff --git a/app/helpers/admin/account_moderation_notes_helper.rb b/app/helpers/admin/account_moderation_notes_helper.rb index 2a3d954a35..7c931c1157 100644 --- a/app/helpers/admin/account_moderation_notes_helper.rb +++ b/app/helpers/admin/account_moderation_notes_helper.rb @@ -12,12 +12,12 @@ module Admin::AccountModerationNotesHelper ) end - def admin_account_inline_link_to(account) + def admin_account_inline_link_to(account, path: nil) return if account.nil? link_to( account_inline_text(account), - admin_account_path(account.id), + path || admin_account_path(account.id), class: class_names('inline-name-tag', suspended: suspended_account?(account)), title: account.acct ) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index c7b32a9c9e..579b2a4f69 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1922,3 +1922,31 @@ a.sparkline { } } } + +.status__card { + padding: 15px; + border-radius: 4px; + background: $ui-base-color; + font-size: 15px; + line-height: 20px; + word-wrap: break-word; + font-weight: 400; + border: 1px solid lighten($ui-base-color, 4%); + color: $primary-text-color; + box-sizing: border-box; + min-height: 100%; + + .status__prepend { + padding: 0 0 15px; + gap: 4px; + align-items: center; + } + + .status__content { + padding-top: 0; + + summary { + display: list-item; + } + } +} diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index 0cbf5c1d55..07d1ce12fd 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -339,16 +339,12 @@ a.table-action-link { } } - .status__content { - padding-top: 0; - - summary { - display: list-item; - } - - strong { - font-weight: 700; - } + // Reset the status card to not have borders, background or padding when + // inline in the table of statuses + .status__card { + border: none; + background: none; + padding: 0; } .nothing-here { diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index f4630ed25a..3a35fdd272 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -2,40 +2,52 @@ %label.batch-table__row__select.batch-checkbox = f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id .batch-table__row__content - .status__content>< - - if status.proper.spoiler_text.blank? - = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - - else - %details< - %summary>< - %strong> Content warning: #{prerender_custom_emojis(h(status.proper.spoiler_text), status.proper.emojis)} - = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - - - unless status.proper.ordered_media_attachments.empty? - = render partial: 'admin/reports/media_attachments', locals: { status: status.proper } - - .detailed-status__meta - - if status.application - = status.application.name - · - = link_to ActivityPub::TagManager.instance.url_for(status.proper), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener noreferrer' do - %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - - if status.edited? - · - = link_to t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')), - admin_account_status_path(status.account_id, status), - class: 'detailed-status__datetime' - - if status.discarded? - · - %span.negative-hint= t('admin.statuses.deleted') - · + .status__card - if status.reblog? - = material_symbol('repeat_active') - = t('statuses.boosted_from_html', acct_link: admin_account_inline_link_to(status.proper.account)) - - else + .status__prepend + = material_symbol('repeat') + = t('statuses.boosted_from_html', acct_link: admin_account_inline_link_to(status.proper.account, path: admin_account_status_path(status.proper.account.id, status.proper.id))) + - elsif status.reply? && status.in_reply_to_id.present? + .status__prepend + = material_symbol('reply') + = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(status.in_reply_to_account, path: admin_account_status_path(status.thread.account_id, status.in_reply_to_id))) + .status__content>< + - if status.proper.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(status.proper.spoiler_text), status.proper.emojis)} + = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) + + - unless status.proper.ordered_media_attachments.empty? + = render partial: 'admin/reports/media_attachments', locals: { status: status.proper } + + .detailed-status__meta + - if status.application + = status.application.name + · + + = link_to admin_account_status_path(status.account.id, status), class: 'detailed-status__datetime' do + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + - if status.edited? + · + = link_to t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')), + admin_account_status_path(status.account_id, status), + class: 'detailed-status__datetime' + - if status.discarded? + · + %span.negative-hint= t('admin.statuses.deleted') + · + = material_symbol visibility_icon(status) = t("statuses.visibilities.#{status.visibility}") - - if status.proper.sensitive? · - = material_symbol('visibility_off') - = t('stream_entries.sensitive_content') + + = link_to ActivityPub::TagManager.instance.url_for(status.proper), class: 'detailed-status__link', target: stream_link_target, rel: 'noopener noreferrer' do + = t('admin.statuses.view_publicly') + + - if status.proper.sensitive? + · + = material_symbol('visibility_off') + = t('stream_entries.sensitive_content') diff --git a/app/views/admin/statuses/index.html.haml b/app/views/admin/statuses/index.html.haml index 4d5d037060..57b9fe0e15 100644 --- a/app/views/admin/statuses/index.html.haml +++ b/app/views/admin/statuses/index.html.haml @@ -1,7 +1,5 @@ - content_for :page_title do - = t('admin.statuses.title') - \- - @#{@account.pretty_acct} + = t('admin.statuses.title', name: @account.pretty_acct) .filters .filter-subset @@ -33,11 +31,18 @@ = check_box_tag :batch_checkbox_all, nil, false .batch-table__toolbar__actions - unless @statuses.empty? - = f.button safe_join([material_symbol('flag'), t('admin.statuses.batch.report')]), - class: 'table-action-link', - data: { confirm: t('admin.reports.are_you_sure') }, - name: :report, - type: :submit + - if params[:report_id] + = f.button safe_join([material_symbol('add'), t('admin.statuses.batch.add_to_report', id: params[:report_id])]), + class: 'table-action-link', + data: { confirm: t('admin.reports.are_you_sure') }, + name: :report, + type: :submit + - else + = f.button safe_join([material_symbol('flag'), t('admin.statuses.batch.report')]), + class: 'table-action-link', + data: { confirm: t('admin.reports.are_you_sure') }, + name: :report, + type: :submit .batch-table__body - if @statuses.empty? = nothing_here 'nothing-here--under-tabs' diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml index 9cadde2870..49c23e921c 100644 --- a/app/views/admin/statuses/show.html.haml +++ b/app/views/admin/statuses/show.html.haml @@ -1,7 +1,14 @@ - content_for :page_title do - = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false)) + = t('admin.statuses.status_title', name: @account.pretty_acct) - content_for :heading_actions do + = form_with model: @status_batch_action, url: batch_admin_account_statuses_path(@account.id) do |f| + = f.hidden_field :status_ids, { multiple: true, value: @status.id } + = f.button safe_join([material_symbol('flag'), t('admin.statuses.batch.report')]), + class: 'button', + data: { confirm: t('admin.reports.are_you_sure') }, + name: :report, + type: :submit = link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank', rel: 'noopener noreferrer' %h3= t('admin.statuses.metadata') @@ -44,7 +51,56 @@ %hr.spacer/ -%h3= t('admin.statuses.history') +%h3= t('admin.statuses.contents') -%ol.history - = render partial: 'admin/status_edits/status_edit', collection: batched_ordered_status_edits +.status__card + - if @status.reblog? + .status__prepend + = material_symbol('repeat') + = t('statuses.boosted_from_html', acct_link: admin_account_inline_link_to(@status.proper.account, path: admin_account_status_path(@status.proper.account.id, @status.proper.id))) + - elsif @status.reply? && @status.in_reply_to_id.present? + .status__prepend + = material_symbol('reply') + = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(@status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id))) + .status__content>< + - if @status.proper.spoiler_text.blank? + = prerender_custom_emojis(status_content_format(@status.proper), @status.proper.emojis) + - else + %details< + %summary>< + %strong> Content warning: #{prerender_custom_emojis(h(@status.proper.spoiler_text), @status.proper.emojis)} + = prerender_custom_emojis(status_content_format(@status.proper), @status.proper.emojis) + + - unless @status.proper.ordered_media_attachments.empty? + = render partial: 'admin/reports/media_attachments', locals: { status: @status.proper } + + .detailed-status__meta + - if @status.application + = @status.application.name + · + %span.detailed-status__datetime + %time.formatted{ datetime: @status.created_at.iso8601, title: l(@status.created_at) }= l(@status.created_at) + - if @status.edited? + · + %span.detailed-status__datetime + = t('statuses.edited_at_html', date: content_tag(:time, l(@status.edited_at), datetime: @status.edited_at.iso8601, title: l(@status.edited_at), class: 'formatted')) + - if @status.discarded? + · + %span.negative-hint= t('admin.statuses.deleted') + - unless @status.reblog? + · + = material_symbol(visibility_icon(@status)) + = t("statuses.visibilities.#{@status.visibility}") + - if @status.proper.sensitive? + · + = material_symbol('visibility_off') + = t('stream_entries.sensitive_content') + +%hr.spacer/ + +%h3= t('admin.statuses.history') +- if @status.edits.empty? + %p= t('admin.statuses.no_history') +- else + %ol.history + = render partial: 'admin/status_edits/status_edit', collection: batched_ordered_status_edits diff --git a/config/locales/an.yml b/config/locales/an.yml index 2db042f1b1..43f8d358cc 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -723,7 +723,7 @@ an: original_status: Publicación orichinal reblogs: Impulsos status_changed: Publicación cambiada - title: Estau d'as cuentas + title: Estau d'as cuentas - @%{name} trending: En tendencia visibility: Visibilidat with_media: Con multimedia diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 1a6f0da8c6..bbc481a137 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -847,7 +847,7 @@ ar: original_status: المنشور الأصلي reblogs: المعاد تدوينها status_changed: عُدّل المنشور - title: منشورات الحساب + title: منشورات الحساب - @%{name} trending: المتداولة visibility: مدى الظهور with_media: تحتوي على وسائط diff --git a/config/locales/be.yml b/config/locales/be.yml index b627672b2d..c59233eb8b 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -856,7 +856,7 @@ be: original_status: Зыходны допіс reblogs: Рэпосты status_changed: Допіс зменены - title: Допісы уліковага запісу + title: Допісы уліковага запісу - @%{name} trending: Папулярныя visibility: Бачнасць with_media: З медыя diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 7181b35b6d..e10ce3197c 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -803,7 +803,7 @@ bg: original_status: Първообразна публикация reblogs: Блогване пак status_changed: Публикацията променена - title: Публикации на акаунта + title: Публикации на акаунта - @%{name} trending: Изгряващи visibility: Видимост with_media: С мултимедия diff --git a/config/locales/br.yml b/config/locales/br.yml index f9fbd34adb..098b20934f 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -263,7 +263,7 @@ br: original_status: Toud orin reblogs: Skignadennoù status_changed: Toud kemmet - title: Toudoù ar gont + title: Toudoù ar gont - @%{name} visibility: Gwelusted with_media: Gant mediaoù strikes: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 00c8f57a85..970fd99fff 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -841,7 +841,7 @@ ca: original_status: Publicació original reblogs: Impulsos status_changed: Publicació canviada - title: Estats del compte + title: Estats del compte - @%{name} trending: Tendència visibility: Visibilitat with_media: Amb contingut multimèdia diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 88dadff014..6e1b11379c 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -520,7 +520,7 @@ ckb: media: title: میدیا no_status_selected: هیچ دۆخیک نەگۆڕاوە وەک ئەوەی هیچ بارێک دەستنیشان نەکراوە - title: دۆخی ئەژمێر + title: دۆخی ئەژمێر - @%{name} with_media: بە میدیا tags: review: پێداچوونەوەی دۆخ diff --git a/config/locales/co.yml b/config/locales/co.yml index dad3e08ffd..b81427e833 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -459,7 +459,7 @@ co: media: title: Media no_status_selected: I statuti ùn sò micca stati mudificati perchè manc'unu era selezziunatu - title: Statuti di u contu + title: Statuti di u contu - @%{name} with_media: Cù media system_checks: rules_check: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 15211b928a..f5f7f4d731 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -826,7 +826,7 @@ cs: original_status: Původní příspěvek reblogs: Boosty status_changed: Příspěvek změněn - title: Příspěvky účtu + title: Příspěvky účtu - @%{name} trending: Populární visibility: Viditelnost with_media: S médii diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 2d6a0eb38d..ca18de17bc 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -889,7 +889,7 @@ cy: original_status: Postiad gwreiddiol reblogs: Ailflogiadau status_changed: Postiad wedi'i newid - title: Postiadau cyfrif + title: Postiadau cyfrif - @%{name} trending: Yn trendio visibility: Gwelededd with_media: Gyda chyfryngau diff --git a/config/locales/da.yml b/config/locales/da.yml index daf683637d..e157af9cc2 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -841,7 +841,7 @@ da: original_status: Oprindeligt indlæg reblogs: Genblogninger status_changed: Indlæg ændret - title: Kontoindlæg + title: Kontoindlæg - @%{name} trending: Populære visibility: Synlighed with_media: Med medier diff --git a/config/locales/de.yml b/config/locales/de.yml index 10223f2278..e3ee03264e 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -841,7 +841,7 @@ de: original_status: Ursprünglicher Beitrag reblogs: Geteilte Beiträge status_changed: Beitrag bearbeitet - title: Beiträge des Kontos + title: Beiträge des Kontos - @%{name} trending: Trends visibility: Sichtbarkeit with_media: Mit Medien diff --git a/config/locales/el.yml b/config/locales/el.yml index 3a145cbdab..26b0ec00a2 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -817,7 +817,7 @@ el: original_status: Αρχική ανάρτηση reblogs: Αναδημοσιεύσεις status_changed: Η ανάρτηση άλλαξε - title: Καταστάσεις λογαριασμού + title: Καταστάσεις λογαριασμού - @%{name} trending: Τάσεις visibility: Ορατότητα with_media: Με πολυμέσα diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index fb284479f2..e22ed62051 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -832,7 +832,7 @@ en-GB: original_status: Original post reblogs: Reblogs status_changed: Post changed - title: Account posts + title: Account posts - @%{name} trending: Trending visibility: Visibility with_media: With media diff --git a/config/locales/en.yml b/config/locales/en.yml index cf783338e2..2971fe1f25 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -826,8 +826,10 @@ en: back_to_account: Back to account page back_to_report: Back to report page batch: + add_to_report: 'Add to report #%{id}' remove_from_report: Remove from report report: Report + contents: Contents deleted: Deleted favourites: Favorites history: Version history @@ -836,13 +838,17 @@ en: media: title: Media metadata: Metadata + no_history: This post hasn't been edited no_status_selected: No posts were changed as none were selected open: Open post original_status: Original post reblogs: Reblogs + replied_to_html: Replied to %{acct_link} status_changed: Post changed - title: Account posts + status_title: Post by @%{name} + title: Account posts - @%{name} trending: Trending + view_publicly: View publicly visibility: Visibility with_media: With media strikes: diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 12cae075f0..b5287d9e2a 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -814,7 +814,7 @@ eo: original_status: Originala afiŝo reblogs: Reblogaĵoj status_changed: Afiŝo ŝanĝiĝis - title: Afiŝoj de la konto + title: Afiŝoj de la konto - @%{name} trending: Popularaĵoj visibility: Videbleco with_media: Kun aŭdovidaĵoj diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 79bfdfbdbf..6dc9d99f37 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -833,7 +833,7 @@ es-AR: original_status: Mensaje original reblogs: Adhesiones status_changed: Mensaje cambiado - title: Mensajes de la cuenta + title: Mensajes de la cuenta - @%{name} trending: En tendencia visibility: Visibilidad with_media: Con medios diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index fef805680a..7e6570f068 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -833,7 +833,7 @@ es-MX: original_status: Publicación original reblogs: Impulsos status_changed: Publicación cambiada - title: Estado de las cuentas + title: Estado de las cuentas - @%{name} trending: En tendencia visibility: Visibilidad with_media: Con multimedia diff --git a/config/locales/es.yml b/config/locales/es.yml index ddd53a2387..32abd9420d 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -833,7 +833,7 @@ es: original_status: Publicación original reblogs: Impulsos status_changed: Publicación cambiada - title: Publicaciones de la cuenta + title: Publicaciones de la cuenta - @%{name} trending: En tendencia visibility: Visibilidad with_media: Con multimedia diff --git a/config/locales/et.yml b/config/locales/et.yml index 3be9add91c..f8a4f7f69e 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -833,7 +833,7 @@ et: original_status: Algne postitus reblogs: Jagamised status_changed: Muudetud postitus - title: Konto postitused + title: Konto postitused - @%{name} trending: Populaarne visibility: Nähtavus with_media: Meediaga diff --git a/config/locales/eu.yml b/config/locales/eu.yml index e9c3be2d24..a764e88bac 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -793,7 +793,7 @@ eu: original_status: Jatorrizko bidalketa reblogs: Bultzadak status_changed: Bidalketa aldatuta - title: Kontuaren bidalketak + title: Kontuaren bidalketak - @%{name} trending: Joera visibility: Ikusgaitasuna with_media: Multimediarekin diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 603cfe8de1..38daf70d29 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -741,7 +741,7 @@ fa: original_status: فرستهٔ اصلی reblogs: تقویت‌ها status_changed: فرسته تغییر کرد - title: نوشته‌های حساب + title: "@%{name} - نوشته‌های حساب" trending: پرطرفدار visibility: نمایانی with_media: دارای عکس یا ویدیو diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 6fe9c14591..efdfdfed04 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -841,7 +841,7 @@ fi: original_status: Alkuperäinen julkaisu reblogs: Edelleen jako status_changed: Julkaisua muutettu - title: Tilin tilat + title: Tilin tilat - @%{name} trending: Suosituttua visibility: Näkyvyys with_media: Sisältää mediaa diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 6cc1fda6a0..8dab61c267 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -841,7 +841,7 @@ fo: original_status: Upprunapostur reblogs: Endurbloggar status_changed: Postur broyttur - title: Postar hjá kontu + title: Postar hjá kontu - @%{name} trending: Vælumtókt visibility: Sýni with_media: Við miðli diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 3c771d4c64..bb0501d0e3 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -836,7 +836,7 @@ fr-CA: original_status: Message original reblogs: Partages status_changed: Publication modifiée - title: Messages du compte + title: Messages du compte - @%{name} trending: Tendances visibility: Visibilité with_media: Avec médias diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 58fc63fc1b..0c35dea62a 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -836,7 +836,7 @@ fr: original_status: Message original reblogs: Partages status_changed: Publication modifiée - title: Messages du compte + title: Messages du compte - @%{name} trending: Tendances visibility: Visibilité with_media: Avec médias diff --git a/config/locales/fy.yml b/config/locales/fy.yml index a6656f91b8..8a4f519e0c 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -833,7 +833,7 @@ fy: original_status: Oarspronklik berjocht reblogs: Boosts status_changed: Berjocht wizige - title: Accountberjochten + title: Accountberjochten - @%{name} trending: Trending visibility: Sichtberheid with_media: Mei media diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 5e5ecb238e..67461f3c2a 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -875,7 +875,7 @@ ga: original_status: Bunphostáil reblogs: Athbhlaganna status_changed: Athraíodh postáil - title: Poist chuntais + title: Poist chuntais - @%{name} trending: Ag treochtáil visibility: Infheictheacht with_media: Le meáin diff --git a/config/locales/gd.yml b/config/locales/gd.yml index c804f42523..89198bd514 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -861,7 +861,7 @@ gd: original_status: Am post tùsail reblogs: Brosnachaidhean status_changed: Post air atharrachadh - title: Postaichean a’ chunntais + title: Postaichean a’ chunntais - @%{name} trending: A’ treandadh visibility: Faicsinneachd with_media: Le meadhanan riutha diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 1ad8deb179..0f3420a7f3 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -841,7 +841,7 @@ gl: original_status: Publicación orixinal reblogs: Promocións status_changed: Publicación editada - title: Publicacións da conta + title: Publicacións da conta - @%{name} trending: Popular visibility: Visibilidade with_media: con medios diff --git a/config/locales/he.yml b/config/locales/he.yml index 10b4611b9a..59dc09799d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -861,7 +861,7 @@ he: original_status: הודעה מקורית reblogs: שיתופים status_changed: הודעה שונתה - title: הודעות החשבון + title: הודעות החשבון - @%{name} trending: נושאים חמים visibility: נראות with_media: עם מדיה diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 1892009238..da4ff78dc4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -841,7 +841,7 @@ hu: original_status: Eredeti bejegyzés reblogs: Megosztások status_changed: A bejegyzés megváltozott - title: Fiók bejegyzései + title: Fiók bejegyzései - @%{name} trending: Felkapott visibility: Láthatóság with_media: Médiával diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 201922d102..d8cf2a97ba 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -402,7 +402,7 @@ hy: deleted: Ջնջված է media: title: Մեդիա - title: Օգտատիրոջ գրառումները + title: Օգտատիրոջ գրառումները - @%{name} with_media: Մեդիայի հետ tags: review: Վերանայել գրառումը diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 843e8724b9..1398ae51d4 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -833,7 +833,7 @@ ia: original_status: Message original reblogs: Republicationes status_changed: Message cambiate - title: Messages del conto + title: Messages del conto - @%{name} trending: Tendentias visibility: Visibilitate with_media: Con multimedia diff --git a/config/locales/id.yml b/config/locales/id.yml index 6a005fddaa..9c31daf420 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -711,7 +711,7 @@ id: original_status: Kiriman asli reblogs: Reblog status_changed: Kiriman diubah - title: Status akun + title: Status akun - @%{name} trending: Sedang tren visibility: Visibilitas with_media: Dengan media diff --git a/config/locales/ie.yml b/config/locales/ie.yml index 94c4b7f4f0..d7df83ef69 100644 --- a/config/locales/ie.yml +++ b/config/locales/ie.yml @@ -791,7 +791,7 @@ ie: original_status: Original posta reblogs: Boosts status_changed: Posta modificat - title: Postas del conto + title: Postas del conto - @%{name} trending: Populari visibility: Visibilitá with_media: Con medie diff --git a/config/locales/io.yml b/config/locales/io.yml index 8ce5f3403b..1ff5d98bf2 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -779,7 +779,7 @@ io: original_status: Originala posto reblogs: Dissemi status_changed: Posto chanjita - title: Kontoposti + title: Kontoposti - @%{name} trending: Populara visibility: Videbleso with_media: Kun medii diff --git a/config/locales/is.yml b/config/locales/is.yml index 552df8f064..9ba29f2af0 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -843,7 +843,7 @@ is: original_status: Upprunaleg færsla reblogs: Endurbirtingar status_changed: Færslu breytt - title: Færslur notandaaðgangs + title: Færslur notandaaðgangs - @%{name} trending: Vinsælt visibility: Sýnileiki with_media: Með myndefni diff --git a/config/locales/it.yml b/config/locales/it.yml index e18cb0e8f6..08e224ad94 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -833,7 +833,7 @@ it: original_status: Post originale reblogs: Condivisioni status_changed: Post modificato - title: Gli status dell'account + title: Gli status dell'account - @%{name} trending: Di tendenza visibility: Visibilità with_media: con media diff --git a/config/locales/ja.yml b/config/locales/ja.yml index a70ae680e4..76152c3744 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -819,7 +819,7 @@ ja: original_status: オリジナルの投稿 reblogs: ブースト status_changed: 投稿を変更しました - title: 投稿一覧 + title: 投稿一覧 - @%{name} trending: トレンド visibility: 公開範囲 with_media: メディアあり diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 2a0365fbf5..93f7a39dc3 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -190,7 +190,7 @@ ka: media: title: მედია no_status_selected: სატუსები არ შეცვლილა, რადგან არცერთი არ მონიშნულა - title: ანგარიშის სტატუსები + title: ანგარიშის სტატუსები - @%{name} with_media: მედიით title: ადმინისტრაცია admin_mailer: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 993488f1fc..c74540cfbf 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -419,7 +419,7 @@ kab: media: title: Amidya open: Ldi tasuffeɣt - title: Tisuffaɣ n umiḍan + title: Tisuffaɣ n umiḍan - @%{name} trending: Ayen mucaɛen visibility: Abani with_media: S umidya diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 537104ba51..4b9cef245e 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -285,7 +285,7 @@ kk: media: title: Медиa no_status_selected: Бірде-бір статус өзгерген жоқ, себебі ештеңе таңдалмады - title: Аккаунт статустары + title: Аккаунт статустары - @%{name} with_media: Медиамен tags: review: Статусты көрсету diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 1fe43f7e75..36a13397d0 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -829,7 +829,7 @@ ko: original_status: 원본 게시물 reblogs: 리블로그 status_changed: 게시물 변경됨 - title: 계정 게시물 + title: 계정 게시물 - @%{name} trending: 유행 중 visibility: 공개 설정 with_media: 미디어 있음 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index ddd214441c..54188d2514 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -720,7 +720,7 @@ ku: original_status: Şandiyê resen reblogs: Ji nû ve nivîsandin status_changed: Şandî hate guhertin - title: Şandiyên ajimêr + title: Şandiyên ajimêr - @%{name} trending: Rojev visibility: Xuyabarî with_media: Bi medya yê re diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 4486df637e..3b33888c71 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -825,7 +825,7 @@ lad: original_status: Publikasyon orijinala reblogs: Repartajasyones status_changed: Publikasyon trokada - title: Publikasyones del kuento + title: Publikasyones del kuento - @%{name} trending: Trendes visibility: Vizivilita with_media: Kon multimedia diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 3850e2e071..3519cb5b32 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -601,7 +601,7 @@ lt: no_status_selected: Jokie įrašai nebuvo pakeisti, nes nė vienas buvo pasirinktas open: Atidaryti įrašą original_status: Originalus įrašas - title: Paskyros statusai + title: Paskyros statusai - @%{name} trending: Tendencinga with_media: Su medija system_checks: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 3e5a1db00e..d793c8e196 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -830,7 +830,7 @@ lv: original_status: Oriģinālā ziņa reblogs: Reblogi status_changed: Ziņa mainīta - title: Konta ziņas + title: Konta ziņas - @%{name} trending: Aktuāli visibility: Redzamība with_media: Ar multividi diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 90493a30b6..76f914dd16 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -768,7 +768,7 @@ ms: original_status: Hantaran asal reblogs: Ulang siar status_changed: Hantaran diubah - title: Hantaran akaun + title: Hantaran akaun - @%{name} trending: Sohor kini visibility: Visibiliti with_media: Dengan media diff --git a/config/locales/my.yml b/config/locales/my.yml index 6a330a16c7..b238abb051 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -764,7 +764,7 @@ my: original_status: မူရင်းပို့စ် reblogs: Reblog များ status_changed: ပို့စ်ပြောင်းပြီးပါပြီ - title: အကောင့်ပို့စ်များ + title: "@%{name} - အကောင့်ပို့စ်များ" trending: လက်ရှိခေတ်စားနေခြင်း visibility: မြင်နိုင်မှု with_media: မီဒီယာနှင့်အတူ diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1af30bca98..d4a88b3bea 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -833,7 +833,7 @@ nl: original_status: Oorspronkelijk bericht reblogs: Boosts status_changed: Bericht veranderd - title: Berichten van account + title: Berichten van account - @%{name} trending: Trending visibility: Zichtbaarheid with_media: Met media diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 62b08f42ed..e04c0168f2 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -841,7 +841,7 @@ nn: original_status: Opprinnelig innlegg reblogs: Framhevingar status_changed: Innlegg endret - title: Kontostatusar + title: Kontostatusar - @%{name} trending: Populært visibility: Synlighet with_media: Med media diff --git a/config/locales/no.yml b/config/locales/no.yml index 94986f4cae..408fdd5ae1 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -786,7 +786,7 @@ original_status: Opprinnelig innlegg reblogs: Fremheve status_changed: Innlegg endret - title: Kontostatuser + title: Kontostatuser - @%{name} trending: Populært visibility: Synlighet with_media: Med media diff --git a/config/locales/oc.yml b/config/locales/oc.yml index a30126c44b..5130977cb3 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -401,7 +401,7 @@ oc: media: title: Mèdia no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat - title: Estatuts del compte + title: Estatuts del compte - @%{name} visibility: Visibilitat with_media: Amb mèdia system_checks: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index d50a042a22..c5d63e1d73 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -861,7 +861,7 @@ pl: original_status: Oryginalny post reblogs: Podbicia status_changed: Post zmieniony - title: Wpisy konta + title: Wpisy konta - @%{name} trending: Popularne visibility: Widoczność with_media: Z zawartością multimedialną diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 0ff944e108..c5a0f3764a 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -841,7 +841,7 @@ pt-BR: original_status: Publicação original reblogs: Reblogs status_changed: Publicação alterada - title: Publicações da conta + title: Publicações da conta - @%{name} trending: Em alta visibility: Visibilidade with_media: Com mídia diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 1761ec3f0c..ff80948848 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -832,7 +832,7 @@ pt-PT: original_status: Publicação original reblogs: Re-publicacões status_changed: Publicação alterada - title: Estado das contas + title: Estado das contas - @%{name} trending: Em tendência visibility: Visibilidade with_media: Com media diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 8a84f22115..09d89cef9d 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -869,7 +869,7 @@ ru: original_status: Оригинальный пост reblogs: Продвинули status_changed: Пост изменен - title: Посты пользователя + title: Посты пользователя - @%{name} trending: Популярное visibility: Видимость with_media: С файлами diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 9ab62cea71..09f8ba0e0e 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -582,7 +582,7 @@ sc: open: Aberi sa publicatzione original_status: Publicatzione originale status_changed: Publicatzione modificada - title: Istados de su contu + title: Istados de su contu - @%{name} trending: Populares visibility: Visibilidade with_media: Cun elementos multimediales diff --git a/config/locales/sco.yml b/config/locales/sco.yml index 8cc733a4ac..55e0603d45 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -713,7 +713,7 @@ sco: original_status: Original post reblogs: Reblogs status_changed: Post chynged - title: Accoont posts + title: Accoont posts - @%{name} trending: Trendin visibility: Visibility with_media: Wi media diff --git a/config/locales/si.yml b/config/locales/si.yml index 270e0ae3fc..b0eb1d3b0c 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -607,7 +607,7 @@ si: open: ලිපිය අරින්න original_status: මුල් ලිපිය status_changed: ලිපිය සංශෝධිතයි - title: ගිණුමේ ලිපි + title: ගිණුමේ ලිපි - @%{name} trending: නැගී එන with_media: මාධ්‍ය සමඟ strikes: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 6ef78a8f21..d576bf0382 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -684,7 +684,7 @@ sk: open: Otvor príspevok original_status: Pôvodný príspevok status_changed: Príspevok bol zmenený - title: Príspevky na účte + title: Príspevky na účte - @%{name} trending: Populárne visibility: Viditeľnosť with_media: S médiami diff --git a/config/locales/sl.yml b/config/locales/sl.yml index e9c06bcaa6..6ae239d69f 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -853,7 +853,7 @@ sl: original_status: Izvorna objava reblogs: Ponovljeni blogi status_changed: Objava spremenjena - title: Objave računa + title: Objave računa - @%{name} trending: V trendu visibility: Vidnost with_media: Z mediji diff --git a/config/locales/sq.yml b/config/locales/sq.yml index e5becbd916..b1e2a4f61e 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -838,7 +838,7 @@ sq: original_status: Postim origjinal reblogs: Riblogime status_changed: Postimi ndryshoi - title: Gjendje llogarish + title: Gjendje llogarish - @%{name} trending: Në modë visibility: Dukshmëri with_media: Me media diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index f56cdb9cb5..76a0f8afe9 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -807,7 +807,7 @@ sr-Latn: original_status: Originalna objava reblogs: Deljenja status_changed: Objava promenjena - title: Statusi naloga + title: Statusi naloga - @%{name} trending: U trendu visibility: Vidljivost with_media: Sa multimedijom diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 45feb0b5fc..6a75316c23 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -837,7 +837,7 @@ sr: original_status: Оригинална објава reblogs: Дељења status_changed: Објава промењена - title: Статуси налога + title: Статуси налога - @%{name} trending: У тренду visibility: Видљивост with_media: Са мултимедијом diff --git a/config/locales/sv.yml b/config/locales/sv.yml index c41795a168..11b37f8bfc 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -841,7 +841,7 @@ sv: original_status: Ursprungligt inlägg reblogs: Ombloggningar status_changed: Inlägg ändrat - title: Kontoinlägg + title: Kontoinlägg - @%{name} trending: Trendande visibility: Synlighet with_media: Med media diff --git a/config/locales/th.yml b/config/locales/th.yml index ea039a2b99..32f2b30292 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -819,7 +819,7 @@ th: original_status: โพสต์ดั้งเดิม reblogs: การดัน status_changed: เปลี่ยนโพสต์แล้ว - title: โพสต์ของบัญชี + title: โพสต์ของบัญชี - @%{name} trending: กำลังนิยม visibility: การมองเห็น with_media: มีสื่อ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 88636ef21b..2eafed1b47 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -841,7 +841,7 @@ tr: original_status: Özgün gönderi reblogs: Yeniden Paylaşımlar status_changed: Gönderi değişti - title: Hesap durumları + title: Hesap durumları - @%{name} trending: Öne çıkanlar visibility: Görünürlük with_media: Medya ile diff --git a/config/locales/uk.yml b/config/locales/uk.yml index e6a765267f..7ea76b2a75 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -861,7 +861,7 @@ uk: original_status: Оригінальний допис reblogs: Поширення status_changed: Допис змінено - title: Дописи облікових записів + title: Дописи облікових записів - @%{name} trending: Популярне visibility: Видимість with_media: З медіа diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 1d04f796f8..71c4357f2f 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -827,7 +827,7 @@ vi: original_status: Tút gốc reblogs: Lượt đăng lại status_changed: Tút đã sửa - title: Tất cả tút + title: Tất cả tút - @%{name} trending: Xu hướng visibility: Hiển thị with_media: Có media diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 36d316649c..cae0efee57 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -827,7 +827,7 @@ zh-CN: original_status: 原始嘟文 reblogs: 转发 status_changed: 嘟文已编辑 - title: 帐户嘟文 + title: 帐户嘟文 - @%{name} trending: 当前热门 visibility: 可见性 with_media: 含有媒体文件 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index e33ebeadb4..6f0a99a5b3 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -777,7 +777,7 @@ zh-HK: original_status: 原始帖文 reblogs: 轉發 status_changed: 帖文已變更 - title: 帳戶文章 + title: 帳戶文章 - @%{name} trending: 熱門 visibility: 可見性 with_media: 含有媒體檔案 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 495a6a4742..ce6bd3e8f5 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -829,7 +829,7 @@ zh-TW: original_status: 原始嘟文 reblogs: 轉嘟 status_changed: 嘟文已編輯 - title: 帳號嘟文 + title: 帳號嘟文 - @%{name} trending: 熱門 visibility: 可見性 with_media: 含有媒體檔案 From c546aa57cb0b89c5d4ec7f7d7d38656d9e378402 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 11:30:11 +0100 Subject: [PATCH 381/550] New Crowdin Translations (automated) (#32900) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 27 +++++++++++++++++++++++++ app/javascript/mastodon/locales/cy.json | 1 + app/javascript/mastodon/locales/lt.json | 1 + app/javascript/mastodon/locales/lv.json | 4 ++++ config/locales/bg.yml | 9 +++++++++ config/locales/cy.yml | 8 ++++++++ config/locales/devise.lv.yml | 10 ++++----- config/locales/eo.yml | 26 +++++++++++++++++++++++- config/locales/hu.yml | 16 +++++++-------- config/locales/lv.yml | 25 +++++++++++++++-------- config/locales/simple_form.cy.yml | 3 ++- config/locales/simple_form.hu.yml | 4 ++-- config/locales/simple_form.lv.yml | 5 +++-- 13 files changed, 112 insertions(+), 27 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 3d5d8a8585..44482f6c96 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -87,6 +87,17 @@ "alert.unexpected.title": "Опаа!", "alt_text_badge.title": "Алтернативен текст", "announcement.announcement": "Оповестяване", + "annual_report.summary.archetype.lurker": "Дебнещото", + "annual_report.summary.archetype.oracle": "Оракул", + "annual_report.summary.archetype.pollster": "Анкетьорче", + "annual_report.summary.archetype.replier": "Социална пеперуда", + "annual_report.summary.followers.followers": "последователи", + "annual_report.summary.followers.total": "{count} общо", + "annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация", + "annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг", + "annual_report.summary.new_posts.new_posts": "нови публикации", + "annual_report.summary.thanks": "Благодарим, че сте част от Mastodon!", "attachments_list.unprocessed": "(необработено)", "audio.hide": "Скриване на звука", "block_modal.remote_users_caveat": "Ще поискаме сървърът {domain} да почита решението ви. Съгласието обаче не се гарантира откак някои сървъри могат да боравят с блоковете по различен начин. Обществените публикации още може да се виждат от невлезли в системата потребители.", @@ -158,6 +169,7 @@ "compose_form.poll.duration": "Времетраене на анкетата", "compose_form.poll.multiple": "Множествен избор", "compose_form.poll.option_placeholder": "Избор {number}", + "compose_form.poll.single": "Единичен избор", "compose_form.poll.switch_to_multiple": "Промяна на анкетата, за да се позволят множество възможни избора", "compose_form.poll.switch_to_single": "Промяна на анкетата, за да се позволи един възможен избор", "compose_form.poll.type": "Стил", @@ -195,6 +207,8 @@ "confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?", "confirmations.unfollow.title": "Спирате ли да следвате потребителя?", "content_warning.hide": "Скриване на публ.", + "content_warning.show": "Нека се покаже", + "content_warning.show_more": "Показване на още", "conversation.delete": "Изтриване на разговора", "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговора", @@ -365,6 +379,9 @@ "home.pending_critical_update.link": "Преглед на обновяванията", "home.pending_critical_update.title": "Налично критично обновяване на сигурността!", "home.show_announcements": "Показване на оповестяванията", + "ignore_notifications_modal.disclaimer": "Mastodon не може да осведоми потребители, че сте пренебрегнали известията им. Пренебрегването на известията няма да спре самите съобщения да не бъдат изпращани.", + "ignore_notifications_modal.filter_to_act_users": "Вие все още ще може да приемате, отхвърляте или докладвате потребители", + "ignore_notifications_modal.filter_to_avoid_confusion": "Прецеждането помага за избягване на възможно объркване", "interaction_modal.description.favourite": "Имайки акаунт в Mastodon, може да сложите тази публикации в любими, за да позволите на автора да узнае, че я цените и да я запазите за по-късно.", "interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.", "interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.", @@ -380,6 +397,7 @@ "interaction_modal.title.follow": "Последване на {name}", "interaction_modal.title.reblog": "Подсилване на публикацията на {name}", "interaction_modal.title.reply": "Отговаряне на публикацията на {name}", + "interaction_modal.title.vote": "Гласувайте в анкетата на {name}", "intervals.full.days": "{number, plural, one {# ден} other {# дни}}", "intervals.full.hours": "{number, plural, one {# час} other {# часа}}", "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}", @@ -420,6 +438,8 @@ "lightbox.close": "Затваряне", "lightbox.next": "Напред", "lightbox.previous": "Назад", + "lightbox.zoom_in": "Увеличение до действителната големина", + "lightbox.zoom_out": "Увеличение до побиране", "limited_account_hint.action": "Показване на профила въпреки това", "limited_account_hint.title": "Този профил е бил скрит от модераторите на {domain}.", "link_preview.author": "От {name}", @@ -441,6 +461,7 @@ "lists.subheading": "Вашите списъци", "load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}", "loading_indicator.label": "Зареждане…", + "media_gallery.hide": "Скриване", "moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.", "mute_modal.hide_from_notifications": "Скриване от известията", "mute_modal.hide_options": "Скриване на възможностите", @@ -489,6 +510,7 @@ "notification.favourite": "{name} направи любима публикацията ви", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# друг} other {# други}} направиха любима ваша публикация", "notification.follow": "{name} ви последва", + "notification.follow.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} ви последваха", "notification.follow_request": "{name} поиска да ви последва", "notification.follow_request.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} поискаха да ви последват", "notification.label.mention": "Споменаване", @@ -496,6 +518,7 @@ "notification.label.private_reply": "Личен отговор", "notification.label.reply": "Отговор", "notification.mention": "Споменаване", + "notification.mentioned_you": "{name} ви спомена", "notification.moderation-warning.learn_more": "Научете повече", "notification.moderation_warning": "Получихте предупреждение за модериране", "notification.moderation_warning.action_delete_statuses": "Някои от публикациите ви са премахнати.", @@ -752,6 +775,7 @@ "status.bookmark": "Отмятане", "status.cancel_reblog_private": "Край на подсилването", "status.cannot_reblog": "Публикацията не може да се подсилва", + "status.continued_thread": "Продължена нишка", "status.copy": "Копиране на връзката към публикация", "status.delete": "Изтриване", "status.detailed_status": "Подробен изглед на разговора", @@ -760,6 +784,7 @@ "status.edit": "Редактиране", "status.edited": "Последно редактирано на {date}", "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}", + "status.embed": "Вземане на кода за вграждане", "status.favourite": "Любимо", "status.favourites": "{count, plural, one {любимо} other {любими}}", "status.filter": "Филтриране на публ.", @@ -784,6 +809,7 @@ "status.reblogs.empty": "Още никого не е подсилвал публикацията. Подсилващият ще се покаже тук.", "status.redraft": "Изтриване и преработване", "status.remove_bookmark": "Премахване на отметката", + "status.replied_in_thread": "Отговорено в нишката", "status.replied_to": "В отговор до {name}", "status.reply": "Отговор", "status.replyAll": "Отговор на нишка", @@ -821,6 +847,7 @@ "upload_error.poll": "Качването на файлове не е позволено с анкети.", "upload_form.audio_description": "Опишете за хора, които са глухи или трудно чуват", "upload_form.description": "Опишете за хора, които са слепи или имат слабо зрение", + "upload_form.drag_and_drop.instructions": "Натиснете интервал или enter, за да подберете мултимедийно прикачване. Провлачвайки, ползвайте клавишите със стрелки, за да премествате мултимедията във всяка дадена посока. Натиснете пак интервал или enter, за да се стовари мултимедийното прикачване в новото си положение или натиснете Esc за отмяна.", "upload_form.edit": "Редактиране", "upload_form.thumbnail": "Промяна на миниобраза", "upload_form.video_description": "Опишете за хора, които са глухи или трудно чуват, слепи или имат слабо зрение", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index ca83af9215..1fa17e56ea 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf", + "annual_report.summary.most_used_hashtag.none": "Dim", "annual_report.summary.new_posts.new_posts": "postiadau newydd", "annual_report.summary.percentile.text": "Rydych chi yn y mwyaf o ddefnyddwyr Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Ni fyddwn yn dweud wrth Bernie.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index d03833e11f..378f642cfe 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "labiausiai naudota programa", "annual_report.summary.most_used_hashtag.most_used_hashtag": "labiausiai naudotas saitažodis", + "annual_report.summary.most_used_hashtag.none": "Nieko", "annual_report.summary.new_posts.new_posts": "nauji įrašai", "annual_report.summary.percentile.text": "Tai reiškia, kad esate tarppopuliariausių „Mastodon“ naudotojų.", "annual_report.summary.percentile.we_wont_tell_bernie": "Mes nesakysime Bernie.", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 30fc0ea348..f6053b2e09 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -86,6 +86,10 @@ "alert.unexpected.message": "Radās negaidīta kļūda.", "alert.unexpected.title": "Ups!", "announcement.announcement": "Paziņojums", + "annual_report.summary.followers.followers": "sekotāji", + "annual_report.summary.followers.total": "pavisam {count}", + "annual_report.summary.here_it_is": "Šeit ir {year}. gada pārskats:", + "annual_report.summary.new_posts.new_posts": "jauni ieraksti", "attachments_list.unprocessed": "(neapstrādāti)", "audio.hide": "Slēpt audio", "block_modal.remote_users_caveat": "Mēs vaicāsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr atbilstība nav nodrošināta, jo atsevišķi serveri var apstrādāt bloķēšanu citādi. Publiski ieraksti joprojām var būt redzami lietotājiem, kuri nav pieteikušies.", diff --git a/config/locales/bg.yml b/config/locales/bg.yml index e10ce3197c..2c5edf0b13 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -21,9 +21,12 @@ bg: one: Публикация other: Публикации posts_tab_heading: Публикации + self_follow_error: Не е позволено да следвате собствения си акаунт admin: account_actions: action: Изпълняване на действие + already_silenced: Този акаунт вече е ограничен. + already_suspended: Този акаунт вече е спрян. title: Извършване на модериращо действие за %{acct} account_moderation_notes: create: Оставяне на бележка @@ -45,6 +48,7 @@ bg: title: Промяна на имейл за %{username} change_role: changed_msg: Успешно променена роля! + edit_roles: Управление на потребителските роли label: Промяна на ролята no_role: Без роля title: Промяна на ролята за %{username} @@ -875,6 +879,7 @@ bg: name: Име newest: Най-нови oldest: Най-стари + open: Преглед публично reset: Нулиране review: Преглед на състояние search: Търсене @@ -888,6 +893,7 @@ bg: links: allow: Позволяване на връзка allow_provider: Позволяване на публикуващия + confirm_allow: Наистина ли искате да позволите избраните връзки? confirm_allow_provider: Наистина ли искате да позволите избраните доставчици? description_html: Това са връзки, които в момента са много пъти споделяни от акаунти, чиито публикации сървърът ви вижда. Може да помогне на потребителите ви да разберат какво се случва по света. Никоя връзка няма да се показва публично, докато не одобрите публикуващия. Може още и да одобрявате или отхвърляте отделни връзки. disallow: Забранявам връзката @@ -912,6 +918,8 @@ bg: statuses: allow: Позволяване на публикацията allow_account: Позволяване на автора + confirm_allow: Наистина ли искате да позволите избраните статуси? + confirm_allow_account: Наистина ли искате да позволите избраните акаунти? description_html: Това са публикации, за които сървърът ви знае, че са често споделяни или харесвани в момента. Това може да помогне на вашите нови и завръщащи се потребители да открият повече хора за следване. Никоя от публикациите няма да бъде показана публично, докато не одобрите автора и докато авторът не позволи акаунтът му да бъде предлган на другите. Също така можете да позволявате или отхвърляте отделни публикации. disallow: Забраняване на публикацията disallow_account: Забрана на автора @@ -1028,6 +1036,7 @@ bg: guide_link_text: Всеки може да участва. sensitive_content: Деликатно съдържание application_mailer: + notification_preferences: Промяна на предпочитанията за е-поща salutation: "%{name}," unsubscribe: Стоп на абонамента view: 'Преглед:' diff --git a/config/locales/cy.yml b/config/locales/cy.yml index ca18de17bc..f479f0f0a0 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -199,6 +199,7 @@ cy: create_domain_block: Creu Gwaharddiad Parth create_email_domain_block: Creu Rhwystr Parth E-bost create_ip_block: Creu rheol IP + create_relay: Creu Cyfnewidiad create_unavailable_domain: Creu Parth Ddim ar Gael create_user_role: Creu Rôl demote_user: Diraddio Defnyddiwr @@ -210,14 +211,17 @@ cy: destroy_email_domain_block: Dileu Rhwystr Parth E-bost destroy_instance: Clirio Parth destroy_ip_block: Dileu rheol IP + destroy_relay: Dileu Cyfnewidiad destroy_status: Dileu Postiad destroy_unavailable_domain: Dileu Parth Ddim ar Gael destroy_user_role: Dileu Rôl disable_2fa_user: Diffodd 2FA disable_custom_emoji: Analluogi Emoji Addasedig + disable_relay: Analluogi Cyfnewidiad disable_sign_in_token_auth_user: Analluogi Dilysu Tocyn E-bost Defnyddiwr disable_user: Analluogi Defnyddiwr enable_custom_emoji: Galluogi Emoji Addasedig + enable_relay: Galluogi Cyfnewidiad enable_sign_in_token_auth_user: Galluogi Dilysu Tocyn E-bost Defnyddiwr enable_user: Galluogi Defnyddiwr memorialize_account: Cofadeilio Cyfrif @@ -259,6 +263,7 @@ cy: create_domain_block_html: Mae %{name} wedi rhwystro parth %{target} create_email_domain_block_html: Mae %{name} wedi rhwystro parth e-bost %{target} create_ip_block_html: Mae %{name} wedi creu rheol ar gyfer IP %{target} + create_relay_html: Creodd %{name} gyfnewidiad %{target} create_unavailable_domain_html: Mae %{name} wedi stopio danfon i barth %{target} create_user_role_html: Mae %{name} wedi creu rôl %{target} demote_user_html: Mae %{name} wedi israddio defnyddiwr %{target} @@ -270,14 +275,17 @@ cy: destroy_email_domain_block_html: Mae %{name} wedi dad-rwystro parth e-bost %{target} destroy_instance_html: Mae %{name} wedi dileu parth %{target} destroy_ip_block_html: Mae %{name} dileu rheol ar gyfer IP %{target} + destroy_relay_html: Dileodd %{name} y cyfnewidiad %{target} destroy_status_html: Mae %{name} wedi tynnu postiad gan %{target} destroy_unavailable_domain_html: Mae %{name} wedi ailddechrau anfon i barth %{target} destroy_user_role_html: Mae %{name} wedi dileu rôl %{target} disable_2fa_user_html: Mae %{name} wedi analluogi gofyniad dau ffactor ar gyfer defnyddiwr %{target} disable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target} + disable_relay_html: Analluogodd %{name} y cyfnewidiad %{target} disable_sign_in_token_auth_user_html: Mae %{name} wedi analluogi dilysiad tocyn e-bost %{target} disable_user_html: Mae %{name} wedi analluogi mewngofnodi defnyddiwr %{target} enable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target} + enable_relay_html: Galluogodd %{name} y cyfnewidiad %{target} enable_sign_in_token_auth_user_html: Mae %{name} wedi galluogi dilysiad tocyn e-bost %{target} enable_user_html: Mae %{name} wedi galluogi mewngofnodi defnyddiwr %{target} memorialize_account_html: Newidiodd %{name} gyfrif %{target} i dudalen memoriam diff --git a/config/locales/devise.lv.yml b/config/locales/devise.lv.yml index 4470c8109e..5aaa23a731 100644 --- a/config/locales/devise.lv.yml +++ b/config/locales/devise.lv.yml @@ -14,7 +14,7 @@ lv: not_found_in_database: Nederīga %{authentication_keys} vai parole. omniauth_user_creation_failure: Kļūda šīs identitātes konta izveidošanā. pending: Tavs konts joprojām tiek pārskatīts. - timeout: Sesijair beigusies. Lūgums vēlreiz pieteikties, lai turpinātu. + timeout: Sesija ir beigusies. Lūgums vēlreiz pieteikties, lai turpinātu. unauthenticated: Lai turpinātu, jāpiesakās vai jāreģistrējas. unconfirmed: Lai turpinātu, jāapliecina sava e-pasta adrese. mailer: @@ -90,13 +90,13 @@ lv: no_token: Tu nevari piekļūt šai lapai, ja neesi saņēmis paroles atiestatīšanas e-pasta ziņojumu. Ja ienāci no paroles atiestatīšanas e-pasta, lūdzu, pārliecinies, vai izmanto visu norādīto URL. send_instructions: Ja tava e-pasta adrese ir mūsu datu bāzē, pēc dažām minūtēm uz savu e-pasta adresi saņemsi paroles atkopšanas saiti. Lūdzu, pārbaudi spama mapi, ja neesi saņēmis šo e-pastu. send_paranoid_instructions: Ja tava e-pasta adrese ir mūsu datu bāzē, pēc dažām minūtēm uz savu e-pasta adresi saņemsi paroles atkopšanas saiti. Lūdzu, pārbaudi spama mapi, ja neesi saņēmis šo e-pastu. - updated: Tava parole tika veiksmīgi nomainīta. Tu tagad esi pieteicies. + updated: Tava parole tika veiksmīgi nomainīta. Tagad esi pieteicies. updated_not_active: Tava parole ir veiksmīgi nomainīta. registrations: destroyed: Visu labu! Tavs konts ir veiksmīgi atcelts. Mēs ceram tevi drīz atkal redzēt. signed_up: Laipni lūdzam! Tu esi veiksmīgi reģistrējies. - signed_up_but_inactive: Tava reģistrācija bija veiksmīga. Tomēr mēs nevarējām tevi pierakstīt, jo tavs konts vēl nav aktivizēts. - signed_up_but_locked: Tava reģistrācija bija veiksmīga. Tomēr mēs nevarējām tevi pierakstīt, jo tavs konts ir bloķēts. + signed_up_but_inactive: Tava reģistrācija bija veiksmīga. Tomēr mēs nevarējām Tevi pieteikt, jo Tavs konts vēl nav aktivizēts. + signed_up_but_locked: Tava reģistrācija bija veiksmīga. Tomēr mēs nevarējām Tevi pieteikt, jo Tavs konts ir slēgts. signed_up_but_pending: Uz tavu e-pasta adresi ir nosūtīts ziņojums ar apstiprinājuma saiti. Pēc noklikšķināšanas uz saites mēs izskatīsim tavu pieteikumu. Tu tiksi informēts, ja tas tiks apstiprināts. signed_up_but_unconfirmed: Uz tavu e-pasta adresi ir nosūtīts ziņojums ar apstiprinājuma saiti. Lūdzu, seko saitei, lai aktivizētu savu kontu. Lūdzu, pārbaudi spama mapi, ja neesi saņēmis šo e-pastu. update_needs_confirmation: Tu veiksmīgi atjaunināji savu kontu, taču mums ir jāverificē teva jaunā e-pasta adrese. Lūdzu, pārbaudi savu e-pastu un seko apstiprinājuma saitei, lai apstiprinātu savu jauno e-pasta adresi. Lūdzu, pārbaudi spama mapi, ja neesi saņēmis šo e-pastu. @@ -111,7 +111,7 @@ lv: unlocked: Konts tika veiksmīgi atbloķēts. Lūgums pieteikties, lai turpinātu. errors: messages: - already_confirmed: jau tika apstiprināts, lūdzu, mēģini pierakstīties + already_confirmed: jau tika apstiprināts, lūgums mēģināt pieteikties confirmation_period_expired: jāapstiprina %{period} laikā, lūdzu, pieprasi jaunu expired: ir beidzies derīguma termiņš, lūdzu, pieprasi jaunu not_found: nav atrasts diff --git a/config/locales/eo.yml b/config/locales/eo.yml index b5287d9e2a..194b2c17b8 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -73,7 +73,7 @@ eo: enable_sign_in_token_auth: Ebligu retpoŝtan ĵeton-aŭtentikigon enabled: Ebligita enabled_msg: Sukcese malfrostigis konton de %{username} - followers: Sekvantoj + followers: Sekvoj follows: Sekvatoj header: Kapa bildo inbox_url: Enira URL @@ -187,6 +187,7 @@ eo: create_domain_block: Krei Blokadon De Domajno create_email_domain_block: Krei retpoŝtan domajnan blokon create_ip_block: Krei IP-regulon + create_relay: Krei Relajson create_unavailable_domain: Krei Nehaveblan Domajnon create_user_role: Krei Rolon demote_user: Malpromocii Uzanton @@ -198,13 +199,18 @@ eo: destroy_email_domain_block: Forigi retpoŝtan domajnan blokon destroy_instance: Forigi Domajnon destroy_ip_block: Forigi IP-regulon + destroy_relay: Forigi Relajson destroy_status: Forigi Afiŝon destroy_unavailable_domain: Forigi Nehaveblan Domajnon destroy_user_role: Detrui Rolon disable_2fa_user: Malebligi 2FA disable_custom_emoji: Malebligi proprajn emoĝiojn + disable_relay: Malebligi Relajson + disable_sign_in_token_auth_user: Malebligi aŭtentigon per retpoŝta ĵetono por la uzanto disable_user: Neebligi la uzanton enable_custom_emoji: Ebligi Propran Emoĝion + enable_relay: Ebligi Relajson + enable_sign_in_token_auth_user: Ebligi aŭtentigon per retpoŝta ĵetono por la uzanto enable_user: Ebligi uzanton memorialize_account: Memorigu Konton promote_user: Promocii Uzanton @@ -245,6 +251,7 @@ eo: create_domain_block_html: "%{name} blokis domajnon %{target}" create_email_domain_block_html: "%{name} blokis retpoŝtan domajnon %{target}" create_ip_block_html: "%{name} kreis regulon por IP %{target}" + create_relay_html: "%{name} kreis relajson %{target}" create_unavailable_domain_html: "%{name} ĉesis sendon al domajno %{target}" create_user_role_html: "%{name} kreis rolon de %{target}" demote_user_html: "%{name} degradis uzanton %{target}" @@ -256,13 +263,18 @@ eo: destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}" destroy_instance_html: "%{name} forigis domajnon %{target}" destroy_ip_block_html: "%{name} forigis regulon por IP %{target}" + destroy_relay_html: "%{name} forigis la relajson %{target}" destroy_status_html: "%{name} forigis mesaĝojn de %{target}" destroy_unavailable_domain_html: "%{name} restartigis sendon al domajno %{target}" destroy_user_role_html: "%{name} forigis rolon de %{target}" disable_2fa_user_html: "%{name} malebligis dufaktoran aŭtentigon por uzanto %{target}" disable_custom_emoji_html: "%{name} malebligis la emoĝion %{target}" + disable_relay_html: "%{name} malebligis la relajson %{target}" + disable_sign_in_token_auth_user_html: "%{name} malebligis la aŭtentigon de retpoŝta ĵetono por %{target}" disable_user_html: "%{name} malebligis ensaluton por uzanto %{target}" enable_custom_emoji_html: "%{name} ebligis la emoĝion %{target}" + enable_relay_html: "%{name} ebligis la relajson %{target}" + enable_sign_in_token_auth_user_html: "%{name} ebligis la aŭtentigon de retpoŝta ĵetono por %{target}" enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}" memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo" promote_user_html: "%{name} plirangigis uzanton %{target}" @@ -270,6 +282,7 @@ eo: reject_user_html: "%{name} malakceptis registriĝon de %{target}" remove_avatar_user_html: "%{name} forigis la profilbildon de %{target}" reopen_report_html: "%{name} remalfermis signalon %{target}" + resend_user_html: "%{name} resendis konfirman retmesaĝon por %{target}" reset_password_user_html: "%{name} restarigis la pasvorton de la uzanto %{target}" resolve_report_html: "%{name} solvis raporton %{target}" sensitive_account_html: "%{name} markis audovidaĵon de %{target} kiel tiklan" @@ -440,6 +453,7 @@ eo: create: Aldoni domajnon resolve: Solvi domajnon title: Bloki novan retpoŝtan domajnon + no_email_domain_block_selected: Neniuj domajn blokoj ŝanĝiĝis ĉar nenio estis elektita not_permitted: Ne permesita resolved_through_html: Solvis tra %{domain} title: Blokis retpoŝtajn domajnojn @@ -467,6 +481,8 @@ eo: title: Rekomendoj de sekvado unsuppress: Regajni sekvorekomendon instances: + audit_log: + title: Novaj Protokoloj Pri Ekzamenoj availability: description_html: one: Se sendo la domajno malsukcesis por %{count} dio, ne estas sendprovo plu escepte de la dojmano. @@ -1054,6 +1070,7 @@ eo: awaiting_review_title: Via registriĝo estas reviziita clicking_this_link: alklakante ĉi tiun ligilon login_link: ensaluti + proceed_to_login_html: Vi nun povas iri al %{login_link}. registration_complete: Via registriĝo sur %{domain} nun finiĝis! welcome_title: Bonvenon, %{name}! wrong_email_hint: Se tiu retadreso ne estas ĝusta, vi povas ŝanĝi ĝin en kontagordoj. @@ -1329,6 +1346,7 @@ eo: unconfirmed: Nekonfirmita status: Stato success: Viaj datumoj estis sukcese alŝutitaj kaj estos traktitaj kiel planite + time_started: Komencis je titles: following: Importado de sekvaj kontoj lists: Importi listojn @@ -1375,6 +1393,7 @@ eo: authentication_methods: otp: 2-faktora autentigprogramaro password: pasvorto + sign_in_token: retpoŝta sekureca kodo webauthn: sekurecaj ŝlosiloj description_html: Se vi vidas nerekonitan agon, eble ŝanĝu vian pasvorton. empty: Neniu autentighistorio disponebla @@ -1385,6 +1404,9 @@ eo: unsubscribe: action: Jes, malabonu complete: Malabonita + emails: + notification_emails: + follow_request: retpoŝtajn petoj de sekvado title: Malaboni media_attachments: validations: @@ -1725,6 +1747,7 @@ eo: default: "%Y.%b.%d, %H:%M" month: "%b %Y" time: "%H:%M" + with_time_zone: "%b %d, %Y, %H:%M %Z" translation: errors: quota_exceeded: La tutservila uzkvoto por la tradukservo estas superita. @@ -1805,6 +1828,7 @@ eo: apps_ios_action: Elŝutu ĉe la App Store apps_step: Elŝutu niajn oficialajn aplikaĵojn. apps_title: Aplikaĵoj de Mastodon + checklist_title: Bonvenan Markolisto edit_profile_action: Agordi edit_profile_title: Agordi vian profilon explanation: Jen kelkaj konsiloj por helpi vin komenci diff --git a/config/locales/hu.yml b/config/locales/hu.yml index da4ff78dc4..56d41daf86 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -579,21 +579,21 @@ hu: relationships: title: "%{acct} kapcsolatai" relays: - add_new: Új relé hozzáadása + add_new: Új továbbító hozzáadása delete: Törlés - description_html: A föderációs relé egy olyan köztes szerver, mely nagy mennyiségű nyilvános bejegyzést cserél az erre feliratkozó vagy erre publikáló szerverek között. Ezzel segíthetsz kis és közepes szervereknek tartalmat megtalálni a föderációban, mely egyébként csak akkor válna lehetővé, ha a saját felhasználóik más szervereken lévő fiókokat követnének. + description_html: A föderációs továbbító egy olyan köztes kiszolgáló, mely nagy mennyiségű nyilvános bejegyzést cserél az erre feliratkozó vagy erre publikáló kiszolgálók között. Ezzel segíthetsz kis és közepes kiszolgálóknak megtalálni a tartalmakat a föderációban, melyek egyébként csak akkor válnának lehetővé, ha a saját felhasználóik más kiszolgálókon lévő fiókokat követnének. disable: Kikapcsolás disabled: Kikapcsolva enable: Bekapcsolás - enable_hint: Ha bekapcsolod, a szerver minden nyilvános bejegyzésre feliratkozik ezen a relén, valamint az összes nyilvános bejegyzést elküldi ennek. + enable_hint: Ha bekapcsolod, a kiszolgáló minden nyilvános bejegyzésre feliratkozik ezen a továbbítón, valamint az összes nyilvános bejegyzést elküldi ennek. enabled: Bekapcsolva - inbox_url: Relé URL - pending: Várakozás a relé jóváhagyására + inbox_url: Továbbító URL + pending: Várakozás a továbbító jóváhagyására save_and_enable: Mentés és engedélyezés - setup: Relé kapcsolat felállítása - signatures_not_enabled: A relék nem fognak megfelelően működni, amíg a biztonságos mód vagy a korlátozott föderációs mód engedélyezett + setup: Továbbító kapcsolat felállítása + signatures_not_enabled: A továbbítók nem fognak megfelelően működni, amíg a biztonságos mód vagy a korlátozott föderációs mód engedélyezett status: Állapot - title: Relék + title: Továbbítók report_notes: created_msg: Bejelentési feljegyzés létrehozva! destroyed_msg: Bejelentési feljegyzés törölve! diff --git a/config/locales/lv.yml b/config/locales/lv.yml index d793c8e196..33b357b837 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -293,7 +293,7 @@ lv: empty: Žurnāli nav atrasti. filter_by_action: Filtrēt pēc darbības filter_by_user: Filtrēt pēc lietotāja - title: Auditācijas pieraksti + title: Audita žurnāls unavailable_instance: "(domēna vārds nav pieejams)" announcements: destroyed_msg: Paziņojums ir veiksmīgi izdzēsts! @@ -596,7 +596,7 @@ lv: one: "%{count} piezīme" other: "%{count} piezīmes" zero: "%{count} piezīmju" - action_log: Auditācijas pieraksti + action_log: Audita žurnāls action_taken_by: Veiktā darbība actions: delete_description_html: Raksti, par kurām ziņots, tiks dzēsti, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākos pārkāpumus saistībā ar to pašu kontu. @@ -875,6 +875,7 @@ lv: message_html: Rindā(s) %{value} nedarbojas neviens Sidekiq process. Lūdzu, pārskati savu Sidekiq konfigurāciju software_version_check: action: Skatīt pieejamos atjauninājumus + message_html: Pieejams Mastodon atjauninājums. software_version_critical_check: action: Skatīt pieejamos atjauninājumus message_html: Ir pieejams kritisks Mastodon atjauninājums. Lūdzu, atjaunini to pēc iespējas ātrāk. @@ -1132,7 +1133,7 @@ lv: title: Pārbaudi savu iesūtni sign_in: preamble_html: Jāpiesakās ar saviem %{domain} piekļuves datiem. Ja konts tiek mitināts citā serverī, šeit nevarēs pieteikties. - title: Pierakstīties %{domain} + title: Pieteikties %{domain} sign_up: manual_review: Reģistrācijas domēnā %{domain} manuāli pārbauda mūsu moderatori. Lai palīdzētu mums apstrādāt tavu reģistrāciju, uzraksti mazliet par sevi un to, kāpēc vēlies kontu %{domain}. preamble: Ar kontu šajā Mastodon serverī varēsi sekot jebkuram citam tīklā esošam cilvēkam neatkarīgi no tā, kur tiek mitināts viņa konts. @@ -1418,13 +1419,20 @@ lv: webauthn: drošības atslēgas description_html: Ja pamani darbības, kuras neatpazīsti, jāapsver iespēja nomainīt savu paroli un iespējot divpakāpju autentifikāciju. empty: Nav pieejama autentifikācijas vēsture - failed_sign_in_html: Neizdevies pierakstīšanās mēģinājums ar %{method} no %{ip} (%{browser}) - successful_sign_in_html: Veiksmīga pierakstīšanās ar %{method} no %{ip} (%{browser}) + failed_sign_in_html: Neizdevies pieteikšanās mēģinājums ar %{method} no %{ip} (%{browser}) + successful_sign_in_html: Veiksmīga pieteikšanās ar %{method} no %{ip} (%{browser}) title: Autentifikācijas vēsture mail_subscriptions: unsubscribe: action: Jā, atcelt abonēšanu complete: Anulēts + emails: + notification_emails: + favourite: izlases paziņojumu e-pasta ziņojumi + follow: sekošanas paziņojumu e-pasta ziņojumi + follow_request: sekošanas pieprasījumu e-pasta ziņojumi + mention: pieminēšanas paziņojumu e-pasta ziņojumi + reblog: pastiprinājumu paziņojumu e-pasta ziņojumi title: Atcelt abonēšanu media_attachments: validations: @@ -1656,6 +1664,7 @@ lv: delete: Konta dzēšana development: Izstrāde edit_profile: Labot profilu + export: Izgūt featured_tags: Piedāvātie tēmturi import: Imports import_and_export: Imports un eksports @@ -1802,11 +1811,11 @@ lv: title: Arhīva līdzņemšana suspicious_sign_in: change_password: mainīt paroli - details: 'Šeit ir detalizēta informācija par pierakstīšanos:' - explanation: Esam konstatējuši pierakstīšanos tavā kontā no jaunas IP adreses. + details: 'Šeit ir pieteikšanās izvērsums:' + explanation: Esam noteikuši pieteikšanos Tavā kontā no jaunas IP adreses. further_actions_html: Ja tas nebiji tu, iesakām nekavējoties %{action} un iespējot divu faktoru autentifikāciju, lai tavs konts būtu drošībā. subject: Tavam kontam ir piekļūts no jaunas IP adreses - title: Jauna pierakstīšanās + title: Jauna pieteikšanās warning: appeal: Iesniegt apelāciju appeal_description: Ja uzskatāt, ka tā ir kļūda, varat iesniegt apelāciju %{instance} darbiniekiem. diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 5f3ac2818c..6c21683b07 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,13 +3,14 @@ cy: simple_form: hints: account: - attribution_domains_as_text: Un i bob llinell. Yn amddiffyn rhag cydnabyddiaethau ffug. + attribution_domains_as_text: Un i bob llinell. Yn amddiffyn rhag priodoli ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. indexable: Mae'n bosib y bydd eich postiadau cyhoeddus yn ymddangos yng nghanlyniadau chwilio ar Mastodon. Mae'n bosibl y bydd pobl sydd wedi rhyngweithio â'ch postiadau yn dal i allu eu chwilio. note: 'Gallwch @grybwyll pobl eraill neu #hashnodau.' show_collections: Bydd pobl yn gallu pori trwy'r rhai rydych yn eu dilyn a'ch dilynwyr. Bydd y bobl rydych chi'n eu dilyn yn gweld eich bod chi'n eu dilyn beth bynnag. + unlocked: Bydd pobl yn gallu eich dilyn heb ofyn am gymeradwyaeth. Dad-diciwch os ydych am adolygu ceisiadau i'ch dilyn a dewis a ydych am dderbyn neu wrthod dilynwyr newydd. account_alias: acct: Rhowch enwdefnyddiwr@parth y cyfrif y hoffech chi symud ohono account_migration: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 230965fe87..60922b06b5 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -48,7 +48,7 @@ hu: digest: Csak hosszú távollét esetén küldődik és csak ha személyes üzenetet kaptál távollétedben email: Kapsz egy megerősítő e-mailt header: WEBP, PNG, GIF vagy JPG. Legfeljebb %{size}. Át lesz méretezve %{dimensions} képpontosra. - inbox_url: Másold ki a használandó relé szerver kezdőoldalának URL-jét + inbox_url: Másold ki a használandó továbbító kiszolgáló kezdőoldalának URL-jét irreversible: A kiszűrt bejegyzések visszafordíthatatlanul eltűnnek, a szűrő későbbi törlése esetén is locale: A felhasználói felület, e-mailek, push üzenetek nyelve password: Legalább 8 karakter @@ -195,7 +195,7 @@ hu: fields: Profil metaadatai header: Fejléc honeypot: "%{label} (ne töltsd ki)" - inbox_url: Relé inbox-hoz tartozó URL + inbox_url: Továbbító inbox-hoz tartozó URL irreversible: Eldobás elrejtés helyett locale: Felhasználói felület nyelve max_uses: Hányszor használható diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index da8dac3c22..2f4a05dca4 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -10,6 +10,7 @@ lv: indexable: Tavi publiskie ieraksti var tikt parādīti Mastodon meklēšanas iznākumā. Cilvēki, kuri ir mijiedarbojušies ar Taviem ierakstiem, var tos meklēt neatkarīgi no tā. note: 'Tu vari @minēt citus cilvēkus vai #mirkļbirkas.' show_collections: Cilvēki varēs pārlūkot Tavus sekotājus un sekojamos. Cilvēki, kuriem Tu seko, redzēs, ka Tu seko viņiem neatkarīgi no tā. + unlocked: Cilvēki varēs Tev sekot bez apstiprinājuma pieprasīšanas. Jānoņem atzīme, ja vēlies pārskatīt sekošanas pieprasījumus un izvēlēties, vai apstiprināt vai noraidīt jaunus sekotājus. account_alias: acct: Norādi konta lietotājvārdu@domēnu, no kura vēlies pārvākties account_migration: @@ -88,7 +89,7 @@ lv: media_cache_retention_period: Informācijas nesēju datnes no ierakstiem, kurus ir veikuši attālie lietotāji, tiek kešoti šajā serverī. Kad ir iestatīta apstiprinoša vērtība, informācijas nesēji tiks izdzēsti pēc norādītā dienu skaita. Ja informācijas nesēju dati tiks pieprasīti pēc tam, kad tie tika izdzēsti, tie tiks atkārtoti lejupielādēti, ja avota saturs joprojām būs pieejams. Saišu priekšskatījuma karšu vaicājumu biežuma ierobežojumu dēļ ir ieteicams iestatīt šo vērtību vismaz 14 dienas vai saišu priekšskatījuma kartes netiks atjauninātas pēc pieprasījuma pirms tā laika. peers_api_enabled: Domēna vārdu saraksts, ar kuriem šis serveris ir saskāries fediversā. Šeit nav iekļauti dati par to, vai tu veic federāciju ar noteiktu serveri, tikai tavs serveris par to zina. To izmanto dienesti, kas apkopo statistiku par federāciju vispārīgā nozīmē. profile_directory: Profilu direktorijā ir uzskaitīti visi lietotāji, kuri ir izvēlējušies būt atklājami. - require_invite_text: 'Ja pierakstīšanai nepieciešama manuāla apstiprināšana, izdari tā, lai teksta: “Kāpēc vēlaties pievienoties?” ievade ir obligāta, nevis opcionāla' + require_invite_text: Ja nepieciešama pašrocīga apstiprināšana, lai pierakstītos, teksta “Kāpēc vēlies pievienoties?” ievade jāpadara par nepieciešamu, nevis izvēles site_contact_email: Kā cilvēki var sazināties ar tevi par juridiskiem vai atbalsta jautājumiem. site_contact_username: Tagad cilvēki var tevi sasniegt Mastodon. site_extended_description: Jebkura papildu informācija, kas var būt noderīga apmeklētājiem un lietotājiem. Var strukturēt ar Markdown sintaksi. @@ -338,5 +339,5 @@ lv: text: nepieciešams title: sessions: - webauthn: Lai pierakstītos, izmanto vienu no savām drošības atslēgām + webauthn: Lai pieteiktos, jāizmanto viena no savām drošības atslēgām 'yes': Jā From 0838cf1e0576cbcb8df1f9a1a57d42abb51f866c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 15 Nov 2024 14:37:45 +0100 Subject: [PATCH 382/550] Fix domain attribution field having autocorrect and autocapitalize enabled (#32903) --- app/views/settings/verifications/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/settings/verifications/show.html.haml b/app/views/settings/verifications/show.html.haml index 4def10e595..a93ffcebed 100644 --- a/app/views/settings/verifications/show.html.haml +++ b/app/views/settings/verifications/show.html.haml @@ -65,7 +65,7 @@ %p.lead= t('author_attribution.then_instructions') .fields-group - = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4 } + = f.input :attribution_domains_as_text, as: :text, wrapper: :with_block_label, input_html: { placeholder: "example1.com\nexample2.com\nexample3.com", rows: 4, autocapitalize: 'none', autocorrect: 'off' } .actions = f.button :button, t('generic.save_changes'), type: :submit From f1ef7b5b433b392956469874392acb146bfc6c57 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 15 Nov 2024 16:35:30 +0100 Subject: [PATCH 383/550] Fix uploading higher-than-wide GIF profile picture with libvips enabled (#32911) --- lib/paperclip/vips_lazy_thumbnail.rb | 1 + spec/fixtures/files/avatar-high.gif | Bin 0 -> 75006 bytes .../examples/models/concerns/account_avatar.rb | 9 ++++++++- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/files/avatar-high.gif diff --git a/lib/paperclip/vips_lazy_thumbnail.rb b/lib/paperclip/vips_lazy_thumbnail.rb index 4764b04af8..fea4b86064 100644 --- a/lib/paperclip/vips_lazy_thumbnail.rb +++ b/lib/paperclip/vips_lazy_thumbnail.rb @@ -52,6 +52,7 @@ module Paperclip # implement. If cropping ever becomes necessary for other situations, this will # need to be expanded. crop_width = crop_height = [target_width, target_height].min if @target_geometry&.square? + crop_width = crop_height = "'min(iw,ih)'" if crop_width == 'ih' filter = begin if @crop diff --git a/spec/fixtures/files/avatar-high.gif b/spec/fixtures/files/avatar-high.gif new file mode 100644 index 0000000000000000000000000000000000000000..7639f2c507ee72beb745a2ab0677590eb9eb7459 GIT binary patch literal 75006 zcmZs?byU>P_xS$=r9nWJZdj#LX;4ssrE}@-SdeazZgA=DUK*B^5^0c*B}G751eJ7Q zzpu~xzu!5(`RkrJbLZYU=iZq+=W(v0l7hH|r5_LqTr&gz4KM&e000I6Z~#C8015!m z|C115I6vX18_Kigaarzfc~E)FcN?u0T>d1BLO55Kp_G2|IC9?00afVPyieS zAW;Ac1)%@u6BrFZ&;Se#z|jB_4WQ5f`u`k-f&nN5fWiPM9DpJLC<=h00Vn{5g27M- z7zzVJ;b15d3`K#VXfPCjK*10w1OkOYpl}Ej34x*@P&5Pzz@T6l6as_7U{E*=iiAN? zFen-Z1>jIH914L$VQ?rM4n@MDC^!@ihXP0_7zu?Sp)e#Aj)WqSP!tl1MnVA;6pVsG zP*4~O3P(YaC@2aAMWdhq8VW{3A!sNJ4TYnjNHi3MhN96>06>5N1O!0900bOBAOQpl zK%fBx07ihp2nZMf10&#I1QLuufe~mh0)QaE5CjB*fI$#&2m%Q~pdbh|1OdPhU>E`d zL%?7NI1GV=Ay6;`8ioMi2rwK0fg@mW1RRb)!VxGq0u4t1NCX&(fFKbtBm#~^Adv_Z z5`jh{02Bg@LO@Um7zzPLA&@8p3WY$U5C9qhMk63-1PqOUqY+3n0)GR)( zF)$I657!(qNMq&UI28_Z$P#72r14m(yC=3dPL8CAL8UsdSAZQE>je(;vNHhk8 z#-Py{Rt%B4yspk$IZb(Ce!)jr{{Kd05ib*pA7t8ngIA1;AFM?&nQ)IfX@T^ z*7hLtjegrPV>;xbcsQO$z^QyRxp4F&%iDlDTa}V}BSx8)v}z9vxfDS;A5|rtXNt*f z_zx|^{0EK3^~cQ~mnX@!0Z)w?-*JJsY6E2SUnQ-jbJs>_7|Yu(B~wXNnDn-s9Gy?| zr6apr{wUWj6_|f8nX_)oDAa4TC~GmD%=&2(fIMt#)p=Q3`&xl-S=m96Yq*NSQ7hd* z@Cji&O(GN^kjkkWjw56b7}eg!0xArI2EYm_hF2$fj-!5*&63L*DD zm0n`BY)5@&bmr+5qgDxY2eFxJ8`i|vqnu)MgO>doV|jP|8jHVbURri4 z^?R;`ILkbSpE9<@Hp+_zsf+Vc<(?fI5h=f1@M=u$pqq5hh2(W^-OI1~%Bg|K3sq=& zj_0kHJ9(RIa93Vdxm&$7bz^+9Z=mg&f_LcV?uvdl~A)a<|(4z9Ud)CYHZ zh{`XWN+RRJpjt?sv|iVu7J|~J>0^#KWwFipli(Wy^(*)bUUH@}Ir|BdMdCiZI7;$--DKIf;XL8bDKWQBL2^$+2(5(qa!d&j>h?dMU$;@EC! zm)O>t2KN1DTID`jbX2PwhYSL0l^$4Lvvil7!a4zhhLcJ*(?JTARC0KZ=T7rqv|~8Y z3_m`~!E$E~$6hzr*Q+x8)j%bB53fWC*k=pr^;+4yRH|202e_>Ose^oeS4Bh2cSa8e zFt7T&hlkjojF}OxnX#{)_A*WjPcP>&%p7_X5!wGzL`k((@6zQHedcy)3#v6-mlu4J zKT{WiadJqG`8ASF=*28o(|vxN`m~*HH#4lj!`_AFYx9*_G>v{BZvJfgKRd}+<-k;LSF zF#9krH->-dbAi^@qDlpU;wKtZq)u6>36NxVe_WpS8uE<|LYq++uAUh<;L;5xx@X~Rbi1_ zW1&m_FxoSsi-?us*B3&5w@{+MjQ2!XxgnTe+cX;QSJ4YH9YT zJN!{^g&U8ZZ+6Kt&a zi{gQ}k?MPef_f~4LS>8z#S;CeYz3oedHMEnMrS&bT+{PBVY@Fry=mNqHYV`Nn+soJIgNJw_T17w}|X@!TpkTlXbh> zjy#U(UChG@mFp`3+Q$#)v6wOv6M!#f_or*$x4S;=tN^}Brkl_2+d<0@0@N+1Co$hx zr*ik32R>k5b-(UmrO;@4zh37(UVHfc;*(G)?d^3{)~jW!B+2pmS2qE~cbn!v!}&l- zKg}?MUoASk=%;4m#fTqE*;W1Ho1QMv(dedh+aK&Y4!JVJSPwo4;n?1F3FyOPx~k0* z34v_j3h&VjitR%&sBvOXbur_GH&y?PpT9nzVPEgDVUqmH@#`dL=I^g(4^nZ)m?qzk zH+M}j!B_@F2?rK4`=s`Ejybq?u9}V+m9PP^505%Rev1XY#q-JN2#FL5`>k)?uSsZg z?p1B?z(y1L9T`yH@!=m{;Nvl@iYAu~F_?|LM}qw9 zOvK%0^a)*L9WLxh+be^Y6`l1JoqOG!*7of(sonCQe-Kp+qviZiL>)!f+3cqb+foL`%$0uVbbj(GzMYoVPODuy!_`7d%bA? zF*4HYpgH^C_3LO3PG{uv(B6T79?B3oNLafpY<(_DQaq?{AO>qCNWw3cRG;h#R$}@! z=~ZzoyfYGPAAE`%*SAA@H5=Ku;tJj;b-E$#6pNP44#^NpL~w?Q8zg=i3po;xJw$~i z;KpP*IKvN#v~XD-LX((RBDrFjAK$=UI}m-~3>)-~`sv{Lnls*B)ZZ8qHcI1$8)JKR z_2D-@%hfE=RVWD6nW6@9R;#vyiU)nTp}2Sf-|>sD7WXQ;rrPY6~iq&!S z#1#v;woLkXNZJNZkvfXD98aNlBvRu9F>DhiQM-|_hQ-{ZR(GbV8O9$T#(a)Rv_}QC z11|hDeqh|VRZj0G)*o3oGVkFZqjElK+mjY7xxftJB?i8l1d+0kj0k+UPc%7)Rz8(} zF##D#pd%hls!Vb$k4t#c>LIC}W9|c)nfXfk6m|5gSUbMeAn0m(Q5BoH0sJf*&T#1R zq%!-aIgOFPL-od$_BMmOBzr0@+p{WxraG(KA;bR=k5rMB>nJ%>|0z~Ss>>}s&Z^5d zj8EJp{G(Z1QeSGy6P@fIaoG%xq>6Z?ZD(^|QE?qBf5W%-}iYPaO&}#nQNy zJXI%*$#9F4=yGiQDm(A|F|)=Ow}txz2$q$K2f(77#nDXEQFAhebZm2U|c_QZv2i&@oqA#v?kUB>K zk{8Jd_rh~=qDp@_udO+%=q)a;F|2-&Eq1QSYY8Yag*56MN3g|}t4Y95eUm?Pq`u`W zJD5oMCfN`--i#6l^<}~@B>gk#n!Dp$-gGBcJ5b#PRO)qw6murOF~Ana#Aipww?-&u z66fZ6`oa?l^IW*nCxuGLgl35OFLYz`|T+NJy4^mTbG%Gy_ehz8y8R^MR+*y2<5r z)uEn?fCd^W( zZON7l z8b7Bi9{>5ft`6Da22E_1xTGyC3n0_8$3I?+HqrJF(b1G_KFLTjYG^83bHkkxZu|mn z)F^%2l6U2nxg7Ma#QBe*X}&z}fn<@hL_eZ7Ju^3*;uG>QM#=6IwT&&=2hN@rYGb7A zXDrec&PfB9UHqtw5$>0qGDYsZyMSabiGn{IL#}c0O2Rcg8KsX>242q%k)Ol>*Q9oW zzK`sCCRBz`uE)OZ<1(F)Zgph-td8JUYF0YwAu}G#;&m*DqJ!Nv$r*q!1I90}aW8Wt zt7tzz zQ3W&33{hTYPLT;JB9^#D={Dk})S^Aw*$Ka5 zL(Z&liEvXZO6}OZe!zu!a=0gBdWfg?u-_*1A6LZ^MUUoIj z_8zdf+QvmF!#8M`BX8yw4f_P^`Ub_we#LgONP6|QWt9~y^4ybFAe`F=`ZuDp{jQC1 z#VqxR=f4s~Uvx)xt1SwxH@%d~d3rPRTg*Kl^TV@`WsTIunqV3C{$yEK5%;Xgg>=Q3 zfd+X-AOEais@%bIpC%1p?58Ig#niZcUov!&S>use3-AuTPe|Gs-s)O0WUr}zcbxjn zbc(ZXPKbV*G9gE5WNRinVeqTV^(^if<3{~BR->bT)pIZD&aCzJtX0GH36oNDRAur( zlW<;q)h9+WpFlx_57jaoq#49jhT6;A34N;V z4P5ux%FNAn7wnKNZnaP^>Mcg;s`c+b?9_YDss{?VT5STqWjlJt2Ko3^%_rXmRVVE! zZGL}jl=`aglbh7W;O39~o0*?$J(*6;dzkzpkK2{Rtb<4Phy$55a*iXjt?7iHyWMvC zO4IXOBRwtkiKm~sL$izet5->?=ShQyK{8v9n2u7IY=pBs57dfT&%8I*e$@0uFywY> zbtNmUuG=eTVEa2=hb~q`52y6G%!qDHCLbdt>U)MQ+5z7OoQ;l{ldzBc|XVue3jAt%w+fUq&Ef}P?`$G>zquYIDzE1sXsTr%`s&{4(#5tU_%Ez%t zwExA_cQ%rI-jKZ4K45Wt7MA;JOB9n_g`EX{>X2N;v$ii~=7k&XmlkxC4oJ_^PWE87@pyuN@ zTrWhl@bQmzsUziIyB&q|CLw#yoU&dW?s z@n4_qK3w}EX`$D7orYpBaL zl7#>3nY58`sXzrNB@>N`Pt42hcxZF_)5wxj1+GvBOaA^2siAqR;4=Put1-n};O>+C z%!)~1|BYFXqR1ZK2RxVCKLMI`2FBNP>n*mwmLUbUu+6)r*2L)%p5}Qq{}%404^C=@ zlq8pyJo;@$t4=sq-aKL!7?l)9D6SYxAF1;7jIl@Ubh6#L!+j}QH)rD&`RCXkd{(`f&ke_f7`?D<-@ zoQS4hZ+700w68^%{pw!cNzf48M?3Gz+!(w)>(@Jt)$9cX66@2y!xM<>qM!dc$?Sce zH`%PGOz`B@n1MB4-^k$|4u^S*=Wr4etFB!9FwuousZGcyai<}$Nx$dX0f)k1@YC^QJq(g|59e8 zlrHDgwNu_U=rU8+Yf4E4MhZZ6ObeDMUwDZO6N`zid#@NqRkSMZKl%AYL)TG9R6@zn zo2pAq$vab)*>LlZqGMZctFExr&pD9T&@*8Zckh3h z+BzLBZ%vqgvbwLRH3t8MN=jsiLLIgEZsx*=>)KZQB9_{AeE3|46B8qr{7l7^Z*QzE zStpe^gjai1S7mP7n$wL+HWRn?oqH*bq`N4W^z`EyeHS1xOO#t)n}Tn*lI8e~Og#nq zW~stVB^E})gGT2{N|l;c6G^_{xo|w^6$Avs1rB;Fsag zQl=->RS4u~+>--ZoM{@7#t;ZJsMyj-wS<64|9`oh1K>l--z#c~X0JsX6}pV6wX^u3jybq72vw3F@^_blE}kITl#RM6eOc-%L&ZU3 zW6C06te<_WPN;1zyRD()orL5`KrjMa#Wwub_??q};T{yrl(pG6C&5DkY;&e;D>YYK zO)R)U>bZYYx-!ITeIIV=I>FJkaijHaGOfZT`$fLRPK|jZFUym_=q?*ORkOZNdDr|a zjX4tglB$m3fT5(O<^ zQ7;|v!CA#3lMpWdZ0>`a<5Bv^q@>rzpVQV97d)LKccZt}T^TL2FmC|9V8b5EN%HhNTj5qKa!O)V)9xOKM+3PdZeaz$K>jw=hyHyGe)HRB=l`FIaU@* zql}Sq)yW#GEmh~*+s9CcT|#kQuRsZ`&2x#eOmK_4b;pz2vrS*nBd-B1L#!R!v|ZaS zGUk-4N__Aj4T6+fJoV_`F^oJ)?=r0EmR@|*V*XJy;3=f7(<+^BT|yLUW-T*n_wnhljizU5aHOf6 zuFNyTthD-mL6E zv6nU{b6e&S9*4ortfTl*L2WMn9j8D!K{{RpiQEy&Kspg2?Et zYcVMy4KvoGt_k|+|1xj6g*Um=C-BsFrs(j8F3Kwg_TYe4iuE`y+ zxWza7!IrU9_C{*HY-!>Woom)6?rjSO6Ih{K@w?sCdiF&*25E*_-uvcO9Ybv{h^N0K z4)c?g{4-3#GRwC;dA;AQ1QEWlUouLse}>ZWS9>|1MI=dG8`ivUmq$P7uT1T@u0#>YSQW3Zm9rx8&$EzLrRHu+K zc{v*@^bF(Y?Ym%Wv)WF1kJ?b>%*;MWQ>NQ1FQ$lFb||yy789y4YilvkBllU~XY}{U z->zOFTx~7PF}(EBC%w4e>(@};@YP}ZthzT7E~S*yklaj|{^ghViLUX0Ep{N@>^x`{ zw%%t*!}rXjosxOtk1z@IOgxSiqb#bAHMWqNEv_D988fVskgENd|3tg0p5R;pRRZ~j zw*AzNuc>DJmd4hsU7FR_^%>)Zs{9~ZHLg=6RA7-fB|G9x#N3odCc&f~;Z64I$DG1h zIms88+})SCyX&l|{Rirf69bjh&20CO1XX`FQ*^{Yy6^L(X_d6W=U!;nFLXQu3q zuau}a2ivP1;&0)9hwBp`IDUNj^5*?Sd%>_c0IX4#BP9>2IL2jk%Z;2cL6c^zMI zU7Lm>aOz)`_lnq0tA7s;6^X|L6tm{H=C?Ai$!R;!-WKc2rgB7}mEv*2O~>1cOHq`^EBep!E@f;HDg{Ny5iNO6WevA*+5>M3U~6Fk4}TT z8N`2Sx))pCixJO{SL=YaX(=LHYHYu1zT;-`pok?1-}^i-(f#%Dh3wYf9QnXS(P-3X zrk9_LXWl^h-g`%y$Ct8$A4QgcwT5IJcn%J^qqH=r(qBy09qkN_KSz6&tLwa>=@(rj zi|0>s_Ci!xpA8}PrWYDGBlosK;&iD7`w?Zq(?mbsjk4DN5*8?**SWrvU&TD7 z_|TFT+x+S;UgRPUJSaHvZ}}4Chq*-SYn3trInQMj30Ksd634%(s_uv#f%-qkx*nT#9nVs~o{Ay2#I*yV;HK@>%>N=VqNR>O9BBgu)ipIj{h|U%#)FT9+zI zDC86Rq@Qv~hwr3Z(jFT}>$`;!hgxO4v8AnM zmKl}USsyp#w#u}8r6S4Hw*Bryj9}IGDk{kSo6nJ68Mrw9uj(yulIMv5QFtka#O6>i z^;ff{V>d|b-%HRz9rk9c_K6~M<*w8tC6??swK!d2W?FGeT;X&%c?T$28rd+R@N5=Q zHvc196Rl_-_Yz`&^S6wvJCWM!OsL8W#wlWsz67f@bvzNy42W_rw%U0T#ol(3=ucc7 z;?gN% z^)dXfb!kUgCTjmA-ng?=p?JhRcinA|-4|;S5R9VV`WbJ15I9zG6T>Gf;}o{>Wv(H# zwM>b8YIvW|A?IXMw~&I$Lqxaa%Ly$oL6UBUijW-)p5DyXjSk${rF6lNL1^8)jx_QH zi5o)wX{XLTfNZRNJ8@CU2@3)6r@)qRZh6`Vau><8utzq2$5Or4g2bikzHJfYJNO6L z9@o~k?PpQ4$Z1;EtU=-e{x1R#bA(PaCg1EFa8T~kMRwMJ2a!!A8jw# z&iYmdyF{zA(%ay6MbRs}Cw$oMWifFO0~GF$!fze{p}si5mV+is-*dW;6|@CiNc6JR zVs`aNxA#sydk6O1EZ7L*0F|1sLLU0n(W`4n$}_kz`pv=>(1W2D1@5PPv4A`OU@P4} z2}3CCg^DK1FxEwVBC8>m)r2Dr+7U@s1snNxYm z45VGjT)t5U7ApkT11@nFR6nx?0p<)oH2XfDfS+0NW?-j_ye&Pu~{vJ}X?9Zc5#x=^7 z01Cs7@v4BoR?`j7PqDh8@VIpIzWoz^e;uyh5v3<)o{Jg5ArN1?ykkG z{^=dAr0zD2=cJFqU@v2$VR)YZu7rlO<4d!7tHjBS*y8i6X)fkN5Ug%i?Q%FfL5IjxcGa-{gi8vS>RWvs`UpcC@KZD??&71n!Nxuhak7VT zW=csn)v3hf0$))YD4HWs-A2z;C&&qcWj@geU`NJh*VoC zH;Oai%7Vyd`$_9{+U82wzfQ;_>=;)A&=ux)9Pvc~X?6@bP3q6<=xSf`ZQsD>2CiFU z;lEFbK*}{GFrO|$4f);EmJOOVpL<}g`0Vc{lcvYvRqej z`D?_$DAIER>alh{1BarLqx}1UqN^s$IQKx7FWICMDS4@d$eNEXj>Usr`E0bQ)ehOE zH_jYm3|DUX=Z-~HjzmKxMYFV}Q3mNY#jt*fBqzi4R@yR|Y+lS*9>9{1pfQsj&#dXl ze1Uk@z+pEY$1La%V&*8Xe(vt;8Hh8NKZ_Z!yxb-#CZ{gHbuU%QZ5zPp%t?2Si)deE?Ox6J zcah=Zz`zk!=Klb#bZ9Z6jv_MJu~(Ss43_2pgxZJXj#-@?_EI~+L~2`IL!Mz zNA}GzeL$#syoHQjBK{Fq5;TAupEcT47T0coOWgnI&=@E-Adnfa^rI2!Oif7}P_W^Y zI~5L7BJ|tSD(oGPY^BXU6V%k7|UmWj7+8pSzeO=5DaT9YV|n81nuT&$2+ z*e7CBgO`MTT<5-8m9QF6W>|h-RnopqYH*m}r&&Ht@ZwdJzjzmpiZnSdgQdW>wMQA^DaT7i?S()XPpSna5KcWFud#vJ= z)RIWAZ31`wU}W@Zj8C!S+sRH<^du(x6HI#YD}L1&B7S@_veTcuU&;4!-yyTo(T5`B zp{eu0DKNapG2s*F`G#Y;9iAzR*BdD~>z8=px*7#@ zs$<2$ll}q6>=7&;eKA)-!(G+hm!k~Un|jo4bgbz=zSgr1pz__m(Nd(KpClks_j zaoqThOib6%Y$vGVoM?VD*NfT{L=y0J-=V^)s9@!N@dVewKi8#0Sb-=~8r7a4LH3@! z@zK8_sC4Qt?zTU%Jw~SiTq{1Cik|ImqteCQ#nLfkg@R#4%wXkcZ;216{G4HfE;N+mOG;ps z4n}#206pW+Sn_im#FOWih3~}G@qRSC!pI|CHLrv9Z6l5rYO~{gu_WB8b0X8X#{Hs- zJGkvMr>epj`L#NI*r|i{Q-RxsYeANy{Lfy*;WEcX$N;&gQTVqnbi$8DTjh-k-tcr| zC(;<^uKWm2pSoLy^X!1oiRg`xT56~4=O0z>BD$*s9E1B*EkXDD?Z7OqsoOlozt1dp zWLiOp(%R5|!_|w;fiUHjfcrtY97MStQKMTD?NMCejpJ!ong-+2upax6UoHZ@t4#m7 z+^zy4w6rqOSc<=J_9+rl+n!DoLzdfD8aOljZ>V5&=A7?9ddzWn8F$EGDzmoB1rt~` zZ8|tF-gn|(wm3Febkpt;yl_LeptTmk>P%ECG5*Luy^KDl{=69^TSI=*db3~0=h7zf zb7;md!ccm_A#l)(q{L&RF#B}pbs=wPN92F3`}&;p;he~mD>^p^G;>=$!IjKG(ztp3 z4N`ZQk+d_;{lzhFUT&@{U1Ts60d?b|n{@jx@g zo^(^OQ5pVb^!AA{9`C>=x&U`8^&{j{I3HG~6P#CMloN3=zK_38F9uG$J7a!p zZ1^|mU{dnv-(ku<%?0;u4g7R&>h90U>dv^4OJ~-Zhem5B#~IosFt)DfZWY$}WEgEw z_q<`lyQe4V_PX!%GUaqqar{VPvlVaV?xzV^g7Y=b`?DXeXIQao*^@K8n>8z{EsT!c zsc}gS-OWsV>5mdWZmIr#z`9NOHQn(399QTJBYR33NO}eB6Oy`rNgrc~`Ms#4+{9=w z{&j70UE=1w18ADQvHY$^ksu^Q<(7RFjUzy@_i$Gm+i)G-WG!}iCcO__oKS@tV+U`N z-z2aA(Kxi&oiEO(2jj@zlLQ&KZ`Z#DU|5_B=lbt}5ByX;&}iZ>ANYRVTUVc#^nZA; zdzHW1@=Oirn{aFPO;Cm831Xpa4E~nXr->K52|9#tLjZ!;6G3YiY(pgm1ZJSlwnU!1 zm%&Rf@5r9(A)O58-<`y(j2X9gqQYxHq0?15)S^MvWVP=S#f9`9qeYx@;8gvEkDY55 z&H5BEtF``%E&U&JL`L8Jo1x0lYai_9UO3)b&#e^;yqY{OJFS0&ky2+ojQQ>o)vBf! zbq7zNPp4KReChv-I;X%PrA2SuLtrweK@RbNcU8nAY~xztq7vL~_kpH{D*xtWSJoIz z$;`hIQVjiQGPvCC*%CyH3KYr;K4b!l-g5JW>xG|Eb?Oc#4CIEC)bM8iUPEvv64HiblYG4A$Tu`)9VYoLwbdM8ey%8Bc3SNQp04M^BTZgQAr zG)?gN@TBEh@X?V5*i4h(C6p{}z54DyqyS zRCNK~4UG_9yGa%xXdax(6lI!ME+J%Bb{8$wa~Y=+>*O5HTuN-=Xe+T2;U27-k8i0n zmtHtw4UA^fUCu?dR#0YiZij<}vt25Za6RvNx%d_8c@XQz+zwMF-V^+*{1DH2*(%}M z6u#e7!cK1r?Oy7)>y=)n2x;qT*JuV>q*H$_DdqcHA!d9}&=H$0ti|$Xu6s1|RTkfu z!i%+g?baSpi@IcZfQ<5UtTeh`*5^J2e$rK^Sm_D&;|}ab>Bc!cg4;|g7aH(xo{EfI zm&da8v1XyJEx))$CgynLNo&(O!PwX;Wt>dBcq>88 z4AgF7DXi9XdU;;prf8wHhpwS6vn6&Owf{2Wvkr zP2j;kgtESTK9d6i>(GQx`l`eAGX+<_vo6Xg?=<}ySC){U0+C${!xqYHz;nn^RoKG+3z|HBU^u|`bdi@c3QH@%+p zM+1e&lkAKFmEms;^+JjGs=s%Y+j6(z8gdux3cNluEP4Mvl_mgiB2VKnVx43jR1vA5w*XB&Hg+9V2Sj%oSQeg7|BNw=;7;dR3l)Cnous$)Cu#^hQeVaO zF6akVQl72@=tQK>t8`A)v`$}k6{Ktyjm?IQwauH6VWmBxy=?PT{P|mgCe2pbbb5wE z!k4!W{1R!prT9=HTZt)lYeW<&$CB_%);ad^r`rX%C_*XXrchOX2tGvy9ihT0d+n;e zW;%PVl%1kg8QUW1!4E<))ElcGVR7MwcAQ+2Q!#|FDI8ku>UpwbMS)N15Z!kpXKqQX z5-MNI8$5^JEDgd-pHk4RpVt++g|SMZCj^G5LFS7%eo^5{U!;F$krleLC)d7T zm>GwAu>HvnxB?3Ow(ka$`og|BGk`*Q`8_BQ46?nyun&5wiT48N5`eTyLe&D zW^!ATe0ZWaHt^P9{jike~xC3WL=G1Naadf)?#gdB~ zbNKefpuTocB+OCfDgPS@|IuNbW?Bm;9n#6JDvfAIdJrd%U%(=lp?uXXAq2|6o`qP( ziBq&a0lis%)AQOz-p3M=ie)#-OtR1fy!BX6TF+_BGd+8M6tr+{q+4*F=)%spKP8mV zIvH{AQq`*CKB6t#2k{EwEqxO;n5mGIr-0CW*}4_3{F1B2sqyDzgq&-ovYJcH zsC{yAz$`O&4lEGqN&nd~ZFw2-1ouqBJV4;BvR^&(R+CDb0d5gnR@G}tZdrkceI-d= zk%+QN@`LqgVNQSEh+KU~-Ivp8`a)@7{meH~lD`W_@;ks{#Ynk%orniym&U6@mCcDS zSih;eSZ})!5!j=8@DVC3tp97v`~Rh{>`mJO;XZ`j2%KW3UcJA^1c{KwV)=w8Sh|mA z8%h*`Q@WNiv8UkiI1<{2<|QX9NRoid>aF+5kMZzlTG4f#7p3FyHW*gtLULj4Yu}JI zUI^T@J{H@Mpbk3YC{sh3Kox~b)|(43lMDC8pF4uY{xzt;VY$?ki`6c>;)NubZhoTJ zU2EfU6W}WXJI*=#;te!L)rY9n5y~DG1VCw(K{Po#&=_L+`9Q)e=XW)yf@wjy%a(`m z%VP#uoy5ypqxuI@NjqQjaNEkRCQv@B;Cu- z6IUW9`d4|<@*wt!lrjcQwCOCbkB!-IvYxxqEEzATtWXTGF%58@Yxz;r{w(;@CAeId zFQ@AfR53|O3}sTpH&S2+m$_WjZ?Lpm)^T@)YWWVeS*uu1ktojcJ$71LQeXLQPX&-U zR_U4RfA7%qxkP&4$>9hMZEE#*rjSFQQa)R?lNX6J)L-MuHuTHn6W8?$Ja`|+ASoouEKq%P0(_!zZBmh@+!BCGE- zt#dXX(W)Ms zLf-AI?pu|(Da*Hfq`3@;WXUyQgr*P|Yh|897x`C`E&X&|r!XpmRHscm9gV0OsJ8E+ zOxC8pt~_SZ%3jWuq@o{=rEc?1l3Tnw%`09_bmpZtRaOz3t#grz<46`Q(2$>y%j45z zW77_|V6sBwLg40oOM zvvQFU@w2unuv^S|)9(@UG;4Fh!2ZKCs?Myi#vFUnl`r0Q(q*gsHseXQs4Jbeo#ih& z6k<|!p2u7*b~H-PODEEwDQuNviic#l*^*x56^nYZ_RlIhY^@W@FKU-3Z?LkOYBBDR zEmKRo<4ac(s!Ti)Z8^26c%i>b3m0eOnp{kj5^;KZJ7E2)SM9{7D2%vMbeC{HJ6hI% zcd8sic3qWuuFi6>TX=u^j@E^;!Aj(v)hbe+p*7pZEUQZ$**z#POj!dh$0jW3t1ftr z`fNu_8z1)^T+ryn!Cn@SY{0U>_E;-YcsljTzsJ8No3!>}ns3-MIN1dz(-AL-$|k&@ zh-Ok_7n6)OkEu$BcLK|^JOVG7cNlPF5adJ6aA?-|Rw73?ELijx+mG=`y1$lsIlaY?d=+tmNIWoAh@nN)pHNUj0Ero#&-`XY*Vb z+K+;L_v6hyNZY>=jlE4+ZJScj;08m3;p`zhi5j z*j_|kl)Nss7fQooCa?L!TX0*Rls&ggz`R7O@n)D?@$pl96%o-bawVIlziBTk+TO7z z3A|`=RFB*qe;o}}M4|WCSPO7UqFJ4UDy_!U9UX@-wvo=2lBrA=iqGFAr9i^=m=6d& z@%|rOXTjIx*9PE$fdHek}7qec%HF-kfHNH<7Gmy|S$NQt1} zpH|`J3%noV{GRjN*L_{*X^if(u@(lSwdFL9*82SB7lvO}D#v`ZhO00B)L6DVYqZ$9 z=shCkq?Np$dKO4*`8mpatsb=!Ix&OOp@L!p=PA)Wh|gB#Y4mW7|6fD0pIFx&e%)P@w)_7{LB3#N3Wac zgOsExXu5e^Y^hdpTW$B1V5HIDz37VgiTsIboWG?fijoGW3?UL9m3bq4nFZyevxtNcODIq5+;#-UgBAeIL#4$+FNtcHBIZ2+$)#^m#j2FYb;V3{AG+y7K&M?ux zvJ0e;Et+tvc%;VvD+HoRVr-=pM8Telm>Clj{vZU@jm6khECSe6iXJ4hT5N37US6rT z{jyCI#|)BxMu6#L6k|;q@WaxTDSd1IP|)9gs)=HD@F%J13VS;D2xI51BBKvPWJJQ; zcr68HJ@s}mB;?C!Fn>riu2yir2W;=B+vn168DJMa8&GIphYAUN&nq)a+zwf zI!$$K-)60cOei=^$Atg=K--qnb~J0GLa%oN zUVZY;U7WHf{(;Gb-yGGg`;(A$8W3@h(7?aPhxp|2#_8zbVEWCq-jhV_aJuT!$T_&c zPQ{Nv+kh)#z|T3L;^@?i9KHSSv*?{fo69iYHvfa&Fp6MK9Id5C)SyMOe>wU417Kg< zogFnNq}^wo_U>e~seP8vv>|ATM~E<3m?H$5&6H8u4YzyZZnw|Lvj^z+TWnXC#g8ax zhrbggjBN9~@Bl;n-4SRHV&X?Jo*;h@cS2jw1Y6KIHJ5-U2#}j)a zS2eknbK#sgw--xZcqD*c8wxQV|An|vX?47a*f3g8Vvw^3!sdQL7KTs35nJp7XmHpv z0nX97;(LOprI>g9qc_^%kK!n9U+^vSs1un*-Eu|Y2T*uP%d@Gv-1&iZO{0}hJvd1K zPKp7eV$2DipdEE8y2yZCQ}LouYrVDG~9&j#EIacM)lm-15Ii2D!~C+)WL(XJ%)*lFjZBk_D> z7_+37uw)Xa!k)Uz6Ef`Y*1@aY28g(9R?aB)OEGiX;$@MFi&Ha8L)_^D57GoF7!pps zKqpFJ$!UVIwvl7MBSsD4zL{c@ZGDf5pMT+{0Fa`&M?^x-DK56a3(J9yGAaMIz!!={ zt#lXw8Zxos{?n7ClgjsF%Yb`0@YXw5#UN>Wsd>? zvR*R;wP{4HsuHcnM$+?Q6t9EeJ4tXO2$N<)>}ec9BL>WnstSu^^U5|_@hOabGd7Z* zfXscb559=twSner%7l8+Wm!dpota_0Ww3OSaRE8p+0{vNR}s7WS(+pX^_OW3FbZ8$ z8?j42ZKTlo7PwZE`9d_4JdHbs57HL#W-}n_Rxx>!FFpJ2dz}0CxUBf>9v;kdRNVPN zoCKbDY9KKb$=L@@AYFaA&YOAhpWhIB!7VrB({<*X?964-tUEtn+JU^%gOnK;k>T+q z>}rboN)nA`bpIvDQ#M}{RY1oNnH~uyw9OS>4pg4Y-RVfa8YyVuEx3(v98{;G9cQGW z&lXJ(1k0u$uhJJ?rKv>56=MZM10pp7Fqwg+wCn|VBwT(=UUiyLuf}tO(lgJ|+*h;( zG0+sAa={m}VScjAB^`PF{uw%+*%QiGw|MN8a-8i%Vg4(Gu@;{$f9AQO8(&b_gWQ6e z@6N-krPQQpVqI7aK5AbU0?(yhqRmz3%{||~r%&i$e?AP`4RE?5lfBD{bRP6ri$-@M z`F6Gh3JuZ8PB=gYOLDol0)3b?-=@HD1O`ZFc-&ZE^i!>ba9*tKO*Rw*lYEMA_VZZ@}wlSSQJ|hDA{`6(m*DM@!WoMn=nO#b{!w zRkX_{uY%eka)^Fbr&%JNn3njp$|bF|SoWBrJ-=@U6i`?rfmS2J8D#sTf$}SuCax#| z#W`?Y{@`mJ-E~!tX5Eb;QKxjh12ExrLiQUdWMwt(sG6GDqpcqL&PFE1c&!=$aM>Tp zCAR>^&()_M(#n(+&hRE|^QAw+uS;4ZY;McT`cq%3QSlnyDw-?(^iPBRdNuAZbpuIa5TB5x><

xef-aRYDNxfmkRvI0-RZNre-P|2=KnY-Vqx1sS6v_i4)5$P_W3E zgZ2$g^f_2GUYP*VtGFUmQh9E4t_A%{XWGbW;a+eBWq$OScAdsJE=M+%X7nu$C~xEX z9RQxIj*FUb9o#1!AQDV95y-}&YW~5~sO9?O`O}4-awuv70sOTLZs1-U__b3mvkN%f zA}l4cN!qPm7248OjfsZWv(^lj{>aL5#XSq;cEFXI%DAx|)m$hhOIxl@C29ucEg1qV6oNoc+AO9arD|t`7CbbZ4sd?qi--JZN@yJsk8DIG%ob2-&(G#&@g)vm!NrFsTu%suz6Q7Q6iJ)D;)>7ntUh7k@c&p zv=)f55_O(7i}aIC*Oo2)CR++$>#nHD%Y$W`8Wzrx6*n%UZQ_f~oWc7V?sr>2?>(a7 zr%_PD5JkaUceWlsKzOrSwt}6YUPy5&Hfa}DhBC+UkcFHEXLH&O(p`ZqXNjOv?n7iq z`ukt72JZ@3?pyvWMTX!IIoA{7kS!CUF1nuQsIfz(bpJr+Ou_8_N>*-qO^ToznL|F{ zG#!r?QEgp6z zprM97w-6fa;NelxUrHs@2Mz!o_4KW-bx4p0NOcVf6!fd%1Oc@@0jpW6E)(U9rRgEe zX)Syue08eV;ORCG6=^2YpvJh~O!(^6+Xu;UgQ%|E2$gFm=7_ihlxbr9P>_mwgeP``DFyLW( zd>z_{K>*Svy@BPWGN8lm5jXjm(ev=OY>fnSyNbj#dbf)9{k`!VJeDPoRbhjAWTn3oSYs~U`~C&}HpR4w`jlve)%^Q12g|wbhd*?w znGzd(2GhRqa!*ahQ2ax4yJ16_7C5a|9+Puq>L;;qB!3Vx#uiaQG(EG}5e6sjwdiu>wcLvK#xO@y>bE?ecJfHHndbEtT4 zF+zV(`y;Pvmtl7`ztc;no$l$}SW?`La=zU(pOZX5+iU_ueKk=y!`#^put8V z64*?G;=I#$$qzd?4RE*lyfAS20iUrKpx~ zp!vza{R+ouhS15l0ao6zKGu+qMJ9I^&D9Uz%hjv58LaYwWNCzs~&A=*rmc4 z4WE15DEysb<65lmu(S7l=z@)`?dk%o7eF0vjzmQElgedl!YIIQpMD2me|*MiO{F<1 zwpj&X&yW26(+*jkfG6rYo)}bqdEXZ&AF_25Wg_t9ZD3x^^yOc{FRV=MF(KUswH}r? zSmUvUhc0IZW)SCJr(akP{<;R+OyAr=vef8QW%Q9qr* z|CycOr)98x`HOEGKk?;?JLP5y{O?hpLz`ZB@|&?IKhHWfX90Lyv;aUG0kG%XwMZFB z@ar%BNey|n#Vvw7Ndr<+M|pmG{fCZ{DgNU)2po4#F1ahCyk27!I-#}{bQKUI%QcO&T9YN zbVsY$J(1k#e*p_bEL*n`72f)e`q-6$iJuYLoE<9mw%pa@d%V&*u>`p9-hRIRxV((J z`#J6=Ybr1i%(3f-kc0?FG~4!?>s77&w2E%GdD1gRW%sg#ZIYhs;{q?%(3{7C1pG zOa`o$$$G8zU0~;o$z33A5MGM0*5WHo-aY#8T_JN&xgK|VGB}>Suz`Yg5aD2km?W6sv^rEQ6%wD3CuvI({#}k~|120qCJt9r#giAhlPRiOulRUphGWlMRhJjWfUHL13#mM`1eMhIJZf?f+6=r z!JMPU;mjGoW9jcg(jMg^$-?~PfEQM2GIz27^9@*2ORaZcQ$n=wykf_Y<9ycxS=VoD zRPIU=<@lZ4F8n3npB%@FhupwVHSXz%G7F7WuugW^^n%+Zmj$VWowqW~72{^`-#)U9 zS>neen_sK7c6`^^Th(vxgNo8Z2E>2VsZWX6GJ$+n-4bu-aJtq%#dKD_A!O@K7uepY z)_pw*(f*x!Br6cGeJmEFCtvg#Vyvp`-o-{wtaEkTEYS1Iar{Xx!#63*>Q4qpOU-WD z6N^rnMSV>^N4?+sZo|nY^N52#$gxKDYzq@f7jT-8`(bi&xE z3@k0RKp&ZgWE+#fmnA#q|DBjSHGap|){*mC*aS2a0WmH+paWi;5}9D|VgOvlbN!dX zXLv=S+&fcQE8l>Bt)^-A{uHKu{>0HvuPc2(WwsW^`|S6%hh8hMosblPvfO3~EzH&0 z!bgS2^!m_b^m?>D$hg>l)k7~I?-BUxw4gqc8hiASZ?Bdks&+C7Zs4(%k2@ijB4(m9pp zN3<8F=CC!|VjkCK_Yn7zH=j|O65;Z&Q{X-0T?ztr<-V#xK6E;MCxfyJG z`FlzMsMf#=u{`g;g-^P_zjy4)U|Y`LyUc<<|4l>vc7KOmq!p?kEVDq3u;Edf+9GoY$`>(sH*w^sBr!fLAM^hs3d!PUpa-6vrSWRDSS z*E(!g-aJz0)qnN5i%%7(0bnafRV#zo6!S%DR#jtFfuOm>wvrOIbB8&v(iby;@p8a} zx9YobijXD#w+k&Uf48&SULl^i;}`6iePjG+)y181C&91UdSj44NnrdARjvBbzqPVt zv4r~54>IujY+gcU$jjc`JH0+S9d+3ZQIF6);Zgsk!ll%rsv|-4GZNkSLT|mmP2LwE zkRjR}Q@xi2u55n-;>-U-1vZM0bZAY5A@}jdS-* zeyhBbBsbp}yD@rGc6?}Axj`h|xn2A(cM1CR5|}Up3YpD2Fe213D{wL@*{X4|ND4M! z|CRH8sy0!~6xNsMDbs|P`~#85u;jh%G-|%;%I!;4`V&6_l>e1d)!^J*h|{dCiBQl% znlaP4#HUs|vx59mW)xC-40ix>&HOkJhThUkCQn>7E)Wgjx}f z%JqN0UoN%By;90JtdZV%lIa5$-n|xXMM*+;lN(X5HQI*BlDLF8Kdt5EPRzD?H?`x4 zpZ-uJUMpP}I#N|i__d1s1r3E7G2!F?KdRcn*-+GP4M6+9?DP2{n~2qfJyS@W1FVuj+Ftm;!EB@JVgBRC0w>%*%|Mx8%~k+K}vFUgiBQ{*jA3E z8;w;v-Gw0D3Pp+W3+wQ9kY$4vDAgu!;!wPZ9Wa`FJ@);nii>6sTzL_U4^Q#L>IH0d_wfj z@n+{6m0Xm;Bq(HAycZZG4XrGENes0+(w2)=DPk76)oWj5&+?!X>p%^P%Dp#bLNYD)6mTh2PHGrPgK~>bHZ1z3HW5z zjp{n~S<@;ros0*lCP<5Ydrx<0UeLN{eKx4M{)6j5s_}h_W89=`bQv7!*)KeOcm`5Z zQw6zeR5F}DQLmIFpwW%A%QTqMThnCA&vz84s*T9Ka1OYy!2B@7m=7(xNEwW*EBC;R zngn3gBRu806L(XGW=mcCZ=g?=T;3W9*voI))3lbA^;jpa_#rY%)K}eX2%Ts(tCE*e zT>llsc?uBtW@DW`Uidh7F#gAN?na3lS?Ht4)jBai1|1ZKag+v#2RuHv^M4_ELm-gJqRj1WN}2tFW2Oa5 zz@bdJTacBw(5(em7jvyWFFrO0rLzq(9I|oCtv7ylELm>gP#u2??)+#UKr9S8g|Syw z#~Z?p`k2|(INaik3Rl|1Yo_Bx36T1*3NIW$_l02pKvJKgOz|fVXUCn~i4P_76#w-9#CFB6NJx1~%k&aiG%ZzePV8jHpvZM5jDN0l_b-4RQjXL1n4q(P1m7d= zteU|t7g=jIu$T62l~&`SFH1|#zLA!eQNKxR<%1h-x!Q%7(E$HGbyBc`Qt`^PSzK2H z1wVVZO-U}Cx}e3uOHx56^TEnN`xK~26J(jeH814rr>+;@Y#w;K za+e^q3Q`Ja(Ks*k!5!(7M>0$;Oq>wp*p+;Q9%gZAxt6NV!}yH_^68?QEm5Ad9Kz4!Y@4zD!65iqblK{I^*+lN zb&DS2vG^3)pU!wkEYFjx6V6OG2N@T-U%v}0O2d+a#>N^{e>_9R8X(?!NPe^p&z^4MkFn6~j z#O1U>i}#YAqhC@?F$M#a53f;ZfL6ukazjkEU$EEbHw44R4UExcBIwgm_`_?83C7h& zRqu|PD9T7fU9vNaBpynG1HpV_q6I%~&Wr*m4KjQj7z2og;oj6nO6b9A!}7ZJzT(w@ zh-R7h44M+5A8552?I0hpF(AwPTxvqJ{2!g+kiZYldKDkC00U}*mtUt1^10_`d?YhI z{YZ+2D*;8~UpamuNV!rhdqR0$L1qb1WUx&8hDrXAs0|B$fUBi}0YB$~o0uyWy!>taQ%K$=#hX-m6wETB3ZYT8K zc*)V=M^+Ymsr$jM(B$w-!&T0KH!4?l*1kE{Y|?NKzqs5omZiOzy3Qj;z&z4kxWjJr zvSU~QpPUCYY1T0#V45~}@x{55DoOT%?(=jU)hur{P1bw$Qs1d3aUrsEkiEf_=^|>) zb>)S=4q~kdn?!YIxrL{%n+pX0euNGGXUEz6FuJEx&E1_x@n4mC8;c#du+woJp$THJ z^mG$H2$&Y)P$^-WMm)g`+(XlLh7G_k3*N`GeZney5}}FyWmqXkeSZPr9j!GX3R}WC zFn_4L;;0-0pckO{9Nu_{G_rh6^W{=#!xQuh{gw6|n?y9z@lXGS5pvPH#;D%#WQaV$ z2JN64T43YkA;6)F?5-p3^;myoKqx_hQGtLlEK4DG`xVdgiMBTG_l)6!!rN5Vt{-Rb&%baPS*J|jd`OOHd* z$Pfi1dEwss??4DZab-hF+?F zLLCiw{1~PEegtHksZU~f10Ra-slta$hOoBd0hk-`C@un}_8o__AumqB<4&476;z+o zjH;**trww{hMwB{5Q`Glw4%+xDuk=vQXC_`^IpOJ#{cP2#ADq(0R7u34Aa<8AZFlUD=o~?8WrQnj9F=EuyT50& zy7D@ekY7Ngx<<6x6(o8Oc&CpF5{s!Qvj3$PZnKQC-Up3SQjH@aV|IzQ?a0(C+5}rB znJT}vc1GWQGinmX+ajunQHMxpqt!idr9UWlS&j5-z#s9LKDCfbQ;}wkL=t+xBD+MQ zNWr0dV51arSLEm03HR=rf#?pT zv>NW%n}uiigPB)=FRp|VU#T!&g@Wf&Zf(F+ zVsX7+!Ftk&+-!`tJt`WNe$gJ2;u2Uync+;I@(>FdYZ9^GMO$ma0JEW6ruSy610#tJ z%oaRK0=PXF> znpVJBStzeVtX_P+K-1gek{BXQ5fC(EJs_NPoV8ZNiGb8^0mWVJL96KkxwQdpVQIg_ z*Rli_x-W(fJ$7?E3BO<2a}EgMlMRHA623+i$5(lEbmjgTtm&C^;T<(2K-DGYK<@g3 z(>sec{R%U#tJ_4eza~O&6{|6P*>Y`o4i}F<%OsD#LY?GP1|A^9N#ozUpbNZ+;VAps zF;@{RGMgWg7g&6;RISmN^}eB$iXGdliT$=*0Mf$lj}zu<#+IJ|Ck)fIv`Y9$^M;7a zx3ADecTFOQS(k)Ld)`Va_M7ZgvrI69$GJxmn?*e+xAfmh5w}3a>!A9JS>Rn|L*QCs z)_&PbXyeWSCd0Y14KHu}i8p2h0d=VZ#;1E}C3cx5ihdOw?Py6K&(Q;=dhkI!_^|I~ z5!O}dBb5y*H!;uGk|(cekCt4P&C-W?%HDS*;@7-00LopQfGj;|V{p-a-K7<9MA^M< z*-!Kf&-K_dUwxuD;Rcn8YD3>QB7h#y6_lwa#7C~6iK#>*UeJcgO)n?snqTC^%=1zX zdmKS+P6SK3SJtF*p3b+ojl~R^HfL0dH2p!>cc7&^-nOr`R$aLk*|k25ufE+PD!T(@ ztJV~CS=6hpH+DlIqb{HebSZ@sNU%Hk_cgYkKhqzbyF%UjdNM{}6}@uUXDvhBe}fX9 zj484M-NDlSFd#N<~uO;e!el+g;BkO3z1fd|!b7-+pn zZMXa(i229h22aJgK2e%L&KG!W={Ob?-=P%!R@x^|fmUnS5(^z0m-xXa;{%X3~(?robbs|ru`gF~9 zd0=*?MN#)S-cQBqKjPid>(rZ7g456t$!-YlPjeW+&nP~hDmXR<6;6De-p7{xZ5=Fo z2$sKjXQegiX93E<(&qXlzJw9o#Whn@gyHv?%}W=!8=+E`N8fB0vl|R(1q~1?Wtimk zrt-RSXVCJpk3zayG=6{!CUVNOVt=i&aaOw8jk=h(3<4~AI}V*hAB%}l+u~)5pffM-S ze8~fI1pyw~p^StgYEk{6mDMy)J^xZ+a_D#)MV(~T!zxyoV z!i1ShXeJpf1jW>A0U8V+_d9b+Xd1!O!1JeINaNSVP8B1{^+A^ULC~6HcVHPz08;Mu ziTyC(CeHp}?VJ00w0m^8pIq6s+nm$ig!dj`St75;{^i=b%U)Kqf)%cH9`)Gv5`OGk zc7ql0^^B8ML7-+}%U1*^Pbgp9#H?$$%hP1i?@i-6Z)!S})>c=47S9JxXZf##4l9?e zgWrZyK~`E-q)14p>2*_6eTIp8e=H0PJ|J zfUM{Bo#IGLUD=TTX01Z`uhnc!JLJ3)1!U+YE%7}XF@x2jDurA#is{8rl(NAAqH+Cu z?hwzAq=t*P8ge;M!}Kblp&IvZ_`z-M9Svhp)QKzdYfkpP3g_2fN0_!o#>(1Q-esuO-P_@$ZTTA!+@X7njW|Y2GvgH__ks^^% z1KyG5E+Q#!{;GK_vCX_TyHzOndF@6RL)pjB18!(pYED6EXnurXtL!A{fe^M2*6yG3 z$x%1gf_ca)@gUyp!+>63%rqZ)^@sR}VVmp9j&}KtWgD z7cODVbHlYq+}7Y9U$f2V45kP5Y1}kBbS(1Ky_HOY9JsXmF|{-2#aW7mCbQIJA$HZs@9!k+Q?otTZ$ z#AjdrYR}NzVU@bNHiB9sKmX)I*}LB?lI@GV zDxEMad!S7{6IO#ZL%-`3IgjVo)^-5SD4uNmG2!Xr)XQDW zxV@yz7ro;}zPzdoy+rO)qQ$XaRM$I(n-gvD-~J1Haj!Y^-i9mW?}iA~$hfK#2`JbHz< zVdX6@KXzW=2pEK0fLp0`Xo@%g4()!tRkjF!_POz3kBcGrE&xY;wd6QouJpAH6F|*p zm~FY%LU!o)bE5ERco?BgTtZ$<^0CBgnK^s=7J9n$)v;ENVI-o>V+*-Z{<_EWTUW1a zfSpx2GLMpIcK6MEzt*x2_q)DV-)k6mvv62bodlERaygvJywVzg`lYp7yai_X_ ziIi^Fncq*uqz&znKy`hu5cbwJrt|A)EW40abm9eTgrU0(vi1N+MkrkO!hY1H)f(YS zF7lb^fezn7lZtLtMv-`O&$S-t=utJGV-%MXR;?otIg7-VuIG9YHk0wZa*euu5iFqC z;b9J}3Ll&N`MBpX^%&~|@)k&o38Hhq>bm9Iq_VIjRF`|m683@htrOYrr*nWUB-zaS z`Q!)uepF;UjNg%yUEQLK@!X86g9lSUJeLQ>;^q{SQtd=!hJ1YlgXxA7<=bAb zo=0lH2)StoB;4;L2!70`DL=3<;;VdX)>4isbTgO~2_9nfe#b9w_cKfW8T>=0@XLaC zEhfAx{X>oYPipldJus4Ec>c`ZO8pJ42BQ@oU2#d)BRA@!!efd*mzV$YMJ0~oTaw7~ z1ycShxBb^Sob^k?bGWi%LNv45GHn}X*6$X2+#~u1>C?ijzTomq%ZhJUH`%ajm^=9M zU;cG)vyh6`X+;Q*Cb|RApV`(mB-+((@+V%V{Af+s&Z^xWHdtmRIJVVzWY?H1w2b>m z8|>3OT56ya^xyNhZnnR-GX74`^;fjSh?*V~xi%=3r8~gP-r@+qw?i|?hX4KQG*p(;;y3l-c%{f38k4G%hiNsC>(r`wSRFhe^Ut(j*FE_x zvn4YZ!|VA$7t!5mb`v?iMkNSru%YF<2FTBW>{D8jBbDSc4$U9NXtdJ?`boKxNW{!S zSyzc5h9`-dNt#Os84woe0W04Ct*IgHl!cCm-wy-B2h!uiBH~YM^ImXUW_>5hF@E(V z?=D?a11CFj8E~2+{lZa8AIdMCbee4)5~C6^rkUg-9zq4C4jx7^SlSZBz4pP1GVMS9 z9zUV`P$FG=v62K^MVZ0)0_jiT^6X#d$NPv&hFI&Uz)p2~p7~-W-ENVpED-R-tcCim z#0LXi1EN$dQH%BtzKp+6ejMDZ$nakky$bI_NYi)<;lD&BXC6Z-28S9$p(>3ZG1YNF z61I%oIDxR6*<@f@MYyMmLGk!pa+Y!_)!8@A?^OCJdQ=Hc^p0&?4zngMK4k{F_wyeF z+>qDKAwiI)>iJiKC#kp8`AjUO42-S`Qco8v87RgKvvH5!a$LkdEdBxQ)iR!wGiv&~ zQ)2ukf#TtkPr08vk8C4+e$^nkxy)hP@;u&TK3BQa>4ev1z<9ZRMy~}Wsp@zQUC6PM zDBLMyRP3gis2(xunJcS;obG9@|#-pC|eW})G@&GjBX&GI*IU>m88s# z{^d%()1j_^vmXC)PWeA|CmI1=ZSAks|re*>d<3e5@I*>OGJ9hQ%PQ!kfkn{w{h+BrQ_#cy*@-FNEbQz3TL<- zyfW8=jH9BlFJyV=_p_uX^p_m+S%B~MrLv0Jclj0VL+*%c;69OUP%rsEXl;2jYhtA`Sl3geH$2LC>HC0D38GIjb72KdXKK`}n zZUx>7Au^Lr)-v);LBC8tC=o5ZMJvhzMCG3+TA|fdi9aWxxc}!62VcziPblAjQUMX7 zCy~;3!C#)(Ggtm|hZVt+zf=-pknB_k+8S&tYUnk;m0Bi?-rGN_3Oeu>Gh7)AI4)H< z>Yr{>ep1mDT9H>O`|1lm^{eK`F)I0P2}`#=Z|SD%+cUL}|1SAfsiiz7A=cHF`sD0E zOnyR|xB6Q;G(C#hM^;hk>T%&)bfFtAP>rZ-@I43DEP3V|`D<4QgfX*p+Fi1^GB5pg zm>AptZwvpYU8IQgM{J6%B(U}dodFi@)$2D^{LTSSlU!zPhU18SC`GU6aSq3`;OW=y z0{cbe@%bi>%v^12Fs$B9PpS>dRiciZj*kNNQ)^J|fQ@@gcIQ5^VXj*{s>L-L)be;~ zV$8=urPk=l=i1gMH7}aZa8BjJ58dUf06!%hKoLUgx%ln|4vuK!wZ0>lf2~aP5!QVz z67!N*H74>Fo`k<0Z-~Wv%_+WbF1k>7LmPQNc+GUZ@_y9@X}24qr#RX}r<5*vd+*aN zw&ZhWEoz+GtIqJVXSHgGh>mvX;Pqp88#C+W{no_Xv(If!KApEMHKUAeTmj>$&UX%1 z6i=W{`~yrnIMxUu(=fMn*`PJi-fljSz&oZKoLZj?>CkI|Rxa*OzJa|JnJ?rWN7Dky zpS{R3#&3PVD70a9v993?`;@{0VxZnuepfU^r&=M4q1Q0hl%lX1R&B{v65TWaM_!yQ z&NvA<@~~)H81q;KQ96D?D_WF~&P5$t5q;LvzbL!U4=e6{&SW^{HZcE2V?tpyOxk9u z=6*`Nhxqa7cW&?`jVxsVllv&O#%7EYtrMl=nf*(O)AOR(eOu%CWHQHn7FDZ!T`=QdZmM!+*J-WJ9ZIm$xWO-x#pg%gH8 zc1szT2@}4kBKV`G~4jEgh7%%CEe=~+bH9NCgJ|SWglGB2g z2>rcZ8kV;mm%f9O``B4*MjQB6f^OvNUe$fh3lvM%|)5 z%j`2AnZ2h7Iko|2*FEZc^Z`sL=mri!mCcu7;xg2Cx$(D)Uc<(&|+0K@{Fv+7{3l#zu-52Z8D#HL)=z0;utpD@l=70!W{+KdYi1W}4ke2iYIl|h5W$4P1t zoSvT&MD6QHNRu;OQ(LHO`0{H}3Mgd#oyIW}NZx&gdDcdMl_N=1Eq^TQr=hUA!Clscy&^By5)R(ZgbWM^-7pTy}h@C$4w!zn#hBQiIPg5qk z{BbAWkK#GT7tU*WDBnlxW^Z0=;RFfvC`x`?!&+F<42kZFImqK(r?sJ|7n-SA{oi#z z8)EILSJl8jtCgIJjl2qDc#c+dvh}>CgahfNi20~JVyHwBer8_W zde^Hf-v&?`=?zoOCHoLMv0j%(Nj(wLia(C&u7<^!B?v`!eC6|-O_aHwD=3=N^z4bG zIuoa!f9Iy5EJHZi(Zbo|b9+>K5D7ojP=1!B+9>aR`1$-s0|e0xyQ}I9g20ELDG0N9$8o5W=*A|?_V~}5pvuTU$nQx%e>F_dN*$9#jQ9i z1|{frO!Q<;bL^}*&ym|Dtd|aO81rLvYU|j~%@Jf{vXLFi?7CECH792?Rt8B)hTa7O zINHJ^iLs}++6B+_#ru~gBOin`(rP4G@GqgJomtZklAk)EcgQ^1xj?zqh^1LCIYB@C zZx6{}dj|9s&3t_!lnP@2z(coUkY&!oshL!<4_sZSN_SqT6J?%;;d`o?u&HAeB8pjx zB4ggdXHx90voiSYXJn_!5IqGnL=TLqKUPWa1^~qGGsEQ_gml{huf?raY^DW`vPT{p z#=NJ^BYfvhsPNRz+YkM0@> z3uKwUtym^kEHfGzzn-WQV=8;}^KqhFnMjHrNi(-P`MQ;6Ih)vq0K;xV;pUQM$*1zMER`K4s*esR8@{ z+MVM-LaP_~rGHbc-PUNGL}M)K&-k**$~aT|Mn$F?2vG|R8}0#dh6hK$p_l(?pPT-s z;aTuVQC(sb^Y&!k`rNU+`3(&AVIOq_{1Fk?3n=flJ&5sdHKYs&tv_!f zYjb%@3~0df+9%xbOrs_>2+v!xEo0M~8hrir?<~HySwa&- z$hmYl01((W!pxHSL@qmOhC@r`AhgQVTUCbjV#^_d$WI&vcVr7!clNwYN8-zfaBPQo zL?Y>&WAx}E(hQiy&4MrP^zrl6sR*3i_+zknqQiU68C&2R!snSy2U{cTKO-e%EcGG49D+>Ket zX!Tg&K!Q;Ywfi8wkr^b`B?hE~Or(oAa}IV_^m9J-)8Ghmb>SthgpRxdWe~aNlNbZ; z^K~{Lqjp%MOn4QoD@Z9>vpC^$g~G%ud08Vl%`=9ZgkjMPf+9}6+#(`INkt5$40CEz z4kWS^2a%xs(+BWQTw)eUeErc*)1yhkVjS_rk^gnD*6=3us)yrYlP=Kq7i`gFol&vK z6d7K~VTbp@9j`x;XGS2qPjOX%J`Y>1U(BV9K4Bo_I)}1%KRA_|BgYHF{yn&r!qxWD zHOGgRWsF&ZhvGacqHruxmeRj}ENJU%hMsAC*B02uOPl+2q%^= zUL&);|9^Cy_fr!MptS=^OB6yU6s31idRKZ!iu59&w9o{kgHi(tp@bF)oj~Yadhbm@ zKw1D5P^qH8D^(#McfKF*+<#zaXLojXXU{p$6C#_%h&4s5(kI((dcMw1UoZ!~E%Sg| zfK?{o*;`@89jV59AZAF+{5U*dPr%F#m3^6U=XSY8=2@{!|LQWUzv7LOOHdwM+Q-5k zLJ|9s9OEGX7s&RFmVMNwj9KN+;^$}Q-^;ZoN1hLofF@*uxxwALp7_Q%`-xCL8EC6A zDG5JPKpS})l$2_Wx*Nh{c8hxsPOx^nmEBin0FGF{O=R=zK3KNQ^g@L`hEhQsgVwgF z>?raf$H>ejDmjy=;0n4PMtM?49+XaW;3b+(EY8RnoFWj@u#*4UDnh;a0p1b@@ei?y z%ApN3d-;uuwk6JAF7-^gP<4lDp&}QVMVEreM_Hi~nc!R#xoMSjALg(Z!Pv>D+ymn< zL+v2_)Xaii#HrEKUZzrM8R(5qX}9bxvNN*NCFKSZBc`2H&XgM>keP_UatXxs>cmlO z=D(&uEkHcZ!TBC5NYXRpBYc!vLY|g2RWBHOn~3|IrS@8&rkUV36c~z5u(ywEPKa+e zCIv;!37B}0Er99|$t7G+sS#Wdk0`KLm^Zc*fRsrD2QyY`jKr$}S{te9+JSp%2`9p! zogWjaRTkkZz!1r#0YtP4#G@0BtJ+0Z!+jat!S1V3q~>pqC<*}^CB5MCYoAgJ;*{2n zAh%MC!Lq+>WA;0IvZ_VJK0cQwH2<3b`?+`~*=6M&`6`o9Qksy;9sv5viYibmOUoT3 z&4|s|e{je#{ZcSdJ6TDLPP5Z+2+_ zj63?Bc{v#cM-bv%b?0atn2T-$`ft9aY}s7eSJi_FjkJ*R0{%c$R#U=weiTy)A0(5{ z5(btJxwYnPXu6&)CP$)OHqL<5tGWLL<8-40G7!Oit#u31b%XL*nrn3^YK23Gnj-WjGx97n96_y@J%xR5xbmX1SJ0*E-x53P>Os ziAcgh?Kgawz&OTP2+W&MZUE}u^nm5!aXx!E|Gis@u1Bj+<-^W5XZ=Vf531gc#$Gq7 zRzUMje`(yLKM8=|Qc5s6Sp30KJEd|ABDb3{<2gH1{zp-1$k>wcF@W znZuU-j#!`?G|=?RxWe+H8IhBuiAm828SvgK4dICMhvWr&bRSugp6g_7hgS9h(S57b zOvqBDzsz#N#V=i>WarB7${~5OgFAJi$GWhJ>)40PxO(O^F*jG0#K!j?%};b2ZwURZ zfn!8*{&s75{7ZPHgxmYd12hTz5*=T!!ukOA|~jslH_4 zSe+;r+%B*k&4p5_dBU7&{B9us&QzC5s{_n53~P7f%zw8vr9OYc+xs zCnRFmYW`af&*L3?%R5~>9@WWE#L7z_Fz!3-xqPvY?naFKG=|@mkEqF|JNw~#X5G#U z?G~=Z+EhJC%<&q(1es@X6=!D_!}Dasu+S-Anfr`(Iq)m(;`cctL~gw~_?fn&cLwIf z7h~NYkOS&bBfaOVw~<6|c_pi592?VT173O+mhzf@B7?~q$ZfTZfJmIS?S1waKQ9=E z;s^lD7Q_lA?1xo|tl=V*LJnL>jYtE}yuPAy8#jpJ0_@W4tht!?!rmB6eFA2}#^D}v zMyES1Up3p$EUW$GbncMkm})1yi*vW#pki&`WUJUjdrTY8RY}S(TCFsP?9-^1;&46F z78U){IWFN#r12Nc0Npf8WQu-!e1729>yE}>$CI~?-{OmM@yRdu1zQh%*OuktZmKfk z+%eFJptU8^h-}6sVARWatL4hDwpmgfAdvYNXrXpMySk9IydBvAUJ1d+1m}w7z=(4& ze=Fe6twx~R{uArHBq~4$nU?0(D4(+c#b29K)OA`3E)ImM4YT(05YT90ZEyuJw=i_5 zBym;>*qL$Y>cCgT&=!>yM8*7IU#Vc6Nx_}Edkt|_3`*^@0PZpN4CI3Pgu-)e5(I*C z6D`+PTc?;_@_l!3rE;LeX2{2i=#+PB9sJ78x4vjT-67pjEN+G`8uArg9z3`h!x;;( z7YT!ZNe8Gsiy#=;?=c2~cl)lZ3k}b(<7>h*vY9_Q0?&SUT(r&jb-ee={{oiTIXG^h zuE{OBseYXeWsy+Z1xhp#{J~bnItFF;nFC4)xPY?Bt(ysM@g>$2VF~g zF}|0A)omNVYm32^0vhN3RoQ{Ytg14Hb1%UUMO+wPiXO~MzVQ7Aht^jqLBLVl4N_D& zK6E|NyMXcQ(wy_k;Kho^FNUARb>j+cqZ|p@d(eU{xjv#V)ZRwGQro#on_FljW+U*w zMa0&72-4a%<_)qs(i)t__nrCOQTx^EA4u~MbAl6l5k>drxfj)pOkCh&Kjd_q;kvNS zWrKeEFoZIn z2Bb?@!Gzp6`|k?|hh;6&Z`~xGYw7j=!%8qeIWgBl$;OUEy>C`{JMG6c0s4=DqXqi)ny)Ip7VX#Tl@et>- zOf=^6^X+(kG>w({-JeKd+By~MMerGH?)tPXVnJN^P6Xf4RBPhXRhOC2#5os1Bl2qa z!pC8ABTGW?r;WsRpn|^6YR%|*$QX4`wF2hG$y*Q@%Ut^oG zT`H<1+8fVl`}cur-INJv-@V!Luf(B{p~3Jj%J-$>Vrdf8 zqB6WmzM1@vs=xoRvUHY^^t`9ZN@KHA1j-c=`=5J>H%$1jJ^XO9pWaL9H2xk%Qq36s zdBQ=18o*XAq1xKI6lEMy^J_M#-uoZV$5<*0Sz&DV34T_&eCzk@cI>}$dU4gJH{2Bv zSi0&np;B7o%!@>-C*5o8IOL2^4P5`a;=zHea^K7RpUkfg|MBalu=@257oX<&Zj$|g zKM!-?tEJNg&2&hp3atJyRA(y}A4#;;YWi(H#rC?(J`8s`EeoN|-{1Z`oh4G)uKuSu zk*;>8FLLd0moe<;Sf9rAV%j*miCf-K;MWnyMdEkv^R9;g>+dD}D#MJncwJ({@7X}8 zfQ!`-ywK$PLs6+6f_U&Z-E{Xkpalxd+0vft^;mPTirbPLP^c;A-!}ql)Mq4OPfGr(aOa6mNT`u#8g}KM0ga54iUs^qHIv z_#}?gUlJyy8rp`U$td!B6C+@gi?;qLaHnM@)N_BRYx5+P&e0JV z@#=$qr;1PO0MvwQ^+EUELWuwgK;Ns zMFu6esRC(ar4#KVMxOI0@_t_Kz`>@t7RQVW@wY^j(3cb-E#2 zxWsQeX5~nH7ubNk1ZB=jg5IpYqcF$p_YUQlXwCYHs+{LEL1c|4A z|D^l7QgfK&-M>e@MBX3OyAbQr)nn6l<+$UHnFQ>+?-r7i3i>>+TEp`$<2-x(To1$4 zx=B6^;*%Cc!hJysuUkKo+qrwJojCn`)*_=oW9T3h$ent3RUjlb#f(DGY>0tzz>a4> zhvUHF;o!oIsMn!+Z~Bfg?P9$DpWh~4aTmM znJ9na%!Jx`t%TJMsjKWiGNr$WxEQ8a@s@*G|1i0dDHn8J9!se1j(yDC5L%mHbo16d z`0O3aycx_t*nZz-2fbAM!`zVKQO3gkuAOzoKSF+1)z6)uiev5B%(PpRJ`cRe>`d=D z)qBYLTPPwp@ma_>maqRk&>*Gcd_}p$A#(G;g4?h2$e3G<uz^NZK<-&bmRY$eH@D|qA<5aLA_I1g#GIAI#pq2V%OA)!K z8Tg)5o-VlDq05?-s6E;`#a!Lo?7;E!>U(p|nxEa~o*MOLBi4W1TGm!50and46HlDT z`_UGmmNHxP@L4nKz-9nQ+WJkYa*2}Ee3NXm!>8!J^@elCPU_#D`QSTH4BF~ zt6n|ZUKP!9j%d=H*~{k0!p<3}B-co$x&ZM-<=^rTpChFx@Afyms8)!0!O)utuH6lk znoHwZldf3`1+SR|2!X5AfAa}g6Iv1i!j)uX2^*dyjhQ0fO{SSotuL;Ajr@3(UdVL4 zvt#{R$Lxb1S1k{U?Q`Xst?SC%9b=a+-!qh>Q+{B+HO@I3b1Rxq2K$m!%51(AA{l*X z9OYA)MDumH2bG_qi?BV;6z_c7TOc_M| zg)zyG0GvU)lSVSLJa-UvDuI4Uznz}jQp2`q{F~m*<*YC2m#3;ui`rkJVi^M~1F9J{-K5C9EeA+o6~>8+>H_Gl>kB&{$@#_Ya^lZh zV90p&{Lb) zq(A=U!t`9}k}=(t-I<_NQ6h!RDYarY4mYmU@O28d;nry8@=!u%6x)VEcO2prteuz8 z(N=$O#&t9Xy!_csek#dcpHP=r6{%Mhw!@!+$D2Z>fc9^ntz6rt7S-rqEmEsEoi3Bag z=f4J}OquKwou57et_^uLsNIMi0OoOrO^q>3ZG;<(`ayh0i!t% zN5}@vn(RrYH4O302*wQpwOC{2<&Qz$F}n7;vRm?>WvO_IRFbBecQ951B>XeJYlSc9 zL>XIEmBd35*a$cM+`RWET?B`;g9Zbu%tI2~Exs{sUHxEplX}cepSF_RF9jjDo|873 z`+#K%8p7ZGNPltl%)Iv#cXHx1x0#s1pOr2CT{@^I44G&7YrDUTDK1$>m%i17ro+R` zSXf71cbe3nEDyfVGeVT>I7r^7()7sVW%bs>As#Ku37oxjqWw^nSx3a&gxBHTS^yJM zT{Hz$s!o={Hh8{dsfXM3e%0*K5`QyWi(sM`#Ke`DUUSUuu8>wNYN4q~P-bt$F>>uo zEYosZmXx^4Ix!Qf(~mzoAj!Q{^?pSljb@=@X}Sh?-nsR1Lyhs6%deLRoc^2IML16e zXqX{ac7>4qHt@T35rvL;+hq?MhBrP&UN24YPTRwz-`Xy|Hd9xp@=PZwyc<)iH1=@a z#P$KT=bJ2mD>2&I$|fy}=ijOoPg7&1bplG5zq-Vsx%XHNWIZLP2EV&0%Z@yLe4p-q zwYy5zui7KGIVc-Fgo)WcA;CHJz5Rghws@g>tcxmc<62u|FtytWEnxRupEE(nQ!M$B z@zuQ5?p(@X$Zt2lEgWHCq^-Jc)VsDS{YDkbOr!ZYUfzkTnxVBRF;6}8Ye%(Y;iYlR zdXJ9NTGwY^4crU5)Rojk>f&SN|DSQ6)R)i*O?_o_6*$Z=|Y;nWH+ZpA4YI0t#B z)@Tw=xU0iGc-)$PD9rKKW%?L!v^1+peSp={J8cj{0K9yZTYIKAYdIELv?VQ7Xd5{S zD{Y@0`8b|YS-^kJv8&I)YdSJKzLINJ;mb zw5CNoSB*Xy$0Vr}nMw;5RzUh^DV?7lUXMMVd4h-y`N7x{XAEqKa@mE+7S( za`pYfIJi(wWsZV(tNR>3)YF}&)s09hBOW){g4@nmv30~2ewU$%Ev*_7>~Gr$*lyYyz0#lgH+syK5r+Q zN5%bq>P__BV&&zG8t>38YIs-LKkA+y&{XGSTl$;9Beer=aPjt{`tLugUpNSeHYN5g zDnRh%AS=Iy(3DR+UU_YfARPm-eUHM)#&QIB4-K{)COpc@;b8P8$&V=h{XFclhGc-& z;^Rx2s)f$xyLwZZVQl!ihw?v0H={)qm546nuhvM4-$R!CkvQ&ccIDo&N49e?^Ki@^ zhF^iXYcr?_;eQ`K_k2&gSE{TMwVn)X{HFPpEiFCh?Lm)=nn3dPt0>P%aery;x%lGS;CBDyy;c6Ts>@yjf1#6W) z?0Nb$W6KW2QP?wfs@ugfseBmIReaw?mU5QO57o>#d{fs?RPO`2)xhO5auPTC+`0su zW*>v3xX{?JL<`Rzh5*hv^WC6#fk9NC#$29gu?Efx5Jp{`k6z10KRUVH=xzoQbGWLR z0|VI~9WR5gNP`U|xttiHe!Eb0@qzo}-u04(b4i(uYj}y01Cm-J0Y|S%IDG0F-t2Bh zOzd#5uYgmGAGP}U3=c#@=|cUFK~=o=FK-1zoKYj1g7%EmgVL{!cfvl$Kp98@y^$() z4!}EF5uRr-_N~yTJ0Y$8(Gxo%Zkd6TCvSwt!M(HopJm=znu`k(&couD0$3LP_{ji+ zaZ$v+eznR(s!M)?*ijZF{5+bOAXa<_J}$aw%Ip0t!bsJLAC=)!oaT$m{%q#y|P z_im_hBbe+M@$e*3mMBdio5|%2d>@iZ9sDjS-c7BY_nNRl)zAN$Z|GHMd&(^_)$4Ig z3^`A1>ng2h&XZrycxkJI~HnR-^(wsw$8smWV1sV)66 zehlt-Ettm^I4=8b3N`$VWkNK+J4z?RGfmU;B}OkbElCc!K1c8SQZVN@AY+BrW{0ZB zCz-D}-KP>=GESG;5&t(^vpyJ>!f`A2eWT2WY{iHF-9>pU1HGK7QiIc5X8nvB{bB^- zm7z4GPXH7neA34z5eoX=Glv zY`$WJ{7q!?c}E^~s_jd;n2RQi{v29cuE-gaIMZ(UU@xM;>d`&lM|hbuJGi+bQ{?ew z=J6+_*rf*|#7$%ewC$Emg|KzRqz-Xlo-$%)+%hmBX%k~X$2;IRyNOtH?B8J6@McEa zC5V#4z89ToF_CE-LL=4@wj-OmLvFuD#;J!1VKRNxi%MCwD3YK-neK+Z2u^vhm&^Gc z{h%q0!VTm!i=sY8eLhC@`iOrnNtef?)B1f^Ymwxi8>14dCQpM|K7s{@<~$L5h1NYd{F)UhK+gii3JG?GAIh|1p(ALc180%3_DP-tr>avXy_l$rGtOieEc|c~<2^tEv@F19Vfa`g z3bLBFJaYMM3IuYB%4~2^Hf`E^SsWcntR9W%gi4Zu80D}+5!V45Xiy@gQ{RAK0o4?2Bzf` zDGk?2*{MdvT-liqSMkytrVK7#rUnz053TwW6k@P^*8Xp~`DC8GYkw1$=|VAyGL-tH zwOa0%(m_W2flO1y7MS#uxHjja_>(5=8cSXiv_wBNO%#|T;9fCl%lNsgKBTHkyFH#~ zB{axq+1hgCpb{FJK7UhZ1k@aJ8RCS;1O3x4LkhIvxIOTkBkwPiU4Y#;%sfKqP)l3YA_e=xCEvop2Al7is8T0(Ip0qxWhHf4lv`x zXTo~tPDS-8_-l=2cc;MI!1Y=_OXoxErp-!E)kXN1n*8%|oYEXAj(tff3F{1j2F61b zTi2%*+}$Ute)GoIYulJ8)S5lv`r5TQGBvCL9jTqJ@SOkhgmCzYD>vM^AAy?{fY=Ph z9FRV<-IloG_*N7D-x$fW`%W3ZBzIWmr{-Fsc8BZbSrh+F3_+lEz60-ef}V(={g+5D zs@G$~2WtP(uyrR4d`|mImsG+V==L+buWQSrDTVwcj+eFKUsy@W^$XeJ*9gjkTqS&f zblN1_4`VIjfDf2I@U%fFnKJMD+3XCyUsxhgzduXXaCj2Y9+1U>YI6I*)W7{p^oX;T z`=gE|rPOpT*g^T(_w4vZQ>ETFGA&7@gPJ|j(-MOrSBaBPHe#9AtKC4qNy3_cIX`l& zY3=@0d)u>E0=85Bu&b#SZ9`A$X6*dUcyapx-sD%2XFMa6bj4}AdWZ2UrT+Z-B;2HN z?l9Lj^>#??1Da0ic3J*XTfJ_FNd7Wi^v~_lD+sdr0h&a&;5#U*#u}X^^l43DEbz&y zs@*CssT*fBIc)$T^goEpja2fYx-xH#1C_B)L|l$eaYcM+ohq8?!~#{4x@S@dyD*(@ zoB^=*fbHPj4(jlls>R50a+Ku!@!8r+of)(zz5aFWEXn=8B*a(0D>PiCHquF83__We z=vuTQxQG*7Gn;hz_iMjl=Cc0Fx<20$cH;L}tILw>kB^!E&U;_l0^(de*LZ8o-=z%O zi@MkS4op${N_=d5H|@I;+uu(w96wQowGzINa2(PS^xcaX^1nhhYO}zFw~YGGpF|Wz zz~k@BbnxokDlU*Weca!*l#BW&*E+q|6taiug>Hc36f=ko;oofrOSP#IOPFlF3OZO8 zNuVM6*C`?PtyTfx&2e}3m~rqaxz?8sv(ZeQST>@IE%K9ZA~Lm;>wX%e4BCJjx-&_p z3`eyhvUpK_azAbp8(YBoU)KiL`EtN&dyb`;$5_e(YU}lt#e*qio$k+naPjK-l-qx_ zf_M5ehsANqf`3LN92Y8{Km=o}WHtxvP2TceyZ(>OHLCoiSwm1rv+;%23tl1PT9+i` z&a*lu2A&ydzuzI@A1wDb!fxK(XLGka8nmw^5OGNXWxaDF^dhc=-=uF1+qb&^*TUG` zW@vNnuo@cnF?iC%O3ocu!JrHgcTQu;w5*aGFCjc*JlpBsG>MCkcy?NSbUm0)W!Obn zZk{r;Xa(NL^JA^9V>9mCK4-!@`w)F^8nzKL^@NIZ zS#DrtS-V>a`^60u1`==Ihy;nQ^W*L@>ZJNe^(91874NH7@oQ)ETMNq-zrea_!YC&} zjd)$UpKW6q@`u=xe|QA4J?HO4_b}k%v0TL#%RO~IYR;jOn)OcDw1PS3Zrwe*sD{R& zX9|8=Reqn|^Isl??mw;yo=jn9Y4i9&U?^eU7pfR63#Dou^A->p$M84B&{3M}ju&is zhNdF(zuTB{d=2HI8^TR?y9wHZzxx{9<4Po7I9%OL=>Kx1>&}N(x1HgDadR@1Njvz@ zWk|QD8;{11E4(ikq{>+;5vAx6YFNkieBcX{hTWSvtZ^U7w5C%y9CAFoMDg1^@yF3q z>Nk!g+59Z}l+@|&JBBv5K9+f5n4;@Gr?O)MS6}y0Lm5_@XV#CHoBt5#VQBGh>}ua4 z-WW;F7lbALn!H{a5momd(Uv$*+n2dqk=T{$;S`}>ijGp9ZTrn`22TtVe6>);O8%I5ZdVfeG{QxCh$g1|!Oj%>WNLQuAea>PybX#(mzVdO*QY^th0%@xlR%%ymCp{)HePN`T666ZC6Q*m8bOMPPhsBu}b zC4K^af)p%|_a=HGTTJKW z`qOADk!|mU%pQ*`xqk!g{i7hfQ-I!qXdl<#WD+|ZhJDptbw$$u`u&PiqS(NiTD+_D zKF8r5%Lq?npv<_2=rM67dU7!#=VHz-kKrfq$s+(iHB5+T1N_EP zL*~yIQsFp*G(?8PWo8so_c5JNFU`%~}E;`qy};`((X&>sJEe5IrYGZG_fe>F?*63hpf z0y9dC(*nvOc~#y0rUjyhBmA*0&~+o`=F($9b}vkhj-}Y0>(|}D-&iz zToomljl+6B(Yf^VX@?M-Sg_9035vx)F07_=xMy&7in}+R?Krk3-<%`XUDguWv52cj z#iDe(Pj)Qp&`)Bsj$&O^BdQo>_(28yKXh1>SBJzUGc{cr^bA-9B?*_Gu=7*=f@)AK z<|L#1w_cgXY31T`;)NUr`sz;`@y~H(b6CSnkO^(pj9{5R53ZtIw_0w>3)@uS9qG#Q zt}3mrQzaDfX`3JuKVk69;H(h%11t4cK+-Iyw(`VZLzU%n#+>!6^7r>*H{@PP*%EET zUY>B0i#vV&pk(bAe-43M-swSxv)WH|)nYxmmMGizl^)G7leZN8*W42M&dODOnWx4X zypk>EKeiuNx6i~SlNB}R*F;RQYeLvEM`2%7 zU(GE{{wU$mfCuU#?}7Ydvz3{Vd+B-rOr}cKoC~jT$qZoO!zBm~7R`uqcdj z6#Vvm<8Fb|ZZr*jz(js_u>w#2Ttvy5X~sN%{ohxn)>f~=D69Jmc(By-V=2nLGFhb;!nWbiVGf+T~H&;ne@EkT{qsh0WVb7 zEUOhO-PAs>X@p;g6p%nyT@O|J!mQz%(mH6fOpi>$mGxltXYVH+VdKVc&Wfk4%9Z;* z7i@!Vu}U(K}fmh#p#-JYWvbZJyp$L{?h6MbPDIiyQ@-dc4m3 z_2~bav=Y{<%<2njpAvg5`u*6aRJ8%@Ym~|~vPB{pJ?v_<>e-YK5Bc8RqlkQ|lT3|Y ze5IAbSsfGM*;2Y(wfQi<&9lWFI-98p`1zQ$NBdF5M4B4%rKe7Y-IV#MTgN3yGrUV&pnwM=hF~G&1PZQUkbZv*e07V{@Z$JK`l4`bNrN3BoQF{>3+zS>p*m~Y~A;2 z6R-6yu|qn$=@U;81#2?V%-~dKV_ZB}!P^h>HR|QS1H2l!S)jW@->=>8RcS9hGX)U^ zgg@}kZxbu!LlH`oH;Wq|p6F z2GRg~@ytQ}h?JLNsLINWJt35t7P@8{0W@CWW@ec}k3aivskW?ajk4jP%b9w-Ar@&c zeT^1Nca7^m>;HagW zi|93Lu~Bkfl>Qn7!ux(Oka0ebXZxjW#;%8KG-bE)D`>X#6FOyD!2Gne=2dy8Nr*31 zjzDOy+B|IekNxfEJ@?I|KW~RqHE0~QP2-G0O_6n-*xj0EMrLI-z7o;pmX!g5GF86C z%(1hs4RIjbz~ecYP0fn@>N&$dP|MZgaFzWu_1<59*mWt<&FQv{b2yqDEVG8OMWvJ` zwO+(&d9`X#Dl}e19*Qdpw6A5!fNxl>h+5;4OpWSHnQfMPXz3-FMhV`{=$tpWsz&H5 zdb9FQZO9TZm68axlTB_XfBgKRn)PhmeFmo=odVSAvoKE0upb)VuVIo=wwW3^J;~m& zNA=}5bPI`z#pFQ~9%l)*DIe}c`zY*Lq^+@>~jk$Gcy z0?83Elx9}ZG!gn`-u?qmxI`^9|9jV1EzGGNTc0oOILF$RoYwG_<3Vl-90c0YvYwAM z-h4?fFRY0ft7~k?5FxeJH;3T-)#JHDm&eL3dsv|d*4)DDcU?{AY+qelKgC{-CF3;h zF;fj2GRz(R@sE~Rm{n~#B;e%Rl;#}TH+j5WOQ#fEtjrE*PgvSzaJgG?qgEY_hM>r4 zvhJZELQD1}OBgE3MV1S?no%u{s^ESsA47dd#jhlaqwcL?m`xWUTtobg8K3UmD~|ak zvz*=2dKLH3S^HAyj47fKm5o#bqr2MadII0M-Vp;*Uy3uw z(T_!wqFqf;7z@uFF2%mz%{J=|E*P_hMM?zBbn2tp+q#8d}Ciw9lGgF6OmIC+BVx#>r<3Hv(xU>b`k3(sHRJrcpejaVMXt~ZH@h-7gmpb==KE)EX8TgZauc`{=6z1b zig5#UMSSo5L#)0eOWq8w$vWK4p!aU%sL5-t#=S9*B7gbHAFmbf+@*`F*+$pYf{l!7 z=sgpqwYSBOYXtSni|2I~+wLCnndLsDglSM6GCyj1^713vuVtWD<24tVMxH!O03zz+ z0Gf+7EqqLBzGW9+ck$tepNwSZd@R&UxMh3?3U!LfsCjWmK(HZg>U9Xm9maMC zQt>==e3=L@)sWgOj@3h?Uw8?A-cFlvG$h|Jv{4^-N7H-(D8+_7^hwyUh#t?rBma$9 zbmu?$*U4mU`ijTlaniUA9re^YJUq~2jtcMxOXy^?E%j1c0E!zaf3V@iq$H45o6F)S zN&(6&x^tu^sA75-w-KdZo1~)6oG;crKySl`XxVA?@`rQSu4et}m#*8VS3g&leDTDd zNWwv}qIV#=jvGnR74&g|M~M?gaVG7>yiP)QNNhJrP1d=D&iU_5~Fa%iRe8a~#Ui4ObXD{ewH?0oDUCgS*Z3=99ZTh`xd}vV(+&^Uqs@5k>iYd1roGc7fFXIHY!knCiZ?p^YA}o(!_y?`H9D zkpAm~ReP6vk)r~ZCodZjs5)`FB(%L)^sA?K0wD#76Q@VB$bFPy9cN^ zt+#WG3u|Wmc5c+xX)^#*>vOSi;F-jMq+T$ZPw;b`97|C zgS`JPX}zPaf0Mr)O%%!Ed7RKt82+OTkkmnhq7~Ku@ep9yCbaS^uo04E#7UDAQucju zg5fl0Prg&L;@aoX#D>d32G*gs0nAw*ro1;NkJq~a4SnSlvhuyNLYVuTruXFspu+dZ zqxoM!)t&MpXKaW2X%!s^d4KhfaKa(aJQ7;+db4GNcyxMWL!=_&b07NOSiE5-a{Xni zsqY=gPZfGIi_hnu;(hB-^m$rui*|sl%0N+PpOAQc%ckdvcf$6XsJF}gwRT*#WZtl~ z5!pQUYz2f8ia0T@q=5c_v7qo%i}1W<(%a!s-w}|t!OwAwL^6nqk=paQN~GyANHmx# zV3ed^iuvuB5)SP`qwRm6#=X@1ork$T^?=vFC<&c1a4(KJt~{JO$Zsr&Y|J9^y>mn> zdraF#fTSzPrCh=pMQ^GSDOT>?b~_5)c)qa{I|UO}Yoo4ni~_^Gf-OnwBYkm4QNIGC z+k66S+JYGeg7Hzz3h?lA0vQ0L`o{T)@fBIvNO|1;5@}T+HxCgtQ|oi>p?K^q?Rp7< zlYRHvg=(EQpsvUp%@xw)O6ox7XBQtZJr;6TJJL3r`_v-R98PV@0gekYuqyU`GETC= z>#kAp>h#EkX46Nm+y}R06qMd~;Wk={j0B3r-3u7cM2JT=cdumx*f)Al*2c;gvhM9qtn7602`B{hARJ9Hj}1qpqPW~ z)XvJ}uL9s*Cd|-9`Y;9HT@muE-1}l%FJw7q=Nkx4n`R6J!K^@*_?%v!w57nbcNDJ= zFN@;HxNKx|&&F=C6d64NDX3tSRA{ViHhq68cXtOG6is~~{pw5^>@}JKv+}y-yc#3Y zsHw3_=K9rmcBi8#@Fi?rAVu;LreKNdyTIzGrUL~NPsy@+f(6BMTemF36V|?t&qZ_m;J##_NR=BD{VO;^QU{(ao0^A*jf`QHwBR4}3z*Y2`C2vl< z-^U!<@ntl@hYA&%)S{eyk0yI5u;IqX@Ik17IV9T*6LAM#BP9^se3fA54)OxL*$W1J zi>{SIur;({)A-yR_}sdeutS%~zWx~JBico|%uk3X`ns&K1bmLxYD%u|+qTEAIw6SXu ziWeYB-dt;6l-y*KCO+Nd9Cx&ee)l+i%$2OZp|N>8pgsY8Gl4mQx3=zcy{n|wOvn@s zdB3rm6*1vel$A@3siC<*r5wO3tZVpW{r*ly7d4{kLlAqx(sq`(?~qb22P{ov+Vj2Q zGl%TF$&{3(93h>o@pznl2fX0cd~4lt9Gcp(Qa4&2-t6Kby9evlu2Pu@DYGsa&?JpQ zytkCY3PR;>X1f8(Krb?Y1X-o6k6+J9&E9zOI$^I-@+zMxs#Q`e=8ksaF?mzZ1X_^4 z*32eVafF0twL3=_8+295n?voSM!GWYHM~-u0&A;^tQtp(X;nn7 z_Fi35rE90v;48sIt;}=XrXeUkmVqq7ZqcLt8u!H3K7oRp&Z>+==JmhtPY!Y~I*a0U z-+W?WjNS>0){?$Q+%H&8D^RblaO)`0z~>7pCKB@p z3@wpfX~szMy^>tvykW}L(uFk$g7KY5xyIIEos7IL_{RjKarl^>d#>O`-Jx5Bhd|R+ zWj|v$wU;Y!&jr-Fo7p-W=4Aow)AeFBCcOdlqHV+1b{%la@aD_L41vDS`n6iw6PP@l zi3dzHhfNgjE9XcW8x-E=Li%ev`qyZZ(?;I~G^ZYc1nyTfk^ntCxM$ZCSzv_wLjjNQRWVOlx^V$3Qm};Ikk$XA>n#78d>c4A zPzH<`-S8u&Q$fO@Q@T^>k3iPF@Y?j6BF1A{L!5 z@}iJ;v{*nLgS5!bW{SR73E&>-UUo)j%yqBbeR(b2_d+tjNHQ^xJJ(kxy!$G(S_J+8 zaQ`ZUYVa4Gq4R}LGv0J9OP7R*KXH9G0?okMcs8$OBu>mP-_<272h{Wx;s;JG3)s4C z7R2o7-^(sOT#8B4~bOvwq627Io4p-J88$NDUS-K{ik@AG4Bt6 zPebX2JPw2~hrswtnL`KaooU*zKb%15!08Z^x-#yGnfToiX z^;{7Kzz7&iZiKZFL^t zemH*|I2|mZ2$i9=t=o35fod0Oe>e! zMUN&-$*;AHUEli%mM+BR{ou|U6A^?yGYj#lSiN8liu!y^eHK^me_h!-q=(-)rXG8& z5&MWV`{=0O^x^%xV2@Ye;B+)mB8bSUF3hs4s&m!7>RS?C-5_4rrCsuw@{3(=o_HTM zPfLcS480i|-V*TY>Mb^*+WEN9l-x^9>b94xe<|R4ofJO1mK62z?pk6+fWiC9Bf%xn z>&Ra-)6?tAeeU+u4Z!+%u}0<*4xk-xb4kt|1iqJ2)!7o1v0z|1$M5^r8-E43``bRd z(;v?&_u)lWYRNFNW_-CLO^kCq9zU!F_uX+p&09imt#m@xGMy+qa^*MI$6BAwdq6^6 z93oHTBFV`+aKiPu)RO4CKb*Jx-Y|}5GIlq(X&|9B=C{unG>JxZ!(P#{JOgcht|{<8 z9yfRpY8t}T(xl(4%uUgVVJ8>gxOhELPIrh5dSl^j%S&;^)Rc$$MYHzyibkIL=qXw! z;>bQ(XIjQ`AeWz82DShK82Z;#Kbg-MaD5WbUn6QvTnilSX!{0e+obnpI(yRa%Nu zW|tQcesK)xSzf|#qsZ_{UG;~lvm26dWU&{4fjWu3tpE9(WL58mwT>q@?0&pVeH4!P zL=i_)6j9KDYQf7Ed(YeRr1@0%M@aEe*V6i?O}UtaG-2shkMy))_6bhylQBK$BnxJo zK;so)RMMj#DrV~%LPM1qJ8?J>cIK5NkgnGs-#+sy4m@uD zCbc0$jMSG4D+`c>phlJgEYu4Nn9g!n~`ZCbhVko@H4(D2|`AdX!Ns_AB0#L&l?Kg7m-ON*-C`S9ZVt6X{O9 ztW97wcfz=6ywuPbLl4y; zfA~vU#fAU1+b5&Dz)E+@_6yqCnJ&n+ak1a_oQ9f{aYWAv79iE;1uf-Pt!wTuNX~!d z)zsBAFXl3Ys9nDYB>q^CyJV7u^!8PqI7TS0wv@MJkzsE^ z43yodT617VZ{0?20Bp2h(fRdCxggEr|>J%*pNl=B`Kbz&N9&dvZ zwV4V8AIlHrsZs#ky>00E{00Dww%|%HkR#{eRja5~SEec|n<$eP&zX@JoJ%Jhg0H=j)=fwh zOZ}H^^ICr!s6VJ*^l(aq)#&+ja@e>8eayAqSI%(Qpt5%KjhPUpL#_0USxnRw8q7KR zrP2mZ2v7HQpU0&k?3z#x9!eUP)U2g=&$D)FAOCqc&;%A)5=+w|KHxjVUwGQ>Ncl zNeQl&`u%f}stZjFf(O?$6I_WbTo8~rzqU*JYPG8tzsRnOGOEKMI#mpEW>Kxlyf%{! zy{NLVccO2vTv0gkEAcd}VFXt#R@535{UO$xDRl18QJXLNl~-;=SGg25OkUrtX&~cD z{<%S~A-Y}9MMJZQIhRElwmfxB9>X)ZQ+16a4~}47splS?_LAp2HjR(b)IkB z-;KC{_{@GcCL&8IsihYqv$ndmQ3Cdz3@Y$(#pEjSV=Hi#POgw)q8k~5^;ZJ*6nDSD zX*cILltI;jVv_v0f%VJ^W~yV2&9wqU>LzaL>PV;u)RtB@=;oW{>SFcw;8NtClPf@6>onfQffM_h3j& z1o!B$MP{uI+0Df-e>kU18X5h!MC$w1dF{%g3Fd%?4gWc*h$Z$@F6M%TNAy&tQ$RL9RpvtUi++r!cJdF|C(^H+H z1reipM%Q$_+zM^K%3d3F2&`B#rt-#Vt&v~h&!zbcZnQH(spnK-%(Ghj)u^SW+R#zZ z)zTo!b@TyR3FFdVwNQ5eM?|Bgxb3-&6HM|V*DpA zo9@eHp)&l*3vr80?$lKl;tI0=M>>4GP=en#{U4y!m9W&fZh;vP=H60?59sUjqvFSX zr;S30TM!>PXLSh@dEYGsAPp>z3tJVq$J^8s8G%vEA3oH~{5RMR@&5p)$W{ zQ4-->jeZlhg(PXd{T*Su1BRHQ9(^{PK&w$HI>Kht_bT4D-kE zp+tVbHF=64Lml$X!@SjEr=~eC@I=r~(!9WextNd=upT z4SSN@(O}PH!C=43VP+PnwBbPf$}m3$P+$Bm^>js#Q$Fa3emP*2P1RIo0%w8QIO(5{ zsTTjPDU!Jv(@?2z@{rIl571VlJ5Y;CZTTpZ9on*z(uq?2^X*ugX;W@cwa;PGo z4uq?W$(8%a&P0%|1=l1+PaVHc*iYn^BIz{B*WN@+O*J#%-LGYOJ)Tchxk|$=dS!xb z@mXY6p4}PLHgrWMX5MGhOAJ91QmrXv?gZcK-D{hT7X)<=JNUav^$ri5d@oz8WHHVr zT*JrKYKx;DazOSBn#CQX#Az=@Qj%%bCpU|jsuKBDX zFK@?NJ$o)+7b61>NZ|x+1#H`-mPBGX#|DE-*CX~1H{3dV{M&C)+NAD-xT<}&(MKn$Mgna!T>gNest+x2<4v0u8t)Z#Q%+CBoZTEHZ~lZN zUxkUfgh@eU3z4{v{FF!BQ-;X)et}=!$zK-r8w!}dY(85g(_0DpO-?% zytUl)k(nDrM*22Vsy`MuZY%h zn3|{f#jebYEyCIjPI1Npp!i|KnBrz}vdnUn68e|U`}jzP^b>qo{a>r}E?O2zx5rk4 zbE(zQ8B`tr5@m)4R#i4ek~zy1rK2m1<^Y;`_(%_79I3C`PGWNpiH z@$Jr|84~(sJ?-1ih!02fpY?--%|<>%fOJKd%Dc9B>z|5NPjwmKj?>)g8gKJ|C&{&I z`op^G$3i{30vJg9FkeIadUw-RJ~iFS@FbMyjfTOdO}AB`B2p{T_;>4(jI+?=%uttA zu~WbLmYIH*vj)PzpxHD?s%qnCU~nCD*^)Z41Y)7Iv#X#p^1YVbJM+}q}XPKv3#61uFye?g&k z4pCo1r?*?5=gzrbV^mk(a4!ETsQal56iUWb9o#+S(4fuLzx*D=>y>3H|CqN_vL!`( zMKCDU*m!w)#Y{Ykh>7PBeIKu6G2Ul(%sI6Jm($ZjE|-Q*RMpP*I{oQG_8M-A?@s9j&&h$GxcFQ8-2TZ6 zP(x3Qu%r1g7loX6TSCMm-b22s@ZJPN!f52I^y5tW6SGze-zk!nYPT{N%Bm|gP%++y`Q*jvtL62A0UQKA>w?<&aUb_n1+iQ z12E6<+LMJNdbU~W3dJ&F9ZiS_4vp3SmLN{Y1~_V{0P4|41=el_vX7);>W5Il@pnXg z=9yHkXo4vI?YOYJM}RBI%a4DUY2Z`NTDO!4WfkNqH#C8v+ zyPDHDvGsuod)6V!n>N(JnOjm5{7lf-%g6+qJ!mA&GkSGGEtI}RbBf(<=8tysQtW&X zCWlK+>JG3QulLgcHqT$PPkW?2W%@>)qFT~TGA!8t;H{^mx~O-^XH9EoIg7rUTRZ*r zs?{3TIr=9R*))z;77pNP(oIp|WwOh+?Gx|=^7>#UR_iS$wovtM`6d_Lgtb|@3YQ7O zE;kd|zR{vp7>|&1&HKuyG1$1lX5hGv2hd^YkCuq+bBj0#1>e#1w)=es_E5F96>Z$^ z$qp=pAcn(^X_gd=v*3;-(3kZG=!JadRWQ=C1PA1 z`Y72)!yNv2Scq81C`CLTibNQZ|0@hWqoHO(+jTv+O>L!m6hoGM?yF@2ERzjY^73=k zC!dUgX8QX*#Nx_yIIjQzT-Xx_f0*17Xv_FRq3wskbR+9?M+|^ z8yyw{1eE>st%bt4B|Rn`Lx!yVhU8-X>s?({fIobLH?R(tMnjHO^Wb--c2sg9=koB* zC3oDENI6G8>nGl~docu_-WmaJ(~huV#}M&|Kz>zfM}^q=C(wC6*Vauq1)3aJ+4y^m zj*J2MWw`l0S^VV;(Y**n{~;}^1HOv(kIfRku>qz!hJb&OIXpr%q64pS$!jGMll!4d zdqm&7U_G+1YEin&gHO4jgpk;_@DK(Z1Yba) zMyz)>K4K}_n=l}jdJ7-69Ln&E$odJ{*>GgDAG`-QiGe(R`v5#n;3DY=Wd5_4&~u!IZ6<{&kmL@MG{UH&tv+S>z&$Sq8wq=qJ7deUD5_8UQ(%wecKciMI=@|zd9jm}n5<>e*W z>mGS{BJaCT5Tf^{;CtCjscV=xVQdv$vNRzAbQqey62g6x?O+=z>6AbMXP_YTp|_4| zHI8SEf@iDc4#s5nh{RLzBr`Mw)m#hqNkN-huM;3uy6(tZ?Z%HOx&7iUo{p2h1SISmEC0TLXg~qv2sfV z{^dcbmp&tsNha(CnRL{HbY7}b@mW$y_u<|zKE-`gjov6vuB6X2rS=U0j-C%q!pCVPqZPUJm0U}XTRmiOiAc?q+&hjedj;GUt0Fj- zX-c2>l&~!8d0tp0@{v@L4t=sicHq+vL7T|9+FL=_BM_IY&81}ge}~0uhxxpqf(wp< zKg*zVe^-l5`^M2Y+R8km05?k=U{reo{ZUZ_Lk3Z-aF{jJ8VIve&Iu3jdzfA=`hY!^ z@h5RHm#nFOAmkqK>hY{>Ut@Ay@mfPuN+;(qvZDg~KAbBCatGTyljVZPH#N?RKo44n zfOIH%W!$4H@W-oKXVLfzlR7Hv_{)QeoTC)g%x zPWXxx{!jMnL0Fa2NA!6g;-D`6L~)lX#|%l-vmbv4>99NHy6S(VSj{G=s(dUH8>p60 zhUQFk473IU5=tt`Opz;+S^Gzj-*IpnM4^XM`tN0{L!H&fG)GE7u&xVM9P z&P(SE>*0D6^T^u6gdv;^G8ekxeIm+n*9S>^mub>(p2|+ccs=LrSy5Xso&WVP4!#L6 zOch2doh+T5HjLjMV9I1q7Fjew<&cS{Qmx&|&Z$%ZWd{~!IkommH;?i)4;*j}`Z)>M zlz4Z>wRhAR6EKOcgb-rFPsVcW&}Fr%C0_%&E~F6meGUYb6`g7!3Bld?Tm>Vs?_K@< zp7G}Y#RdgctaP1Wy7VW)f-2D8We`gyOcf@F-wMu}166~||6$Vq5WMeGEw*?EmI+P}AV6+( zpuHJO`r#j8$9Xv}{zs-gk#zafF&+MB=nSUJZnLy2Fljg_DPba){seqsLbMnJ7QG`A ze386_&LIiPGguyc#)Rz2Mm;^s^Us2Y@ID;%qLJ48BIl&Mp!m4lLQhks%TdaUt8Cj? zG83i}g0Uj0qk{UNxTkz2oC59sh^9RA`lVLyhn+5iH}(BZRm0j4cSCL`s+zkUZI2~H z`n?NmIO_RzoK$UE!pmFsCLU=w8mi-za2Me3o2_iij(Sg6eF@3-CX6>R2R@Oiy6(u^ zIvRDqs}GeKdE{8%7g53o8B~2ScG=dnD_s=)BIsd>dooh5d^5CgTzt;g%y*foZ(3vh z#Q&cPkRSlx<2id=Q1T=u4||(u5Re7K#FzL#e6j@cL zkzqcWU_ajHwfiPbr!7H^2ibSd{&&tP+56>p{#nize)9owpj6j)vB*lthpUfuKU^)h zO+b{J^*^#A4DGjiKyPY6cxKLmBr4J>tUOIZa4k zUzwL}O`Lf!8XKe0i>ujpa@;MhhOoa$zYB2lPyt%b0CAO&7VsfkHAJoqS|ya|o;4+5 z&SUb*%fpyxI3xT1o$CYY+>?>*5a4?Hx0Q>zXLu|uGEP{BzenH>WG*?mwF(qCP7)HF zkGlC>la=$OYMvj{SQ0#ieFshrT1M69{|Z5D&^FW(mZ^m5NYLf^zbxQ50M-8VrIvGY zn_*E*NJEAM@>U=#_eX_Q+DO{UI`{19Lzfrr3#Xh@J0{iYJJ5fzBV(~aNPJ9Ob>KXn zAQYv8yHH7PW4lshKF|^$MB<-_qw>(L2IV-q9<=+7I8^r@!PjFacy7pIDv(RVp%442 zUwhsmfAkB2^?o-maDLthNe4lLw^eIngd0$>+hyoU^Cbc5@;Y#FF*UuW2*%&8ThSs8 zNywYTOthgU_!0k2Q9cX?g*t7==MDDrD_^M5tYE=Ax^RXCvF!en7Ze#wMzT2Gxbo2gcVt*cDn ze;VKXJO9hPp7;i1N&whKhctJD_l5Xv908*xG8OML+_5?!u}V}SQB5RaT8}vrq25N+ zKHBl`KvXD89L>t_7}M;$5LU~HjE27rNW#|V-pc~7!e<`cp#3dp%43r6GUHMb7o`|y zx?L-EPP5gRt0-m{usYwvHs+uG3h;k8!;`tK2VX20GP3!GJdz@SD z6f@E35@Qa^pg;L^Po%UB%*}UT2z1>NIvZ&Bc79$Wc9=a)yD^mVy%+PvgmCDq>U7yk z;|sn9Q`KIFWpI~EpvT%Ev$D71f3MP-cobN}?tIG3^ ze-wZcrKQ{cUj9CRQs2R`S1FWq;lI4qQzinw_~;15GWl#0pO*hk=O@T79UE8Foc?j# zvnx4MofY`hr1KX~g@;O$=l<{G>EG|Zrf6fqF+?A4%YTKt99N9}sD(`IIK|+(C-WDq zp`2l;J|JlV!xP?Nzk~C5;fvJ&l8CWjV#FzfZeqRGG*Q-YVa1flaS0_j?eO>y#YC6% z4beyAJ#Y9~+UtuaQq7Owf9+*0sL6MG3c9!rjd9GYDGc_;)S&oJyPM;4_}iD}R@bN| ze=bhl$!q*{SzXF^X`a;nc_}-UT6cEDvfGVi_Q|>16Dmkk$luA)aI60PJ?)=h48OI& z_PLVKMFaR>gLZ`QTc)>bpc(K@{Aa)LgJFQ@@pR4GhqfBdCJ_J-NkmKPdOcAzD1%39 zCIBHS8ZhrU@r2+N64L{)cmL7|`o0N=ky`ddRfz5OhY@KPG%J-+X(EL+bGqzx3O~K3 zwFcJE`S1YXN?Absa1TdCeFe+S`V@5@X=j8qWJB&k|FeCrP@@iNwa~AYoltN z(uH5F#u+LU_~WDe2zLC$;<|k6Q{Nlxa|tT+^5$s+T*~SnoceeyxL3K+aBb05tp#wB zeTT%zXogM*FB@cY$3_X2LSWd57P?A{OvL?)ON?%XTmCq^yO(W{%=Qkn9X%in`1h!HLD z)o$&YJzxu-OytI!O6+d@M&rIzu=^+7KFyd;!}c8Dg(qkJHZ)nbj37OkYj?gt$Udpg zJ6WpJ@TmAC$DBpA#OE-N$Ppkqz^Bo`Y&n`yV{5kN*zCZ#+Shop*ie?9;)cYCwX@<` z3(eq}nBg5>nCv7w^;0kHzEKI4s&;l-U^%h2$$%e?$)u#(hKKxYPLlqzKC&aSsyW*HF))+i8DasM$ue$EN>G-{4`*yTX#q1US4u9ze1`tfyOw)*qF zr-`zYTLBC?a&M#O(@$+v?k<<6xj#@L7n(~n*8COByZT8ed|~uoq?F(r%_P)D_RgjSvCiY-7jUnK%XCA zO)Lk7J$s8@3aBO=uID{zCb48X+EXo(AJ@|V-Gr*4 z`^Ek5)9Q+tXbBU_otbcA5~odDK4>>R2@tNptZm>BX{Mtzb^IoK_D$u_c~KP^Mn~t2 z#oEi#;-sYUugJXd zZ<(hhfdcnYbol>SNO5MWjE`x;-})aBJ`k&{;V~e5`SfcK*6z5AWzk7=J-c!oSiy`q zu*#@2=G6IXV1Uc69H7k%=88&Y2IM}++Y1>zv(Zj^?HgTP{_``lxuU6@-TqP1tQkO} zvC2Meam??${>x+87LIT~qvMFFWpRFm2$P}?kW(s+t}y}5@~!OzQqbt!V-;s6jzus? z-D&H5P5=KX46j^O_%Mir@J2%`&nvL{YvgNtLdBI^Pt z2xn|{RRTunq8*wTQ zt0*IgSQJ?>f5npMF6iwIHsBKa2IYot%%G+6arxc27w717e$4rZ;D_}sgd09H7oQ>y z_b9hqQe~O9(nsDr)HEt?H6vr9;X=$GQv+OFHT{Lh;%lcVjto-U3HV|qwbzj;s0+l_ zFzY7WY8IK$2EJiaV%%NPP2T{)GRjC0L8~E5rjLD~UXN% zPSR8UjjsCJLA7z;?J^#^#{;QERDUy!wAcSa;LoN0%5S99SlW|yPcUBb;lJUZNdFw& z4sCY4K~Lk(rTX-g_tx5JajfI8WCxYg_jE&?QI!NK%1Y&9^WR+_ha`UJlCKr0h?D>P zC^h8Cz(>_txC(=<#`5HFenK;c8S4bdKx>#g=ViPM1)FBln~OZbt!lP4dV*Q3dvWsi z)`^$?Ur-q76~~-TwV3f1y-HAK?=Pkyc6R_^BblO^dCD0o@P^s=v0_SVHlAu-96AG!TWuok@4}SFQIssy_|kNkEgkl(c3`%U zr{XLzG=z$465!>0VFKq*Z^?P4cObm}OO=+SqWm>%-rdWHT^0?__@AzZ;_{uplWN+vzodpDG~{QAA6kjnydp9UxRW9o z8O*C-+X9^46lC?_h|mEj9=wfI|g9BjP6L( zom{@H*C5O5g+#G`eX%5tQo}!ZhWzN{)pG4dmCaDKt|Bt*SWZ1n94A68$oy!B5s*XY zA6%@&j-*iXyCza<+BrHMsnEGs%cMN#?2b9`)A~bQ6z`n2olZ*-5vvNHA7TY53wCV<8k9(u ze^-l}tMJ$KrN5FhD=*t4{PsS)YLqC_K4CuTwsaAJ!s9IN*JpTXOoT}U0`6GX3^C7J zj2;54rR|hT=OuZC4)BIYAq0$B6L`ky5mb~n5Oq!ioro5agi|iij~=d9$x(`p|5)D% z+Avt`bCCn=cpiDvayD7~Mp4(WKH@*q0Es1U_t+7L(vAbd^+c{{u14z*InAgAwFN`H0A?FYedVFR>ndvB!y1U;5Q?N9 z-vk=3+t^_VnhUYBabnkjqb5BgFD=-1_3k_h8n($D>$5Aj#`zt>yk=y{Tz9m-Wr+jm zxCoBPwBvI>02xg=pV74Cyrj`T8o!mOT4{Zcf`CXCAq2}s(On9 zknHWJp^{{&RfvCjK#ue~UeMYcx37d@%I2i478EKIc3wA*(4dw9c&&XAVo{75oI*-9 zDt?H!cQ@Ou^uJy@7ywn$vWR)C&SU@kon)SFgR#cm{|@urL%YI#w8=ja_u+4FJMXnm zQM4*mAO2k&U1vuGU;g=+xhG8j6-r#?^oVvc+=t@75gH4~z(=fSGO;(#fPQUdPn3?kC&lu3EWL9{eI8$2#Y_uIYCOet}X0Wu>xWFX#=!ab+*#1 za{J{cI1Tv><{c`q)a1x`@tyRZf`a`)5f}JB6Tj*{#qmivEq?i?vV+|f^=Cj53=-&^%)FH9}0Q4L^Y4H6YB4mI~kFaPm zk9~@Kif|wN00J)djjM1SZ_i%VfNd4K&pX^JFjI>wrZjxO{fugV487##vwK;nm#!D7 zq)*#VH+e@FiED~h*=T`?7iJmC*l#l^Zg9`QYWT$ z6a4QTn2^SA&=~0M=prf^>ZJ>;6Y;SjpcD}eb)bu`R;8$7V}E=NEqxvdc;It&fU5f+ zSb6w#k+$-_ir|Q-i~5-2(fFwY@GOBfO4b)=SxU?X=ph;e=Hc*U6SI(v{03nZ8`Yy} zqrLwU*vJE?_6K7l7C0htW0YdrGZwhT)V2w(eeQLkO!nu1k1T=;#FkJj=J#)t=raL8`w{uy zQ6R=I;Tcu5rzip-nevz?{2|MY5QRjy8YMc=g}&wuR^j#rh$La<<8a$v-Ni=zZD$B3 zfaTDJ2keB29w0}Hx!l?NCB>(aC-3=)kFluy-G5|lt=yW@l#!UqLOxp z%Ng=7v8jKuGJ0k}OogGW6ruUqJe87>mFPs0vA9hFO6^B*8%!R~a_nQh#4wtO_+ii_ zk0}JhFf&SxSxHjD24=VN(ta@s{=kDc3`jVEBwJR5#F-!;^JFY#aV$th`p89(n|?Gk z_2o2*JL8J^w;aDIm8#nivvULAgN49&;DygpqUnP_ONF=baNH1v!<<|K{y36$Ll!>>K8tcFCVzys!jmp%^K9C(C9`G~ke2hWC*xFRm#x=FoZNl}!*&;cI9x8)XMw8U780`cf$wTY~3UyzfD&U|hw=_SBZb z?A~|aSo&bfir5(pijF&yT1CM=r;Lv<0I>~n+XQaq!1`ky%U6@dV{`TvL4)JPQ>v{0 zcuc!JvZak;9v^{GGr&W5EQdZU2ou+{oN2I}Q|(m4PC?)75c)7h5e0|WwE7Ts@>4k` zl7hldA*H2|+&h9y)qtq6ph6!4^1d5HN)F<~VO79Q7&$1vngAZnUR$GVV`|{uD$9X~ zC4@sC%%~M1+H*kFs|rt0V|7F!84ysqnW{JJwyjdRG@8W}m*&JC1ecEF{)0k^#6FKL zlQ;|=b@EJIMN6h8DUIc7bJVHEa^Qafp#Wl!`|+su9iws(7w{$(uH_F#F@SwLS}N5=leIzKBwh7Pia|ZV?C%!sDbuv zAlTj`s&5HibPd-$D!o&!W8F>=$K>b?lvEHFwKKNcpg9uSyZI1#NAwv^SWuQU1wvdk z%;=IiV7z!YJEK~o+Gn)FYc}WwJfTIVr;?zwq#ThP(AFT0XgO+u9%lOQ=R7m*28!B^ zIA=3xG*7D*-YpXetd^Temp#2M5wPwKuc~|=7}=7ORz%-Hr{GV!c$m|y-sv_II+$IPz!NEhE`Z)reDM!DKIk1$L#CSKgjJ+oZ8rJDmJ565 zP8`4mkK(oIU=Fw8ul8Fg7V*6O$sT{PdqEs6PS2iCTb3O3X|^1}4o#V`#2~7@Ex;Cqq4eVvm%BjsO&{T9=N*R8(jW}yZ7_}*Lo;lN-n!W5 zfwOqMfOraJU{QN%s$sT^RCVi&M^M@5*LIlWwd4C1v~PLV8Xw{jLFg;qEIFwljz8fo zot?38*lRkMiG?m7)pCK=elO9XIz~jsaoC1QknUV$ooi9ws^bCA*pX^9*}*_{M;x1L z8MiH&Y@18)NonR#hmt8#wTM?zgw6?ZF*LWSaGTDTz?ZxEde`8h6=bbInmH)IMhyeB#-CIR zeZ3E|B+D(qe3TPti;(Gk9f0Qes8%NO zYwlZrw9@!(?-pErsw-0pi@LC|qjPNU$mYCLwL0PSJ zU){lOE6|aF^DNcq-XP3XjGbO=^wBNKmQPFvo2m4)5$3-MkzIyEjbaS;vPto`Y8hb6!^wuis>yJb)jxFJ2{Nj6ILU2mgXZa9|mKHf(w{u z4DU6%Kt>?Zak7Z&q|lTRF3CGlKb}01jrK7g@$&TbIoQ}?T)~-IIXg(l7RCT%AvtP2 zGgG|cB#F`*w9)9~>YC{=%Z8b&S;OqlG=J^R1p69Iyo~%d{496LwR{<4qM##qqnWjw zdCx$YOq|-bXO(U1Yl}0d=*ngE9Cq!K@GPF#)`p>Kw9P-T`^<)D&z@JohW`;*eWb*v zt(R>!b1ES=Svqm_aK}d@OE@4AF^a(ZifbS}ao^AXBC6$;MZZH%GgwEW zj)U%w4NVp_uX@QemluPQ@2=_JSP;$Pp=uu)vfM?xK}6+jB)2zQgxCY7RyapP#$ROR zFJ;{~mc6z76p^3YN|R=1dUi@WQBOxm%YRDU}#zT1Zdwww*MN#pVwSk4!_Y>F-SY zelKmHriUa#JN5ii0Wy)rSk1m>lWnP!1!1=K@sm~7ameZEMwi9zJ{~RY63{>gcsBDz z^sLlH%ePU>t40I|O|b95vJ=x@;(C@j5SUOa*jJ_&OU@h3poQ$2`H^n5D|-OC?6dF- zH0xIdW}Nl2$s}c*J$PI2YWsd`yoL;&f>X1;l}LqlAUs2l2X+F|6ywk6ofiFGuWPA0 zTC&=AL0yc^vvKN94GW@2g1{rrR{fHv3Pd|iZJtYvec@KuQvdBasQwza>^4;oGmH-5 zj@e+#9UNEst@-U-X!2Zm>s-e;e7~x4)#@;SWD4Mtb>uwA^(t$jB9Uf&4_G_2YJ4e{ za@^<+)|_gOXKd8Mh9!A^sP5JNk#m~v6aSk$Q75V6s~vCTfNA66Dx#?aMs&8fiXRSL zDmP5r@a$zUxOxWg{P7s}Hv;RL(!f=3m>mmX*x-Pqu*t`?0q%ZhiS95% z{oTK^6K*bkjPE7r=-T-x(%9Htl(KqwiphWYhd2aQy50WF|I*(C#44aW;(m$ElCK2-`Fal>f>e z@{4vD+MA3E8Q66&47ML#XE^wb+Ni#luPhCmSTvKdcWa0`Y~WYT?Cr;GAM@alGd50h zehljSWnUhQZQ^Tj(-GGT4*QYf={wJtDM9xa_h-x1$L{q1-gm^4oL8GcS#sasFRzJ= zj9yZt9ct2A55D!{og=yPeD764azkMlXD0eKm#>=pDc-LHddU@iW^B{E=ITXgq{JxC5RLimqlQ|s zONL`EsB3mZZ!qz3-RmfcZ6OZx=FSl!BtsttNuGCrI$YR=+OPF^PHdnP;Uz^raBy`{F1AN z5mUuE!%Ci=1VW}IEE*hpo~r#lC@ma~72pNtHmW=o>v6Sj3bRm~oQ(_m8#DR);Ms3U zZbWLu%Y@C7rbZ6&mjt6QtN#UmB7og&qYN&(sK~65Zn?_67dLZ}R20b|s6|^2IZ?B9FFu>nR!XJ@LiH%!6jjL8sutp4#+X6^$rh02bgWuBi=@*|j*22oJnqKp zv`nPpi|nF?Lewf#1+`6xA(=Y-D?X!kBQc`W>^SKbs^~@ zro#R67eN``is2e_%{3t;*}V6jGTNvsvyV)21;T${i&^Ablj3N%pHY=euaf;CjA_95 zTA3lj4ii!TQIm0#R3=NYQf=0*pCZ@RY=4C6pu;?juceVQ!pNmR6Yh&?DyLTaAA#;= zD6yM>vXt1xW>rpTu&b20wj-G&w4qqtsx_;Z1XbFij}KDtuZ$G*rOf^Y^RATOG}BBd z-t5k9p)&u(h|ya*y-D@OMD%(&a|5+}aJECTXU9%6(yTX)U9`oOjW-5h<2G&zPUBjH zSFse?>P0L|g4&qA6*q=@G*r!~Z^L-mO6ir9GCHPib>?XTktZuV@2UCsFdxWPx z!dkK)O2v+CX#>&Vdj8$=Y7wE}ZLDLis6_z@f~X<^0DLGyRD_C$n&btqfM$?j^4d@e zI*}s(RKpYAkc6ia7ZJ}z0JvT&oCl#tB`|myp~_H_mAvb5Y-0s<1yza%yj$GE7a>W= z4?A@ihY0U_BD5d~T~r#GA&XI_h*MZ z)@4XLy2}A2xJCsY90X+7&b>X>H# z5M}*f`N~5=^LmI0r7Bs|y(>ltn{L47CIMgy9hzYx05Ajf%z#0}kWwU6A?5_Bnap4^ z6NULZWEvr43w9F36e1bl@lbOUs(jOWzYLB)HOWnmwZRlF!XP^jN>5jqf|t(Is2SMl zxnBYkm;r4lIHzb$Zay@eQ;Z1lxHn6SZZbG`s;4F$Dzc$GWr_&Y<2g0@Q#Tyc4dcUL z8Fc6hdQR`3s?=sEt=UOKqL7`mq$y%dLA_`Kzz#W#r9SZ)p<{}&m82qTNn_~LTO1IZ zZ-u8lgcr(#vXh?9V~r^}iNaYTlT=&Hq4TC%iYe0boTS=}0j&wxs{S;X-}GnyF$L+* zp0dUaZhT=zt@w&wIZu;i7->=6X@-^Z6?lC`D>X6LP{NW@hm{5BqvF_#weT!XpQkR+z{3bydwMlQ1 zccs%zW_G!%N<`X%s88&VN3hv5`YJ>-#cQfF(@IX@H8VJP1@L+cjL3twf}UXuEy`mO|dBtXNm}ZM~UQ5Y6J1U)8QKzk%Vzs1l%$(}wTb8zA zy{Ij$DSZjf5ax@ovQ6tZ4}4Y{+cc5d>|~HXvf_iHNH$$4gBd*6W&m8J6e2BZmf?IA z#-ceR{q?3rr%DhAA04x9i004LZfB*mp{{R8hqgU?^fIqid31n9fz@1+J zA`%2ZkRZE=0y8$Gh>;$>hzu`YlsIrBMgXmBIc&GFo~u6*@7#j<=Z-Cw?C8}3kdtH1 zksl=r9eEOD$Cwb?RU8;JVym4Jm2#vdl9tj|^x9cPsk3XnS_Df{{2H;|KsUDl*lIP9 z6}^?S8kd^fnLl}{jSw#XB2Ud1v>2x4?4q?=aRvdOF8fJE+ zWl(Xz8CO_S4CaL0N4XXEmw6c7@rNt6*wNgDFxk`@geHMC98^ldR@i3CZI<9p+l42b zN*LK#3tLa66w!Dfjn)ubJdI{mi;8_{m4u{a#o|dc0dPxa!#zaTg5DM8nU9s1{C06vhDuc@jaQfz`1@P#I}zP+w`rELjWdgju^666{ux z9|~t)PNNyiWLgff$6mg^D5TxZ1FC=L z5};^HDz4L4ew#;7uNGMwKEAGXS< z)GUXi)YfL^=Q8XNOkYN_B_lb4uREyclpoIZ zApm9zGc=;hjsofxda$*P>%?V*$Tt?8dMG=?p;mZiW+V<~>m)fVW>d=3SC4QimeXX& zF~9Sqn`N=7fm7I017^-5fd@85dgZ_H1S3|IffRsysC9Od(8l5Ee<9OI|Q{x<;o{ zKxe9e2GpcqacUGBBHQ6jgbWnmLMbMjGoWO~JGgBHD*q)k6tu{#p3iY79sN$47;KX03d@CH48{mlz|Ln0DzBMQ3m6- z!VabQF&6+(hE{MmEnFy;k|dPFqZEvjo$8tmdlpMl3Iv$E45*7E(u?bM#=l0bOmXi) z22;3#{|sgU=3cqLfgCg0&A<2u0Q5|mUliFDW@yDdZt;$YaA5;F7FCu$RhBzZ(n3{Z zty~l6Ro9{!vJDDomi@~?@ebM)WMJA?+QA0U0$|ByFoP+W?1qq;!Bwuf$1h631#pG> z9cke(2a0=Y9ha(pQ_B)0cWj|GPB1Lb8jfg0{9ief`NaWF5M+IP3qZG_4F7P0c!S)9 zE<}Vi5lOWv%#dn8yQ0-a{>LqhJLnDL+7(>52XcrE+GVGz(qSPSUauO%>2CBQ{~fbt zHGPtR)}jo9J~bCKoMA4Q0RV0&1-K*PiZ`ewEyp@;E7aX&KyQHy93C_m-0+WoycDAXp*LW+2%J#b6x&>YLL024HE#s1a@uQSFai)NB;#Jky2z? z-`EXh*Z>ut{0>_f_ZDd}`9JK@2J!aCH?gy0>deW!M1GJ(JCQMD3|sG7C3<8KBwj36xX15%(VKn+$id&HbcT+5$d@V#pEF404V}lxS%wQ zQ``aAD>=_|&jYqB{_wH90lYGr{uZ`CZsgW#uhwdGff2Bh zFWXmbJ-1$P={-Ghda>W)LAI6MW}`t@njM|A-L)IDX>s zUS$wv=mj3}#d&*Da2n_jz5oDr7ZG?UioJFciuZTlW(p9PeW*x?K!k)CaZ-%Y5dL5fby$r4;12*$jQwDYzT`{Ip=TabgMiW;Vz_#= z2#IsCbPxe6WoU{AVJ35vhL31+$2BC-1{G!YO3rp9!RU;|7!mzo3(5!pzTgjRP=4Py zgLg(N{78s|s1i#DM=}p5hh6)24QkU|7LR!_AxV7Gfj9B z#rTOExskr)4{cC>Q-XDVcM?=Mjb@S-pQv<;w|bf69JhE9Vu*d#XNCv(iYmt`yi`(b zq#z_DkD%C$%Ls}W=?}HwOSd46X}E}R1S^!`jjhOf$|8m)2@@yDdhDS&UpO*UDSp3j z4|~X#@->m(C4UiN3yZmozSNAqun|nc3jJ4uCt(vFBa>$Mls-t8+9!sn$cn7!e|)KQ z0$GLw;(zLPl;s184WSakXm`!1Y4_I<&M1_mSPww9i7R2hpg zX@e4&nUx}o|EH24$!4U`RQ4cnb=a0*rYXx3NF2$G8hIrg|8OJL_l3$5i#T|3;wXWN zcZ)RW99_AUHmG!biFI8$esBa4$5nGjc$TIzilEq*ps10`*bu&ee`FwQsri%wseRbz zo_t4CYSA9lNHRBADN4DTtpSVcNq)146g60KP1bpRR4Q^-4=P~~J7EvRc#*!8qP5Tk zQ}|vqS&&otgPZx3%4sHkVu%MApEXH{0QjRZiIp^|7G#i}oi~v-SDT_^68=DsCRLB5 z@R5b`Cq>GmN|$RC>YzfZeU4Zueo~X`Nu-BpmAPn-DhYrh+6wg;ly|72vAHlRs*Frx z54;qL$rx(tc4Mx$u~>*|;ReTobu;;hKstj{|G9mld83&5Uade1csQBND2jJT zjB$F0qG*h~bfEL7k5N~8wwIrf*rD5KXrzakv}lrl2NAaLoPG&1uHgo)&<1Wm21Qn6 zXQ+~~=nMZ~3mo7byi|`E5v8?xtQSd?2bzra&}2G#BOIEjBJ~hU19ipepo8iVhq{G7 zS7dZn23>$-A%hnGCw{t_oEU*)%7~{07m89Es>*tnz65%Ida86e7k=l1f0rrZNEiB7 zh_(@(0?C}aieuzTBZ#`N;-{58IxFJw4}8d?bvT(P5uO^Pr)mj)*2kRo35g9_h-HX_ zOmm-_;s!_QZC3S^h$>Qqs+C27p>z?f!-}Wy{}>VXh?~eLjJMikI#vcpIROe$2G_`x z02rhxd5WtSq361n0MG{GYFrKKp)0wWe&UTWsVuhVgB{i}@ffFT>6mJPjP^hZlS&4p z0Ax$1tK{~Nn)0EmXB**2nu<7(SXqWL`<@-jh#oqFEQy&+MyZk6uE_|G8i}Xr8jtqC zhf9Zs7rL|#im2nKEU?}xm@lSCrZa(qmm7gjsl6CCH>NnINb!RvDUAgxijEnSkZGronU=L+ zkwmL*l31RYnQOYam2%;+@hORp2#MW@b#l>q9%{fd*qPiItYqM>mfE~FyOx})mf%SW zzWKk{n1*+7ZCe|XI{JSmDU>b?iT>K72W-Ie0=RVvxj$TqDQC8_dAOcmp{B` z=eMP*c!H&fjC#D0(d&#*xM5&yp{|Is&C!`qCw;BQB;ost$?3NZOOs3!QsnEj>YAl$ zjByY5r@N?O?)r>q>7Qy@XE?Sr;cKcqda6&EDa@(8*JlTYYP{n6rFC1+oB5l6cb*Zr zi)WaH8@7vOkaC4vj|U2wYoWF$C?Y0B^@)cUwoepm&WWo573cyJjMgUx9yi0q2nc~^&p@mBMSs)p`%Lf*sMLOv*h*WirgsuI zmSH5|D%Te)N=Y*1|CxIC@VVNTcnf=6q1e7#cTzu=aGG-3cx$&@sm6RMz_5CKTneTL z_=@MYYD7E297>Za(FS_P*LfBq_NjP=3bYu3g6?XMY*}ky$ke!9yS0nly{xyV3Xni} zp7OcfNokUP%f&uj6!*~Ad|h%2xNc@}3tYg!*CoIIpksWSYYqC15DU84x01&j#M}y| zXPUyNy{*}bl@Q?uq%h$AP;w{Uu(zOXH&zcIiR98~4^}tWZS9IXuC78F)Y{tJ;kc!; z3g*#WzG5xbEg7rP84;nDmV1`uCyu>nUWsdd5(6%ZdPW9Wx!5T=4=&%nCyAr2T`F)%(-Ix zyWUM1*!w3)s}`-m0bL;AcJ2=)zID46%I7zpx7SN;4vJ9*goikjn@hD#Y`@wpA~kL% zfr4@RIwep9#LumbO^y;ormH}EZc|utt&kGpx&c)RlxZoA1KxFwOrdh=w_2>N;mg{O z8|vaw*pfVp*7wLDzK8+o1{*0X$u+Fe1v(l zPEI(+GXeNDa z^^Ct~F1enksKm2<2dPfz^Mc=kVvBLDc%UtnY*uShZq@TD9(G^wC4PR>jG8#+`lLwQ zM*o%>9PGJ9mzr7lNr~p?n%{*!C51_3ANdc1mi#Zwcy3PTZvXgfZt$SpvL#0f9q^G= z|3BcraQR2?=S2Lwm5aa?UyuiE&#vm3vyW}ApX6!rV=}+%kYD|mZ}djV1%&VB0RO@O z@y{Osf4}_w1Ca1w!h{F`++qmv7XUjFZ%u^w=iwiS3=`hc_zUDkhIasn{AKH88vrT~ z{)74NqAM=898P5T%b`bx0}tv1(2C0~q5xnH{MD+AtA9BE-7~6CpungYH9mw0@lHpR zJRbts>hcgwJ4I6fQ<< z1HCpfY@?MR%NXq*hnjN8#`-3#OE1Q_J1QpAY$=5cGTg91ko#Q=qkA@54H_e>`pJ9E5h2g|j$<4m&b7PSCyx{C_Aft53GaY_U?rR*dYI|6|913ee|ub=ntb zJgYYHPPz)xH&3c1obk0hojeq#T6WBdC|6iZQbB%6RmfwyWOK02XhY-Ipd>e4`?`no zGJGeq?D>Upv(lE&CefsG+2uA$@z*}YvZhGjl9h|0zFy>)s|9Jqwl8_4My8*sVCXFKy zT#N!b0v!kdrSKiP@P|Ki+2(fZ@|;Q%=DPz~>T=k_5C$_86#Uo%PQXGK^n?^OmJDfn zWSF3(0!6~Y@Xi)kie2fvN1umyZdSf?1$Gj0p_aIeiuplM^xUAlgn49*iNX+;Tqcts zuFxK~;ax;@SeWRg4_#|qBfR9-?j85Blt(vfVu zm8HQ(cgykY@8O~cW zvz({&2pdr;$Y8N0m%JS08eOQqW)kv~uvFwNKUqsxtm=8%tR^~5;R;HSj%84(v+JNrVgc<5NrMtn}p(K zLb+)}K?2i|?_@|ND=N-FzA>BeOxS0Bw8JJ+F__{cq%#wSOF)j(kc^z*Gy_T~db(nz zm>Vd5%y2te7E*mz1g7#z8Wb~pGL>yGC{gjL&Rb~cdDIN%KGQkKUBdF7!sMwht0~Fn z1$3Y;o8D*uAkDIxL7IeWnK5HYk>xbClIPTA|Mcj&P>vqRhD~KAQ}+o<-c59O=#*vj zR(d<$RknTY8&frQ67>~95vn;8M$&s~ z5}$wcBtzxt*nw_Hg=W|-e&9kMUrci;*(8+s;y6s&DHBqad|@Dan@iHX(UtuC41KP+ zS)NjLmcAsUGNqW=220f@W3npz?3+VJnn5~{TGdwX0TDo2iHLxa>w0SoNs?O9fPkbX zFL7%VuOO2r?{uVQO_|H}=5(4?O(jhH!)v934bz}pAVn(P6YZ+ffHIx?9Ik>qg&NlljJ3ZVc7fc1z}(902tNM*I`Q7x4t zbz&~ekkW9Tok>kLmeYBw9BM0vsMkb_RI;!v>3aQJ25=74uiUimK&MGq_q-4QhdG#w zyKrjEnfiq&+Mr Date: Fri, 15 Nov 2024 15:37:30 +0000 Subject: [PATCH 384/550] Rails 7+: primary_abstract_class recommendation (#32909) --- app/models/application_record.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 299aad6340..24e9d6aeba 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class ApplicationRecord < ActiveRecord::Base - self.abstract_class = true + primary_abstract_class include Remotable From 297ce9ef4474c80e10043db7cc61b4fc331c68c1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 15 Nov 2024 10:49:26 -0500 Subject: [PATCH 385/550] Move body class to shared partial for web app controller concern views (#31797) --- app/controllers/concerns/web_app_controller_concern.rb | 5 ----- app/views/shared/_web_app.html.haml | 1 + spec/system/about_spec.rb | 1 + spec/system/home_spec.rb | 2 ++ spec/system/privacy_spec.rb | 1 + spec/system/tags_spec.rb | 1 + 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb index 9485ecda49..249bb20a25 100644 --- a/app/controllers/concerns/web_app_controller_concern.rb +++ b/app/controllers/concerns/web_app_controller_concern.rb @@ -7,7 +7,6 @@ module WebAppControllerConcern vary_by 'Accept, Accept-Language, Cookie' before_action :redirect_unauthenticated_to_permalinks! - before_action :set_app_body_class content_security_policy do |p| policy = ContentSecurityPolicy.new @@ -24,10 +23,6 @@ module WebAppControllerConcern !(ENV['ONE_CLICK_SSO_LOGIN'] == 'true' && ENV['OMNIAUTH_ONLY'] == 'true' && Devise.omniauth_providers.length == 1) && current_user.nil? end - def set_app_body_class - @body_classes = 'app-body' - end - def redirect_unauthenticated_to_permalinks! return if user_signed_in? && current_account.moved_to_account_id.nil? diff --git a/app/views/shared/_web_app.html.haml b/app/views/shared/_web_app.html.haml index 89d6ee567d..4f9a20a9f4 100644 --- a/app/views/shared/_web_app.html.haml +++ b/app/views/shared/_web_app.html.haml @@ -1,3 +1,4 @@ +- content_for :body_classes, 'app-body' - content_for :header_tags do - if user_signed_in? = preload_pack_asset 'features/compose.js' diff --git a/spec/system/about_spec.rb b/spec/system/about_spec.rb index f832802f91..d7fd7f51a1 100644 --- a/spec/system/about_spec.rb +++ b/spec/system/about_spec.rb @@ -8,5 +8,6 @@ RSpec.describe 'About page' do expect(page) .to have_css('noscript', text: /Mastodon/) + .and have_css('body', class: 'app-body') end end diff --git a/spec/system/home_spec.rb b/spec/system/home_spec.rb index c1ce4e1726..0838b3d8e7 100644 --- a/spec/system/home_spec.rb +++ b/spec/system/home_spec.rb @@ -11,6 +11,7 @@ RSpec.describe 'Home page' do expect(page) .to have_css('noscript', text: /Mastodon/) + .and have_css('body', class: 'app-body') end end @@ -20,6 +21,7 @@ RSpec.describe 'Home page' do expect(page) .to have_css('noscript', text: /Mastodon/) + .and have_css('body', class: 'app-body') end end end diff --git a/spec/system/privacy_spec.rb b/spec/system/privacy_spec.rb index 631440ebb2..f2e4d5a993 100644 --- a/spec/system/privacy_spec.rb +++ b/spec/system/privacy_spec.rb @@ -8,5 +8,6 @@ RSpec.describe 'Privacy policy page' do expect(page) .to have_css('noscript', text: /Mastodon/) + .and have_css('body', class: 'app-body') end end diff --git a/spec/system/tags_spec.rb b/spec/system/tags_spec.rb index f39c6bf0d8..9da5768c7f 100644 --- a/spec/system/tags_spec.rb +++ b/spec/system/tags_spec.rb @@ -13,6 +13,7 @@ RSpec.describe 'Tags' do expect(page) .to have_css('noscript', text: /Mastodon/) + .and have_css('body', class: 'app-body') .and have_private_cache_control end end From 319109029d8eb8b851874b3c80ced3536ba81f29 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 15 Nov 2024 10:52:37 -0500 Subject: [PATCH 386/550] Fix logic in "last used at per application" oauth token list (#32912) --- .../authorized_applications_controller.rb | 8 +------ app/models/user.rb | 9 ++++++++ spec/models/user_spec.rb | 23 +++++++++++++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app/controllers/oauth/authorized_applications_controller.rb b/app/controllers/oauth/authorized_applications_controller.rb index 267409a9ce..9e541e5e3c 100644 --- a/app/controllers/oauth/authorized_applications_controller.rb +++ b/app/controllers/oauth/authorized_applications_controller.rb @@ -35,12 +35,6 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicatio end def set_last_used_at_by_app - @last_used_at_by_app = Doorkeeper::AccessToken - .select('DISTINCT ON (application_id) application_id, last_used_at') - .where(resource_owner_id: current_resource_owner.id) - .where.not(last_used_at: nil) - .order(application_id: :desc, last_used_at: :desc) - .pluck(:application_id, :last_used_at) - .to_h + @last_used_at_by_app = current_resource_owner.applications_last_used end end diff --git a/app/models/user.rb b/app/models/user.rb index f717dcd860..be9ebac699 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -280,6 +280,15 @@ class User < ApplicationRecord save! end + def applications_last_used + Doorkeeper::AccessToken + .where(resource_owner_id: id) + .where.not(last_used_at: nil) + .group(:application_id) + .maximum(:last_used_at) + .to_h + end + def token_for_app(app) return nil if app.nil? || app.owner != self diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 4393be5a4e..9a5a070d25 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -598,4 +598,27 @@ RSpec.describe User do end end end + + describe '#applications_last_used' do + let!(:user) { Fabricate(:user) } + + let!(:never_used_application) { Fabricate :application, owner: user } + let!(:application_one) { Fabricate :application, owner: user } + let!(:application_two) { Fabricate :application, owner: user } + + before do + _other_user_token = Fabricate :access_token, last_used_at: 3.days.ago + _never_used_token = Fabricate :access_token, application: never_used_application, resource_owner_id: user.id, last_used_at: nil + _app_one_old_token = Fabricate :access_token, application: application_one, resource_owner_id: user.id, last_used_at: 5.days.ago + _app_one_new_token = Fabricate :access_token, application: application_one, resource_owner_id: user.id, last_used_at: 1.day.ago + _never_used_token = Fabricate :access_token, application: application_two, resource_owner_id: user.id, last_used_at: 5.days.ago + end + + it 'returns a hash of unique applications with last used values' do + expect(user.applications_last_used) + .to include(application_one.id => be_within(1.0).of(1.day.ago)) + .and include(application_two.id => be_within(1.0).of(5.days.ago)) + .and not_include(never_used_application.id) + end + end end From 54a7c1898e36cda393dc79cde4d44b53e0a5299a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:55:10 +0000 Subject: [PATCH 387/550] Update dependency uuid to v11 (#32676) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- streaming/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/streaming/package.json b/streaming/package.json index 585c4be4e1..380f1c429d 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -27,7 +27,7 @@ "pino": "^9.0.0", "pino-http": "^10.0.0", "prom-client": "^15.0.0", - "uuid": "^10.0.0", + "uuid": "^11.0.0", "ws": "^8.12.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 7fd68ac8c1..1f9ff3426b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3027,7 +3027,7 @@ __metadata: prom-client: "npm:^15.0.0" typescript: "npm:^5.0.4" utf-8-validate: "npm:^6.0.3" - uuid: "npm:^10.0.0" + uuid: "npm:^11.0.0" ws: "npm:^8.12.1" dependenciesMeta: bufferutil: @@ -17680,12 +17680,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" +"uuid@npm:^11.0.0": + version: 11.0.1 + resolution: "uuid@npm:11.0.1" bin: - uuid: dist/bin/uuid - checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe + uuid: dist/esm/bin/uuid + checksum: 10c0/cd5a1d7eccfd6da80382ec88cfa28b68dce2c1c1402228b813fc0065ab8b29d20594cffeb67d850bc166ade677a6c35741072bd9dd0cc7d565c1fe8eca14ef22 languageName: node linkType: hard From 7bd7705f591692f9df0346f025a30ef8eda25ae1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 15 Nov 2024 11:07:26 -0500 Subject: [PATCH 388/550] Combine shared-setup examples across `spec/controllers/auth/*` specs (#32906) --- .../auth/challenges_controller_spec.rb | 32 ++--- .../auth/confirmations_controller_spec.rb | 25 ++-- .../auth/passwords_controller_spec.rb | 53 ++++--- .../auth/registrations_controller_spec.rb | 135 +++++++++--------- 4 files changed, 121 insertions(+), 124 deletions(-) diff --git a/spec/controllers/auth/challenges_controller_spec.rb b/spec/controllers/auth/challenges_controller_spec.rb index 56fdfa61b5..3c9d2a5964 100644 --- a/spec/controllers/auth/challenges_controller_spec.rb +++ b/spec/controllers/auth/challenges_controller_spec.rb @@ -8,9 +8,7 @@ RSpec.describe Auth::ChallengesController do let(:password) { 'foobar12345' } let(:user) { Fabricate(:user, password: password) } - before do - sign_in user - end + before { sign_in user } describe 'POST #create' do let(:return_to) { edit_user_registration_path } @@ -18,28 +16,24 @@ RSpec.describe Auth::ChallengesController do context 'with correct password' do before { post :create, params: { form_challenge: { return_to: return_to, current_password: password } } } - it 'redirects back' do - expect(response).to redirect_to(return_to) - end - - it 'sets session' do - expect(session[:challenge_passed_at]).to_not be_nil + it 'redirects back and sets challenge passed at in session' do + expect(response) + .to redirect_to(return_to) + expect(session[:challenge_passed_at]) + .to_not be_nil end end context 'with incorrect password' do before { post :create, params: { form_challenge: { return_to: return_to, current_password: 'hhfggjjd562' } } } - it 'renders challenge' do - expect(response).to render_template('auth/challenges/new') - end - - it 'displays error' do - expect(response.body).to include 'Invalid password' - end - - it 'does not set session' do - expect(session[:challenge_passed_at]).to be_nil + it 'renders challenge, displays error, does not set session' do + expect(response) + .to render_template('auth/challenges/new') + expect(response.body) + .to include 'Invalid password' + expect(session[:challenge_passed_at]) + .to be_nil end end end diff --git a/spec/controllers/auth/confirmations_controller_spec.rb b/spec/controllers/auth/confirmations_controller_spec.rb index a5b212e660..09a178f0e8 100644 --- a/spec/controllers/auth/confirmations_controller_spec.rb +++ b/spec/controllers/auth/confirmations_controller_spec.rb @@ -23,12 +23,11 @@ RSpec.describe Auth::ConfirmationsController do get :show, params: { confirmation_token: 'foobar' } end - it 'redirects to login' do - expect(response).to redirect_to(new_user_session_path) - end - - it 'queues up bootstrapping of home timeline' do - expect(BootstrapTimelineWorker).to have_received(:perform_async).with(user.account_id) + it 'redirects to login and queues worker' do + expect(response) + .to redirect_to(new_user_session_path) + expect(BootstrapTimelineWorker) + .to have_received(:perform_async).with(user.account_id) end end @@ -88,13 +87,13 @@ RSpec.describe Auth::ConfirmationsController do get :show, params: { confirmation_token: 'foobar' } end - it 'redirects to login and confirms email' do - expect(response).to redirect_to(new_user_session_path) - expect(user.reload.unconfirmed_email).to be_nil - end - - it 'does not queue up bootstrapping of home timeline' do - expect(BootstrapTimelineWorker).to_not have_received(:perform_async) + it 'redirects to login, confirms email, does not queue worker' do + expect(response) + .to redirect_to(new_user_session_path) + expect(user.reload.unconfirmed_email) + .to be_nil + expect(BootstrapTimelineWorker) + .to_not have_received(:perform_async) end end end diff --git a/spec/controllers/auth/passwords_controller_spec.rb b/spec/controllers/auth/passwords_controller_spec.rb index 9ccbb9e494..90095ac4b8 100644 --- a/spec/controllers/auth/passwords_controller_spec.rb +++ b/spec/controllers/auth/passwords_controller_spec.rb @@ -57,29 +57,30 @@ RSpec.describe Auth::PasswordsController do post :update, params: { user: { password: password, password_confirmation: password, reset_password_token: token } } end - it 'redirect to sign in' do - expect(response).to redirect_to '/auth/sign_in' - end + it 'resets the password' do + expect(response) + .to redirect_to '/auth/sign_in' - it 'changes password' do - this_user = User.find(user.id) + # Change password + expect(User.find(user.id)) + .to be_present + .and be_valid_password(password) - expect(this_user).to_not be_nil - expect(this_user.valid_password?(password)).to be true - end + # Deactivate session + expect(user.session_activations.count) + .to eq 0 + expect { session_activation.reload } + .to raise_error(ActiveRecord::RecordNotFound) - it 'deactivates all sessions' do - expect(user.session_activations.count).to eq 0 - expect { session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound) - end + # Revoke tokens + expect(Doorkeeper::AccessToken.active_for(user).count) + .to eq 0 - it 'revokes all access tokens' do - expect(Doorkeeper::AccessToken.active_for(user).count).to eq 0 - end - - it 'removes push subscriptions' do - expect(Web::PushSubscription.where(user: user).or(Web::PushSubscription.where(access_token: access_token)).count).to eq 0 - expect { web_push_subscription.reload }.to raise_error(ActiveRecord::RecordNotFound) + # Remove push subs + expect(Web::PushSubscription.where(user: user).or(Web::PushSubscription.where(access_token: access_token)).count) + .to eq 0 + expect { web_push_subscription.reload } + .to raise_error(ActiveRecord::RecordNotFound) end end @@ -88,15 +89,13 @@ RSpec.describe Auth::PasswordsController do post :update, params: { user: { password: password, password_confirmation: password, reset_password_token: 'some_invalid_value' } } end - it 'renders reset password' do - expect(response).to render_template(:new) - end + it 'renders reset password and retains password' do + expect(response) + .to render_template(:new) - it 'retains password' do - this_user = User.find(user.id) - - expect(this_user).to_not be_nil - expect(this_user.external_or_valid_password?(user.password)).to be true + expect(User.find(user.id)) + .to be_present + .and be_external_or_valid_password(user.password) end end end diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index d1542128e7..739cb455e8 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -6,25 +6,33 @@ RSpec.describe Auth::RegistrationsController do render_views shared_examples 'checks for enabled registrations' do |path| - it 'redirects if it is in single user mode while it is open for registration' do - Fabricate(:account) - Setting.registrations_mode = 'open' - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true) + context 'when in single user mode and open for registration' do + before do + Setting.registrations_mode = 'open' + allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true) + end - get path + it 'redirects to root' do + Fabricate(:account) + get path - expect(response).to redirect_to '/' - expect(Rails.configuration.x).to have_received(:single_user_mode) + expect(response).to redirect_to '/' + expect(Rails.configuration.x).to have_received(:single_user_mode) + end end - it 'redirects if it is not open for registration while it is not in single user mode' do - Setting.registrations_mode = 'none' - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(false) + context 'when registrations closed and not in single user mode' do + before do + Setting.registrations_mode = 'none' + allow(Rails.configuration.x).to receive(:single_user_mode).and_return(false) + end - get path + it 'redirects to root' do + get path - expect(response).to redirect_to '/' - expect(Rails.configuration.x).to have_received(:single_user_mode) + expect(response).to redirect_to '/' + expect(Rails.configuration.x).to have_received(:single_user_mode) + end end end @@ -35,12 +43,12 @@ RSpec.describe Auth::RegistrationsController do get :edit end - it 'returns http success' do - expect(response).to have_http_status(200) - end + it 'returns http success and cache headers' do + expect(response) + .to have_http_status(200) - it 'returns private cache control header' do - expect(response.headers['Cache-Control']).to include('private, no-store') + expect(response.headers['Cache-Control']) + .to include('private, no-store') end end @@ -53,14 +61,13 @@ RSpec.describe Auth::RegistrationsController do sign_in(user, scope: :user) end - it 'returns http success' do + it 'returns http success and cache headers' do put :update - expect(response).to have_http_status(200) - end - it 'returns private cache control headers' do - put :update - expect(response.headers['Cache-Control']).to include('private, no-store') + expect(response) + .to have_http_status(200) + expect(response.headers['Cache-Control']) + .to include('private, no-store') end it 'can update the user email' do @@ -174,16 +181,14 @@ RSpec.describe Auth::RegistrationsController do post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } } end - it 'redirects to setup' do + it 'redirects to setup and creates user' do subject - expect(response).to redirect_to auth_setup_path - end - it 'creates user' do - subject - user = User.find_by(email: 'test@example.com') - expect(user).to_not be_nil - expect(user.locale).to eq(accept_language) + expect(response) + .to redirect_to auth_setup_path + expect(User.find_by(email: 'test@example.com')) + .to be_present + .and have_attributes(locale: eq(accept_language)) end end @@ -254,17 +259,18 @@ RSpec.describe Auth::RegistrationsController do post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } } end - it 'redirects to setup' do + it 'redirects to setup and creates user' do subject - expect(response).to redirect_to auth_setup_path - end - it 'creates user' do - subject - user = User.find_by(email: 'test@example.com') - expect(user).to_not be_nil - expect(user.locale).to eq(accept_language) - expect(user.approved).to be(false) + expect(response) + .to redirect_to auth_setup_path + + expect(User.find_by(email: 'test@example.com')) + .to be_present + .and have_attributes( + locale: eq(accept_language), + approved: be(false) + ) end end @@ -276,17 +282,17 @@ RSpec.describe Auth::RegistrationsController do post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } } end - it 'redirects to setup' do + it 'redirects to setup and creates user' do subject - expect(response).to redirect_to auth_setup_path - end - it 'creates user' do - subject - user = User.find_by(email: 'test@example.com') - expect(user).to_not be_nil - expect(user.locale).to eq(accept_language) - expect(user.approved).to be(false) + expect(response).to redirect_to auth_setup_path + + expect(User.find_by(email: 'test@example.com')) + .to be_present + .and have_attributes( + locale: eq(accept_language), + approved: be(false) + ) end end @@ -300,17 +306,17 @@ RSpec.describe Auth::RegistrationsController do post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } } end - it 'redirects to setup' do + it 'redirects to setup and creates user' do subject - expect(response).to redirect_to auth_setup_path - end - it 'creates user' do - subject - user = User.find_by(email: 'test@example.com') - expect(user).to_not be_nil - expect(user.locale).to eq(accept_language) - expect(user.approved).to be(true) + expect(response).to redirect_to auth_setup_path + + expect(User.find_by(email: 'test@example.com')) + .to be_present + .and have_attributes( + locale: eq(accept_language), + approved: be(true) + ) end end @@ -348,12 +354,11 @@ RSpec.describe Auth::RegistrationsController do delete :destroy end - it 'returns http not found' do - expect(response).to have_http_status(404) - end - - it 'does not delete user' do - expect(User.find(user.id)).to_not be_nil + it 'returns http not found and keeps user' do + expect(response) + .to have_http_status(404) + expect(User.find(user.id)) + .to_not be_nil end end end From 9d3fcc3546df1cef5652ea29e370a86cb87d7a21 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 15 Nov 2024 11:10:20 -0500 Subject: [PATCH 389/550] Remove unused failure action in api/base controller spec (#32905) --- spec/controllers/api/base_controller_spec.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spec/controllers/api/base_controller_spec.rb b/spec/controllers/api/base_controller_spec.rb index 1e0e7c8f4d..bd4073dfaf 100644 --- a/spec/controllers/api/base_controller_spec.rb +++ b/spec/controllers/api/base_controller_spec.rb @@ -7,10 +7,6 @@ RSpec.describe Api::BaseController do def success head 200 end - - def failure - FakeService.new - end end it 'returns private cache control headers by default' do From 44d92fa4f6aac5c45ad358287af48cd879f5665e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:15:44 +0100 Subject: [PATCH 390/550] Update dependency uuid to v11.0.3 (#32913) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1f9ff3426b..aaecae7a2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17681,11 +17681,11 @@ __metadata: linkType: hard "uuid@npm:^11.0.0": - version: 11.0.1 - resolution: "uuid@npm:11.0.1" + version: 11.0.3 + resolution: "uuid@npm:11.0.3" bin: uuid: dist/esm/bin/uuid - checksum: 10c0/cd5a1d7eccfd6da80382ec88cfa28b68dce2c1c1402228b813fc0065ab8b29d20594cffeb67d850bc166ade677a6c35741072bd9dd0cc7d565c1fe8eca14ef22 + checksum: 10c0/cee762fc76d949a2ff9205770334699e0043d52bb766472593a25f150077c9deed821230251ea3d6ab3943a5ea137d2826678797f1d5f6754c7ce5ce27e9f7a6 languageName: node linkType: hard From a1ac2a73fffa2a8e1b3aa71041fd01c1587e0d5f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Sat, 16 Nov 2024 15:48:10 -0500 Subject: [PATCH 391/550] Remove remnants of embed views (#32419) --- app/helpers/statuses_helper.rb | 11 ------ app/views/admin/reports/_status.html.haml | 2 +- .../filters/statuses/_status_filter.html.haml | 2 +- spec/helpers/accounts_helper_spec.rb | 35 ++----------------- spec/helpers/statuses_helper_spec.rb | 24 ------------- 5 files changed, 4 insertions(+), 70 deletions(-) diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index 9bbb03fd82..16b9d3fb53 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -1,9 +1,6 @@ # frozen_string_literal: true module StatusesHelper - EMBEDDED_CONTROLLER = 'statuses' - EMBEDDED_ACTION = 'embed' - VISIBLITY_ICONS = { public: 'globe', unlisted: 'lock_open', @@ -60,18 +57,10 @@ module StatusesHelper components.compact_blank.join("\n\n") end - def stream_link_target - embedded_view? ? '_blank' : nil - end - def visibility_icon(status) VISIBLITY_ICONS[status.visibility.to_sym] end - def embedded_view? - params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION - end - def prefers_autoplay? ActiveModel::Type::Boolean.new.cast(params[:autoplay]) || current_user&.setting_auto_play_gif end diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index 3a35fdd272..bd688a1a5d 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -44,7 +44,7 @@ = t("statuses.visibilities.#{status.visibility}") · - = link_to ActivityPub::TagManager.instance.url_for(status.proper), class: 'detailed-status__link', target: stream_link_target, rel: 'noopener noreferrer' do + = link_to ActivityPub::TagManager.instance.url_for(status.proper), class: 'detailed-status__link', rel: 'noopener noreferrer' do = t('admin.statuses.view_publicly') - if status.proper.sensitive? diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml index d0d04638d2..3476869e60 100644 --- a/app/views/filters/statuses/_status_filter.html.haml +++ b/app/views/filters/statuses/_status_filter.html.haml @@ -23,7 +23,7 @@ = image_tag(status.account.avatar.url, width: 15, height: 15, alt: '', class: 'avatar') .username= status.account.acct · - = link_to ActivityPub::TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener noreferrer' do + = link_to ActivityPub::TagManager.instance.url_for(status), class: 'detailed-status__datetime', rel: 'noopener noreferrer' do %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) - if status.edited? · diff --git a/spec/helpers/accounts_helper_spec.rb b/spec/helpers/accounts_helper_spec.rb index 2c949cde69..8526482362 100644 --- a/spec/helpers/accounts_helper_spec.rb +++ b/spec/helpers/accounts_helper_spec.rb @@ -3,16 +3,6 @@ require 'rails_helper' RSpec.describe AccountsHelper do - def set_not_embedded_view - params[:controller] = "not_#{StatusesHelper::EMBEDDED_CONTROLLER}" - params[:action] = "not_#{StatusesHelper::EMBEDDED_ACTION}" - end - - def set_embedded_view - params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER - params[:action] = StatusesHelper::EMBEDDED_ACTION - end - describe '#display_name' do it 'uses the display name when it exists' do account = Account.new(display_name: 'Display', username: 'Username') @@ -28,9 +18,8 @@ RSpec.describe AccountsHelper do end describe '#acct' do - it 'is fully qualified for embedded local accounts' do + it 'is fully qualified for local accounts' do allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain') - set_embedded_view account = Account.new(domain: nil, username: 'user') acct = helper.acct(account) @@ -38,32 +27,12 @@ RSpec.describe AccountsHelper do expect(acct).to eq '@user@local_domain' end - it 'is fully qualified for embedded foreign accounts' do - set_embedded_view + it 'is fully qualified for remote accounts' do account = Account.new(domain: 'foreign_server.com', username: 'user') acct = helper.acct(account) expect(acct).to eq '@user@foreign_server.com' end - - it 'is fully qualified for non embedded foreign accounts' do - set_not_embedded_view - account = Account.new(domain: 'foreign_server.com', username: 'user') - - acct = helper.acct(account) - - expect(acct).to eq '@user@foreign_server.com' - end - - it 'is fully qualified for non embedded local accounts' do - allow(Rails.configuration.x).to receive(:local_domain).and_return('local_domain') - set_not_embedded_view - account = Account.new(domain: nil, username: 'user') - - acct = helper.acct(account) - - expect(acct).to eq '@user@local_domain' - end end end diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb index edd3e8f2f7..07ad72eda9 100644 --- a/spec/helpers/statuses_helper_spec.rb +++ b/spec/helpers/statuses_helper_spec.rb @@ -77,28 +77,4 @@ RSpec.describe StatusesHelper do end end end - - describe '#stream_link_target' do - it 'returns nil if it is not an embedded view' do - set_not_embedded_view - - expect(helper.stream_link_target).to be_nil - end - - it 'returns _blank if it is an embedded view' do - set_embedded_view - - expect(helper.stream_link_target).to eq '_blank' - end - end - - def set_not_embedded_view - params[:controller] = "not_#{StatusesHelper::EMBEDDED_CONTROLLER}" - params[:action] = "not_#{StatusesHelper::EMBEDDED_ACTION}" - end - - def set_embedded_view - params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER - params[:action] = StatusesHelper::EMBEDDED_ACTION - end end From 1c6f53e70f3eb59e2870a55c9f271524ff6115a4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 03:07:18 -0500 Subject: [PATCH 392/550] Use `with_options` blocks in `Associations` concern (#32840) --- app/models/concerns/account/associations.rb | 101 +++++++++----------- 1 file changed, 47 insertions(+), 54 deletions(-) diff --git a/app/models/concerns/account/associations.rb b/app/models/concerns/account/associations.rb index 637e785953..4e29235b6b 100644 --- a/app/models/concerns/account/associations.rb +++ b/app/models/concerns/account/associations.rb @@ -4,75 +4,68 @@ module Account::Associations extend ActiveSupport::Concern included do - # Local users - has_one :user, inverse_of: :account, dependent: :destroy + # Core associations + with_options dependent: :destroy do + # Association where account owns record + with_options inverse_of: :account do + has_many :account_moderation_notes + has_many :account_pins + has_many :account_warnings + has_many :aliases, class_name: 'AccountAlias' + has_many :bookmarks + has_many :conversations, class_name: 'AccountConversation' + has_many :custom_filters + has_many :favourites + has_many :featured_tags, -> { includes(:tag) } + has_many :list_accounts + has_many :media_attachments + has_many :mentions + has_many :migrations, class_name: 'AccountMigration' + has_many :notification_permissions + has_many :notification_requests + has_many :notifications + has_many :owned_lists, class_name: 'List' + has_many :polls + has_many :report_notes + has_many :reports + has_many :scheduled_statuses + has_many :status_pins + has_many :statuses - # Timelines - has_many :statuses, inverse_of: :account, dependent: :destroy - has_many :favourites, inverse_of: :account, dependent: :destroy - has_many :bookmarks, inverse_of: :account, dependent: :destroy - has_many :mentions, inverse_of: :account, dependent: :destroy - has_many :conversations, class_name: 'AccountConversation', dependent: :destroy, inverse_of: :account - has_many :scheduled_statuses, inverse_of: :account, dependent: :destroy + has_one :deletion_request, class_name: 'AccountDeletionRequest' + has_one :follow_recommendation_suppression + has_one :notification_policy + has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy' + has_one :user + end - # Notifications - has_many :notifications, inverse_of: :account, dependent: :destroy - has_one :notification_policy, inverse_of: :account, dependent: :destroy - has_many :notification_permissions, inverse_of: :account, dependent: :destroy - has_many :notification_requests, inverse_of: :account, dependent: :destroy + # Association where account is targeted by record + with_options foreign_key: :target_account_id, inverse_of: :target_account do + has_many :strikes, class_name: 'AccountWarning' + has_many :targeted_moderation_notes, class_name: 'AccountModerationNote' + has_many :targeted_reports, class_name: 'Report' + end + end - # Pinned statuses - has_many :status_pins, inverse_of: :account, dependent: :destroy + # Status records pinned by the account has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status - # Endorsements - has_many :account_pins, inverse_of: :account, dependent: :destroy + # Account records endorsed (pinned) by the account has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account - # Media - has_many :media_attachments, dependent: :destroy - has_many :polls, dependent: :destroy - - # Report relationships - has_many :reports, dependent: :destroy, inverse_of: :account - has_many :targeted_reports, class_name: 'Report', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account - - has_many :report_notes, dependent: :destroy - has_many :custom_filters, inverse_of: :account, dependent: :destroy - - # Moderation notes - has_many :account_moderation_notes, dependent: :destroy, inverse_of: :account - has_many :targeted_moderation_notes, class_name: 'AccountModerationNote', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account - has_many :account_warnings, dependent: :destroy, inverse_of: :account - has_many :strikes, class_name: 'AccountWarning', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account - - # Lists (that the account is on, not owned by the account) - has_many :list_accounts, inverse_of: :account, dependent: :destroy + # List records the account has been added to (not owned by the account) has_many :lists, through: :list_accounts - # Lists (owned by the account) - has_many :owned_lists, class_name: 'List', dependent: :destroy, inverse_of: :account - - # Account migrations + # Account record where account has been migrated belongs_to :moved_to_account, class_name: 'Account', optional: true - has_many :migrations, class_name: 'AccountMigration', dependent: :destroy, inverse_of: :account - has_many :aliases, class_name: 'AccountAlias', dependent: :destroy, inverse_of: :account - # Hashtags + # Tag records applied to account has_and_belongs_to_many :tags # rubocop:disable Rails/HasAndBelongsToMany - has_many :featured_tags, -> { includes(:tag) }, dependent: :destroy, inverse_of: :account - # Account deletion requests - has_one :deletion_request, class_name: 'AccountDeletionRequest', inverse_of: :account, dependent: :destroy - - # Follow recommendations + # FollowRecommendation for account (surfaced via view) has_one :follow_recommendation, inverse_of: :account, dependent: nil - has_one :follow_recommendation_suppression, inverse_of: :account, dependent: :destroy - # Account statuses cleanup policy - has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy', inverse_of: :account, dependent: :destroy - - # Imports + # BulkImport records owned by account has_many :bulk_imports, inverse_of: :account, dependent: :delete_all end end From bcf5d30e01b711b86505f9eeae067dea08e03b41 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 18 Nov 2024 09:41:09 +0100 Subject: [PATCH 393/550] Add OpenTelemetry VCS attributes (#32904) --- .github/workflows/build-container-image.yml | 1 + Dockerfile | 307 ++++++++++---------- config/initializers/opentelemetry.rb | 7 + lib/mastodon/version.rb | 4 + 4 files changed, 167 insertions(+), 152 deletions(-) diff --git a/.github/workflows/build-container-image.yml b/.github/workflows/build-container-image.yml index 03a0f5bf37..6204319a63 100644 --- a/.github/workflows/build-container-image.yml +++ b/.github/workflows/build-container-image.yml @@ -92,6 +92,7 @@ jobs: build-args: | MASTODON_VERSION_PRERELEASE=${{ inputs.version_prerelease }} MASTODON_VERSION_METADATA=${{ inputs.version_metadata }} + SOURCE_COMMIT=${{ github.sha }} platforms: ${{ inputs.platforms }} provenance: false builder: ${{ steps.buildx.outputs.name || steps.buildx-native.outputs.name }} diff --git a/Dockerfile b/Dockerfile index a6c7d46b57..c91f10de0f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,6 +29,8 @@ FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} AS ruby ARG MASTODON_VERSION_PRERELEASE="" # Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="pr-123456"] ARG MASTODON_VERSION_METADATA="" +# Will be available as Mastodon::Version.source_commit +ARG SOURCE_COMMIT="" # Allow Ruby on Rails to serve static files # See: https://docs.joinmastodon.org/admin/config/#rails_serve_static_files @@ -45,30 +47,31 @@ ARG GID="991" # Apply Mastodon build options based on options above ENV \ -# Apply Mastodon version information + # Apply Mastodon version information MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \ MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}" \ -# Apply Mastodon static files and YJIT options + SOURCE_COMMIT="${SOURCE_COMMIT}" \ + # Apply Mastodon static files and YJIT options RAILS_SERVE_STATIC_FILES=${RAILS_SERVE_STATIC_FILES} \ RUBY_YJIT_ENABLE=${RUBY_YJIT_ENABLE} \ -# Apply timezone + # Apply timezone TZ=${TZ} ENV \ -# Configure the IP to bind Mastodon to when serving traffic + # Configure the IP to bind Mastodon to when serving traffic BIND="0.0.0.0" \ -# Use production settings for Yarn, Node and related nodejs based tools + # Use production settings for Yarn, Node and related nodejs based tools NODE_ENV="production" \ -# Use production settings for Ruby on Rails + # Use production settings for Ruby on Rails RAILS_ENV="production" \ -# Add Ruby and Mastodon installation to the PATH + # Add Ruby and Mastodon installation to the PATH DEBIAN_FRONTEND="noninteractive" \ PATH="${PATH}:/opt/ruby/bin:/opt/mastodon/bin" \ -# Optimize jemalloc 5.x performance + # Optimize jemalloc 5.x performance MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \ -# Enable libvips, should not be changed + # Enable libvips, should not be changed MASTODON_USE_LIBVIPS=true \ -# Sidekiq will touch tmp/sidekiq_process_has_started_and_will_begin_processing_jobs to indicate it is ready. This can be used for a readiness check in Kubernetes + # Sidekiq will touch tmp/sidekiq_process_has_started_and_will_begin_processing_jobs to indicate it is ready. This can be used for a readiness check in Kubernetes MASTODON_SIDEKIQ_READY_FILENAME=sidekiq_process_has_started_and_will_begin_processing_jobs # Set default shell used for running commands @@ -79,14 +82,14 @@ ARG TARGETPLATFORM RUN echo "Target platform is $TARGETPLATFORM" RUN \ -# Remove automatic apt cache Docker cleanup scripts + # Remove automatic apt cache Docker cleanup scripts rm -f /etc/apt/apt.conf.d/docker-clean; \ -# Sets timezone + # Sets timezone echo "${TZ}" > /etc/localtime; \ -# Creates mastodon user/group and sets home directory + # Creates mastodon user/group and sets home directory groupadd -g "${GID}" mastodon; \ useradd -l -u "${UID}" -g "${GID}" -m -d /opt/mastodon mastodon; \ -# Creates /mastodon symlink to /opt/mastodon + # Creates /mastodon symlink to /opt/mastodon ln -s /opt/mastodon /mastodon; # Set /opt/mastodon as working directory @@ -94,28 +97,28 @@ WORKDIR /opt/mastodon # hadolint ignore=DL3008,DL3005 RUN \ -# Mount Apt cache and lib directories from Docker buildx caches ---mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ ---mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ -# Apt update & upgrade to check for security updates to Debian image + # Mount Apt cache and lib directories from Docker buildx caches + --mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ + # Apt update & upgrade to check for security updates to Debian image apt-get update; \ apt-get dist-upgrade -yq; \ -# Install jemalloc, curl and other necessary components + # Install jemalloc, curl and other necessary components apt-get install -y --no-install-recommends \ - curl \ - file \ - libjemalloc2 \ - patchelf \ - procps \ - tini \ - tzdata \ - wget \ + curl \ + file \ + libjemalloc2 \ + patchelf \ + procps \ + tini \ + tzdata \ + wget \ ; \ -# Patch Ruby to use jemalloc + # Patch Ruby to use jemalloc patchelf --add-needed libjemalloc.so.2 /usr/local/bin/ruby; \ -# Discard patchelf after use + # Discard patchelf after use apt-get purge -y \ - patchelf \ + patchelf \ ; # Create temporary build layer from base image @@ -132,56 +135,56 @@ ARG TARGETPLATFORM # hadolint ignore=DL3008 RUN \ -# Mount Apt cache and lib directories from Docker buildx caches ---mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ ---mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ -# Install build tools and bundler dependencies from APT + # Mount Apt cache and lib directories from Docker buildx caches + --mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ + # Install build tools and bundler dependencies from APT apt-get install -y --no-install-recommends \ - autoconf \ - automake \ - build-essential \ - cmake \ - git \ - libgdbm-dev \ - libglib2.0-dev \ - libgmp-dev \ - libicu-dev \ - libidn-dev \ - libpq-dev \ - libssl-dev \ - libtool \ - meson \ - nasm \ - pkg-config \ - shared-mime-info \ - xz-utils \ - # libvips components - libcgif-dev \ - libexif-dev \ - libexpat1-dev \ - libgirepository1.0-dev \ - libheif-dev \ - libimagequant-dev \ - libjpeg62-turbo-dev \ - liblcms2-dev \ - liborc-dev \ - libspng-dev \ - libtiff-dev \ - libwebp-dev \ + autoconf \ + automake \ + build-essential \ + cmake \ + git \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libicu-dev \ + libidn-dev \ + libpq-dev \ + libssl-dev \ + libtool \ + meson \ + nasm \ + pkg-config \ + shared-mime-info \ + xz-utils \ + # libvips components + libcgif-dev \ + libexif-dev \ + libexpat1-dev \ + libgirepository1.0-dev \ + libheif-dev \ + libimagequant-dev \ + libjpeg62-turbo-dev \ + liblcms2-dev \ + liborc-dev \ + libspng-dev \ + libtiff-dev \ + libwebp-dev \ # ffmpeg components - libdav1d-dev \ - liblzma-dev \ - libmp3lame-dev \ - libopus-dev \ - libsnappy-dev \ - libvorbis-dev \ - libvpx-dev \ - libx264-dev \ - libx265-dev \ + libdav1d-dev \ + liblzma-dev \ + libmp3lame-dev \ + libopus-dev \ + libsnappy-dev \ + libvorbis-dev \ + libvpx-dev \ + libx264-dev \ + libx265-dev \ ; RUN \ -# Configure Corepack + # Configure Corepack rm /usr/local/bin/yarn*; \ corepack enable; \ corepack prepare --activate; @@ -228,28 +231,28 @@ WORKDIR /usr/local/ffmpeg/src/ffmpeg-${FFMPEG_VERSION} # Configure and compile ffmpeg RUN \ ./configure \ - --prefix=/usr/local/ffmpeg \ - --toolchain=hardened \ - --disable-debug \ - --disable-devices \ - --disable-doc \ - --disable-ffplay \ - --disable-network \ - --disable-static \ - --enable-ffmpeg \ - --enable-ffprobe \ - --enable-gpl \ - --enable-libdav1d \ - --enable-libmp3lame \ - --enable-libopus \ - --enable-libsnappy \ - --enable-libvorbis \ - --enable-libvpx \ - --enable-libwebp \ - --enable-libx264 \ - --enable-libx265 \ - --enable-shared \ - --enable-version3 \ + --prefix=/usr/local/ffmpeg \ + --toolchain=hardened \ + --disable-debug \ + --disable-devices \ + --disable-doc \ + --disable-ffplay \ + --disable-network \ + --disable-static \ + --enable-ffmpeg \ + --enable-ffprobe \ + --enable-gpl \ + --enable-libdav1d \ + --enable-libmp3lame \ + --enable-libopus \ + --enable-libsnappy \ + --enable-libvorbis \ + --enable-libvpx \ + --enable-libwebp \ + --enable-libx264 \ + --enable-libx265 \ + --enable-shared \ + --enable-version3 \ ; \ make -j$(nproc); \ make install; @@ -263,17 +266,17 @@ ARG TARGETPLATFORM COPY Gemfile* /opt/mastodon/ RUN \ -# Mount Ruby Gem caches ---mount=type=cache,id=gem-cache-${TARGETPLATFORM},target=/usr/local/bundle/cache/,sharing=locked \ -# Configure bundle to prevent changes to Gemfile and Gemfile.lock + # Mount Ruby Gem caches + --mount=type=cache,id=gem-cache-${TARGETPLATFORM},target=/usr/local/bundle/cache/,sharing=locked \ + # Configure bundle to prevent changes to Gemfile and Gemfile.lock bundle config set --global frozen "true"; \ -# Configure bundle to not cache downloaded Gems + # Configure bundle to not cache downloaded Gems bundle config set --global cache_all "false"; \ -# Configure bundle to only process production Gems + # Configure bundle to only process production Gems bundle config set --local without "development test"; \ -# Configure bundle to not warn about root user + # Configure bundle to not warn about root user bundle config set silence_root_warning "true"; \ -# Download and install required Gems + # Download and install required Gems bundle install -j"$(nproc)"; # Create temporary node specific build layer from build layer @@ -288,9 +291,9 @@ COPY .yarn /opt/mastodon/.yarn # hadolint ignore=DL3008 RUN \ ---mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \ ---mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \ -# Install Node packages + --mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \ + --mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \ + # Install Node packages yarn workspaces focus --production @mastodon/mastodon; # Create temporary assets build layer from build layer @@ -311,10 +314,10 @@ ARG TARGETPLATFORM RUN \ ldconfig; \ -# Use Ruby on Rails to create Mastodon assets + # Use Ruby on Rails to create Mastodon assets SECRET_KEY_BASE_DUMMY=1 \ bundle exec rails assets:precompile; \ -# Cleanup temporary files + # Cleanup temporary files rm -fr /opt/mastodon/tmp; # Prep final Mastodon Ruby layer @@ -324,49 +327,49 @@ ARG TARGETPLATFORM # hadolint ignore=DL3008 RUN \ -# Mount Apt cache and lib directories from Docker buildx caches ---mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ ---mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ -# Mount Corepack and Yarn caches from Docker buildx caches ---mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \ ---mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \ -# Apt update install non-dev versions of necessary components + # Mount Apt cache and lib directories from Docker buildx caches + --mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \ + # Mount Corepack and Yarn caches from Docker buildx caches + --mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \ + --mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \ + # Apt update install non-dev versions of necessary components apt-get install -y --no-install-recommends \ - libexpat1 \ - libglib2.0-0 \ - libicu72 \ - libidn12 \ - libpq5 \ - libreadline8 \ - libssl3 \ - libyaml-0-2 \ + libexpat1 \ + libglib2.0-0 \ + libicu72 \ + libidn12 \ + libpq5 \ + libreadline8 \ + libssl3 \ + libyaml-0-2 \ # libvips components - libcgif0 \ - libexif12 \ - libheif1 \ - libimagequant0 \ - libjpeg62-turbo \ - liblcms2-2 \ - liborc-0.4-0 \ - libspng0 \ - libtiff6 \ - libwebp7 \ - libwebpdemux2 \ - libwebpmux3 \ + libcgif0 \ + libexif12 \ + libheif1 \ + libimagequant0 \ + libjpeg62-turbo \ + liblcms2-2 \ + liborc-0.4-0 \ + libspng0 \ + libtiff6 \ + libwebp7 \ + libwebpdemux2 \ + libwebpmux3 \ # ffmpeg components - libdav1d6 \ - libmp3lame0 \ - libopencore-amrnb0 \ - libopencore-amrwb0 \ - libopus0 \ - libsnappy1v5 \ - libtheora0 \ - libvorbis0a \ - libvorbisenc2 \ - libvorbisfile3 \ - libvpx7 \ - libx264-164 \ - libx265-199 \ + libdav1d6 \ + libmp3lame0 \ + libopencore-amrnb0 \ + libopencore-amrwb0 \ + libopus0 \ + libsnappy1v5 \ + libtheora0 \ + libvorbis0a \ + libvorbisenc2 \ + libvorbisfile3 \ + libvpx7 \ + libx264-164 \ + libx265-199 \ ; # Copy Mastodon sources into final layer @@ -386,7 +389,7 @@ COPY --from=ffmpeg /usr/local/ffmpeg/lib /usr/local/lib RUN \ ldconfig; \ -# Smoketest media processors + # Smoketest media processors vips -v; \ ffmpeg -version; \ ffprobe -version; @@ -396,10 +399,10 @@ RUN \ bundle exec bootsnap precompile --gemfile app/ lib/; RUN \ -# Pre-create and chown system volume to Mastodon user + # Pre-create and chown system volume to Mastodon user mkdir -p /opt/mastodon/public/system; \ chown mastodon:mastodon /opt/mastodon/public/system; \ -# Set Mastodon user as owner of tmp folder + # Set Mastodon user as owner of tmp folder chown -R mastodon:mastodon /opt/mastodon/tmp; # Set the running user for resulting container diff --git a/config/initializers/opentelemetry.rb b/config/initializers/opentelemetry.rb index 8edce03b90..a40cd4e4c5 100644 --- a/config/initializers/opentelemetry.rb +++ b/config/initializers/opentelemetry.rb @@ -65,6 +65,13 @@ if ENV.keys.any? { |name| name.match?(/OTEL_.*_ENDPOINT/) } "#{prefix}#{separator}#{$PROGRAM_NAME.split('/').last}" end c.service_version = Mastodon::Version.to_s + + if Mastodon::Version.source_commit.present? + c.resource = OpenTelemetry::SDK::Resources::Resource.create( + 'vcs.repository.ref.revision' => Mastodon::Version.source_commit, + 'vcs.repository.url.full' => Mastodon::Version.source_base_url + ) + end end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 88aa515296..f132c3a548 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -70,6 +70,10 @@ module Mastodon end end + def source_commit + ENV.fetch('SOURCE_COMMIT', nil) + end + def user_agent @user_agent ||= "Mastodon/#{Version} (#{HTTP::Request::USER_AGENT}; +http#{Rails.configuration.x.use_https ? 's' : ''}://#{Rails.configuration.x.web_domain}/)" end From 60801ab9140c5bcce3a3336d3ed46ccfbf3ab129 Mon Sep 17 00:00:00 2001 From: Jeong Arm Date: Mon, 18 Nov 2024 03:48:27 -0500 Subject: [PATCH 394/550] Add missing autofocus on boost modal (#32953) --- app/javascript/mastodon/features/ui/components/boost_modal.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.tsx b/app/javascript/mastodon/features/ui/components/boost_modal.tsx index cdf7138d49..72a28a01f9 100644 --- a/app/javascript/mastodon/features/ui/components/boost_modal.tsx +++ b/app/javascript/mastodon/features/ui/components/boost_modal.tsx @@ -128,6 +128,8 @@ export const BoostModal: React.FC<{ ? messages.cancel_reblog : messages.reblog, )} + /* eslint-disable-next-line jsx-a11y/no-autofocus -- We are in the modal */ + autoFocus />

From 5b68f4b070dd2d569d854ecc3854a2610fb61866 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 09:56:19 +0100 Subject: [PATCH 395/550] Update libretranslate/libretranslate Docker tag to v1.6.2 (#32951) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .devcontainer/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/compose.yaml b/.devcontainer/compose.yaml index 5c7263c874..705d26e0ab 100644 --- a/.devcontainer/compose.yaml +++ b/.devcontainer/compose.yaml @@ -69,7 +69,7 @@ services: hard: -1 libretranslate: - image: libretranslate/libretranslate:v1.6.1 + image: libretranslate/libretranslate:v1.6.2 restart: unless-stopped volumes: - lt-data:/home/libretranslate/.local From 49a12a2df9d87321de9a13a5f4e4527bcd9bf69c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 08:57:37 +0000 Subject: [PATCH 396/550] Update dependency @formatjs/cli to v6.3.11 (#32950) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index aaecae7a2a..20d00347b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2232,8 +2232,8 @@ __metadata: linkType: hard "@formatjs/cli@npm:^6.1.1": - version: 6.3.8 - resolution: "@formatjs/cli@npm:6.3.8" + version: 6.3.11 + resolution: "@formatjs/cli@npm:6.3.11" peerDependencies: "@glimmer/env": ^0.1.7 "@glimmer/reference": ^0.91.1 || ^0.92.0 @@ -2262,7 +2262,7 @@ __metadata: optional: true bin: formatjs: bin/formatjs - checksum: 10c0/61fb0e56a2da26befad5ca6ff5a8bcf9c383d22634cf288f3cab5661bece7686e6f064adaa500954b37726a7745c73134b459d115d52c931b76d68d998c7b22d + checksum: 10c0/31d5fac85314e97591c4c6a4793abf1d9c6fbf790fbbea779b2a4c0f742f1859804f290e77be06d128274468e44bc27992196aacb4cb6f2fbd141755ca79a98d languageName: node linkType: hard From 02985aae691d23086aa2512974996a1a51999b7c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:20:37 +0100 Subject: [PATCH 397/550] New Crowdin Translations (automated) (#32927) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 4 + app/javascript/mastodon/locales/de.json | 2 +- app/javascript/mastodon/locales/fi.json | 3 +- app/javascript/mastodon/locales/ga.json | 1 + app/javascript/mastodon/locales/he.json | 1 + app/javascript/mastodon/locales/ia.json | 28 +++ app/javascript/mastodon/locales/lv.json | 8 + app/javascript/mastodon/locales/nn.json | 1 + app/javascript/mastodon/locales/sk.json | 6 + app/javascript/mastodon/locales/sl.json | 8 + app/javascript/mastodon/locales/tr.json | 4 +- app/javascript/mastodon/locales/zh-CN.json | 112 +++++------ config/locales/activerecord.zh-CN.yml | 10 +- config/locales/an.yml | 1 - config/locales/ar.yml | 1 - config/locales/be.yml | 1 - config/locales/bg.yml | 1 - config/locales/br.yml | 2 +- config/locales/ca.yml | 1 - config/locales/ckb.yml | 1 - config/locales/co.yml | 1 - config/locales/cs.yml | 1 - config/locales/cy.yml | 1 - config/locales/da.yml | 6 + config/locales/de.yml | 14 +- config/locales/devise.zh-CN.yml | 6 +- config/locales/doorkeeper.ia.yml | 2 + config/locales/doorkeeper.zh-CN.yml | 10 +- config/locales/el.yml | 1 - config/locales/en-GB.yml | 1 - config/locales/eo.yml | 1 - config/locales/es-AR.yml | 16 +- config/locales/es-MX.yml | 16 +- config/locales/es.yml | 44 +++-- config/locales/et.yml | 1 - config/locales/eu.yml | 1 - config/locales/fa.yml | 1 - config/locales/fi.yml | 8 +- config/locales/fo.yml | 8 +- config/locales/fr-CA.yml | 1 - config/locales/fr.yml | 1 - config/locales/fy.yml | 1 - config/locales/ga.yml | 16 +- config/locales/gd.yml | 1 - config/locales/gl.yml | 6 + config/locales/he.yml | 16 +- config/locales/hu.yml | 1 - config/locales/hy.yml | 1 - config/locales/ia.yml | 21 +- config/locales/id.yml | 1 - config/locales/ie.yml | 1 - config/locales/io.yml | 1 - config/locales/is.yml | 8 +- config/locales/it.yml | 8 +- config/locales/ja.yml | 16 +- config/locales/ka.yml | 1 - config/locales/kab.yml | 1 - config/locales/kk.yml | 1 - config/locales/ko.yml | 6 + config/locales/ku.yml | 1 - config/locales/lad.yml | 1 - config/locales/lt.yml | 8 +- config/locales/lv.yml | 1 - config/locales/ms.yml | 1 - config/locales/my.yml | 1 - config/locales/nl.yml | 6 +- config/locales/nn.yml | 8 +- config/locales/no.yml | 1 - config/locales/oc.yml | 1 - config/locales/pl.yml | 1 - config/locales/pt-BR.yml | 13 ++ config/locales/pt-PT.yml | 1 - config/locales/ru.yml | 1 - config/locales/sc.yml | 1 - config/locales/sco.yml | 1 - config/locales/si.yml | 1 - config/locales/simple_form.ga.yml | 1 + config/locales/simple_form.ia.yml | 5 + config/locales/simple_form.pt-BR.yml | 1 + config/locales/simple_form.zh-CN.yml | 34 ++-- config/locales/sk.yml | 1 - config/locales/sl.yml | 1 - config/locales/sq.yml | 8 +- config/locales/sr-Latn.yml | 1 - config/locales/sr.yml | 1 - config/locales/sv.yml | 5 + config/locales/th.yml | 1 - config/locales/tr.yml | 8 +- config/locales/uk.yml | 1 - config/locales/vi.yml | 8 +- config/locales/zh-CN.yml | 212 +++++++++++---------- config/locales/zh-HK.yml | 1 - config/locales/zh-TW.yml | 8 +- 93 files changed, 511 insertions(+), 278 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 44482f6c96..8f99992f33 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -93,10 +93,14 @@ "annual_report.summary.archetype.replier": "Социална пеперуда", "annual_report.summary.followers.followers": "последователи", "annual_report.summary.followers.total": "{count} общо", + "annual_report.summary.here_it_is": "Ето преглед на вашата {year} година:", "annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация", + "annual_report.summary.highlighted_post.by_replies": "публикации с най-много отговори", + "annual_report.summary.highlighted_post.possessive": "на {name}", "annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение", "annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг", "annual_report.summary.new_posts.new_posts": "нови публикации", + "annual_report.summary.percentile.text": "Това ви слага най-отгоресред потребителите на Mastodon.", "annual_report.summary.thanks": "Благодарим, че сте част от Mastodon!", "attachments_list.unprocessed": "(необработено)", "audio.hide": "Скриване на звука", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index bd24ccd48f..f692681387 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -101,7 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "am häufigsten verwendete App", "annual_report.summary.most_used_hashtag.most_used_hashtag": "am häufigsten verwendeter Hashtag", - "annual_report.summary.most_used_hashtag.none": "Kein", + "annual_report.summary.most_used_hashtag.none": "Keiner", "annual_report.summary.new_posts.new_posts": "neue Beiträge", "annual_report.summary.percentile.text": "Damit gehörst du zu den oberstender Mastodon-Nutzer*innen.", "annual_report.summary.percentile.we_wont_tell_bernie": "Wir werden Bernie nichts verraten.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 2763c39168..2c0aacc535 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -38,7 +38,7 @@ "account.following": "Seuratut", "account.following_counter": "{count, plural, one {{counter} seurattu} other {{counter} seurattua}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", - "account.go_to_profile": "Mene profiiliin", + "account.go_to_profile": "Siirry profiiliin", "account.hide_reblogs": "Piilota käyttäjän @{name} tehostukset", "account.in_memoriam": "Muistoissamme.", "account.joined_short": "Liittynyt", @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "Käyttäjän {name}", "annual_report.summary.most_used_app.most_used_app": "käytetyin sovellus", "annual_report.summary.most_used_hashtag.most_used_hashtag": "käytetyin aihetunniste", + "annual_report.summary.most_used_hashtag.none": "Ei mitään", "annual_report.summary.new_posts.new_posts": "uutta julkaisua", "annual_report.summary.percentile.text": "Olet osa huippujoukkoa, johon kuuluuMastodon-käyttäjistä.", "annual_report.summary.thanks": "Kiitos, että olet osa Mastodonia!", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 3181d7978e..137a7c591f 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "{name}'s", "annual_report.summary.most_used_app.most_used_app": "aip is mó a úsáidtear", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag is mó a úsáidtear", + "annual_report.summary.most_used_hashtag.none": "Dada", "annual_report.summary.new_posts.new_posts": "postanna nua", "annual_report.summary.percentile.text": "Cuireann sé sin i mbarr úsáideoirí Mastodon.", "annual_report.summary.percentile.we_wont_tell_bernie": "Ní inseoidh muid do Bernie.", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 48ea869dd2..52d61b737b 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "של {name}", "annual_report.summary.most_used_app.most_used_app": "היישומון שהכי בשימוש", "annual_report.summary.most_used_hashtag.most_used_hashtag": "התג בשימוש הרב ביותר", + "annual_report.summary.most_used_hashtag.none": "אף אחד", "annual_report.summary.new_posts.new_posts": "הודעות חדשות", "annual_report.summary.percentile.text": "ממקם אותך באחוזון של משמשי מסטודון.", "annual_report.summary.percentile.we_wont_tell_bernie": "לא נגלה לברני.", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index e41d390a3f..402829817f 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -87,6 +87,25 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Texto alt", "announcement.announcement": "Annuncio", + "annual_report.summary.archetype.booster": "Le impulsator", + "annual_report.summary.archetype.lurker": "Le lector", + "annual_report.summary.archetype.oracle": "Le oraculo", + "annual_report.summary.archetype.pollster": "Le sondagista", + "annual_report.summary.archetype.replier": "Le responditor", + "annual_report.summary.followers.followers": "sequitores", + "annual_report.summary.followers.total": "{count} in total", + "annual_report.summary.here_it_is": "Ecce tu summario de {year}:", + "annual_report.summary.highlighted_post.by_favourites": "message le plus favorite", + "annual_report.summary.highlighted_post.by_reblogs": "message le plus impulsate", + "annual_report.summary.highlighted_post.by_replies": "message le plus respondite", + "annual_report.summary.highlighted_post.possessive": "{name}, ecce tu…", + "annual_report.summary.most_used_app.most_used_app": "application le plus usate", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus usate", + "annual_report.summary.most_used_hashtag.none": "Necun", + "annual_report.summary.new_posts.new_posts": "nove messages", + "annual_report.summary.percentile.text": "Isto te pone in le primedel usatores de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Tu es un primo inter pares.", + "annual_report.summary.thanks": "Gratias pro facer parte de Mastodon!", "attachments_list.unprocessed": "(non processate)", "audio.hide": "Celar audio", "block_modal.remote_users_caveat": "Nos demandera al servitor {domain} de respectar tu decision. Nonobstante, le conformitate non es garantite perque alcun servitores pote tractar le blocadas de maniera differente. Le messages public pote esser totevia visibile pro le usatores non authenticate.", @@ -158,6 +177,7 @@ "compose_form.poll.duration": "Durata del sondage", "compose_form.poll.multiple": "Selection multiple", "compose_form.poll.option_placeholder": "Option {number}", + "compose_form.poll.single": "Option singule", "compose_form.poll.switch_to_multiple": "Cambiar le sondage pro permitter selectiones multiple", "compose_form.poll.switch_to_single": "Cambiar le sondage pro permitter selection singule", "compose_form.poll.type": "Stilo", @@ -196,6 +216,7 @@ "confirmations.unfollow.title": "Cessar de sequer le usator?", "content_warning.hide": "Celar le message", "content_warning.show": "Monstrar in omne caso", + "content_warning.show_more": "Monstrar plus", "conversation.delete": "Deler conversation", "conversation.mark_as_read": "Marcar como legite", "conversation.open": "Vider conversation", @@ -304,6 +325,7 @@ "filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove", "filter_modal.select_filter.title": "Filtrar iste message", "filter_modal.title.status": "Filtrar un message", + "filter_warning.matches_filter": "Corresponde al filtro “{title}”", "filtered_notifications_banner.pending_requests": "De {count, plural, =0 {nemo} one {un persona} other {# personas}} que tu pote cognoscer", "filtered_notifications_banner.title": "Notificationes filtrate", "firehose.all": "Toto", @@ -383,6 +405,7 @@ "interaction_modal.description.follow": "Con un conto sur Mastodon, tu pote sequer {name} e reciper su messages in tu fluxo de initio.", "interaction_modal.description.reblog": "Con un conto sur Mastodon, tu pote impulsar iste message pro condivider lo con tu proprie sequitores.", "interaction_modal.description.reply": "Con un conto sur Mastodon, tu pote responder a iste message.", + "interaction_modal.description.vote": "Con un conto sur Mastodon, tu pote votar in iste sondage.", "interaction_modal.login.action": "Porta me a casa", "interaction_modal.login.prompt": "Dominio de tu servitor, p.ex. mastodon.social", "interaction_modal.no_account_yet": "Non sur Mstodon?", @@ -394,6 +417,7 @@ "interaction_modal.title.follow": "Sequer {name}", "interaction_modal.title.reblog": "Impulsar le message de {name}", "interaction_modal.title.reply": "Responder al message de {name}", + "interaction_modal.title.vote": "Votar in le sondage de {name}", "intervals.full.days": "{number, plural, one {# die} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}", @@ -503,9 +527,12 @@ "notification.admin.report_statuses_other": "{name} ha reportate {target}", "notification.admin.sign_up": "{name} se ha inscribite", "notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# altere usator} other {altere # usatores}} se inscribeva", + "notification.annual_report.message": "Tu summario #Wrapstodon pro {year} attende! Revela le momentos saliente e memorabile de tu anno sur Mastodon!", + "notification.annual_report.view": "Visitar summario #Wrapstodon", "notification.favourite": "{name} ha marcate tu message como favorite", "notification.favourite.name_and_others_with_link": "{name} e {count, plural, one {# altere} other {# alteres}} favoriva tu message", "notification.follow": "{name} te ha sequite", + "notification.follow.name_and_others": "{name} e {count, plural, one {# other} other {# alteres}} te ha sequite", "notification.follow_request": "{name} ha requestate de sequer te", "notification.follow_request.name_and_others": "{name} e {count, plural, one {# altere} other {# alteres}} ha demandate de sequer te", "notification.label.mention": "Mention", @@ -564,6 +591,7 @@ "notifications.column_settings.filter_bar.category": "Barra de filtro rapide", "notifications.column_settings.follow": "Nove sequitores:", "notifications.column_settings.follow_request": "Nove requestas de sequimento:", + "notifications.column_settings.group": "Gruppo", "notifications.column_settings.mention": "Mentiones:", "notifications.column_settings.poll": "Resultatos del sondage:", "notifications.column_settings.push": "Notificationes push", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index f6053b2e09..d6fcb34828 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -89,6 +89,10 @@ "annual_report.summary.followers.followers": "sekotāji", "annual_report.summary.followers.total": "pavisam {count}", "annual_report.summary.here_it_is": "Šeit ir {year}. gada pārskats:", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "visizmantotākā lietotne", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "visizmantotākais tēmturis", + "annual_report.summary.most_used_hashtag.none": "Nav", "annual_report.summary.new_posts.new_posts": "jauni ieraksti", "attachments_list.unprocessed": "(neapstrādāti)", "audio.hide": "Slēpt audio", @@ -329,7 +333,11 @@ "hashtag.follow": "Sekot tēmturim", "hashtag.unfollow": "Pārstāt sekot tēmturim", "hashtags.and_other": "… un {count, plural, other {vēl #}}", + "hints.profiles.see_more_followers": "Skatīt vairāk sekotāju {domain}", + "hints.profiles.see_more_follows": "Skatīt vairāk sekojumu {domain}", + "hints.profiles.see_more_posts": "Skatīt vairāk ierakstu {domain}", "hints.threads.replies_may_be_missing": "Var trūkt atbildes no citiem serveriem.", + "hints.threads.see_more": "Skatīt vairāk atbilžu {domain}", "home.column_settings.show_reblogs": "Rādīt pastiprinātos ierakstus", "home.column_settings.show_replies": "Rādīt atbildes", "home.hide_announcements": "Slēpt paziņojumus", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index b45ff90585..85d19c4f93 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -101,6 +101,7 @@ "annual_report.summary.highlighted_post.possessive": "som {name} laga", "annual_report.summary.most_used_app.most_used_app": "mest brukte app", "annual_report.summary.most_used_hashtag.most_used_hashtag": "mest brukte emneknagg", + "annual_report.summary.most_used_hashtag.none": "Ingen", "annual_report.summary.new_posts.new_posts": "nye innlegg", "annual_report.summary.percentile.text": "Du er av deiivrigaste Mastodon-brukarane.", "annual_report.summary.percentile.we_wont_tell_bernie": "Ikkje eit ord til pressa.", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 8a01263eb2..1ecbaaffdd 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -348,6 +348,8 @@ "hashtag.follow": "Sledovať hashtag", "hashtag.unfollow": "Prestať sledovať hashtag", "hashtags.and_other": "…a {count, plural, other {# ďalších}}", + "hints.profiles.see_more_posts": "Pozri viac príspevkov na {domain}", + "hints.threads.replies_may_be_missing": "Odpovede z ostatných serverov môžu chýbať.", "hints.threads.see_more": "Pozri viac odpovedí na {domain}", "home.column_settings.show_reblogs": "Zobraziť zdieľania", "home.column_settings.show_replies": "Zobraziť odpovede", @@ -360,6 +362,10 @@ "ignore_notifications_modal.filter_to_act_users": "Stále budeš môcť akceptovať, odmietnuť, alebo nahlásiť užívateľov", "ignore_notifications_modal.filter_to_avoid_confusion": "Triedenie pomáha vyvarovať sa možnému zmäteniu", "ignore_notifications_modal.ignore": "Ignoruj upozornenia", + "ignore_notifications_modal.new_accounts_title": "Nevšímať si oznámenia z nových účtov?", + "ignore_notifications_modal.not_followers_title": "Nevšímať si oznámenia od ľudí, ktorí ťa nenasledujú?", + "ignore_notifications_modal.not_following_title": "Nevšímať si oznámenia od ľudí, ktorých nenasleduješ?", + "ignore_notifications_modal.private_mentions_title": "Nevšímať si oznámenia o nevyžiadaných súkromných spomínaniach?", "interaction_modal.description.favourite": "S účtom na Mastodone môžete tento príspevok ohviezdičkovať, tak dať autorovi vedieť, že sa vám páči, a uložiť si ho na neskôr.", "interaction_modal.description.follow": "S účtom na Mastodone môžete {name} sledovať a vidieť ich príspevky vo svojom domovskom kanáli.", "interaction_modal.description.reblog": "S účtom na Mastodone môžete tento príspevok zdeľať so svojimi sledovateľmi.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 32626b80f9..3690c612b7 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -86,6 +86,8 @@ "alert.unexpected.message": "Zgodila se je nepričakovana napaka.", "alert.unexpected.title": "Ojoj!", "announcement.announcement": "Obvestilo", + "annual_report.summary.most_used_hashtag.none": "Brez", + "annual_report.summary.new_posts.new_posts": "nove objave", "attachments_list.unprocessed": "(neobdelano)", "audio.hide": "Skrij zvok", "block_modal.remote_users_caveat": "Od strežnika {domain} bomo zahtevali, da spoštuje vašo odločitev. Izpolnjevanje zahteve ni zagotovljeno, ker nekateri strežniki blokiranja obravnavajo drugače. Javne objave bodo morda še vedno vidne neprijavljenim uporabnikom.", @@ -433,6 +435,7 @@ "lists.subheading": "Vaši seznami", "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}", "loading_indicator.label": "Nalaganje …", + "media_gallery.hide": "Skrij", "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.", "mute_modal.hide_from_notifications": "Skrijte se pred obvestili", "mute_modal.hide_options": "Skrij možnosti", @@ -444,6 +447,7 @@ "mute_modal.you_wont_see_mentions": "Objav, ki jih omenjajo, ne boste videli.", "mute_modal.you_wont_see_posts": "Še vedno vidijo vaše objave, vi pa ne njihovih.", "navigation_bar.about": "O Mastodonu", + "navigation_bar.administration": "Upravljanje", "navigation_bar.advanced_interface": "Odpri v naprednem spletnem vmesniku", "navigation_bar.blocks": "Blokirani uporabniki", "navigation_bar.bookmarks": "Zaznamki", @@ -478,10 +482,12 @@ "notification.favourite": "{name} je vzljubil/a vašo objavo", "notification.follow": "{name} vam sledi", "notification.follow_request": "{name} vam želi slediti", + "notification.label.mention": "Omemba", "notification.label.private_mention": "Zasebna omemba", "notification.label.private_reply": "Zasebni odgovor", "notification.label.reply": "Odgovori", "notification.mention": "Omemba", + "notification.mentioned_you": "{name} vas je omenil/a", "notification.moderation-warning.learn_more": "Več o tem", "notification.moderation_warning": "Prejeli ste opozorilo moderatorjev", "notification.moderation_warning.action_delete_statuses": "Nekatere vaše objave so odstranjene.", @@ -502,6 +508,7 @@ "notification.status": "{name} je pravkar objavil/a", "notification.update": "{name} je uredil(a) objavo", "notification_requests.accept": "Sprejmi", + "notification_requests.confirm_accept_multiple.title": "Ali želite sprejeti zahteve za obvestila?", "notification_requests.confirm_dismiss_multiple.title": "Želite opustiti zahteve za obvestila?", "notification_requests.dismiss": "Zavrni", "notification_requests.edit_selection": "Uredi", @@ -740,6 +747,7 @@ "status.edit": "Uredi", "status.edited": "Zadnje urejanje {date}", "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", + "status.embed": "Pridobite kodo za vgradnjo", "status.favourite": "Priljubljen_a", "status.favourites": "{count, plural, one {priljubitev} two {priljubitvi} few {priljubitve} other {priljubitev}}", "status.filter": "Filtriraj to objavo", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ece97614ad..061f9c6c28 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -81,7 +81,7 @@ "admin.impact_report.instance_followers": "Kullanıcılarımızın kaybedeceği takipçiler", "admin.impact_report.instance_follows": "Kullanıcılarının kaybedeceği takipçiler", "admin.impact_report.title": "Etki özeti", - "alert.rate_limited.message": "Lütfen {retry_time, time, medium} saatinden sonra tekrar deneyin.", + "alert.rate_limited.message": "Lütfen sonra tekrar deneyin {retry_time, time, medium}.", "alert.rate_limited.title": "Aşırı istek gönderildi", "alert.unexpected.message": "Beklenmedik bir hata oluştu.", "alert.unexpected.title": "Hay aksi!", @@ -358,7 +358,7 @@ "footer.privacy_policy": "Gizlilik politikası", "footer.source_code": "Kaynak kodu görüntüle", "footer.status": "Durum", - "generic.saved": "Kaydedildi", + "generic.saved": "Kaydet", "getting_started.heading": "Başlarken", "hashtag.column_header.tag_mode.all": "ve {additional}", "hashtag.column_header.tag_mode.any": "ya da {additional}", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 887410dd51..cc0f0b9341 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -89,7 +89,7 @@ "announcement.announcement": "公告", "annual_report.summary.archetype.booster": "潮流捕手", "annual_report.summary.archetype.lurker": "吃瓜群众", - "annual_report.summary.archetype.oracle": "预言家", + "annual_report.summary.archetype.oracle": "无所不在", "annual_report.summary.archetype.pollster": "投票狂魔", "annual_report.summary.archetype.replier": "评论区原住民", "annual_report.summary.followers.followers": "关注者", @@ -102,13 +102,13 @@ "annual_report.summary.most_used_app.most_used_app": "最常用的应用", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", "annual_report.summary.most_used_hashtag.none": "无", - "annual_report.summary.new_posts.new_posts": "新发嘟", + "annual_report.summary.new_posts.new_posts": "新嘟嘟", "annual_report.summary.percentile.text": "这使你跻身 Mastodon 用户的前", - "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉Bernie。", + "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉扣税国王的(他知道的话要来收你发嘟税了)。", "annual_report.summary.thanks": "感谢你这一年与 Mastodon 一路同行!", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", - "block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重您的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。", + "block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重你的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。", "block_modal.show_less": "隐藏", "block_modal.show_more": "显示更多", "block_modal.they_cant_mention": "他们不能提及或关注你。", @@ -132,7 +132,7 @@ "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", "closed_registrations.other_server_instructions": "基于 Mastodon 去中心化的特性,你可以在其它服务器上创建账号并继续与此服务器互动。", - "closed_registrations_modal.description": "您目前无法在 {domain} 上创建账户,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账户。", + "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账户,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账户。", "closed_registrations_modal.find_another_server": "查找其他服务器", "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以无论在哪个实例创建账号,都可以关注本服务器上的账号并与之交流。 或者你还可以自己搭建实例!", "closed_registrations_modal.title": "注册 Mastodon 账号", @@ -161,8 +161,8 @@ "column_header.unpin": "取消置顶", "column_subheading.settings": "设置", "community.column_settings.local_only": "仅限本站", - "community.column_settings.media_only": "仅限媒体", - "community.column_settings.remote_only": "仅限外部", + "community.column_settings.media_only": "仅媒体", + "community.column_settings.remote_only": "仅外站", "compose.language.change": "更改语言", "compose.language.search": "搜索语言...", "compose.published.body": "嘟文已发布。", @@ -180,11 +180,11 @@ "compose_form.poll.single": "单选", "compose_form.poll.switch_to_multiple": "将投票改为多选", "compose_form.poll.switch_to_single": "将投票改为单选", - "compose_form.poll.type": "样式", + "compose_form.poll.type": "类型", "compose_form.publish": "发布", - "compose_form.publish_form": "发布", + "compose_form.publish_form": "新嘟文", "compose_form.reply": "回复", - "compose_form.save_changes": "更新", + "compose_form.save_changes": "更改", "compose_form.spoiler.marked": "移除内容警告", "compose_form.spoiler.unmarked": "添加内容警告", "compose_form.spoiler_placeholder": "内容警告 (可选)", @@ -197,7 +197,7 @@ "confirmations.delete_list.message": "确定永久删除这个列表吗?", "confirmations.delete_list.title": "确认删除列表?", "confirmations.discard_edit_media.confirm": "丢弃", - "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍要丢弃吗?", + "confirmations.discard_edit_media.message": "你还有未保存的媒体描述或预览修改,仍要丢弃吗?", "confirmations.edit.confirm": "编辑", "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", "confirmations.edit.title": "确认覆盖嘟文?", @@ -229,7 +229,7 @@ "directory.new_arrivals": "新来者", "directory.recently_active": "最近活跃", "disabled_account_banner.account_settings": "账号设置", - "disabled_account_banner.text": "您的账号 {disabledAccount} 目前已被禁用。", + "disabled_account_banner.text": "你的账号 {disabledAccount} 目前已被禁用。", "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公开嘟文。", "dismissable_banner.dismiss": "忽略", "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", @@ -264,7 +264,7 @@ "emoji_button.clear": "清除", "emoji_button.custom": "自定义", "emoji_button.flags": "旗帜", - "emoji_button.food": "食物和饮料", + "emoji_button.food": "食物与饮料", "emoji_button.label": "插入表情符号", "emoji_button.nature": "自然", "emoji_button.not_found": "未找到匹配的表情符号", @@ -288,13 +288,13 @@ "empty_column.favourited_statuses": "你没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。", "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", "empty_column.follow_requests": "你还没有收到任何关注请求。当你收到一个关注请求时,它会出现在这里。", - "empty_column.followed_tags": "您还没有关注任何话题标签。 当您关注后,它们会出现在这里。", + "empty_column.followed_tags": "你还没有关注任何话题标签。 当你关注后,它们会出现在这里。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", "empty_column.list": "列表中还没有任何内容。当列表成员发布新嘟文时,它们将出现在这里。", "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", - "empty_column.notification_requests": "都看完了!这里没有任何未读通知。当收到新的通知时,它们将根据您的设置显示在这里。", + "empty_column.notification_requests": "都看完了!这里没有任何未读通知。当收到新的通知时,它们将根据你的设置显示在这里。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了", "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。", @@ -333,7 +333,7 @@ "firehose.remote": "其他服务器", "follow_request.authorize": "同意", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", + "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的站务人员认为你也许会想手动审核审核这些账号的关注请求。", "follow_suggestions.curated_suggestion": "站务人员精选", "follow_suggestions.dismiss": "不再显示", "follow_suggestions.featured_longer": "由 {domain} 管理团队精选", @@ -354,7 +354,7 @@ "footer.directory": "用户目录", "footer.get_app": "获取应用", "footer.invite": "邀请", - "footer.keyboard_shortcuts": "快捷键列表", + "footer.keyboard_shortcuts": "快捷键", "footer.privacy_policy": "隐私政策", "footer.source_code": "查看源代码", "footer.status": "状态", @@ -401,18 +401,18 @@ "ignore_notifications_modal.not_followers_title": "是否忽略未关注你的人的通知?", "ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?", "ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?", - "interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,对嘟文的作者展示您欣赏的态度,并保存嘟文以供日后使用。", + "interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,对嘟文的作者展示你欣赏的态度,并保存嘟文以供日后使用。", "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你就可以关注 {name} 并在自己的主页上接收对方的新嘟文。", "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你就可以向自己的关注者们转发此嘟文。", "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你就可以回复此嘟文。", "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你就可以参与此投票。", "interaction_modal.login.action": "转到主页", - "interaction_modal.login.prompt": "您所入驻的服务器域名,如:mastodon.social", + "interaction_modal.login.prompt": "你所入驻的服务器域名,如:mastodon.social", "interaction_modal.no_account_yet": "不在 Mastodon 上?", "interaction_modal.on_another_server": "在另一服务器", "interaction_modal.on_this_server": "在此服务器", - "interaction_modal.sign_in": "您尚未登录此服务器,您的账号托管在哪?", - "interaction_modal.sign_in_hint": "提示:这是您注册的网站,如果您不记得了,请在邮箱的收件箱中查找欢迎邮件。您还可以输入完整的用户名!(例如 @Mastodon@mastodon.social)", + "interaction_modal.sign_in": "你尚未登录此服务器,你的账号托管在哪?", + "interaction_modal.sign_in_hint": "提示:这是你注册的网站,如果你不记得了,请在邮箱的收件箱中查找欢迎邮件。你还可以输入完整的用户名!(例如 @Mastodon@mastodon.social)", "interaction_modal.title.favourite": "喜欢 {name} 的嘟文", "interaction_modal.title.follow": "关注 {name}", "interaction_modal.title.reblog": "转发 {name} 的嘟文", @@ -424,8 +424,8 @@ "keyboard_shortcuts.back": "返回上一页", "keyboard_shortcuts.blocked": "打开被屏蔽用户列表", "keyboard_shortcuts.boost": "转嘟", - "keyboard_shortcuts.column": "选择某栏", - "keyboard_shortcuts.compose": "选择输入框", + "keyboard_shortcuts.column": "选中某栏", + "keyboard_shortcuts.compose": "选中输入框", "keyboard_shortcuts.description": "说明", "keyboard_shortcuts.direct": "打开私下提及栏", "keyboard_shortcuts.down": "在列表中让光标下移", @@ -447,7 +447,7 @@ "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复嘟文", "keyboard_shortcuts.requests": "打开关注请求列表", - "keyboard_shortcuts.search": "选择搜索框", + "keyboard_shortcuts.search": "选中搜索框", "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文", "keyboard_shortcuts.start": "打开“开始使用”栏", "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文", @@ -473,16 +473,16 @@ "lists.exclusive": "在主页中隐藏这些嘟文", "lists.new.create": "新建列表", "lists.new.title_placeholder": "新列表的标题", - "lists.replies_policy.followed": "任何被关注的用户", + "lists.replies_policy.followed": "所有我关注的用户", "lists.replies_policy.list": "列表成员", - "lists.replies_policy.none": "无人", + "lists.replies_policy.none": "不显示", "lists.replies_policy.title": "显示回复:", "lists.search": "搜索你关注的人", "lists.subheading": "你的列表", "load_pending": "{count} 项", "loading_indicator.label": "加载中…", "media_gallery.hide": "隐藏", - "moved_to_account_banner.text": "您的账号 {disabledAccount} 已禁用,因为您已迁移到 {movedToAccount}。", + "moved_to_account_banner.text": "你的账号 {disabledAccount} 已禁用,因为你已迁移到 {movedToAccount}。", "mute_modal.hide_from_notifications": "从通知中隐藏", "mute_modal.hide_options": "隐藏选项", "mute_modal.indefinite": "直到我取消隐藏他们", @@ -507,19 +507,19 @@ "navigation_bar.filters": "忽略的关键词", "navigation_bar.follow_requests": "关注请求", "navigation_bar.followed_tags": "关注的话题标签", - "navigation_bar.follows_and_followers": "关注和粉丝", + "navigation_bar.follows_and_followers": "关注与关注者", "navigation_bar.lists": "列表", "navigation_bar.logout": "退出登录", - "navigation_bar.moderation": "运营", + "navigation_bar.moderation": "审核", "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.opened_in_classic_interface": "嘟文、账户和其他特定页面默认在经典网页界面中打开。", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", - "navigation_bar.preferences": "首选项", + "navigation_bar.preferences": "偏好设置", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.search": "搜索", "navigation_bar.security": "安全", - "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", + "not_signed_in_indicator.not_signed_in": "你需要登录才能访问此资源。", "notification.admin.report": "{name} 举报了 {target}", "notification.admin.report_account": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}},原因为 {category}", "notification.admin.report_account_other": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}}", @@ -528,10 +528,10 @@ "notification.admin.sign_up": "{name} 注册了", "notification.admin.sign_up.name_and_others": "{name} 和 {count, plural, other {另外 # 人}}注册了", "notification.annual_report.message": "你的 {year} #Wrapstodon 年度回顾来啦!快来看看这一年你在 Mastodon 上的精彩瞬间!", - "notification.annual_report.view": "查看 #Wrapstodon", + "notification.annual_report.view": "查看 #Wrapstodon 年度回顾", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.favourite.name_and_others_with_link": "{name} 和 {count, plural, other {另外 # 人}} 喜欢了你的嘟文", - "notification.follow": "{name} 开始关注你", + "notification.follow": "{name} 关注了你", "notification.follow.name_and_others": "{name} 和 {count, plural, other {另外 # 人}} 关注了你", "notification.follow_request": "{name} 向你发送了关注请求", "notification.follow_request.name_and_others": "{name} 和 {count, plural, other {另外 # 人}} 向你发送了关注请求", @@ -569,7 +569,7 @@ "notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {拒绝请求}}", "notification_requests.confirm_dismiss_multiple.message": "你将要拒绝 {count, plural, other {# 个通知请求}}。你将无法再轻易访问{count, plural, other {它们}}。是否继续?", "notification_requests.confirm_dismiss_multiple.title": "是否拒绝通知请求?", - "notification_requests.dismiss": "拒绝", + "notification_requests.dismiss": "忽略", "notification_requests.dismiss_multiple": "{count, plural, other {拒绝 # 个请求…}}", "notification_requests.edit_selection": "编辑", "notification_requests.exit_selection": "完成", @@ -597,7 +597,7 @@ "notifications.column_settings.push": "推送通知", "notifications.column_settings.reblog": "转嘟:", "notifications.column_settings.show": "在通知栏显示", - "notifications.column_settings.sound": "播放音效", + "notifications.column_settings.sound": "播放提示音", "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", @@ -630,7 +630,7 @@ "notifications.policy.filter_not_following_hint": "直到你手动批准", "notifications.policy.filter_not_following_title": "你没有关注的人", "notifications.policy.filter_private_mentions_hint": "过滤通知,除非通知是在回复提及你自己的内容,或发送者是你关注的人", - "notifications.policy.filter_private_mentions_title": "不请自来的提及", + "notifications.policy.filter_private_mentions_title": "不请自来的私下提及", "notifications.policy.title": "管理来自 … 的通知", "notifications_permission_banner.enable": "启用桌面通知", "notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。你可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。", @@ -640,9 +640,9 @@ "onboarding.actions.go_to_explore": "看看有什么新鲜事", "onboarding.actions.go_to_home": "转到主页动态", "onboarding.compose.template": "你好 #Mastodon!", - "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。您可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", + "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。你可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", "onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!", - "onboarding.follows.title": "定制您的主页动态", + "onboarding.follows.title": "定制你的主页动态", "onboarding.profile.discoverable": "让我的资料卡可被他人发现", "onboarding.profile.discoverable_hint": "当你选择在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果和热门中,你的账户可能会被推荐给与你兴趣相似的人。", "onboarding.profile.display_name": "昵称", @@ -653,28 +653,28 @@ "onboarding.profile.save_and_continue": "保存并继续", "onboarding.profile.title": "设置个人资料", "onboarding.profile.upload_avatar": "上传头像", - "onboarding.profile.upload_header": "上传资料卡头图", + "onboarding.profile.upload_header": "上传个人资料背景横幅", "onboarding.share.lead": "让人们知道他们如何在Mastodon找到你!", "onboarding.share.message": "我是来自 #Mastodon 的 {username}!请在 {url} 关注我。", "onboarding.share.next_steps": "可能的下一步:", "onboarding.share.title": "分享你的个人资料", - "onboarding.start.lead": "你的新 Mastodon 帐户已准备好。下面是如何最大限度地利用它:", + "onboarding.start.lead": "你的新 Mastodon 账户已准备好。下面是如何最大限度地利用它:", "onboarding.start.skip": "想要在前面跳过吗?", "onboarding.start.title": "你已经成功了!", "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.", - "onboarding.steps.follow_people.title": "定制您的主页动态", + "onboarding.steps.follow_people.title": "定制你的主页动态", "onboarding.steps.publish_status.body": "向世界问声好吧。", "onboarding.steps.publish_status.title": "发布你的第一篇嘟文", "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "自定义你的个人资料", - "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", + "onboarding.steps.share_profile.body": "让你的朋友知道怎样在 Mastodon 找到你", "onboarding.steps.share_profile.title": "分享你的个人资料", "onboarding.tips.2fa": "你知道吗?你可以在账户设置中配置双因素认证来保护账户安全。可以使用你选择的任何 TOTP 应用,无需电话号码!", "onboarding.tips.accounts_from_other_servers": "你知道吗? 既然Mastodon是去中心化的,你所看到的一些账户将被托管在你以外的服务器上。 但你可以无缝地与他们交互!他们的服务器在他们的用户名的后半部分!", - "onboarding.tips.migration": "您知道吗? 如果你觉得你喜欢 {domain} 不是您未来的一个伟大的服务器选择。 您可以移动到另一个 Mastodon 服务器而不失去您的关注者。 您甚至可以主持您自己的服务器!", - "onboarding.tips.verification": "您知道吗? 您可以通过在自己的网站上放置一个链接到您的 Mastodon 个人资料并将网站添加到您的个人资料来验证您的帐户。 无需收费或文书工作!", + "onboarding.tips.migration": "你知道吗?如果你将来觉得 {domain} 不再符合您的需求,你可以在保留现有关注者的情况下迁移至其他 Mastodon 服务器。你甚至可以部署自己的服务器!", + "onboarding.tips.verification": "你知道吗? 你可以通过在自己的网站上放置一个链接到你的 Mastodon 个人资料并将网站添加到你的个人资料来验证你的账户。 无需收费或文书工作!", "password_confirmation.exceeds_maxlength": "密码确认超过最大密码长度", - "password_confirmation.mismatching": "密码确认不匹配", + "password_confirmation.mismatching": "确认密码与密码不一致。", "picture_in_picture.restore": "恢复", "poll.closed": "已关闭", "poll.refresh": "刷新", @@ -687,9 +687,9 @@ "poll_button.add_poll": "发起投票", "poll_button.remove_poll": "移除投票", "privacy.change": "设置嘟文的可见范围", - "privacy.direct.long": "帖子中提到的每个人", + "privacy.direct.long": "嘟文中提到的每个人", "privacy.direct.short": "特定的人", - "privacy.private.long": "仅限您的关注者", + "privacy.private.long": "仅限你的关注者", "privacy.private.short": "关注者", "privacy.public.long": "所有 Mastodon 内外的人", "privacy.public.short": "公开", @@ -745,12 +745,12 @@ "report.reasons.violation": "违反服务器规则", "report.reasons.violation_description": "你清楚它违反了特定的规则", "report.rules.subtitle": "选择所有适用选项", - "report.rules.title": "哪些规则被违反了?", + "report.rules.title": "违反了哪些规则?", "report.statuses.subtitle": "选择所有适用选项", "report.statuses.title": "是否有任何嘟文可以支持这一报告?", "report.submit": "提交", "report.target": "举报 {target}", - "report.thanks.take_action": "以下是您控制您在 Mastodon 上能看到哪些内容的选项:", + "report.thanks.take_action": "以下是你控制你在 Mastodon 上能看到哪些内容的选项:", "report.thanks.take_action_actionable": "在我们审阅这个问题时,你可以对 @{name} 采取行动", "report.thanks.title": "不想看到这个内容?", "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", @@ -780,7 +780,7 @@ "search_popout.options": "搜索选项", "search_popout.quick_actions": "快捷操作", "search_popout.recent": "最近搜索", - "search_popout.specific_date": "指定日期", + "search_popout.specific_date": "具体日期", "search_popout.user": "用户", "search_results.accounts": "用户", "search_results.all": "全部", @@ -789,7 +789,7 @@ "search_results.see_all": "查看全部", "search_results.statuses": "嘟文", "search_results.title": "搜索 {q}", - "server_banner.about_active_users": "过去 30 天内使用此服务器的人(每月活跃用户)", + "server_banner.about_active_users": "过去 30 天内使用此服务器的人(月活跃用户)", "server_banner.active_users": "活跃用户", "server_banner.administered_by": "本站管理员:", "server_banner.is_one_of_many": "{domain} 是可用于参与联邦宇宙的众多独立 Mastodon 服务器之一。", @@ -814,7 +814,7 @@ "status.direct_indicator": "私下提及", "status.edit": "编辑", "status.edited": "最后编辑于 {date}", - "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", + "status.edited_x_times": "共编辑 {count, plural, other {{count} 次}}", "status.embed": "获取嵌入代码", "status.favourite": "喜欢", "status.favourites": "{count, plural, other {次喜欢}}", @@ -834,7 +834,7 @@ "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", - "status.reblog_private": "转嘟(可见者不变)", + "status.reblog_private": "以相同可见性转嘟", "status.reblogged_by": "{name} 转嘟了", "status.reblogs": "{count, plural, other {次转嘟}}", "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", @@ -856,7 +856,7 @@ "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", - "subscribed_languages.lead": "更改此选择后,仅选定语言的嘟文会出现在您的主页和列表时间轴上。选择「无」将接收所有语言的嘟文。", + "subscribed_languages.lead": "更改此选择后,仅选定语言的嘟文会出现在你的主页和列表时间轴上。选择「无」将接收所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", "tabs_bar.home": "主页", @@ -886,7 +886,7 @@ "upload_form.edit": "编辑", "upload_form.thumbnail": "更改缩略图", "upload_form.video_description": "为听障人士和视障人士添加文字描述", - "upload_modal.analyzing_picture": "分析图片…", + "upload_modal.analyzing_picture": "正在分析图片…", "upload_modal.apply": "应用", "upload_modal.applying": "正在应用…", "upload_modal.choose_image": "选择图像", @@ -908,5 +908,5 @@ "video.mute": "静音", "video.pause": "暂停", "video.play": "播放", - "video.unmute": "解除禁音" + "video.unmute": "取消静音" } diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index a4edf294a3..f620158361 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -49,16 +49,16 @@ zh-CN: blocked: 使用了被封禁的电子邮件提供商 unreachable: 似乎不存在 role_id: - elevated: 不能高于您当前的身份 + elevated: 不能高于你现在的身份 user_role: attributes: permissions_as_keys: dangerous: 包含对基本角色不安全的权限 - elevated: 不能包含您当前身份未有的权限 - own_role: 无法以您当前的身份更改 + elevated: 不能包含你当前身份未有的权限 + own_role: 无权以你当前的身份更改 position: - elevated: 不能高于您当前的角色 - own_role: 无法以您当前的身份更改 + elevated: 不能高于你当前的角色 + own_role: 无权以你当前的身份更改 webhook: attributes: events: diff --git a/config/locales/an.yml b/config/locales/an.yml index 43f8d358cc..f941651438 100644 --- a/config/locales/an.yml +++ b/config/locales/an.yml @@ -723,7 +723,6 @@ an: original_status: Publicación orichinal reblogs: Impulsos status_changed: Publicación cambiada - title: Estau d'as cuentas - @%{name} trending: En tendencia visibility: Visibilidat with_media: Con multimedia diff --git a/config/locales/ar.yml b/config/locales/ar.yml index bbc481a137..832f60795f 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -847,7 +847,6 @@ ar: original_status: المنشور الأصلي reblogs: المعاد تدوينها status_changed: عُدّل المنشور - title: منشورات الحساب - @%{name} trending: المتداولة visibility: مدى الظهور with_media: تحتوي على وسائط diff --git a/config/locales/be.yml b/config/locales/be.yml index c59233eb8b..c97547b8b9 100644 --- a/config/locales/be.yml +++ b/config/locales/be.yml @@ -856,7 +856,6 @@ be: original_status: Зыходны допіс reblogs: Рэпосты status_changed: Допіс зменены - title: Допісы уліковага запісу - @%{name} trending: Папулярныя visibility: Бачнасць with_media: З медыя diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 2c5edf0b13..5688a44f91 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -807,7 +807,6 @@ bg: original_status: Първообразна публикация reblogs: Блогване пак status_changed: Публикацията променена - title: Публикации на акаунта - @%{name} trending: Изгряващи visibility: Видимост with_media: С мултимедия diff --git a/config/locales/br.yml b/config/locales/br.yml index 098b20934f..fbe91fcbd7 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -263,7 +263,7 @@ br: original_status: Toud orin reblogs: Skignadennoù status_changed: Toud kemmet - title: Toudoù ar gont - @%{name} + status_title: Embannadenn gant @%{name} visibility: Gwelusted with_media: Gant mediaoù strikes: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 970fd99fff..b1af2d95d4 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -841,7 +841,6 @@ ca: original_status: Publicació original reblogs: Impulsos status_changed: Publicació canviada - title: Estats del compte - @%{name} trending: Tendència visibility: Visibilitat with_media: Amb contingut multimèdia diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml index 6e1b11379c..cfee624e36 100644 --- a/config/locales/ckb.yml +++ b/config/locales/ckb.yml @@ -520,7 +520,6 @@ ckb: media: title: میدیا no_status_selected: هیچ دۆخیک نەگۆڕاوە وەک ئەوەی هیچ بارێک دەستنیشان نەکراوە - title: دۆخی ئەژمێر - @%{name} with_media: بە میدیا tags: review: پێداچوونەوەی دۆخ diff --git a/config/locales/co.yml b/config/locales/co.yml index b81427e833..39d9e9157e 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -459,7 +459,6 @@ co: media: title: Media no_status_selected: I statuti ùn sò micca stati mudificati perchè manc'unu era selezziunatu - title: Statuti di u contu - @%{name} with_media: Cù media system_checks: rules_check: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index f5f7f4d731..19a6372224 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -826,7 +826,6 @@ cs: original_status: Původní příspěvek reblogs: Boosty status_changed: Příspěvek změněn - title: Příspěvky účtu - @%{name} trending: Populární visibility: Viditelnost with_media: S médii diff --git a/config/locales/cy.yml b/config/locales/cy.yml index f479f0f0a0..0daa793f97 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -897,7 +897,6 @@ cy: original_status: Postiad gwreiddiol reblogs: Ailflogiadau status_changed: Postiad wedi'i newid - title: Postiadau cyfrif - @%{name} trending: Yn trendio visibility: Gwelededd with_media: Gyda chyfryngau diff --git a/config/locales/da.yml b/config/locales/da.yml index e157af9cc2..3a82278b93 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -826,8 +826,10 @@ da: back_to_account: Retur til kontoside back_to_report: Retur til anmeldelsesside batch: + add_to_report: 'Føj til rapporten #%{id}' remove_from_report: Fjern fra anmeldelse report: Anmeldelse + contents: Indhold deleted: Slettet favourites: Favoritter history: Versionshistorik @@ -836,13 +838,17 @@ da: media: title: Medier metadata: Metadata + no_history: Dette indlæg er ikke blevet redigeret no_status_selected: Ingen indlæg ændret (ingen valgt) open: Åbn indlæg original_status: Oprindeligt indlæg reblogs: Genblogninger + replied_to_html: Besvarede %{acct_link} status_changed: Indlæg ændret + status_title: Indlæg fra @%{name} title: Kontoindlæg - @%{name} trending: Populære + view_publicly: Vis offentligt visibility: Synlighed with_media: Med medier strikes: diff --git a/config/locales/de.yml b/config/locales/de.yml index e3ee03264e..26ccc8f3ee 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -427,9 +427,9 @@ de: not_permitted: Du bist nicht berechtigt, diese Aktion durchzuführen obfuscate: Domain-Name verschleiern obfuscate_hint: Den Domain-Namen öffentlich nur teilweise bekannt geben, sofern die Liste der Domain-Beschränkungen aktiviert ist - private_comment: Interne bzw. nicht-öffentliche Notiz + private_comment: Nicht-öffentliche Notiz private_comment_hint: Kommentar zu dieser Domain-Beschränkung für die interne Nutzung durch die Moderator*innen. - public_comment: Öffentliche Notiz + public_comment: Öffentliche Begründung public_comment_hint: Öffentlicher Hinweis zu dieser Domain-Beschränkung, sofern das Veröffentlichen von Sperrlisten grundsätzlich aktiviert ist. reject_media: Mediendateien ablehnen reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant @@ -502,7 +502,7 @@ de: by_domain: Domain confirm_purge: Möchtest du die Daten von dieser Domain wirklich für immer löschen? content_policies: - comment: Interne Notiz + comment: Nicht-öffentliche Notiz description_html: Du kannst Inhaltsrichtlinien definieren, die auf alle Konten dieser Domain und einer ihrer Subdomains angewendet werden. limited_federation_mode_description_html: Du kannst auswählen, ob du eine Föderation mit dieser Domain erlaubst. policies: @@ -826,8 +826,10 @@ de: back_to_account: Zurück zum Konto back_to_report: Zurück zur Seite mit den Meldungen batch: + add_to_report: Der Meldung Nr. %{id} hinzufügen remove_from_report: Von der Meldung entfernen report: Meldung + contents: Inhalte deleted: Gelöscht favourites: Favoriten history: Versionsverlauf @@ -836,13 +838,17 @@ de: media: title: Medien metadata: Metadaten + no_history: Der Beitrag wurde nicht bearbeitet no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden open: Beitrag öffnen original_status: Ursprünglicher Beitrag reblogs: Geteilte Beiträge + replied_to_html: Antwortete %{acct_link} status_changed: Beitrag bearbeitet - title: Beiträge des Kontos - @%{name} + status_title: Beitrag von @%{name} + title: Beiträge des Kontos – @%{name} trending: Trends + view_publicly: Öffentlich anzeigen visibility: Sichtbarkeit with_media: Mit Medien strikes: diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml index 86e78c1b18..1b5f364d08 100644 --- a/config/locales/devise.zh-CN.yml +++ b/config/locales/devise.zh-CN.yml @@ -9,7 +9,7 @@ zh-CN: already_authenticated: 你已登录。 inactive: 你还没有激活账户。 invalid: "%{authentication_keys} 无效或密码错误。" - last_attempt: 你只有最后一次尝试机会,若未通过,帐号将被锁定。 + last_attempt: 你只有最后一次尝试机会,若未通过,账号将被锁定。 locked: 你的账户已被锁定。 not_found_in_database: "%{authentication_keys}或密码错误。" omniauth_user_creation_failure: 为此身份创建账户时出错。 @@ -33,7 +33,7 @@ zh-CN: title: 新邮箱地址 password_change: explanation: 你的账户密码已更改。 - extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系服务器的管理员获取帮助。 + extra: 如果你并没有申请更改密码,那似乎有人已经入侵你的账户。请立即更改你的密码;如果你已经无法访问你的账户,请联系服务器的管理员获取帮助。 subject: Mastodon:密码已被更改 title: 密码已被重置 reconfirmation_instructions: @@ -66,7 +66,7 @@ zh-CN: subject: Mastodon:账户解锁信息 webauthn_credential: added: - explanation: 以下安全密钥已添加到你的帐户 + explanation: 以下安全密钥已添加到你的账户 subject: Mastodon:新的安全密钥 title: 已添加一个新的安全密钥 deleted: diff --git a/config/locales/doorkeeper.ia.yml b/config/locales/doorkeeper.ia.yml index 6bf5e38506..efde9be9c0 100644 --- a/config/locales/doorkeeper.ia.yml +++ b/config/locales/doorkeeper.ia.yml @@ -60,6 +60,7 @@ ia: error: title: Un error ha occurrite new: + prompt_html: "%{client_name} vole haber le permission de acceder a tu conto. Solmente approba iste requesta si tu recognosce e confide in iste fonte." review_permissions: Revider permissiones title: Autorisation necessari show: @@ -82,6 +83,7 @@ ia: access_denied: Le proprietario del ressource o servitor de autorisation ha refusate le requesta. credential_flow_not_configured: Le processo de credentiales de contrasigno del proprietario del ressource ha fallite perque Doorkeeper.configure.resource_owner_from_credentials non es configurate. invalid_client: Le authentication del cliente ha fallite perque le cliente es incognite, necun authentication de cliente es includite, o le methodo de authentication non es supportate. + invalid_code_challenge_method: Le methodo de defia de codice debe esser S256. Le methodo simple (plain) non es supportate. invalid_grant: Le concession de autorisation fornite es invalide, expirate, revocate, non corresponde al URI de redirection usate in le requesta de autorisation, o ha essite emittite a un altere cliente. invalid_redirect_uri: Le URI de redirection includite non es valide. invalid_request: diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index 08f9885894..848b0d6b6c 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -60,7 +60,7 @@ zh-CN: error: title: 发生错误 new: - prompt_html: "%{client_name} 请求获得访问您账户的权限。 请在确保自己了解并信任此来源后再批准该请求。" + prompt_html: "%{client_name} 请求获得访问你账户的权限。 请在确保自己了解并信任此来源后再批准该请求。" review_permissions: 检查权限 title: 需要授权 show: @@ -85,7 +85,7 @@ zh-CN: invalid_client: 由于应用信息未知、未提交认证信息或使用了不支持的认证方式,认证失败 invalid_code_challenge_method: 代码验证方法必须是 S256,不支持明文。 invalid_grant: 授权方式无效、过期或已被撤销、与授权请求中的回调地址不一致,或使用了其他应用的回调地址 - invalid_redirect_uri: 无效的登录回调地址 + invalid_redirect_uri: 登录回调地址无效。 invalid_request: missing_param: 缺少必需的参数:%{value} request_not_authorized: 请求需要被授权。授权请求所需的参数缺失或无效。 @@ -123,14 +123,14 @@ zh-CN: admin/accounts: 账号管理 admin/all: 所有管理功能 admin/reports: 举报管理 - all: 完全访问您的Mastodon账户 + all: 完全访问你的Mastodon账户 blocks: 屏蔽 bookmarks: 书签 conversations: 会话 crypto: 端到端加密 favourites: 喜欢 filters: 过滤器 - follow: 关注者,隐藏与屏蔽 + follow: 关注,隐藏与屏蔽 follows: 关注 lists: 列表 media: 媒体文件 @@ -163,7 +163,7 @@ zh-CN: admin:write:domain_allows: 在域上执行管理操作 admin:write:domain_blocks: 在域块上执行管理操作 admin:write:email_domain_blocks: 对已屏蔽邮箱域名执行管理操作 - admin:write:ip_blocks: 在 IP 块上执行管理操作 + admin:write:ip_blocks: 针对 IP 段执行管理操作 admin:write:reports: 对举报执行管理操作 crypto: 使用端到端加密 follow: 关注或屏蔽用户 diff --git a/config/locales/el.yml b/config/locales/el.yml index 26b0ec00a2..98ef5f18b7 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -817,7 +817,6 @@ el: original_status: Αρχική ανάρτηση reblogs: Αναδημοσιεύσεις status_changed: Η ανάρτηση άλλαξε - title: Καταστάσεις λογαριασμού - @%{name} trending: Τάσεις visibility: Ορατότητα with_media: Με πολυμέσα diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index e22ed62051..76a16aa9db 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -832,7 +832,6 @@ en-GB: original_status: Original post reblogs: Reblogs status_changed: Post changed - title: Account posts - @%{name} trending: Trending visibility: Visibility with_media: With media diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 194b2c17b8..120df142b7 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -830,7 +830,6 @@ eo: original_status: Originala afiŝo reblogs: Reblogaĵoj status_changed: Afiŝo ŝanĝiĝis - title: Afiŝoj de la konto - @%{name} trending: Popularaĵoj visibility: Videbleco with_media: Kun aŭdovidaĵoj diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 6dc9d99f37..09163c2e4a 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -187,6 +187,7 @@ es-AR: create_domain_block: Crear bloqueo de dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla de dirección IP + create_relay: Crear Relé create_unavailable_domain: Crear dominio no disponible create_user_role: Crear rol demote_user: Descender usuario @@ -198,14 +199,17 @@ es-AR: destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_instance: Purgar dominio destroy_ip_block: Eliminar regla de dirección IP + destroy_relay: Eliminar Relé destroy_status: Eliminar mensaje destroy_unavailable_domain: Eliminar dominio no disponible destroy_user_role: Destruir rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar emoji personalizado + disable_relay: Desactivar Relé disable_sign_in_token_auth_user: Deshabilitar autenticación de token por correo electrónico para el usuario disable_user: Deshabilitar usuario enable_custom_emoji: Habilitar emoji personalizado + enable_relay: Activar Relé enable_sign_in_token_auth_user: Habilitar autenticación de token por correo electrónico para el usuario enable_user: Habilitar usuario memorialize_account: Convertir en cuenta conmemorativa @@ -247,6 +251,7 @@ es-AR: create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó la regla para la dirección IP %{target}" + create_relay_html: "%{name} creó un relé %{target}" create_unavailable_domain_html: "%{name} detuvo la entrega al dominio %{target}" create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} bajó de nivel al usuario %{target}" @@ -258,14 +263,17 @@ es-AR: destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó la regla para la dirección IP %{target}" + destroy_relay_html: "%{name} eliminó el relé %{target}" destroy_status_html: "%{name} eliminó el mensaje de %{target}" destroy_unavailable_domain_html: "%{name} reanudó la entrega al dominio %{target}" destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} deshabilitó el emoji %{target}" + disable_relay_html: "%{name} desactivó el relé %{target}" disable_sign_in_token_auth_user_html: "%{name} deshabilitó la autenticación de token por correo electrónico para %{target}" disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" enable_custom_emoji_html: "%{name} habilitó el emoji %{target}" + enable_relay_html: "%{name} activó el relé %{target}" enable_sign_in_token_auth_user_html: "%{name} habilitó la autenticación de token por correo electrónico para %{target}" enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una cuenta conmemorativa" @@ -818,8 +826,10 @@ es-AR: back_to_account: Volver a la página de la cuenta back_to_report: Volver a la página de la denuncia batch: + add_to_report: 'Añadir al informe #%{id}' remove_from_report: Quitar de la denuncia report: Denunciar + contents: Contenidos deleted: Eliminado favourites: Favoritos history: Historial de versiones @@ -828,13 +838,17 @@ es-AR: media: title: Medios metadata: Metadatos + no_history: Esta publicación no ha sido editada no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado open: Abrir mensaje original_status: Mensaje original reblogs: Adhesiones + replied_to_html: Respondió a %{acct_link} status_changed: Mensaje cambiado - title: Mensajes de la cuenta - @%{name} + status_title: Publicación de @%{name} + title: Publicaciones de la cuenta - @%{name} trending: En tendencia + view_publicly: Ver públicamente visibility: Visibilidad with_media: Con medios strikes: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 7e6570f068..53557c091a 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -187,6 +187,7 @@ es-MX: create_domain_block: Crear Bloqueo de Dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla IP + create_relay: Crear Relé create_unavailable_domain: Crear Dominio No Disponible create_user_role: Crear rol demote_user: Degradar Usuario @@ -198,14 +199,17 @@ es-MX: destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_instance: Purgar dominio destroy_ip_block: Eliminar regla IP + destroy_relay: Eliminar Relé destroy_status: Eliminar Estado destroy_unavailable_domain: Eliminar Dominio No Disponible destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado + disable_relay: Desactivar Relé disable_sign_in_token_auth_user: Deshabilitar la autenticación por token de correo electrónico para el usuario disable_user: Deshabilitar Usuario enable_custom_emoji: Habilitar Emoji Personalizado + enable_relay: Activar Relé enable_sign_in_token_auth_user: Habilitar la autenticación por token de correo electrónico para el usuario enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa @@ -247,6 +251,7 @@ es-MX: create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" + create_relay_html: "%{name} creó un relé %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" @@ -258,14 +263,17 @@ es-MX: destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" + destroy_relay_html: "%{name} eliminó el relé %{target}" destroy_status_html: "%{name} eliminó el estado por %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" + disable_relay_html: "%{name} desactivó el relé %{target}" disable_sign_in_token_auth_user_html: "%{name} desactivó la autenticación por token de correo electrónico para %{target}" disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" enable_custom_emoji_html: "%{name} activó el emoji %{target}" + enable_relay_html: "%{name} activó el relé %{target}" enable_sign_in_token_auth_user_html: "%{name} activó autenticación por token de correo electrónico para %{target}" enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam" @@ -818,8 +826,10 @@ es-MX: back_to_account: Volver a la cuenta back_to_report: Volver a la página de reporte batch: + add_to_report: 'Añadir al informe #%{id}' remove_from_report: Eliminar del reporte report: Reportar + contents: Contenidos deleted: Eliminado favourites: Favoritos history: Historial de versiones @@ -828,13 +838,17 @@ es-MX: media: title: Multimedia metadata: Metadatos + no_history: Esta publicación no ha sido editada no_status_selected: No se cambió ningún estado al no seleccionar ninguno open: Abrir publicación original_status: Publicación original reblogs: Impulsos + replied_to_html: Respondió a %{acct_link} status_changed: Publicación cambiada - title: Estado de las cuentas - @%{name} + status_title: Publicación de @%{name} + title: Publicaciones de la cuenta - @%{name} trending: En tendencia + view_publicly: Ver públicamente visibility: Visibilidad with_media: Con multimedia strikes: diff --git a/config/locales/es.yml b/config/locales/es.yml index 32abd9420d..22123e4309 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -57,7 +57,7 @@ es: confirming: Confirmando custom: Personalizado delete: Eliminar datos - deleted: Borrado + deleted: Eliminado demote: Degradar destroyed_msg: Los datos de %{username} están ahora en cola para ser eliminados inminentemente disable: Deshabilitar @@ -116,7 +116,7 @@ es: protocol: Protocolo public: Público push_subscription_expires: Expiración de la suscripción PuSH - redownload: Refrescar avatar + redownload: Refrescar perfil redownloaded_msg: Se actualizó correctamente el perfil de %{username} desde el origen reject: Rechazar rejected_msg: La solicitud de registro de %{username} ha sido rechazada con éxito @@ -187,6 +187,7 @@ es: create_domain_block: Crear Bloqueo de Dominio create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico create_ip_block: Crear regla IP + create_relay: Crear Relé create_unavailable_domain: Crear Dominio No Disponible create_user_role: Crear Rol demote_user: Degradar Usuario @@ -198,14 +199,17 @@ es: destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regla IP + destroy_relay: Eliminar Relé destroy_status: Eliminar Publicación destroy_unavailable_domain: Eliminar Dominio No Disponible destroy_user_role: Destruir Rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar Emoji Personalizado + disable_relay: Desactivar Relé disable_sign_in_token_auth_user: Deshabilitar la Autenticación por Token de Correo Electrónico para el Usuario disable_user: Deshabilitar Usuario enable_custom_emoji: Habilitar Emoji Personalizado + enable_relay: Activar Relé enable_sign_in_token_auth_user: Habilitar la Autenticación por Token de Correo Electrónico para el Usuario enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa @@ -247,6 +251,7 @@ es: create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó una regla para la IP %{target}" + create_relay_html: "%{name} creó un relé %{target}" create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}" create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} degradó al usuario %{target}" @@ -258,14 +263,17 @@ es: destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}" destroy_instance_html: "%{name} purgó el dominio %{target}" destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}" + destroy_relay_html: "%{name} eliminó el relé %{target}" destroy_status_html: "%{name} eliminó la publicación de %{target}" destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}" destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} desactivó el emoji %{target}" + disable_relay_html: "%{name} desactivó el relé %{target}" disable_sign_in_token_auth_user_html: "%{name} ha deshabilitado la autenticación por token de correo electrónico para %{target}" disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" enable_custom_emoji_html: "%{name} activó el emoji %{target}" + enable_relay_html: "%{name} activó el relé %{target}" enable_sign_in_token_auth_user_html: "%{name} ha habilitado la autenticación por token de correo electrónico para %{target}" enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam" @@ -566,7 +574,7 @@ es: '94670856': 3 años new: title: Crear nueva regla IP - no_ip_block_selected: No se han cambiado reglas IP ya que no se ha seleccionado ninguna + no_ip_block_selected: No se han cambiado reglas IP, ya que no se ha seleccionado ninguna title: Reglas IP relationships: title: Relaciones de %{acct} @@ -818,8 +826,10 @@ es: back_to_account: Volver a la cuenta back_to_report: Volver a la página del reporte batch: + add_to_report: 'Añadir al informe #%{id}' remove_from_report: Eliminar del reporte report: Reporte + contents: Contenidos deleted: Eliminado favourites: Favoritos history: Historial de versiones @@ -828,13 +838,17 @@ es: media: title: Multimedia metadata: Metadatos + no_history: Esta publicación no ha sido editada no_status_selected: No se cambió ninguna publicación al no seleccionar ninguna open: Abrir publicación original_status: Publicación original reblogs: Impulsos + replied_to_html: Respondió a %{acct_link} status_changed: Publicación cambiada + status_title: Publicación de @%{name} title: Publicaciones de la cuenta - @%{name} trending: En tendencia + view_publicly: Ver públicamente visibility: Visibilidad with_media: Con multimedia strikes: @@ -910,7 +924,7 @@ es: review: Estado de revisión search: Buscar title: Etiquetas - updated_msg: Hashtags actualizados exitosamente + updated_msg: La configuración de etiquetas se actualizó correctamente title: Administración trends: allow: Permitir @@ -1109,7 +1123,7 @@ es: didnt_get_confirmation: "¿No recibiste un enlace de confirmación?" dont_have_your_security_key: "¿No tienes tu clave de seguridad?" forgot_password: "¿Olvidaste tu contraseña?" - invalid_reset_password_token: El token de reinicio de contraseña es inválido o expiró. Por favor pide uno nuevo. + invalid_reset_password_token: El token de restablecimiento de contraseña no es válido o ha expirado. Por favor solicita uno nuevo. link_to_otp: Introduce un código de dos factores desde tu teléfono o un código de recuperación link_to_webauth: Utilice su dispositivo de clave de seguridad log_in_with: Iniciar sesión con @@ -1258,7 +1272,7 @@ es: '422': content: Verificación de seguridad fallida. ¿Estás bloqueando algunas cookies? title: Verificación de seguridad fallida - '429': Asfixiado + '429': Demasiadas solicitudes '500': content: Lo sentimos, algo ha funcionado mal por nuestra parte. title: Esta página no es correcta @@ -1446,7 +1460,7 @@ es: '604800': 1 semana '86400': 1 día expires_in_prompt: Nunca - generate: Generar + generate: Generar enlace de invitación invalid: Esta invitación no es válida invited_by: 'Fuiste invitado por:' max_uses: @@ -1489,12 +1503,12 @@ es: title: Cancelar suscripición media_attachments: validations: - images_and_video: No se puede adjuntar un video a unapublicación que ya contenga imágenes + images_and_video: No se puede adjuntar un video a una publicación que ya contenga imágenes not_found: Archivos multimedia %{ids} no encontrados, o ya se encuentran adjuntos a otra publicación not_ready: No se pueden adjuntar archivos que no se han terminado de procesar. ¡Inténtalo de nuevo en un momento! too_many: No se pueden adjuntar más de 4 archivos migrations: - acct: username@domain de la nueva cuenta + acct: Movido a cancel: Cancelar redireccionamiento cancel_explanation: Al cancelar el redireccionamiento se reactivará tu cuenta actual, pero no recuperarás los seguidores que hayan sido trasladados a la otra cuenta. cancelled_msg: El redireccionamiento se ha cancelado correctamente. @@ -1729,7 +1743,7 @@ es: migrate: Migración de cuenta notifications: Notificaciones por correo electrónico preferences: Preferencias - profile: Perfil + profile: Perfil público relationships: Siguiendo y seguidores severed_relationships: Relaciones cortadas statuses_cleanup: Eliminación automática de publicaciones @@ -1773,11 +1787,11 @@ es: direct: Las publicaciones que son visibles solo para los usuarios mencionados no pueden fijarse limit: Ya has fijado el número máximo de publicaciones ownership: La publicación de otra persona no puede fijarse - reblog: Un boost no puede fijarse + reblog: Una publicación impulsada no puede fijarse title: "%{name}: «%{quote}»" visibilities: direct: Directa - private: Sólo mostrar a seguidores + private: Solo seguidores private_long: Solo mostrar a tus seguidores public: Pública public_long: Todos pueden ver @@ -1826,8 +1840,8 @@ es: tags: does_not_match_previous_name: no coincide con el nombre anterior themes: - contrast: Alto contraste - default: Mastodon + contrast: Mastodon (alto contraste) + default: Mastodon (oscuro) mastodon-light: Mastodon (claro) system: Automático (usar tema del sistema) time: @@ -1847,7 +1861,7 @@ es: edit: Editar enabled: La autenticación de dos factores está activada enabled_success: Verificación de dos factores activada exitosamente - generate_recovery_codes: generar códigos de recuperación + generate_recovery_codes: Generar códigos de recuperación lost_recovery_codes: Los códigos de recuperación te permiten obtener acceso a tu cuenta si pierdes tu teléfono. Si has perdido tus códigos de recuperación, puedes regenerarlos aquí. Tus viejos códigos de recuperación se harán inválidos. methods: Métodos de autenticación de doble factor otp: Aplicación de autenticación diff --git a/config/locales/et.yml b/config/locales/et.yml index f8a4f7f69e..40db2eede0 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -833,7 +833,6 @@ et: original_status: Algne postitus reblogs: Jagamised status_changed: Muudetud postitus - title: Konto postitused - @%{name} trending: Populaarne visibility: Nähtavus with_media: Meediaga diff --git a/config/locales/eu.yml b/config/locales/eu.yml index a764e88bac..dc064ebc7b 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -793,7 +793,6 @@ eu: original_status: Jatorrizko bidalketa reblogs: Bultzadak status_changed: Bidalketa aldatuta - title: Kontuaren bidalketak - @%{name} trending: Joera visibility: Ikusgaitasuna with_media: Multimediarekin diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 38daf70d29..7cb0714c28 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -741,7 +741,6 @@ fa: original_status: فرستهٔ اصلی reblogs: تقویت‌ها status_changed: فرسته تغییر کرد - title: "@%{name} - نوشته‌های حساب" trending: پرطرفدار visibility: نمایانی with_media: دارای عکس یا ویدیو diff --git a/config/locales/fi.yml b/config/locales/fi.yml index efdfdfed04..d7755d23b8 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -826,8 +826,10 @@ fi: back_to_account: Takaisin tilin sivulle back_to_report: Takaisin raporttisivulle batch: + add_to_report: Lisää raporttiin nro %{id} remove_from_report: Poista raportista report: Raportti + contents: Sisältö deleted: Poistettu favourites: Suosikit history: Versiohistoria @@ -836,13 +838,17 @@ fi: media: title: Media metadata: Metadata + no_history: Tätä julkaisua ei ole muokattu no_status_selected: Julkaisuja ei muutettu, koska yhtään ei ollut valittuna open: Avaa julkaisu original_status: Alkuperäinen julkaisu reblogs: Edelleen jako + replied_to_html: Vastaus käyttäjälle %{acct_link} status_changed: Julkaisua muutettu - title: Tilin tilat - @%{name} + status_title: Julkaisu käyttäjältä @%{name} + title: Tilin julkaisut - @%{name} trending: Suosituttua + view_publicly: Näytä julkisesti visibility: Näkyvyys with_media: Sisältää mediaa strikes: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 8dab61c267..502c027b5d 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -826,8 +826,10 @@ fo: back_to_account: Aftur til kontusíðu back_to_report: Aftur til meldingarsíðu batch: + add_to_report: 'Legg afturat melding #%{id}' remove_from_report: Strika frá melding report: Melding + contents: Innihald deleted: Strikað favourites: Dámdir postar history: Útgávusøga @@ -836,13 +838,17 @@ fo: media: title: Miðlar metadata: Metadátur + no_history: Hesin posturin er ikki broyttur no_status_selected: Eingir postar vóru broyttir, tí eingir vóru valdir open: Lat post upp original_status: Upprunapostur reblogs: Endurbloggar + replied_to_html: Svaraði %{acct_link} status_changed: Postur broyttur - title: Postar hjá kontu - @%{name} + status_title: Postar hjá @%{name} + title: Kontupostar - @%{name} trending: Vælumtókt + view_publicly: Vís fyri øllum visibility: Sýni with_media: Við miðli strikes: diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index bb0501d0e3..9c2bf3398e 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -836,7 +836,6 @@ fr-CA: original_status: Message original reblogs: Partages status_changed: Publication modifiée - title: Messages du compte - @%{name} trending: Tendances visibility: Visibilité with_media: Avec médias diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0c35dea62a..650147eb5d 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -836,7 +836,6 @@ fr: original_status: Message original reblogs: Partages status_changed: Publication modifiée - title: Messages du compte - @%{name} trending: Tendances visibility: Visibilité with_media: Avec médias diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 8a4f519e0c..24be51d9d7 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -833,7 +833,6 @@ fy: original_status: Oarspronklik berjocht reblogs: Boosts status_changed: Berjocht wizige - title: Accountberjochten - @%{name} trending: Trending visibility: Sichtberheid with_media: Mei media diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 67461f3c2a..deb9986691 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -196,6 +196,7 @@ ga: create_domain_block: Cruthaigh Bloc Fearainn create_email_domain_block: Cruthaigh Bloc Fearainn Ríomhphoist create_ip_block: Cruthaigh riail IP + create_relay: Cruthaigh Leaschraolacháin create_unavailable_domain: Cruthaigh Fearann ​​Gan Fáil create_user_role: Cruthaigh Ról demote_user: Ísligh úsáideoir @@ -207,14 +208,17 @@ ga: destroy_email_domain_block: Scrios Bloc Fearainn Ríomhphoist destroy_instance: Fearann ​​Purge destroy_ip_block: Scrios riail IP + destroy_relay: Scrios Leaschraolacháin destroy_status: Scrios Postáil destroy_unavailable_domain: Scrios Fearann ​​Gan Fáil destroy_user_role: Scrios ról disable_2fa_user: Díchumasaigh 2FA disable_custom_emoji: Díchumasaigh Emoji Saincheaptha + disable_relay: Díchumasaigh Leaschraolacháin disable_sign_in_token_auth_user: Díchumasaigh Fíordheimhniú Comhartha Ríomhphoist don Úsáideoir disable_user: Díchumasaigh Úsáideoir enable_custom_emoji: Cumasaigh Emoji Saincheaptha + enable_relay: Cumasaigh Leaschraolacháin enable_sign_in_token_auth_user: Cumasaigh Fíordheimhniú Comhartha Ríomhphoist don Úsáideoir enable_user: Cumasaigh Úsáideoir memorialize_account: Cuntas Cuimhneacháin @@ -256,6 +260,7 @@ ga: create_domain_block_html: "%{name} fearann ​​bactha %{target}" create_email_domain_block_html: Chuir %{name} fearann ​​ríomhphoist bactha %{target} create_ip_block_html: Chruthaigh %{name} riail don IP %{target} + create_relay_html: Chruthaigh %{name} athsheoladh %{target} create_unavailable_domain_html: Chuir %{name} deireadh leis an seachadadh chuig fearann ​​%{target} create_user_role_html: Chruthaigh %{name} %{target} ról demote_user_html: "%{name} úsáideoir scriosta %{target}" @@ -267,14 +272,17 @@ ga: destroy_email_domain_block_html: "%{name} fearann ​​ríomhphoist díchoiscthe %{target}" destroy_instance_html: Glanadh %{name} fearann ​​%{target} destroy_ip_block_html: "%{name} scriosta riail le haghaidh IP %{target}" + destroy_relay_html: Scrios %{name} an athsheoladh %{target} destroy_status_html: Bhain %{name} postáil le %{target} destroy_unavailable_domain_html: D'athchrom %{name} ar an seachadadh chuig fearann ​​%{target} destroy_user_role_html: Scrios %{name} ról %{target} disable_2fa_user_html: Dhíchumasaigh %{name} riachtanas dhá fhachtóir don úsáideoir %{target} disable_custom_emoji_html: Dhíchumasaigh %{name} emoji %{target} + disable_relay_html: Dhíchumasaigh %{name} an athsheoladh %{target} disable_sign_in_token_auth_user_html: Dhíchumasaigh %{name} fíordheimhniú comhartha ríomhphoist le haghaidh %{target} disable_user_html: "%{name} logáil isteach díchumasaithe d'úsáideoir %{target}" enable_custom_emoji_html: "%{name} emoji cumasaithe %{target}" + enable_relay_html: Chuir %{name} an sealaíocht %{target} ar chumas enable_sign_in_token_auth_user_html: Chuir %{name} fíordheimhniú comhartha ríomhphoist ar chumas %{target} enable_user_html: "%{name} logáil isteach cumasaithe don úsáideoir %{target}" memorialize_account_html: Rinne %{name} cuntas %{target} a iompú ina leathanach cuimhneacháin @@ -860,8 +868,10 @@ ga: back_to_account: Ar ais go leathanach cuntais back_to_report: Ar ais go leathanach tuairisce batch: + add_to_report: 'Cuir leis an tuairisc # %{id}' remove_from_report: Bain den tuairisc report: Tuairisc + contents: Ábhar deleted: Scriosta favourites: Toghanna history: Stair leagan @@ -870,13 +880,17 @@ ga: media: title: Meáin metadata: Meiteashonraí + no_history: Níl an postáil seo curtha in eagar no_status_selected: Níor athraíodh aon phostáil mar níor roghnaíodh ceann ar bith open: Oscail postáil original_status: Bunphostáil reblogs: Athbhlaganna + replied_to_html: D'fhreagair %{acct_link} status_changed: Athraíodh postáil - title: Poist chuntais - @%{name} + status_title: Postáil le @ %{name} + title: Postálacha cuntais - @%{name} trending: Ag treochtáil + view_publicly: Féach go poiblí visibility: Infheictheacht with_media: Le meáin strikes: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 89198bd514..78f4516cfc 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -861,7 +861,6 @@ gd: original_status: Am post tùsail reblogs: Brosnachaidhean status_changed: Post air atharrachadh - title: Postaichean a’ chunntais - @%{name} trending: A’ treandadh visibility: Faicsinneachd with_media: Le meadhanan riutha diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 0f3420a7f3..feda673621 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -826,8 +826,10 @@ gl: back_to_account: Volver a páxina da conta back_to_report: Volver a denuncias batch: + add_to_report: 'Engadir á denuncia #%{id}' remove_from_report: Eliminar da denuncia report: Denuncia + contents: Contidos deleted: Eliminado favourites: Favoritas history: Historial de versións @@ -836,13 +838,17 @@ gl: media: title: Medios metadata: Metadatos + no_history: Esta publicación foi editada no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada open: Abrir publicación original_status: Publicación orixinal reblogs: Promocións + replied_to_html: Respondeu a %{acct_link} status_changed: Publicación editada + status_title: Publicación de @%{name} title: Publicacións da conta - @%{name} trending: Popular + view_publicly: Ver publicamente visibility: Visibilidade with_media: con medios strikes: diff --git a/config/locales/he.yml b/config/locales/he.yml index 59dc09799d..5243cf4768 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -193,6 +193,7 @@ he: create_domain_block: יצירת דומיין חסום create_email_domain_block: יצירת חסימת דומיין דוא"ל create_ip_block: יצירת כלל IP + create_relay: יצירת ממסר create_unavailable_domain: יצירת דומיין בלתי זמין create_user_role: יצירת תפקיד demote_user: הורדת משתמש בדרגה @@ -204,14 +205,17 @@ he: destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל destroy_instance: טיהור דומיין destroy_ip_block: מחיקת כלל IP + destroy_relay: מחיקת ממסר destroy_status: מחיקת הודעה destroy_unavailable_domain: מחיקת דומיין בלתי זמין destroy_user_role: מחיקת תפקיד disable_2fa_user: השעיית זיהוי דו-גורמי disable_custom_emoji: השעיית אמוג'י מיוחד + disable_relay: השבתת ממסר disable_sign_in_token_auth_user: השעיית אסימון הזדהות בדוא"ל של משתמש disable_user: השעיית משתמש enable_custom_emoji: הפעלת אמוג'י מיוחד + enable_relay: החייאת ממסר enable_sign_in_token_auth_user: הפעלת אסימון הזדהות בדוא"ל של משתמש enable_user: אפשור משתמש memorialize_account: הנצחת חשבון @@ -253,6 +257,7 @@ he: create_domain_block_html: "%{name} חסם/ה את הדומיין %{target}" create_email_domain_block_html: '%{name} חסם/ה את דומיין הדוא"ל %{target}' create_ip_block_html: "%{name} יצר/ה כלל עבור IP %{target}" + create_relay_html: "%{name} יצרו את הממסר %{target}" create_unavailable_domain_html: "%{name} הפסיק/ה משלוח לדומיין %{target}" create_user_role_html: "%{name} יצר את התפקיד של %{target}" demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}" @@ -264,14 +269,17 @@ he: destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}' destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}" destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}" + destroy_relay_html: "%{name} מחקו את הממסר %{target}" destroy_status_html: ההודעה של %{target} הוסרה ע"י %{name} destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}" destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}" disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}" disable_custom_emoji_html: "%{name} השבית/ה את האמוג'י %{target}" + disable_relay_html: "%{name} השביתו את הממסר %{target}" disable_sign_in_token_auth_user_html: '%{name} השבית/ה את האימות בעזרת אסימון דוא"ל עבור %{target}' disable_user_html: "%{name} חסם/ה כניסה מהמשתמש/ת %{target}" enable_custom_emoji_html: "%{name} אפשר/ה את האמוג'י %{target}" + enable_relay_html: "%{name} החיו את הממסר %{target}" enable_sign_in_token_auth_user_html: '%{name} אפשר/ה אימות בעזרת אסימון דוא"ל עבור %{target}' enable_user_html: "%{name} אפשר/ה כניסה עבור המשתמש %{target}" memorialize_account_html: "%{name} הפך/ה את חשבונו של %{target} לדף הנצחה" @@ -846,8 +854,10 @@ he: back_to_account: חזרה לדף החשבון back_to_report: חזרה לעמוד הדיווח batch: + add_to_report: להוסיף לדו"ח מספר %{id} remove_from_report: הסרה מהדיווח report: דווח + contents: תוכן deleted: מחוקים favourites: חיבובים history: היסטורית גרסאות @@ -856,13 +866,17 @@ he: media: title: מדיה metadata: נתוני-מטא + no_history: הודעה זו לא נערכה no_status_selected: לא בוצעו שינויים בהודעות שכן לא נבחרו כאלו open: פתח הודעה original_status: הודעה מקורית reblogs: שיתופים + replied_to_html: בתגובה לחשבון %{acct_link} status_changed: הודעה שונתה - title: הודעות החשבון - @%{name} + status_title: פרסום מאת @%{name} + title: פרסומי החשבון - @%{name} trending: נושאים חמים + view_publicly: צפיה בפומבי visibility: נראות with_media: עם מדיה strikes: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 56d41daf86..f23711d403 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -841,7 +841,6 @@ hu: original_status: Eredeti bejegyzés reblogs: Megosztások status_changed: A bejegyzés megváltozott - title: Fiók bejegyzései - @%{name} trending: Felkapott visibility: Láthatóság with_media: Médiával diff --git a/config/locales/hy.yml b/config/locales/hy.yml index d8cf2a97ba..3b4aaf3629 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -402,7 +402,6 @@ hy: deleted: Ջնջված է media: title: Մեդիա - title: Օգտատիրոջ գրառումները - @%{name} with_media: Մեդիայի հետ tags: review: Վերանայել գրառումը diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 1398ae51d4..54401b1c5a 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -187,6 +187,7 @@ ia: create_domain_block: Crear blocada de dominio create_email_domain_block: Crear blocada de dominio de e-mail create_ip_block: Crear un regula IP + create_relay: Crear repetitor create_unavailable_domain: Crear dominio indisponibile create_user_role: Crear un rolo demote_user: Degradar usator @@ -198,14 +199,17 @@ ia: destroy_email_domain_block: Deler blocada de dominio de e-mail destroy_instance: Purgar dominio destroy_ip_block: Deler le regula IP + destroy_relay: Deler repetitor destroy_status: Deler message destroy_unavailable_domain: Deler dominio indisponibile destroy_user_role: Destruer rolo disable_2fa_user: Disactivar A2F disable_custom_emoji: Disactivar emoji personalisate + disable_relay: Disactivar repetitor disable_sign_in_token_auth_user: Disactivar le authentication per token de e-mail pro le usator disable_user: Disactivar le usator enable_custom_emoji: Activar emoji personalisate + enable_relay: Activar repetitor enable_sign_in_token_auth_user: Activar le authentication per token de e-mail pro le usator enable_user: Activar le usator memorialize_account: Converter conto in memorial @@ -247,6 +251,7 @@ ia: create_domain_block_html: "%{name} blocava dominio %{target}" create_email_domain_block_html: "%{name} blocava le dominio de e-mail %{target}" create_ip_block_html: "%{name} creava regula pro IP %{target}" + create_relay_html: "%{name} ha create un repetitor %{target}" create_unavailable_domain_html: "%{name} stoppava livration al dominio %{target}" create_user_role_html: "%{name} creava rolo de %{target}" demote_user_html: "%{name} degradava usator %{target}" @@ -258,14 +263,17 @@ ia: destroy_email_domain_block_html: "%{name} disblocava le dominio de e-mail %{target}" destroy_instance_html: "%{name} purgava le dominio %{target}" destroy_ip_block_html: "%{name} deleva le regula pro IP %{target}" + destroy_relay_html: "%{name} ha delite le repetitor %{target}" destroy_status_html: "%{name} removeva un message de %{target}" destroy_unavailable_domain_html: "%{name} reprendeva le livration al dominio %{target}" destroy_user_role_html: "%{name} deleva le rolo %{target}" disable_2fa_user_html: "%{name} disactivava le authentication a duo factores pro le usator %{target}" disable_custom_emoji_html: "%{name} disactivava le emoji %{target}" + disable_relay_html: "%{name} ha disactivate le repetitor %{target}" disable_sign_in_token_auth_user_html: "%{name} disactivava le authentication per token de e-mail pro %{target}" disable_user_html: "%{name} disactivava le apertura de session pro le usator %{target}" enable_custom_emoji_html: "%{name} activava le emoji %{target}" + enable_relay_html: "%{name} ha activate le repetitor %{target}" enable_sign_in_token_auth_user_html: "%{name} activava le authentication per token de e-mail pro %{target}" enable_user_html: "%{name} activava le apertura de session pro le usator %{target}" memorialize_account_html: "%{name} converteva le conto de %{target} in un pagina commemorative" @@ -818,8 +826,10 @@ ia: back_to_account: Retornar al pagina del conto back_to_report: Retro al pagina de reporto batch: + add_to_report: 'Adder al reporto #%{id}' remove_from_report: Remover del reporto report: Reporto + contents: Contento deleted: Delite favourites: Favorites history: Historia de versiones @@ -828,13 +838,17 @@ ia: media: title: Multimedia metadata: Metadatos + no_history: Iste message non ha essite modificate no_status_selected: Necun message ha essite cambiate perque necun ha essite seligite open: Aperir message original_status: Message original reblogs: Republicationes + replied_to_html: Respondite a %{acct_link} status_changed: Message cambiate - title: Messages del conto - @%{name} + status_title: Message de @%{name} + title: Messages del conto – @%{name} trending: Tendentias + view_publicly: Vider publicamente visibility: Visibilitate with_media: Con multimedia strikes: @@ -1118,7 +1132,7 @@ ia: migrate_account: Migrar a un altere conto migrate_account_html: Si tu vole rediriger iste conto a un altere, tu pote configurar lo hic. or_log_in_with: O aperi session con - privacy_policy_agreement_html: Io ha legite e accepta le politica de confidentialitate + privacy_policy_agreement_html: Io ha legite e accepta le politica de confidentialitate progress: confirm: Confirmar e-mail details: Tu detalios @@ -1166,8 +1180,11 @@ ia: use_security_key: Usar clave de securitate author_attribution: example_title: Texto de exemplo + hint_html: Scribe tu articulos de novas o de blog foras de Mastodon? Controla le maniera in que tu recipe attribution quando on los condivide sur Mastodon. + instructions: 'Assecura te que iste codice appare in le HTML de tu articulo:' more_from_html: Plus de %{name} s_blog: Blog de %{name} + then_instructions: Postea, adde le nomine de dominio del publication in le campo sequente. title: Attribution de autor challenge: confirm: Continuar diff --git a/config/locales/id.yml b/config/locales/id.yml index 9c31daf420..34b690828d 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -711,7 +711,6 @@ id: original_status: Kiriman asli reblogs: Reblog status_changed: Kiriman diubah - title: Status akun - @%{name} trending: Sedang tren visibility: Visibilitas with_media: Dengan media diff --git a/config/locales/ie.yml b/config/locales/ie.yml index d7df83ef69..f006f2c8ad 100644 --- a/config/locales/ie.yml +++ b/config/locales/ie.yml @@ -791,7 +791,6 @@ ie: original_status: Original posta reblogs: Boosts status_changed: Posta modificat - title: Postas del conto - @%{name} trending: Populari visibility: Visibilitá with_media: Con medie diff --git a/config/locales/io.yml b/config/locales/io.yml index 1ff5d98bf2..83c92484ff 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -779,7 +779,6 @@ io: original_status: Originala posto reblogs: Dissemi status_changed: Posto chanjita - title: Kontoposti - @%{name} trending: Populara visibility: Videbleso with_media: Kun medii diff --git a/config/locales/is.yml b/config/locales/is.yml index 9ba29f2af0..cad01257fd 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -828,8 +828,10 @@ is: back_to_account: Fara aftur á síðu notandaaðgangsins back_to_report: Til baka á kærusíðu batch: + add_to_report: 'Bæta við skýrslu #%{id}' remove_from_report: Fjarlægja úr kæru report: Kæra + contents: Efni deleted: Eytt favourites: Eftirlæti history: Útgáfuferill @@ -838,13 +840,17 @@ is: media: title: Myndefni metadata: Lýsigögn + no_history: Færslunni hefur ekki verið breytt no_status_selected: Engum færslum var breytt þar sem engar voru valdar open: Opna færslu original_status: Upprunaleg færsla reblogs: Endurbirtingar + replied_to_html: Svaraði til %{acct_link} status_changed: Færslu breytt - title: Færslur notandaaðgangs - @%{name} + status_title: Færsla frá @%{name} + title: Færslur notanda - @%{name} trending: Vinsælt + view_publicly: Skoða opinberlega visibility: Sýnileiki with_media: Með myndefni strikes: diff --git a/config/locales/it.yml b/config/locales/it.yml index 08e224ad94..4c083fd006 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -818,8 +818,10 @@ it: back_to_account: Torna alla pagina dell'account back_to_report: Torna alla pagina del report batch: + add_to_report: 'Aggiungi alla segnalazione #%{id}' remove_from_report: Rimuovi dal report report: Rapporto + contents: Contenuti deleted: Cancellato favourites: Preferiti history: Cronologia delle versioni @@ -828,13 +830,17 @@ it: media: title: Media metadata: Metadati + no_history: Questo post non è stato modificato no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato open: Apri il post original_status: Post originale reblogs: Condivisioni + replied_to_html: Risposta a %{acct_link} status_changed: Post modificato - title: Gli status dell'account - @%{name} + status_title: Post di @%{name} + title: Post dell'account - @%{name} trending: Di tendenza + view_publicly: Visualizza pubblicamente visibility: Visibilità with_media: con media strikes: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 76152c3744..810de2b227 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -184,6 +184,7 @@ ja: create_domain_block: ドメインブロックを作成 create_email_domain_block: メールドメインブロックを作成 create_ip_block: IPルールを作成 + create_relay: リレーの追加 create_unavailable_domain: 配送できないドメインを作成 create_user_role: ロールを作成 demote_user: ユーザーを降格 @@ -195,14 +196,17 @@ ja: destroy_email_domain_block: メールドメインブロックを削除 destroy_instance: ドメインをブロックする destroy_ip_block: IPルールを削除 + destroy_relay: リレーの削除 destroy_status: 投稿を削除 destroy_unavailable_domain: 配送できないドメインを削除 destroy_user_role: ロールを削除 disable_2fa_user: 二要素認証を無効化 disable_custom_emoji: カスタム絵文字を無効化 + disable_relay: リレーの無効化 disable_sign_in_token_auth_user: ユーザのメールトークン認証を無効化 disable_user: ユーザーを無効化 enable_custom_emoji: カスタム絵文字を有効化 + enable_relay: リレーの有効化 enable_sign_in_token_auth_user: ユーザのメールトークン認証を有効化 enable_user: ユーザーを有効化 memorialize_account: 追悼アカウント化 @@ -244,6 +248,7 @@ ja: create_domain_block_html: "%{name}さんがドメイン %{target}をブロックしました" create_email_domain_block_html: "%{name} さんがメールドメイン %{target} をブロックしました" create_ip_block_html: "%{name}さんがIP %{target}のルールを作成しました" + create_relay_html: "%{name} さんがリレー %{target} を追加しました" create_unavailable_domain_html: "%{name}がドメイン %{target}への配送を停止しました" create_user_role_html: "%{name}さんがロール『%{target}』を作成しました" demote_user_html: "%{name}さんが%{target}さんを降格しました" @@ -252,17 +257,20 @@ ja: destroy_custom_emoji_html: "%{name}さんがカスタム絵文字『%{target}』を削除しました" destroy_domain_allow_html: "%{name}さんが%{target}の連合許可を外しました" destroy_domain_block_html: "%{name}さんがドメイン %{target}のブロックを外しました" - destroy_email_domain_block_html: "%{name} がメールドメイン %{target} のブロックを外しました" + destroy_email_domain_block_html: "%{name} さんがメールドメイン %{target} のブロックを外しました" destroy_instance_html: "%{name}さんがドメイン %{target}をブロックしました" destroy_ip_block_html: "%{name}さんが IP %{target}のルールを削除しました" + destroy_relay_html: "%{name} さんがリレー %{target} を削除しました" destroy_status_html: "%{name}さんが%{target}さんの投稿を削除しました" destroy_unavailable_domain_html: "%{name}がドメイン %{target}への配送を再開しました" destroy_user_role_html: "%{name}さんがロール『%{target}』を削除しました" disable_2fa_user_html: "%{name}さんが%{target}さんの二要素認証を無効化しました" disable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を無効化しました" + disable_relay_html: "%{name} さんがリレー %{target} を無効にしました" disable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を無効化しました" disable_user_html: "%{name}さんが%{target}さんのログインを無効化しました" enable_custom_emoji_html: "%{name}さんがカスタム絵文字 %{target}を有効化しました" + enable_relay_html: "%{name} さんがリレー %{target} を有効にしました" enable_sign_in_token_auth_user_html: "%{name} が %{target} のメールトークン認証を有効化しました" enable_user_html: "%{name}さんが%{target}さんのログインを有効化しました" memorialize_account_html: "%{name}さんが%{target}さんを追悼アカウントページに登録しました" @@ -804,8 +812,10 @@ ja: back_to_account: アカウントページに戻る back_to_report: 通報ページに戻る batch: + add_to_report: 'レポート #%{id} に追加' remove_from_report: 通報から削除 report: 通報 + contents: 投稿内容 deleted: 削除済み favourites: お気に入り history: 更新履歴 @@ -814,13 +824,17 @@ ja: media: title: メディア metadata: メタデータ + no_history: この投稿は編集されていません no_status_selected: 何も選択されていないため、変更されていません open: 投稿を開く original_status: オリジナルの投稿 reblogs: ブースト + replied_to_html: "%{acct_link}さんへの返信" status_changed: 投稿を変更しました + status_title: "@%{name} の投稿" title: 投稿一覧 - @%{name} trending: トレンド + view_publicly: 元の投稿を開く visibility: 公開範囲 with_media: メディアあり strikes: diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 93f7a39dc3..f3178be8d3 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -190,7 +190,6 @@ ka: media: title: მედია no_status_selected: სატუსები არ შეცვლილა, რადგან არცერთი არ მონიშნულა - title: ანგარიშის სტატუსები - @%{name} with_media: მედიით title: ადმინისტრაცია admin_mailer: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index c74540cfbf..1f5c5ded79 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -419,7 +419,6 @@ kab: media: title: Amidya open: Ldi tasuffeɣt - title: Tisuffaɣ n umiḍan - @%{name} trending: Ayen mucaɛen visibility: Abani with_media: S umidya diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 4b9cef245e..7ab33b3134 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -285,7 +285,6 @@ kk: media: title: Медиa no_status_selected: Бірде-бір статус өзгерген жоқ, себебі ештеңе таңдалмады - title: Аккаунт статустары - @%{name} with_media: Медиамен tags: review: Статусты көрсету diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 36a13397d0..3394433758 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -814,8 +814,10 @@ ko: back_to_account: 계정으로 돌아가기 back_to_report: 신고 페이지로 돌아가기 batch: + add_to_report: '신고 #%{id}에 추가' remove_from_report: 신고에서 제거 report: 신고 + contents: 내용 deleted: 삭제됨 favourites: 좋아요 history: 버전 이력 @@ -824,13 +826,17 @@ ko: media: title: 미디어 metadata: 메타데이터 + no_history: 이 게시물은 수정되지 않았습니다 no_status_selected: 아무 것도 선택 되지 않아 어떤 게시물도 바뀌지 않았습니다 open: 게시물 열기 original_status: 원본 게시물 reblogs: 리블로그 + replied_to_html: "%{acct_link} 님에게 답장" status_changed: 게시물 변경됨 + status_title: "@%{name} 님의 게시물" title: 계정 게시물 - @%{name} trending: 유행 중 + view_publicly: 공개시점으로 보기 visibility: 공개 설정 with_media: 미디어 있음 strikes: diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 54188d2514..5337610992 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -720,7 +720,6 @@ ku: original_status: Şandiyê resen reblogs: Ji nû ve nivîsandin status_changed: Şandî hate guhertin - title: Şandiyên ajimêr - @%{name} trending: Rojev visibility: Xuyabarî with_media: Bi medya yê re diff --git a/config/locales/lad.yml b/config/locales/lad.yml index 3b33888c71..2612ae2131 100644 --- a/config/locales/lad.yml +++ b/config/locales/lad.yml @@ -825,7 +825,6 @@ lad: original_status: Publikasyon orijinala reblogs: Repartajasyones status_changed: Publikasyon trokada - title: Publikasyones del kuento - @%{name} trending: Trendes visibility: Vizivilita with_media: Kon multimedia diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 3519cb5b32..65bd4456ae 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -589,7 +589,9 @@ lt: back_to_account: Grįžti į paskyros puslapį back_to_report: Grįžti į ataskaitos puslapį batch: + add_to_report: 'Pridėti į ataskaitą #%{id}' remove_from_report: Pašalinti iš ataskaitos + contents: Turinys deleted: Ištrinta favourites: Mėgstami history: Versijų istorija @@ -598,11 +600,15 @@ lt: media: title: Medija metadata: Metaduomenys + no_history: Šis įrašas nebuvo redaguotas no_status_selected: Jokie įrašai nebuvo pakeisti, nes nė vienas buvo pasirinktas open: Atidaryti įrašą original_status: Originalus įrašas - title: Paskyros statusai - @%{name} + replied_to_html: Atsakyta į %{acct_link} + status_title: Paskelbė @%{name} + title: Paskyros įrašai – @%{name} trending: Tendencinga + view_publicly: Peržiūrėti viešai with_media: Su medija system_checks: database_schema_check: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 33b357b837..1ced1bb7d0 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -830,7 +830,6 @@ lv: original_status: Oriģinālā ziņa reblogs: Reblogi status_changed: Ziņa mainīta - title: Konta ziņas - @%{name} trending: Aktuāli visibility: Redzamība with_media: Ar multividi diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 76f914dd16..948ad56a54 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -768,7 +768,6 @@ ms: original_status: Hantaran asal reblogs: Ulang siar status_changed: Hantaran diubah - title: Hantaran akaun - @%{name} trending: Sohor kini visibility: Visibiliti with_media: Dengan media diff --git a/config/locales/my.yml b/config/locales/my.yml index b238abb051..4428843855 100644 --- a/config/locales/my.yml +++ b/config/locales/my.yml @@ -764,7 +764,6 @@ my: original_status: မူရင်းပို့စ် reblogs: Reblog များ status_changed: ပို့စ်ပြောင်းပြီးပါပြီ - title: "@%{name} - အကောင့်ပို့စ်များ" trending: လက်ရှိခေတ်စားနေခြင်း visibility: မြင်နိုင်မှု with_media: မီဒီယာနှင့်အတူ diff --git a/config/locales/nl.yml b/config/locales/nl.yml index d4a88b3bea..048214eca3 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -818,8 +818,10 @@ nl: back_to_account: Terug naar accountpagina back_to_report: Terug naar de rapportage batch: + add_to_report: 'Toevoegen aan rapport #%{id}' remove_from_report: Uit de rapportage verwijderen report: Rapportage + contents: Inhoud deleted: Verwijderd favourites: Favorieten history: Versiegeschiedenis @@ -828,12 +830,14 @@ nl: media: title: Media metadata: Metagegevens + no_history: Dit bericht is niet bewerkt no_status_selected: Er werden geen berichten gewijzigd, omdat er geen enkele werd geselecteerd open: Bericht tonen original_status: Oorspronkelijk bericht reblogs: Boosts status_changed: Bericht veranderd - title: Berichten van account - @%{name} + status_title: Bericht van @%{name} + title: Accountberichten - @%{name} trending: Trending visibility: Zichtbaarheid with_media: Met media diff --git a/config/locales/nn.yml b/config/locales/nn.yml index e04c0168f2..dbb8b6c693 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -826,8 +826,10 @@ nn: back_to_account: Tilbake til kontosida back_to_report: Attende til rapporteringssida batch: + add_to_report: 'Legg til rapport #%{id}' remove_from_report: Fjern fra rapport report: Rapport + contents: Innhald deleted: Sletta favourites: Favorittar history: Versjonshistorikk @@ -836,13 +838,17 @@ nn: media: title: Media metadata: Metadata + no_history: Dette innlegget har ikkje blitt redigert no_status_selected: Ingen statusar vart endra sidan ingen vart valde open: Opne innlegg original_status: Opprinnelig innlegg reblogs: Framhevingar + replied_to_html: Svarte %{acct_link} status_changed: Innlegg endret - title: Kontostatusar - @%{name} + status_title: Innlegg av @%{name} + title: Kontoinnlegg - @%{name} trending: Populært + view_publicly: Vis offentleg visibility: Synlighet with_media: Med media strikes: diff --git a/config/locales/no.yml b/config/locales/no.yml index 408fdd5ae1..8bf5daad0e 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -786,7 +786,6 @@ original_status: Opprinnelig innlegg reblogs: Fremheve status_changed: Innlegg endret - title: Kontostatuser - @%{name} trending: Populært visibility: Synlighet with_media: Med media diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 5130977cb3..5dec5ebb77 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -401,7 +401,6 @@ oc: media: title: Mèdia no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat - title: Estatuts del compte - @%{name} visibility: Visibilitat with_media: Amb mèdia system_checks: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c5d63e1d73..48a881a61b 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -861,7 +861,6 @@ pl: original_status: Oryginalny post reblogs: Podbicia status_changed: Post zmieniony - title: Wpisy konta - @%{name} trending: Popularne visibility: Widoczność with_media: Z zawartością multimedialną diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index c5a0f3764a..537dee5f74 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -826,8 +826,10 @@ pt-BR: back_to_account: Voltar para página da conta back_to_report: Voltar às denúncias batch: + add_to_report: 'Adicionar à denúncia #%{id}' remove_from_report: Remover da denúncia report: Denunciar + contents: Conteúdos deleted: Excluídos favourites: Favoritos history: Histórico de versões @@ -836,13 +838,17 @@ pt-BR: media: title: Mídia metadata: Metadados + no_history: Esta publicação não foi editada no_status_selected: Nenhuma publicação foi modificada porque nenhuma estava selecionada open: Publicação aberta original_status: Publicação original reblogs: Reblogs + replied_to_html: Respondeu à %{acct_link} status_changed: Publicação alterada + status_title: Publicação de @%{name} title: Publicações da conta - @%{name} trending: Em alta + view_publicly: Ver publicamente visibility: Visibilidade with_media: Com mídia strikes: @@ -1377,9 +1383,16 @@ pt-BR: overwrite: Sobrescrever overwrite_long: Substituir os registros atuais com os novos overwrite_preambles: + blocking_html: + one: Você está prestes a trocar seu bloco de listas com mais de %{count} conta de %{filename}. + other: Você está prestes a substituir sua lista de blocos com mais de %{count} contas de %{filename}. bookmarks_html: one: Você está prestes a substituir seus salvos por até %{count} publicação de %{filename}. other: Você está prestes a substituir seus salvos por até %{count} publicações de %{filename}. + preambles: + muting_html: + one: Você está prestes a silenciar %{count} conta de %{filename}. + other: Você está prestes a silenciar mais de %{count} contas de %{filename}. preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou. recent_imports: Importações recentes states: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index ff80948848..cceceb0534 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -832,7 +832,6 @@ pt-PT: original_status: Publicação original reblogs: Re-publicacões status_changed: Publicação alterada - title: Estado das contas - @%{name} trending: Em tendência visibility: Visibilidade with_media: Com media diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 09d89cef9d..d9bf96c625 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -869,7 +869,6 @@ ru: original_status: Оригинальный пост reblogs: Продвинули status_changed: Пост изменен - title: Посты пользователя - @%{name} trending: Популярное visibility: Видимость with_media: С файлами diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 09f8ba0e0e..38ede0a72c 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -582,7 +582,6 @@ sc: open: Aberi sa publicatzione original_status: Publicatzione originale status_changed: Publicatzione modificada - title: Istados de su contu - @%{name} trending: Populares visibility: Visibilidade with_media: Cun elementos multimediales diff --git a/config/locales/sco.yml b/config/locales/sco.yml index 55e0603d45..ff3a730b17 100644 --- a/config/locales/sco.yml +++ b/config/locales/sco.yml @@ -713,7 +713,6 @@ sco: original_status: Original post reblogs: Reblogs status_changed: Post chynged - title: Accoont posts - @%{name} trending: Trendin visibility: Visibility with_media: Wi media diff --git a/config/locales/si.yml b/config/locales/si.yml index b0eb1d3b0c..cd4abf6451 100644 --- a/config/locales/si.yml +++ b/config/locales/si.yml @@ -607,7 +607,6 @@ si: open: ලිපිය අරින්න original_status: මුල් ලිපිය status_changed: ලිපිය සංශෝධිතයි - title: ගිණුමේ ලිපි - @%{name} trending: නැගී එන with_media: මාධ්‍ය සමඟ strikes: diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml index 62d59235bf..f8257a9da9 100644 --- a/config/locales/simple_form.ga.yml +++ b/config/locales/simple_form.ga.yml @@ -10,6 +10,7 @@ ga: indexable: Seans go mbeidh do phostálacha poiblí le feiceáil sna torthaí cuardaigh ar Mastodon. Seans go mbeidh daoine a d’idirghníomhaigh le do phostálacha in ann iad a chuardach beag beann ar. note: 'Is féidir leat @trá a dhéanamh ar dhaoine eile nó #hashtags.' show_collections: Beidh daoine in ann brabhsáil trí do seo a leanas agus do leanúna. Feicfidh na daoine a leanann tú go leanann tú iad beag beann ar. + unlocked: Beidh daoine in ann tú a leanúint gan cead a iarraidh. Díthiceáil an dteastaíonn uait athbhreithniú a dhéanamh ar iarratais leantacha agus roghnaigh cé acu an nglacfaidh nó an diúltóidh tú do leantóirí nua. account_alias: acct: Sonraigh ainm@fearann don chuntas ar mhaith leat aistriú uaidh account_migration: diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 5ac75aafb1..1a405980c0 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -3,12 +3,14 @@ ia: simple_form: hints: account: + attribution_domains_as_text: Un per linea. Protege contra false attributiones. discoverable: Tu messages public e tu profilo pote esser mittite in evidentia o recommendate in varie areas de Mastodon e tu profilo pote esser suggerite a altere usatores. display_name: Tu prenomine e nomine de familia o tu pseudonymo. fields: Tu pagina principal, pronomines, etate, tote lo que tu vole. indexable: Tu messages public pote apparer in le resultatos de recerca sur Mastodon. Le personas qui ha interagite con tu messages pote cercar los in omne caso. note: 'Tu pote @mentionar altere personas o #hashtags.' show_collections: Le gente potera percurrer le listas de personas que tu seque e qui te seque. Le personas que tu seque videra que tu les seque in omne caso. + unlocked: Le personas potera sequer te sin requestar approbation. Dismarca si tu vole revider le requestas de sequimento e seliger si acceptar o rejectar nove sequitores. account_alias: acct: Specifica le nomine_de_usator@dominio del conto desde le qual tu vole migrar account_migration: @@ -129,6 +131,7 @@ ia: name: Tu pote solmente cambiar le litteras inter majusculas e minusculas, per exemplo, pro render lo plus legibile user: chosen_languages: Si marcate, solo le messages in le linguas seligite sera monstrate in chronologias public + role: Le rolo controla qual permissos le usator ha. user_role: color: Color a esser usate pro le rolo in omne parte del UI, como RGB in formato hexadecimal highlighted: Iste rende le rolo publicamente visibile @@ -141,6 +144,7 @@ ia: url: Ubi le eventos essera inviate labels: account: + attribution_domains_as_text: Sitos web autorisate a accreditar te discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta @@ -209,6 +213,7 @@ ia: setting_default_privacy: Confidentialitate del messages setting_default_sensitive: Sempre marcar le medios cmo sensbile setting_delete_modal: Monstrar le dialogo de confirmation ante deler un message + setting_disable_hover_cards: Disactivar le previsualisation de profilos al passar del mus setting_disable_swiping: Disactivar le movimentos per glissamento setting_display_media: Visualisation de medios setting_display_media_default: Predefinite diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 0c6be63aaa..fca59515f0 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -10,6 +10,7 @@ pt-BR: indexable: Suas publicações públicas podem aparecer nos resultados da pesquisa em Mastodon. As pessoas que interagiram com suas publicações podem conseguir pesquisá-las independentemente disso. note: 'Você pode @mencionar outras pessoas ou #hashtags.' show_collections: As pessoas poderão navegar entre os seus seguidores e seguidores. As pessoas que você segue verão que você as segue independentemente disso. + unlocked: As pessoas poderão seguir você sem solicitar aprovação. Desmarque caso você queira revisar as solicitações de seguidor e escolha se queira aceitar ou rejeitar novos seguidores. account_alias: acct: Especifique o usuário@domínio de onde veio account_migration: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 5f98d73be6..0b7edae913 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -4,12 +4,12 @@ zh-CN: hints: account: attribution_domains_as_text: 每行一个域名。这样就可以保护作品免受虚假署名。 - discoverable: 您的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,您的个人资料可能会被推荐给其他用户。 + discoverable: 你的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,你的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 - indexable: 您的公开嘟文会出现在 Mastodon 的搜索结果中。无论是否勾选,与您的嘟文有过交互的人都可能通过搜索找到它们。 - note: '你可以提及 @其他人 或 #标签 。' - show_collections: 人们将能够浏览您的关注和追随者。您关注的人会看到您关注他们。 + indexable: 你的公开嘟文会出现在 Mastodon 的搜索结果中。无论是否勾选,与你的嘟文有过交互的人都可能通过搜索找到它们。 + note: '你可以提及 @其他人 或 #话题标签 。' + show_collections: 人们将能够浏览你的关注和追随者。你关注的人会看到你关注他们。 unlocked: 人们将能够在不请求批准的情况下关注你。如果你希望审核关注请求并选择接受或拒绝新的关注者,请取消勾选此项。 account_alias: acct: 指定你想要迁移过来的原账号:用户名@站点域名 @@ -62,7 +62,7 @@ zh-CN: setting_display_media_show_all: 始终显示媒体 setting_use_blurhash: 渐变是基于模糊后的隐藏内容生成的 setting_use_pending_items: 关闭自动滚动更新,时间轴会在点击后更新 - username: 您只能使用字母、数字和下划线 + username: 你只能使用字母、数字和下划线 whole_word: 如果关键词只包含字母和数字,将只在词语完全匹配时才会应用 domain_allow: domain: 该站点将能够从该服务器上拉取数据,并处理和存储收到的数据。 @@ -87,7 +87,7 @@ zh-CN: favicon: WEBP、PNG、GIF 或 JPG。使用自定义图标覆盖 Mastodon 的默认图标。 mascot: 覆盖高级网页界面中的绘图形象。 media_cache_retention_period: 来自外站用户嘟文的媒体文件将被缓存到你的实例上。当该值被设为正值时,缓存的媒体文件将在指定天数后被清除。如果媒体文件在被清除后重新被请求,且源站内容仍然可用,它将被重新下载。由于链接预览卡拉取第三方站点的频率受到限制,建议将此值设置为至少 14 天,如果小于该值,链接预览卡将不会按需更新。 - peers_api_enabled: 此服务器在联邦宇宙中遇到的域名列表。 这里不包含关于您是否与给定服务器联合的数据,只是您的服务器知道它。 这由收集一般意义上的联邦统计信息的服务使用。 + peers_api_enabled: 此服务器在联邦宇宙中遇到的实例列表。 此处不包含关于您是否与给定服务器联合的数据,只是您的服务器知道它。 这由收集一般意义上的联邦统计信息的服务使用。 profile_directory: 个人资料目录会列出所有选择可被发现的用户。 require_invite_text: 当注册需要手动批准时,将“你为什么想要加入?”设为必填项 site_contact_email: 他人需要询恰法务或支持信息时的联络方式 @@ -125,7 +125,7 @@ zh-CN: otp: 输入你手机应用上生成的双因素认证代码,或者任意一个恢复代码: webauthn: 如果是 USB 密钥,请确保将其插入,如有必要,请点击它。 settings: - indexable: 您的个人资料页面可能会出现在Google、Bing等搜索结果中。 + indexable: 你的个人资料页面可能会出现在Google、Bing等搜索结果中。 show_application: 无论如何,你始终可以看到是哪个应用发布了你的嘟文。 tag: name: 你只能改变字母的大小写,让它更易读 @@ -257,7 +257,7 @@ zh-CN: peers_api_enabled: 在API中公开的已知实例的服务器的列表 profile_directory: 启用用户目录 registrations_mode: 谁可以注册 - require_invite_text: 注册前需要提供理由 + require_invite_text: 注册时需要提供理由 show_domain_blocks: 显示域名屏蔽列表 show_domain_blocks_rationale: 显示域名屏蔽原因 site_contact_email: 联系邮箱 @@ -292,13 +292,13 @@ zh-CN: notification_emails: appeal: 有人对审核结果提出申诉 digest: 发送摘要邮件 - favourite: 当有用户喜欢了我的嘟文时,发送电子邮件提醒我 - follow: 有用户关注我时 - follow_request: 有用户向我发送关注请求时 - mention: 有用户提及我时 - pending_account: 有账号需要审核时 - reblog: 有用户转嘟我的嘟文时 - report: 新举报已提交 + favourite: 有用户喜欢了我的嘟文 + follow: 有人关注了我 + follow_request: 有人向我发送了关注请求 + mention: 有人提到了我 + pending_account: 有账号需要审核 + reblog: 有人转嘟了我的嘟文 + report: 有人提交了新举报 software_updates: all: 通知所有更新 critical: 仅在有关键更新时通知 @@ -328,8 +328,8 @@ zh-CN: position: 优先级 webhook: events: 已启用事件 - template: 载荷模板 - url: 对端 URL + template: Payload 模板 + url: 端点 URL 'no': 否 not_recommended: 不推荐 overridden: 已覆盖 diff --git a/config/locales/sk.yml b/config/locales/sk.yml index d576bf0382..c946b8abf1 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -684,7 +684,6 @@ sk: open: Otvor príspevok original_status: Pôvodný príspevok status_changed: Príspevok bol zmenený - title: Príspevky na účte - @%{name} trending: Populárne visibility: Viditeľnosť with_media: S médiami diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6ae239d69f..909b89e5a9 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -853,7 +853,6 @@ sl: original_status: Izvorna objava reblogs: Ponovljeni blogi status_changed: Objava spremenjena - title: Objave računa - @%{name} trending: V trendu visibility: Vidnost with_media: Z mediji diff --git a/config/locales/sq.yml b/config/locales/sq.yml index b1e2a4f61e..e9247ef365 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -823,8 +823,10 @@ sq: back_to_account: Mbrapsht te faqja e llogarisë back_to_report: Mbrapsht te faqja e raportimit batch: + add_to_report: 'Shtoje te raportimi #%{id}' remove_from_report: Hiqe prej raportimit report: Raportojeni + contents: Lëndë deleted: E fshirë favourites: Të parapëlqyer history: Historik versioni @@ -833,13 +835,17 @@ sq: media: title: Media metadata: Tejtëdhëna + no_history: Ky postim s’është përpunuar no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë open: Hape postimin original_status: Postim origjinal reblogs: Riblogime + replied_to_html: Iu përgjigj %{acct_link} status_changed: Postimi ndryshoi - title: Gjendje llogarish - @%{name} + status_title: Postim nga @%{name} + title: Postime llogarie - @%{name} trending: Në modë + view_publicly: Shiheni publikisht visibility: Dukshmëri with_media: Me media strikes: diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 76a0f8afe9..0b3043c47b 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -807,7 +807,6 @@ sr-Latn: original_status: Originalna objava reblogs: Deljenja status_changed: Objava promenjena - title: Statusi naloga - @%{name} trending: U trendu visibility: Vidljivost with_media: Sa multimedijom diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 6a75316c23..e077a40eee 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -837,7 +837,6 @@ sr: original_status: Оригинална објава reblogs: Дељења status_changed: Објава промењена - title: Статуси налога - @%{name} trending: У тренду visibility: Видљивост with_media: Са мултимедијом diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 11b37f8bfc..c48b45b2e8 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -826,8 +826,10 @@ sv: back_to_account: Tillbaka till kontosidan back_to_report: Tillbaka till rapportsidan batch: + add_to_report: 'Lägg till i rapport #%{id}' remove_from_report: Ta bort från rapport report: Rapportera + contents: Innehåll deleted: Raderad favourites: Favoriter history: Versionshistorik @@ -836,13 +838,16 @@ sv: media: title: Media metadata: Metadata + no_history: Detta inlägg har inte redigerats no_status_selected: Inga inlägg ändrades eftersom inga valdes open: Öppna inlägg original_status: Ursprungligt inlägg reblogs: Ombloggningar status_changed: Inlägg ändrat + status_title: Inlägg av @%{name} title: Kontoinlägg - @%{name} trending: Trendande + view_publicly: Visa offentligt visibility: Synlighet with_media: Med media strikes: diff --git a/config/locales/th.yml b/config/locales/th.yml index 32f2b30292..5178506bab 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -819,7 +819,6 @@ th: original_status: โพสต์ดั้งเดิม reblogs: การดัน status_changed: เปลี่ยนโพสต์แล้ว - title: โพสต์ของบัญชี - @%{name} trending: กำลังนิยม visibility: การมองเห็น with_media: มีสื่อ diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 2eafed1b47..a0002070c6 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -826,8 +826,10 @@ tr: back_to_account: Hesap sayfasına geri dön back_to_report: Bildirim sayfasına geri dön batch: + add_to_report: 'Rapora ekle #%{id}' remove_from_report: Bildirimden kaldır report: Bildirim + contents: İçerikler deleted: Silindi favourites: Favoriler history: Sürüm geçmişi @@ -836,13 +838,17 @@ tr: media: title: Medya metadata: Üstveri + no_history: Bu gönderi düzenlenmemiş no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi open: Gönderiyi aç original_status: Özgün gönderi reblogs: Yeniden Paylaşımlar + replied_to_html: Yanıtladı %{acct_link} status_changed: Gönderi değişti - title: Hesap durumları - @%{name} + status_title: Gönderen @%{name} + title: Hesap gönderileri - @%{name} trending: Öne çıkanlar + view_publicly: Herkese Açık Görüntüle visibility: Görünürlük with_media: Medya ile strikes: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 7ea76b2a75..68ca10c0cc 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -861,7 +861,6 @@ uk: original_status: Оригінальний допис reblogs: Поширення status_changed: Допис змінено - title: Дописи облікових записів - @%{name} trending: Популярне visibility: Видимість with_media: З медіа diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 71c4357f2f..acc69f96cd 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -812,8 +812,10 @@ vi: back_to_account: Quay lại trang tài khoản back_to_report: Quay lại trang báo cáo batch: + add_to_report: 'Thêm vào báo cáo #%{id}' remove_from_report: Xóa khỏi báo cáo report: Báo cáo + contents: Nội dung deleted: Đã xóa favourites: Lượt thích history: Lịch sử phiên bản @@ -822,13 +824,17 @@ vi: media: title: Media metadata: Metadata + no_history: Tút này chưa được chỉnh sửa no_status_selected: Bạn chưa chọn bất kỳ tút nào open: Mở tút original_status: Tút gốc reblogs: Lượt đăng lại + replied_to_html: Trả lời đến %{acct_link} status_changed: Tút đã sửa - title: Tất cả tút - @%{name} + status_title: Đăng bởi @%{name} + title: Tút từ tài khoản - @%{name} trending: Xu hướng + view_publicly: Xem công khai visibility: Hiển thị with_media: Có media strikes: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index cae0efee57..7dc0f3d949 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -10,7 +10,7 @@ zh-CN: followers: other: 关注者 following: 正在关注 - instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于达成互联之目的,不应该被停用。 + instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于联合目的,不应该被停用。 last_active: 最近活动 link_verified_on: 此链接的所有权已在 %{date} 检查 nothing_here: 空空如也! @@ -24,7 +24,7 @@ zh-CN: account_actions: action: 执行操作 already_silenced: 此账户已受限。 - already_suspended: 此帐户已被封禁。 + already_suspended: 此账户已被封禁。 title: 在 %{acct} 上执行管理操作 account_moderation_notes: create: 新建记录 @@ -86,9 +86,9 @@ zh-CN: title: 位置 login_status: 登录状态 media_attachments: 媒体文件 - memorialize: 设置为追悼账户 - memorialized: 被悼念 - memorialized_msg: 成功将 %{username} 转换为悼念账号 + memorialize: 设为追悼账户 + memorialized: 已设为追悼账户 + memorialized_msg: 成功将 %{username} 转换为追悼账户 moderation: active: 活跃 all: 全部 @@ -98,8 +98,8 @@ zh-CN: suspended: 已封禁 title: 管理 moderation_notes: 管理记录 - most_recent_activity: 最后一次活跃的时间 - most_recent_ip: 最后一次活跃的 IP 地址 + most_recent_activity: 最后活跃时间 + most_recent_ip: 最后活跃IP no_account_selected: 因为没有选中任何账号,所以没有更改 no_limits_imposed: 无限制 no_role_assigned: 未定角色 @@ -167,7 +167,7 @@ zh-CN: view_domain: 查看域名摘要 warn: 警告 web: 站内页面 - whitelisted: 允许跨站交互 + whitelisted: 允许联合 action_logs: action_types: approve_appeal: 批准申诉 @@ -209,7 +209,7 @@ zh-CN: enable_relay: 启用中继站 enable_sign_in_token_auth_user: 为用户启用邮件令牌身份验证 enable_user: 启用用户 - memorialize_account: 将账户设为追悼模式 + memorialize_account: 设为追悼账户 promote_user: 给用户升任 reject_appeal: 驳回申诉 reject_user: 拒绝用户 @@ -244,7 +244,7 @@ zh-CN: create_announcement_html: "%{name} 创建了新公告 %{target}" create_canonical_email_block_html: "%{name} 封禁了 hash 为 %{target} 的邮箱地址" create_custom_emoji_html: "%{name} 添加了新的自定义表情 %{target}" - create_domain_allow_html: "%{name} 允许了和域名 %{target} 的跨站交互" + create_domain_allow_html: "%{name} 允许了与实例 %{target} 的联合" create_domain_block_html: "%{name} 屏蔽了域名 %{target}" create_email_domain_block_html: "%{name} 封禁了邮箱域名 %{target}" create_ip_block_html: "%{name} 为 IP %{target} 创建了规则" @@ -255,7 +255,7 @@ zh-CN: destroy_announcement_html: "%{name} 删除了公告 %{target}" destroy_canonical_email_block_html: "%{name} 解封了 hash 为 %{target} 的邮箱地址" destroy_custom_emoji_html: "%{name} 删除了自定义表情 %{target}" - destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互" + destroy_domain_allow_html: "%{name} 拒绝了与实例 %{target} 的联合" destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽" destroy_email_domain_block_html: "%{name} 解封了邮箱域名 %{target}" destroy_instance_html: "%{name} 删除了实例 %{target}" @@ -301,7 +301,7 @@ zh-CN: empty: 没有找到日志 filter_by_action: 根据行为过滤 filter_by_user: 根据用户过滤 - title: 运营日志 + title: 审核日志 unavailable_instance: "(域名不可用)" announcements: destroyed_msg: 公告已删除! @@ -337,7 +337,7 @@ zh-CN: emoji: 表情 enable: 启用 enabled: 已启用 - enabled_msg: 表情启用成功 + enabled_msg: 已成功启用此表情 image_hint: 最大 %{size} 的 PNG 或 GIF list: 列表 listed: 已显示 @@ -350,7 +350,7 @@ zh-CN: shortcode_hint: 至少 2 个字符,只能使用字母、数字和下划线 title: 自定义表情 uncategorized: 未分类 - unlist: 不公开 + unlist: 隐藏 unlisted: 已隐藏 update_failed_msg: 表情更新失败 updated_msg: 表情更新成功! @@ -370,24 +370,24 @@ zh-CN: pending_users_html: other: "%{count} 个待处理用户" resolved_reports: 已处理的举报 - software: 软件 + software: 软件信息 sources: 注册来源 space: 存储使用情况 title: 信息面板 top_languages: 最活跃的语言 top_servers: 最活跃的服务器 - website: 网页端 + website: 网站 disputes: appeals: - empty: 没有发现申诉。 + empty: 未找到申诉。 title: 申诉 domain_allows: - add_new: 允许和域名跨站交互 - created_msg: 域名已被允许跨站交互 - destroyed_msg: 域名已被禁止跨站交互 + add_new: 允许与此实例联合 + created_msg: 实例已被允许联合 + destroyed_msg: 实例已被禁止联合 export: 导出 import: 导入 - undo: 不允许和该域名跨站交互 + undo: 禁止与此实例联合 domain_blocks: add_new: 添加新屏蔽域名 confirm_suspension: @@ -403,15 +403,15 @@ zh-CN: destroyed_msg: 域名屏蔽已撤销 domain: 域名 edit: 编辑域名屏蔽 - existing_domain_block: 您已经对 %{name} 设置了更严格的限制。 + existing_domain_block: 你已经对 %{name} 设置了更严格的限制。 existing_domain_block_html: 你已经对 %{name} 施加了更严格的限制,你需要先 解封。 export: 导出 import: 导入 new: create: 添加屏蔽 - hint: 域名屏蔽不会阻止该域名下的帐户进入本站的数据库,但是会对来自这个域名的帐户自动进行预先设置的管理操作。 + hint: 域名屏蔽不会阻止该域名下的账户进入本站的数据库,但是会对来自这个域名的账户自动进行预先设置的管理操作。 severity: - desc_html: 选择隐藏会将该域名下帐户发送的嘟文设置为仅关注者可见;选择封禁会将该域名下帐户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 + desc_html: 选择隐藏会将该域名下账户发送的嘟文设置为仅关注者可见;选择封禁会将该域名下账户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择。 noop: 无 silence: 隐藏 suspend: 封禁 @@ -456,9 +456,9 @@ zh-CN: no_file: 没有选择文件 export_domain_blocks: import: - description_html: 您即将导入域名列表,如果您不是此域名列表的作者,请仔细检查核对。 + description_html: 你即将导入域名列表,如果你不是此域名列表的作者,请仔细检查核对。 existing_relationships_warning: 现有的关注关系 - private_comment_description_html: 为了帮助您追踪域名列表来源,导入的域名列表将被添加如下的私人注释:%{comment} + private_comment_description_html: 为了帮助你追踪域名列表来源,导入的域名列表将被添加如下的私人注释:%{comment} private_comment_template: 从 %{source} 导入 %{date} title: 导入域名列表 invalid_domain_block: 由于以下错误,一个或多个域名屏蔽被跳过: %{error} @@ -494,7 +494,7 @@ zh-CN: content_policies: comment: 内部备注 description_html: 你可以设置应用于此域名所有账号和其所有子域名的内容策略。 - limited_federation_mode_description_html: 您可以选择是否允许与该联邦联合。 + limited_federation_mode_description_html: 你可以选择是否允许与此实例联合。 policies: reject_media: 拒收媒体 reject_reports: 拒收举报 @@ -529,7 +529,7 @@ zh-CN: moderation: all: 全部 limited: 受限的 - title: 运营 + title: 审核 private_comment: 私密评论 public_comment: 公开评论 purge: 删除 @@ -543,7 +543,7 @@ zh-CN: totals_time_period_hint_html: 下方显示的总数来自全部历史数据。 unknown_instance: 此服务器上目前没有此域名的记录。 invites: - deactivate_all: 撤销所有邀请链接 + deactivate_all: 全部停用 filter: all: 全部 available: 可用 @@ -563,7 +563,7 @@ zh-CN: '94670856': 3年 new: title: 创建新 IP 规则 - no_ip_block_selected: 因为没有 IP 规则被选中,所以没有更改 + no_ip_block_selected: 未选中任何 IP 规则,所以没有更改 title: IP 规则 relationships: title: "%{acct} 的关系" @@ -580,7 +580,7 @@ zh-CN: pending: 等待中继站的确认 save_and_enable: 保存并启用 setup: 设置中继连接 - signatures_not_enabled: 安全模式或限联模式启用时,中继将不会正常工作 + signatures_not_enabled: 安全模式或白名单模式启用时,中继站可能将不会正常工作 status: 状态 title: 中继站 report_notes: @@ -597,10 +597,10 @@ zh-CN: mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。 other_description_html: 查看更多控制该账号行为的选项,并自定义编写与被举报账号的通信。 resolve_description_html: 不会对被举报账号采取任何动作,举报将被关闭,也不会留下处罚记录。 - silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此帐户的所有举报。 - suspend_description_html: 该帐户及其所有内容将无法访问并最终被删除,且无法与该帐户进行互动。 在 30 天内可随时撤销。关闭针对此帐户的所有举报。 + silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。关闭针对此账户的所有举报。 + suspend_description_html: 该账户及其所有内容将无法访问并最终被删除,且无法与该账户进行互动。 在 30 天内可随时撤销。关闭针对此账户的所有举报。 actions_description_html: 决定采取何种措施处理此举报。如果对被举报账号采取惩罚性措施,将向其发送一封电子邮件通知。但若选中垃圾信息类别则不会发送通知。 - actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响您的服务器如何与该远程帐户的通信并处理其内容。 + actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账户的通信并处理其内容。 actions_no_posts: 该举报没有相关嘟文可供删除 add_to_report: 增加更多举报内容 already_suspended_badges: @@ -622,7 +622,7 @@ zh-CN: delete_and_resolve: 删除嘟文 forwarded: 已转发 forwarded_replies_explanation: 该举报来自外站用户,涉及外站内容。之所以转发给你,是因为被举报的内容是对你站点一位用户的回复。 - forwarded_to: 转发举报至 %{domain} + forwarded_to: 转发举报到 %{domain} mark_as_resolved: 标记为已处理 mark_as_sensitive: 标记为敏感内容 mark_as_unresolved: 标记为未处理 @@ -630,7 +630,7 @@ zh-CN: notes: create: 添加记录 create_and_resolve: 添加记录并标记为“已处理” - create_and_unresolve: 添加记录并重开 + create_and_unresolve: 添加备注并重新打开 delete: 删除 placeholder: 描述已经执行的操作,或其他任何相关的跟进情况… title: 备注 @@ -651,10 +651,10 @@ zh-CN: statuses_description_html: 在与该账号的通信中将引用违规内容 summary: action_preambles: - delete_html: 您即将删除 @%{acct} 的一些嘟文。 这将: - mark_as_sensitive_html: 您即将 标记 @%{acct} 的帖一些子为 敏感。这将: - silence_html: 您即将限制 @%{acct} 的帐户。 这将: - suspend_html: 您即将暂停 @%{acct} 的帐户。 这将: + delete_html: 你即将删除 @%{acct} 的一些嘟文。 这将: + mark_as_sensitive_html: 你即将 标记 @%{acct} 的帖一些子为 敏感。这将: + silence_html: 你即将限制 @%{acct} 的账户。 这将: + suspend_html: 你即将暂停 @%{acct} 的账户。 这将: actions: delete_html: 删除违规嘟文 mark_as_sensitive_html: 将违规嘟文的媒体标记为敏感 @@ -664,7 +664,7 @@ zh-CN: close_reports_html: 将针对 @%{acct}所有 报告标记为已解决 delete_data_html: 从现在起 30 天后删除 @%{acct} 的个人资料和内容,除非他们同时解除暂停。 preview_preamble_html: "@%{acct} 将收到包含以下内容的警告:" - record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助您在这个帐户上的未来违规事件中得到重视。 + record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账户上的未来违规事件中得到重视。 send_email_html: 向 @%{acct} 发送警告邮件 warning_placeholder: 可选的补充理由,以说明调整的情况。 target_origin: 被举报账号的来源 @@ -685,7 +685,7 @@ zh-CN: moderation: 监察 special: 特殊 delete: 刪除 - description_html: 使用 用户角色,您可以自定义您的用户可以访问的功能和区域。 + description_html: 使用 用户角色,你可以自定义你的用户可以访问的功能和区域。 edit: 编辑 '%{name}' 角色 everyone: 默认权限 everyone_full_description_html: 这是影响到 所有用户基础角色,包括未指定角色的用户。 其他所有的角色都继承着它的权限。 @@ -706,7 +706,7 @@ zh-CN: manage_blocks_description: 允许用户屏蔽邮箱提供商和IP地址 manage_custom_emojis: 管理自定义表情 manage_custom_emojis_description: 允许用户管理服务器上的自定义表情 - manage_federation: 管理邦联 + manage_federation: 管理联合 manage_federation_description: 允许用户屏蔽或允许同其他域名的邦联,并控制消息投递能力 manage_invites: 管理邀请 manage_invites_description: 允许用户浏览和停用邀请链接 @@ -743,7 +743,7 @@ zh-CN: settings: about: manage_rules: 管理服务器规则 - preamble: 提供此服务器如何运营、资金状况等的深入信息。 + preamble: 提供此服务器如何运营、审核及资金状况等详细信息。 rules_hint: 有一个专门区域用于显示用户需要遵守的规则。 title: 关于本站 appearance: @@ -774,7 +774,7 @@ zh-CN: domain_blocks: all: 对所有人 disabled: 不对任何人 - users: 对本地已登录用户 + users: 对已登录的本站用户 registrations: moderation_recommandation: 在向所有人开放注册之前,请确保你拥有一个人手足够且反应迅速的管理团队! preamble: 控制谁可以在你的服务器上创建账号。 @@ -789,7 +789,7 @@ zh-CN: authorized_fetch: 需要跨站认证 authorized_fetch_hint: 要求外站请求通过验证能够使用户级别与服务器级别的封锁更为严格。然而,这将带来额外的性能负担、减少回复触达范围、并可能导致与一些联邦宇宙服务的兼容性问题。此外,这并不能阻止他人针对性地获取公开嘟文与账户。 authorized_fetch_overridden_hint: 由于此设置被环境变量覆盖,目前无法更改。 - federation_authentication: 强制跨站认证 + federation_authentication: 联合时强制要求身份验证 title: 服务器设置 site_uploads: delete: 删除已上传的文件 @@ -809,11 +809,13 @@ zh-CN: statuses: account: 作者 application: 应用 - back_to_account: 返回帐户信息页 + back_to_account: 返回账户信息页 back_to_report: 返回举报页 batch: + add_to_report: '添加到举报 #%{id}' remove_from_report: 从报告中移除 report: 举报 + contents: 内容 deleted: 已删除 favourites: 喜欢 history: 版本历史记录 @@ -822,13 +824,17 @@ zh-CN: media: title: 媒体文件 metadata: 元数据 + no_history: 此嘟文没有编辑历史 no_status_selected: 因为没有嘟文被选中,所以没有更改 open: 展开嘟文 original_status: 原始嘟文 reblogs: 转发 + replied_to_html: 回复给 %{acct_link} status_changed: 嘟文已编辑 - title: 帐户嘟文 - @%{name} + status_title: "@%{name} 的嘟文" + title: 该账号的嘟文 - @%{name} trending: 当前热门 + view_publicly: 以公开身份查看 visibility: 可见性 with_media: 含有媒体文件 strikes: @@ -960,7 +966,7 @@ zh-CN: tag_languages_dimension: 语言排行 tag_servers_dimension: 服务器排行 tag_servers_measure: 不同服务器 - tag_uses_measure: 总使用 + tag_uses_measure: 总使用次数 description_html: 这些是当前此服务器可见嘟文中大量出现的标签。它可以帮助用户发现其他人正关注的话题。在获得批准前不会公开显示任何标签。 listable: 可被推荐 no_tag_selected: 因为没有选中任何标签,所以没有更改 @@ -980,17 +986,17 @@ zh-CN: warning_presets: add_new: 添加新条目 delete: 删除 - edit_preset: 编辑预置警告 + edit_preset: 编辑预设警告 empty: 你尚未定义任何警告预设。 title: 预设警告 webhooks: - add_new: 新增对端 + add_new: 新增端点 delete: 删除 description_html: "Webhook 使 Mastodon 能够推送 关于所选事件的实时通知 到你自己的应用程序,进而由你的应用程序自动触发反应。" disable: 禁用 disabled: 已禁用 edit: 编辑对端 - empty: 你尚未配置任何 Webhook 对端。 + empty: 你尚未配置任何 Webhook 端点。 enable: 启用 enabled: 活跃 enabled_events: @@ -1043,14 +1049,14 @@ zh-CN: aliases: add_new: 创建别名 created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 - deleted_msg: 成功移除别名。已经无法从该帐户移动到此帐户了。 - empty: 你没有设置别名 + deleted_msg: 成功移除别名。已经无法从该账户移动到此账户了。 + empty: 你没有设置别名。 hint_html: 如果你想从另一个账号迁移到这里,可以先在这里创建一个别名。要把旧账号的关注者迁移过来,这一步是必须的。设置别名的操作是无害且可撤销的账号迁移的操作会从旧账号发起。 remove: 取消关联别名 appearance: advanced_web_interface: 高级 Web 界面 - advanced_web_interface_hint: 如果你想使用整个屏幕宽度,高级 web 界面允许您配置多个不同的栏目,可以同时看到更多的信息:主页、通知、跨站时间轴、任意数量的列表和话题标签。 - animations_and_accessibility: 动画和访问选项 + advanced_web_interface_hint: 如果你想使用整个屏幕宽度,高级 web 界面允许你配置多个不同的栏目,可以同时看到更多的信息:主页、通知、跨站时间轴、任意数量的列表和话题标签。 + animations_and_accessibility: 动画与可访问性 confirmation_dialogs: 确认对话框 discovery: 发现 localization: @@ -1090,8 +1096,8 @@ zh-CN: registration_complete: 你在 %{domain} 上的注册现已完成! welcome_title: 欢迎你,%{name}! wrong_email_hint: 如果该邮箱地址不正确,你可以在账户设置中进行更改。 - delete_account: 删除帐户 - delete_account_html: 如果你想删除你的帐户,请点击这里继续。你需要确认你的操作。 + delete_account: 删除账户 + delete_account_html: 如果你想删除你的账户,请点击这里继续。你需要确认你的操作。 description: prefix_invited_by_user: "@%{name} 邀请你加入这个Mastodon服务器!" prefix_sign_up: 现在就注册 Mastodon! @@ -1111,8 +1117,8 @@ zh-CN: privacy_policy_agreement_html: 我已阅读并同意 隐私政策 progress: confirm: 确认邮箱 - details: 您的详情 - review: 我们的复审 + details: 你的详情 + review: 我们的审核 rules: 接受规则 providers: cas: CAS @@ -1128,21 +1134,21 @@ zh-CN: preamble: 这些由 %{domain} 监察员设置和执行。 preamble_invited: 在你继续之前,请考虑 %{domain} 的管理员设定的基本规则。 title: 一些基本规则。 - title_invited: 您已经被邀请。 + title_invited: 你已经被邀请。 security: 账户安全 set_new_password: 设置新密码 setup: email_below_hint_html: 请检查你的垃圾邮件文件夹,或请求再发送一次。如果你的邮箱地址不正确,你可以更正它。 - email_settings_hint_html: 请点击我们发送给 %{email} 地址中的确认链接。我在这儿等着您。 + email_settings_hint_html: 请点击我们发送给 %{email} 地址中的确认链接。我在这儿等着你。 link_not_received: 没有收到链接? new_confirmation_instructions_sent: 你将在几分钟内收到一封带有确认链接的新邮件! title: 请检查你的收件箱 sign_in: - preamble_html: 使用您在 %{domain} 的账户和密码登录。如果您的账户托管在其他的服务器上,您将无法在此登录。 + preamble_html: 使用你在 %{domain} 的账户和密码登录。如果你的账户托管在其他的服务器上,你将无法在此登录。 title: 登录到 %{domain} sign_up: - manual_review: 您在 %{domain} 上的注册需要经由管理人员手动审核。 为了帮助我们处理您的注册,请稍微介绍一下您为什么想在 %{domain} 上注册。 - preamble: 有了这个Mastodon服务器上的账户,您就可以关注Mastodon网络上的任何其他人,无论他们的账户在哪里。 + manual_review: 你在 %{domain} 上的注册需要经由管理人员手动审核。 为了帮助我们处理你的注册,请稍微介绍一下你为什么想在 %{domain} 上注册。 + preamble: 有了这个Mastodon服务器上的账户,你就可以关注Mastodon网络上的任何其他人,无论他们的账户在哪里。 title: 让我们在 %{domain} 上开始。 status: account_status: 账户状态 @@ -1157,7 +1163,7 @@ zh-CN: author_attribution: example_title: 示例文本 hint_html: 你是否在 Mastodon 之外撰写新闻或博客文章?控制它们被分享到 Mastodon 时的署名方式。 - instructions: 请确保将这段代码放在您文章的 HTML 中: + instructions: 请确保将这段代码放在你文章的 HTML 中: more_from_html: 来自 %{name} 的更多内容 s_blog: "%{name} 的博客" then_instructions: 然后,在下面的文本框中添加你用于发布文章的域名。 @@ -1218,7 +1224,7 @@ zh-CN: approve_appeal: 批准申诉 associated_report: 相关举报 created_at: 日期 - description_html: 这些是针对您的账户采取的行动和警告,已经由 %{instance} 的工作人员发送给您。 + description_html: 这些是针对你的账户采取的行动和警告,已经由 %{instance} 的工作人员发送给你。 recipient: 发送至 reject_appeal: 驳回申诉 status: '嘟文 #%{id}' @@ -1237,7 +1243,7 @@ zh-CN: your_appeal_rejected: 你的申诉已被驳回 edit_profile: basic_information: 基本信息 - hint_html: "自定义公开资料和嘟文旁边显示的内容。当您填写完整的个人资料并设置了头像时,其他人更有可能关注您并与您互动。" + hint_html: "自定义公开资料和嘟文旁边显示的内容。当你填写完整的个人资料并设置了头像时,其他人更有可能关注你并与你互动。" other: 其他 errors: '400': 你提交的请求无效或格式不正确。 @@ -1275,7 +1281,7 @@ zh-CN: featured_tags: add_new: 添加新条目 errors: - limit: 您所推荐的话题标签数已达上限 + limit: 你所推荐的话题标签数已达上限 hint_html: "什么是精选话题标签? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。" filters: contexts: @@ -1321,7 +1327,7 @@ zh-CN: all_items_on_page_selected_html: other: 此页面上的所有 %{count} 项目已被选中。 all_matching_items_selected_html: - other: 所有 %{count} 匹配您搜索的项目都已被选中。 + other: 所有 %{count} 匹配你搜索的项目都已被选中。 cancel: 取消 changes_saved_msg: 更改保存成功! confirm: 确认 @@ -1332,7 +1338,7 @@ zh-CN: order_by: 排序方式 save_changes: 保存更改 select_all_matching_items: - other: 选择匹配您搜索的所有 %{count} 个项目。 + other: 选择匹配你搜索的所有 %{count} 个项目。 today: 今天 validation_errors: other: 出错啦!检查一下下面 %{count} 处出错的地方吧 @@ -1353,7 +1359,7 @@ zh-CN: overwrite_long: 将当前记录替换为新记录 overwrite_preambles: blocking_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个帐户替换你的屏蔽列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的屏蔽列表。 bookmarks_html: other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的书签。 domain_blocking_html: @@ -1363,7 +1369,7 @@ zh-CN: lists_html: other: 你即将使用来自 %{filename} 的内容替换你的列表。最多将会有 %{count} 个账户 被添加到新列表。 muting_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 个帐户替换你的已隐藏账户列表。 + other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的已隐藏账户列表。 preambles: blocking_html: other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个账号。 @@ -1397,7 +1403,7 @@ zh-CN: type: 导入类型 type_groups: constructive: 关注和书签 - destructive: 屏蔽和隐藏 + destructive: 屏蔽与隐藏 types: blocking: 屏蔽列表 bookmarks: 书签 @@ -1430,14 +1436,14 @@ zh-CN: title: 邀请用户 lists: errors: - limit: 您已达到列表数量的上限 + limit: 你已达到列表数量的上限 login_activities: authentication_methods: otp: 双因素认证应用 password: 密码 sign_in_token: 邮件安全码 webauthn: 安全密钥 - description_html: 如有您无法识别的活动,请考虑更改密码并启用双因素认证。 + description_html: 如有你无法识别的活动,请考虑更改密码并启用双因素认证。 empty: 没有可用的认证记录 failed_sign_in_html: 失败的 %{method} 登录尝试,来自 %{ip} (%{browser}) successful_sign_in_html: 通过 %{method} 成功登录,来自 %{ip} (%{browser}) @@ -1495,7 +1501,7 @@ zh-CN: other_data: 不会自动移动其它数据 redirect: 在收到一个跳转通知后,你当前的账号资料将会更新,并被排除在搜索范围外 moderation: - title: 运营 + title: 审核 move_handler: carry_blocks_over_text: 这个用户迁移自你屏蔽过的 %{acct} carry_mutes_over_text: 这个用户由你隐藏过的 %{acct} 迁移而来 @@ -1523,7 +1529,7 @@ zh-CN: title: 新的关注请求 mention: action: 回复 - body: "%{name} 在嘟文中提到了你:" + body: "%{name} 提到了你:" subject: "%{name} 提到了你" title: 新的提及 poll: @@ -1585,7 +1591,7 @@ zh-CN: privacy: 隐私 privacy_hint_html: 控制你愿意向他人透露多少信息。通过浏览他人的关注列表和查看他们发嘟所用的应用,人们可以发现有趣的用户和酷炫的应用,但你可能更喜欢将其隐藏起来。 reach: 范围 - reach_hint_html: 控制您是否希望被新人发现和关注。您是否希望您的嘟文出现在“探索”页面上?您是否希望其他人在关注推荐中看到您?您是想自动接受所有新粉丝,还是对每个粉丝都进行仔细的筛选? + reach_hint_html: 控制你是否希望被新人发现和关注。你是否希望你的嘟文出现在“探索”页面上?你是否希望其他人在关注推荐中看到你?你是想自动接受所有新粉丝,还是对每个粉丝都进行仔细的筛选? search: 搜索 search_hint_html: 控制你希望被找到的方式。你想让人们通过你公开发布的内容来找到你吗?当在网络上搜索时,你是否希望Mastodon之外的人能够找到你的个人资料?请注意,我们无法保证完全排除所有搜索引擎对公开信息的索引。 title: 隐私与可达性 @@ -1593,16 +1599,16 @@ zh-CN: title: 隐私政策 reactions: errors: - limit_reached: 互动种类的限制 - unrecognized_emoji: 不是一个可识别的表情 + limit_reached: 回应种类个数超过限制 + unrecognized_emoji: 不是一个可被识别的表情 redirects: prompt: 如果你信任此链接,请单击以继续跳转。 title: 你正在离开 %{instance} 。 relationships: activity: 账号活动 - confirm_follow_selected_followers: 您确定想要关注所选的关注者吗? - confirm_remove_selected_followers: 您确定想要取关所选的关注者吗? - confirm_remove_selected_follows: 您确定要删除选定的关注着吗? + confirm_follow_selected_followers: 你确定想要关注所选的关注者吗? + confirm_remove_selected_followers: 你确定想要取关所选的关注者吗? + confirm_remove_selected_follows: 您确定要删除选定的关注者吗? dormant: 休眠 follow_failure: 无法关注选中的部分账户。 follow_selected_followers: 关注选中的关注者 @@ -1649,12 +1655,12 @@ zh-CN: generic: 未知浏览器 huawei_browser: 华为浏览器 ie: IE 浏览器 - micro_messenger: 微信 + micro_messenger: MicroMessenger nokia: Nokia S40 Ovi 浏览器 opera: 欧朋浏览器 otter: Otter phantom_js: PhantomJS - qq: QQ浏览器 + qq: QQ 浏览器 safari: Safari uc_browser: UC 浏览器 unknown_browser: 未知浏览器 @@ -1673,7 +1679,7 @@ zh-CN: ios: iOS kai_os: KaiOS linux: Linux - mac: Mac + mac: macOS unknown_platform: 未知平台 windows: Windows windows_mobile: Windows Mobile @@ -1695,15 +1701,15 @@ zh-CN: export: 导出 featured_tags: 精选的话题标签 import: 导入 - import_and_export: 导入和导出 + import_and_export: 导入与导出 migrate: 账户迁移 notifications: 邮件通知 - preferences: 首选项 + preferences: 偏好设置 profile: 个人资料 relationships: 关注管理 severed_relationships: 已断开的关系 statuses_cleanup: 自动删除嘟文 - strikes: 操作记录 + strikes: 管理处罚记录 two_factor_authentication: 双因素认证 webauthn_authentication: 安全密钥 severed_relationships: @@ -1737,7 +1743,7 @@ zh-CN: over_character_limit: 超过了 %{max} 字的限制 pin_errors: direct: 仅对被提及的用户可见的帖子不能被置顶 - limit: 你所固定的嘟文数量已达到上限 + limit: 你置顶的嘟文数量已达上限 ownership: 不能置顶别人的嘟文 reblog: 不能置顶转嘟 title: "%{name}:“%{quote}”" @@ -1747,13 +1753,13 @@ zh-CN: private_long: 只有关注你的用户能看到 public: 公开 public_long: 所有人可见,并会出现在公共时间轴上 - unlisted: 不公开 + unlisted: 悄悄公开 unlisted_long: 所有人可见,但不会出现在公共时间轴上 statuses_cleanup: enabled: 自动删除旧嘟文 - enabled_hint: 达到指定过期时间后自动删除您的嘟文,除非满足下列条件之一 + enabled_hint: 达到指定过期时间后自动删除你的嘟文,除非满足下列条件之一 exceptions: 例外 - explanation: 删除嘟文是一个消耗系统资源的耗时操作,所以这个操作会在服务器空闲时完成。因此,您的嘟文可能会在达到过期阈值之后一段时间才会被删除。 + explanation: 删除嘟文是一个消耗系统资源的耗时操作,所以这个操作会在服务器空闲时完成。因此,你的嘟文可能会在达到过期阈值之后一段时间才会被删除。 ignore_favs: 取消喜欢 ignore_reblogs: 忽略转嘟 interaction_exceptions: 基于互动的例外 @@ -1792,10 +1798,10 @@ zh-CN: tags: does_not_match_previous_name: 和之前的名称不匹配 themes: - contrast: Mastodon(高对比度) - default: Mastodon(暗色主题) - mastodon-light: Mastodon(亮色主题) - system: 自动切换(使用系统主题) + contrast: Mastodon (高对比度) + default: Mastodon (暗色) + mastodon-light: Mastodon (亮色) + system: 自动切换 (使用系统主题) time: formats: default: "%Y年%m月%d日 %H:%M" @@ -1847,10 +1853,10 @@ zh-CN: suspicious_sign_in: change_password: 更改密码 details: 以下是该次登录的详细信息: - explanation: 我们检测到有新 IP 地址登录了您的账号。 - further_actions_html: 如果不是您本人操作,我们建议您立即 %{action} 并启用双因素认证,以确保账号安全。 - subject: 已有新 IP 地址访问了您的账号 - title: 新登录 + explanation: 我们检测到有新 IP 地址登录了你的账号。 + further_actions_html: 如果不是你本人操作,我们建议你立即 %{action} 并启用双因素认证,以确保账号安全。 + subject: 已有新 IP 地址访问了你的账号 + title: 一次新登录 warning: appeal: 提交申诉 appeal_description: 如果你认为此结果有误,可以向 %{instance} 的工作人员提交申诉。 @@ -1895,7 +1901,7 @@ zh-CN: explanation: 下面是几个小贴士,希望它们能帮到你 feature_action: 了解更多 feature_audience: Mastodon 为你提供了无需中间商即可管理受众的独特可能。Mastodon 可被部署在你自己的基础设施上,允许你关注其它任何 Mastodon 在线服务器的用户,或被任何其他在线 Mastodon 服务器的用户关注,并且不受你之外的任何人控制。 - feature_audience_title: 放手去建立起你的受众 + feature_audience_title: 自由吸引你的受众 feature_control: 你最清楚你想在你自己的主页中看到什么动态。没有算法或广告浪费你的时间。你可以用一个账号关注任何 Mastodon 服务器上的任何人,并按时间顺序获得他们发布的嘟文,让你的互联网的角落更合自己的心意。 feature_control_title: 掌控自己的时间线 feature_creativity: Mastodon 支持音频、视频和图片、无障碍描述、投票、内容警告, 动画头像、自定义表情包、缩略图裁剪控制等功能,帮助你在网上尽情表达自己。无论你是要发布你的艺术作品、音乐还是播客,Mastodon 都能为你服务。 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 6f0a99a5b3..752c9b5cbf 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -777,7 +777,6 @@ zh-HK: original_status: 原始帖文 reblogs: 轉發 status_changed: 帖文已變更 - title: 帳戶文章 - @%{name} trending: 熱門 visibility: 可見性 with_media: 含有媒體檔案 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index ce6bd3e8f5..701ea0ea53 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -814,8 +814,10 @@ zh-TW: back_to_account: 返回帳號資訊頁面 back_to_report: 回到檢舉報告頁面 batch: + add_to_report: '新增至報告 #%{id}' remove_from_report: 自檢舉報告中移除 report: 檢舉報告 + contents: 內容 deleted: 已刪除 favourites: 最愛 history: 版本紀錄 @@ -824,13 +826,17 @@ zh-TW: media: title: 媒體檔案 metadata: 詮釋資料 + no_history: 此嘟文未曾被編輯 no_status_selected: 因未選取嘟文,所以什麼事都沒發生。 open: 公開嘟文 original_status: 原始嘟文 reblogs: 轉嘟 + replied_to_html: 回覆給 %{acct_link} status_changed: 嘟文已編輯 - title: 帳號嘟文 - @%{name} + status_title: 由 @%{name} 發嘟 + title: 嘟文帳號 - @%{name} trending: 熱門 + view_publicly: 公開檢視 visibility: 可見性 with_media: 含有媒體檔案 strikes: From be413d67de3357ad7cd601970cb9884431edad9e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 04:22:09 -0500 Subject: [PATCH 398/550] `Form::Import` spec reduce factories (#32924) --- spec/models/form/import_spec.rb | 57 +++++++++------------------------ 1 file changed, 16 insertions(+), 41 deletions(-) diff --git a/spec/models/form/import_spec.rb b/spec/models/form/import_spec.rb index 22ffdfd877..e14ad6eca0 100644 --- a/spec/models/form/import_spec.rb +++ b/spec/models/form/import_spec.rb @@ -237,51 +237,26 @@ RSpec.describe Form::Import do let(:import_file) { file } let(:import_mode) { mode } - before do - subject.save - end - - it 'creates the expected rows' do - expect(account.bulk_imports.first.rows.pluck(:data)).to match_array(expected_rows) - end + before { subject.save } context 'with a BulkImport' do let(:bulk_import) { account.bulk_imports.first } - it 'creates a non-nil bulk import' do - expect(bulk_import).to_not be_nil - end - - it 'matches the subjects type' do - expect(bulk_import.type.to_sym).to eq subject.type.to_sym - end - - it 'matches the subjects original filename' do - expect(bulk_import.original_filename).to eq subject.data.original_filename - end - - it 'matches the subjects likely_mismatched? value' do - expect(bulk_import.likely_mismatched?).to eq subject.likely_mismatched? - end - - it 'matches the subject overwrite value' do - expect(bulk_import.overwrite?).to eq !!subject.overwrite # rubocop:disable Style/DoubleNegation - end - - it 'has zero processed items' do - expect(bulk_import.processed_items).to eq 0 - end - - it 'has zero imported items' do - expect(bulk_import.imported_items).to eq 0 - end - - it 'has a correct total_items value' do - expect(bulk_import.total_items).to eq bulk_import.rows.count - end - - it 'defaults to unconfirmed true' do - expect(bulk_import.state_unconfirmed?).to be true + it 'creates a bulk import with correct values' do + expect(bulk_import) + .to be_present + .and have_attributes( + type: eq(subject.type), + original_filename: eq(subject.data.original_filename), + likely_mismatched?: eq(subject.likely_mismatched?), + overwrite?: eq(!!subject.overwrite), # rubocop:disable Style/DoubleNegation + processed_items: eq(0), + imported_items: eq(0), + total_items: eq(bulk_import.rows.count), + state_unconfirmed?: be(true) + ) + expect(bulk_import.rows.pluck(:data)) + .to match_array(expected_rows) end end end From 16addf47c72ceb258e0cd020620407bb0e78f6af Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 04:23:07 -0500 Subject: [PATCH 399/550] Reduce long lines in `relationships/show` view (#32922) --- app/views/relationships/show.html.haml | 28 ++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/app/views/relationships/show.html.haml b/app/views/relationships/show.html.haml index 7478b8c5ce..b062a4f53d 100644 --- a/app/views/relationships/show.html.haml +++ b/app/views/relationships/show.html.haml @@ -42,13 +42,33 @@ %label.batch-table__toolbar__select.batch-checkbox-all = check_box_tag :batch_checkbox_all, nil, false .batch-table__toolbar__actions - = f.button safe_join([material_symbol('person_add'), t('relationships.follow_selected_followers')]), name: :follow, class: 'table-action-link', type: :submit, data: { confirm: t('relationships.confirm_follow_selected_followers') } if followed_by_relationship? && !mutual_relationship? + - if followed_by_relationship? && !mutual_relationship? + = f.button safe_join([material_symbol('person_add'), t('relationships.follow_selected_followers')]), + class: 'table-action-link', + data: { confirm: t('relationships.confirm_follow_selected_followers') }, + name: :follow, + type: :submit - = f.button safe_join([material_symbol('person_remove'), t('relationships.remove_selected_follows')]), name: :unfollow, class: 'table-action-link', type: :submit, data: { confirm: t('relationships.confirm_remove_selected_follows') } unless followed_by_relationship? + - unless followed_by_relationship? + = f.button safe_join([material_symbol('person_remove'), t('relationships.remove_selected_follows')]), + class: 'table-action-link', + data: { confirm: t('relationships.confirm_remove_selected_follows') }, + name: :unfollow, + type: :submit - = f.button safe_join([material_symbol('delete'), t('relationships.remove_selected_followers')]), name: :remove_from_followers, class: 'table-action-link', type: :submit, data: { confirm: t('relationships.confirm_remove_selected_followers') } unless following_relationship? + - unless following_relationship? + = f.button safe_join([material_symbol('delete'), t('relationships.remove_selected_followers')]), + class: 'table-action-link', + data: { confirm: t('relationships.confirm_remove_selected_followers') }, + name: :remove_from_followers, + type: :submit - = f.button safe_join([material_symbol('delete'), t('relationships.remove_selected_domains')]), name: :remove_domains_from_followers, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } if followed_by_relationship? + - if followed_by_relationship? + = f.button safe_join([material_symbol('delete'), t('relationships.remove_selected_domains')]), + class: 'table-action-link', + data: { confirm: t('admin.reports.are_you_sure') }, + name: :remove_domains_from_followers, + type: :submit .batch-table__body - if @accounts.empty? = nothing_here 'nothing-here--under-tabs' From c511cbcd6cdcaf7babce610db24db55498891ecc Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 04:23:38 -0500 Subject: [PATCH 400/550] Extract constants for controller `LIMIT` queries (#32921) --- app/controllers/admin/instances_controller.rb | 4 +++- .../api/v1/featured_tags/suggestions_controller.rb | 4 +++- app/controllers/settings/featured_tags_controller.rb | 4 +++- app/controllers/settings/imports_controller.rb | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index d7f88a71f3..a48c4773ed 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -5,6 +5,8 @@ module Admin before_action :set_instances, only: :index before_action :set_instance, except: :index + LOGS_LIMIT = 5 + def index authorize :instance, :index? preload_delivery_failures! @@ -13,7 +15,7 @@ module Admin def show authorize :instance, :show? @time_period = (6.days.ago.to_date...Time.now.utc.to_date) - @action_logs = Admin::ActionLogFilter.new(target_domain: @instance.domain).results.limit(5) + @action_logs = Admin::ActionLogFilter.new(target_domain: @instance.domain).results.limit(LOGS_LIMIT) end def destroy diff --git a/app/controllers/api/v1/featured_tags/suggestions_controller.rb b/app/controllers/api/v1/featured_tags/suggestions_controller.rb index 9c72e4380d..d533b1af7b 100644 --- a/app/controllers/api/v1/featured_tags/suggestions_controller.rb +++ b/app/controllers/api/v1/featured_tags/suggestions_controller.rb @@ -5,6 +5,8 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController before_action :require_user! before_action :set_recently_used_tags, only: :index + RECENT_TAGS_LIMIT = 10 + def index render json: @recently_used_tags, each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@recently_used_tags, current_user&.account_id) end @@ -12,6 +14,6 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController private def set_recently_used_tags - @recently_used_tags = Tag.suggestions_for_account(current_account).limit(10) + @recently_used_tags = Tag.suggestions_for_account(current_account).limit(RECENT_TAGS_LIMIT) end end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index 90c112e219..7e29dd1d29 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -5,6 +5,8 @@ class Settings::FeaturedTagsController < Settings::BaseController before_action :set_featured_tag, except: [:index, :create] before_action :set_recently_used_tags, only: :index + RECENT_TAGS_LIMIT = 10 + def index @featured_tag = FeaturedTag.new end @@ -38,7 +40,7 @@ class Settings::FeaturedTagsController < Settings::BaseController end def set_recently_used_tags - @recently_used_tags = Tag.suggestions_for_account(current_account).limit(10) + @recently_used_tags = Tag.suggestions_for_account(current_account).limit(RECENT_TAGS_LIMIT) end def featured_tag_params diff --git a/app/controllers/settings/imports_controller.rb b/app/controllers/settings/imports_controller.rb index 569aa07c53..5346a448a3 100644 --- a/app/controllers/settings/imports_controller.rb +++ b/app/controllers/settings/imports_controller.rb @@ -24,6 +24,8 @@ class Settings::ImportsController < Settings::BaseController lists: false, }.freeze + RECENT_IMPORTS_LIMIT = 10 + def index @import = Form::Import.new(current_account: current_account) end @@ -96,6 +98,6 @@ class Settings::ImportsController < Settings::BaseController end def set_recent_imports - @recent_imports = current_account.bulk_imports.reorder(id: :desc).limit(10) + @recent_imports = current_account.bulk_imports.reorder(id: :desc).limit(RECENT_IMPORTS_LIMIT) end end From d8e907fae3a1dacf450595ccfdb2864c1e12f1c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 09:25:11 +0000 Subject: [PATCH 401/550] Update dependency aws-sdk-s3 to v1.171.0 (#32901) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 106fb0d0fd..c7ab4e66fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -97,8 +97,8 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.1004.0) - aws-sdk-core (3.212.0) + aws-partitions (1.1008.0) + aws-sdk-core (3.213.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -106,7 +106,7 @@ GEM aws-sdk-kms (1.95.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.170.1) + aws-sdk-s3 (1.171.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From 03ee08c2da6634fa1cf566580889e249181200ac Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 04:31:25 -0500 Subject: [PATCH 402/550] Use `nil` instead of `false` for datetime value in spec (#32926) --- spec/models/concerns/account/sensitizes_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/concerns/account/sensitizes_spec.rb b/spec/models/concerns/account/sensitizes_spec.rb index 3596c9a126..5416d40570 100644 --- a/spec/models/concerns/account/sensitizes_spec.rb +++ b/spec/models/concerns/account/sensitizes_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Account::Sensitizes do describe '.sensitized' do let(:sensitized_account) { Fabricate :account, sensitized_at: 2.days.ago } - before { Fabricate :account, sensitized_at: false } + before { Fabricate :account, sensitized_at: nil } it 'returns an array of accounts who are sensitized' do expect(Account.sensitized) From 9a46329fbda5926aefc8fdcd9c7a19a2f516885b Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Mon, 18 Nov 2024 10:34:34 +0100 Subject: [PATCH 403/550] Streaming: add development logging of database queries (#32945) --- streaming/database.js | 33 ++++++++++++++++++++++++++++++++- streaming/index.js | 3 ++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/streaming/database.js b/streaming/database.js index 9f1d742143..60a3b34ef0 100644 --- a/streaming/database.js +++ b/streaming/database.js @@ -116,13 +116,44 @@ let pool; /** * * @param {pg.PoolConfig} config + * @param {string} environment + * @param {import('pino').Logger} logger * @returns {pg.Pool} */ -export function getPool(config) { +export function getPool(config, environment, logger) { if (pool) { return pool; } pool = new pg.Pool(config); + + // Setup logging on pool.query and client.query for checked out clients: + // This is taken from: https://node-postgres.com/guides/project-structure + if (environment === 'development') { + const logQuery = (originalQuery) => { + return async (queryTextOrConfig, values, ...rest) => { + const start = process.hrtime(); + + const result = await originalQuery.apply(pool, [queryTextOrConfig, values, ...rest]); + + const duration = process.hrtime(start); + const durationInMs = (duration[0] * 1000000000 + duration[1]) / 1000000; + + logger.debug({ + query: queryTextOrConfig, + values, + duration: durationInMs + }, 'Executed database query'); + + return result; + }; + }; + + pool.on('connect', (client) => { + const originalQuery = client.query.bind(client); + client.query = logQuery(originalQuery); + }); + } + return pool; } diff --git a/streaming/index.js b/streaming/index.js index 3e362f1860..e00da1bb83 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -101,7 +101,8 @@ const CHANNEL_NAMES = [ ]; const startServer = async () => { - const pgPool = Database.getPool(Database.configFromEnv(process.env, environment)); + const pgConfig = Database.configFromEnv(process.env, environment); + const pgPool = Database.getPool(pgConfig, environment, logger); const metrics = setupMetrics(CHANNEL_NAMES, pgPool); From 911d7dbbf6884d3a67a074a595a5c26c6b8b5434 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 18 Nov 2024 10:37:01 +0100 Subject: [PATCH 404/550] Fix `min_id` and `max_id` causing error in search API (#32857) --- app/lib/search_query_transformer.rb | 20 ++++++++------------ lib/exceptions.rb | 1 - spec/lib/search_query_transformer_spec.rb | 2 +- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb index 1306ed12ed..59352c6e6e 100644 --- a/app/lib/search_query_transformer.rb +++ b/app/lib/search_query_transformer.rb @@ -144,6 +144,8 @@ class SearchQueryTransformer < Parslet::Transform end class PrefixClause + EPOCH_RE = /\A\d+\z/ + attr_reader :operator, :prefix, :term def initialize(prefix, operator, term, options = {}) @@ -168,15 +170,15 @@ class SearchQueryTransformer < Parslet::Transform when 'before' @filter = :created_at @type = :range - @term = { lt: TermValidator.validate_date!(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } + @term = { lt: date_from_term(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } when 'after' @filter = :created_at @type = :range - @term = { gt: TermValidator.validate_date!(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } + @term = { gt: date_from_term(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } when 'during' @filter = :created_at @type = :range - @term = { gte: TermValidator.validate_date!(term), lte: TermValidator.validate_date!(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } + @term = { gte: date_from_term(term), lte: date_from_term(term), time_zone: @options[:current_account]&.user_time_zone.presence || 'UTC' } when 'in' @operator = :flag @term = term @@ -222,16 +224,10 @@ class SearchQueryTransformer < Parslet::Transform term end - end - class TermValidator - STRICT_DATE_REGEX = /\A\d{4}-\d{2}-\d{2}\z/ # yyyy-MM-dd - EPOCH_MILLIS_REGEX = /\A\d{1,19}\z/ - - def self.validate_date!(value) - return value if value.match?(STRICT_DATE_REGEX) || value.match?(EPOCH_MILLIS_REGEX) - - raise Mastodon::FilterValidationError, "Invalid date #{value}" + def date_from_term(term) + DateTime.iso8601(term) unless term.match?(EPOCH_RE) # This will raise Date::Error if the date is invalid + term end end diff --git a/lib/exceptions.rb b/lib/exceptions.rb index 1910d37a13..135f8126a4 100644 --- a/lib/exceptions.rb +++ b/lib/exceptions.rb @@ -8,7 +8,6 @@ module Mastodon class LengthValidationError < ValidationError; end class DimensionsValidationError < ValidationError; end class StreamValidationError < ValidationError; end - class FilterValidationError < ValidationError; end class RaceConditionError < Error; end class RateLimitExceededError < Error; end class SyntaxError < Error; end diff --git a/spec/lib/search_query_transformer_spec.rb b/spec/lib/search_query_transformer_spec.rb index 9399f3503d..b677d88ed0 100644 --- a/spec/lib/search_query_transformer_spec.rb +++ b/spec/lib/search_query_transformer_spec.rb @@ -34,7 +34,7 @@ RSpec.describe SearchQueryTransformer do let(:query) { "#{operator}:\"abc\"" } it 'raises an exception' do - expect { subject }.to raise_error(Mastodon::FilterValidationError, 'Invalid date abc') + expect { subject }.to raise_error(Date::Error) end end end From c0c34d35e22e5ac9c87a5bffff5b02b06f772f3a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 04:57:16 -0500 Subject: [PATCH 405/550] Move self destruct check to `config_for` and add constant for verifier string (#32943) --- app/helpers/self_destruct_helper.rb | 6 ++++-- config/mastodon.yml | 1 + lib/mastodon/cli/federation.rb | 2 +- spec/helpers/self_destruct_helper_spec.rb | 22 +++++++++++++--------- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/helpers/self_destruct_helper.rb b/app/helpers/self_destruct_helper.rb index 78557c25e5..f1927b1e04 100644 --- a/app/helpers/self_destruct_helper.rb +++ b/app/helpers/self_destruct_helper.rb @@ -1,9 +1,11 @@ # frozen_string_literal: true module SelfDestructHelper + VERIFY_PURPOSE = 'self-destruct' + def self.self_destruct? - value = ENV.fetch('SELF_DESTRUCT', nil) - value.present? && Rails.application.message_verifier('self-destruct').verify(value) == ENV['LOCAL_DOMAIN'] + value = Rails.configuration.x.mastodon.self_destruct_value + value.present? && Rails.application.message_verifier(VERIFY_PURPOSE).verify(value) == ENV['LOCAL_DOMAIN'] rescue ActiveSupport::MessageVerifier::InvalidSignature false end diff --git a/config/mastodon.yml b/config/mastodon.yml index 255213b4b7..2c09c59e0a 100644 --- a/config/mastodon.yml +++ b/config/mastodon.yml @@ -1,3 +1,4 @@ --- shared: + self_destruct_value: <%= ENV.fetch('SELF_DESTRUCT', nil) %> software_update_url: <%= ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check') %> diff --git a/lib/mastodon/cli/federation.rb b/lib/mastodon/cli/federation.rb index c738796557..f512bca358 100644 --- a/lib/mastodon/cli/federation.rb +++ b/lib/mastodon/cli/federation.rb @@ -76,7 +76,7 @@ module Mastodon::CLI def self_destruct_value Rails .application - .message_verifier('self-destruct') + .message_verifier(SelfDestructHelper::VERIFY_PURPOSE) .generate(Rails.configuration.x.local_domain) end end diff --git a/spec/helpers/self_destruct_helper_spec.rb b/spec/helpers/self_destruct_helper_spec.rb index 09d7347eee..dca1590764 100644 --- a/spec/helpers/self_destruct_helper_spec.rb +++ b/spec/helpers/self_destruct_helper_spec.rb @@ -3,19 +3,20 @@ require 'rails_helper' RSpec.describe SelfDestructHelper do - describe 'self_destruct?' do + describe '#self_destruct?' do + before { Rails.configuration.x.mastodon.self_destruct_value = destruct_value } + after { Rails.configuration.x.mastodon.self_destruct_value = nil } + context 'when SELF_DESTRUCT is unset' do + let(:destruct_value) { nil } + it 'returns false' do expect(helper.self_destruct?).to be false end end context 'when SELF_DESTRUCT is set to an invalid value' do - around do |example| - ClimateControl.modify SELF_DESTRUCT: 'true' do - example.run - end - end + let(:destruct_value) { 'true' } it 'returns false' do expect(helper.self_destruct?).to be false @@ -23,9 +24,10 @@ RSpec.describe SelfDestructHelper do end context 'when SELF_DESTRUCT is set to value signed for the wrong purpose' do + let(:destruct_value) { Rails.configuration.x.mastodon.self_destruct_value = Rails.application.message_verifier('foo').generate('example.com') } + around do |example| ClimateControl.modify( - SELF_DESTRUCT: Rails.application.message_verifier('foo').generate('example.com'), LOCAL_DOMAIN: 'example.com' ) do example.run @@ -38,9 +40,10 @@ RSpec.describe SelfDestructHelper do end context 'when SELF_DESTRUCT is set to value signed for the wrong domain' do + let(:destruct_value) { Rails.configuration.x.mastodon.self_destruct_value = Rails.application.message_verifier(described_class::VERIFY_PURPOSE).generate('foo.com') } + around do |example| ClimateControl.modify( - SELF_DESTRUCT: Rails.application.message_verifier('self-destruct').generate('foo.com'), LOCAL_DOMAIN: 'example.com' ) do example.run @@ -53,9 +56,10 @@ RSpec.describe SelfDestructHelper do end context 'when SELF_DESTRUCT is set to a correctly-signed value' do + let(:destruct_value) { Rails.configuration.x.mastodon.self_destruct_value = Rails.application.message_verifier(described_class::VERIFY_PURPOSE).generate('example.com') } + around do |example| ClimateControl.modify( - SELF_DESTRUCT: Rails.application.message_verifier('self-destruct').generate('example.com'), LOCAL_DOMAIN: 'example.com' ) do example.run From 3e44dca0b4d914886dbd4132d5eadd43c4be4304 Mon Sep 17 00:00:00 2001 From: "Andrew W. Lee" Date: Mon, 18 Nov 2024 06:40:02 -0800 Subject: [PATCH 406/550] Change dependency from annotate to annotaterb (#30232) --- .annotaterb.yml | 59 +++++++++++++++++++++++++++++ Gemfile | 2 +- Gemfile.lock | 6 +-- lib/tasks/annotate_rb.rake | 10 +++++ lib/tasks/auto_annotate_models.rake | 46 ---------------------- 5 files changed, 72 insertions(+), 51 deletions(-) create mode 100644 .annotaterb.yml create mode 100644 lib/tasks/annotate_rb.rake delete mode 100644 lib/tasks/auto_annotate_models.rake diff --git a/.annotaterb.yml b/.annotaterb.yml new file mode 100644 index 0000000000..df8e92b247 --- /dev/null +++ b/.annotaterb.yml @@ -0,0 +1,59 @@ +--- +:position: before +:position_in_additional_file_patterns: before +:position_in_class: before +:position_in_factory: before +:position_in_fixture: before +:position_in_routes: before +:position_in_serializer: before +:position_in_test: before +:classified_sort: true +:exclude_controllers: true +:exclude_factories: true +:exclude_fixtures: true +:exclude_helpers: true +:exclude_scaffolds: true +:exclude_serializers: true +:exclude_sti_subclasses: true +:exclude_tests: true +:force: false +:format_markdown: false +:format_rdoc: false +:format_yard: false +:frozen: false +:ignore_model_sub_dir: false +:ignore_unknown_models: false +:include_version: false +:show_complete_foreign_keys: false +:show_foreign_keys: false +:show_indexes: false +:simple_indexes: false +:sort: false +:timestamp: false +:trace: false +:with_comment: true +:with_column_comments: true +:with_table_comments: true +:active_admin: false +:command: +:debug: false +:hide_default_column_types: '' +:hide_limit_column_types: 'integer,boolean' +:ignore_columns: +:ignore_routes: +:models: true +:routes: false +:skip_on_db_migrate: false +:target_action: :do_annotations +:wrapper: +:wrapper_close: +:wrapper_open: +:classes_default_to_s: [] +:additional_file_patterns: [] +:model_dir: + - app/models +:require: [] +:root_dir: + - '' + +:show_check_constraints: false diff --git a/Gemfile b/Gemfile index 47506929b0..c8104d094e 100644 --- a/Gemfile +++ b/Gemfile @@ -172,7 +172,7 @@ group :development do gem 'rubocop-rspec_rails', require: false # Annotates modules with schema - gem 'annotate', '~> 3.2' + gem 'annotaterb', '~> 4.13' # Enhanced error message pages for development gem 'better_errors', '~> 2.9' diff --git a/Gemfile.lock b/Gemfile.lock index c7ab4e66fe..09017e3fa9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -90,9 +90,7 @@ GEM public_suffix (>= 2.0.2, < 7.0) aes_key_wrap (1.1.0) android_key_attestation (0.3.0) - annotate (3.2.0) - activerecord (>= 3.2, < 8.0) - rake (>= 10.4, < 14.0) + annotaterb (4.13.0) ast (2.4.2) attr_required (1.0.2) awrence (1.2.1) @@ -884,7 +882,7 @@ PLATFORMS DEPENDENCIES active_model_serializers (~> 0.10) addressable (~> 2.8) - annotate (~> 3.2) + annotaterb (~> 4.13) aws-sdk-s3 (~> 1.123) better_errors (~> 2.9) binding_of_caller (~> 1.0) diff --git a/lib/tasks/annotate_rb.rake b/lib/tasks/annotate_rb.rake new file mode 100644 index 0000000000..e8368b2e94 --- /dev/null +++ b/lib/tasks/annotate_rb.rake @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# This rake task was added by annotate_rb gem. + +# Can set `ANNOTATERB_SKIP_ON_DB_TASKS` to be anything to skip this +if Rails.env.development? && ENV['ANNOTATERB_SKIP_ON_DB_TASKS'].nil? + require 'annotate_rb' + + AnnotateRb::Core.load_rake_tasks +end diff --git a/lib/tasks/auto_annotate_models.rake b/lib/tasks/auto_annotate_models.rake deleted file mode 100644 index 4b5997920a..0000000000 --- a/lib/tasks/auto_annotate_models.rake +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -if Rails.env.development? - task :set_annotation_options do - Annotate.set_defaults( - 'routes' => 'false', - 'models' => 'true', - 'position_in_routes' => 'before', - 'position_in_class' => 'before', - 'position_in_test' => 'before', - 'position_in_fixture' => 'before', - 'position_in_factory' => 'before', - 'position_in_serializer' => 'before', - 'show_foreign_keys' => 'false', - 'show_indexes' => 'false', - 'simple_indexes' => 'false', - 'model_dir' => 'app/models', - 'root_dir' => '', - 'include_version' => 'false', - 'require' => '', - 'exclude_tests' => 'true', - 'exclude_fixtures' => 'true', - 'exclude_factories' => 'true', - 'exclude_serializers' => 'true', - 'exclude_scaffolds' => 'true', - 'exclude_controllers' => 'true', - 'exclude_helpers' => 'true', - 'ignore_model_sub_dir' => 'false', - 'ignore_columns' => nil, - 'ignore_routes' => nil, - 'ignore_unknown_models' => 'false', - 'hide_limit_column_types' => 'integer,boolean', - 'skip_on_db_migrate' => 'false', - 'format_bare' => 'true', - 'format_rdoc' => 'false', - 'format_markdown' => 'false', - 'sort' => 'false', - 'force' => 'false', - 'trace' => 'false', - 'wrapper_open' => nil, - 'wrapper_close' => nil - ) - end - - Annotate.load_tasks -end From 477412d62a9b90c83cc56fdfa12b3e5af1c1c0bc Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 09:58:45 -0500 Subject: [PATCH 407/550] Use hash arguments to `select` when possible (Rails 7.2) (#32917) --- .../api/v1/accounts/familiar_followers_controller.rb | 2 +- app/lib/feed_manager.rb | 6 +++--- app/lib/importer/statuses_index_importer.rb | 2 +- app/models/status.rb | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/controllers/api/v1/accounts/familiar_followers_controller.rb b/app/controllers/api/v1/accounts/familiar_followers_controller.rb index a49eb2eb27..81f0a9ed0f 100644 --- a/app/controllers/api/v1/accounts/familiar_followers_controller.rb +++ b/app/controllers/api/v1/accounts/familiar_followers_controller.rb @@ -12,7 +12,7 @@ class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController private def set_accounts - @accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections') + @accounts = Account.without_suspended.where(id: account_ids).select(:id, :hide_collections) end def familiar_followers diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 97cb25d58f..edd1162f4f 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -162,7 +162,7 @@ class FeedManager timeline_key = key(:home, into_account.id) timeline_status_ids = redis.zrange(timeline_key, 0, -1) - from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| + from_account.statuses.select(:id, :reblog_of_id).where(id: timeline_status_ids).reorder(nil).find_each do |status| remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end @@ -175,7 +175,7 @@ class FeedManager timeline_key = key(:list, list.id) timeline_status_ids = redis.zrange(timeline_key, 0, -1) - from_account.statuses.select('id, reblog_of_id').where(id: timeline_status_ids).reorder(nil).find_each do |status| + from_account.statuses.select(:id, :reblog_of_id).where(id: timeline_status_ids).reorder(nil).find_each do |status| remove_from_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) end end @@ -196,7 +196,7 @@ class FeedManager .where.not(account: into_account.following) .tagged_with_none(TagFollow.where(account: into_account).pluck(:tag_id)) - scope.select('id, reblog_of_id').reorder(nil).find_each do |status| + scope.select(:id, :reblog_of_id).reorder(nil).find_each do |status| remove_from_feed(:home, into_account.id, status, aggregate_reblogs: into_account.user&.aggregates_reblogs?) end end diff --git a/app/lib/importer/statuses_index_importer.rb b/app/lib/importer/statuses_index_importer.rb index 1922f65f6d..5c8a9f28c8 100644 --- a/app/lib/importer/statuses_index_importer.rb +++ b/app/lib/importer/statuses_index_importer.rb @@ -71,7 +71,7 @@ class Importer::StatusesIndexImporter < Importer::BaseImporter end def local_votes_scope - Poll.joins(:votes).where(votes: { account: Account.local }).select('polls.id, polls.status_id') + Poll.joins(:votes).where(votes: { account: Account.local }).select(polls: [:id, :status_id]) end def local_statuses_scope diff --git a/app/models/status.rb b/app/models/status.rb index c58de5114c..5a81b00773 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -356,23 +356,23 @@ class Status < ApplicationRecord end def favourites_map(status_ids, account_id) - Favourite.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true } + Favourite.select(:status_id).where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |f, h| h[f.status_id] = true } end def bookmarks_map(status_ids, account_id) - Bookmark.select('status_id').where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h + Bookmark.select(:status_id).where(status_id: status_ids).where(account_id: account_id).map { |f| [f.status_id, true] }.to_h end def reblogs_map(status_ids, account_id) - unscoped.select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).each_with_object({}) { |s, h| h[s.reblog_of_id] = true } + unscoped.select(:reblog_of_id).where(reblog_of_id: status_ids).where(account_id: account_id).each_with_object({}) { |s, h| h[s.reblog_of_id] = true } end def mutes_map(conversation_ids, account_id) - ConversationMute.select('conversation_id').where(conversation_id: conversation_ids).where(account_id: account_id).each_with_object({}) { |m, h| h[m.conversation_id] = true } + ConversationMute.select(:conversation_id).where(conversation_id: conversation_ids).where(account_id: account_id).each_with_object({}) { |m, h| h[m.conversation_id] = true } end def pins_map(status_ids, account_id) - StatusPin.select('status_id').where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |p, h| h[p.status_id] = true } + StatusPin.select(:status_id).where(status_id: status_ids).where(account_id: account_id).each_with_object({}) { |p, h| h[p.status_id] = true } end def from_text(text) From da826fe959ad58a747023483fadd50c400f5d90f Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 10:07:53 -0500 Subject: [PATCH 408/550] Use hash arguments to `order` when possible (Rails 7.2) (#32915) --- app/models/concerns/account/associations.rb | 2 +- app/models/concerns/account/interactions.rb | 12 ++++++------ app/models/instance_filter.rb | 4 ++-- app/models/tag.rb | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/models/concerns/account/associations.rb b/app/models/concerns/account/associations.rb index 4e29235b6b..cafb2d151c 100644 --- a/app/models/concerns/account/associations.rb +++ b/app/models/concerns/account/associations.rb @@ -48,7 +48,7 @@ module Account::Associations end # Status records pinned by the account - has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status + has_many :pinned_statuses, -> { reorder(status_pins: { created_at: :desc }) }, through: :status_pins, class_name: 'Status', source: :status # Account records endorsed (pinned) by the account has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account diff --git a/app/models/concerns/account/interactions.rb b/app/models/concerns/account/interactions.rb index 536afba17f..6f6b8c16d0 100644 --- a/app/models/concerns/account/interactions.rb +++ b/app/models/concerns/account/interactions.rb @@ -80,8 +80,8 @@ module Account::Interactions has_many :passive_relationships, foreign_key: 'target_account_id', inverse_of: :target_account end - has_many :following, -> { order('follows.id desc') }, through: :active_relationships, source: :target_account - has_many :followers, -> { order('follows.id desc') }, through: :passive_relationships, source: :account + has_many :following, -> { order(follows: { id: :desc }) }, through: :active_relationships, source: :target_account + has_many :followers, -> { order(follows: { id: :desc }) }, through: :passive_relationships, source: :account with_options class_name: 'SeveredRelationship', dependent: :destroy do has_many :severed_relationships, foreign_key: 'local_account_id', inverse_of: :local_account @@ -96,16 +96,16 @@ module Account::Interactions has_many :block_relationships, foreign_key: 'account_id', inverse_of: :account has_many :blocked_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account end - has_many :blocking, -> { order('blocks.id desc') }, through: :block_relationships, source: :target_account - has_many :blocked_by, -> { order('blocks.id desc') }, through: :blocked_by_relationships, source: :account + has_many :blocking, -> { order(blocks: { id: :desc }) }, through: :block_relationships, source: :target_account + has_many :blocked_by, -> { order(blocks: { id: :desc }) }, through: :blocked_by_relationships, source: :account # Mute relationships with_options class_name: 'Mute', dependent: :destroy do has_many :mute_relationships, foreign_key: 'account_id', inverse_of: :account has_many :muted_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account end - has_many :muting, -> { order('mutes.id desc') }, through: :mute_relationships, source: :target_account - has_many :muted_by, -> { order('mutes.id desc') }, through: :muted_by_relationships, source: :account + has_many :muting, -> { order(mutes: { id: :desc }) }, through: :mute_relationships, source: :target_account + has_many :muted_by, -> { order(mutes: { id: :desc }) }, through: :muted_by_relationships, source: :account has_many :conversation_mutes, dependent: :destroy has_many :domain_blocks, class_name: 'AccountDomainBlock', dependent: :destroy has_many :announcement_mutes, dependent: :destroy diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb index 1d94c919f9..7e71640e52 100644 --- a/app/models/instance_filter.rb +++ b/app/models/instance_filter.rb @@ -28,9 +28,9 @@ class InstanceFilter def scope_for(key, value) case key.to_s when 'limited' - Instance.joins(:domain_block).reorder(Arel.sql('domain_blocks.id desc')) + Instance.joins(:domain_block).reorder(domain_blocks: { id: :desc }) when 'allowed' - Instance.joins(:domain_allow).reorder(Arel.sql('domain_allows.id desc')) + Instance.joins(:domain_allow).reorder(domain_allows: { id: :desc }) when 'by_domain' Instance.matches_domain(value) when 'availability' diff --git a/app/models/tag.rb b/app/models/tag.rb index 93210eb307..67fa9e5d3a 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -61,7 +61,7 @@ class Tag < ApplicationRecord scope :recently_used, lambda { |account| joins(:statuses) .where(statuses: { id: account.statuses.select(:id).limit(RECENT_STATUS_LIMIT) }) - .group(:id).order(Arel.sql('count(*) desc')) + .group(:id).order(Arel.star.count.desc) } scope :matches_name, ->(term) { where(arel_table[:name].lower.matches(arel_table.lower("#{sanitize_sql_like(Tag.normalize(term))}%"), nil, true)) } # Search with case-sensitive to use B-tree index @@ -127,7 +127,7 @@ class Tag < ApplicationRecord query = query.merge(Tag.listable) if options[:exclude_unlistable] query = query.merge(matching_name(stripped_term).or(reviewed)) if options[:exclude_unreviewed] - query.order(Arel.sql('length(name) ASC, name ASC')) + query.order(Arel.sql('LENGTH(name)').asc, name: :asc) .limit(limit) .offset(offset) end From 30a79865698b1fbef2b1a6e818ce6984db68d551 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 10:42:45 -0500 Subject: [PATCH 409/550] Add coverage for fixing the thing with the dates in the search area (#32958) --- spec/lib/search_query_transformer_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/search_query_transformer_spec.rb b/spec/lib/search_query_transformer_spec.rb index b677d88ed0..b69e3afc9d 100644 --- a/spec/lib/search_query_transformer_spec.rb +++ b/spec/lib/search_query_transformer_spec.rb @@ -16,6 +16,7 @@ RSpec.describe SearchQueryTransformer do ['"2022-01-01"', '2022-01-01'], ['12345678', '12345678'], ['"12345678"', '12345678'], + ['"2024-10-31T23:47:20Z"', '2024-10-31T23:47:20Z'], ].each do |value, parsed| context "with #{operator}:#{value}" do let(:query) { "#{operator}:#{value}" } From 295ad6f19a016b3f16e1201ffcbb1b3ad6b455a2 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 18 Nov 2024 11:37:21 -0500 Subject: [PATCH 410/550] Prep work for coverage addition to `ActivityPub::DeliveryWorker` spec (#32944) --- .../activitypub/delivery_worker_spec.rb | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/spec/workers/activitypub/delivery_worker_spec.rb b/spec/workers/activitypub/delivery_worker_spec.rb index 3dfbef31a4..9e6805c68b 100644 --- a/spec/workers/activitypub/delivery_worker_spec.rb +++ b/spec/workers/activitypub/delivery_worker_spec.rb @@ -5,26 +5,45 @@ require 'rails_helper' RSpec.describe ActivityPub::DeliveryWorker do include RoutingHelper - subject { described_class.new } - - let(:sender) { Fabricate(:account) } + let(:sender) { Fabricate(:account) } let(:payload) { 'test' } + let(:url) { 'https://example.com/api' } before do - allow(sender).to receive(:remote_followers_hash).with('https://example.com/api').and_return('somehash') + allow(sender).to receive(:remote_followers_hash).with(url).and_return('somehash') allow(Account).to receive(:find).with(sender.id).and_return(sender) end describe 'perform' do - it 'performs a request' do - stub_request(:post, 'https://example.com/api').to_return(status: 200) - subject.perform(payload, sender.id, 'https://example.com/api', { synchronize_followers: true }) - expect(a_request(:post, 'https://example.com/api').with(headers: { 'Collection-Synchronization' => "collectionId=\"#{account_followers_url(sender)}\", digest=\"somehash\", url=\"#{account_followers_synchronization_url(sender)}\"" })).to have_been_made.once + context 'with successful request' do + before { stub_request(:post, url).to_return(status: 200) } + + it 'performs a request to synchronize collection' do + subject.perform(payload, sender.id, url, { synchronize_followers: true }) + + expect(request_to_url) + .to have_been_made.once + end + + def request_to_url + a_request(:post, url) + .with( + headers: { + 'Collection-Synchronization' => <<~VALUES.squish, + collectionId="#{account_followers_url(sender)}", digest="somehash", url="#{account_followers_synchronization_url(sender)}" + VALUES + } + ) + end end - it 'raises when request fails' do - stub_request(:post, 'https://example.com/api').to_return(status: 500) - expect { subject.perform(payload, sender.id, 'https://example.com/api') }.to raise_error Mastodon::UnexpectedResponseError + context 'with failing request' do + before { stub_request(:post, url).to_return(status: 500) } + + it 'raises error' do + expect { subject.perform(payload, sender.id, url) } + .to raise_error Mastodon::UnexpectedResponseError + end end end end From 425982841d66734f9f07f393334711454b42def2 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 19 Nov 2024 03:51:34 -0500 Subject: [PATCH 411/550] Use group/count approach in annual report classes (#32914) --- .../commonly_interacted_with_accounts.rb | 2 +- app/lib/annual_report/most_reblogged_accounts.rb | 2 +- app/lib/annual_report/most_used_apps.rb | 2 +- app/lib/annual_report/top_hashtags.rb | 8 +++++++- .../commonly_interacted_with_accounts_spec.rb | 13 +++++++++++-- .../annual_report/most_reblogged_accounts_spec.rb | 12 ++++++++++-- spec/lib/annual_report/most_used_apps_spec.rb | 11 ++++++++--- spec/lib/annual_report/top_hashtags_spec.rb | 15 +++++++++++++-- 8 files changed, 52 insertions(+), 13 deletions(-) diff --git a/app/lib/annual_report/commonly_interacted_with_accounts.rb b/app/lib/annual_report/commonly_interacted_with_accounts.rb index 30ab671d8a..2316789f2a 100644 --- a/app/lib/annual_report/commonly_interacted_with_accounts.rb +++ b/app/lib/annual_report/commonly_interacted_with_accounts.rb @@ -17,6 +17,6 @@ class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source private def commonly_interacted_with_accounts - report_statuses.where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('in_reply_to_account_id, count(*) AS total')) + report_statuses.where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having('count(*) > 1').order(count_all: :desc).limit(SET_SIZE).count end end diff --git a/app/lib/annual_report/most_reblogged_accounts.rb b/app/lib/annual_report/most_reblogged_accounts.rb index cfc4022ca7..5c750b19bf 100644 --- a/app/lib/annual_report/most_reblogged_accounts.rb +++ b/app/lib/annual_report/most_reblogged_accounts.rb @@ -17,6 +17,6 @@ class AnnualReport::MostRebloggedAccounts < AnnualReport::Source private def most_reblogged_accounts - report_statuses.where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('accounts.id, count(*) as total')) + report_statuses.where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(count_all: :desc).limit(SET_SIZE).count end end diff --git a/app/lib/annual_report/most_used_apps.rb b/app/lib/annual_report/most_used_apps.rb index fb1ca1d167..e10ba52503 100644 --- a/app/lib/annual_report/most_used_apps.rb +++ b/app/lib/annual_report/most_used_apps.rb @@ -17,6 +17,6 @@ class AnnualReport::MostUsedApps < AnnualReport::Source private def most_used_apps - report_statuses.joins(:application).group('oauth_applications.name').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('oauth_applications.name, count(*) as total')) + report_statuses.joins(:application).group('oauth_applications.name').order(count_all: :desc).limit(SET_SIZE).count end end diff --git a/app/lib/annual_report/top_hashtags.rb b/app/lib/annual_report/top_hashtags.rb index 32bd10d698..ae000a8beb 100644 --- a/app/lib/annual_report/top_hashtags.rb +++ b/app/lib/annual_report/top_hashtags.rb @@ -17,6 +17,12 @@ class AnnualReport::TopHashtags < AnnualReport::Source private def top_hashtags - Tag.joins(:statuses).where(statuses: { id: report_statuses.select(:id) }).group(:id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('COALESCE(tags.display_name, tags.name), count(*) AS total')) + Tag.joins(:statuses).where(statuses: { id: report_statuses.select(:id) }).group(coalesced_tag_names).having('count(*) > 1').order(count_all: :desc).limit(SET_SIZE).count + end + + def coalesced_tag_names + Arel.sql(<<~SQL.squish) + COALESCE(tags.display_name, tags.name) + SQL end end diff --git a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb index 0e31827912..12bf3810db 100644 --- a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb +++ b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb @@ -21,18 +21,27 @@ RSpec.describe AnnualReport::CommonlyInteractedWithAccounts do let(:account) { Fabricate :account } let(:other_account) { Fabricate :account } + let(:most_other_account) { Fabricate :account } before do _other = Fabricate :status + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: other_account).id Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: other_account).id + + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: most_other_account).id + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: most_other_account).id + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: most_other_account).id end it 'builds a report for an account' do expect(subject.generate) .to include( - commonly_interacted_with_accounts: contain_exactly( - include(account_id: other_account.id.to_s, count: 2) + commonly_interacted_with_accounts: eq( + [ + { account_id: most_other_account.id.to_s, count: 3 }, + { account_id: other_account.id.to_s, count: 2 }, + ] ) ) end diff --git a/spec/lib/annual_report/most_reblogged_accounts_spec.rb b/spec/lib/annual_report/most_reblogged_accounts_spec.rb index 2f04934e47..956549c325 100644 --- a/spec/lib/annual_report/most_reblogged_accounts_spec.rb +++ b/spec/lib/annual_report/most_reblogged_accounts_spec.rb @@ -21,18 +21,26 @@ RSpec.describe AnnualReport::MostRebloggedAccounts do let(:account) { Fabricate :account } let(:other_account) { Fabricate :account } + let(:most_other_account) { Fabricate :account } before do _other = Fabricate :status Fabricate :status, account: account, reblog: Fabricate(:status, account: other_account) Fabricate :status, account: account, reblog: Fabricate(:status, account: other_account) + + Fabricate :status, account: account, reblog: Fabricate(:status, account: most_other_account) + Fabricate :status, account: account, reblog: Fabricate(:status, account: most_other_account) + Fabricate :status, account: account, reblog: Fabricate(:status, account: most_other_account) end it 'builds a report for an account' do expect(subject.generate) .to include( - most_reblogged_accounts: contain_exactly( - include(account_id: other_account.id.to_s, count: 2) + most_reblogged_accounts: eq( + [ + { account_id: most_other_account.id.to_s, count: 3 }, + { account_id: other_account.id.to_s, count: 2 }, + ] ) ) end diff --git a/spec/lib/annual_report/most_used_apps_spec.rb b/spec/lib/annual_report/most_used_apps_spec.rb index d2fcecc4d8..ab7022ef20 100644 --- a/spec/lib/annual_report/most_used_apps_spec.rb +++ b/spec/lib/annual_report/most_used_apps_spec.rb @@ -20,18 +20,23 @@ RSpec.describe AnnualReport::MostUsedApps do context 'with an active account' do let(:account) { Fabricate :account } - let(:application) { Fabricate :application } + let(:application) { Fabricate :application, name: 'App' } + let(:most_application) { Fabricate :application, name: 'Most App' } before do _other = Fabricate :status Fabricate.times 2, :status, account: account, application: application + Fabricate.times 3, :status, account: account, application: most_application end it 'builds a report for an account' do expect(subject.generate) .to include( - most_used_apps: contain_exactly( - include(name: application.name, count: 2) + most_used_apps: eq( + [ + { name: most_application.name, count: 3 }, + { name: application.name, count: 2 }, + ] ) ) end diff --git a/spec/lib/annual_report/top_hashtags_spec.rb b/spec/lib/annual_report/top_hashtags_spec.rb index 58a9152184..b9cc9392ed 100644 --- a/spec/lib/annual_report/top_hashtags_spec.rb +++ b/spec/lib/annual_report/top_hashtags_spec.rb @@ -21,20 +21,31 @@ RSpec.describe AnnualReport::TopHashtags do let(:account) { Fabricate :account } let(:tag) { Fabricate :tag } + let(:most_tag) { Fabricate :tag } before do _other = Fabricate :status + first = Fabricate :status, account: account first.tags << tag + first.tags << most_tag + last = Fabricate :status, account: account last.tags << tag + last.tags << most_tag + + middle = Fabricate :status, account: account + middle.tags << most_tag end it 'builds a report for an account' do expect(subject.generate) .to include( - top_hashtags: contain_exactly( - include(name: tag.name, count: 2) + top_hashtags: eq( + [ + { name: most_tag.name, count: 3 }, + { name: tag.name, count: 2 }, + ] ) ) end From 06fcee099a7a3751aa3ffd4cf743509c7d591129 Mon Sep 17 00:00:00 2001 From: Shlee Date: Tue, 19 Nov 2024 08:54:28 +0000 Subject: [PATCH 412/550] DB Replica database_tasks as ENV (#32908) --- config/database.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/config/database.yml b/config/database.yml index 2898415d80..eba20e849f 100644 --- a/config/database.yml +++ b/config/database.yml @@ -55,10 +55,11 @@ production: prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %> replica: <<: *default - database: <%= ENV['REPLICA_DB_NAME'] ||ENV['DB_NAME'] || 'mastodon_production' %> - username: <%= ENV['REPLICA_DB_USER'] ||ENV['DB_USER'] || 'mastodon' %> + database: <%= ENV['REPLICA_DB_NAME'] || ENV['DB_NAME'] || 'mastodon_production' %> + username: <%= ENV['REPLICA_DB_USER'] || ENV['DB_USER'] || 'mastodon' %> password: <%= (ENV['REPLICA_DB_PASS'] || ENV['DB_PASS'] || '').to_json %> - host: <%= ENV['REPLICA_DB_HOST'] ||ENV['DB_HOST'] || 'localhost' %> - port: <%= ENV['REPLICA_DB_PORT'] ||ENV['DB_PORT'] || 5432 %> - prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %> + host: <%= ENV['REPLICA_DB_HOST'] || ENV['DB_HOST'] || 'localhost' %> + port: <%= ENV['REPLICA_DB_PORT'] || ENV['DB_PORT'] || 5432 %> + prepared_statements: <%= ENV['REPLICA_PREPARED_STATEMENTS'] || ENV['PREPARED_STATEMENTS'] || 'true' %> replica: true + database_tasks: <%= ENV['REPLICA_DB_TASKS'] || 'true' %> From e856838e0c971a661e732ef6f221afc800d894a6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 19 Nov 2024 09:57:12 +0100 Subject: [PATCH 413/550] Fix notification polling showing a loading bar in web UI (#32960) --- app/javascript/mastodon/actions/notification_groups.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts index a3c8095ac4..aa7f50da4e 100644 --- a/app/javascript/mastodon/actions/notification_groups.ts +++ b/app/javascript/mastodon/actions/notification_groups.ts @@ -141,6 +141,9 @@ export const pollRecentNotifications = createDataLoadingThunk( return { notifications }; }, + { + useLoadingBar: false, + }, ); export const processNewNotificationForGroups = createAppAsyncThunk( From 436a5d295b3412300042073fb06ac1cdcc959834 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 08:57:47 +0000 Subject: [PATCH 414/550] Update dependency aws-sdk-s3 to v1.172.0 (#32964) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 09017e3fa9..d1be469f48 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,16 +95,16 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.1008.0) + aws-partitions (1.1009.0) aws-sdk-core (3.213.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.95.0) + aws-sdk-kms (1.96.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.171.0) + aws-sdk-s3 (1.172.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From 9fc2fc2251334f8b4d7d62a0aaf3a097e723d927 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:05:39 +0100 Subject: [PATCH 415/550] New Crowdin Translations (automated) (#32969) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 5 ++++- app/javascript/mastodon/locales/de.json | 2 +- app/javascript/mastodon/locales/it.json | 1 + config/locales/bg.yml | 10 ++++++++++ config/locales/it.yml | 8 ++++++++ config/locales/tr.yml | 6 +++--- 6 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 8f99992f33..456247cedf 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -87,6 +87,7 @@ "alert.unexpected.title": "Опаа!", "alt_text_badge.title": "Алтернативен текст", "announcement.announcement": "Оповестяване", + "annual_report.summary.archetype.booster": "Якият подсилвател", "annual_report.summary.archetype.lurker": "Дебнещото", "annual_report.summary.archetype.oracle": "Оракул", "annual_report.summary.archetype.pollster": "Анкетьорче", @@ -95,12 +96,14 @@ "annual_report.summary.followers.total": "{count} общо", "annual_report.summary.here_it_is": "Ето преглед на вашата {year} година:", "annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация", + "annual_report.summary.highlighted_post.by_reblogs": "най-подсилваната публикация", "annual_report.summary.highlighted_post.by_replies": "публикации с най-много отговори", "annual_report.summary.highlighted_post.possessive": "на {name}", "annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение", "annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг", "annual_report.summary.new_posts.new_posts": "нови публикации", "annual_report.summary.percentile.text": "Това ви слага най-отгоресред потребителите на Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Няма да кажем на Бърни Сандърс.", "annual_report.summary.thanks": "Благодарим, че сте част от Mastodon!", "attachments_list.unprocessed": "(необработено)", "audio.hide": "Скриване на звука", @@ -638,7 +641,7 @@ "onboarding.steps.follow_people.title": "Персонализиране на началния ви инфоканал", "onboarding.steps.publish_status.body": "Поздравете целия свят.", "onboarding.steps.publish_status.title": "Направете първата си публикация", - "onboarding.steps.setup_profile.body": "Други са по-вероятно да взаимодействат с вас с попълнения профил.", + "onboarding.steps.setup_profile.body": "Подсилете взаимодействията си, имайки изчерпателен профил.", "onboarding.steps.setup_profile.title": "Пригодете профила си", "onboarding.steps.share_profile.body": "Позволете на приятелите си да знаят как да ви намират в Mastodon!", "onboarding.steps.share_profile.title": "Споделяне на профила ви", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f692681387..510cc821f3 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -688,7 +688,7 @@ "poll_button.remove_poll": "Umfrage entfernen", "privacy.change": "Sichtbarkeit anpassen", "privacy.direct.long": "Alle in diesem Beitrag erwähnten Profile", - "privacy.direct.short": "Bestimmte Profile", + "privacy.direct.short": "Ausgewählte Profile", "privacy.private.long": "Nur deine Follower", "privacy.private.short": "Follower", "privacy.public.long": "Alle in und außerhalb von Mastodon", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 06779d337c..c4fcbdc3a4 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -88,6 +88,7 @@ "alt_text_badge.title": "Testo alternativo", "announcement.announcement": "Annuncio", "annual_report.summary.archetype.oracle": "L'oracolo", + "annual_report.summary.archetype.pollster": "Sondaggista", "annual_report.summary.followers.followers": "seguaci", "annual_report.summary.followers.total": "{count} in totale", "annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:", diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 5688a44f91..20ee1f6c68 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -807,6 +807,7 @@ bg: original_status: Първообразна публикация reblogs: Блогване пак status_changed: Публикацията променена + title: Публикации на акаунт - @%{name} trending: Изгряващи visibility: Видимост with_media: С мултимедия @@ -1104,8 +1105,10 @@ bg: security: Сигурност set_new_password: Задаване на нова парола setup: + email_below_hint_html: Проверете папката си за спам или поискайте друго е-писмо. Може да поправите адреса на имейла си, ако е грешен. email_settings_hint_html: Щракнете на връзката за потвърждаване, която ви изпратихме до %{email}. Ще ви почакаме тук. link_not_received: Не получихте ли връзка? + new_confirmation_instructions_sent: До няколко минути ще получите друго е-писмо с връзка за потвърждаване! title: Проверете входящата си поща sign_in: preamble_html: Влезте с идентификационните данни за %{domain}. Ако вашият акаунт е хостван на различен сървър, няма да можете да влезете в този. @@ -1116,6 +1119,7 @@ bg: title: Първоначални настройки за %{domain}. status: account_status: Състояние на акаунта + confirming: Чака се потвърждението на имейла да завърши. functional: Вашият акаунт е в изправност. pending: Вашето приложение чака преглед от персонала ни. Това може да отнеме време. Ще получите е-писмо, ако приложението ви се одобри. redirecting_to: Вашият акаунт е бездеен, защото сега се пренасочва към %{acct}. @@ -1125,6 +1129,8 @@ bg: use_security_key: Употреба на ключ за сигурност author_attribution: example_title: Примерен текст + hint_html: Пишете ли новинарски статии или блогове извън Mastodon? Управлявайте как ви приписват авторството, когато са споделени в Mastodon. + instructions: 'Уверете се, че този код е в HTML на статията ви:' more_from_html: Още от %{name} s_blog: Блогът на %{name} then_instructions: Тогава добавете име на домейна на публикацията в долното поле. @@ -1165,6 +1171,9 @@ bg: before: 'Прочетете внимателно тези бележки преди да продължите:' caches: Съдържание, което може да е кеширано от други сървъри, може да се задържи data_removal: Ваши публикации и други данни ще бъдат завинаги премахнати + email_change_html: Може да промените адреса на имейла си, без да изтривате акаунта си + email_contact_html: Ако още не сте го получили, то обърнете се за помощ към %{email} + email_reconfirmation_html: Ако не сте получили е-писмо за потвърждение, може да го заявите отново irreversible: Няма да може да възстановите или да задействате пак акаунта си more_details_html: За повече детайли прегледайте декларацията за поверителност. username_available: Вашето потребителско име ще стане налично отново @@ -1392,6 +1401,7 @@ bg: unsubscribe: action: Да, да се спре абонамента complete: Спрян абонамент + confirmation_html: Наистина ли искате да спрете абонамента от получаването на %{type} за Mastodon в %{domain} към имейла си при %{email}? Може винаги пак да се абонирате от своите настройки за известяване по е-поща. title: Спиране на абонамента media_attachments: validations: diff --git a/config/locales/it.yml b/config/locales/it.yml index 4c083fd006..3b36bd3f7a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -187,6 +187,7 @@ it: create_domain_block: Crea Blocco del Dominio create_email_domain_block: Crea blocco del dominio e-mail create_ip_block: Crea regola IP + create_relay: Crea Relay create_unavailable_domain: Crea Dominio Non Disponibile create_user_role: Crea Ruolo demote_user: Retrocedi Utente @@ -198,14 +199,17 @@ it: destroy_email_domain_block: Elimina il blocco del dominio e-mail destroy_instance: Elimina Dominio destroy_ip_block: Elimina regola IP + destroy_relay: Elimina Relay destroy_status: Elimina Toot destroy_unavailable_domain: Elimina Dominio Non Disponibile destroy_user_role: Distruggi Ruolo disable_2fa_user: Disabilita A2F disable_custom_emoji: Disabilita Emoji Personalizzata + disable_relay: Disabilita Relay disable_sign_in_token_auth_user: Disabilita l'autenticazione del token e-mail per l'utente disable_user: Disabilita l'Utente enable_custom_emoji: Abilita Emoji Personalizzata + enable_relay: Abilita Relay enable_sign_in_token_auth_user: Abilita l'autenticazione del token e-mail per l'utente enable_user: Abilita l'Utente memorialize_account: Commemora Profilo @@ -247,6 +251,7 @@ it: create_domain_block_html: "%{name} ha bloccato il dominio %{target}" create_email_domain_block_html: "%{name} ha bloccato il dominio e-mail %{target}" create_ip_block_html: "%{name} ha creato una regola per l'IP %{target}" + create_relay_html: "%{name} ha creato un relay %{target}" create_unavailable_domain_html: "%{name} ha interrotto la consegna al dominio %{target}" create_user_role_html: "%{name} ha creato il ruolo %{target}" demote_user_html: "%{name} ha retrocesso l'utente %{target}" @@ -258,14 +263,17 @@ it: destroy_email_domain_block_html: "%{name} ha sbloccato il dominio e-mail %{target}" destroy_instance_html: "%{name} ha eliminato il dominio %{target}" destroy_ip_block_html: "%{name} ha eliminato la regola per l'IP %{target}" + destroy_relay_html: "%{name} ha eliminato il relay %{target}" destroy_status_html: "%{name} ha rimosso il toot di %{target}" destroy_unavailable_domain_html: "%{name} ha ripreso la consegna al dominio %{target}" destroy_user_role_html: "%{name} ha eliminato il ruolo %{target}" disable_2fa_user_html: "%{name} ha disabilitato l'autenticazione a due fattori per l'utente %{target}" disable_custom_emoji_html: "%{name} ha disabilitato emoji %{target}" + disable_relay_html: "%{name} ha disabilitato il relay %{target}" disable_sign_in_token_auth_user_html: "%{name} ha disabilitato l'autenticazione del token e-mail per %{target}" disable_user_html: "%{name} ha disabilitato l'accesso per l'utente %{target}" enable_custom_emoji_html: "%{name} ha abilitato l'emoji %{target}" + enable_relay_html: "%{name} ha abilitato il relay %{target}" enable_sign_in_token_auth_user_html: "%{name} ha abilitato l'autenticazione del token e-mail per %{target}" enable_user_html: "%{name} ha abilitato l'accesso per l'utente %{target}" memorialize_account_html: "%{name} ha trasformato il profilo di %{target} in una pagina commemorativa" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index a0002070c6..48f6c5e240 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -826,7 +826,7 @@ tr: back_to_account: Hesap sayfasına geri dön back_to_report: Bildirim sayfasına geri dön batch: - add_to_report: 'Rapora ekle #%{id}' + add_to_report: "#%{id} raporuna ekle" remove_from_report: Bildirimden kaldır report: Bildirim contents: İçerikler @@ -845,10 +845,10 @@ tr: reblogs: Yeniden Paylaşımlar replied_to_html: Yanıtladı %{acct_link} status_changed: Gönderi değişti - status_title: Gönderen @%{name} + status_title: "@%{name} gönderisi" title: Hesap gönderileri - @%{name} trending: Öne çıkanlar - view_publicly: Herkese Açık Görüntüle + view_publicly: Herkese açık görüntüle visibility: Görünürlük with_media: Medya ile strikes: From 87e7ad9b8f456af52197fb43116a7d104d697bfb Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 19 Nov 2024 04:15:05 -0500 Subject: [PATCH 416/550] Add `LoginActivity` model spec and `BrowserDetection` concern shared example (#32959) --- spec/models/login_activity_spec.rb | 17 +++++++++ spec/models/session_activation_spec.rb | 34 +---------------- .../models/concerns/browser_detection.rb | 37 +++++++++++++++++++ 3 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 spec/models/login_activity_spec.rb create mode 100644 spec/support/examples/models/concerns/browser_detection.rb diff --git a/spec/models/login_activity_spec.rb b/spec/models/login_activity_spec.rb new file mode 100644 index 0000000000..5b7935e8ba --- /dev/null +++ b/spec/models/login_activity_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe LoginActivity do + include_examples 'BrowserDetection' + + describe 'Associations' do + it { is_expected.to belong_to(:user).required } + end + + describe 'Validations' do + subject { Fabricate.build :login_activity } + + it { is_expected.to define_enum_for(:authentication_method).backed_by_column_of_type(:string) } + end +end diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb index bed411c369..bb9b3c785f 100644 --- a/spec/models/session_activation_spec.rb +++ b/spec/models/session_activation_spec.rb @@ -3,39 +3,7 @@ require 'rails_helper' RSpec.describe SessionActivation do - describe '#detection' do - let(:session_activation) { Fabricate(:session_activation, user_agent: 'Chrome/62.0.3202.89') } - - it 'sets a Browser instance as detection' do - expect(session_activation.detection).to be_a Browser::Chrome - end - end - - describe '#browser' do - before do - allow(session_activation).to receive(:detection).and_return(detection) - end - - let(:detection) { instance_double(Browser::Chrome, id: 1) } - let(:session_activation) { Fabricate(:session_activation) } - - it 'returns detection.id' do - expect(session_activation.browser).to be 1 - end - end - - describe '#platform' do - before do - allow(session_activation).to receive(:detection).and_return(detection) - end - - let(:session_activation) { Fabricate(:session_activation) } - let(:detection) { instance_double(Browser::Chrome, platform: instance_double(Browser::Platform, id: 1)) } - - it 'returns detection.platform.id' do - expect(session_activation.platform).to be 1 - end - end + include_examples 'BrowserDetection' describe '.active?' do subject { described_class.active?(id) } diff --git a/spec/support/examples/models/concerns/browser_detection.rb b/spec/support/examples/models/concerns/browser_detection.rb new file mode 100644 index 0000000000..e80fa4595c --- /dev/null +++ b/spec/support/examples/models/concerns/browser_detection.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'BrowserDetection' do + subject { described_class.new(user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Safari/605.1.15') } + + describe '#detection' do + it 'sets a Browser instance as detection' do + expect(subject.detection) + .to be_a(Browser::Safari) + end + end + + describe '#browser' do + it 'returns browser name from id' do + expect(subject.browser) + .to eq(:safari) + end + end + + describe '#platform' do + it 'returns detected platform' do + expect(subject.platform) + .to eq(:mac) + end + end + + describe 'Callbacks' do + describe 'populating the user_agent value' do + subject { Fabricate.build described_class.name.underscore.to_sym, user_agent: nil } + + it 'changes nil to empty string' do + expect { subject.save } + .to change(subject, :user_agent).from(nil).to('') + end + end + end +end From f2976ec9a45f7ad6f00a041ec28281db438eb977 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 19 Nov 2024 05:02:01 -0500 Subject: [PATCH 417/550] Extract `Notification::Groups` concern (#32968) --- app/models/concerns/notification/groups.rb | 123 +++++++++++++++++++++ app/models/notification.rb | 117 +------------------- 2 files changed, 124 insertions(+), 116 deletions(-) create mode 100644 app/models/concerns/notification/groups.rb diff --git a/app/models/concerns/notification/groups.rb b/app/models/concerns/notification/groups.rb new file mode 100644 index 0000000000..2f29bd9cea --- /dev/null +++ b/app/models/concerns/notification/groups.rb @@ -0,0 +1,123 @@ +# frozen_string_literal: true + +module Notification::Groups + extend ActiveSupport::Concern + + # `set_group_key!` needs to be updated if this list changes + GROUPABLE_NOTIFICATION_TYPES = %i(favourite reblog follow).freeze + MAXIMUM_GROUP_SPAN_HOURS = 12 + + def set_group_key! + return if filtered? || GROUPABLE_NOTIFICATION_TYPES.exclude?(type) + + type_prefix = case type + when :favourite, :reblog + [type, target_status&.id].join('-') + when :follow + type + else + raise NotImplementedError + end + redis_key = "notif-group/#{account.id}/#{type_prefix}" + hour_bucket = activity.created_at.utc.to_i / 1.hour.to_i + + # Reuse previous group if it does not span too large an amount of time + previous_bucket = redis.get(redis_key).to_i + hour_bucket = previous_bucket if hour_bucket < previous_bucket + MAXIMUM_GROUP_SPAN_HOURS + + # We do not concern ourselves with race conditions since we use hour buckets + redis.set(redis_key, hour_bucket, ex: MAXIMUM_GROUP_SPAN_HOURS.hours.to_i) + + self.group_key = "#{type_prefix}-#{hour_bucket}" + end + + class_methods do + def paginate_groups(limit, pagination_order, grouped_types: nil) + raise ArgumentError unless %i(asc desc).include?(pagination_order) + + query = reorder(id: pagination_order) + + # Ideally `:types` would be a bind rather than part of the SQL itself, but that does not + # seem to be possible to do with Rails, considering that the expression would occur in + # multiple places, including in a `select` + group_key_sql = begin + if grouped_types.present? + # Normalize `grouped_types` so the number of different SQL query shapes remains small, and + # the queries can be analyzed in monitoring/telemetry tools + grouped_types = (grouped_types.map(&:to_sym) & GROUPABLE_NOTIFICATION_TYPES).sort + + sanitize_sql_array([<<~SQL.squish, { types: grouped_types }]) + COALESCE( + CASE + WHEN notifications.type IN (:types) THEN notifications.group_key + ELSE NULL + END, + 'ungrouped-' || notifications.id + ) + SQL + else + "COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)" + end + end + + unscoped + .with_recursive( + grouped_notifications: [ + # Base case: fetching one notification and annotating it with visited groups + query + .select('notifications.*', "ARRAY[#{group_key_sql}] AS groups") + .limit(1), + # Recursive case, always yielding at most one annotated notification + unscoped + .from( + [ + # Expose the working table as `wt`, but quit early if we've reached the limit + unscoped + .select('id', 'groups') + .from('grouped_notifications') + .where('array_length(grouped_notifications.groups, 1) < :limit', limit: limit) + .arel.as('wt'), + # Recursive query, using `LATERAL` so we can refer to `wt` + query + .where(pagination_order == :desc ? 'notifications.id < wt.id' : 'notifications.id > wt.id') + .where.not("#{group_key_sql} = ANY(wt.groups)") + .limit(1) + .arel.lateral('notifications'), + ] + ) + .select('notifications.*', "array_append(wt.groups, #{group_key_sql}) AS groups"), + ] + ) + .from('grouped_notifications AS notifications') + .order(id: pagination_order) + .limit(limit) + end + + # This returns notifications from the request page, but with at most one notification per group. + # Notifications that have no `group_key` each count as a separate group. + def paginate_groups_by_max_id(limit, max_id: nil, since_id: nil, grouped_types: nil) + query = reorder(id: :desc) + query = query.where(id: ...(max_id.to_i)) if max_id.present? + query = query.where(id: (since_id.to_i + 1)...) if since_id.present? + query.paginate_groups(limit, :desc, grouped_types: grouped_types) + end + + # Differs from :paginate_groups_by_max_id in that it gives the results immediately following min_id, + # whereas since_id gives the items with largest id, but with since_id as a cutoff. + # Results will be in ascending order by id. + def paginate_groups_by_min_id(limit, max_id: nil, min_id: nil, grouped_types: nil) + query = reorder(id: :asc) + query = query.where(id: (min_id.to_i + 1)...) if min_id.present? + query = query.where(id: ...(max_id.to_i)) if max_id.present? + query.paginate_groups(limit, :asc, grouped_types: grouped_types) + end + + def to_a_grouped_paginated_by_id(limit, options = {}) + if options[:min_id].present? + paginate_groups_by_min_id(limit, min_id: options[:min_id], max_id: options[:max_id], grouped_types: options[:grouped_types]).reverse + else + paginate_groups_by_max_id(limit, max_id: options[:max_id], since_id: options[:since_id], grouped_types: options[:grouped_types]).to_a + end + end + end +end diff --git a/app/models/notification.rb b/app/models/notification.rb index 7b90fd92f9..e7ada3399a 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -19,6 +19,7 @@ class Notification < ApplicationRecord self.inheritance_column = nil + include Notification::Groups include Paginable include Redisable @@ -31,10 +32,6 @@ class Notification < ApplicationRecord 'Poll' => :poll, }.freeze - # `set_group_key!` needs to be updated if this list changes - GROUPABLE_NOTIFICATION_TYPES = %i(favourite reblog follow).freeze - MAXIMUM_GROUP_SPAN_HOURS = 12 - # Please update app/javascript/api_types/notification.ts if you change this PROPERTIES = { mention: { @@ -130,30 +127,6 @@ class Notification < ApplicationRecord end end - def set_group_key! - return if filtered? || Notification::GROUPABLE_NOTIFICATION_TYPES.exclude?(type) - - type_prefix = case type - when :favourite, :reblog - [type, target_status&.id].join('-') - when :follow - type - else - raise NotImplementedError - end - redis_key = "notif-group/#{account.id}/#{type_prefix}" - hour_bucket = activity.created_at.utc.to_i / 1.hour.to_i - - # Reuse previous group if it does not span too large an amount of time - previous_bucket = redis.get(redis_key).to_i - hour_bucket = previous_bucket if hour_bucket < previous_bucket + MAXIMUM_GROUP_SPAN_HOURS - - # We do not concern ourselves with race conditions since we use hour buckets - redis.set(redis_key, hour_bucket, ex: MAXIMUM_GROUP_SPAN_HOURS.hours.to_i) - - self.group_key = "#{type_prefix}-#{hour_bucket}" - end - class << self def browserable(types: [], exclude_types: [], from_account_id: nil, include_filtered: false) requested_types = if types.empty? @@ -171,94 +144,6 @@ class Notification < ApplicationRecord end end - def paginate_groups(limit, pagination_order, grouped_types: nil) - raise ArgumentError unless %i(asc desc).include?(pagination_order) - - query = reorder(id: pagination_order) - - # Ideally `:types` would be a bind rather than part of the SQL itself, but that does not - # seem to be possible to do with Rails, considering that the expression would occur in - # multiple places, including in a `select` - group_key_sql = begin - if grouped_types.present? - # Normalize `grouped_types` so the number of different SQL query shapes remains small, and - # the queries can be analyzed in monitoring/telemetry tools - grouped_types = (grouped_types.map(&:to_sym) & GROUPABLE_NOTIFICATION_TYPES).sort - - sanitize_sql_array([<<~SQL.squish, { types: grouped_types }]) - COALESCE( - CASE - WHEN notifications.type IN (:types) THEN notifications.group_key - ELSE NULL - END, - 'ungrouped-' || notifications.id - ) - SQL - else - "COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)" - end - end - - unscoped - .with_recursive( - grouped_notifications: [ - # Base case: fetching one notification and annotating it with visited groups - query - .select('notifications.*', "ARRAY[#{group_key_sql}] AS groups") - .limit(1), - # Recursive case, always yielding at most one annotated notification - unscoped - .from( - [ - # Expose the working table as `wt`, but quit early if we've reached the limit - unscoped - .select('id', 'groups') - .from('grouped_notifications') - .where('array_length(grouped_notifications.groups, 1) < :limit', limit: limit) - .arel.as('wt'), - # Recursive query, using `LATERAL` so we can refer to `wt` - query - .where(pagination_order == :desc ? 'notifications.id < wt.id' : 'notifications.id > wt.id') - .where.not("#{group_key_sql} = ANY(wt.groups)") - .limit(1) - .arel.lateral('notifications'), - ] - ) - .select('notifications.*', "array_append(wt.groups, #{group_key_sql}) AS groups"), - ] - ) - .from('grouped_notifications AS notifications') - .order(id: pagination_order) - .limit(limit) - end - - # This returns notifications from the request page, but with at most one notification per group. - # Notifications that have no `group_key` each count as a separate group. - def paginate_groups_by_max_id(limit, max_id: nil, since_id: nil, grouped_types: nil) - query = reorder(id: :desc) - query = query.where(id: ...(max_id.to_i)) if max_id.present? - query = query.where(id: (since_id.to_i + 1)...) if since_id.present? - query.paginate_groups(limit, :desc, grouped_types: grouped_types) - end - - # Differs from :paginate_groups_by_max_id in that it gives the results immediately following min_id, - # whereas since_id gives the items with largest id, but with since_id as a cutoff. - # Results will be in ascending order by id. - def paginate_groups_by_min_id(limit, max_id: nil, min_id: nil, grouped_types: nil) - query = reorder(id: :asc) - query = query.where(id: (min_id.to_i + 1)...) if min_id.present? - query = query.where(id: ...(max_id.to_i)) if max_id.present? - query.paginate_groups(limit, :asc, grouped_types: grouped_types) - end - - def to_a_grouped_paginated_by_id(limit, options = {}) - if options[:min_id].present? - paginate_groups_by_min_id(limit, min_id: options[:min_id], max_id: options[:max_id], grouped_types: options[:grouped_types]).reverse - else - paginate_groups_by_max_id(limit, max_id: options[:max_id], since_id: options[:since_id], grouped_types: options[:grouped_types]).to_a - end - end - def preload_cache_collection_target_statuses(notifications, &_block) notifications.group_by(&:type).each do |type, grouped_notifications| associations = TARGET_STATUS_INCLUDES_BY_TYPE[type] From 2b5faa2ba322d22cf9b345f815db7cbf89874415 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 19 Nov 2024 11:04:12 +0100 Subject: [PATCH 418/550] Change lists to reflect added and removed users retroactively (#32930) --- .../api/v1/lists/accounts_controller.rb | 13 ++------ app/models/follow_request.rb | 11 +++++-- app/services/add_accounts_to_list_service.rb | 33 +++++++++++++++++++ app/services/follow_service.rb | 5 ++- .../remove_accounts_from_list_service.rb | 29 ++++++++++++++++ app/services/unfollow_service.rb | 8 ++++- app/services/unmute_service.rb | 8 ++++- app/workers/merge_worker.rb | 30 +++++++++++++++-- app/workers/mute_worker.rb | 11 ++++++- app/workers/unmerge_worker.rb | 30 +++++++++++++++-- spec/models/follow_request_spec.rb | 2 +- spec/services/unmute_service_spec.rb | 2 +- 12 files changed, 157 insertions(+), 25 deletions(-) create mode 100644 app/services/add_accounts_to_list_service.rb create mode 100644 app/services/remove_accounts_from_list_service.rb diff --git a/app/controllers/api/v1/lists/accounts_controller.rb b/app/controllers/api/v1/lists/accounts_controller.rb index b1c0e609d0..616159f05f 100644 --- a/app/controllers/api/v1/lists/accounts_controller.rb +++ b/app/controllers/api/v1/lists/accounts_controller.rb @@ -15,17 +15,12 @@ class Api::V1::Lists::AccountsController < Api::BaseController end def create - ApplicationRecord.transaction do - list_accounts.each do |account| - @list.accounts << account - end - end - + AddAccountsToListService.new.call(@list, Account.find(account_ids)) render_empty end def destroy - ListAccount.where(list: @list, account_id: account_ids).destroy_all + RemoveAccountsFromListService.new.call(@list, Account.where(id: account_ids)) render_empty end @@ -43,10 +38,6 @@ class Api::V1::Lists::AccountsController < Api::BaseController end end - def list_accounts - Account.find(account_ids) - end - def account_ids Array(resource_params[:account_ids]) end diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index c13cc718d8..964d4e279a 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -33,8 +33,15 @@ class FollowRequest < ApplicationRecord def authorize! follow = account.follow!(target_account, reblogs: show_reblogs, notify: notify, languages: languages, uri: uri, bypass_limit: true) - ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id) - MergeWorker.perform_async(target_account.id, account.id) if account.local? + + if account.local? + ListAccount.where(follow_request: self).update_all(follow_request_id: nil, follow_id: follow.id) + MergeWorker.perform_async(target_account.id, account.id, 'home') + MergeWorker.push_bulk(List.where(account: account).joins(:list_accounts).where(list_accounts: { account_id: target_account.id }).pluck(:id)) do |list_id| + [target_account.id, list_id, 'list'] + end + end + destroy! end diff --git a/app/services/add_accounts_to_list_service.rb b/app/services/add_accounts_to_list_service.rb new file mode 100644 index 0000000000..df4e4c8314 --- /dev/null +++ b/app/services/add_accounts_to_list_service.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class AddAccountsToListService < BaseService + def call(list, accounts) + @list = list + @accounts = accounts + + return if @accounts.empty? + + update_list! + merge_into_list! + end + + private + + def update_list! + ApplicationRecord.transaction do + @accounts.each do |account| + @list.accounts << account + end + end + end + + def merge_into_list! + MergeWorker.push_bulk(merge_account_ids) do |account_id| + [account_id, @list.id, 'list'] + end + end + + def merge_account_ids + ListAccount.where(list: @list, account: @accounts).where.not(follow_id: nil).pluck(:account_id) + end +end diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index af5f996077..cff38b8e6e 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -81,7 +81,10 @@ class FollowService < BaseService follow = @source_account.follow!(@target_account, **follow_options.merge(rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])) LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name, 'follow') - MergeWorker.perform_async(@target_account.id, @source_account.id) + MergeWorker.perform_async(@target_account.id, @source_account.id, 'home') + MergeWorker.push_bulk(List.where(account: @source_account).joins(:list_accounts).where(list_accounts: { account_id: @target_account.id }).pluck(:id)) do |list_id| + [@target_account.id, list_id, 'list'] + end follow end diff --git a/app/services/remove_accounts_from_list_service.rb b/app/services/remove_accounts_from_list_service.rb new file mode 100644 index 0000000000..bd5b7c439e --- /dev/null +++ b/app/services/remove_accounts_from_list_service.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class RemoveAccountsFromListService < BaseService + def call(list, accounts) + @list = list + @accounts = accounts + + return if @accounts.empty? + + unmerge_from_list! + update_list! + end + + private + + def update_list! + ListAccount.where(list: @list, account: @accounts).destroy_all + end + + def unmerge_from_list! + UnmergeWorker.push_bulk(unmerge_account_ids) do |account_id| + [account_id, @list.id, 'list'] + end + end + + def unmerge_account_ids + ListAccount.where(list: @list, account: @accounts).where.not(follow_id: nil).pluck(:account_id) + end +end diff --git a/app/services/unfollow_service.rb b/app/services/unfollow_service.rb index fe9a7f0d87..b3f2cd66f6 100644 --- a/app/services/unfollow_service.rb +++ b/app/services/unfollow_service.rb @@ -31,7 +31,13 @@ class UnfollowService < BaseService create_notification(follow) if !@target_account.local? && @target_account.activitypub? create_reject_notification(follow) if @target_account.local? && !@source_account.local? && @source_account.activitypub? - UnmergeWorker.perform_async(@target_account.id, @source_account.id) unless @options[:skip_unmerge] + + unless @options[:skip_unmerge] + UnmergeWorker.perform_async(@target_account.id, @source_account.id, 'home') + UnmergeWorker.push_bulk(List.where(account: @source_account).joins(:list_accounts).where(list_accounts: { account_id: @target_account.id }).pluck(:list_id)) do |list_id| + [@target_account.id, list_id, 'list'] + end + end follow end diff --git a/app/services/unmute_service.rb b/app/services/unmute_service.rb index 6aeea358f7..9262961f7d 100644 --- a/app/services/unmute_service.rb +++ b/app/services/unmute_service.rb @@ -6,6 +6,12 @@ class UnmuteService < BaseService account.unmute!(target_account) - MergeWorker.perform_async(target_account.id, account.id) if account.following?(target_account) + if account.following?(target_account) + MergeWorker.perform_async(target_account.id, account.id, 'home') + + MergeWorker.push_bulk(List.where(account: account).joins(:list_accounts).where(list_accounts: { account_id: target_account.id }).pluck(:id)) do |list_id| + [target_account.id, list_id, 'list'] + end + end end end diff --git a/app/workers/merge_worker.rb b/app/workers/merge_worker.rb index 8e1614ad21..d4dcb326bc 100644 --- a/app/workers/merge_worker.rb +++ b/app/workers/merge_worker.rb @@ -5,18 +5,42 @@ class MergeWorker include Redisable include DatabaseHelper - def perform(from_account_id, into_account_id) + def perform(from_account_id, into_id, type = 'home') with_primary do @from_account = Account.find(from_account_id) + end + + case type + when 'home' + merge_into_home!(into_id) + when 'list' + merge_into_list!(into_id) + end + rescue ActiveRecord::RecordNotFound + true + end + + private + + def merge_into_home!(into_account_id) + with_primary do @into_account = Account.find(into_account_id) end with_read_replica do FeedManager.instance.merge_into_home(@from_account, @into_account) end - rescue ActiveRecord::RecordNotFound - true ensure redis.del("account:#{into_account_id}:regeneration") end + + def merge_into_list!(into_list_id) + with_primary do + @into_list = List.find(into_list_id) + end + + with_read_replica do + FeedManager.instance.merge_into_list(@from_account, @into_list) + end + end end diff --git a/app/workers/mute_worker.rb b/app/workers/mute_worker.rb index c74f657cba..ebd401dc20 100644 --- a/app/workers/mute_worker.rb +++ b/app/workers/mute_worker.rb @@ -2,9 +2,18 @@ class MuteWorker include Sidekiq::Worker + include DatabaseHelper def perform(account_id, target_account_id) - FeedManager.instance.clear_from_home(Account.find(account_id), Account.find(target_account_id)) + with_primary do + @account = Account.find(account_id) + @target_account = Account.find(target_account_id) + end + + with_read_replica do + FeedManager.instance.clear_from_home(@account, @target_account) + FeedManager.instance.clear_from_lists(@account, @target_account) + end rescue ActiveRecord::RecordNotFound true end diff --git a/app/workers/unmerge_worker.rb b/app/workers/unmerge_worker.rb index e8ac535dfe..e8a3bf9b78 100644 --- a/app/workers/unmerge_worker.rb +++ b/app/workers/unmerge_worker.rb @@ -6,16 +6,40 @@ class UnmergeWorker sidekiq_options queue: 'pull' - def perform(from_account_id, into_account_id) + def perform(from_account_id, into_id, type = 'home') with_primary do @from_account = Account.find(from_account_id) + end + + case type + when 'home' + unmerge_from_home!(into_id) + when 'list' + unmerge_from_list!(into_id) + end + rescue ActiveRecord::RecordNotFound + true + end + + private + + def unmerge_from_home!(into_account_id) + with_primary do @into_account = Account.find(into_account_id) end with_read_replica do FeedManager.instance.unmerge_from_home(@from_account, @into_account) end - rescue ActiveRecord::RecordNotFound - true + end + + def unmerge_from_list!(into_list_id) + with_primary do + @into_list = List.find(into_list_id) + end + + with_read_replica do + FeedManager.instance.unmerge_from_list(@from_account, @into_list) + end end end diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb index 9cccb82903..237875deab 100644 --- a/spec/models/follow_request_spec.rb +++ b/spec/models/follow_request_spec.rb @@ -30,7 +30,7 @@ RSpec.describe FollowRequest do follow_request.authorize! expect(account).to have_received(:follow!).with(target_account, reblogs: true, notify: false, uri: follow_request.uri, languages: nil, bypass_limit: true) - expect(MergeWorker).to have_received(:perform_async).with(target_account.id, account.id) + expect(MergeWorker).to have_received(:perform_async).with(target_account.id, account.id, 'home') expect(follow_request).to have_received(:destroy!) end diff --git a/spec/services/unmute_service_spec.rb b/spec/services/unmute_service_spec.rb index 92c7a70d65..a052e0dd0a 100644 --- a/spec/services/unmute_service_spec.rb +++ b/spec/services/unmute_service_spec.rb @@ -16,7 +16,7 @@ RSpec.describe UnmuteService do it 'removes the account mute and sets up a merge' do expect { subject.call(account, target_account) } .to remove_account_mute - expect(MergeWorker).to have_enqueued_sidekiq_job(target_account.id, account.id) + expect(MergeWorker).to have_enqueued_sidekiq_job(target_account.id, account.id, 'home') end end From 37f00fb01811f379d0f2978d5b9fa6cec031e7c7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 19 Nov 2024 05:36:02 -0500 Subject: [PATCH 419/550] Use hash arguments to `group` when possible (#32916) --- app/lib/annual_report/most_reblogged_accounts.rb | 2 +- app/lib/annual_report/most_used_apps.rb | 2 +- app/models/account_filter.rb | 2 +- app/models/poll.rb | 4 ++-- app/models/user.rb | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/lib/annual_report/most_reblogged_accounts.rb b/app/lib/annual_report/most_reblogged_accounts.rb index 5c750b19bf..69e247f2a6 100644 --- a/app/lib/annual_report/most_reblogged_accounts.rb +++ b/app/lib/annual_report/most_reblogged_accounts.rb @@ -17,6 +17,6 @@ class AnnualReport::MostRebloggedAccounts < AnnualReport::Source private def most_reblogged_accounts - report_statuses.where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(count_all: :desc).limit(SET_SIZE).count + report_statuses.where.not(reblog_of_id: nil).joins(reblog: :account).group(accounts: [:id]).having('count(*) > 1').order(count_all: :desc).limit(SET_SIZE).count end end diff --git a/app/lib/annual_report/most_used_apps.rb b/app/lib/annual_report/most_used_apps.rb index e10ba52503..a2e1aca452 100644 --- a/app/lib/annual_report/most_used_apps.rb +++ b/app/lib/annual_report/most_used_apps.rb @@ -17,6 +17,6 @@ class AnnualReport::MostUsedApps < AnnualReport::Source private def most_used_apps - report_statuses.joins(:application).group('oauth_applications.name').order(count_all: :desc).limit(SET_SIZE).count + report_statuses.joins(:application).group(oauth_applications: [:name]).order(count_all: :desc).limit(SET_SIZE).count end end diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index e2f359a8c3..f5e9fc7db9 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -61,7 +61,7 @@ class AccountFilter when 'email' accounts_with_users.merge(User.matches_email(value.to_s.strip)) when 'ip' - valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value).group('users.id, accounts.id')) : Account.none + valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value).group(users: [:id], accounts: [:id])) : Account.none when 'invited_by' invited_by_scope(value) when 'order' diff --git a/app/models/poll.rb b/app/models/poll.rb index cc4184f80a..ebd4644094 100644 --- a/app/models/poll.rb +++ b/app/models/poll.rb @@ -29,8 +29,8 @@ class Poll < ApplicationRecord has_many :votes, class_name: 'PollVote', inverse_of: :poll, dependent: :delete_all with_options class_name: 'Account', source: :account, through: :votes do - has_many :voters, -> { group('accounts.id') } - has_many :local_voters, -> { group('accounts.id').merge(Account.local) } + has_many :voters, -> { group(accounts: [:id]) } + has_many :local_voters, -> { group(accounts: [:id]).merge(Account.local) } end has_many :notifications, as: :activity, dependent: :destroy diff --git a/app/models/user.rb b/app/models/user.rb index be9ebac699..c90a78f0cc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -125,7 +125,7 @@ class User < ApplicationRecord scope :signed_in_recently, -> { where(current_sign_in_at: ACTIVE_DURATION.ago..) } scope :not_signed_in_recently, -> { where(current_sign_in_at: ...ACTIVE_DURATION.ago) } scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) } - scope :matches_ip, ->(value) { left_joins(:ips).merge(IpBlock.contained_by(value)).group('users.id') } + scope :matches_ip, ->(value) { left_joins(:ips).merge(IpBlock.contained_by(value)).group(users: [:id]) } before_validation :sanitize_role before_create :set_approved From 30e9c7137bf6fc2ca17766a58bd6d682971b0c7a Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 19 Nov 2024 21:21:12 +0100 Subject: [PATCH 420/550] Fix error when viewing statuses to deleted replies in moderation view (#32986) --- app/views/admin/reports/_status.html.haml | 2 +- app/views/admin/statuses/show.html.haml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index bd688a1a5d..d20266aa2c 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -10,7 +10,7 @@ - elsif status.reply? && status.in_reply_to_id.present? .status__prepend = material_symbol('reply') - = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(status.in_reply_to_account, path: admin_account_status_path(status.thread.account_id, status.in_reply_to_id))) + = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(status.in_reply_to_account, path: status.thread.present? ? admin_account_status_path(status.thread.account_id, status.in_reply_to_id) : nil)) .status__content>< - if status.proper.spoiler_text.blank? = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml index 49c23e921c..1ff4763158 100644 --- a/app/views/admin/statuses/show.html.haml +++ b/app/views/admin/statuses/show.html.haml @@ -22,7 +22,7 @@ - if @status.reply? %tr %th= t('admin.statuses.in_reply_to') - %td= admin_account_link_to @status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id) + %td= admin_account_link_to @status.in_reply_to_account, path: @status.thread.present? ? admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id) : nil %tr %th= t('admin.statuses.application') %td= @status.application&.name @@ -61,7 +61,7 @@ - elsif @status.reply? && @status.in_reply_to_id.present? .status__prepend = material_symbol('reply') - = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(@status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id))) + = t('admin.statuses.replied_to_html', acct_link: admin_account_inline_link_to(@status.in_reply_to_account, path: @status.thread.present? ? admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id) : nil)) .status__content>< - if @status.proper.spoiler_text.blank? = prerender_custom_emojis(status_content_format(@status.proper), @status.proper.emojis) From 41b033e381d56eec76cd739d4eceb1dd701b6926 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 08:42:53 +0100 Subject: [PATCH 421/550] Update dependency opentelemetry-instrumentation-rails to '~> 0.33.0' (#32987) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index c8104d094e..6abb075c1c 100644 --- a/Gemfile +++ b/Gemfile @@ -114,7 +114,7 @@ group :opentelemetry do gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false gem 'opentelemetry-instrumentation-pg', '~> 0.29.0', require: false gem 'opentelemetry-instrumentation-rack', '~> 0.25.0', require: false - gem 'opentelemetry-instrumentation-rails', '~> 0.32.0', require: false + gem 'opentelemetry-instrumentation-rails', '~> 0.33.0', require: false gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false gem 'opentelemetry-sdk', '~> 1.4', require: false diff --git a/Gemfile.lock b/Gemfile.lock index d1be469f48..d45d17f52b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -478,13 +478,13 @@ GEM opentelemetry-api (~> 1.0) opentelemetry-instrumentation-active_support (~> 0.1) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-action_pack (0.9.0) + opentelemetry-instrumentation-action_pack (0.10.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-instrumentation-action_view (0.7.2) + opentelemetry-instrumentation-action_view (0.7.3) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-active_support (~> 0.1) + opentelemetry-instrumentation-active_support (~> 0.6) opentelemetry-instrumentation-base (~> 0.22.1) opentelemetry-instrumentation-active_job (0.7.8) opentelemetry-api (~> 1.0) @@ -527,10 +527,10 @@ GEM opentelemetry-instrumentation-rack (0.25.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.32.0) + opentelemetry-instrumentation-rails (0.33.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-action_mailer (~> 0.2.0) - opentelemetry-instrumentation-action_pack (~> 0.9.0) + opentelemetry-instrumentation-action_pack (~> 0.10.0) opentelemetry-instrumentation-action_view (~> 0.7.0) opentelemetry-instrumentation-active_job (~> 0.7.0) opentelemetry-instrumentation-active_record (~> 0.8.0) @@ -966,7 +966,7 @@ DEPENDENCIES opentelemetry-instrumentation-net_http (~> 0.22.4) opentelemetry-instrumentation-pg (~> 0.29.0) opentelemetry-instrumentation-rack (~> 0.25.0) - opentelemetry-instrumentation-rails (~> 0.32.0) + opentelemetry-instrumentation-rails (~> 0.33.0) opentelemetry-instrumentation-redis (~> 0.25.3) opentelemetry-instrumentation-sidekiq (~> 0.25.2) opentelemetry-sdk (~> 1.4) From b66fbaeec236b0b666f1de7ae525dec2da40441a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 20 Nov 2024 02:52:00 -0500 Subject: [PATCH 422/550] Add `AccountWarning` case to `Report#history` spec (#32984) --- spec/models/report_spec.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index a0e4f6fafd..b4fbea437f 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -108,15 +108,22 @@ RSpec.describe Report do let(:report) { Fabricate(:report, target_account_id: target_account.id, status_ids: [status.id], created_at: 3.days.ago, updated_at: 1.day.ago) } let(:target_account) { Fabricate(:account) } let(:status) { Fabricate(:status) } + let(:account_warning) { Fabricate(:account_warning, report_id: report.id) } before do Fabricate(:action_log, target_type: 'Report', account_id: target_account.id, target_id: report.id, created_at: 2.days.ago) Fabricate(:action_log, target_type: 'Account', account_id: target_account.id, target_id: report.target_account_id, created_at: 2.days.ago) Fabricate(:action_log, target_type: 'Status', account_id: target_account.id, target_id: status.id, created_at: 2.days.ago) + Fabricate(:action_log, target_type: 'AccountWarning', account_id: target_account.id, target_id: account_warning.id, created_at: 2.days.ago) end - it 'returns right logs' do - expect(action_logs.count).to eq 3 + it 'returns expected logs' do + expect(action_logs) + .to have_attributes(count: 4) + .and include(have_attributes(target_type: 'Account')) + .and include(have_attributes(target_type: 'AccountWarning')) + .and include(have_attributes(target_type: 'Report')) + .and include(have_attributes(target_type: 'Status')) end end From 4252b13a4bcd51248a781d9e8978f45fe6a1375b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 09:24:50 +0100 Subject: [PATCH 423/550] New Crowdin Translations (automated) (#32990) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 + app/javascript/mastodon/locales/lt.json | 4 +++- app/javascript/mastodon/locales/pl.json | 19 +++++++++++++++++++ config/locales/lv.yml | 2 ++ config/locales/pl.yml | 15 +++++++++++++++ config/locales/simple_form.es-AR.yml | 2 +- config/locales/sv.yml | 1 + 7 files changed, 42 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 5c7dfeb128..7892766d87 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -490,6 +490,7 @@ "notification.label.private_reply": "رد خاص", "notification.label.reply": "ردّ", "notification.mention": "إشارة", + "notification.mentioned_you": "{name} mentioned you", "notification.moderation-warning.learn_more": "اعرف المزيد", "notification.moderation_warning": "لقد تلقيت تحذيرًا بالإشراف", "notification.moderation_warning.action_delete_statuses": "تم حذف بعض من منشوراتك.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 378f642cfe..6d4f46f1d4 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -69,7 +69,7 @@ "account.unendorse": "Nerodyti profilyje", "account.unfollow": "Nebesekti", "account.unmute": "Atšaukti nutildymą @{name}", - "account.unmute_notifications_short": "Atšaukti nutildymą pranešimams", + "account.unmute_notifications_short": "Atšaukti pranešimų nutildymą", "account.unmute_short": "Atšaukti nutildymą", "account_note.placeholder": "Spustelėk, kad pridėtum pastabą.", "admin.dashboard.daily_retention": "Naudotojų pasilikimo rodiklis pagal dieną po registracijos", @@ -526,6 +526,7 @@ "notification.admin.report_statuses": "{name} pranešė {target} kategorijai {category}", "notification.admin.report_statuses_other": "{name} pranešė {target}", "notification.admin.sign_up": "{name} užsiregistravo", + "notification.admin.sign_up.name_and_others": "{name} ir {count, plural, one {# kitas} few {# kiti} many {# kito} other {# kitų}} užsiregistravo", "notification.annual_report.message": "Jūsų laukia {year} #Wrapstodon! Atskleiskite savo metų svarbiausius įvykius ir įsimintinas akimirkas platformoje „Mastodon“.", "notification.annual_report.view": "Peržiūrėti #Wrapstodon", "notification.favourite": "{name} pamėgo tavo įrašą", @@ -537,6 +538,7 @@ "notification.label.private_reply": "Privatus atsakymas", "notification.label.reply": "Atsakymas", "notification.mention": "Paminėjimas", + "notification.mentioned_you": "{name} paminėjo jus", "notification.moderation-warning.learn_more": "Sužinoti daugiau", "notification.moderation_warning": "Gavai prižiūrėjimo įspėjimą", "notification.moderation_warning.action_delete_statuses": "Kai kurie tavo įrašai buvo pašalintos.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index c521fabf39..4558e29cb8 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -87,6 +87,24 @@ "alert.unexpected.title": "Ups!", "alt_text_badge.title": "Tekst alternatywny", "announcement.announcement": "Ogłoszenie", + "annual_report.summary.archetype.booster": "Łowca treści", + "annual_report.summary.archetype.lurker": "Czyhający", + "annual_report.summary.archetype.oracle": "Wyrocznia", + "annual_report.summary.archetype.pollster": "Ankieter", + "annual_report.summary.archetype.replier": "Motyl społeczny", + "annual_report.summary.followers.followers": "obserwujących", + "annual_report.summary.followers.total": "łącznie {count}", + "annual_report.summary.here_it_is": "Oto przegląd Twojego {year} roku:", + "annual_report.summary.highlighted_post.by_favourites": "najbardziej ulubiony wpis", + "annual_report.summary.highlighted_post.by_reblogs": "najbardziej promowany wpis", + "annual_report.summary.highlighted_post.by_replies": "wpis z największą liczbą odpowiedzi", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "najczęściej używana aplikacja", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "najczęściej używany hashtag", + "annual_report.summary.most_used_hashtag.none": "Brak", + "annual_report.summary.new_posts.new_posts": "nowe wpisy", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nie powiemy Berniemu.", + "annual_report.summary.thanks": "Dziękujemy, że jesteś częścią Mastodona!", "attachments_list.unprocessed": "(nieprzetworzone)", "audio.hide": "Ukryj dźwięk", "block_modal.remote_users_caveat": "Poprosimy serwer {domain} o uszanowanie twojej decyzji. Zgodność nie jest jednak gwarantowana, bo niektóre serwery mogą inaczej obsługiwać blokowanie. Wpisy publiczne mogą być widoczne dla niezalogowanych użytkowników.", @@ -508,6 +526,7 @@ "notification.admin.report_statuses_other": "{name} zgłosił(a) {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.admin.sign_up.name_and_others": "zarejestrował(-a) się {name} i {count, plural, one {# inna osoba} few {# inne osoby} other {# innych osób}}", + "notification.annual_report.view": "Zobacz #Wrapstodon", "notification.favourite": "{name} dodaje Twój wpis do ulubionych", "notification.favourite.name_and_others_with_link": "{name} i {count, plural, one {# inna osoba polubiła twój wpis} few {# inne osoby polubiły twój wpis} other {# innych osób polubiło twój wpis}}", "notification.follow": "{name} obserwuje Cię", diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 1ced1bb7d0..3e44adbf46 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -830,6 +830,7 @@ lv: original_status: Oriģinālā ziņa reblogs: Reblogi status_changed: Ziņa mainīta + status_title: Publicēja @%{name} trending: Aktuāli visibility: Redzamība with_media: Ar multividi @@ -970,6 +971,7 @@ lv: one: Pēdējās nedēļas laikā izmantoja viens cilvēks other: Pēdējās nedēļas laikā izmantoja %{count} cilvēki zero: Pēdējās nedēļas laikā izmantoja %{count} cilvēku + title: Ieteikumi un pašlaik populāri trending: Populārākie warning_presets: add_new: Pievienot jaunu diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 48a881a61b..3592ea53f6 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -193,6 +193,7 @@ pl: create_domain_block: Utwórz blokadę domeny create_email_domain_block: Utwórz blokadę domeny e-mail create_ip_block: Utwórz regułę IP + create_relay: Utwórz przekaźnik create_unavailable_domain: Utwórz niedostępną domenę create_user_role: Utwórz rolę demote_user: Zdegraduj użytkownika @@ -204,14 +205,17 @@ pl: destroy_email_domain_block: Usuń blokadę domeny e-mail destroy_instance: Wyczyść domenę destroy_ip_block: Usuń regułę IP + destroy_relay: Usuń przekaźnik destroy_status: Usuń wpis destroy_unavailable_domain: Usuń niedostępną domenę destroy_user_role: Zlikwiduj rolę disable_2fa_user: Wyłącz 2FA disable_custom_emoji: Wyłącz niestandardowe emoji + disable_relay: Wyłącz przekaźnik disable_sign_in_token_auth_user: Wyłącz uwierzytelnianie tokenem przez e-mail dla użytkownika disable_user: Wyłącz użytkownika enable_custom_emoji: Włącz niestandardowe emoji + enable_relay: Włącz przekaźnik enable_sign_in_token_auth_user: Włącz uwierzytelnianie tokenem przez e-mail dla użytkownika enable_user: Włącz użytkownika memorialize_account: Upamiętnij konto @@ -253,6 +257,7 @@ pl: create_domain_block_html: "%{name} zablokował(a) domenę %{target}" create_email_domain_block_html: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" create_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}" + create_relay_html: "%{name} utworzył przekaźnik %{target}" create_unavailable_domain_html: "%{name} przestał(a) doręczać na domenę %{target}" create_user_role_html: "%{name} utworzył rolę %{target}" demote_user_html: "%{name} zdegradował(a) użytkownika %{target}" @@ -264,14 +269,17 @@ pl: destroy_email_domain_block_html: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" destroy_instance_html: "%{name} usunął domenę %{target}" destroy_ip_block_html: "%{name} usunął(-ęła) regułę dla IP %{target}" + destroy_relay_html: "%{name} usunął przekaźnik %{target}" destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}" destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}" destroy_user_role_html: "%{name} usunął rolę %{target}" disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwuskładnikowe użytkownikowi %{target}" disable_custom_emoji_html: "%{name} wyłączył(a) emoji %{target}" + disable_relay_html: "%{name} wyłączył przekaźnik %{target}" disable_sign_in_token_auth_user_html: "%{name} wyłączył/a uwierzytelnianie tokenem przez e-mail dla %{target}" disable_user_html: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}" enable_custom_emoji_html: "%{name} włączył(a) emoji %{target}" + enable_relay_html: "%{name} włączył przekaźnik %{target}" enable_sign_in_token_auth_user_html: "%{name} włączył/a uwierzytelnianie tokenem przez e-mail dla %{target}" enable_user_html: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}" memorialize_account_html: "%{name} nadał(a) kontu %{target} status in memoriam" @@ -846,8 +854,10 @@ pl: back_to_account: Wróć na konto back_to_report: Wróć do strony zgłoszenia batch: + add_to_report: 'Dodaj do raportu #%{id}' remove_from_report: Usuń ze zgłoszenia report: Zgłoszenie + contents: Zawartość deleted: Usunięto favourites: Ulubione history: Historia wersji @@ -856,12 +866,17 @@ pl: media: title: Multimedia metadata: Metadane + no_history: Ten wpis nie był edytowany no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany open: Otwarty post original_status: Oryginalny post reblogs: Podbicia + replied_to_html: Odpowiedziano na %{acct_link} status_changed: Post zmieniony + status_title: Wpis @%{name} + title: Wpisy konta - @%{name} trending: Popularne + view_publicly: Wyświetl publicznie visibility: Widoczność with_media: Z zawartością multimedialną strikes: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index dada648d5a..c3a65c0cc2 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -10,7 +10,7 @@ es-AR: indexable: Tus mensajes públicos pueden aparecer en los resultados de la búsqueda en Mastodon. La gente que interactuó con tus mensajes puede ser capaz de buscarlos sin importar el momento. note: 'Podés @mencionar otras cuentas o usar #etiquetas.' show_collections: La gente podrá navegar a través de tus seguidos y seguidores. Sin embargo, la gente que sigás, sabrá que lo estás haciendo. - unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarca si quieres revisar las solicitudes de seguimiento y elige si quieres aceptar o rechazar nuevos seguidores. + unlocked: Las personas podrán seguirte sin solicitar aprobación. Desmarcá si querés revisar las solicitudes de seguimiento y elegir si querés aceptar o rechazar nuevos seguidores. account_alias: acct: Especificá el nombredeusuario@dominio de la cuenta desde la que querés mudarte account_migration: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index c48b45b2e8..173dd24c88 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -843,6 +843,7 @@ sv: open: Öppna inlägg original_status: Ursprungligt inlägg reblogs: Ombloggningar + replied_to_html: Svarade på %{acct_link} status_changed: Inlägg ändrat status_title: Inlägg av @%{name} title: Kontoinlägg - @%{name} From 174c687ca0234285fac87d47196bbf0b1b606c33 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 10:01:13 +0100 Subject: [PATCH 424/550] Update dependency json-schema to v5.1.0 (#32992) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d45d17f52b..bb503e157e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -346,7 +346,7 @@ GEM json-ld-preloaded (3.3.1) json-ld (~> 3.3) rdf (~> 3.3) - json-schema (5.0.1) + json-schema (5.1.0) addressable (~> 2.8) jsonapi-renderer (0.2.2) jwt (2.7.1) From e68b26c8df2056182564abcee230927ed53200c8 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 20 Nov 2024 13:41:22 +0100 Subject: [PATCH 425/550] Fix posts made in the future being allowed to trend (#32996) --- app/models/trends/statuses.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb index 8757e5aa9c..cdf5929069 100644 --- a/app/models/trends/statuses.rb +++ b/app/models/trends/statuses.rb @@ -106,7 +106,7 @@ class Trends::Statuses < Trends::Base private def eligible?(status) - status.public_visibility? && status.account.discoverable? && !status.account.silenced? && !status.account.sensitized? && status.spoiler_text.blank? && !status.sensitive? && !status.reply? && valid_locale?(status.language) + status.created_at.past? && status.public_visibility? && status.account.discoverable? && !status.account.silenced? && !status.account.sensitized? && status.spoiler_text.blank? && !status.sensitive? && !status.reply? && valid_locale?(status.language) end def calculate_scores(statuses, at_time) From 683db3ab253e60d2a5ba14d0f348e5285704fea8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 20 Nov 2024 16:56:35 +0100 Subject: [PATCH 426/550] Add ability to middle-mouse click posts in web UI (#32988) --- app/javascript/mastodon/components/status.jsx | 57 ++++++++----------- .../mastodon/components/status_content.jsx | 4 +- .../components/embedded_status.tsx | 12 +++- 3 files changed, 36 insertions(+), 37 deletions(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 95ea53521f..669eb22cb6 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; @@ -164,32 +166,18 @@ class Status extends ImmutablePureComponent { }; handleClick = e => { - if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) { + e.preventDefault(); + this.handleHotkeyOpen(e); + }; + + handleMouseUp = e => { + // Only handle clicks on the empty space above the content + + if (e.target !== e.currentTarget) { return; } - if (e) { - e.preventDefault(); - } - - this.handleHotkeyOpen(); - }; - - handlePrependAccountClick = e => { - this.handleAccountClick(e, false); - }; - - handleAccountClick = (e, proper = true) => { - if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) { - return; - } - - if (e) { - e.preventDefault(); - e.stopPropagation(); - } - - this._openProfile(proper); + this.handleClick(e); }; handleExpandedToggle = () => { @@ -287,7 +275,7 @@ class Status extends ImmutablePureComponent { this.props.onMention(this._properStatus().get('account')); }; - handleHotkeyOpen = () => { + handleHotkeyOpen = (e) => { if (this.props.onClick) { this.props.onClick(); return; @@ -300,7 +288,13 @@ class Status extends ImmutablePureComponent { return; } - history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`); + const path = `/@${status.getIn(['account', 'acct'])}/${status.get('id')}`; + + if (e?.button === 0 && !(e?.ctrlKey || e?.metaKey)) { + history.push(path); + } else if (e?.button === 1 || (e?.button === 0 && (e?.ctrlKey || e?.metaKey))) { + window.open(path, '_blank', 'noreferrer noopener'); + } }; handleHotkeyOpenProfile = () => { @@ -412,7 +406,7 @@ class Status extends ImmutablePureComponent { prepend = (
- }} /> + }} />
); @@ -550,20 +544,19 @@ class Status extends ImmutablePureComponent {
{(connectReply || connectUp || connectToRoot) &&
} - {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */} -
- + {matchedFilters && } diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx index 4950c896f9..fe485eb3ac 100644 --- a/app/javascript/mastodon/components/status_content.jsx +++ b/app/javascript/mastodon/components/status_content.jsx @@ -204,8 +204,8 @@ class StatusContent extends PureComponent { element = element.parentNode; } - if (deltaX + deltaY < 5 && e.button === 0 && this.props.onClick) { - this.props.onClick(); + if (deltaX + deltaY < 5 && (e.button === 0 || e.button === 1) && this.props.onClick) { + this.props.onClick(e); } this.startXY = null; diff --git a/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx b/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx index 65ea9b5d5e..ca0d1bc850 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/embedded_status.tsx @@ -43,7 +43,7 @@ export const EmbeddedStatus: React.FC<{ statusId: string }> = ({ ); const handleMouseUp = useCallback>( - ({ clientX, clientY, target, button }) => { + ({ clientX, clientY, target, button, ctrlKey, metaKey }) => { const [startX, startY] = clickCoordinatesRef.current ?? [0, 0]; const [deltaX, deltaY] = [ Math.abs(clientX - startX), @@ -64,8 +64,14 @@ export const EmbeddedStatus: React.FC<{ statusId: string }> = ({ element = element.parentNode as HTMLDivElement | null; } - if (deltaX + deltaY < 5 && button === 0 && account) { - history.push(`/@${account.acct}/${statusId}`); + if (deltaX + deltaY < 5 && account) { + const path = `/@${account.acct}/${statusId}`; + + if (button === 0 && !(ctrlKey || metaKey)) { + history.push(path); + } else if (button === 1 || (button === 0 && (ctrlKey || metaKey))) { + window.open(path, '_blank', 'noreferrer noopener'); + } } clickCoordinatesRef.current = null; From 2526b32ad3cb1142edc6e2cfb272a9e3cef19060 Mon Sep 17 00:00:00 2001 From: Paulo Vilarinho <33267902+PauloVilarinho@users.noreply.github.com> Date: Wed, 20 Nov 2024 16:06:41 -0300 Subject: [PATCH 427/550] block scheduled status from frozen users (#30729) --- .../publish_scheduled_status_worker.rb | 2 ++ .../publish_scheduled_status_worker_spec.rb | 22 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/workers/publish_scheduled_status_worker.rb b/app/workers/publish_scheduled_status_worker.rb index aa5c4a834a..0ec081de91 100644 --- a/app/workers/publish_scheduled_status_worker.rb +++ b/app/workers/publish_scheduled_status_worker.rb @@ -9,6 +9,8 @@ class PublishScheduledStatusWorker scheduled_status = ScheduledStatus.find(scheduled_status_id) scheduled_status.destroy! + return true if scheduled_status.account.user.disabled? + PostStatusService.new.call( scheduled_status.account, options_with_objects(scheduled_status.params.with_indifferent_access) diff --git a/spec/workers/publish_scheduled_status_worker_spec.rb b/spec/workers/publish_scheduled_status_worker_spec.rb index 35e510d253..9365e8a4bc 100644 --- a/spec/workers/publish_scheduled_status_worker_spec.rb +++ b/spec/workers/publish_scheduled_status_worker_spec.rb @@ -12,12 +12,26 @@ RSpec.describe PublishScheduledStatusWorker do subject.perform(scheduled_status.id) end - it 'creates a status' do - expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!' + context 'when the account is not disabled' do + it 'creates a status' do + expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!' + end + + it 'removes the scheduled status' do + expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil + end end - it 'removes the scheduled status' do - expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil + context 'when the account is disabled' do + let(:scheduled_status) { Fabricate(:scheduled_status, account: Fabricate(:account, user: Fabricate(:user, disabled: true))) } + + it 'does not create a status' do + expect(Status.count).to eq 0 + end + + it 'removes the scheduled status' do + expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil + end end end end From 420ed155babd2a5f40307ab40f1e7e815bb91f40 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 21 Nov 2024 11:58:04 +0100 Subject: [PATCH 428/550] Fix wrong video dimensions for some rotated videos (#33008) --- app/lib/video_metadata_extractor.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/lib/video_metadata_extractor.rb b/app/lib/video_metadata_extractor.rb index 2155766251..fda6405121 100644 --- a/app/lib/video_metadata_extractor.rb +++ b/app/lib/video_metadata_extractor.rb @@ -46,6 +46,9 @@ class VideoMetadataExtractor # For some video streams the frame_rate reported by `ffprobe` will be 0/0, but for these streams we # should use `r_frame_rate` instead. Video screencast generated by Gnome Screencast have this issue. @frame_rate ||= @r_frame_rate + # If the video has not been re-encoded by ffmpeg, it may contain rotation information, + # and we need to simulate applying it to the dimensions + @width, @height = @height, @width if video_stream[:side_data_list]&.any? { |x| x[:rotation].abs == 90 } end if (audio_stream = audio_streams.first) From e4d5cc0ca6a1b05b657da6862f49393a9c06b161 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:58:45 +0000 Subject: [PATCH 429/550] New Crowdin Translations (automated) (#33010) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/de.json | 6 +-- app/javascript/mastodon/locales/gd.json | 21 ++++++++ app/javascript/mastodon/locales/ig.json | 14 +++++- app/javascript/mastodon/locales/zh-CN.json | 58 +++++++++++----------- config/locales/doorkeeper.ig.yml | 10 ++++ config/locales/gd.yml | 15 ++++++ config/locales/ig.yml | 23 +++++++++ config/locales/simple_form.gd.yml | 1 + config/locales/simple_form.ig.yml | 7 +++ config/locales/simple_form.zh-CN.yml | 14 +++--- config/locales/zh-CN.yml | 24 ++++----- 11 files changed, 140 insertions(+), 53 deletions(-) diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 510cc821f3..e9bf6a4181 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -486,12 +486,12 @@ "mute_modal.hide_from_notifications": "Benachrichtigungen ausblenden", "mute_modal.hide_options": "Einstellungen ausblenden", "mute_modal.indefinite": "Bis ich die Stummschaltung aufhebe", - "mute_modal.show_options": "Einstellungen anzeigen", + "mute_modal.show_options": "Optionen anzeigen", "mute_modal.they_can_mention_and_follow": "Das Profil wird dich weiterhin erwähnen und dir folgen können, aber du wirst davon nichts sehen.", - "mute_modal.they_wont_know": "Es wird nicht erkennbar sein, dass dieses Profil stummgeschaltet wurde.", + "mute_modal.they_wont_know": "Das Profil wird nicht erkennen können, dass du es stummgeschaltet hast.", "mute_modal.title": "Profil stummschalten?", "mute_modal.you_wont_see_mentions": "Du wirst keine Beiträge sehen, die dieses Profil erwähnen.", - "mute_modal.you_wont_see_posts": "Deine Beiträge können weiterhin angesehen werden, aber du wirst deren Beiträge nicht mehr sehen.", + "mute_modal.you_wont_see_posts": "Deine Beiträge können von diesem stummgeschalteten Profil weiterhin gesehen werden, aber du wirst dessen Beiträge nicht mehr sehen.", "navigation_bar.about": "Über", "navigation_bar.administration": "Administration", "navigation_bar.advanced_interface": "Im erweiterten Webinterface öffnen", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 4f68737b14..f459f50a80 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -87,6 +87,25 @@ "alert.unexpected.title": "Oich!", "alt_text_badge.title": "Roghainn teacsa", "announcement.announcement": "Brath-fios", + "annual_report.summary.archetype.booster": "Brosnaiche", + "annual_report.summary.archetype.lurker": "Eala-bhalbh", + "annual_report.summary.archetype.oracle": "Coinneach Odhar", + "annual_report.summary.archetype.pollster": "Cunntair nam beachd", + "annual_report.summary.archetype.replier": "Ceatharnach nam freagairt", + "annual_report.summary.followers.followers": "luchd-leantainn", + "annual_report.summary.followers.total": "{count} gu h-iomlan", + "annual_report.summary.here_it_is": "Seo mar a chaidh {year} leat:", + "annual_report.summary.highlighted_post.by_favourites": "am post as annsa", + "annual_report.summary.highlighted_post.by_reblogs": "am post air a bhrosnachadh as trice", + "annual_report.summary.highlighted_post.by_replies": "am post dhan deach fhreagairt as trice", + "annual_report.summary.highlighted_post.possessive": "Aig {name},", + "annual_report.summary.most_used_app.most_used_app": "an aplacaid a chaidh a cleachdadh as trice", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "an taga hais a chaidh a cleachdadh as trice", + "annual_report.summary.most_used_hashtag.none": "Chan eil gin", + "annual_report.summary.new_posts.new_posts": "postaichean ùra", + "annual_report.summary.percentile.text": "Tha thu am measg brod nandhen luchd-cleachdaidh Mhastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Ainmeil ’nad latha ’s ’nad linn.", + "annual_report.summary.thanks": "Mòran taing airson conaltradh air Mastodon.", "attachments_list.unprocessed": "(gun phròiseasadh)", "audio.hide": "Falaich an fhuaim", "block_modal.remote_users_caveat": "Iarraidh sinn air an fhrithealaiche {domain} gun gèill iad ri do cho-dhùnadh. Gidheadh, chan eil barantas gun gèill iad on a làimhsicheas cuid a fhrithealaichean bacaidhean air dòigh eadar-dhealaichte. Dh’fhaoidte gum faic daoine gun chlàradh a-steach na postaichean poblach agad fhathast.", @@ -508,6 +527,8 @@ "notification.admin.report_statuses_other": "Rinn {name} gearan mu {target}", "notification.admin.sign_up": "Chlàraich {name}", "notification.admin.sign_up.name_and_others": "Chlàraich {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}}", + "notification.annual_report.message": "Tha #Wrapstodon {year} deiseil dhut! Thoir sùil air mar a chaidh leat air Mastodon am bliadhna!", + "notification.annual_report.view": "Seall #Wrapstodon", "notification.favourite": "Is annsa le {name} am post agad", "notification.favourite.name_and_others_with_link": "Is annsa le {name} ’s {count, plural, one {# eile} two {# eile} few {# eile} other {# eile}} am post agad", "notification.follow": "Tha {name} ’gad leantainn a-nis", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index b8b0f1084d..bcd62187af 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -6,10 +6,14 @@ "account.follow": "Soro", "account.followers": "Ndị na-eso", "account.following": "Na-eso", + "account.go_to_profile": "Jee na profaịlụ", "account.mute": "Mee ogbi @{name}", + "account.posts": "Edemede", + "account.posts_with_replies": "Edemede na nzaghachị", "account.unfollow": "Kwụsị iso", "account_note.placeholder": "Click to add a note", "admin.dashboard.retention.cohort_size": "Ojiarụ ọhụrụ", + "annual_report.summary.new_posts.new_posts": "edemede ọhụrụ", "audio.hide": "Zoo ụda", "bundle_column_error.retry": "Nwaa ọzọ", "bundle_column_error.routing.title": "404", @@ -46,6 +50,7 @@ "confirmations.reply.confirm": "Zaa", "confirmations.unfollow.confirm": "Kwụsị iso", "conversation.delete": "Hichapụ nkata", + "conversation.open": "Lelee nkata", "disabled_account_banner.account_settings": "Mwube akaụntụ", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", @@ -62,8 +67,10 @@ "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", "errors.unexpected_crash.report_issue": "Kpesa nsogbu", "explore.trending_links": "Akụkọ", + "filter_modal.added.review_and_configure_title": "Mwube myọ", "firehose.all": "Ha niine", "follow_request.authorize": "Nye ikike", + "follow_suggestions.view_all": "Lelee ha ncha", "footer.privacy_policy": "Iwu nzuzu", "getting_started.heading": "Mbido", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", @@ -85,7 +92,7 @@ "keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.my_profile": "Mepe profaịlụ gị", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.pinned": "to open pinned posts list", @@ -112,6 +119,7 @@ "navigation_bar.lists": "Ndepụta", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", + "notifications.column_settings.status": "Edemede ọhụrụ:", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Go to your home feed", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", @@ -124,7 +132,7 @@ "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", - "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.steps.share_profile.title": "Kekọrịta profaịlụ Mastọdọnụ gị", "privacy.change": "Adjust status privacy", "relative_time.full.just_now": "kịta", "relative_time.just_now": "kịta", @@ -132,6 +140,7 @@ "reply_indicator.cancel": "Kagbuo", "report.categories.other": "Ọzọ", "report.categories.spam": "Nzipụ Ozièlètrọniìk Nkeāchọghị", + "report.category.title_account": "profaịlụ", "report.mute": "Mee ogbi", "report.placeholder": "Type or paste additional comments", "report.submit": "Submit report", @@ -139,6 +148,7 @@ "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.categories.other": "Ọzọ", "search.placeholder": "Chọọ", + "search_results.accounts": "Profaịlụ", "server_banner.active_users": "ojiarụ dị ìrè", "sign_in_banner.sign_in": "Sign in", "status.admin_status": "Open this status in the moderation interface", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index cc0f0b9341..463167e8f8 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -11,7 +11,7 @@ "about.not_available": "此信息在当前服务器尚不可用。", "about.powered_by": "由 {mastodon} 驱动的去中心化社交媒体", "about.rules": "站点规则", - "account.account_note_header": "个人备注", + "account.account_note_header": "备注", "account.add_or_remove_from_list": "从列表中添加或移除", "account.badges.bot": "机器人", "account.badges.group": "群组", @@ -36,7 +36,7 @@ "account.followers.empty": "目前无人关注此用户。", "account.followers_counter": "{count, plural, other {{counter} 关注者}}", "account.following": "正在关注", - "account.following_counter": "正在关注 {count, plural, other {{counter} 人}}", + "account.following_counter": "{count, plural, other {{counter} 正在关注}}", "account.follows.empty": "此用户目前未关注任何人。", "account.go_to_profile": "前往个人资料页", "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", @@ -139,7 +139,7 @@ "column.about": "关于", "column.blocks": "屏蔽的用户", "column.bookmarks": "书签", - "column.community": "本站时间轴", + "column.community": "本站时间线", "column.direct": "私下提及", "column.directory": "浏览用户资料", "column.domain_blocks": "已屏蔽的域名", @@ -151,7 +151,7 @@ "column.mutes": "已隐藏的用户", "column.notifications": "通知", "column.pins": "置顶嘟文", - "column.public": "跨站公共时间轴", + "column.public": "跨站公共时间线", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", "column_header.moveLeft_settings": "将此栏左移", @@ -192,15 +192,15 @@ "confirmations.block.confirm": "屏蔽", "confirmations.delete.confirm": "删除", "confirmations.delete.message": "你确定要删除这条嘟文吗?", - "confirmations.delete.title": "确认删除嘟文?", + "confirmations.delete.title": "是否删除嘟文?", "confirmations.delete_list.confirm": "删除", - "confirmations.delete_list.message": "确定永久删除这个列表吗?", - "confirmations.delete_list.title": "确认删除列表?", + "confirmations.delete_list.message": "你确定要永久删除此列表吗?", + "confirmations.delete_list.title": "是否删除列表?", "confirmations.discard_edit_media.confirm": "丢弃", "confirmations.discard_edit_media.message": "你还有未保存的媒体描述或预览修改,仍要丢弃吗?", "confirmations.edit.confirm": "编辑", "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?", - "confirmations.edit.title": "确认覆盖嘟文?", + "confirmations.edit.title": "是否重写嘟文?", "confirmations.logout.confirm": "退出登录", "confirmations.logout.message": "确定要退出登录吗?", "confirmations.logout.title": "是否退出登录?", @@ -210,13 +210,13 @@ "confirmations.redraft.title": "是否删除并重新编辑嘟文?", "confirmations.reply.confirm": "回复", "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", - "confirmations.reply.title": "确认覆盖嘟文?", + "confirmations.reply.title": "是否重写嘟文?", "confirmations.unfollow.confirm": "取消关注", "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?", "confirmations.unfollow.title": "是否取消关注用户?", - "content_warning.hide": "隐藏嘟文", - "content_warning.show": "仍然显示", - "content_warning.show_more": "显示更多", + "content_warning.hide": "隐藏", + "content_warning.show": "展开", + "content_warning.show_more": "展开", "conversation.delete": "删除对话", "conversation.mark_as_read": "标记为已读", "conversation.open": "查看对话", @@ -235,13 +235,13 @@ "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。", "dismissable_banner.explore_statuses": "这些是目前在社交网络上引起关注的嘟文。嘟文的喜欢和转嘟次数越多,排名越高。", "dismissable_banner.explore_tags": "这些标签正在本站和分布式网络上其他站点的用户中引起关注。", - "dismissable_banner.public_timeline": "这些是在 {domain} 上关注的人们最新发布的公开嘟文。", + "dismissable_banner.public_timeline": "这些是 {domain} 上的用户关注的人的最新公开嘟文。", "domain_block_modal.block": "屏蔽服务器", "domain_block_modal.block_account_instead": "改为屏蔽 @{name}", "domain_block_modal.they_can_interact_with_old_posts": "来自该服务器的人可以与你之前的嘟文交互。", "domain_block_modal.they_cant_follow": "此服务器上没有人可以关注你。", "domain_block_modal.they_wont_know": "对方不会知道自己被屏蔽。", - "domain_block_modal.title": "屏蔽该域名?", + "domain_block_modal.title": "是否屏蔽该域名?", "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", "domain_block_modal.you_will_lose_relationships": "你将失去在此实例上的所有关注和关注者。", "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", @@ -259,7 +259,7 @@ "domain_pill.your_server": "你的数字家园,你的所有嘟文都存放在这里。不喜欢这个服务器吗?随时带上你的关注者一起迁移到其它服务器。", "domain_pill.your_username": "你在这个服务器上的唯一标识符。不同服务器上可能会存在相同用户名的用户。", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", - "embed.preview": "它会像这样显示出来:", + "embed.preview": "这是它的预览效果:", "emoji_button.activity": "活动", "emoji_button.clear": "清除", "emoji_button.custom": "自定义", @@ -274,14 +274,14 @@ "emoji_button.search": "搜索…", "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", - "emoji_button.travel": "旅行和地点", - "empty_column.account_hides_collections": "该用户选择不提供此信息", + "emoji_button.travel": "旅行与地点", + "empty_column.account_hides_collections": "该用户选择不公开此信息", "empty_column.account_suspended": "账户已被停用", "empty_column.account_timeline": "这里没有嘟文!", "empty_column.account_unavailable": "个人资料不可用", "empty_column.blocks": "你还未屏蔽任何用户。", - "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。", - "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", + "empty_column.bookmarked_statuses": "你还没有收藏任何嘟文。收藏后嘟文就会显示在这里。", + "empty_column.community": "本站时间线还没有内容,写点什么并公开发布,让它活跃起来吧!", "empty_column.direct": "你还未使用过私下提及。当你发出或者收到私下提及时,它将显示在此。", "empty_column.domain_blocks": "暂且没有被屏蔽的站点。", "empty_column.explore_statuses": "目前没有热门内容,稍后再来看看吧!", @@ -290,7 +290,7 @@ "empty_column.follow_requests": "你还没有收到任何关注请求。当你收到一个关注请求时,它会出现在这里。", "empty_column.followed_tags": "你还没有关注任何话题标签。 当你关注后,它们会出现在这里。", "empty_column.hashtag": "这个话题标签下暂时没有内容。", - "empty_column.home": "你的主页时间线是空的!快去关注更多人吧。 {suggestions}", + "empty_column.home": "你的主页时间线还没有内容!快去关注更多人吧。", "empty_column.list": "列表中还没有任何内容。当列表成员发布新嘟文时,它们将出现在这里。", "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", @@ -349,7 +349,7 @@ "follow_suggestions.similar_to_recently_followed_longer": "与你近期关注的用户相似", "follow_suggestions.view_all": "查看全部", "follow_suggestions.who_to_follow": "推荐关注", - "followed_tags": "关注的话题标签", + "followed_tags": "已关注话题标签", "footer.about": "关于", "footer.directory": "用户目录", "footer.get_app": "获取应用", @@ -432,12 +432,12 @@ "keyboard_shortcuts.enter": "展开嘟文", "keyboard_shortcuts.favourite": "喜欢嘟文", "keyboard_shortcuts.favourites": "打开喜欢列表", - "keyboard_shortcuts.federated": "打开跨站时间轴", + "keyboard_shortcuts.federated": "打开跨站时间线", "keyboard_shortcuts.heading": "快捷键列表", - "keyboard_shortcuts.home": "打开主页时间轴", + "keyboard_shortcuts.home": "打开主页时间线", "keyboard_shortcuts.hotkey": "快捷键", "keyboard_shortcuts.legend": "显示此列表", - "keyboard_shortcuts.local": "打开本站时间轴", + "keyboard_shortcuts.local": "打开本站时间线", "keyboard_shortcuts.mention": "提及嘟文作者", "keyboard_shortcuts.muted": "打开隐藏用户列表", "keyboard_shortcuts.my_profile": "打开你的个人资料", @@ -497,7 +497,7 @@ "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", "navigation_bar.bookmarks": "书签", - "navigation_bar.community_timeline": "本站时间轴", + "navigation_bar.community_timeline": "本站时间线", "navigation_bar.compose": "撰写新嘟文", "navigation_bar.direct": "私下提及", "navigation_bar.discover": "发现", @@ -516,7 +516,7 @@ "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "偏好设置", - "navigation_bar.public_timeline": "跨站公共时间轴", + "navigation_bar.public_timeline": "跨站公共时间线", "navigation_bar.search": "搜索", "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "你需要登录才能访问此资源。", @@ -693,7 +693,7 @@ "privacy.private.short": "关注者", "privacy.public.long": "所有 Mastodon 内外的人", "privacy.public.short": "公开", - "privacy.unlisted.additional": "该模式的行为与“公开”完全相同,只是帖子不会出现在实时动态、话题标签、探索或 Mastodon 搜索中,即使你已在账户级设置中选择加入。", + "privacy.unlisted.additional": "该模式的行为与“公开”完全相同,只是嘟文不会出现在实时动态、话题标签、探索或 Mastodon 搜索中,即使你已在账户级设置中选择加入。", "privacy.unlisted.long": "减少算法影响", "privacy.unlisted.short": "悄悄公开", "privacy_policy.last_updated": "最近更新于 {date}", @@ -747,7 +747,7 @@ "report.rules.subtitle": "选择所有适用选项", "report.rules.title": "违反了哪些规则?", "report.statuses.subtitle": "选择所有适用选项", - "report.statuses.title": "是否有任何嘟文可以支持这一报告?", + "report.statuses.title": "是否有可以证实此举报的嘟文?", "report.submit": "提交", "report.target": "举报 {target}", "report.thanks.take_action": "以下是你控制你在 Mastodon 上能看到哪些内容的选项:", @@ -856,7 +856,7 @@ "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", "status.unpin": "在个人资料页面取消置顶", - "subscribed_languages.lead": "更改此选择后,仅选定语言的嘟文会出现在你的主页和列表时间轴上。选择「无」将接收所有语言的嘟文。", + "subscribed_languages.lead": "更改此选择后,只有选定语言的嘟文才会出现在你的主页和列表时间线上。选择「无」将显示所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", "tabs_bar.home": "主页", diff --git a/config/locales/doorkeeper.ig.yml b/config/locales/doorkeeper.ig.yml index 7c264f0d73..ef11972aed 100644 --- a/config/locales/doorkeeper.ig.yml +++ b/config/locales/doorkeeper.ig.yml @@ -1 +1,11 @@ +--- ig: + doorkeeper: + grouped_scopes: + title: + filters: Myọ + profile: Profaịlụ Mastọdọnụ gị + scopes: + read:filters: lelee myọ gị + write:accounts: dezie profaịlụ gị + write:filters: mepụta myọ diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 78f4516cfc..7581f6c856 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -193,6 +193,7 @@ gd: create_domain_block: Cruthaich bacadh àrainne create_email_domain_block: Cruthaich bacadh àrainne puist-d create_ip_block: Cruthaich riaghailt IP + create_relay: Cruthaich ath-sheachadan create_unavailable_domain: Cruthaich àrainn nach eil ri fhaighinn create_user_role: Cruthaich dreuchd demote_user: Ìslich an cleachdaiche @@ -204,14 +205,17 @@ gd: destroy_email_domain_block: Sguab às bacadh na h-àrainne puist-d destroy_instance: Purgaidich an àrainn destroy_ip_block: Sguab às an riaghailt IP + destroy_relay: Sguab às an t-ath-sheachadan destroy_status: Sguab às am post destroy_unavailable_domain: Sguab às àrainn nach eil ri fhaighinn destroy_user_role: Mill an dreuchd disable_2fa_user: Cuir an dearbhadh dà-cheumnach à comas disable_custom_emoji: Cuir an t-Emoji gnàthaichte à comas + disable_relay: Cuir an t-ath-sheachadan à comas disable_sign_in_token_auth_user: Cuir à comas dearbhadh le tòcan puist-d dhan chleachdaiche disable_user: Cuir an cleachdaiche à comas enable_custom_emoji: Cuir an t-Emoji gnàthaichte an comas + enable_relay: Cuir an ath-sheachadan an comas enable_sign_in_token_auth_user: Cuir an comas dearbhadh le tòcan puist-d dhan chleachdaiche enable_user: Cuir an cleachdaiche an comas memorialize_account: Dèan cuimhneachan dhen chunntas @@ -253,6 +257,7 @@ gd: create_domain_block_html: Bhac %{name} an àrainn %{target} create_email_domain_block_html: Bhac %{name} an àrainn puist-d %{target} create_ip_block_html: Chruthaich %{name} riaghailt dhan IP %{target} + create_relay_html: Chruthaich %{name} an t-ath-sheachadan %{target} create_unavailable_domain_html: Sguir %{name} ris an lìbhrigeadh dhan àrainn %{target} create_user_role_html: Chruthaich %{name} an dreuchd %{target} demote_user_html: Dh’ìslich %{name} an cleachdaiche %{target} @@ -264,14 +269,17 @@ gd: destroy_email_domain_block_html: Dì-bhac %{name} an àrainn puist-d %{target} destroy_instance_html: Phurgaidich %{name} an àrainn %{target} destroy_ip_block_html: Sguab %{name} às riaghailt dhan IP %{target} + destroy_relay_html: Sguab %{name} às an t-ath-sheachadan %{target} destroy_status_html: Thug %{name} post aig %{target} air falbh destroy_unavailable_domain_html: Lean %{name} air adhart leis an lìbhrigeadh dhan àrainn %{target} destroy_user_role_html: Sguab %{name} às an dreuchd %{target} disable_2fa_user_html: Chuir %{name} riatanas an dearbhaidh dà-cheumnaich à comas dhan chleachdaiche %{target} disable_custom_emoji_html: Chuir %{name} an Emoji %{target} à comas + disable_relay_html: Chuir %{name} an t-ath-sheachadan %{target} à comas disable_sign_in_token_auth_user_html: Chuir %{name} à comas dearbhadh le tòcan puist-d dha %{target} disable_user_html: Chuir %{name} an clàradh a-steach à comas dhan chleachdaiche %{target} enable_custom_emoji_html: Chuir %{name} an Emoji %{target} an comas + enable_relay_html: Chuir %{name} an t-ath-sheachadan %{target} an comas enable_sign_in_token_auth_user_html: Chuir %{name} an comas dearbhadh le tòcan puist-d dha %{target} enable_user_html: Chuir %{name} an clàradh a-steach an comas dhan chleachdaiche %{target} memorialize_account_html: Rinn %{name} duilleag cuimhneachain dhen chunntas aig %{target} @@ -846,8 +854,10 @@ gd: back_to_account: Till gu duilleag a’ chunntais back_to_report: Till gu duilleag a’ ghearain batch: + add_to_report: 'Cuir ris a’ ghearan #%{id}' remove_from_report: Thoir air falbh on ghearan report: Gearan + contents: Susbaint deleted: Chaidh a sguabadh às favourites: Annsachdan history: Eachdraidh nan tionndadh @@ -856,12 +866,17 @@ gd: media: title: Meadhanan metadata: Meata-dàta + no_history: Cha deach am post seo a dheasachadh no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh open: Fosgail am post original_status: Am post tùsail reblogs: Brosnachaidhean + replied_to_html: Freagairt do %{acct_link} status_changed: Post air atharrachadh + status_title: Post le @%{name} + title: Postaichean a’ chunntais – @%{name} trending: A’ treandadh + view_publicly: Seall gu poblach visibility: Faicsinneachd with_media: Le meadhanan riutha strikes: diff --git a/config/locales/ig.yml b/config/locales/ig.yml index 9db771fdcf..81d425916c 100644 --- a/config/locales/ig.yml +++ b/config/locales/ig.yml @@ -1,5 +1,28 @@ --- ig: + admin: + settings: + discovery: + profile_directory: Ndekọ profaịlụ + admin_mailer: + new_trends: + new_trending_statuses: + title: Edemede na-ewu ewu + application_mailer: + view_profile: Lelee profaịlụ filters: contexts: + account: Profaịlụ home: Ụlọ na ndepụta + edit: + title: Dezie myọ + index: + delete: Hichapụ + empty: Ị nweghi myọ ọbụla. + title: Myọ + settings: + edit_profile: Dezie profaịlụ gị + profile: Profaịlụ ọha + user_mailer: + welcome: + share_title: Kekọrịta profaịlụ Mastọdọnụ gị diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index 4083469b63..4c3a297738 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -10,6 +10,7 @@ gd: indexable: Faodaidh na postaichean poblach agad a nochdadh am measg toraidhean luirg air Mastodon. ’S urrainn dhan fheadhainn a rinn eadar-ghabhail leis na postaichean agad lorg annta air a h-uile dòigh. note: "’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais." show_collections: "’S urrainn do chàch na dàimhean leantainn agad a rùrachadh. Chì daoine a leanas tu gu bheil thu ’gan leantainn air a h-uile dòigh." + unlocked: "’S urrainnear do leantainn gun aonta iarraidh. Thoir a’ chromag air falbh ma tha thu airson lèirmheas a dhèanamh air iarrtasan leantainn agus cur romhad an gabh thu ri luchd-leantainn ùr no an diùilt thu iad." account_alias: acct: Sònraich ainm-cleachdaiche@àrainn dhen chunntas a tha thu airson imrich uaithe account_migration: diff --git a/config/locales/simple_form.ig.yml b/config/locales/simple_form.ig.yml index 7c264f0d73..e88d195b8a 100644 --- a/config/locales/simple_form.ig.yml +++ b/config/locales/simple_form.ig.yml @@ -1 +1,8 @@ +--- ig: + simple_form: + labels: + defaults: + avatar: Foto profaịlụ + chosen_languages: Myọcha asụsụ + context: Myọcha ọnọdụ diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0b7edae913..61de577709 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -61,7 +61,7 @@ zh-CN: setting_display_media_hide_all: 始终隐藏媒体 setting_display_media_show_all: 始终显示媒体 setting_use_blurhash: 渐变是基于模糊后的隐藏内容生成的 - setting_use_pending_items: 关闭自动滚动更新,时间轴会在点击后更新 + setting_use_pending_items: 点击查看时间线更新,而非自动滚动更新动态。 username: 你只能使用字母、数字和下划线 whole_word: 如果关键词只包含字母和数字,将只在词语完全匹配时才会应用 domain_allow: @@ -80,7 +80,7 @@ zh-CN: activity_api_enabled: 本站每周的嘟文数、活跃用户数和新注册用户数 app_icon: WEBP、PNG、GIF 或 JPG。使用自定义图标覆盖移动设备上的默认应用图标。 backups_retention_period: 用户可以生成其嘟文存档以供之后下载。当该值被设为正值时,这些存档将在指定的天数后自动从你的存储中删除。 - bootstrap_timeline_accounts: 这些账号将在新用户关注推荐中置顶。 + bootstrap_timeline_accounts: 这些账号将在新用户关注推荐中置顶显示。 closed_registrations_message: 在关闭注册时显示 content_cache_retention_period: 来自其它实例的所有嘟文(包括转嘟与回复)都将在指定天数后被删除,不论本实例用户是否与这些嘟文产生过交互。这包括被本实例用户喜欢和收藏的嘟文。实例间用户的私下提及也将丢失并无法恢复。此设置针对的是特殊用途的实例,用于一般用途时会打破许多用户的期望。 custom_css: 你可以为网页版 Mastodon 应用自定义样式。 @@ -99,7 +99,7 @@ zh-CN: status_page_url: 配置一个网址,当服务中断时,人们可以通过该网址查看服务器的状态。 theme: 给未登录访客和新用户使用的主题。 thumbnail: 与服务器信息一并展示的约 2:1 比例的图像。 - timeline_preview: 未登录访客将能够浏览服务器上最新的公共嘟文。 + timeline_preview: 未登录访客将能够浏览服务器上的最新公开嘟文。 trendable_by_default: 跳过对热门内容的手工审核。个别项目仍可在之后从趋势中删除。 trends: 热门页中会显示正在你服务器上受到关注的嘟文、标签和新闻故事。 trends_as_landing_page: 向注销的用户和访问者显示热门内容,而不是对该服务器的描述,需要启用热门。 @@ -130,7 +130,7 @@ zh-CN: tag: name: 你只能改变字母的大小写,让它更易读 user: - chosen_languages: 仅选中语言的嘟文会出现在公共时间轴上(全不选则显示所有语言的嘟文) + chosen_languages: 仅选中语言的嘟文会出现在公共时间线上(全不选则显示所有语言的嘟文) role: 角色用于控制用户拥有的权限。 user_role: color: 在界面各处用于标记该角色的颜色,以十六进制 RGB 格式表示 @@ -205,7 +205,7 @@ zh-CN: password: 密码 phrase: 关键词 setting_advanced_layout: 启用高级 Web 界面 - setting_aggregate_reblogs: 在时间轴中合并转嘟 + setting_aggregate_reblogs: 在时间线中合并转嘟 setting_always_send_emails: 总是发送电子邮件通知 setting_auto_play_gif: 自动播放 GIF 动画 setting_boost_modal: 在转嘟前询问我 @@ -247,7 +247,7 @@ zh-CN: activity_api_enabled: 在 API 中发布有关用户活动的汇总统计数据 app_icon: 应用图标 backups_retention_period: 用户存档保留期 - bootstrap_timeline_accounts: 推荐新用户关注以下账号 + bootstrap_timeline_accounts: 向新用户推荐以下账号 closed_registrations_message: 在关闭注册时显示的自定义消息 content_cache_retention_period: 外站内容保留期 custom_css: 自定义 CSS @@ -269,7 +269,7 @@ zh-CN: status_page_url: 状态页网址 theme: 默认主题 thumbnail: 本站缩略图 - timeline_preview: 时间轴预览 + timeline_preview: 允许未登录用户访问公共时间线 trendable_by_default: 允许在未审核的情况下将话题置为热门 trends: 启用热门 trends_as_landing_page: 使用热门页作为登陆页面 diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 7dc0f3d949..1623f39ad6 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -602,7 +602,7 @@ zh-CN: actions_description_html: 决定采取何种措施处理此举报。如果对被举报账号采取惩罚性措施,将向其发送一封电子邮件通知。但若选中垃圾信息类别则不会发送通知。 actions_description_remote_html: 决定采取何种行动来解决此举报。 这只会影响你的服务器如何与该远程账户的通信并处理其内容。 actions_no_posts: 该举报没有相关嘟文可供删除 - add_to_report: 增加更多举报内容 + add_to_report: 添加更多内容到举报 already_suspended_badges: local: 已在此服务器上被封禁 remote: 已在其所属服务器被封禁 @@ -660,8 +660,8 @@ zh-CN: mark_as_sensitive_html: 将违规嘟文的媒体标记为敏感 silence_html: 严格限制 @%{acct} 的影响力,方法是让他们的个人资料和内容仅对已经关注他们的人可见,或手动查找其个人资料时 suspend_html: 暂停 @%{acct},使他们的个人资料和内容无法访问,也无法与之互动 - close_report: '将报告 #%{id} 标记为已解决' - close_reports_html: 将针对 @%{acct}所有 报告标记为已解决 + close_report: '将举报 #%{id} 标记为已解决' + close_reports_html: 将针对 @%{acct}所有举报标记为已解决 delete_data_html: 从现在起 30 天后删除 @%{acct} 的个人资料和内容,除非他们同时解除暂停。 preview_preamble_html: "@%{acct} 将收到包含以下内容的警告:" record_strike_html: 记录一次针对 @%{acct} 的警示,以帮助你在这个账户上的未来违规事件中得到重视。 @@ -766,7 +766,7 @@ zh-CN: follow_recommendations: 关注推荐 preamble: 露出有趣的内容有助于新加入 Mastodon 的用户融入。可在这里控制多种发现功能如何在你的服务器上工作。 profile_directory: 个人资料目录 - public_timelines: 公共时间轴 + public_timelines: 公共时间线 publish_discovered_servers: 已公开实例的服务器 publish_statistics: 发布统计数据 title: 发现 @@ -813,7 +813,7 @@ zh-CN: back_to_report: 返回举报页 batch: add_to_report: '添加到举报 #%{id}' - remove_from_report: 从报告中移除 + remove_from_report: 从举报中移除 report: 举报 contents: 内容 deleted: 已删除 @@ -1055,7 +1055,7 @@ zh-CN: remove: 取消关联别名 appearance: advanced_web_interface: 高级 Web 界面 - advanced_web_interface_hint: 如果你想使用整个屏幕宽度,高级 web 界面允许你配置多个不同的栏目,可以同时看到更多的信息:主页、通知、跨站时间轴、任意数量的列表和话题标签。 + advanced_web_interface_hint: 如果你想使用整个屏幕宽度,高级 web 界面允许你配置多个不同的栏目,可以同时看到更多的信息:主页、通知、跨站时间线、任意数量的列表和话题标签。 animations_and_accessibility: 动画与可访问性 confirmation_dialogs: 确认对话框 discovery: 发现 @@ -1286,9 +1286,9 @@ zh-CN: filters: contexts: account: 个人资料 - home: 主页时间轴 + home: 主页时间线 notifications: 通知 - public: 公共时间轴 + public: 公共时间线 thread: 对话 edit: add_keyword: 添加关键词 @@ -1585,7 +1585,7 @@ zh-CN: preferences: other: 其他 posting_defaults: 发布默认值 - public_timelines: 公共时间轴 + public_timelines: 公共时间线 privacy: hint_html: "自定义你希望如何找到你的个人资料和嘟文。启用Mastodon中的各种功能可以帮助你扩大受众范围。请花点时间查看这些设置,确保它们适合你的使用情况。" privacy: 隐私 @@ -1699,7 +1699,7 @@ zh-CN: development: 开发 edit_profile: 更改个人资料 export: 导出 - featured_tags: 精选的话题标签 + featured_tags: 精选话题标签 import: 导入 import_and_export: 导入与导出 migrate: 账户迁移 @@ -1752,9 +1752,9 @@ zh-CN: private: 仅关注者 private_long: 只有关注你的用户能看到 public: 公开 - public_long: 所有人可见,并会出现在公共时间轴上 + public_long: 所有人可见,并会出现在公共时间线上 unlisted: 悄悄公开 - unlisted_long: 所有人可见,但不会出现在公共时间轴上 + unlisted_long: 对所有人可见,但不出现在公共时间线上 statuses_cleanup: enabled: 自动删除旧嘟文 enabled_hint: 达到指定过期时间后自动删除你的嘟文,除非满足下列条件之一 From 4517e18b79d3e7579015264d031040e712e15e08 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Thu, 21 Nov 2024 14:48:30 +0100 Subject: [PATCH 430/550] Update dependency doorkeeper to v5.8.0 (#33000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- app/lib/oauth_pre_authorization_extension.rb | 13 ------------- app/presenters/oauth_metadata_presenter.rb | 2 +- config/application.rb | 1 - config/initializers/doorkeeper.rb | 3 +++ spec/requests/well_known/oauth_metadata_spec.rb | 2 +- spec/system/oauth_spec.rb | 2 ++ 7 files changed, 8 insertions(+), 17 deletions(-) delete mode 100644 app/lib/oauth_pre_authorization_extension.rb diff --git a/Gemfile.lock b/Gemfile.lock index bb503e157e..d005c744cc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -200,7 +200,7 @@ GEM activerecord (>= 4.2, < 9.0) docile (1.4.1) domain_name (0.6.20240107) - doorkeeper (5.7.1) + doorkeeper (5.8.0) railties (>= 5) dotenv (3.1.4) drb (2.2.1) diff --git a/app/lib/oauth_pre_authorization_extension.rb b/app/lib/oauth_pre_authorization_extension.rb deleted file mode 100644 index 1885e0823d..0000000000 --- a/app/lib/oauth_pre_authorization_extension.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module OauthPreAuthorizationExtension - extend ActiveSupport::Concern - - included do - validate :code_challenge_method_s256, error: Doorkeeper::Errors::InvalidCodeChallengeMethod - end - - def validate_code_challenge_method_s256 - code_challenge.blank? || code_challenge_method == 'S256' - end -end diff --git a/app/presenters/oauth_metadata_presenter.rb b/app/presenters/oauth_metadata_presenter.rb index 7d75e8498a..f488a62925 100644 --- a/app/presenters/oauth_metadata_presenter.rb +++ b/app/presenters/oauth_metadata_presenter.rb @@ -65,7 +65,7 @@ class OauthMetadataPresenter < ActiveModelSerializers::Model end def code_challenge_methods_supported - %w(S256) + doorkeeper.pkce_code_challenge_methods_supported end private diff --git a/config/application.rb b/config/application.rb index cfeed02e98..e4e9680e66 100644 --- a/config/application.rb +++ b/config/application.rb @@ -114,7 +114,6 @@ module Mastodon Doorkeeper::Application.include ApplicationExtension Doorkeeper::AccessGrant.include AccessGrantExtension Doorkeeper::AccessToken.include AccessTokenExtension - Doorkeeper::OAuth::PreAuthorization.include OauthPreAuthorizationExtension Devise::FailureApp.include AbstractController::Callbacks Devise::FailureApp.include Localized end diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index de1c75f576..516db258df 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -52,6 +52,9 @@ Doorkeeper.configure do # Issue access tokens with refresh token (disabled by default) # use_refresh_token + # Proof of Key Code Exchange + pkce_code_challenge_methods ['S256'] + # Forbids creating/updating applications with arbitrary scopes that are # not in configuration, i.e. `default_scopes` or `optional_scopes`. # (Disabled by default) diff --git a/spec/requests/well_known/oauth_metadata_spec.rb b/spec/requests/well_known/oauth_metadata_spec.rb index 01e9146fde..42a6c1b328 100644 --- a/spec/requests/well_known/oauth_metadata_spec.rb +++ b/spec/requests/well_known/oauth_metadata_spec.rb @@ -27,7 +27,7 @@ RSpec.describe 'The /.well-known/oauth-authorization-server request' do response_modes_supported: Doorkeeper.configuration.authorization_response_flows.flat_map(&:response_mode_matches).uniq, token_endpoint_auth_methods_supported: %w(client_secret_basic client_secret_post), grant_types_supported: grant_types_supported, - code_challenge_methods_supported: ['S256'], + code_challenge_methods_supported: Doorkeeper.configuration.pkce_code_challenge_methods_supported, # non-standard extension: app_registration_endpoint: api_v1_apps_url ) diff --git a/spec/system/oauth_spec.rb b/spec/system/oauth_spec.rb index 14ffc163f0..caed5ea9af 100644 --- a/spec/system/oauth_spec.rb +++ b/spec/system/oauth_spec.rb @@ -115,6 +115,8 @@ RSpec.describe 'Using OAuth from an external app' do subject within '.form-container .flash-message' do + # FIXME: Replace with doorkeeper.errors.messages.invalid_code_challenge_method.one for Doorkeeper > 5.8.0 + # see: https://github.com/doorkeeper-gem/doorkeeper/pull/1747 expect(page).to have_content(I18n.t('doorkeeper.errors.messages.invalid_code_challenge_method')) end end From dbddd40c1c69e66c6b11cd7b42de2a69456581d6 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 21 Nov 2024 15:06:57 +0100 Subject: [PATCH 431/550] Add stop-gap antispam code (#32981) --- app/lib/antispam.rb | 45 +++++++++++++++++++++++++++++ app/services/post_status_service.rb | 8 +++++ 2 files changed, 53 insertions(+) create mode 100644 app/lib/antispam.rb diff --git a/app/lib/antispam.rb b/app/lib/antispam.rb new file mode 100644 index 0000000000..bc4841280f --- /dev/null +++ b/app/lib/antispam.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +class Antispam + include Redisable + + ACCOUNT_AGE_EXEMPTION = 1.week.freeze + + class SilentlyDrop < StandardError + attr_reader :status + + def initialize(status) + super() + + @status = status + + status.created_at = Time.now.utc + status.id = Mastodon::Snowflake.id_at(status.created_at) + status.in_reply_to_account_id = status.thread&.account_id + + status.delete # Make sure this is not persisted + end + end + + def local_preflight_check!(status) + return unless spammy_texts.any? { |spammy_text| status.text.include?(spammy_text) } + return unless status.thread.present? && !status.thread.account.following?(status.account) + return unless status.account.created_at >= ACCOUNT_AGE_EXEMPTION.ago + + report_if_needed!(status.account) + + raise SilentlyDrop, status + end + + private + + def spammy_texts + redis.smembers('antispam:spammy_texts') + end + + def report_if_needed!(account) + return if Report.unresolved.exists?(account: Account.representative, target_account: account) + + Report.create!(account: Account.representative, target_account: account, category: :spam, comment: 'Account automatically reported for posting a banned URL') + end +end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index ee6b18c74c..765c80723e 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -36,6 +36,8 @@ class PostStatusService < BaseService @text = @options[:text] || '' @in_reply_to = @options[:thread] + @antispam = Antispam.new + return idempotency_duplicate if idempotency_given? && idempotency_duplicate? validate_media! @@ -55,6 +57,8 @@ class PostStatusService < BaseService end @status + rescue Antispam::SilentlyDrop => e + e.status end private @@ -74,6 +78,7 @@ class PostStatusService < BaseService @status = @account.statuses.new(status_attributes) process_mentions_service.call(@status, save_records: false) safeguard_mentions!(@status) + @antispam.local_preflight_check!(@status) # The following transaction block is needed to wrap the UPDATEs to # the media attachments when the status is created @@ -95,6 +100,7 @@ class PostStatusService < BaseService def schedule_status! status_for_validation = @account.statuses.build(status_attributes) + @antispam.local_preflight_check!(status_for_validation) if status_for_validation.valid? # Marking the status as destroyed is necessary to prevent the status from being @@ -111,6 +117,8 @@ class PostStatusService < BaseService else raise ActiveRecord::RecordInvalid end + rescue Antispam::SilentlyDrop + @status = @account.scheduled_status.new(scheduled_status_attributes).tap(&:delete) end def postprocess_status! From 73850168373366376f3907299b2c32469d287180 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Thu, 21 Nov 2024 15:37:25 +0100 Subject: [PATCH 432/550] `rel="me"` check should be case-insenstive (#32238) --- app/lib/link_details_extractor.rb | 2 +- app/lib/nokogiri_handler.rb | 12 ++++++++++++ app/services/fetch_resource_service.rb | 2 +- app/services/verify_link_service.rb | 2 +- spec/services/verify_link_service_spec.rb | 15 +++++++++++++++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 app/lib/nokogiri_handler.rb diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb index e4e815c38d..56533f6553 100644 --- a/app/lib/link_details_extractor.rb +++ b/app/lib/link_details_extractor.rb @@ -237,7 +237,7 @@ class LinkDetailsExtractor end def link_tag(name) - document.xpath("//link[@rel=\"#{name}\"]").pick('href') + document.xpath("//link[nokogiri:link_rel_include(@rel, '#{name}')]", NokogiriHandler).pick('href') end def opengraph_tag(name) diff --git a/app/lib/nokogiri_handler.rb b/app/lib/nokogiri_handler.rb new file mode 100644 index 0000000000..804bcb9c04 --- /dev/null +++ b/app/lib/nokogiri_handler.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class NokogiriHandler + class << self + # See "set of space-separated tokens" in the HTML5 spec. + WHITE_SPACE = /[ \x09\x0A\x0C\x0D]+/ + + def link_rel_include(token_list, token) + token_list.to_s.downcase.split(WHITE_SPACE).include?(token.downcase) + end + end +end diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb index 911950ccca..3fde78455c 100644 --- a/app/services/fetch_resource_service.rb +++ b/app/services/fetch_resource_service.rb @@ -74,7 +74,7 @@ class FetchResourceService < BaseService def process_html(response) page = Nokogiri::HTML5(response.body_with_limit) - json_link = page.xpath('//link[@rel="alternate"]').find { |link| ACTIVITY_STREAM_LINK_TYPES.include?(link['type']) } + json_link = page.xpath('//link[nokogiri:link_rel_include(@rel, "alternate")]', NokogiriHandler).find { |link| ACTIVITY_STREAM_LINK_TYPES.include?(link['type']) } process(json_link['href'], terminal: true) unless json_link.nil? end diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb index 17c86426be..fc3c4cbc28 100644 --- a/app/services/verify_link_service.rb +++ b/app/services/verify_link_service.rb @@ -26,7 +26,7 @@ class VerifyLinkService < BaseService def link_back_present? return false if @body.blank? - links = Nokogiri::HTML5(@body).css("a[rel~='me'],link[rel~='me']") + links = Nokogiri::HTML5(@body).xpath('(//a|//link)[@rel][nokogiri:link_rel_include(@rel, "me")]', NokogiriHandler) if links.any? { |link| link['href']&.downcase == @link_back.downcase } true diff --git a/spec/services/verify_link_service_spec.rb b/spec/services/verify_link_service_spec.rb index a4fd19751b..7e2f9607cf 100644 --- a/spec/services/verify_link_service_spec.rb +++ b/spec/services/verify_link_service_spec.rb @@ -46,6 +46,21 @@ RSpec.describe VerifyLinkService do end end + context 'when a link contains an back' do + let(:html) do + <<~HTML + + + Follow me on Mastodon + + HTML + end + + it 'marks the field as verified' do + expect(field.verified?).to be true + end + end + context 'when a link contains a back' do let(:html) do <<~HTML From 62603508c7343f0b9ef880bcbed67c70a9e8375d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 21 Nov 2024 17:10:04 +0100 Subject: [PATCH 433/550] Change design of lists in web UI (#32881) --- app/javascript/mastodon/actions/lists.js | 285 ------------- .../mastodon/actions/lists_typed.ts | 13 + app/javascript/mastodon/api.ts | 1 + app/javascript/mastodon/api/lists.ts | 32 ++ app/javascript/mastodon/api_types/lists.ts | 10 + .../mastodon/components/check_box.tsx | 13 +- .../mastodon/components/scrollable_list.jsx | 11 +- .../containers/dropdown_menu_container.js | 7 + .../list_adder/components/account.jsx | 43 -- .../features/list_adder/components/list.jsx | 75 ---- .../mastodon/features/list_adder/index.jsx | 76 ---- .../mastodon/features/list_adder/index.tsx | 213 ++++++++++ .../list_editor/components/account.jsx | 82 ---- .../list_editor/components/edit_list_form.jsx | 76 ---- .../list_editor/components/search.jsx | 83 ---- .../mastodon/features/list_editor/index.jsx | 83 ---- .../mastodon/features/list_timeline/index.jsx | 65 +-- .../lists/components/new_list_form.jsx | 80 ---- .../mastodon/features/lists/index.jsx | 94 ----- .../mastodon/features/lists/index.tsx | 145 +++++++ .../mastodon/features/lists/members.tsx | 373 ++++++++++++++++++ .../mastodon/features/lists/new.tsx | 296 ++++++++++++++ .../features/ui/components/modal_root.jsx | 2 - app/javascript/mastodon/features/ui/index.jsx | 7 +- .../features/ui/util/async-components.js | 12 +- app/javascript/mastodon/locales/en.json | 34 +- app/javascript/mastodon/models/list.ts | 18 + app/javascript/mastodon/reducers/index.ts | 8 +- .../mastodon/reducers/list_adder.js | 48 --- .../mastodon/reducers/list_editor.js | 99 ----- app/javascript/mastodon/reducers/lists.js | 38 -- app/javascript/mastodon/reducers/lists.ts | 49 +++ app/javascript/mastodon/selectors/lists.ts | 15 + .../styles/mastodon-light/variables.scss | 1 + app/javascript/styles/mastodon/admin.scss | 10 - .../styles/mastodon/components.scss | 191 ++++----- app/javascript/styles/mastodon/forms.scss | 53 +++ app/javascript/styles/mastodon/variables.scss | 1 + app/javascript/svg-icons/squiggly_arrow.svg | 3 + 39 files changed, 1395 insertions(+), 1350 deletions(-) create mode 100644 app/javascript/mastodon/actions/lists_typed.ts create mode 100644 app/javascript/mastodon/api/lists.ts create mode 100644 app/javascript/mastodon/api_types/lists.ts delete mode 100644 app/javascript/mastodon/features/list_adder/components/account.jsx delete mode 100644 app/javascript/mastodon/features/list_adder/components/list.jsx delete mode 100644 app/javascript/mastodon/features/list_adder/index.jsx create mode 100644 app/javascript/mastodon/features/list_adder/index.tsx delete mode 100644 app/javascript/mastodon/features/list_editor/components/account.jsx delete mode 100644 app/javascript/mastodon/features/list_editor/components/edit_list_form.jsx delete mode 100644 app/javascript/mastodon/features/list_editor/components/search.jsx delete mode 100644 app/javascript/mastodon/features/list_editor/index.jsx delete mode 100644 app/javascript/mastodon/features/lists/components/new_list_form.jsx delete mode 100644 app/javascript/mastodon/features/lists/index.jsx create mode 100644 app/javascript/mastodon/features/lists/index.tsx create mode 100644 app/javascript/mastodon/features/lists/members.tsx create mode 100644 app/javascript/mastodon/features/lists/new.tsx create mode 100644 app/javascript/mastodon/models/list.ts delete mode 100644 app/javascript/mastodon/reducers/list_adder.js delete mode 100644 app/javascript/mastodon/reducers/list_editor.js delete mode 100644 app/javascript/mastodon/reducers/lists.js create mode 100644 app/javascript/mastodon/reducers/lists.ts create mode 100644 app/javascript/mastodon/selectors/lists.ts create mode 100644 app/javascript/svg-icons/squiggly_arrow.svg diff --git a/app/javascript/mastodon/actions/lists.js b/app/javascript/mastodon/actions/lists.js index 9956059387..f9abc2e769 100644 --- a/app/javascript/mastodon/actions/lists.js +++ b/app/javascript/mastodon/actions/lists.js @@ -1,8 +1,5 @@ import api from '../api'; -import { showAlertForError } from './alerts'; -import { importFetchedAccounts } from './importer'; - export const LIST_FETCH_REQUEST = 'LIST_FETCH_REQUEST'; export const LIST_FETCH_SUCCESS = 'LIST_FETCH_SUCCESS'; export const LIST_FETCH_FAIL = 'LIST_FETCH_FAIL'; @@ -11,45 +8,10 @@ export const LISTS_FETCH_REQUEST = 'LISTS_FETCH_REQUEST'; export const LISTS_FETCH_SUCCESS = 'LISTS_FETCH_SUCCESS'; export const LISTS_FETCH_FAIL = 'LISTS_FETCH_FAIL'; -export const LIST_EDITOR_TITLE_CHANGE = 'LIST_EDITOR_TITLE_CHANGE'; -export const LIST_EDITOR_RESET = 'LIST_EDITOR_RESET'; -export const LIST_EDITOR_SETUP = 'LIST_EDITOR_SETUP'; - -export const LIST_CREATE_REQUEST = 'LIST_CREATE_REQUEST'; -export const LIST_CREATE_SUCCESS = 'LIST_CREATE_SUCCESS'; -export const LIST_CREATE_FAIL = 'LIST_CREATE_FAIL'; - -export const LIST_UPDATE_REQUEST = 'LIST_UPDATE_REQUEST'; -export const LIST_UPDATE_SUCCESS = 'LIST_UPDATE_SUCCESS'; -export const LIST_UPDATE_FAIL = 'LIST_UPDATE_FAIL'; - export const LIST_DELETE_REQUEST = 'LIST_DELETE_REQUEST'; export const LIST_DELETE_SUCCESS = 'LIST_DELETE_SUCCESS'; export const LIST_DELETE_FAIL = 'LIST_DELETE_FAIL'; -export const LIST_ACCOUNTS_FETCH_REQUEST = 'LIST_ACCOUNTS_FETCH_REQUEST'; -export const LIST_ACCOUNTS_FETCH_SUCCESS = 'LIST_ACCOUNTS_FETCH_SUCCESS'; -export const LIST_ACCOUNTS_FETCH_FAIL = 'LIST_ACCOUNTS_FETCH_FAIL'; - -export const LIST_EDITOR_SUGGESTIONS_CHANGE = 'LIST_EDITOR_SUGGESTIONS_CHANGE'; -export const LIST_EDITOR_SUGGESTIONS_READY = 'LIST_EDITOR_SUGGESTIONS_READY'; -export const LIST_EDITOR_SUGGESTIONS_CLEAR = 'LIST_EDITOR_SUGGESTIONS_CLEAR'; - -export const LIST_EDITOR_ADD_REQUEST = 'LIST_EDITOR_ADD_REQUEST'; -export const LIST_EDITOR_ADD_SUCCESS = 'LIST_EDITOR_ADD_SUCCESS'; -export const LIST_EDITOR_ADD_FAIL = 'LIST_EDITOR_ADD_FAIL'; - -export const LIST_EDITOR_REMOVE_REQUEST = 'LIST_EDITOR_REMOVE_REQUEST'; -export const LIST_EDITOR_REMOVE_SUCCESS = 'LIST_EDITOR_REMOVE_SUCCESS'; -export const LIST_EDITOR_REMOVE_FAIL = 'LIST_EDITOR_REMOVE_FAIL'; - -export const LIST_ADDER_RESET = 'LIST_ADDER_RESET'; -export const LIST_ADDER_SETUP = 'LIST_ADDER_SETUP'; - -export const LIST_ADDER_LISTS_FETCH_REQUEST = 'LIST_ADDER_LISTS_FETCH_REQUEST'; -export const LIST_ADDER_LISTS_FETCH_SUCCESS = 'LIST_ADDER_LISTS_FETCH_SUCCESS'; -export const LIST_ADDER_LISTS_FETCH_FAIL = 'LIST_ADDER_LISTS_FETCH_FAIL'; - export const fetchList = id => (dispatch, getState) => { if (getState().getIn(['lists', id])) { return; @@ -100,89 +62,6 @@ export const fetchListsFail = error => ({ error, }); -export const submitListEditor = shouldReset => (dispatch, getState) => { - const listId = getState().getIn(['listEditor', 'listId']); - const title = getState().getIn(['listEditor', 'title']); - - if (listId === null) { - dispatch(createList(title, shouldReset)); - } else { - dispatch(updateList(listId, title, shouldReset)); - } -}; - -export const setupListEditor = listId => (dispatch, getState) => { - dispatch({ - type: LIST_EDITOR_SETUP, - list: getState().getIn(['lists', listId]), - }); - - dispatch(fetchListAccounts(listId)); -}; - -export const changeListEditorTitle = value => ({ - type: LIST_EDITOR_TITLE_CHANGE, - value, -}); - -export const createList = (title, shouldReset) => (dispatch) => { - dispatch(createListRequest()); - - api().post('/api/v1/lists', { title }).then(({ data }) => { - dispatch(createListSuccess(data)); - - if (shouldReset) { - dispatch(resetListEditor()); - } - }).catch(err => dispatch(createListFail(err))); -}; - -export const createListRequest = () => ({ - type: LIST_CREATE_REQUEST, -}); - -export const createListSuccess = list => ({ - type: LIST_CREATE_SUCCESS, - list, -}); - -export const createListFail = error => ({ - type: LIST_CREATE_FAIL, - error, -}); - -export const updateList = (id, title, shouldReset, isExclusive, replies_policy) => (dispatch) => { - dispatch(updateListRequest(id)); - - api().put(`/api/v1/lists/${id}`, { title, replies_policy, exclusive: typeof isExclusive === 'undefined' ? undefined : !!isExclusive }).then(({ data }) => { - dispatch(updateListSuccess(data)); - - if (shouldReset) { - dispatch(resetListEditor()); - } - }).catch(err => dispatch(updateListFail(id, err))); -}; - -export const updateListRequest = id => ({ - type: LIST_UPDATE_REQUEST, - id, -}); - -export const updateListSuccess = list => ({ - type: LIST_UPDATE_SUCCESS, - list, -}); - -export const updateListFail = (id, error) => ({ - type: LIST_UPDATE_FAIL, - id, - error, -}); - -export const resetListEditor = () => ({ - type: LIST_EDITOR_RESET, -}); - export const deleteList = id => (dispatch) => { dispatch(deleteListRequest(id)); @@ -206,167 +85,3 @@ export const deleteListFail = (id, error) => ({ id, error, }); - -export const fetchListAccounts = listId => (dispatch) => { - dispatch(fetchListAccountsRequest(listId)); - - api().get(`/api/v1/lists/${listId}/accounts`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchListAccountsSuccess(listId, data)); - }).catch(err => dispatch(fetchListAccountsFail(listId, err))); -}; - -export const fetchListAccountsRequest = id => ({ - type: LIST_ACCOUNTS_FETCH_REQUEST, - id, -}); - -export const fetchListAccountsSuccess = (id, accounts, next) => ({ - type: LIST_ACCOUNTS_FETCH_SUCCESS, - id, - accounts, - next, -}); - -export const fetchListAccountsFail = (id, error) => ({ - type: LIST_ACCOUNTS_FETCH_FAIL, - id, - error, -}); - -export const fetchListSuggestions = q => (dispatch) => { - const params = { - q, - resolve: false, - limit: 4, - following: true, - }; - - api().get('/api/v1/accounts/search', { params }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchListSuggestionsReady(q, data)); - }).catch(error => dispatch(showAlertForError(error))); -}; - -export const fetchListSuggestionsReady = (query, accounts) => ({ - type: LIST_EDITOR_SUGGESTIONS_READY, - query, - accounts, -}); - -export const clearListSuggestions = () => ({ - type: LIST_EDITOR_SUGGESTIONS_CLEAR, -}); - -export const changeListSuggestions = value => ({ - type: LIST_EDITOR_SUGGESTIONS_CHANGE, - value, -}); - -export const addToListEditor = accountId => (dispatch, getState) => { - dispatch(addToList(getState().getIn(['listEditor', 'listId']), accountId)); -}; - -export const addToList = (listId, accountId) => (dispatch) => { - dispatch(addToListRequest(listId, accountId)); - - api().post(`/api/v1/lists/${listId}/accounts`, { account_ids: [accountId] }) - .then(() => dispatch(addToListSuccess(listId, accountId))) - .catch(err => dispatch(addToListFail(listId, accountId, err))); -}; - -export const addToListRequest = (listId, accountId) => ({ - type: LIST_EDITOR_ADD_REQUEST, - listId, - accountId, -}); - -export const addToListSuccess = (listId, accountId) => ({ - type: LIST_EDITOR_ADD_SUCCESS, - listId, - accountId, -}); - -export const addToListFail = (listId, accountId, error) => ({ - type: LIST_EDITOR_ADD_FAIL, - listId, - accountId, - error, -}); - -export const removeFromListEditor = accountId => (dispatch, getState) => { - dispatch(removeFromList(getState().getIn(['listEditor', 'listId']), accountId)); -}; - -export const removeFromList = (listId, accountId) => (dispatch) => { - dispatch(removeFromListRequest(listId, accountId)); - - api().delete(`/api/v1/lists/${listId}/accounts`, { params: { account_ids: [accountId] } }) - .then(() => dispatch(removeFromListSuccess(listId, accountId))) - .catch(err => dispatch(removeFromListFail(listId, accountId, err))); -}; - -export const removeFromListRequest = (listId, accountId) => ({ - type: LIST_EDITOR_REMOVE_REQUEST, - listId, - accountId, -}); - -export const removeFromListSuccess = (listId, accountId) => ({ - type: LIST_EDITOR_REMOVE_SUCCESS, - listId, - accountId, -}); - -export const removeFromListFail = (listId, accountId, error) => ({ - type: LIST_EDITOR_REMOVE_FAIL, - listId, - accountId, - error, -}); - -export const resetListAdder = () => ({ - type: LIST_ADDER_RESET, -}); - -export const setupListAdder = accountId => (dispatch, getState) => { - dispatch({ - type: LIST_ADDER_SETUP, - account: getState().getIn(['accounts', accountId]), - }); - dispatch(fetchLists()); - dispatch(fetchAccountLists(accountId)); -}; - -export const fetchAccountLists = accountId => (dispatch) => { - dispatch(fetchAccountListsRequest(accountId)); - - api().get(`/api/v1/accounts/${accountId}/lists`) - .then(({ data }) => dispatch(fetchAccountListsSuccess(accountId, data))) - .catch(err => dispatch(fetchAccountListsFail(accountId, err))); -}; - -export const fetchAccountListsRequest = id => ({ - type:LIST_ADDER_LISTS_FETCH_REQUEST, - id, -}); - -export const fetchAccountListsSuccess = (id, lists) => ({ - type: LIST_ADDER_LISTS_FETCH_SUCCESS, - id, - lists, -}); - -export const fetchAccountListsFail = (id, err) => ({ - type: LIST_ADDER_LISTS_FETCH_FAIL, - id, - err, -}); - -export const addToListAdder = listId => (dispatch, getState) => { - dispatch(addToList(listId, getState().getIn(['listAdder', 'accountId']))); -}; - -export const removeFromListAdder = listId => (dispatch, getState) => { - dispatch(removeFromList(listId, getState().getIn(['listAdder', 'accountId']))); -}; diff --git a/app/javascript/mastodon/actions/lists_typed.ts b/app/javascript/mastodon/actions/lists_typed.ts new file mode 100644 index 0000000000..ccc5c11c89 --- /dev/null +++ b/app/javascript/mastodon/actions/lists_typed.ts @@ -0,0 +1,13 @@ +import { apiCreate, apiUpdate } from 'mastodon/api/lists'; +import type { List } from 'mastodon/models/list'; +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; + +export const createList = createDataLoadingThunk( + 'list/create', + (list: Partial) => apiCreate(list), +); + +export const updateList = createDataLoadingThunk( + 'list/update', + (list: Partial) => apiUpdate(list), +); diff --git a/app/javascript/mastodon/api.ts b/app/javascript/mastodon/api.ts index 51cbe0b695..f0663ded40 100644 --- a/app/javascript/mastodon/api.ts +++ b/app/javascript/mastodon/api.ts @@ -68,6 +68,7 @@ export async function apiRequest( method: Method, url: string, args: { + signal?: AbortSignal; params?: RequestParamsOrData; data?: RequestParamsOrData; timeout?: number; diff --git a/app/javascript/mastodon/api/lists.ts b/app/javascript/mastodon/api/lists.ts new file mode 100644 index 0000000000..a5586eb6d4 --- /dev/null +++ b/app/javascript/mastodon/api/lists.ts @@ -0,0 +1,32 @@ +import { + apiRequestPost, + apiRequestPut, + apiRequestGet, + apiRequestDelete, +} from 'mastodon/api'; +import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; +import type { ApiListJSON } from 'mastodon/api_types/lists'; + +export const apiCreate = (list: Partial) => + apiRequestPost('v1/lists', list); + +export const apiUpdate = (list: Partial) => + apiRequestPut(`v1/lists/${list.id}`, list); + +export const apiGetAccounts = (listId: string) => + apiRequestGet(`v1/lists/${listId}/accounts`, { + limit: 0, + }); + +export const apiGetAccountLists = (accountId: string) => + apiRequestGet(`v1/accounts/${accountId}/lists`); + +export const apiAddAccountToList = (listId: string, accountId: string) => + apiRequestPost(`v1/lists/${listId}/accounts`, { + account_ids: [accountId], + }); + +export const apiRemoveAccountFromList = (listId: string, accountId: string) => + apiRequestDelete(`v1/lists/${listId}/accounts`, { + account_ids: [accountId], + }); diff --git a/app/javascript/mastodon/api_types/lists.ts b/app/javascript/mastodon/api_types/lists.ts new file mode 100644 index 0000000000..6984cf9b19 --- /dev/null +++ b/app/javascript/mastodon/api_types/lists.ts @@ -0,0 +1,10 @@ +// See app/serializers/rest/list_serializer.rb + +export type RepliesPolicyType = 'list' | 'followed' | 'none'; + +export interface ApiListJSON { + id: string; + title: string; + exclusive: boolean; + replies_policy: RepliesPolicyType; +} diff --git a/app/javascript/mastodon/components/check_box.tsx b/app/javascript/mastodon/components/check_box.tsx index 9bd137abf5..73fdb2f97b 100644 --- a/app/javascript/mastodon/components/check_box.tsx +++ b/app/javascript/mastodon/components/check_box.tsx @@ -7,11 +7,11 @@ import { Icon } from './icon'; interface Props { value: string; - checked: boolean; - indeterminate: boolean; - name: string; - onChange: (event: React.ChangeEvent) => void; - label: React.ReactNode; + checked?: boolean; + indeterminate?: boolean; + name?: string; + onChange?: (event: React.ChangeEvent) => void; + label?: React.ReactNode; } export const CheckBox: React.FC = ({ @@ -30,6 +30,7 @@ export const CheckBox: React.FC = ({ value={value} checked={checked} onChange={onChange} + readOnly={!onChange} /> = ({ )} - {label} + {label && {label}} ); }; diff --git a/app/javascript/mastodon/components/scrollable_list.jsx b/app/javascript/mastodon/components/scrollable_list.jsx index 29439fdf55..35cd86ea1a 100644 --- a/app/javascript/mastodon/components/scrollable_list.jsx +++ b/app/javascript/mastodon/components/scrollable_list.jsx @@ -80,6 +80,7 @@ class ScrollableList extends PureComponent { children: PropTypes.node, bindToDocument: PropTypes.bool, preventScroll: PropTypes.bool, + footer: PropTypes.node, }; static defaultProps = { @@ -324,7 +325,7 @@ class ScrollableList extends PureComponent { }; render () { - const { children, scrollKey, trackScroll, showLoading, isLoading, hasMore, numPending, prepend, alwaysPrepend, append, emptyMessage, onLoadMore } = this.props; + const { children, scrollKey, trackScroll, showLoading, isLoading, hasMore, numPending, prepend, alwaysPrepend, append, footer, emptyMessage, onLoadMore } = this.props; const { fullscreen } = this.state; const childrenCount = Children.count(children); @@ -342,11 +343,13 @@ class ScrollableList extends PureComponent {
+ + {footer}
); } else if (isLoading || childrenCount > 0 || numPending > 0 || hasMore || !emptyMessage) { scrollableArea = ( -
+
{prepend} @@ -375,6 +378,8 @@ class ScrollableList extends PureComponent { {!hasMore && append}
+ + {footer}
); } else { @@ -385,6 +390,8 @@ class ScrollableList extends PureComponent {
{emptyMessage}
+ + {footer}
); } diff --git a/app/javascript/mastodon/containers/dropdown_menu_container.js b/app/javascript/mastodon/containers/dropdown_menu_container.js index bc9124c041..dc2a9648ff 100644 --- a/app/javascript/mastodon/containers/dropdown_menu_container.js +++ b/app/javascript/mastodon/containers/dropdown_menu_container.js @@ -15,6 +15,13 @@ const mapStateToProps = state => ({ openedViaKeyboard: state.dropdownMenu.keyboard, }); +/** + * @param {any} dispatch + * @param {Object} root0 + * @param {any} [root0.status] + * @param {any} root0.items + * @param {any} [root0.scrollKey] + */ const mapDispatchToProps = (dispatch, { status, items, scrollKey }) => ({ onOpen(id, onItemClick, keyboard) { if (status) { diff --git a/app/javascript/mastodon/features/list_adder/components/account.jsx b/app/javascript/mastodon/features/list_adder/components/account.jsx deleted file mode 100644 index 94a90726e3..0000000000 --- a/app/javascript/mastodon/features/list_adder/components/account.jsx +++ /dev/null @@ -1,43 +0,0 @@ -import { injectIntl } from 'react-intl'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import { Avatar } from '../../../components/avatar'; -import { DisplayName } from '../../../components/display_name'; -import { makeGetAccount } from '../../../selectors'; - -const makeMapStateToProps = () => { - const getAccount = makeGetAccount(); - - const mapStateToProps = (state, { accountId }) => ({ - account: getAccount(state, accountId), - }); - - return mapStateToProps; -}; - -class Account extends ImmutablePureComponent { - - static propTypes = { - account: ImmutablePropTypes.record.isRequired, - }; - - render () { - const { account } = this.props; - return ( -
-
-
-
- -
-
-
- ); - } - -} - -export default connect(makeMapStateToProps)(injectIntl(Account)); diff --git a/app/javascript/mastodon/features/list_adder/components/list.jsx b/app/javascript/mastodon/features/list_adder/components/list.jsx deleted file mode 100644 index a7cfd60bf3..0000000000 --- a/app/javascript/mastodon/features/list_adder/components/list.jsx +++ /dev/null @@ -1,75 +0,0 @@ -import PropTypes from 'prop-types'; - -import { defineMessages, injectIntl } from 'react-intl'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import AddIcon from '@/material-icons/400-24px/add.svg?react'; -import CloseIcon from '@/material-icons/400-24px/close.svg?react'; -import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; -import { Icon } from 'mastodon/components/icon'; - -import { removeFromListAdder, addToListAdder } from '../../../actions/lists'; -import { IconButton } from '../../../components/icon_button'; - -const messages = defineMessages({ - remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' }, - add: { id: 'lists.account.add', defaultMessage: 'Add to list' }, -}); - -const MapStateToProps = (state, { listId, added }) => ({ - list: state.get('lists').get(listId), - added: typeof added === 'undefined' ? state.getIn(['listAdder', 'lists', 'items']).includes(listId) : added, -}); - -const mapDispatchToProps = (dispatch, { listId }) => ({ - onRemove: () => dispatch(removeFromListAdder(listId)), - onAdd: () => dispatch(addToListAdder(listId)), -}); - -class List extends ImmutablePureComponent { - - static propTypes = { - list: ImmutablePropTypes.map.isRequired, - intl: PropTypes.object.isRequired, - onRemove: PropTypes.func.isRequired, - onAdd: PropTypes.func.isRequired, - added: PropTypes.bool, - }; - - static defaultProps = { - added: false, - }; - - render () { - const { list, intl, onRemove, onAdd, added } = this.props; - - let button; - - if (added) { - button = ; - } else { - button = ; - } - - return ( -
-
-
- - {list.get('title')} -
- -
- {button} -
-
-
- ); - } - -} - -export default connect(MapStateToProps, mapDispatchToProps)(injectIntl(List)); diff --git a/app/javascript/mastodon/features/list_adder/index.jsx b/app/javascript/mastodon/features/list_adder/index.jsx deleted file mode 100644 index 4e7bd46bdf..0000000000 --- a/app/javascript/mastodon/features/list_adder/index.jsx +++ /dev/null @@ -1,76 +0,0 @@ -import PropTypes from 'prop-types'; - -import { injectIntl } from 'react-intl'; - -import { createSelector } from '@reduxjs/toolkit'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import { setupListAdder, resetListAdder } from '../../actions/lists'; -import NewListForm from '../lists/components/new_list_form'; - -import Account from './components/account'; -import List from './components/list'; -// hack - -const getOrderedLists = createSelector([state => state.get('lists')], lists => { - if (!lists) { - return lists; - } - - return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))); -}); - -const mapStateToProps = state => ({ - listIds: getOrderedLists(state).map(list=>list.get('id')), -}); - -const mapDispatchToProps = dispatch => ({ - onInitialize: accountId => dispatch(setupListAdder(accountId)), - onReset: () => dispatch(resetListAdder()), -}); - -class ListAdder extends ImmutablePureComponent { - - static propTypes = { - accountId: PropTypes.string.isRequired, - onClose: PropTypes.func.isRequired, - intl: PropTypes.object.isRequired, - onInitialize: PropTypes.func.isRequired, - onReset: PropTypes.func.isRequired, - listIds: ImmutablePropTypes.list.isRequired, - }; - - componentDidMount () { - const { onInitialize, accountId } = this.props; - onInitialize(accountId); - } - - componentWillUnmount () { - const { onReset } = this.props; - onReset(); - } - - render () { - const { accountId, listIds } = this.props; - - return ( -
-
- -
- - - - -
- {listIds.map(ListId => )} -
-
- ); - } - -} - -export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(ListAdder)); diff --git a/app/javascript/mastodon/features/list_adder/index.tsx b/app/javascript/mastodon/features/list_adder/index.tsx new file mode 100644 index 0000000000..5429c24aed --- /dev/null +++ b/app/javascript/mastodon/features/list_adder/index.tsx @@ -0,0 +1,213 @@ +import { useEffect, useState, useCallback } from 'react'; + +import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; + +import { isFulfilled } from '@reduxjs/toolkit'; + +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import { fetchLists } from 'mastodon/actions/lists'; +import { createList } from 'mastodon/actions/lists_typed'; +import { + apiGetAccountLists, + apiAddAccountToList, + apiRemoveAccountFromList, +} from 'mastodon/api/lists'; +import type { ApiListJSON } from 'mastodon/api_types/lists'; +import { Button } from 'mastodon/components/button'; +import { CheckBox } from 'mastodon/components/check_box'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; +import { getOrderedLists } from 'mastodon/selectors/lists'; +import { useAppDispatch, useAppSelector } from 'mastodon/store'; + +const messages = defineMessages({ + newList: { + id: 'lists.new_list_name', + defaultMessage: 'New list name', + }, + createList: { + id: 'lists.create', + defaultMessage: 'Create', + }, + close: { + id: 'lightbox.close', + defaultMessage: 'Close', + }, +}); + +const ListItem: React.FC<{ + id: string; + title: string; + checked: boolean; + onChange: (id: string, checked: boolean) => void; +}> = ({ id, title, checked, onChange }) => { + const handleChange = useCallback( + (e: React.ChangeEvent) => { + onChange(id, e.target.checked); + }, + [id, onChange], + ); + + return ( + // eslint-disable-next-line jsx-a11y/label-has-associated-control + + ); +}; + +const NewListItem: React.FC<{ + onCreate: (list: ApiListJSON) => void; +}> = ({ onCreate }) => { + const intl = useIntl(); + const dispatch = useAppDispatch(); + const [title, setTitle] = useState(''); + + const handleChange = useCallback( + ({ target: { value } }: React.ChangeEvent) => { + setTitle(value); + }, + [setTitle], + ); + + const handleSubmit = useCallback(() => { + if (title.trim().length === 0) { + return; + } + + void dispatch(createList({ title })).then((result) => { + if (isFulfilled(result)) { + onCreate(result.payload); + setTitle(''); + } + + return ''; + }); + }, [setTitle, dispatch, onCreate, title]); + + return ( +
+ + +
+ - -
-
- - -
-
- - {replies_policy !== undefined && ( -
-

- -
- { ['none', 'list', 'followed'].map(policy => ( - - ))} -
-
- )}
@@ -229,4 +178,4 @@ class ListTimeline extends PureComponent { } -export default withRouter(connect(mapStateToProps)(injectIntl(ListTimeline))); +export default withRouter(connect(mapStateToProps)(ListTimeline)); diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.jsx b/app/javascript/mastodon/features/lists/components/new_list_form.jsx deleted file mode 100644 index 0fed9d70a2..0000000000 --- a/app/javascript/mastodon/features/lists/components/new_list_form.jsx +++ /dev/null @@ -1,80 +0,0 @@ -import PropTypes from 'prop-types'; -import { PureComponent } from 'react'; - -import { defineMessages, injectIntl } from 'react-intl'; - -import { connect } from 'react-redux'; - -import { changeListEditorTitle, submitListEditor } from 'mastodon/actions/lists'; -import { Button } from 'mastodon/components/button'; - -const messages = defineMessages({ - label: { id: 'lists.new.title_placeholder', defaultMessage: 'New list title' }, - title: { id: 'lists.new.create', defaultMessage: 'Add list' }, -}); - -const mapStateToProps = state => ({ - value: state.getIn(['listEditor', 'title']), - disabled: state.getIn(['listEditor', 'isSubmitting']), -}); - -const mapDispatchToProps = dispatch => ({ - onChange: value => dispatch(changeListEditorTitle(value)), - onSubmit: () => dispatch(submitListEditor(true)), -}); - -class NewListForm extends PureComponent { - - static propTypes = { - value: PropTypes.string.isRequired, - disabled: PropTypes.bool, - intl: PropTypes.object.isRequired, - onChange: PropTypes.func.isRequired, - onSubmit: PropTypes.func.isRequired, - }; - - handleChange = e => { - this.props.onChange(e.target.value); - }; - - handleSubmit = e => { - e.preventDefault(); - this.props.onSubmit(); - }; - - handleClick = () => { - this.props.onSubmit(); - }; - - render () { - const { value, disabled, intl } = this.props; - - const label = intl.formatMessage(messages.label); - const title = intl.formatMessage(messages.title); - - return ( -
- - -
+ + + + + ); +}; + +const AccountItem: React.FC<{ + accountId: string; + listId: string; + partOfList: boolean; + onToggle: (accountId: string) => void; +}> = ({ accountId, listId, partOfList, onToggle }) => { + const intl = useIntl(); + const account = useAppSelector((state) => state.accounts.get(accountId)); + + const handleClick = useCallback(() => { + if (partOfList) { + void apiRemoveAccountFromList(listId, accountId); + } else { + void apiAddAccountToList(listId, accountId); + } + + onToggle(accountId); + }, [accountId, listId, partOfList, onToggle]); + + if (!account) { + return null; + } + + const firstVerifiedField = account.fields.find((item) => !!item.verified_at); + + return ( +
+
+ +
+ +
+ +
+ + +
+ {' '} + {firstVerifiedField && ( + + )} +
+
+ + +
+
+
+
+ ); +}; + +const ListMembers: React.FC<{ + multiColumn?: boolean; +}> = ({ multiColumn }) => { + const dispatch = useAppDispatch(); + const { id } = useParams<{ id: string }>(); + const intl = useIntl(); + + const followingAccountIds = useAppSelector( + (state) => state.user_lists.getIn(['following', me, 'items']) as string[], + ); + const [searching, setSearching] = useState(false); + const [accountIds, setAccountIds] = useState([]); + const [searchAccountIds, setSearchAccountIds] = useState([]); + const [loading, setLoading] = useState(true); + const [mode, setMode] = useState('remove'); + + useEffect(() => { + if (id) { + setLoading(true); + dispatch(fetchList(id)); + + void apiGetAccounts(id) + .then((data) => { + dispatch(importFetchedAccounts(data)); + setAccountIds(data.map((a) => a.id)); + setLoading(false); + return ''; + }) + .catch(() => { + setLoading(false); + }); + + dispatch(fetchFollowing(me)); + } + }, [dispatch, id]); + + const handleSearchClick = useCallback(() => { + setMode('add'); + }, [setMode]); + + const handleDismissSearchClick = useCallback(() => { + setMode('remove'); + setSearching(false); + }, [setMode]); + + const handleAccountToggle = useCallback( + (accountId: string) => { + const partOfList = accountIds.includes(accountId); + + if (partOfList) { + setAccountIds(accountIds.filter((id) => id !== accountId)); + } else { + setAccountIds([accountId, ...accountIds]); + } + }, + [accountIds, setAccountIds], + ); + + const searchRequestRef = useRef(null); + + const handleSearch = useDebouncedCallback( + (value: string) => { + if (searchRequestRef.current) { + searchRequestRef.current.abort(); + } + + if (value.trim().length === 0) { + setSearching(false); + return; + } + + setLoading(true); + + searchRequestRef.current = new AbortController(); + + void apiRequest('GET', 'v1/accounts/search', { + signal: searchRequestRef.current.signal, + params: { + q: value, + resolve: false, + following: true, + }, + }) + .then((data) => { + dispatch(importFetchedAccounts(data)); + setSearchAccountIds(data.map((a) => a.id)); + setLoading(false); + setSearching(true); + return ''; + }) + .catch(() => { + setSearching(true); + setLoading(false); + }); + }, + 500, + { leading: true, trailing: true }, + ); + + let displayedAccountIds: string[]; + + if (mode === 'add') { + displayedAccountIds = searching ? searchAccountIds : followingAccountIds; + } else { + displayedAccountIds = accountIds; + } + + return ( + + {mode === 'remove' ? ( + + + + } + /> + ) : ( + + )} + + +
+ +
+ + + +
+ + ) + } + emptyMessage={ + mode === 'remove' ? ( + <> + + +
+ +
+ + + + ) : ( + + ) + } + > + {displayedAccountIds.map((accountId) => ( + + ))} + + + + {intl.formatMessage(messages.heading)} + + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export default ListMembers; diff --git a/app/javascript/mastodon/features/lists/new.tsx b/app/javascript/mastodon/features/lists/new.tsx new file mode 100644 index 0000000000..cf39331d7c --- /dev/null +++ b/app/javascript/mastodon/features/lists/new.tsx @@ -0,0 +1,296 @@ +import { useCallback, useState, useEffect } from 'react'; + +import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; + +import { Helmet } from 'react-helmet'; +import { useParams, useHistory, Link } from 'react-router-dom'; + +import { isFulfilled } from '@reduxjs/toolkit'; + +import Toggle from 'react-toggle'; + +import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; +import { fetchList } from 'mastodon/actions/lists'; +import { createList, updateList } from 'mastodon/actions/lists_typed'; +import { apiGetAccounts } from 'mastodon/api/lists'; +import type { RepliesPolicyType } from 'mastodon/api_types/lists'; +import Column from 'mastodon/components/column'; +import { ColumnHeader } from 'mastodon/components/column_header'; +import { LoadingIndicator } from 'mastodon/components/loading_indicator'; +import { useAppDispatch, useAppSelector } from 'mastodon/store'; + +const messages = defineMessages({ + edit: { id: 'column.edit_list', defaultMessage: 'Edit list' }, + create: { id: 'column.create_list', defaultMessage: 'Create list' }, +}); + +const MembersLink: React.FC<{ + id: string; +}> = ({ id }) => { + const [count, setCount] = useState(0); + const [avatars, setAvatars] = useState([]); + + useEffect(() => { + void apiGetAccounts(id) + .then((data) => { + setCount(data.length); + setAvatars(data.slice(0, 3).map((a) => a.avatar)); + return ''; + }) + .catch(() => { + // Nothing + }); + }, [id, setCount, setAvatars]); + + return ( + +
+ + + + +
+ +
+ {avatars.map((url) => ( + + ))} +
+ + ); +}; + +const NewList: React.FC<{ + multiColumn?: boolean; +}> = ({ multiColumn }) => { + const dispatch = useAppDispatch(); + const { id } = useParams<{ id?: string }>(); + const intl = useIntl(); + const history = useHistory(); + + const list = useAppSelector((state) => + id ? state.lists.get(id) : undefined, + ); + const [title, setTitle] = useState(''); + const [exclusive, setExclusive] = useState(false); + const [repliesPolicy, setRepliesPolicy] = useState('list'); + const [submitting, setSubmitting] = useState(false); + + useEffect(() => { + if (id) { + dispatch(fetchList(id)); + } + }, [dispatch, id]); + + useEffect(() => { + if (id && list) { + setTitle(list.title); + setExclusive(list.exclusive); + setRepliesPolicy(list.replies_policy); + } + }, [setTitle, setExclusive, setRepliesPolicy, id, list]); + + const handleTitleChange = useCallback( + ({ target: { value } }: React.ChangeEvent) => { + setTitle(value); + }, + [setTitle], + ); + + const handleExclusiveChange = useCallback( + ({ target: { checked } }: React.ChangeEvent) => { + setExclusive(checked); + }, + [setExclusive], + ); + + const handleRepliesPolicyChange = useCallback( + ({ target: { value } }: React.ChangeEvent) => { + setRepliesPolicy(value as RepliesPolicyType); + }, + [setRepliesPolicy], + ); + + const handleSubmit = useCallback(() => { + setSubmitting(true); + + if (id) { + void dispatch( + updateList({ + id, + title, + exclusive, + replies_policy: repliesPolicy, + }), + ).then(() => { + setSubmitting(false); + return ''; + }); + } else { + void dispatch( + createList({ + title, + exclusive, + replies_policy: repliesPolicy, + }), + ).then((result) => { + setSubmitting(false); + + if (isFulfilled(result)) { + history.replace(`/lists/${result.payload.id}/edit`); + history.push(`/lists/${result.payload.id}/members`); + } + + return ''; + }); + } + }, [history, dispatch, setSubmitting, id, title, exclusive, repliesPolicy]); + + return ( + + + +
+
+
+
+
+ + +
+ +
+
+
+
+ +
+
+
+ + +
+ +
+
+
+
+ + {id && ( +
+ +
+ )} + +
+ {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} + +
+ +
+ +
+
+
+ + + + {intl.formatMessage(id ? messages.edit : messages.create)} + + + +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export default NewList; diff --git a/app/javascript/mastodon/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.jsx index 42a00acf81..8a97ec4565 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.jsx +++ b/app/javascript/mastodon/features/ui/components/modal_root.jsx @@ -10,7 +10,6 @@ import { DomainBlockModal, ReportModal, EmbedModal, - ListEditor, ListAdder, CompareHistoryModal, FilterModal, @@ -64,7 +63,6 @@ export const MODAL_COMPONENTS = { 'REPORT': ReportModal, 'ACTIONS': () => Promise.resolve({ default: ActionsModal }), 'EMBED': EmbedModal, - 'LIST_EDITOR': ListEditor, 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), 'LIST_ADDER': ListAdder, 'COMPARE_HISTORY': CompareHistoryModal, diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index b90ea5585a..daa4585ead 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -58,11 +58,13 @@ import { FollowedTags, LinkTimeline, ListTimeline, + Lists, + ListEdit, + ListMembers, Blocks, DomainBlocks, Mutes, PinnedStatuses, - Lists, Directory, Explore, Onboarding, @@ -205,6 +207,9 @@ class SwitchingColumnsArea extends PureComponent { + + + diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index ff5db65347..5a85c856d2 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -150,10 +150,6 @@ export function EmbedModal () { return import(/* webpackChunkName: "modals/embed_modal" */'../components/embed_modal'); } -export function ListEditor () { - return import(/* webpackChunkName: "features/list_editor" */'../../list_editor'); -} - export function ListAdder () { return import(/*webpackChunkName: "features/list_adder" */'../../list_adder'); } @@ -221,3 +217,11 @@ export function LinkTimeline () { export function AnnualReportModal () { return import(/*webpackChunkName: "modals/annual_report_modal" */'../components/annual_report_modal'); } + +export function ListEdit () { + return import(/*webpackChunkName: "features/lists" */'../../lists/new'); +} + +export function ListMembers () { + return import(/* webpackChunkName: "features/lists" */'../../lists/members'); +} diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 9728528f8e..142b7f1770 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -140,13 +140,16 @@ "column.blocks": "Blocked users", "column.bookmarks": "Bookmarks", "column.community": "Local timeline", + "column.create_list": "Create list", "column.direct": "Private mentions", "column.directory": "Browse profiles", "column.domain_blocks": "Blocked domains", + "column.edit_list": "Edit list", "column.favourites": "Favorites", "column.firehose": "Live feeds", "column.follow_requests": "Follow requests", "column.home": "Home", + "column.list_members": "Manage list members", "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", @@ -292,7 +295,6 @@ "empty_column.hashtag": "There is nothing in this hashtag yet.", "empty_column.home": "Your home timeline is empty! Follow more people to fill it up.", "empty_column.list": "There is nothing in this list yet. When members of this list publish new posts, they will appear here.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", "empty_column.mutes": "You haven't muted any users yet.", "empty_column.notification_requests": "All clear! There is nothing here. When you receive new notifications, they will appear here according to your settings.", "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", @@ -465,20 +467,32 @@ "link_preview.author": "By {name}", "link_preview.more_from_author": "More from {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", + "lists.add_member": "Add", + "lists.add_to_list": "Add to list", + "lists.add_to_lists": "Add {name} to lists", + "lists.create": "Create", + "lists.create_a_list_to_organize": "Create a new list to organize your Home feed", + "lists.create_list": "Create list", "lists.delete": "Delete list", + "lists.done": "Done", "lists.edit": "Edit list", - "lists.edit.submit": "Change title", - "lists.exclusive": "Hide these posts from home", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", + "lists.exclusive": "Hide members in Home", + "lists.exclusive_hint": "If someone is on this list, hide them in your Home feed to avoid seeing their posts twice.", + "lists.find_users_to_add": "Find users to add", + "lists.list_members": "List members", + "lists.list_members_count": "{count, plural, one {# member} other {# members}}", + "lists.list_name": "List name", + "lists.new_list_name": "New list name", + "lists.no_lists_yet": "No lists yet.", + "lists.no_members_yet": "No members yet.", + "lists.no_results_found": "No results found.", + "lists.remove_member": "Remove", "lists.replies_policy.followed": "Any followed user", "lists.replies_policy.list": "Members of the list", "lists.replies_policy.none": "No one", - "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lists.save": "Save", + "lists.search_placeholder": "Search people you follow", + "lists.show_replies_to": "Include replies from list members to", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading…", "media_gallery.hide": "Hide", diff --git a/app/javascript/mastodon/models/list.ts b/app/javascript/mastodon/models/list.ts new file mode 100644 index 0000000000..50b9896775 --- /dev/null +++ b/app/javascript/mastodon/models/list.ts @@ -0,0 +1,18 @@ +import type { RecordOf } from 'immutable'; +import { Record } from 'immutable'; + +import type { ApiListJSON } from 'mastodon/api_types/lists'; + +type ListShape = Required; // no changes from server shape +export type List = RecordOf; + +const ListFactory = Record({ + id: '', + title: '', + exclusive: false, + replies_policy: 'list', +}); + +export function createList(attributes: Partial) { + return ListFactory(attributes); +} diff --git a/app/javascript/mastodon/reducers/index.ts b/app/javascript/mastodon/reducers/index.ts index b92de0dbcd..aafee19c09 100644 --- a/app/javascript/mastodon/reducers/index.ts +++ b/app/javascript/mastodon/reducers/index.ts @@ -17,9 +17,7 @@ import filters from './filters'; import followed_tags from './followed_tags'; import height_cache from './height_cache'; import history from './history'; -import listAdder from './list_adder'; -import listEditor from './list_editor'; -import lists from './lists'; +import { listsReducer } from './lists'; import { markersReducer } from './markers'; import media_attachments from './media_attachments'; import meta from './meta'; @@ -69,9 +67,7 @@ const reducers = { notificationGroups: notificationGroupsReducer, height_cache, custom_emojis, - lists, - listEditor, - listAdder, + lists: listsReducer, filters, conversations, suggestions, diff --git a/app/javascript/mastodon/reducers/list_adder.js b/app/javascript/mastodon/reducers/list_adder.js deleted file mode 100644 index 0f61273aa6..0000000000 --- a/app/javascript/mastodon/reducers/list_adder.js +++ /dev/null @@ -1,48 +0,0 @@ -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; - -import { - LIST_ADDER_RESET, - LIST_ADDER_SETUP, - LIST_ADDER_LISTS_FETCH_REQUEST, - LIST_ADDER_LISTS_FETCH_SUCCESS, - LIST_ADDER_LISTS_FETCH_FAIL, - LIST_EDITOR_ADD_SUCCESS, - LIST_EDITOR_REMOVE_SUCCESS, -} from '../actions/lists'; - -const initialState = ImmutableMap({ - accountId: null, - - lists: ImmutableMap({ - items: ImmutableList(), - loaded: false, - isLoading: false, - }), -}); - -export default function listAdderReducer(state = initialState, action) { - switch(action.type) { - case LIST_ADDER_RESET: - return initialState; - case LIST_ADDER_SETUP: - return state.withMutations(map => { - map.set('accountId', action.account.get('id')); - }); - case LIST_ADDER_LISTS_FETCH_REQUEST: - return state.setIn(['lists', 'isLoading'], true); - case LIST_ADDER_LISTS_FETCH_FAIL: - return state.setIn(['lists', 'isLoading'], false); - case LIST_ADDER_LISTS_FETCH_SUCCESS: - return state.update('lists', lists => lists.withMutations(map => { - map.set('isLoading', false); - map.set('loaded', true); - map.set('items', ImmutableList(action.lists.map(item => item.id))); - })); - case LIST_EDITOR_ADD_SUCCESS: - return state.updateIn(['lists', 'items'], list => list.unshift(action.listId)); - case LIST_EDITOR_REMOVE_SUCCESS: - return state.updateIn(['lists', 'items'], list => list.filterNot(item => item === action.listId)); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/list_editor.js b/app/javascript/mastodon/reducers/list_editor.js deleted file mode 100644 index d3fd62adec..0000000000 --- a/app/javascript/mastodon/reducers/list_editor.js +++ /dev/null @@ -1,99 +0,0 @@ -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; - -import { - LIST_CREATE_REQUEST, - LIST_CREATE_FAIL, - LIST_CREATE_SUCCESS, - LIST_UPDATE_REQUEST, - LIST_UPDATE_FAIL, - LIST_UPDATE_SUCCESS, - LIST_EDITOR_RESET, - LIST_EDITOR_SETUP, - LIST_EDITOR_TITLE_CHANGE, - LIST_ACCOUNTS_FETCH_REQUEST, - LIST_ACCOUNTS_FETCH_SUCCESS, - LIST_ACCOUNTS_FETCH_FAIL, - LIST_EDITOR_SUGGESTIONS_READY, - LIST_EDITOR_SUGGESTIONS_CLEAR, - LIST_EDITOR_SUGGESTIONS_CHANGE, - LIST_EDITOR_ADD_SUCCESS, - LIST_EDITOR_REMOVE_SUCCESS, -} from '../actions/lists'; - -const initialState = ImmutableMap({ - listId: null, - isSubmitting: false, - isChanged: false, - title: '', - isExclusive: false, - - accounts: ImmutableMap({ - items: ImmutableList(), - loaded: false, - isLoading: false, - }), - - suggestions: ImmutableMap({ - value: '', - items: ImmutableList(), - }), -}); - -export default function listEditorReducer(state = initialState, action) { - switch(action.type) { - case LIST_EDITOR_RESET: - return initialState; - case LIST_EDITOR_SETUP: - return state.withMutations(map => { - map.set('listId', action.list.get('id')); - map.set('title', action.list.get('title')); - map.set('isExclusive', action.list.get('is_exclusive')); - map.set('isSubmitting', false); - }); - case LIST_EDITOR_TITLE_CHANGE: - return state.withMutations(map => { - map.set('title', action.value); - map.set('isChanged', true); - }); - case LIST_CREATE_REQUEST: - case LIST_UPDATE_REQUEST: - return state.withMutations(map => { - map.set('isSubmitting', true); - map.set('isChanged', false); - }); - case LIST_CREATE_FAIL: - case LIST_UPDATE_FAIL: - return state.set('isSubmitting', false); - case LIST_CREATE_SUCCESS: - case LIST_UPDATE_SUCCESS: - return state.withMutations(map => { - map.set('isSubmitting', false); - map.set('listId', action.list.id); - }); - case LIST_ACCOUNTS_FETCH_REQUEST: - return state.setIn(['accounts', 'isLoading'], true); - case LIST_ACCOUNTS_FETCH_FAIL: - return state.setIn(['accounts', 'isLoading'], false); - case LIST_ACCOUNTS_FETCH_SUCCESS: - return state.update('accounts', accounts => accounts.withMutations(map => { - map.set('isLoading', false); - map.set('loaded', true); - map.set('items', ImmutableList(action.accounts.map(item => item.id))); - })); - case LIST_EDITOR_SUGGESTIONS_CHANGE: - return state.setIn(['suggestions', 'value'], action.value); - case LIST_EDITOR_SUGGESTIONS_READY: - return state.setIn(['suggestions', 'items'], ImmutableList(action.accounts.map(item => item.id))); - case LIST_EDITOR_SUGGESTIONS_CLEAR: - return state.update('suggestions', suggestions => suggestions.withMutations(map => { - map.set('items', ImmutableList()); - map.set('value', ''); - })); - case LIST_EDITOR_ADD_SUCCESS: - return state.updateIn(['accounts', 'items'], list => list.unshift(action.accountId)); - case LIST_EDITOR_REMOVE_SUCCESS: - return state.updateIn(['accounts', 'items'], list => list.filterNot(item => item === action.accountId)); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/lists.js b/app/javascript/mastodon/reducers/lists.js deleted file mode 100644 index 2a797772b3..0000000000 --- a/app/javascript/mastodon/reducers/lists.js +++ /dev/null @@ -1,38 +0,0 @@ -import { Map as ImmutableMap, fromJS } from 'immutable'; - -import { - LIST_FETCH_SUCCESS, - LIST_FETCH_FAIL, - LISTS_FETCH_SUCCESS, - LIST_CREATE_SUCCESS, - LIST_UPDATE_SUCCESS, - LIST_DELETE_SUCCESS, -} from '../actions/lists'; - -const initialState = ImmutableMap(); - -const normalizeList = (state, list) => state.set(list.id, fromJS(list)); - -const normalizeLists = (state, lists) => { - lists.forEach(list => { - state = normalizeList(state, list); - }); - - return state; -}; - -export default function lists(state = initialState, action) { - switch(action.type) { - case LIST_FETCH_SUCCESS: - case LIST_CREATE_SUCCESS: - case LIST_UPDATE_SUCCESS: - return normalizeList(state, action.list); - case LISTS_FETCH_SUCCESS: - return normalizeLists(state, action.lists); - case LIST_DELETE_SUCCESS: - case LIST_FETCH_FAIL: - return state.set(action.id, false); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/lists.ts b/app/javascript/mastodon/reducers/lists.ts new file mode 100644 index 0000000000..593e717949 --- /dev/null +++ b/app/javascript/mastodon/reducers/lists.ts @@ -0,0 +1,49 @@ +import type { Reducer } from '@reduxjs/toolkit'; +import { Map as ImmutableMap } from 'immutable'; + +import { createList, updateList } from 'mastodon/actions/lists_typed'; +import type { ApiListJSON } from 'mastodon/api_types/lists'; +import { createList as createListFromJSON } from 'mastodon/models/list'; +import type { List } from 'mastodon/models/list'; + +import { + LIST_FETCH_SUCCESS, + LIST_FETCH_FAIL, + LISTS_FETCH_SUCCESS, + LIST_DELETE_SUCCESS, +} from '../actions/lists'; + +const initialState = ImmutableMap(); +type State = typeof initialState; + +const normalizeList = (state: State, list: ApiListJSON) => + state.set(list.id, createListFromJSON(list)); + +const normalizeLists = (state: State, lists: ApiListJSON[]) => { + lists.forEach((list) => { + state = normalizeList(state, list); + }); + + return state; +}; + +export const listsReducer: Reducer = (state = initialState, action) => { + if ( + createList.fulfilled.match(action) || + updateList.fulfilled.match(action) + ) { + return normalizeList(state, action.payload); + } else { + switch (action.type) { + case LIST_FETCH_SUCCESS: + return normalizeList(state, action.list as ApiListJSON); + case LISTS_FETCH_SUCCESS: + return normalizeLists(state, action.lists as ApiListJSON[]); + case LIST_DELETE_SUCCESS: + case LIST_FETCH_FAIL: + return state.set(action.id as string, null); + default: + return state; + } + } +}; diff --git a/app/javascript/mastodon/selectors/lists.ts b/app/javascript/mastodon/selectors/lists.ts new file mode 100644 index 0000000000..f93e90ce68 --- /dev/null +++ b/app/javascript/mastodon/selectors/lists.ts @@ -0,0 +1,15 @@ +import { createSelector } from '@reduxjs/toolkit'; +import type { Map as ImmutableMap } from 'immutable'; + +import type { List } from 'mastodon/models/list'; +import type { RootState } from 'mastodon/store'; + +export const getOrderedLists = createSelector( + [(state: RootState) => state.lists], + (lists: ImmutableMap) => + lists + .toList() + .filter((item: List | null) => !!item) + .sort((a: List, b: List) => a.title.localeCompare(b.title)) + .toArray(), +); diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss index 777c622ace..2d5e1b1094 100644 --- a/app/javascript/styles/mastodon-light/variables.scss +++ b/app/javascript/styles/mastodon-light/variables.scss @@ -79,4 +79,5 @@ body { --rich-text-container-color: rgba(255, 216, 231, 100%); --rich-text-text-color: rgba(114, 47, 83, 100%); --rich-text-decorations-color: rgba(255, 175, 212, 100%); + --input-placeholder-color: #{transparentize($dark-text-color, 0.5)}; } diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 579b2a4f69..b5f8570ae2 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -611,16 +611,6 @@ body, max-width: 100%; } -.simple_form { - .actions { - margin-top: 15px; - } - - .button { - font-size: 15px; - } -} - .batch-form-box { display: flex; flex-wrap: wrap; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 1bfe37cee6..8b95c3776e 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4650,6 +4650,7 @@ a.status-card { border: 0; background: transparent; cursor: pointer; + text-decoration: none; .icon { width: 13px; @@ -5063,7 +5064,8 @@ a.status-card { color: $dark-text-color; text-align: center; padding: 20px; - font-size: 15px; + font-size: 14px; + line-height: 20px; font-weight: 400; cursor: default; display: flex; @@ -5085,6 +5087,17 @@ a.status-card { } } +.empty-column-indicator { + &__arrow { + position: absolute; + top: 50%; + inset-inline-start: 50%; + pointer-events: none; + transform: translate(100%, -100%) rotate(12deg); + transform-origin: center; + } +} + .follow_requests-unlocked_explanation { background: var(--surface-background-color); border-bottom: 1px solid var(--background-border-color); @@ -5776,7 +5789,7 @@ a.status-card { .modal-root { position: relative; - z-index: 9999; + z-index: 9998; } .modal-root__overlay { @@ -6381,12 +6394,14 @@ a.status-card { border-radius: 16px; &__header { + box-sizing: border-box; border-bottom: 1px solid var(--modal-border-color); display: flex; align-items: center; justify-content: space-between; flex-direction: row-reverse; padding: 12px 24px; + min-height: 61px; &__title { font-size: 16px; @@ -7993,92 +8008,6 @@ noscript { background: rgba($base-overlay-background, 0.5); } -.list-adder, -.list-editor { - backdrop-filter: var(--background-filter); - background: var(--modal-background-color); - border: 1px solid var(--modal-border-color); - flex-direction: column; - border-radius: 8px; - width: 380px; - overflow: hidden; - - @media screen and (width <= 420px) { - width: 90%; - } -} - -.list-adder { - &__lists { - height: 50vh; - border-radius: 0 0 8px 8px; - overflow-y: auto; - } - - .list { - padding: 10px; - border-bottom: 1px solid var(--background-border-color); - } - - .list__wrapper { - display: flex; - } - - .list__display-name { - flex: 1 1 auto; - overflow: hidden; - text-decoration: none; - font-size: 16px; - padding: 10px; - display: flex; - align-items: center; - gap: 4px; - } -} - -.list-editor { - h4 { - padding: 15px 0; - background: lighten($ui-base-color, 13%); - font-weight: 500; - font-size: 16px; - text-align: center; - border-radius: 8px 8px 0 0; - } - - .drawer__pager { - height: 50vh; - border: 0; - } - - .drawer__inner { - &.backdrop { - width: calc(100% - 60px); - box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4); - border-radius: 0 0 0 8px; - } - } - - &__accounts { - background: unset; - overflow-y: auto; - } - - .account__display-name { - &:hover strong { - text-decoration: none; - } - } - - .account__avatar { - cursor: default; - } - - .search { - margin-bottom: 0; - } -} - .focal-point { position: relative; cursor: move; @@ -10142,7 +10071,7 @@ noscript { position: fixed; bottom: 2rem; inset-inline-start: 0; - z-index: 999; + z-index: 9999; display: flex; flex-direction: column; gap: 4px; @@ -11150,3 +11079,87 @@ noscript { } } } + +.lists__item { + display: flex; + align-items: center; + gap: 16px; + padding-inline-end: 13px; + border-bottom: 1px solid var(--background-border-color); + + &__title { + display: flex; + align-items: center; + gap: 5px; + padding: 16px 13px; + flex: 1 1 auto; + font-size: 16px; + line-height: 24px; + color: $secondary-text-color; + text-decoration: none; + + &:is(a):hover, + &:is(a):focus, + &:is(a):active { + color: $primary-text-color; + } + + input { + display: block; + width: 100%; + background: transparent; + border: 0; + padding: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + color: inherit; + + &::placeholder { + color: var(--input-placeholder-color); + opacity: 1; + } + + &:focus { + outline: 0; + } + } + } +} + +.column-search-header { + display: flex; + border-radius: 4px 4px 0 0; + border: 1px solid var(--background-border-color); + + .column-header__back-button.compact { + flex: 0 0 auto; + color: $primary-text-color; + } + + input { + background: transparent; + border: 0; + color: $primary-text-color; + font-size: 16px; + display: block; + flex: 1 1 auto; + + &::placeholder { + color: var(--input-placeholder-color); + opacity: 1; + } + + &:focus { + outline: 0; + } + } +} + +.column-footer { + padding: 16px; +} + +.lists-scrollable { + min-height: 50vh; +} diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 641fb19a57..69bd1ca9dd 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -1255,6 +1255,8 @@ code { } .app-form { + padding: 20px; + &__avatar-input, &__header-input { display: block; @@ -1370,4 +1372,55 @@ code { padding-inline-start: 16px; } } + + &__link { + display: flex; + gap: 16px; + padding: 8px 0; + align-items: center; + text-decoration: none; + color: $primary-text-color; + margin-bottom: 16px; + + &__text { + flex: 1 1 auto; + font-size: 14px; + line-height: 20px; + color: $darker-text-color; + + strong { + font-weight: 600; + display: block; + color: $primary-text-color; + } + } + } +} + +.avatar-pile { + display: flex; + align-items: center; + + img { + display: block; + border-radius: 8px; + width: 32px; + height: 32px; + border: 2px solid var(--background-color); + background: var(--surface-background-color); + margin-inline-end: -16px; + transform: rotate(0); + + &:first-child { + transform: rotate(-4deg); + } + + &:nth-child(2) { + transform: rotate(-2deg); + } + + &:last-child { + margin-inline-end: 0; + } + } } diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss index fe36e16631..2036f01aff 100644 --- a/app/javascript/styles/mastodon/variables.scss +++ b/app/javascript/styles/mastodon/variables.scss @@ -119,4 +119,5 @@ $font-monospace: 'mastodon-font-monospace' !default; --rich-text-container-color: rgba(87, 24, 60, 100%); --rich-text-text-color: rgba(255, 175, 212, 100%); --rich-text-decorations-color: rgba(128, 58, 95, 100%); + --input-placeholder-color: #{$dark-text-color}; } diff --git a/app/javascript/svg-icons/squiggly_arrow.svg b/app/javascript/svg-icons/squiggly_arrow.svg new file mode 100644 index 0000000000..ae636d7dfd --- /dev/null +++ b/app/javascript/svg-icons/squiggly_arrow.svg @@ -0,0 +1,3 @@ + + + From 4bfb8887bfac0839fd94f57ec76d082d20f4c805 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 21 Nov 2024 17:10:07 +0100 Subject: [PATCH 434/550] Fix duplicate notifications in notification groups when using slow mode (#33014) --- .../mastodon/models/notification_group.ts | 32 +++++++++++++++---- .../mastodon/reducers/notification_groups.ts | 11 ++++--- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/app/javascript/mastodon/models/notification_group.ts b/app/javascript/mastodon/models/notification_group.ts index 01a341e8dd..d98e755aa2 100644 --- a/app/javascript/mastodon/models/notification_group.ts +++ b/app/javascript/mastodon/models/notification_group.ts @@ -17,6 +17,7 @@ export const NOTIFICATIONS_GROUP_MAX_AVATARS = 8; interface BaseNotificationGroup extends Omit { sampleAccountIds: string[]; + partial: boolean; } interface BaseNotificationWithStatus @@ -142,6 +143,7 @@ export function createNotificationGroupFromJSON( return { statusId: statusId ?? undefined, sampleAccountIds, + partial: false, ...groupWithoutStatus, }; } @@ -150,12 +152,14 @@ export function createNotificationGroupFromJSON( return { report: createReportFromJSON(report), sampleAccountIds, + partial: false, ...groupWithoutTargetAccount, }; } case 'severed_relationships': return { ...group, + partial: false, event: createAccountRelationshipSeveranceEventFromJSON(group.event), sampleAccountIds, }; @@ -163,6 +167,7 @@ export function createNotificationGroupFromJSON( const { moderation_warning, ...groupWithoutModerationWarning } = group; return { ...groupWithoutModerationWarning, + partial: false, moderationWarning: createAccountWarningFromJSON(moderation_warning), sampleAccountIds, }; @@ -171,6 +176,7 @@ export function createNotificationGroupFromJSON( const { annual_report, ...groupWithoutAnnualReport } = group; return { ...groupWithoutAnnualReport, + partial: false, annualReport: createAnnualReportEventFromJSON(annual_report), sampleAccountIds, }; @@ -178,6 +184,7 @@ export function createNotificationGroupFromJSON( default: return { sampleAccountIds, + partial: false, ...group, }; } @@ -185,17 +192,17 @@ export function createNotificationGroupFromJSON( export function createNotificationGroupFromNotificationJSON( notification: ApiNotificationJSON, -) { +): NotificationGroup { const group = { sampleAccountIds: [notification.account.id], group_key: notification.group_key, notifications_count: 1, - type: notification.type, most_recent_notification_id: notification.id, page_min_id: notification.id, page_max_id: notification.id, latest_page_notification_at: notification.created_at, - } as NotificationGroup; + partial: true, + }; switch (notification.type) { case 'favourite': @@ -204,12 +211,21 @@ export function createNotificationGroupFromNotificationJSON( case 'mention': case 'poll': case 'update': - return { ...group, statusId: notification.status?.id }; + return { + ...group, + type: notification.type, + statusId: notification.status?.id, + }; case 'admin.report': - return { ...group, report: createReportFromJSON(notification.report) }; + return { + ...group, + type: notification.type, + report: createReportFromJSON(notification.report), + }; case 'severed_relationships': return { ...group, + type: notification.type, event: createAccountRelationshipSeveranceEventFromJSON( notification.event, ), @@ -217,11 +233,15 @@ export function createNotificationGroupFromNotificationJSON( case 'moderation_warning': return { ...group, + type: notification.type, moderationWarning: createAccountWarningFromJSON( notification.moderation_warning, ), }; default: - return group; + return { + ...group, + type: notification.type, + }; } } diff --git a/app/javascript/mastodon/reducers/notification_groups.ts b/app/javascript/mastodon/reducers/notification_groups.ts index 7a165f5fec..d43714beb7 100644 --- a/app/javascript/mastodon/reducers/notification_groups.ts +++ b/app/javascript/mastodon/reducers/notification_groups.ts @@ -534,10 +534,13 @@ export const notificationGroupsReducer = createReducer( if (existingGroupIndex > -1) { const existingGroup = state.groups[existingGroupIndex]; if (existingGroup && existingGroup.type !== 'gap') { - group.notifications_count += existingGroup.notifications_count; - group.sampleAccountIds = group.sampleAccountIds - .concat(existingGroup.sampleAccountIds) - .slice(0, NOTIFICATIONS_GROUP_MAX_AVATARS); + if (group.partial) { + group.notifications_count += + existingGroup.notifications_count; + group.sampleAccountIds = group.sampleAccountIds + .concat(existingGroup.sampleAccountIds) + .slice(0, NOTIFICATIONS_GROUP_MAX_AVATARS); + } state.groups.splice(existingGroupIndex, 1); } } From 68c778294036d9cb6234277c513a13f34f085561 Mon Sep 17 00:00:00 2001 From: Joshix-1 <57299889+Joshix-1@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:39:56 +0100 Subject: [PATCH 435/550] improve nginx.conf by setting gzip_static to on (#30698) --- dist/nginx.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/dist/nginx.conf b/dist/nginx.conf index 5bb9903864..3ab9bb66a2 100644 --- a/dist/nginx.conf +++ b/dist/nginx.conf @@ -63,6 +63,7 @@ server { gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon; + gzip_static on; location / { try_files $uri @proxy; From 0518613dd7f821e2106f563128817c5e285008c5 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 22 Nov 2024 09:00:14 +0100 Subject: [PATCH 436/550] LinkDetailsExtractor adjustments (#31357) --- app/lib/link_details_extractor.rb | 18 ++++++++++++------ app/lib/nokogiri_handler.rb | 4 ++++ spec/lib/link_details_extractor_spec.rb | 8 +++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb index 56533f6553..fe7f23f481 100644 --- a/app/lib/link_details_extractor.rb +++ b/app/lib/link_details_extractor.rb @@ -157,7 +157,7 @@ class LinkDetailsExtractor end def title - html_entities.decode(structured_data&.headline || opengraph_tag('og:title') || document.xpath('//title').map(&:content).first)&.strip + html_entities.decode(structured_data&.headline || opengraph_tag('og:title') || head.at_xpath('title')&.content)&.strip end def description @@ -205,11 +205,11 @@ class LinkDetailsExtractor end def language - valid_locale_or_nil(structured_data&.language || opengraph_tag('og:locale') || document.xpath('//html').pick('lang')) + valid_locale_or_nil(structured_data&.language || opengraph_tag('og:locale') || document.root.attr('lang')) end def icon - valid_url_or_nil(structured_data&.publisher_icon || link_tag('apple-touch-icon') || link_tag('shortcut icon')) + valid_url_or_nil(structured_data&.publisher_icon || link_tag('apple-touch-icon') || link_tag('icon')) end private @@ -237,18 +237,20 @@ class LinkDetailsExtractor end def link_tag(name) - document.xpath("//link[nokogiri:link_rel_include(@rel, '#{name}')]", NokogiriHandler).pick('href') + head.at_xpath("//link[nokogiri:link_rel_include(@rel, '#{name}')]", NokogiriHandler)&.attr('href') end def opengraph_tag(name) - document.xpath("//meta[@property=\"#{name}\" or @name=\"#{name}\"]").pick('content') + head.at_xpath("//meta[nokogiri:casecmp(@property, '#{name}') or nokogiri:casecmp(@name, '#{name}')]", NokogiriHandler)&.attr('content') end def meta_tag(name) - document.xpath("//meta[@name=\"#{name}\"]").pick('content') + head.at_xpath("//meta[nokogiri:casecmp(@name, '#{name}')]", NokogiriHandler)&.attr('content') end def structured_data + return @structured_data if defined?(@structured_data) + # Some publications have more than one JSON-LD definition on the page, # and some of those definitions aren't valid JSON either, so we have # to loop through here until we find something that is the right type @@ -273,6 +275,10 @@ class LinkDetailsExtractor @document ||= detect_encoding_and_parse_document end + def head + @head ||= document.at_xpath('/html/head') + end + def detect_encoding_and_parse_document html = nil encoding = nil diff --git a/app/lib/nokogiri_handler.rb b/app/lib/nokogiri_handler.rb index 804bcb9c04..26cf457955 100644 --- a/app/lib/nokogiri_handler.rb +++ b/app/lib/nokogiri_handler.rb @@ -8,5 +8,9 @@ class NokogiriHandler def link_rel_include(token_list, token) token_list.to_s.downcase.split(WHITE_SPACE).include?(token.downcase) end + + def casecmp(str1, str2) + str1.to_s.casecmp?(str2.to_s) + end end end diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb index d8d9db0ad1..36d6f22b00 100644 --- a/spec/lib/link_details_extractor_spec.rb +++ b/spec/lib/link_details_extractor_spec.rb @@ -49,7 +49,8 @@ RSpec.describe LinkDetailsExtractor do Man bites dog - + + HTML @@ -59,7 +60,8 @@ RSpec.describe LinkDetailsExtractor do .to have_attributes( title: eq('Man bites dog'), description: eq("A dog's tale"), - language: eq('en') + language: eq('en'), + icon: eq('https://example.com/favicon.ico') ) end end @@ -256,7 +258,7 @@ RSpec.describe LinkDetailsExtractor do - + From d75088d69967090bd9c16b6d1f1c06799a70c4f8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 22 Nov 2024 09:30:57 +0100 Subject: [PATCH 437/550] Fix pushing hashtag-followed posts to feeds of inactive users (#33018) --- app/models/tag_follow.rb | 2 ++ app/services/fan_out_on_write_service.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/tag_follow.rb b/app/models/tag_follow.rb index abe36cd171..528616c450 100644 --- a/app/models/tag_follow.rb +++ b/app/models/tag_follow.rb @@ -21,4 +21,6 @@ class TagFollow < ApplicationRecord accepts_nested_attributes_for :tag rate_limit by: :account, family: :follows + + scope :for_local_distribution, -> { joins(account: :user).merge(User.signed_in_recently) } end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 50b414bc52..3c084bc857 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -103,7 +103,7 @@ class FanOutOnWriteService < BaseService end def deliver_to_hashtag_followers! - TagFollow.where(tag_id: @status.tags.map(&:id)).select(:id, :account_id).reorder(nil).find_in_batches do |follows| + TagFollow.for_local_distribution.where(tag_id: @status.tags.map(&:id)).select(:id, :account_id).reorder(nil).find_in_batches do |follows| FeedInsertWorker.push_bulk(follows) do |follow| [@status.id, follow.account_id, 'tags', { 'update' => update? }] end From be2d4615ab1095f975306fe50f1d1e94601d9dbb Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 22 Nov 2024 03:31:23 -0500 Subject: [PATCH 438/550] Rely on Rails to enable YJIT when available (#33017) --- config/initializers/enable_yjit.rb | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 config/initializers/enable_yjit.rb diff --git a/config/initializers/enable_yjit.rb b/config/initializers/enable_yjit.rb deleted file mode 100644 index 7b1053ec11..0000000000 --- a/config/initializers/enable_yjit.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -# Automatically enable YJIT as of Ruby 3.3, as it brings very -# sizeable performance improvements. - -# If you are deploying to a memory constrained environment -# you may want to delete this file, but otherwise it's free -# performance. -if defined?(RubyVM::YJIT.enable) - Rails.application.config.after_initialize do - RubyVM::YJIT.enable - end -end From 2e5abe4720a972789e2a83b5e44b7ea24cfcd4c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 08:33:43 +0000 Subject: [PATCH 439/550] Update Yarn to v4.5.2 (#33021) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- streaming/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f907dc4f6c..4eb95d4389 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/mastodon", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.1", + "packageManager": "yarn@4.5.2", "engines": { "node": ">=18" }, diff --git a/streaming/package.json b/streaming/package.json index 380f1c429d..521544f42b 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/streaming", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.1", + "packageManager": "yarn@4.5.2", "engines": { "node": ">=18" }, From 47190087f804b503a558cccd5e2135ff0eaf9e5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:44:09 +0100 Subject: [PATCH 440/550] New Crowdin Translations (automated) (#33020) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/af.json | 8 ---- app/javascript/mastodon/locales/an.json | 9 ----- app/javascript/mastodon/locales/ar.json | 10 ----- app/javascript/mastodon/locales/ast.json | 7 ---- app/javascript/mastodon/locales/be.json | 10 ----- app/javascript/mastodon/locales/bg.json | 35 +++++++++++----- app/javascript/mastodon/locales/bn.json | 8 ---- app/javascript/mastodon/locales/br.json | 9 ----- app/javascript/mastodon/locales/ca.json | 10 ----- app/javascript/mastodon/locales/ckb.json | 9 ----- app/javascript/mastodon/locales/co.json | 9 ----- app/javascript/mastodon/locales/cs.json | 10 ----- app/javascript/mastodon/locales/cy.json | 10 ----- app/javascript/mastodon/locales/da.json | 33 ++++++++++----- app/javascript/mastodon/locales/de.json | 34 +++++++++++----- app/javascript/mastodon/locales/el.json | 10 ----- app/javascript/mastodon/locales/en-GB.json | 38 +++++++++++++----- app/javascript/mastodon/locales/eo.json | 10 ----- app/javascript/mastodon/locales/es-AR.json | 10 ----- app/javascript/mastodon/locales/es-MX.json | 10 ----- app/javascript/mastodon/locales/es.json | 10 ----- app/javascript/mastodon/locales/et.json | 10 ----- app/javascript/mastodon/locales/eu.json | 10 ----- app/javascript/mastodon/locales/fa.json | 10 ----- app/javascript/mastodon/locales/fi.json | 34 +++++++++++----- app/javascript/mastodon/locales/fil.json | 8 ---- app/javascript/mastodon/locales/fo.json | 10 ----- app/javascript/mastodon/locales/fr-CA.json | 10 ----- app/javascript/mastodon/locales/fr.json | 10 ----- app/javascript/mastodon/locales/fy.json | 10 ----- app/javascript/mastodon/locales/ga.json | 10 ----- app/javascript/mastodon/locales/gd.json | 10 ----- app/javascript/mastodon/locales/gl.json | 10 ----- app/javascript/mastodon/locales/he.json | 34 +++++++++++----- app/javascript/mastodon/locales/hi.json | 8 ---- app/javascript/mastodon/locales/hr.json | 8 ---- app/javascript/mastodon/locales/hu.json | 10 ----- app/javascript/mastodon/locales/hy.json | 9 ----- app/javascript/mastodon/locales/ia.json | 10 ----- app/javascript/mastodon/locales/id.json | 9 ----- app/javascript/mastodon/locales/ie.json | 10 ----- app/javascript/mastodon/locales/ig.json | 1 - app/javascript/mastodon/locales/io.json | 10 ----- app/javascript/mastodon/locales/is.json | 34 +++++++++++----- app/javascript/mastodon/locales/it.json | 10 ----- app/javascript/mastodon/locales/ja.json | 10 ----- app/javascript/mastodon/locales/ka.json | 6 --- app/javascript/mastodon/locales/kab.json | 10 ----- app/javascript/mastodon/locales/kk.json | 8 ---- app/javascript/mastodon/locales/ko.json | 10 ----- app/javascript/mastodon/locales/ku.json | 9 ----- app/javascript/mastodon/locales/kw.json | 9 ----- app/javascript/mastodon/locales/la.json | 4 -- app/javascript/mastodon/locales/lad.json | 10 ----- app/javascript/mastodon/locales/lt.json | 34 +++++++++++----- app/javascript/mastodon/locales/lv.json | 10 ----- app/javascript/mastodon/locales/ml.json | 8 ---- app/javascript/mastodon/locales/mr.json | 8 ---- app/javascript/mastodon/locales/ms.json | 10 ----- app/javascript/mastodon/locales/my.json | 10 ----- app/javascript/mastodon/locales/nl.json | 34 +++++++++++----- app/javascript/mastodon/locales/nn.json | 10 ----- app/javascript/mastodon/locales/no.json | 10 ----- app/javascript/mastodon/locales/oc.json | 9 ----- app/javascript/mastodon/locales/pa.json | 2 - app/javascript/mastodon/locales/pl.json | 10 ----- app/javascript/mastodon/locales/pt-BR.json | 34 +++++++++++----- app/javascript/mastodon/locales/pt-PT.json | 10 ----- app/javascript/mastodon/locales/ro.json | 9 ----- app/javascript/mastodon/locales/ru.json | 10 ----- app/javascript/mastodon/locales/sa.json | 9 ----- app/javascript/mastodon/locales/sc.json | 10 ----- app/javascript/mastodon/locales/sco.json | 9 ----- app/javascript/mastodon/locales/si.json | 8 ---- app/javascript/mastodon/locales/sk.json | 10 ----- app/javascript/mastodon/locales/sl.json | 42 +++++++++++++++----- app/javascript/mastodon/locales/sq.json | 34 +++++++++++----- app/javascript/mastodon/locales/sr-Latn.json | 10 ----- app/javascript/mastodon/locales/sr.json | 10 ----- app/javascript/mastodon/locales/sv.json | 10 ----- app/javascript/mastodon/locales/ta.json | 8 ---- app/javascript/mastodon/locales/te.json | 8 ---- app/javascript/mastodon/locales/th.json | 10 ----- app/javascript/mastodon/locales/tok.json | 7 ---- app/javascript/mastodon/locales/tr.json | 33 ++++++++++----- app/javascript/mastodon/locales/tt.json | 6 --- app/javascript/mastodon/locales/uk.json | 12 +----- app/javascript/mastodon/locales/ur.json | 1 - app/javascript/mastodon/locales/uz.json | 7 ---- app/javascript/mastodon/locales/vi.json | 34 +++++++++++----- app/javascript/mastodon/locales/zgh.json | 7 ---- app/javascript/mastodon/locales/zh-CN.json | 36 ++++++++++++----- app/javascript/mastodon/locales/zh-HK.json | 10 ----- app/javascript/mastodon/locales/zh-TW.json | 34 +++++++++++----- config/locales/simple_form.zh-CN.yml | 2 +- 95 files changed, 399 insertions(+), 856 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index a506b99654..bf84cff111 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -154,7 +154,6 @@ "empty_column.hashtag": "Daar is nog niks vir hierdie hutsetiket nie.", "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}", "empty_column.list": "Hierdie lys is nog leeg. Nuwe plasings deur lyslede sal voortaan hier verskyn.", - "empty_column.lists": "Jy het nog geen lyste nie. Wanneer jy een skep, sal dit hier vertoon.", "empty_column.notifications": "Jy het nog geen kennisgewings nie. Interaksie van ander mense met jou, sal hier vertoon.", "explore.search_results": "Soekresultate", "explore.suggested_follows": "Mense", @@ -222,15 +221,8 @@ "limited_account_hint.action": "Vertoon profiel in elk geval", "limited_account_hint.title": "Hierdie profiel is deur moderators van {domain} versteek.", "link_preview.author": "Deur {name}", - "lists.account.add": "Voeg by lys", - "lists.account.remove": "Verwyder vanaf lys", "lists.delete": "Verwyder lys", "lists.edit": "Redigeer lys", - "lists.edit.submit": "Verander titel", - "lists.new.create": "Voeg lys by", - "lists.new.title_placeholder": "Nuwe lys titel", - "lists.search": "Soek tussen mense wat jy volg", - "lists.subheading": "Jou lyste", "moved_to_account_banner.text": "Jou rekening {disabledAccount} is tans gedeaktiveer omdat jy na {movedToAccount} verhuis het.", "navigation_bar.about": "Oor", "navigation_bar.bookmarks": "Boekmerke", diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index be303985ee..11be07e990 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -186,7 +186,6 @@ "empty_column.hashtag": "No i hai cosa en este hashtag encara.", "empty_column.home": "La tuya linia temporal ye vueda! Sigue a mas personas pa replenar-la. {suggestions}", "empty_column.list": "No i hai cosa en esta lista encara. Quan miembros d'esta lista publiquen nuevos estatus, estes amaneixerán qui.", - "empty_column.lists": "No tiens garra lista. Quan en crees una, s'amostrará aquí.", "empty_column.mutes": "Encara no has silenciau a garra usuario.", "empty_column.notifications": "No tiens garra notificación encara. Interactúa con atros pa empecipiar una conversación.", "empty_column.public": "No i hai cosa aquí! Escribe bella cosa publicament, u sigue usuarios d'atras instancias manualment pa emplir-lo", @@ -292,19 +291,11 @@ "lightbox.previous": "Anterior", "limited_account_hint.action": "Amostrar perfil de totz modos", "limited_account_hint.title": "Este perfil ha estau amagau per los moderadors de {domain}.", - "lists.account.add": "Anyadir a lista", - "lists.account.remove": "Sacar de lista", "lists.delete": "Borrar lista", "lists.edit": "Editar lista", - "lists.edit.submit": "Cambiar titol", - "lists.new.create": "Anyadir lista", - "lists.new.title_placeholder": "Titol d'a nueva lista", "lists.replies_policy.followed": "Qualsequier usuario seguiu", "lists.replies_policy.list": "Miembros d'a lista", "lists.replies_policy.none": "Dengún", - "lists.replies_policy.title": "Amostrar respuestas a:", - "lists.search": "Buscar entre la chent a la quala sigues", - "lists.subheading": "Las tuyas listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "moved_to_account_banner.text": "La tuya cuenta {disabledAccount} ye actualment deshabilitada perque t'has mudau a {movedToAccount}.", "navigation_bar.about": "Sobre", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 7892766d87..f17d3dae22 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -269,7 +269,6 @@ "empty_column.hashtag": "ليس هناك بعدُ أي محتوى ذو علاقة بهذا الوسم.", "empty_column.home": "إنّ الخيط الزمني لصفحتك الرئيسة فارغ. قم بمتابعة المزيد من الناس كي يمتلأ.", "empty_column.list": "هذه القائمة فارغة مؤقتا و لكن سوف تمتلئ تدريجيا عندما يبدأ الأعضاء المُنتَمين إليها بنشر منشورات.", - "empty_column.lists": "ليس عندك أية قائمة بعد. سوف تظهر قوائمك هنا إن قمت بإنشاء واحدة.", "empty_column.mutes": "لم تقم بكتم أي مستخدم بعد.", "empty_column.notification_requests": "لا يوجد شيء هنا. عندما تتلقى إشعارات جديدة، سوف تظهر هنا وفقًا لإعداداتك.", "empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.", @@ -425,20 +424,11 @@ "limited_account_hint.title": "تم إخفاء هذا الملف الشخصي من قبل مشرفي {domain}.", "link_preview.author": "مِن {name}", "link_preview.more_from_author": "المزيد من {name}", - "lists.account.add": "أضف إلى القائمة", - "lists.account.remove": "احذف من القائمة", "lists.delete": "احذف القائمة", "lists.edit": "عدّل القائمة", - "lists.edit.submit": "تعديل العنوان", - "lists.exclusive": "إخفاء هذه المنشورات من الخيط الرئيسي", - "lists.new.create": "إضافة قائمة", - "lists.new.title_placeholder": "عنوان القائمة الجديدة", "lists.replies_policy.followed": "أي مستخدم متابَع", "lists.replies_policy.list": "أعضاء القائمة", "lists.replies_policy.none": "لا أحد", - "lists.replies_policy.title": "عرض الردود لـ:", - "lists.search": "إبحث في قائمة الحسابات التي تُتابِعها", - "lists.subheading": "قوائمك", "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}", "loading_indicator.label": "جاري التحميل…", "media_gallery.hide": "إخفاء", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index e5b1168bea..e6659510d2 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -155,7 +155,6 @@ "empty_column.hashtag": "Entá nun hai nada con esta etiqueta.", "empty_column.home": "¡La to llinia de tiempu ta balera! Sigui a cuentes pa enllenala.", "empty_column.list": "Nun hai nada nesta llista. Cuando los perfiles d'esta llista espublicen artículos nuevos, apaecen equí.", - "empty_column.lists": "Nun tienes nenguna llista. Cuando crees dalguna, apaez equí.", "empty_column.mutes": "Nun tienes nengún perfil colos avisos desactivaos.", "empty_column.notifications": "Nun tienes nengún avisu. Cuando otros perfiles interactúen contigo, apaez equí.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué públicamente o sigui a perfiles d'otros sirvidores pa enllenar esta seición", @@ -260,15 +259,9 @@ "limited_account_hint.action": "Amosar el perfil de toes toes", "lists.delete": "Desaniciar la llista", "lists.edit": "Editar la llista", - "lists.edit.submit": "Camudar el títulu", - "lists.new.create": "Amestar la llista", - "lists.new.title_placeholder": "Títulu", "lists.replies_policy.followed": "Cualesquier perfil siguíu", "lists.replies_policy.list": "Perfiles de la llista", "lists.replies_policy.none": "Naide", - "lists.replies_policy.title": "Amosar les rempuestes a:", - "lists.search": "Buscar ente los perfiles que sigues", - "lists.subheading": "Les tos llistes", "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}", "navigation_bar.about": "Tocante a", "navigation_bar.blocks": "Perfiles bloquiaos", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 06d86a0e85..26a42ebc69 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -273,7 +273,6 @@ "empty_column.hashtag": "Па гэтаму хэштэгу пакуль што нічога няма.", "empty_column.home": "Галоўная стужка пустая! Падпішыцеся на іншых людзей, каб запоўніць яе. {suggestions}", "empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены лісту апублікуюць новыя запісы, яны з'явяцца тут.", - "empty_column.lists": "Як толькі вы створыце новы спіс ён будзе захоўвацца тут, але пакуль што тут пуста.", "empty_column.mutes": "Вы яшчэ нікога не ігнаруеце.", "empty_column.notification_requests": "Чысціня! Тут нічога няма. Калі вы будзеце атрымліваць новыя апавяшчэння, яны будуць з'яўляцца тут у адпаведнасці з вашымі наладамі.", "empty_column.notifications": "У вас няма ніякіх апавяшчэнняў. Калі іншыя людзі ўзаемадзейнічаюць з вамі, вы ўбачыце гэта тут.", @@ -427,20 +426,11 @@ "link_preview.author": "Ад {name}", "link_preview.more_from_author": "Больш ад {name}", "link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}", - "lists.account.add": "Дадаць да спісу", - "lists.account.remove": "Выдаліць са спісу", "lists.delete": "Выдаліць спіс", "lists.edit": "Рэдагаваць спіс", - "lists.edit.submit": "Змяніць назву", - "lists.exclusive": "Схаваць гэтыя допісы з галоўнай старонкі", - "lists.new.create": "Дадаць спіс", - "lists.new.title_placeholder": "Назва новага спіса", "lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся", "lists.replies_policy.list": "Удзельнікі гэтага спісу", "lists.replies_policy.none": "Нікога", - "lists.replies_policy.title": "Паказваць адказы:", - "lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны", - "lists.subheading": "Вашыя спісы", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", "loading_indicator.label": "Загрузка…", "media_gallery.hide": "Схаваць", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 456247cedf..32d61423d6 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -139,13 +139,16 @@ "column.blocks": "Блокирани потребители", "column.bookmarks": "Отметки", "column.community": "Локален инфопоток", + "column.create_list": "Създаване на списък", "column.direct": "Частни споменавания", "column.directory": "Разглеждане на профили", "column.domain_blocks": "Блокирани домейни", + "column.edit_list": "Промяна на списъка", "column.favourites": "Любими", "column.firehose": "Инфоканали на живо", "column.follow_requests": "Заявки за последване", "column.home": "Начало", + "column.list_members": "Управление на списъка с участници", "column.lists": "Списъци", "column.mutes": "Заглушени потребители", "column.notifications": "Известия", @@ -289,7 +292,6 @@ "empty_column.hashtag": "Още няма нищо в този хаштаг.", "empty_column.home": "Вашата начална часова ос е празна! Последвайте повече хора, за да я запълните. {suggestions}", "empty_column.list": "Все още списъкът е празен. Членуващите на списъка, публикуващи нови публикации, ще се появят тук.", - "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.", "empty_column.mutes": "Още не сте заглушавали потребители.", "empty_column.notification_requests": "Всичко е чисто! Тук няма нищо. Получавайки нови известия, те ще се появят тук според настройките ви.", "empty_column.notifications": "Все още нямате известия. Взаимодействайте с другите, за да започнете разговора.", @@ -389,10 +391,16 @@ "ignore_notifications_modal.disclaimer": "Mastodon не може да осведоми потребители, че сте пренебрегнали известията им. Пренебрегването на известията няма да спре самите съобщения да не бъдат изпращани.", "ignore_notifications_modal.filter_to_act_users": "Вие все още ще може да приемате, отхвърляте или докладвате потребители", "ignore_notifications_modal.filter_to_avoid_confusion": "Прецеждането помага за избягване на възможно объркване", + "ignore_notifications_modal.ignore": "Пренебрегване на известията", + "ignore_notifications_modal.limited_accounts_title": "Пренебрегвате ли известията от модерирани акаунти?", + "ignore_notifications_modal.new_accounts_title": "Пренебрегвате ли известията от нови акаунти?", + "ignore_notifications_modal.not_followers_title": "Пренебрегвате ли известията от хора, които не са ви последвали?", + "ignore_notifications_modal.not_following_title": "Пренебрегвате ли известията от хора, които не сте последвали?", "interaction_modal.description.favourite": "Имайки акаунт в Mastodon, може да сложите тази публикации в любими, за да позволите на автора да узнае, че я цените и да я запазите за по-късно.", "interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.", "interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.", "interaction_modal.description.reply": "С акаунт в Mastodon може да добавите отговор към тази публикация.", + "interaction_modal.description.vote": "Имайки акаунт в Mastodon, можете да гласувате в тази анкета.", "interaction_modal.login.action": "Към началото", "interaction_modal.login.prompt": "Домейнът на сървъра ви, примерно, mastodon.social", "interaction_modal.no_account_yet": "Още не е в Мастодон?", @@ -452,20 +460,22 @@ "link_preview.author": "От {name}", "link_preview.more_from_author": "Още от {name}", "link_preview.shares": "{count, plural, one {{counter} публикация} other {{counter} публикации}}", - "lists.account.add": "Добавяне към списък", - "lists.account.remove": "Премахване от списъка", + "lists.create_list": "Създаване на списък", "lists.delete": "Изтриване на списъка", + "lists.done": "Готово", "lists.edit": "Промяна на списъка", - "lists.edit.submit": "Промяна на заглавие", - "lists.exclusive": "Скриване на тези публикации от началото", - "lists.new.create": "Добавяне на списък", - "lists.new.title_placeholder": "Ново заглавие на списъка", + "lists.find_users_to_add": "Намерете потребители за добавяне", + "lists.list_members": "Списък членуващи", + "lists.list_name": "Име на списък", + "lists.no_lists_yet": "Още няма списъци.", + "lists.no_members_yet": "Още няма членуващи.", + "lists.no_results_found": "Няма намерени резултати.", + "lists.remove_member": "Премахване", "lists.replies_policy.followed": "Някой последван потребител", "lists.replies_policy.list": "Членуващите в списъка", "lists.replies_policy.none": "Никого", - "lists.replies_policy.title": "Показване на отговори на:", - "lists.search": "Търсене измежду последваните", - "lists.subheading": "Вашите списъци", + "lists.save": "Запазване", + "lists.search_placeholder": "Търсене сред, които сте последвали", "load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}", "loading_indicator.label": "Зареждане…", "media_gallery.hide": "Скриване", @@ -596,6 +606,7 @@ "notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.", "notifications.policy.accept": "Приемам", "notifications.policy.accept_hint": "Показване в известия", + "notifications.policy.drop_hint": "Изпращане в празнотата, за да не се видим никога пак", "notifications.policy.filter": "Филтър", "notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра", "notifications.policy.filter_limited_accounts_title": "Модерирани акаунти", @@ -855,6 +866,10 @@ "upload_form.audio_description": "Опишете за хора, които са глухи или трудно чуват", "upload_form.description": "Опишете за хора, които са слепи или имат слабо зрение", "upload_form.drag_and_drop.instructions": "Натиснете интервал или enter, за да подберете мултимедийно прикачване. Провлачвайки, ползвайте клавишите със стрелки, за да премествате мултимедията във всяка дадена посока. Натиснете пак интервал или enter, за да се стовари мултимедийното прикачване в новото си положение или натиснете Esc за отмяна.", + "upload_form.drag_and_drop.on_drag_cancel": "Провлачването е отменено. Мултимедийното прикачване {item} е спуснато.", + "upload_form.drag_and_drop.on_drag_end": "Мултимедийното прикачване {item} е спуснато.", + "upload_form.drag_and_drop.on_drag_over": "Мултимедийното прикачване {item} е преместено.", + "upload_form.drag_and_drop.on_drag_start": "Избрано мултимедийно прикачване {item}.", "upload_form.edit": "Редактиране", "upload_form.thumbnail": "Промяна на миниобраза", "upload_form.video_description": "Опишете за хора, които са глухи или трудно чуват, слепи или имат слабо зрение", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 9512f6a92b..03f59e1db4 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -202,7 +202,6 @@ "empty_column.hashtag": "এই হেসটাগে এখনো কিছু নেই।", "empty_column.home": "আপনার বাড়ির সময়রেখা এখনো খালি! {public} এ ঘুরে আসুন অথবা অনুসন্ধান বেবহার করে শুরু করতে পারেন এবং অন্য ব্যবহারকারীদের সাথে সাক্ষাৎ করতে পারেন।", "empty_column.list": "এই তালিকাতে এখনো কিছু নেই. যখন এই তালিকায় থাকা ব্যবহারকারী নতুন কিছু লিখবে, সেগুলো এখানে পাওয়া যাবে।", - "empty_column.lists": "আপনার এখনো কোনো তালিকা তৈরী নেই। যদি বা যখন তৈরী করেন, সেগুলো এখানে পাওয়া যাবে।", "empty_column.mutes": "আপনি এখনো কোনো ব্যবহারকারীকে নিঃশব্দ করেননি।", "empty_column.notifications": "আপনার এখনো কোনো প্রজ্ঞাপন নেই। কথোপকথন শুরু করতে, অন্যদের সাথে মেলামেশা করতে পারেন।", "empty_column.public": "এখানে এখনো কিছু নেই! প্রকাশ্য ভাবে কিছু লিখুন বা অন্য সার্ভার থেকে কাওকে অনুসরণ করে এই জায়গা ভরে ফেলুন", @@ -277,16 +276,9 @@ "lightbox.next": "পরবর্তী", "lightbox.previous": "পূর্ববর্তী", "link_preview.author": "{name} এর লিখা", - "lists.account.add": "তালিকাতে যুক্ত করতে", - "lists.account.remove": "তালিকা থেকে বাদ দিতে", "lists.delete": "তালিকা মুছে ফেলতে", "lists.edit": "তালিকা সম্পাদনা করতে", - "lists.edit.submit": "শিরোনাম সম্পাদনা করতে", - "lists.new.create": "তালিকাতে যুক্ত করতে", - "lists.new.title_placeholder": "তালিকার নতুন শিরোনাম দিতে", "lists.replies_policy.none": "কেউ না", - "lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন", - "lists.subheading": "আপনার তালিকা", "load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}", "navigation_bar.about": "পরিচিতি", "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 13ca521ab0..da99874f0b 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -223,7 +223,6 @@ "empty_column.hashtag": "N'eus netra en hashtag-mañ c'hoazh.", "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.", "empty_column.list": "Goullo eo al listenn-mañ evit c'hoazh. Pa vo embannet toudoù nevez gant e izili e teuint war wel amañ.", - "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.", "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.", "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.", "empty_column.public": "N'eus netra amañ! Skrivit un dra bennak foran pe heuilhit implijer·ien·ezed eus dafariadoù all evit leuniañ", @@ -346,19 +345,11 @@ "limited_account_hint.action": "Diskouez an aelad memes tra", "limited_account_hint.title": "Kuzhet eo bet ar profil-mañ gant an evezhierien eus {domain}.", "link_preview.author": "Gant {name}", - "lists.account.add": "Ouzhpennañ d'al listenn", - "lists.account.remove": "Lemel kuit eus al listenn", "lists.delete": "Dilemel al listenn", "lists.edit": "Kemmañ al listenn", - "lists.edit.submit": "Cheñch an titl", - "lists.new.create": "Ouzhpennañ ul listenn", - "lists.new.title_placeholder": "Titl nevez al listenn", "lists.replies_policy.followed": "Pep implijer.ez heuliet", "lists.replies_policy.list": "Izili ar roll", "lists.replies_policy.none": "Den ebet", - "lists.replies_policy.title": "Diskouez ar respontoù:", - "lists.search": "Klask e-touez tud heuliet ganeoc'h", - "lists.subheading": "Ho listennoù", "load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}", "loading_indicator.label": "O kargañ…", "navigation_bar.about": "Diwar-benn", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 53bfc4474c..fc100d7c01 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -286,7 +286,6 @@ "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.", "empty_column.home": "La teva línia de temps és buida! Segueix més gent per a emplenar-la. {suggestions}", "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres facin nous tuts, apareixeran aquí.", - "empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.", "empty_column.mutes": "Encara no has silenciat cap usuari.", "empty_column.notification_requests": "Tot net, ja no hi ha res aquí! Quan rebeu notificacions noves, segons la vostra configuració, apareixeran aquí.", "empty_column.notifications": "Encara no tens notificacions. Quan altre gent interactuï amb tu, les veuràs aquí.", @@ -459,20 +458,11 @@ "link_preview.author": "Per {name}", "link_preview.more_from_author": "Més de {name}", "link_preview.shares": "{count, plural, one {{counter} publicació} other {{counter} publicacions}}", - "lists.account.add": "Afegeix a la llista", - "lists.account.remove": "Elimina de la llista", "lists.delete": "Elimina la llista", "lists.edit": "Edita la llista", - "lists.edit.submit": "Canvia el títol", - "lists.exclusive": "Amaga aquests tuts a Inici", - "lists.new.create": "Afegeix una llista", - "lists.new.title_placeholder": "Nou títol de la llista", "lists.replies_policy.followed": "Qualsevol usuari que segueixis", "lists.replies_policy.list": "Membres de la llista", "lists.replies_policy.none": "Ningú", - "lists.replies_policy.title": "Mostra respostes a:", - "lists.search": "Cerca entre les persones que segueixes", - "lists.subheading": "Les teves llistes", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}", "loading_indicator.label": "Es carrega…", "media_gallery.hide": "Amaga", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 469cf4410d..292aefb4cf 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -221,7 +221,6 @@ "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.", "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.", "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.", - "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.", "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.", "empty_column.notifications": "تۆ هێشتا هیچ ئاگانامێکت نیە. چالاکی لەگەڵ کەسانی دیکە بکە بۆ دەستپێکردنی گفتوگۆکە.", "empty_column.public": "لێرە هیچ نییە! شتێک بە ئاشکرا بنووسە(بەگشتی)، یان بە دەستی شوێن بەکارهێنەران بکەوە لە ڕاژەکانی ترەوە بۆ پڕکردنەوەی", @@ -338,19 +337,11 @@ "lightbox.previous": "پێشوو", "limited_account_hint.action": "بەهەر حاڵ پڕۆفایلی پیشان بدە", "limited_account_hint.title": "ئەم پرۆفایلە لەلایەن بەڕێوەبەرانی {domain} شاراوەتەوە.", - "lists.account.add": "زیادکردن بۆ لیست", - "lists.account.remove": "لابردن لە لیست", "lists.delete": "سڕینەوەی لیست", "lists.edit": "دەستکاری لیست", - "lists.edit.submit": "گۆڕینی ناونیشان", - "lists.new.create": "زیادکردنی لیست", - "lists.new.title_placeholder": "ناونیشانی لیستی نوێ", "lists.replies_policy.followed": "هەر بەکارهێنەرێکی بەدواکەوتوو", "lists.replies_policy.list": "ئەندامانی لیستەکە", "lists.replies_policy.none": "هیچکەس", - "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:", - "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", - "lists.subheading": "لیستەکانت", "load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}", "moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.", "navigation_bar.about": "دەربارە", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 043061769b..033f3fc80b 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -132,7 +132,6 @@ "empty_column.hashtag": "Ùn c'hè ancu nunda quì.", "empty_column.home": "A vostr'accolta hè viota! Pudete andà nant'à {public} o pruvà a ricerca per truvà parsone da siguità.", "empty_column.list": "Ùn c'hè ancu nunda quì. Quandu membri di sta lista manderanu novi statuti, i vidarete quì.", - "empty_column.lists": "Ùn avete manc'una lista. Quandu farete una, sarà mustrata quì.", "empty_column.mutes": "Per avà ùn avete manc'un utilizatore piattatu.", "empty_column.notifications": "Ùn avete ancu nisuna nutificazione. Interact with others to start the conversation.", "empty_column.public": "Ùn c'hè nunda quì! Scrivete qualcosa in pubblicu o seguitate utilizatori d'altri servori per empie a linea pubblica", @@ -198,19 +197,11 @@ "lightbox.close": "Chjudà", "lightbox.next": "Siguente", "lightbox.previous": "Pricidente", - "lists.account.add": "Aghjunghje à a lista", - "lists.account.remove": "Toglie di a lista", "lists.delete": "Toglie a lista", "lists.edit": "Mudificà a lista", - "lists.edit.submit": "Cambià u titulu", - "lists.new.create": "Aghjunghje", - "lists.new.title_placeholder": "Titulu di a lista", "lists.replies_policy.followed": "Tutti i vostri abbunamenti", "lists.replies_policy.list": "Membri di a lista", "lists.replies_policy.none": "Nimu", - "lists.replies_policy.title": "Vede e risposte à:", - "lists.search": "Circà indè i vostr'abbunamenti", - "lists.subheading": "E vo liste", "load_pending": "{count, plural, one {# entrata nova} other {# entrate nove}}", "navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.bookmarks": "Segnalibri", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 7198bcab58..89db6c5cb3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -267,7 +267,6 @@ "empty_column.hashtag": "Pod tímto hashtagem zde zatím nic není.", "empty_column.home": "Vaše domovská časová osa je prázdná! Naplňte ji sledováním dalších lidí.", "empty_column.list": "V tomto seznamu zatím nic není. Až nějaký člen z tohoto seznamu zveřejní nový příspěvek, objeví se zde.", - "empty_column.lists": "Zatím nemáte žádné seznamy. Až nějaký vytvoříte, zobrazí se zde.", "empty_column.mutes": "Zatím jste neskryli žádného uživatele.", "empty_column.notification_requests": "Vyčištěno! Nic tu není. Jakmile obdržíš nové notifikace, objeví se zde podle tvého nastavení.", "empty_column.notifications": "Zatím nemáte žádná oznámení. Až s vámi někdo bude interagovat, uvidíte to zde.", @@ -415,20 +414,11 @@ "link_preview.author": "Podle {name}", "link_preview.more_from_author": "Více od {name}", "link_preview.shares": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} many {{counter} příspěvků} other {{counter} příspěvků}}", - "lists.account.add": "Přidat do seznamu", - "lists.account.remove": "Odebrat ze seznamu", "lists.delete": "Smazat seznam", "lists.edit": "Upravit seznam", - "lists.edit.submit": "Změnit název", - "lists.exclusive": "Skrýt tyto příspěvky z domovské stránky", - "lists.new.create": "Přidat seznam", - "lists.new.title_placeholder": "Název nového seznamu", "lists.replies_policy.followed": "Sledovaným uživatelům", "lists.replies_policy.list": "Členům seznamu", "lists.replies_policy.none": "Nikomu", - "lists.replies_policy.title": "Odpovědi zobrazovat:", - "lists.search": "Hledejte mezi lidmi, které sledujete", - "lists.subheading": "Vaše seznamy", "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}", "loading_indicator.label": "Načítání…", "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně deaktivován, protože jste se přesunul/a na {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 1fa17e56ea..c4f79da43a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Nid oes dim ar yr hashnod hwn eto.", "empty_column.home": "Mae eich ffrwd gartref yn wag! Dilynwch fwy o bobl i'w llenwi.", "empty_column.list": "Does dim yn y rhestr yma eto. Pan fydd aelodau'r rhestr yn cyhoeddi postiad newydd, mi fydd yn ymddangos yma.", - "empty_column.lists": "Nid oes gennych unrhyw restrau eto. Pan fyddwch yn creu un, mi fydd yn ymddangos yma.", "empty_column.mutes": "Nid ydych wedi tewi unrhyw ddefnyddwyr eto.", "empty_column.notification_requests": "Dim i boeni amdano! Does dim byd yma. Pan fyddwch yn derbyn hysbysiadau newydd, byddan nhw'n ymddangos yma yn ôl eich gosodiadau.", "empty_column.notifications": "Nid oes gennych unrhyw hysbysiadau eto. Rhyngweithiwch ag eraill i ddechrau'r sgwrs.", @@ -465,20 +464,11 @@ "link_preview.author": "Gan {name}", "link_preview.more_from_author": "Mwy gan {name}", "link_preview.shares": "{count, plural, one {{counter} postiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}", - "lists.account.add": "Ychwanegu at restr", - "lists.account.remove": "Tynnu o'r rhestr", "lists.delete": "Dileu rhestr", "lists.edit": "Golygu rhestr", - "lists.edit.submit": "Newid teitl", - "lists.exclusive": "Cuddio'r postiadau hyn o'r ffrwd gartref", - "lists.new.create": "Ychwanegu rhestr", - "lists.new.title_placeholder": "Teitl rhestr newydd", "lists.replies_policy.followed": "Unrhyw ddefnyddiwr sy'n cael ei ddilyn", "lists.replies_policy.list": "Aelodau'r rhestr", "lists.replies_policy.none": "Neb", - "lists.replies_policy.title": "Dangos atebion i:", - "lists.search": "Chwilio ymysg pobl rydych yn eu dilyn", - "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}", "loading_indicator.label": "Yn llwytho…", "media_gallery.hide": "Cuddio", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 4ba1f4d9e1..9f0f27b804 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -140,13 +140,16 @@ "column.blocks": "Blokerede brugere", "column.bookmarks": "Bogmærker", "column.community": "Lokal tidslinje", + "column.create_list": "Opret liste", "column.direct": "Private omtaler", "column.directory": "Tjek profiler", "column.domain_blocks": "Blokerede domæner", + "column.edit_list": "Redigér liste", "column.favourites": "Favoritter", "column.firehose": "Live feeds", "column.follow_requests": "Følgeanmodninger", "column.home": "Hjem", + "column.list_members": "Håndtér listemedlemmer", "column.lists": "Lister", "column.mutes": "Skjulte brugere (mutede)", "column.notifications": "Notifikationer", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Der er intet med dette hashtag endnu.", "empty_column.home": "Din hjemmetidslinje er tom! Følg nogle personer, for at udfylde den. {suggestions}", "empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af listen udgiver nye indlæg vil de fremgå hér.", - "empty_column.lists": "Du har endnu ingen lister. Når du opretter én, vil den fremgå hér.", "empty_column.mutes": "Du har endnu ikke skjult (muted) nogle brugere.", "empty_column.notification_requests": "Alt er klar! Der er intet her. Når der modtages nye notifikationer, fremgår de her jf. dine indstillinger.", "empty_column.notifications": "Du har endnu ingen notifikationer. Når andre interagerer med dig, vil det fremgå hér.", @@ -465,20 +467,31 @@ "link_preview.author": "Af {name}", "link_preview.more_from_author": "Mere fra {name}", "link_preview.shares": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}}", - "lists.account.add": "Føj til liste", - "lists.account.remove": "Fjern fra liste", + "lists.add_member": "Tilføj", + "lists.add_to_list": "Føj til liste", + "lists.add_to_lists": "Føj {name} til lister", + "lists.create": "Opret", + "lists.create_a_list_to_organize": "Opret en ny liste til organisering af hjemmefeed", + "lists.create_list": "Opret liste", "lists.delete": "Slet liste", + "lists.done": "Færdig", "lists.edit": "Redigér liste", - "lists.edit.submit": "Skift titel", - "lists.exclusive": "Skjul disse indlæg hjemmefra", - "lists.new.create": "Tilføj liste", - "lists.new.title_placeholder": "Ny listetitel", + "lists.exclusive": "Skjul medlemmer i Hjem", + "lists.exclusive_hint": "Er nogen er på denne liste, skjul personen i hjemme-feeds for at undgå at se vedkommendes indlæg to gange.", + "lists.find_users_to_add": "Find brugere at tilføje", + "lists.list_members_count": "{count, plural, one {# medlem} other {# medlemmer}}", + "lists.list_name": "Listetitel", + "lists.new_list_name": "Ny listetitel", + "lists.no_lists_yet": "Ingen lister endnu.", + "lists.no_members_yet": "Ingen medlemmer endnu.", + "lists.no_results_found": "Ingen resultater fundet.", + "lists.remove_member": "Fjern", "lists.replies_policy.followed": "Enhver bruger, der følges", "lists.replies_policy.list": "Listemedlemmer", "lists.replies_policy.none": "Ingen", - "lists.replies_policy.title": "Vis svar til:", - "lists.search": "Søg blandt personer, som følges", - "lists.subheading": "Dine lister", + "lists.save": "Gem", + "lists.search_placeholder": "Søg efter folk, man følger", + "lists.show_replies_to": "Medtag svar fra listemedlemmer til", "load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}", "loading_indicator.label": "Indlæser…", "media_gallery.hide": "Skjul", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index e9bf6a4181..b47007522b 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -140,13 +140,16 @@ "column.blocks": "Blockierte Profile", "column.bookmarks": "Lesezeichen", "column.community": "Lokale Timeline", + "column.create_list": "Liste erstellen", "column.direct": "Private Erwähnungen", "column.directory": "Profile durchsuchen", "column.domain_blocks": "Blockierte Domains", + "column.edit_list": "Liste bearbeiten", "column.favourites": "Favoriten", "column.firehose": "Live-Feeds", "column.follow_requests": "Follower-Anfragen", "column.home": "Startseite", + "column.list_members": "Listenmitglieder verwalten", "column.lists": "Listen", "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Benachrichtigungen", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.", "empty_column.home": "Die Timeline deiner Startseite ist leer! Folge mehr Leuten, um sie zu füllen.", "empty_column.list": "Diese Liste ist derzeit leer. Wenn Konten auf dieser Liste neue Beiträge veröffentlichen, werden sie hier erscheinen.", - "empty_column.lists": "Du hast noch keine Listen. Sobald du eine anlegst, wird sie hier erscheinen.", "empty_column.mutes": "Du hast keine Profile stummgeschaltet.", "empty_column.notification_requests": "Alles klar! Hier gibt es nichts. Wenn Sie neue Mitteilungen erhalten, werden diese entsprechend Ihren Einstellungen hier angezeigt.", "empty_column.notifications": "Du hast noch keine Benachrichtigungen. Sobald andere Personen mit dir interagieren, wirst du hier darüber informiert.", @@ -465,20 +467,32 @@ "link_preview.author": "Von {name}", "link_preview.more_from_author": "Mehr von {name}", "link_preview.shares": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", - "lists.account.add": "Zur Liste hinzufügen", - "lists.account.remove": "Von der Liste entfernen", + "lists.add_member": "Hinzufügen", + "lists.add_to_list": "Zur Liste hinzufügen", + "lists.add_to_lists": "{name} zu Listen hinzufügen", + "lists.create": "Erstellen", + "lists.create_a_list_to_organize": "Erstelle eine neue Liste, um deine Startseite zu organisieren", + "lists.create_list": "Liste erstellen", "lists.delete": "Liste löschen", + "lists.done": "Fertig", "lists.edit": "Liste bearbeiten", - "lists.edit.submit": "Titel ändern", - "lists.exclusive": "Diese Beiträge in der Startseite ausblenden", - "lists.new.create": "Neue Liste erstellen", - "lists.new.title_placeholder": "Titel der neuen Liste", + "lists.exclusive": "Mitglieder auf der Startseite ausblenden", + "lists.exclusive_hint": "Profile, die sich auf dieser Liste befinden, werden nicht auf deiner Startseite angezeigt, damit deren Beiträge nicht doppelt erscheinen.", + "lists.find_users_to_add": "Suche nach Profilen, um sie hinzuzufügen", + "lists.list_members": "Listenmitglieder", + "lists.list_members_count": "{count, plural, one {# Mitglied} other {# Mitglieder}}", + "lists.list_name": "Titel der Liste", + "lists.new_list_name": "Neuer Listentitel", + "lists.no_lists_yet": "Noch keine Listen vorhanden.", + "lists.no_members_yet": "Keine Mitglieder vorhanden.", + "lists.no_results_found": "Keine Suchergebnisse.", + "lists.remove_member": "Entfernen", "lists.replies_policy.followed": "Alle folgenden Profile", "lists.replies_policy.list": "Mitglieder der Liste", "lists.replies_policy.none": "Niemanden", - "lists.replies_policy.title": "Antworten anzeigen für:", - "lists.search": "Suche nach Leuten, denen du folgst", - "lists.subheading": "Deine Listen", + "lists.save": "Speichern", + "lists.search_placeholder": "Nach Profilen suchen, denen du folgst", + "lists.show_replies_to": "Antworten von Listenmitgliedern anzeigen für …", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", "media_gallery.hide": "Ausblenden", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 2920968e6a..57f47dda7b 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -291,7 +291,6 @@ "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.", "empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.", "empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.", - "empty_column.lists": "Δεν έχεις καμία λίστα ακόμα. Μόλις φτιάξεις μια, θα εμφανιστεί εδώ.", "empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμα.", "empty_column.notification_requests": "Όλα καθαρά! Δεν υπάρχει τίποτα εδώ. Όταν λαμβάνεις νέες ειδοποιήσεις, αυτές θα εμφανίζονται εδώ σύμφωνα με τις ρυθμίσεις σου.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.", @@ -464,20 +463,11 @@ "link_preview.author": "Από {name}", "link_preview.more_from_author": "Περισσότερα από {name}", "link_preview.shares": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", - "lists.account.add": "Πρόσθεσε στη λίστα", - "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", "lists.edit": "Επεξεργασία λίστας", - "lists.edit.submit": "Αλλαγή τίτλου", - "lists.exclusive": "Απόκρυψη αυτών των αναρτήσεων από την αρχική", - "lists.new.create": "Προσθήκη λίστας", - "lists.new.title_placeholder": "Τίτλος νέας λίστα", "lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς", "lists.replies_policy.list": "Μέλη της λίστας", "lists.replies_policy.none": "Κανένας", - "lists.replies_policy.title": "Εμφάνιση απαντήσεων σε:", - "lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς", - "lists.subheading": "Οι λίστες σου", "load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}", "loading_indicator.label": "Φόρτωση…", "media_gallery.hide": "Απόκρυψη", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index d482ec21dd..8d4201484d 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -87,6 +87,25 @@ "alert.unexpected.title": "Oops!", "alt_text_badge.title": "Alt text", "announcement.announcement": "Announcement", + "annual_report.summary.archetype.booster": "The cool-hunter", + "annual_report.summary.archetype.lurker": "The lurker", + "annual_report.summary.archetype.oracle": "The oracle", + "annual_report.summary.archetype.pollster": "The pollster", + "annual_report.summary.archetype.replier": "The social butterfly", + "annual_report.summary.followers.followers": "followers", + "annual_report.summary.followers.total": "{count} total", + "annual_report.summary.here_it_is": "Here is your {year} in review:", + "annual_report.summary.highlighted_post.by_favourites": "most favourited post", + "annual_report.summary.highlighted_post.by_reblogs": "most boosted post", + "annual_report.summary.highlighted_post.by_replies": "post with the most replies", + "annual_report.summary.highlighted_post.possessive": "{name}'s", + "annual_report.summary.most_used_app.most_used_app": "most used app", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "most used hashtag", + "annual_report.summary.most_used_hashtag.none": "None", + "annual_report.summary.new_posts.new_posts": "new posts", + "annual_report.summary.percentile.text": "That puts you in the topof Mastodon users.", + "annual_report.summary.percentile.we_wont_tell_bernie": "We won't tell Bernie.", + "annual_report.summary.thanks": "Thanks for being part of Mastodon!", "attachments_list.unprocessed": "(unprocessed)", "audio.hide": "Hide audio", "block_modal.remote_users_caveat": "We will ask the server {domain} to respect your decision. However, compliance is not guaranteed since some servers may handle blocks differently. Public posts may still be visible to non-logged-in users.", @@ -158,6 +177,7 @@ "compose_form.poll.duration": "Poll duration", "compose_form.poll.multiple": "Multiple choice", "compose_form.poll.option_placeholder": "Option {number}", + "compose_form.poll.single": "Single choice", "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices", "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.poll.type": "Style", @@ -196,6 +216,7 @@ "confirmations.unfollow.title": "Unfollow user?", "content_warning.hide": "Hide post", "content_warning.show": "Show anyway", + "content_warning.show_more": "Show more", "conversation.delete": "Delete conversation", "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", @@ -271,7 +292,6 @@ "empty_column.hashtag": "There is nothing in this hashtag yet.", "empty_column.home": "Your home timeline is empty! Follow more people to fill it up.", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", "empty_column.mutes": "You haven't muted any users yet.", "empty_column.notification_requests": "All clear! There is nothing here. When you receive new notifications, they will appear here according to your settings.", "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", @@ -304,6 +324,7 @@ "filter_modal.select_filter.subtitle": "Use an existing category or create a new one", "filter_modal.select_filter.title": "Filter this post", "filter_modal.title.status": "Filter a post", + "filter_warning.matches_filter": "Matches filter \"{title}\"", "filtered_notifications_banner.pending_requests": "From {count, plural, =0 {no one} one {one person} other {# people}} you may know", "filtered_notifications_banner.title": "Filtered notifications", "firehose.all": "All", @@ -383,6 +404,7 @@ "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.", "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.", "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.", + "interaction_modal.description.vote": "With an account on Mastodon, you can vote in this poll.", "interaction_modal.login.action": "Take me home", "interaction_modal.login.prompt": "Domain of your home server, e.g. mastodon.social", "interaction_modal.no_account_yet": "Not on Mastodon?", @@ -394,6 +416,7 @@ "interaction_modal.title.follow": "Follow {name}", "interaction_modal.title.reblog": "Boost {name}'s post", "interaction_modal.title.reply": "Reply to {name}'s post", + "interaction_modal.title.vote": "Vote in {name}'s poll", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -441,20 +464,11 @@ "link_preview.author": "By {name}", "link_preview.more_from_author": "More from {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", "lists.delete": "Delete list", "lists.edit": "Edit list", - "lists.edit.submit": "Change title", - "lists.exclusive": "Hide these posts from home", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Any followed user", "lists.replies_policy.list": "Members of the list", "lists.replies_policy.none": "No one", - "lists.replies_policy.title": "Show replies to:", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading…", "media_gallery.hide": "Hide", @@ -503,9 +517,11 @@ "notification.admin.report_statuses_other": "{name} reported {target}", "notification.admin.sign_up": "{name} signed up", "notification.admin.sign_up.name_and_others": "{name} and {count, plural, one {# other} other {# others}} signed up", + "notification.annual_report.message": "Your {year} #Wrapstodon awaits! Unveil your year's highlights and memorable moments on Mastodon!", "notification.favourite": "{name} favourited your post", "notification.favourite.name_and_others_with_link": "{name} and {count, plural, one {# other} other {# others}} favourited your post", "notification.follow": "{name} followed you", + "notification.follow.name_and_others": "{name} and {count, plural, one {# other} other {# others}} followed you", "notification.follow_request": "{name} has requested to follow you", "notification.follow_request.name_and_others": "{name} and {count, plural, one {# other} other {# others}} has requested to follow you", "notification.label.mention": "Mention", @@ -513,6 +529,7 @@ "notification.label.private_reply": "Private reply", "notification.label.reply": "Reply", "notification.mention": "Mention", + "notification.mentioned_you": "{name} mentioned you", "notification.moderation-warning.learn_more": "Learn more", "notification.moderation_warning": "You have received a moderation warning", "notification.moderation_warning.action_delete_statuses": "Some of your posts have been removed.", @@ -563,6 +580,7 @@ "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow_request": "New follow requests:", + "notifications.column_settings.group": "Group", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 6d8c82385b..730c301769 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -280,7 +280,6 @@ "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.", "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.", "empty_column.list": "Ankoraŭ estas nenio en ĉi tiu listo. Kiam membroj de ĉi tiu listo afiŝos novajn afiŝojn, ili aperos ĉi tie.", - "empty_column.lists": "Vi ankoraŭ ne havas liston. Kiam vi kreos iun, ĝi aperos ĉi tie.", "empty_column.mutes": "Vi ne ankoraŭ silentigis iun uzanton.", "empty_column.notification_requests": "Ĉio klara! Estas nenio tie ĉi. Kiam vi ricevas novajn sciigojn, ili aperos ĉi tie laŭ viaj agordoj.", "empty_column.notifications": "Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.", @@ -453,20 +452,11 @@ "link_preview.author": "De {name}", "link_preview.more_from_author": "Pli de {name}", "link_preview.shares": "{count, plural, one {{counter} afiŝo} other {{counter} afiŝoj}}", - "lists.account.add": "Aldoni al la listo", - "lists.account.remove": "Forigi de la listo", "lists.delete": "Forigi la liston", "lists.edit": "Redakti la liston", - "lists.edit.submit": "Ŝanĝi titolon", - "lists.exclusive": "Kaŝi ĉi tiujn afiŝojn de hejmo", - "lists.new.create": "Aldoni liston", - "lists.new.title_placeholder": "Titolo de la nova listo", "lists.replies_policy.followed": "Iu sekvanta uzanto", "lists.replies_policy.list": "Membroj de la listo", "lists.replies_policy.none": "Neniu", - "lists.replies_policy.title": "Montri respondojn al:", - "lists.search": "Serĉi inter la homoj, kiujn vi sekvas", - "lists.subheading": "Viaj listoj", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", "loading_indicator.label": "Ŝargado…", "media_gallery.hide": "Kaŝi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 406c526983..2dea704a72 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Todavía no hay nada con esta etiqueta.", "empty_column.home": "¡Tu línea temporal principal está vacía! Seguí a más cuentas para llenarla.", "empty_column.list": "Todavía no hay nada en esta lista. Cuando miembros de esta lista envíen nuevos mensaje, se mostrarán acá.", - "empty_column.lists": "Todavía no tenés ninguna lista. Cuando creés una, se mostrará acá.", "empty_column.mutes": "Todavía no silenciaste a ningún usuario.", "empty_column.notification_requests": "¡Todo limpio! No hay nada acá. Cuando recibás nuevas notificaciones, aparecerán acá, acorde a tu configuración.", "empty_column.notifications": "Todavía no tenés ninguna notificación. Cuando otras cuentas interactúen con vos, vas a ver la notificación acá.", @@ -465,20 +464,11 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} mensaje} other {{counter} mensajes}}", - "lists.account.add": "Agregar a lista", - "lists.account.remove": "Quitar de lista", "lists.delete": "Eliminar lista", "lists.edit": "Editar lista", - "lists.edit.submit": "Cambiar título", - "lists.exclusive": "Ocultar estos mensajes del inicio", - "lists.new.create": "Agregar lista", - "lists.new.title_placeholder": "Título de nueva lista", "lists.replies_policy.followed": "Cualquier cuenta seguida", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", - "lists.replies_policy.title": "Mostrar respuestas a:", - "lists.search": "Buscar entre la gente que seguís", - "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 63dc31c6df..d863873418 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "No hay nada en esta etiqueta aún.", "empty_column.home": "No estás siguiendo a nadie aún. Visita {public} o haz búsquedas para empezar y conocer gente nueva.", "empty_column.list": "No hay nada en esta lista aún. Cuando miembros de esta lista publiquen nuevos estatus, estos aparecerán qui.", - "empty_column.lists": "No tienes ninguna lista. cuando crees una, se mostrará aquí.", "empty_column.mutes": "Aún no has silenciado a ningún usuario.", "empty_column.notification_requests": "¡Todo limpio! No hay nada aquí. Cuando recibas nuevas notificaciones, aparecerán aquí conforme a tu configuración.", "empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.", @@ -465,20 +464,11 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", - "lists.account.add": "Añadir a lista", - "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", "lists.edit": "Editar lista", - "lists.edit.submit": "Cambiar título", - "lists.exclusive": "Ocultar estas publicaciones en inicio", - "lists.new.create": "Añadir lista", - "lists.new.title_placeholder": "Título de la nueva lista", "lists.replies_policy.followed": "Cualquier usuario seguido", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", - "lists.replies_policy.title": "Mostrar respuestas a:", - "lists.search": "Buscar entre la gente a la que sigues", - "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 258b19f411..bfb16e9fd8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "No hay nada en esta etiqueta todavía.", "empty_column.home": "¡Tu línea temporal está vacía! Sigue a más personas para rellenarla.", "empty_column.list": "Aún no hay nada en esta lista. Cuando los miembros de esta lista publiquen nuevos estados, estos aparecerán aquí.", - "empty_column.lists": "No tienes ninguna lista. Cuando crees una, se mostrará aquí.", "empty_column.mutes": "Aún no has silenciado a ningún usuario.", "empty_column.notification_requests": "¡Todo limpio! No hay nada aquí. Cuando recibas nuevas notificaciones, aparecerán aquí conforme a tu configuración.", "empty_column.notifications": "Aún no tienes ninguna notificación. Cuando otras personas interactúen contigo, aparecerán aquí.", @@ -465,20 +464,11 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", - "lists.account.add": "Añadir a lista", - "lists.account.remove": "Quitar de lista", "lists.delete": "Borrar lista", "lists.edit": "Editar lista", - "lists.edit.submit": "Cambiar título", - "lists.exclusive": "Ocultar estas publicaciones de inicio", - "lists.new.create": "Añadir lista", - "lists.new.title_placeholder": "Título de la nueva lista", "lists.replies_policy.followed": "Cualquier usuario seguido", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", - "lists.replies_policy.title": "Mostrar respuestas a:", - "lists.search": "Buscar entre las personas a las que sigues", - "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 8376641179..1db32efe09 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -273,7 +273,6 @@ "empty_column.hashtag": "Selle sildi all ei ole ühtegi postitust.", "empty_column.home": "Su koduajajoon on tühi. Jälgi rohkemaid inimesi, et seda täita {suggestions}", "empty_column.list": "Siin loetelus pole veel midagi. Kui loetelu liikmed teevad uusi postitusi, näed neid siin.", - "empty_column.lists": "Pole veel ühtegi nimekirja. Kui lood mõne, näed neid siin.", "empty_column.mutes": "Sa pole veel ühtegi kasutajat vaigistanud.", "empty_column.notification_requests": "Kõik tühi! Siin pole mitte midagi. Kui saad uusi teavitusi, ilmuvad need siin vastavalt sinu seadistustele.", "empty_column.notifications": "Ei ole veel teateid. Kui keegi suhtleb sinuga, näed seda siin.", @@ -446,20 +445,11 @@ "link_preview.author": "{name} poolt", "link_preview.more_from_author": "Veel kasutajalt {name}", "link_preview.shares": "{count, plural, one {{counter} postitus} other {{counter} postitust}}", - "lists.account.add": "Lisa nimekirja", - "lists.account.remove": "Eemalda nimekirjast", "lists.delete": "Kustuta nimekiri", "lists.edit": "Muuda nimekirja", - "lists.edit.submit": "Pealkirja muutmine", - "lists.exclusive": "Peida koduvaatest need postitused", - "lists.new.create": "Lisa nimekiri", - "lists.new.title_placeholder": "Uue nimekirja pealkiri", "lists.replies_policy.followed": "Igalt jälgitud kasutajalt", "lists.replies_policy.list": "Listi liikmetelt", "lists.replies_policy.none": "Mitte kelleltki", - "lists.replies_policy.title": "Näita vastuseid nendele:", - "lists.search": "Otsi enda jälgitavate inimeste hulgast", - "lists.subheading": "Sinu nimekirjad", "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", "loading_indicator.label": "Laadimine…", "media_gallery.hide": "Peida", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index c8349dc6a1..c77ca93f9e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -269,7 +269,6 @@ "empty_column.hashtag": "Ez dago ezer traola honetan oraindik.", "empty_column.home": "Zure hasierako denbora-lerroa hutsik dago! Jarraitu jende gehiago betetzeko.", "empty_column.list": "Ez dago ezer zerrenda honetan. Zerrenda honetako kideek bidalketa berriak argitaratzean, hemen agertuko dira.", - "empty_column.lists": "Ez duzu zerrendarik oraindik. Baten bat sortzen duzunean hemen agertuko da.", "empty_column.mutes": "Ez duzu erabiltzailerik mututu oraindik.", "empty_column.notification_requests": "Garbi-garbi! Ezertxo ere ez hemen. Jakinarazpenak jasotzen dituzunean, hemen agertuko dira zure ezarpenen arabera.", "empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.", @@ -437,20 +436,11 @@ "link_preview.author": "Egilea: {name}", "link_preview.more_from_author": "{name} erabiltzaileaz gehiago jakin", "link_preview.shares": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}", - "lists.account.add": "Gehitu zerrendara", - "lists.account.remove": "Kendu zerrendatik", "lists.delete": "Ezabatu zerrenda", "lists.edit": "Editatu zerrenda", - "lists.edit.submit": "Aldatu izenburua", - "lists.exclusive": "Ezkutatu argitalpen hauek hasieratik", - "lists.new.create": "Gehitu zerrenda", - "lists.new.title_placeholder": "Zerrenda berriaren izena", "lists.replies_policy.followed": "Jarraitutako edozein erabiltzaile", "lists.replies_policy.list": "Zerrendako kideak", "lists.replies_policy.none": "Bat ere ez", - "lists.replies_policy.title": "Erakutsi erantzunak:", - "lists.search": "Bilatu jarraitzen dituzun pertsonen artean", - "lists.subheading": "Zure zerrendak", "load_pending": "{count, plural, one {elementu berri #} other {# elementu berri}}", "loading_indicator.label": "Kargatzen…", "media_gallery.hide": "Ezkutatu", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 3bc96cf9f2..608c1321b7 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -272,7 +272,6 @@ "empty_column.hashtag": "هنوز هیچ چیزی در این برچسب نیست.", "empty_column.home": "خط زمانی خانگیتان خالی است! برای پر کردنش، افراد بیشتری را پی بگیرید. {suggestions}", "empty_column.list": "هنوز چیزی در این سیاهه نیست. هنگامی که اعضایش فرسته‌های جدیدی بفرستند، این‌جا ظاهر خواهند شد.", - "empty_column.lists": "هنوز هیچ سیاهه‌ای ندارید. هنگامی که یکی بسازید، این‌جا نشان داده خواهد شد.", "empty_column.mutes": "هنوز هیچ کاربری را خموش نکرده‌اید.", "empty_column.notifications": "هنوز هیچ آگاهی‌آی ندارید. هنگامی که دیگران با شما برهم‌کنش داشته باشند،‌این‌حا خواهید دیدش.", "empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران کارسازهای دیگر را پی‌گیری کنید تا این‌جا پُر شود", @@ -437,20 +436,11 @@ "link_preview.author": "از {name}", "link_preview.more_from_author": "بیش‌تر از {name}", "link_preview.shares": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}", - "lists.account.add": "افزودن به سیاهه", - "lists.account.remove": "برداشتن از سیاهه", "lists.delete": "حذف سیاهه", "lists.edit": "ویرایش سیاهه", - "lists.edit.submit": "تغییر عنوان", - "lists.exclusive": "نهفتن این فرسته‌ها از خانه", - "lists.new.create": "افزودن سیاهه", - "lists.new.title_placeholder": "عنوان سیاههٔ جدید", "lists.replies_policy.followed": "هر کاربر پی‌گرفته", "lists.replies_policy.list": "اعضای سیاهه", "lists.replies_policy.none": "هیچ کدام", - "lists.replies_policy.title": "نمایش پاسخ‌ها به:", - "lists.search": "جست‌وجو بین کسانی که پی‌گرفته‌اید", - "lists.subheading": "سیاهه‌هایتان", "load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}", "loading_indicator.label": "در حال بارگذاری…", "media_gallery.hide": "نهفتن", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 2c0aacc535..a987c4bad2 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -139,13 +139,16 @@ "column.blocks": "Estetyt käyttäjät", "column.bookmarks": "Kirjanmerkit", "column.community": "Paikallinen aikajana", + "column.create_list": "Luo lista", "column.direct": "Yksityismaininnat", "column.directory": "Selaa profiileja", "column.domain_blocks": "Estetyt verkkotunnukset", + "column.edit_list": "Muokkaa listaa", "column.favourites": "Suosikit", "column.firehose": "Livesyötteet", "column.follow_requests": "Seurantapyynnöt", "column.home": "Koti", + "column.list_members": "Hallitse listan jäseniä", "column.lists": "Listat", "column.mutes": "Mykistetyt käyttäjät", "column.notifications": "Ilmoitukset", @@ -291,7 +294,6 @@ "empty_column.hashtag": "Tällä aihetunnisteella ei löydy vielä sisältöä.", "empty_column.home": "Kotiaikajanasi on tyhjä! Seuraa useampia käyttäjiä, niin näet enemmän sisältöä.", "empty_column.list": "Tällä listalla ei ole vielä mitään. Kun tämän listan jäsenet lähettävät uusia julkaisuja, ne näkyvät tässä.", - "empty_column.lists": "Sinulla ei ole vielä yhtään listaa. Kun luot sellaisen, näkyy se tässä.", "empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.", "empty_column.notification_requests": "Olet ajan tasalla! Täällä ei ole mitään uutta kerrottavaa. Kun saat uusia ilmoituksia, ne näkyvät täällä asetustesi mukaisesti.", "empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun muut ovat vuorovaikutuksessa kanssasi, näet sen täällä.", @@ -464,20 +466,32 @@ "link_preview.author": "Tehnyt {name}", "link_preview.more_from_author": "Lisää tekijältä {name}", "link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}", - "lists.account.add": "Lisää listalle", - "lists.account.remove": "Poista listalta", + "lists.add_member": "Lisää", + "lists.add_to_list": "Lisää listalle", + "lists.add_to_lists": "Lisää {name} listalle", + "lists.create": "Luo", + "lists.create_a_list_to_organize": "Luo uusi lista kotisyötteesi järjestämiseksi", + "lists.create_list": "Luo lista", "lists.delete": "Poista lista", + "lists.done": "Valmis", "lists.edit": "Muokkaa listaa", - "lists.edit.submit": "Vaihda nimi", - "lists.exclusive": "Piilota nämä julkaisut kotisyötteestä", - "lists.new.create": "Lisää lista", - "lists.new.title_placeholder": "Uuden listan nimi", + "lists.exclusive": "Piilota jäsenet kotisyötteestä", + "lists.exclusive_hint": "Jos joku on tällä listalla, piilota hänet kotisyötteestäsi, jotta et näe hänen julkaisujaan kahteen kertaan.", + "lists.find_users_to_add": "Etsi lisättäviä käyttäjiä", + "lists.list_members": "Listan jäsenet", + "lists.list_members_count": "{count, plural, one {# jäsen} other {# jäsentä}}", + "lists.list_name": "Listan nimi", + "lists.new_list_name": "Uuden listan nimi", + "lists.no_lists_yet": "Ei vielä listoja.", + "lists.no_members_yet": "Ei vielä jäseniä.", + "lists.no_results_found": "Tuloksia ei löytynyt.", + "lists.remove_member": "Poista", "lists.replies_policy.followed": "Jokaiselle seuratulle käyttäjälle", "lists.replies_policy.list": "Listan jäsenille", "lists.replies_policy.none": "Ei kellekään", - "lists.replies_policy.title": "Näytä vastaukset:", - "lists.search": "Hae seuraamistasi käyttäjistä", - "lists.subheading": "Omat listasi", + "lists.save": "Tallenna", + "lists.search_placeholder": "Hae käyttäjiä seurattavaksi", + "lists.show_replies_to": "Sisällytä listan jäsenten vastaukset kohteeseen", "load_pending": "{count, plural, one {# uusi kohde} other {# uutta kohdetta}}", "loading_indicator.label": "Ladataan…", "media_gallery.hide": "Piilota", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 14c7b70bd2..1ccc6f036d 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -184,7 +184,6 @@ "empty_column.hashtag": "Wala pang laman ang hashtag na ito.", "empty_column.home": "Walang laman ang timeline ng tahanan mo! Sumunod sa marami pang tao para mapunan ito.", "empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.", - "empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito.", "errors.unexpected_crash.report_issue": "Iulat ang isyu", "explore.search_results": "Mga resulta ng paghahanap", "explore.suggested_follows": "Mga tao", @@ -234,15 +233,8 @@ "lightbox.next": "Susunod", "lightbox.previous": "Nakaraan", "link_preview.author": "Ni/ng {name}", - "lists.account.add": "Idagdag sa talaan", - "lists.account.remove": "Tanggalin mula sa talaan", "lists.delete": "Burahin ang listahan", - "lists.edit.submit": "Baguhin ang pamagat", - "lists.new.create": "Idagdag sa talaan", - "lists.new.title_placeholder": "Bagong pangalan ng talaan", "lists.replies_policy.none": "Walang simuman", - "lists.replies_policy.title": "Ipakita ang mga tugon sa:", - "lists.subheading": "Iyong mga talaan", "loading_indicator.label": "Kumakarga…", "media_gallery.hide": "Itago", "mute_modal.hide_from_notifications": "Itago mula sa mga abiso", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 789efaa40e..bc56152f37 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Einki er í hesum frámerkinum enn.", "empty_column.home": "Heima-tíðarlinjan hjá tær er tóm! Fylg fleiri fyri at fylla hana. {suggestions}", "empty_column.list": "Einki er í hesum listanum enn. Tá limir í hesum listanum posta nýggjar postar, so síggjast teir her.", - "empty_column.lists": "Tú hevur ongar goymdar listar enn. Tá tú gert ein lista, so sært tú hann her.", "empty_column.mutes": "Tú hevur enn ikki doyvt nakran brúkara.", "empty_column.notification_requests": "Alt er klárt! Her er einki. Tá tú fært nýggjar fráboðanir, síggjast tær her sambært tínum stillingum.", "empty_column.notifications": "Tú hevur ongar fráboðanir enn. Tá onnur samskifta við teg, so sær tú fráboðaninar her.", @@ -465,20 +464,11 @@ "link_preview.author": "Av {name}", "link_preview.more_from_author": "Meira frá {name}", "link_preview.shares": "{count, plural, one {{counter} postur} other {{counter} postar}}", - "lists.account.add": "Legg afturat lista", - "lists.account.remove": "Tak av lista", "lists.delete": "Strika lista", "lists.edit": "Broyt lista", - "lists.edit.submit": "Broyt heiti", - "lists.exclusive": "Fjal hesar postarnar frá heima", - "lists.new.create": "Ger nýggjan lista", - "lists.new.title_placeholder": "Nýtt navn á lista", "lists.replies_policy.followed": "Øllum fylgdum brúkarum", "lists.replies_policy.list": "Listalimunum", "lists.replies_policy.none": "Eingin", - "lists.replies_policy.title": "Vís svarini fyri:", - "lists.search": "Leita millum fólk, sum tú fylgir", - "lists.subheading": "Tínir listar", "load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}", "loading_indicator.label": "Innlesur…", "media_gallery.hide": "Fjal", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index fed111e7e8..a1134e0de3 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -275,7 +275,6 @@ "empty_column.hashtag": "Il n’y a pas encore de contenu associé à ce hashtag.", "empty_column.home": "Votre fil d'accueil est vide! Suivez plus de personnes pour la remplir. {suggestions}", "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.", @@ -445,20 +444,11 @@ "link_preview.author": "Par {name}", "link_preview.more_from_author": "Plus via {name}", "link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}", - "lists.account.add": "Ajouter à une liste", - "lists.account.remove": "Retirer d'une liste", "lists.delete": "Supprimer la liste", "lists.edit": "Modifier la liste", - "lists.edit.submit": "Modifier le titre", - "lists.exclusive": "Cacher ces publications depuis la page d'accueil", - "lists.new.create": "Ajouter une liste", - "lists.new.title_placeholder": "Titre de la nouvelle liste", "lists.replies_policy.followed": "N'importe quel compte suivi", "lists.replies_policy.list": "Membres de la liste", "lists.replies_policy.none": "Personne", - "lists.replies_policy.title": "Afficher les réponses à:", - "lists.search": "Rechercher parmi les gens que vous suivez", - "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", "media_gallery.hide": "Masquer", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 10bfc22bd8..8597152f00 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -275,7 +275,6 @@ "empty_column.hashtag": "Il n’y a encore aucun contenu associé à ce hashtag.", "empty_column.home": "Votre fil principal est vide ! Suivez plus de personnes pour le remplir.", "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.", @@ -445,20 +444,11 @@ "link_preview.author": "Par {name}", "link_preview.more_from_author": "Plus via {name}", "link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}", - "lists.account.add": "Ajouter à la liste", - "lists.account.remove": "Supprimer de la liste", "lists.delete": "Supprimer la liste", "lists.edit": "Modifier la liste", - "lists.edit.submit": "Modifier le titre", - "lists.exclusive": "Cacher ces publications sur le fil principal", - "lists.new.create": "Ajouter une liste", - "lists.new.title_placeholder": "Titre de la nouvelle liste", "lists.replies_policy.followed": "N'importe quel compte suivi", "lists.replies_policy.list": "Membres de la liste", "lists.replies_policy.none": "Personne", - "lists.replies_policy.title": "Afficher les réponses à :", - "lists.search": "Rechercher parmi les gens que vous suivez", - "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", "media_gallery.hide": "Masquer", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 3f4d942b61..a5e8f924dd 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -273,7 +273,6 @@ "empty_column.hashtag": "Der is noch neat te finen ûnder dizze hashtag.", "empty_column.home": "Dizze tiidline is leech! Folgje mear minsken om it te foljen. {suggestions}", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "Jo hawwe noch gjin inkelde list. Wannear’t jo der ien oanmakke hawwe, falt dat hjir te sjen.", "empty_column.mutes": "Jo hawwe noch gjin brûkers negearre.", "empty_column.notification_requests": "Hielendal leech! Der is hjir neat. Wannear’t jo nije meldingen ûntfange, ferskine dizze hjir neffens jo ynstellingen.", "empty_column.notifications": "Jo hawwe noch gjin meldingen. Ynteraksjes mei oare minsken sjogge jo hjir.", @@ -446,20 +445,11 @@ "link_preview.author": "Troch {name}", "link_preview.more_from_author": "Mear fan {name}", "link_preview.shares": "{count, plural, one {{counter} berjocht} other {{counter} berjochten}}", - "lists.account.add": "Oan list tafoegje", - "lists.account.remove": "Ut list fuortsmite", "lists.delete": "List fuortsmite", "lists.edit": "List bewurkje", - "lists.edit.submit": "Titel wizigje", - "lists.exclusive": "Ferstopje dizze berjochten op jo startside", - "lists.new.create": "List tafoegje", - "lists.new.title_placeholder": "Nije listtitel", "lists.replies_policy.followed": "Elke folge brûker", "lists.replies_policy.list": "Leden fan de list", "lists.replies_policy.none": "Net ien", - "lists.replies_policy.title": "Reaksjes toane oan:", - "lists.search": "Sykje nei minsken dy’t jo folgje", - "lists.subheading": "Jo listen", "load_pending": "{count, plural, one {# nij item} other {# nije items}}", "loading_indicator.label": "Lade…", "media_gallery.hide": "Ferstopje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 137a7c591f..31418c8e72 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Níl rud ar bith faoin haischlib seo go fóill.", "empty_column.home": "Tá d'amlíne baile folamh! B'fhiú duit cúpla duine eile a leanúint lena líonadh! {suggestions}", "empty_column.list": "Níl aon rud ar an liosta seo fós. Nuair a fhoilseoidh baill an liosta seo postálacha nua, beidh siad le feiceáil anseo.", - "empty_column.lists": "Níl aon liostaí fós agat. Nuair a chruthaíonn tú ceann, feicfear anseo é.", "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", "empty_column.notification_requests": "Gach soiléir! Níl aon rud anseo. Nuair a gheobhaidh tú fógraí nua, beidh siad le feiceáil anseo de réir do shocruithe.", "empty_column.notifications": "Níl aon fógraí agat fós. Nuair a dhéanann daoine eile idirghníomhú leat, feicfear anseo é.", @@ -465,20 +464,11 @@ "link_preview.author": "Le {name}", "link_preview.more_from_author": "Tuilleadh ó {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} poist}}", - "lists.account.add": "Cuir leis an liosta", - "lists.account.remove": "Scrios as an liosta", "lists.delete": "Scrios liosta", "lists.edit": "Cuir an liosta in eagar", - "lists.edit.submit": "Athraigh teideal", - "lists.exclusive": "Folaigh na poist seo ón mbaile", - "lists.new.create": "Cruthaigh liosta", - "lists.new.title_placeholder": "Teideal liosta nua", "lists.replies_policy.followed": "Úsáideoir ar bith atá á leanúint", "lists.replies_policy.list": "Baill an liosta", "lists.replies_policy.none": "Duine ar bith", - "lists.replies_policy.title": "Taispeáin freagraí:", - "lists.search": "Cuardaigh i measc daoine atá á leanúint agat", - "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# mír nua} two {# mír nua} few {# mír nua} many {# mír nua} other {# mír nua}}", "loading_indicator.label": "Á lódáil…", "media_gallery.hide": "Folaigh", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f459f50a80..17dbfc30e4 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.", "empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh.", "empty_column.list": "Chan eil dad air an liosta seo fhathast. Nuair a phostaicheas buill a tha air an liosta seo postaichean ùra, nochdaidh iad an-seo.", - "empty_column.lists": "Chan eil liosta agad fhathast. Nuair chruthaicheas tu tè, nochdaidh i an-seo.", "empty_column.mutes": "Cha do mhùch thu cleachdaiche sam bith fhathast.", "empty_column.notification_requests": "Glan! Chan eil dad an-seo. Nuair a gheibh thu brathan ùra, nochdaidh iad an-seo a-rèir nan roghainnean agad.", "empty_column.notifications": "Cha d’ fhuair thu brath sam bith fhathast. Nuair a nì càch conaltradh leat, chì thu an-seo e.", @@ -465,20 +464,11 @@ "link_preview.author": "Le {name}", "link_preview.more_from_author": "Barrachd le {name}", "link_preview.shares": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}", - "lists.account.add": "Cuir ris an liosta", - "lists.account.remove": "Thoir air falbh on liosta", "lists.delete": "Sguab às an liosta", "lists.edit": "Deasaich an liosta", - "lists.edit.submit": "Atharraich an tiotal", - "lists.exclusive": "Falaich na postaichean seo air an dachaigh", - "lists.new.create": "Cuir liosta ris", - "lists.new.title_placeholder": "Tiotal na liosta ùir", "lists.replies_policy.followed": "Cleachdaiche sam bith a leanas mi", "lists.replies_policy.list": "Buill na liosta", "lists.replies_policy.none": "Na seall idir", - "lists.replies_policy.title": "Seall freagairtean do:", - "lists.search": "Lorg am measg nan daoine a leanas tu", - "lists.subheading": "Na liostaichean agad", "load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}", "loading_indicator.label": "’Ga luchdadh…", "media_gallery.hide": "Falaich", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c69a431f4b..e77aaade6b 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -291,7 +291,6 @@ "empty_column.hashtag": "Aínda non hai nada con este cancelo.", "empty_column.home": "A túa cronoloxía inicial está baleira! Sigue a outras usuarias para enchela.", "empty_column.list": "Aínda non hai nada nesta listaxe. Cando as usuarias incluídas na listaxe publiquen mensaxes, amosaranse aquí.", - "empty_column.lists": "Aínda non tes listaxes. Cando crees unha, amosarase aquí.", "empty_column.mutes": "Aínda non silenciaches a ningúnha usuaria.", "empty_column.notification_requests": "Todo ben! Nada por aquí. Cando recibas novas notificacións aparecerán aquí seguindo o criterio dos teus axustes.", "empty_column.notifications": "Aínda non tes notificacións. Aparecerán cando outras persoas interactúen contigo.", @@ -464,20 +463,11 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Máis de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicacións}}", - "lists.account.add": "Engadir á listaxe", - "lists.account.remove": "Eliminar da listaxe", "lists.delete": "Eliminar listaxe", "lists.edit": "Editar listaxe", - "lists.edit.submit": "Mudar o título", - "lists.exclusive": "Agocha estas publicacións no Inicio", - "lists.new.create": "Engadir listaxe", - "lists.new.title_placeholder": "Título da nova listaxe", "lists.replies_policy.followed": "Calquera usuaria que siga", "lists.replies_policy.list": "Membros da lista", "lists.replies_policy.none": "Ninguén", - "lists.replies_policy.title": "Mostrar respostas a:", - "lists.search": "Procurar entre as persoas que segues", - "lists.subheading": "As túas listaxes", "load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}", "loading_indicator.label": "Estase a cargar…", "media_gallery.hide": "Agochar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 52d61b737b..57f0ee9e5e 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -140,13 +140,16 @@ "column.blocks": "משתמשים חסומים", "column.bookmarks": "סימניות", "column.community": "פיד שרת מקומי", + "column.create_list": "יצירת רשימה", "column.direct": "הודעות פרטיות", "column.directory": "עיין בפרופילים", "column.domain_blocks": "קהילות (שמות מתחם) מוסתרות", + "column.edit_list": "עריכת רשימה", "column.favourites": "חיבובים", "column.firehose": "פידים עדכניים", "column.follow_requests": "בקשות מעקב", "column.home": "פיד הבית", + "column.list_members": "ניהול חברי הרשימה", "column.lists": "רשימות", "column.mutes": "משתמשים בהשתקה", "column.notifications": "התראות", @@ -292,7 +295,6 @@ "empty_column.hashtag": "אין כלום בתגית הזאת עדיין.", "empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}", "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו הודעות חדשות, הן יופיעו פה.", - "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.", "empty_column.mutes": "עוד לא השתקת שום משתמש.", "empty_column.notification_requests": "בום! אין פה כלום. כשיווצרו עוד התראות, הן יופיעו כאן על בסיס ההעדפות שלך.", "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.", @@ -465,20 +467,32 @@ "link_preview.author": "מאת {name}", "link_preview.more_from_author": "עוד מאת {name}", "link_preview.shares": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}}", - "lists.account.add": "הוסף לרשימה", - "lists.account.remove": "הסר מרשימה", + "lists.add_member": "הוספה", + "lists.add_to_list": "הוספה לרשימה", + "lists.add_to_lists": "הוספת {name} לרשימות", + "lists.create": "יצירה", + "lists.create_a_list_to_organize": "יצירת רשימה חדשה לארגון פיד הבית שלך", + "lists.create_list": "יצירת רשימה", "lists.delete": "מחיקת רשימה", + "lists.done": "בוצע", "lists.edit": "עריכת רשימה", - "lists.edit.submit": "שנה/י כותרת", - "lists.exclusive": "להסתיר את ההודעות האלו מפיד הבית", - "lists.new.create": "הוספת רשימה", - "lists.new.title_placeholder": "כותרת הרשימה החדשה", + "lists.exclusive": "הסתרת החברים בפיד הבית", + "lists.exclusive_hint": "אם שם כלשהו ברשימה זו, נסתיר אותי בפיד הבית כדי למנוע כפילות.", + "lists.find_users_to_add": "חיפוש משתמשים להוספה", + "lists.list_members": "פירוט חברי הרשימה", + "lists.list_members_count": "{count, plural, one {חבר רשימה אחד} other {# חברי רשימה}}", + "lists.list_name": "שם הרשימה", + "lists.new_list_name": "שם רשימה חדשה", + "lists.no_lists_yet": "אין רשימות עדיין.", + "lists.no_members_yet": "עוד אין חברים ברשימה.", + "lists.no_results_found": "לא נמצאו תוצאות.", + "lists.remove_member": "הסרה", "lists.replies_policy.followed": "משתמשים שאני עוקב אחריהם", "lists.replies_policy.list": "משתמשים שברשימה", "lists.replies_policy.none": "אף אחד", - "lists.replies_policy.title": "הצג תגובות ל:", - "lists.search": "חיפוש בין אנשים שאני עוקב\\ת אחריהם", - "lists.subheading": "הרשימות שלך", + "lists.save": "שמירה", + "lists.search_placeholder": "חיפוש אנשים שאני עוקב\\ת אחריהם", + "lists.show_replies_to": "לכלול תשובות מחברי הרשימה אל", "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "בטעינה…", "media_gallery.hide": "להסתיר", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index e0de4c8452..eebf0dd9da 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -237,7 +237,6 @@ "empty_column.hashtag": "यह हैशटैग अभी तक खाली है।", "empty_column.home": "आपकी मुख्य कालक्रम अभी खली है. अन्य उपयोगकर्ताओं से मिलने के लिए और अपनी गतिविधियां शुरू करने के लिए या तो {public} पर जाएं या खोज का उपयोग करें।", "empty_column.list": "यह सूची अभी खाली है. जब इसके सदस्य कोई अभिव्यक्ति देंगे, तो वो यहां दिखाई देंगी.", - "empty_column.lists": "आपके पास अभी तक कोई सूची नहीं है। जब आप एक बनाते हैं, तो यह यहां दिखाई देगा।", "empty_column.mutes": "आपने अभी तक किसी भी उपयोगकर्ता को म्यूट नहीं किया है।", "empty_column.notifications": "आपके पास अभी तक कोई सूचना नहीं है। बातचीत शुरू करने के लिए दूसरों के साथ बातचीत करें।", "empty_column.public": "यहां कुछ नहीं है! सार्वजनिक रूप से कुछ लिखें, या इसे भरने के लिए अन्य सर्वर से उपयोगकर्ताओं का मैन्युअल रूप से अनुसरण करें", @@ -352,18 +351,11 @@ "lightbox.previous": "पिछला", "limited_account_hint.action": "फिर भी प्रोफाइल दिखाओ", "limited_account_hint.title": "यह प्रोफ़ाइल {domain} के मॉडरेटर द्वारा छिपाई गई है.", - "lists.account.add": "ऐड तो लिस्ट", - "lists.account.remove": "सूची से निकालें", "lists.delete": "सूची हटाएँ", "lists.edit": "सूची संपादित करें", - "lists.edit.submit": "शीर्षक बदलें", - "lists.new.create": "सूची जोड़ें", - "lists.new.title_placeholder": "नये सूची का शीर्षक", "lists.replies_policy.followed": "अन्य फोल्लोवेद यूजर", "lists.replies_policy.list": "सूची के सदस्य", "lists.replies_policy.none": "कोई नहीं", - "lists.replies_policy.title": "इसके जवाब दिखाएं:", - "lists.subheading": "आपकी सूचियाँ", "media_gallery.hide": "छिपाएं", "navigation_bar.about": "विवरण", "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 26c527f2fe..f09cd71c7c 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -199,7 +199,6 @@ "empty_column.hashtag": "Još ne postoji ništa s ovim hashtagom.", "empty_column.home": "Vaša početna vremenska crta je prazna! Posjetite {public} ili koristite tražilicu kako biste započeli i upoznali druge korisnike.", "empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.", - "empty_column.lists": "Nemaš niti jednu listu. Kada je kreiraš, prikazat će se ovdje.", "empty_column.mutes": "Niste utišali nijednog korisnika.", "empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.", "empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili", @@ -298,18 +297,11 @@ "lightbox.next": "Sljedeće", "lightbox.previous": "Prethodno", "limited_account_hint.action": "Svejedno prikaži profil", - "lists.account.add": "Dodaj na listu", - "lists.account.remove": "Ukloni s liste", "lists.delete": "Izbriši listu", "lists.edit": "Uredi listu", - "lists.edit.submit": "Promijeni naslov", - "lists.new.create": "Dodaj listu", - "lists.new.title_placeholder": "Naziv nove liste", "lists.replies_policy.followed": "Bilo koji praćeni korisnik", "lists.replies_policy.list": "Članovi liste", "lists.replies_policy.none": "Nitko", - "lists.search": "Traži među praćenim ljudima", - "lists.subheading": "Vaše liste", "navigation_bar.about": "O aplikaciji", "navigation_bar.advanced_interface": "Otvori u naprednom web sučelju", "navigation_bar.blocks": "Blokirani korisnici", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 2ba7aef34b..9a76a21e93 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Jelenleg nem található semmi ezzel a hashtaggel.", "empty_column.home": "A saját idővonalad üres! Kövess további embereket ennek megtöltéséhez.", "empty_column.list": "A lista jelenleg üres. Ha a listatagok bejegyzést tesznek közzé, itt fog megjelenni.", - "empty_column.lists": "Még nincs egyetlen listád sem. Ha létrehozol egyet, itt fog megjelenni.", "empty_column.mutes": "Még egy felhasználót sem némítottál le.", "empty_column.notification_requests": "Minden tiszta! Itt nincs semmi. Ha új értesítéseket kapsz, azok itt jelennek meg a beállításoknak megfelelően.", "empty_column.notifications": "Jelenleg még nincsenek értesítéseid. Ha mások kapcsolatba lépnek veled, ezek itt lesznek láthatóak.", @@ -465,20 +464,11 @@ "link_preview.author": "{name} szerint", "link_preview.more_from_author": "Több tőle: {name}", "link_preview.shares": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}", - "lists.account.add": "Hozzáadás a listához", - "lists.account.remove": "Eltávolítás a listából", "lists.delete": "Lista törlése", "lists.edit": "Lista szerkesztése", - "lists.edit.submit": "Cím megváltoztatása", - "lists.exclusive": "Ezen bejegyzések elrejtése a kezdőoldalról", - "lists.new.create": "Lista hozzáadása", - "lists.new.title_placeholder": "Új lista címe", "lists.replies_policy.followed": "Bármely követett felhasználó", "lists.replies_policy.list": "A lista tagjai", "lists.replies_policy.none": "Senki", - "lists.replies_policy.title": "Nekik mutassuk a válaszokat:", - "lists.search": "Keresés a követett emberek között", - "lists.subheading": "Saját listák", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés…", "media_gallery.hide": "Elrejtés", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 9e5ae79045..b5faf7e720 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -174,7 +174,6 @@ "empty_column.hashtag": "Այս պիտակով դեռ ոչինչ չկայ։", "empty_column.home": "Քո հիմնական հոսքը դատարկ է։ Այցելի՛ր {public}ը կամ օգտուիր որոնումից՝ այլ մարդկանց հանդիպելու համար։", "empty_column.list": "Այս ցանկում դեռ ոչինչ չկայ։ Երբ ցանկի անդամներից որեւէ մէկը նոր գրառում անի, այն կը յայտնուի այստեղ։", - "empty_column.lists": "Դուք դեռ չունէք ստեղծած ցանկ։ Ցանկ ստեղծելուն պէս այն կը յայտնուի այստեղ։", "empty_column.mutes": "Առայժմ ոչ ոքի չէք լռեցրել։", "empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։", "empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։", @@ -273,19 +272,11 @@ "lightbox.close": "Փակել", "lightbox.next": "Յաջորդ", "lightbox.previous": "Նախորդ", - "lists.account.add": "Աւելացնել ցանկին", - "lists.account.remove": "Հանել ցանկից", "lists.delete": "Ջնջել ցանկը", "lists.edit": "Փոփոխել ցանկը", - "lists.edit.submit": "Փոխել վերնագիրը", - "lists.new.create": "Աւելացնել ցանկ", - "lists.new.title_placeholder": "Նոր ցանկի վերնագիր", "lists.replies_policy.followed": "Ցանկացած հետեւող օգտատէր", "lists.replies_policy.list": "Ցանկի անդամներ", "lists.replies_policy.none": "Ոչ ոք", - "lists.replies_policy.title": "Ցուցադրել պատասխանները՝", - "lists.search": "Փնտրել քո հետեւած մարդկանց մէջ", - "lists.subheading": "Քո ցանկերը", "load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}", "navigation_bar.about": "Մասին", "navigation_bar.blocks": "Արգելափակուած օգտատէրեր", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 402829817f..891c293d50 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Il non ha ancora alcun cosa in iste hashtag.", "empty_column.home": "Tu chronologia de initio es vacue! Seque plus personas pro plenar lo.", "empty_column.list": "Iste lista es ancora vacue. Quando le membros de iste lista publica nove messages, illos apparera hic.", - "empty_column.lists": "Tu non ha ancora listas. Quando tu crea un, illo apparera hic.", "empty_column.mutes": "Tu non ha ancora silentiate alcun usator.", "empty_column.notification_requests": "Iste lista es toto vacue! Quando tu recipe notificationes, illos apparera hic como configurate in tu parametros.", "empty_column.notifications": "Tu non ha ancora notificationes. Quando altere personas interage con te, tu lo videra hic.", @@ -465,20 +464,11 @@ "link_preview.author": "Per {name}", "link_preview.more_from_author": "Plus de {name}", "link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}", - "lists.account.add": "Adder al lista", - "lists.account.remove": "Remover del lista", "lists.delete": "Deler lista", "lists.edit": "Modificar lista", - "lists.edit.submit": "Cambiar titulo", - "lists.exclusive": "Celar iste messages sur le pagina de initio", - "lists.new.create": "Adder lista", - "lists.new.title_placeholder": "Nove titulo del lista", "lists.replies_policy.followed": "Qualcunque usator sequite", "lists.replies_policy.list": "Membros del lista", "lists.replies_policy.none": "Nemo", - "lists.replies_policy.title": "Monstrar responsas a:", - "lists.search": "Cercar inter le gente que tu seque", - "lists.subheading": "Tu listas", "load_pending": "{count, plural, one {# nove entrata} other {# nove entratas}}", "loading_indicator.label": "Cargante…", "media_gallery.hide": "Celar", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 4b43363960..c966ea0ab0 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -267,7 +267,6 @@ "empty_column.hashtag": "Tidak ada apa pun dalam hashtag ini.", "empty_column.home": "Linimasa anda kosong! Kunjungi {public} atau gunakan pencarian untuk memulai dan bertemu pengguna lain.", "empty_column.list": "Belum ada apa pun di daftar ini. Ketika anggota dari daftar ini mengirim kiriman baru, mereka akan tampil di sini.", - "empty_column.lists": "Anda belum memiliki daftar. Ketika Anda membuatnya, maka akan muncul di sini.", "empty_column.mutes": "Anda belum membisukan siapa pun.", "empty_column.notifications": "Anda belum memiliki notifikasi. Ketika orang lain berinteraksi dengan Anda, Anda akan melihatnya di sini.", "empty_column.public": "Tidak ada apa pun di sini! Tulis sesuatu, atau ikuti pengguna lain dari server lain untuk mengisi ini", @@ -393,19 +392,11 @@ "limited_account_hint.action": "Tetap tampilkan profil", "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator {domain}.", "link_preview.author": "Oleh {name}", - "lists.account.add": "Tambah ke daftar", - "lists.account.remove": "Hapus dari daftar", "lists.delete": "Hapus daftar", "lists.edit": "Sunting daftar", - "lists.edit.submit": "Ubah judul", - "lists.new.create": "Tambah daftar", - "lists.new.title_placeholder": "Judul daftar baru", "lists.replies_policy.followed": "Siapa pun pengguna yang diikuti", "lists.replies_policy.list": "Anggota di daftar tersebut", "lists.replies_policy.none": "Tidak ada satu pun", - "lists.replies_policy.title": "Tampilkan balasan ke:", - "lists.search": "Cari di antara orang yang Anda ikuti", - "lists.subheading": "Daftar Anda", "load_pending": "{count, plural, other {# item baru}}", "loading_indicator.label": "Memuat…", "moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index f58cf1c71c..2be72b0488 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -253,7 +253,6 @@ "empty_column.hashtag": "Hay nullcos en ti-ci hashtag ancor.", "empty_column.home": "Tui hemal témpor-linea es vacui! Sequer plu gente por plenar it.", "empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.", - "empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.", "empty_column.mutes": "Tu ancor ha silentiat null usatores.", "empty_column.notification_requests": "Omnicos clar! Hay necos ci. Nov notificationes va venir ci quande tu recive les secun tui parametres.", "empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.", @@ -399,20 +398,11 @@ "limited_account_hint.action": "Monstrar profil totvez", "limited_account_hint.title": "Ti-ci profil ha esset celat del moderatores de {domain}.", "link_preview.author": "De {name}", - "lists.account.add": "Adjunter a liste", - "lists.account.remove": "Remover de liste", "lists.delete": "Deleter liste", "lists.edit": "Redacter liste", - "lists.edit.submit": "Changear titul", - "lists.exclusive": "Celar ti-ci postas del hemal témpor-linea", - "lists.new.create": "Adjunter liste", - "lists.new.title_placeholder": "Titul del nov liste", "lists.replies_policy.followed": "Quelcunc sequet usator", "lists.replies_policy.list": "Membres del liste", "lists.replies_policy.none": "Nequi", - "lists.replies_policy.title": "Monstrar responses a:", - "lists.search": "Serchar inter li persones quem tu seque", - "lists.subheading": "Tui listes", "load_pending": "{count, plural, one {# nov element} other {# nov elementes}}", "loading_indicator.label": "Cargant…", "moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index bcd62187af..60cb9b7c36 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -110,7 +110,6 @@ "lightbox.close": "Mechie", "lists.delete": "Hichapụ ndepụta", "lists.edit": "Dezie ndepụta", - "lists.subheading": "Ndepụta gị", "navigation_bar.about": "Maka", "navigation_bar.bookmarks": "Ebenrụtụakā", "navigation_bar.discover": "Chọpụta", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index f9173b65f9..8e2ea3dea4 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -271,7 +271,6 @@ "empty_column.hashtag": "Esas ankore nulo en ta gretovorto.", "empty_column.home": "Vua hemtempolineo esas vakua! Sequez plu multa personi por plenigar lu. {suggestions}", "empty_column.list": "There is nothing in this list yet.", - "empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.", "empty_column.mutes": "Vu ne silencigis irga uzanti til nun.", "empty_column.notification_requests": "Finis. Kande vu recevas nova savigi, oli aparos hike segun vua preferaji.", "empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.", @@ -441,20 +440,11 @@ "link_preview.author": "Da {name}", "link_preview.more_from_author": "Plua de {name}", "link_preview.shares": "{count, plural,one {{counter} posto} other {{counter} posti}}", - "lists.account.add": "Insertez a listo", - "lists.account.remove": "Efacez de listo", "lists.delete": "Efacez listo", "lists.edit": "Modifikez listo", - "lists.edit.submit": "Chanjez titulo", - "lists.exclusive": "Celar ca posti del hemo", - "lists.new.create": "Insertez listo", - "lists.new.title_placeholder": "Nova listotitulo", "lists.replies_policy.followed": "Irga sequita uzanto", "lists.replies_policy.list": "Membro di listo", "lists.replies_policy.none": "Nulu", - "lists.replies_policy.title": "Montrez respondi a:", - "lists.search": "Trovez inter personi quon vu sequas", - "lists.subheading": "Vua listi", "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}", "loading_indicator.label": "Kargante…", "media_gallery.hide": "Celez", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index ecfc642969..ce4c21e18b 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -140,13 +140,16 @@ "column.blocks": "Útilokaðir notendur", "column.bookmarks": "Bókamerki", "column.community": "Staðvær tímalína", + "column.create_list": "Búa til lista", "column.direct": "Einkaspjall", "column.directory": "Skoða notendasnið", "column.domain_blocks": "Útilokuð lén", + "column.edit_list": "Breyta lista", "column.favourites": "Eftirlæti", "column.firehose": "Bein streymi", "column.follow_requests": "Beiðnir um að fylgjast með", "column.home": "Heim", + "column.list_members": "Sýsla með meðlimi listans", "column.lists": "Listar", "column.mutes": "Þaggaðir notendur", "column.notifications": "Tilkynningar", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Það er ekkert ennþá undir þessu myllumerki.", "empty_column.home": "Heimatímalínan þín er tóm! Fylgstu með fleira fólki til að fylla hana. {suggestions}", "empty_column.list": "Það er ennþá ekki neitt á þessum lista. Þegar meðlimir á listanum senda inn nýjar færslur, munu þær birtast hér.", - "empty_column.lists": "Þú ert ennþá ekki með neina lista. Þegar þú býrð til einhvern lista, munu hann birtast hér.", "empty_column.mutes": "Þú hefur ekki þaggað niður í neinum notendum ennþá.", "empty_column.notification_requests": "Allt hreint! Það er ekkert hér. Þegar þú færð nýjar tilkynningar, munu þær birtast hér í samræmi við stillingarnar þínar.", "empty_column.notifications": "Þú ert ekki ennþá með neinar tilkynningar. Vertu í samskiptum við aðra til að umræður fari af stað.", @@ -465,20 +467,32 @@ "link_preview.author": "Frá {name}", "link_preview.more_from_author": "Meira frá {name}", "link_preview.shares": "{count, plural, one {{counter} færsla} other {{counter} færslur}}", - "lists.account.add": "Bæta á lista", - "lists.account.remove": "Fjarlægja af lista", + "lists.add_member": "Bæta við", + "lists.add_to_list": "Bæta á lista", + "lists.add_to_lists": "Bæta {name} á lista", + "lists.create": "Búa til", + "lists.create_a_list_to_organize": "Búðu til nýjan lista til að skipuleggja heimastreymið þitt", + "lists.create_list": "Búa til lista", "lists.delete": "Eyða lista", + "lists.done": "Lokið", "lists.edit": "Breyta lista", - "lists.edit.submit": "Breyta titli", - "lists.exclusive": "Hylja þessar færslur í heimastreymi", - "lists.new.create": "Bæta við lista", - "lists.new.title_placeholder": "Titill á nýjum lista", + "lists.exclusive": "Fela meðlimi í heimastreyminu", + "lists.exclusive_hint": "Ef einhver er á þessum lista, geturðu falið viðkomandi í heimastreyminu þínu til að komast hjá því að sjá færslurnar þeirra í tvígang.", + "lists.find_users_to_add": "Finndu notendur til að bæta við", + "lists.list_members": "Meðlimir lista", + "lists.list_members_count": "{count, plural, one {# meðlimur} other {# meðlimir}}", + "lists.list_name": "Heiti lista", + "lists.new_list_name": "Heiti á nýjum lista", + "lists.no_lists_yet": "Ennþá engir listar.", + "lists.no_members_yet": "Ennþá engir meðlimir.", + "lists.no_results_found": "Engar niðurstöður fundust.", + "lists.remove_member": "Fjarlægja", "lists.replies_policy.followed": "Allra notenda sem fylgst er með", "lists.replies_policy.list": "Meðlima listans", "lists.replies_policy.none": "Engra", - "lists.replies_policy.title": "Sýna svör til:", - "lists.search": "Leita meðal þeirra sem þú fylgist með", - "lists.subheading": "Listarnir þínir", + "lists.save": "Vista", + "lists.search_placeholder": "Leitaðu að fólki sem þú fylgist með", + "lists.show_replies_to": "Hafa með svör frá meðlimum lista til", "load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}", "loading_indicator.label": "Hleð inn…", "media_gallery.hide": "Fela", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index c4fcbdc3a4..d947b59eae 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -289,7 +289,6 @@ "empty_column.hashtag": "Non c'è ancora nulla in questo hashtag.", "empty_column.home": "La cronologia della tua home è vuota! Segui altre persone per riempirla. {suggestions}", "empty_column.list": "Non c'è ancora nulla in questo elenco. Quando i membri di questo elenco pubblicheranno nuovi post, appariranno qui.", - "empty_column.lists": "Non hai ancora nessun elenco. Quando ne creerai uno, apparirà qui.", "empty_column.mutes": "Non hai ancora silenziato alcun utente.", "empty_column.notification_requests": "Tutto chiaro! Non c'è niente qui. Quando ricevi nuove notifiche, verranno visualizzate qui in base alle tue impostazioni.", "empty_column.notifications": "Non hai ancora nessuna notifica. Quando altre persone interagiranno con te, le vedrai qui.", @@ -462,20 +461,11 @@ "link_preview.author": "Di {name}", "link_preview.more_from_author": "Altro da {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} post}}", - "lists.account.add": "Aggiungi all'elenco", - "lists.account.remove": "Rimuovi dall'elenco", "lists.delete": "Elimina elenco", "lists.edit": "Modifica elenco", - "lists.edit.submit": "Cambia il titolo", - "lists.exclusive": "Nascondi questi post dalla home", - "lists.new.create": "Aggiungi lista", - "lists.new.title_placeholder": "Titolo del nuovo elenco", "lists.replies_policy.followed": "Qualsiasi utente seguito", "lists.replies_policy.list": "Membri dell'elenco", "lists.replies_policy.none": "Nessuno", - "lists.replies_policy.title": "Mostra risposte a:", - "lists.search": "Cerca tra le persone che segui", - "lists.subheading": "Le tue liste", "load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}", "loading_indicator.label": "Caricamento…", "media_gallery.hide": "Nascondi", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index b839764242..1f891b9f90 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -291,7 +291,6 @@ "empty_column.hashtag": "このハッシュタグはまだ使われていません。", "empty_column.home": "ホームタイムラインはまだ空っぽです。だれかをフォローして埋めてみましょう。", "empty_column.list": "このリストにはまだなにもありません。このリストのメンバーが新しい投稿をするとここに表示されます。", - "empty_column.lists": "まだリストがありません。リストを作るとここに表示されます。", "empty_column.mutes": "まだ誰もミュートしていません。", "empty_column.notification_requests": "ここに表示するものはありません。新しい通知を受け取ったとき、フィルタリング設定で通知がブロックされたアカウントがある場合はここに表示されます。", "empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。", @@ -464,20 +463,11 @@ "link_preview.author": "{name}", "link_preview.more_from_author": "{name}さんの投稿をもっと読む", "link_preview.shares": "{count, plural, other {{counter}件の投稿}}", - "lists.account.add": "リストに追加", - "lists.account.remove": "リストから外す", "lists.delete": "リストを削除", "lists.edit": "リストを編集", - "lists.edit.submit": "タイトルを変更", - "lists.exclusive": "ホームタイムラインからこれらの投稿を非表示にする", - "lists.new.create": "リストを作成", - "lists.new.title_placeholder": "新規リスト名", "lists.replies_policy.followed": "フォロー中のユーザー全員", "lists.replies_policy.list": "リストのメンバー", "lists.replies_policy.none": "表示しない", - "lists.replies_policy.title": "リプライを表示:", - "lists.search": "フォローしている人の中から検索", - "lists.subheading": "あなたのリスト", "load_pending": "{count}件の新着", "loading_indicator.label": "読み込み中…", "media_gallery.hide": "隠す", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index fc0ed0730d..b38cc0e44a 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -145,14 +145,8 @@ "lightbox.close": "დახურვა", "lightbox.next": "შემდეგი", "lightbox.previous": "წინა", - "lists.account.add": "სიაში დამატება", - "lists.account.remove": "სიიდან ამოშლა", "lists.delete": "სიის წაშლა", "lists.edit": "სიის შეცვლა", - "lists.new.create": "სიის დამატება", - "lists.new.title_placeholder": "ახალი სიის სათაური", - "lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით", - "lists.subheading": "თქვენი სიები", "navigation_bar.blocks": "დაბლოკილი მომხმარებლები", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 9cf94f2606..74d8e5a194 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -219,7 +219,6 @@ "empty_column.hashtag": "Ar tura ulac kra n ugbur yesɛan assaɣ ɣer uhacṭag-agi.", "empty_column.home": "Tasuddemt tagejdant n yisallen d tilemt! Ẓer {public} neɣ nadi ad tafeḍ imseqdacen-nniḍen ad ten-ḍefṛeḍ.", "empty_column.list": "Ar tura ur yelli kra deg umuɣ-a. Ad d-yettwasken da ticki iɛeggalen n wumuɣ-a suffɣen-d kra.", - "empty_column.lists": "Ulac ɣur-k·m kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.", "empty_column.mutes": "Ulac ɣur-k·m imseqdacen i yettwasgugmen.", "empty_column.notifications": "Ulac ɣur-k·m alɣuten. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.", "empty_column.public": "Ulac kra da! Aru kra, neɣ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt", @@ -341,20 +340,11 @@ "link_preview.author": "S-ɣur {name}", "link_preview.more_from_author": "Ugar sɣur {name}", "link_preview.shares": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", - "lists.account.add": "Rnu ɣer tebdart", - "lists.account.remove": "Kkes seg tebdart", "lists.delete": "Kkes tabdart", "lists.edit": "Ẓreg tabdart", - "lists.edit.submit": "Beddel azwel", - "lists.exclusive": "Ffer tisuffaɣ-a seg ugejdan", - "lists.new.create": "Rnu tabdart", - "lists.new.title_placeholder": "Azwel amaynut n tebdart", "lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren", "lists.replies_policy.list": "Iɛeggalen n tebdart", "lists.replies_policy.none": "Ula yiwen·t", - "lists.replies_policy.title": "Ssken-d tiririyin i:", - "lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ", - "lists.subheading": "Tibdarin-ik·im", "load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}", "loading_indicator.label": "Yessalay-d …", "media_gallery.hide": "Seggelmes", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index f146fc652d..fad2807ffa 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -149,7 +149,6 @@ "empty_column.hashtag": "Бұндай хэштегпен әлі ешкім жазбапты.", "empty_column.home": "Әлі ешкімге жазылмапсыз. Бәлкім {public} жазбаларын қарап немесе іздеуді қолданып көрерсіз.", "empty_column.list": "Бұл тізімде ештеңе жоқ.", - "empty_column.lists": "Әзірше ешқандай тізіміңіз жоқ. Біреуін құрғаннан кейін осы жерде көрінетін болады.", "empty_column.mutes": "Әзірше ешқандай үнсізге қойылған қолданушы жоқ.", "empty_column.notifications": "Әзірше ешқандай ескертпе жоқ. Басқалармен араласуды бастаңыз және пікірталастарға қатысыңыз.", "empty_column.public": "Ештеңе жоқ бұл жерде! Өзіңіз бастап жазып көріңіз немесе басқаларға жазылыңыз", @@ -212,15 +211,8 @@ "lightbox.close": "Жабу", "lightbox.next": "Келесі", "lightbox.previous": "Алдыңғы", - "lists.account.add": "Тізімге қосу", - "lists.account.remove": "Тізімнен шығару", "lists.delete": "Тізімді өшіру", "lists.edit": "Тізімді өңдеу", - "lists.edit.submit": "Тақырыбын өзгерту", - "lists.new.create": "Тізім құру", - "lists.new.title_placeholder": "Жаңа тізім аты", - "lists.search": "Сіз іздеген адамдар арасында іздеу", - "lists.subheading": "Тізімдеріңіз", "load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}", "navigation_bar.blocks": "Бұғатталғандар", "navigation_bar.bookmarks": "Бетбелгілер", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 43f1e59e5e..ac19040d3a 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "이 해시태그는 아직 사용되지 않았습니다.", "empty_column.home": "당신의 홈 타임라인은 비어있습니다! 더 많은 사람을 팔로우하여 채워보세요.", "empty_column.list": "리스트에 아직 아무것도 없습니다. 리스트의 누군가가 게시물을 올리면 여기에 나타납니다.", - "empty_column.lists": "아직 리스트가 없습니다. 리스트를 만들면 여기에 나타납니다.", "empty_column.mutes": "아직 아무도 뮤트하지 않았습니다.", "empty_column.notification_requests": "깔끔합니다! 여기엔 아무 것도 없습니다. 알림을 받게 되면 설정에 따라 여기에 나타나게 됩니다.", "empty_column.notifications": "아직 알림이 없습니다. 다른 사람들이 당신에게 반응했을 때, 여기에서 볼 수 있습니다.", @@ -465,20 +464,11 @@ "link_preview.author": "{name}", "link_preview.more_from_author": "{name} 프로필 보기", "link_preview.shares": "{count, plural, other {{counter} 개의 게시물}}", - "lists.account.add": "리스트에 추가", - "lists.account.remove": "리스트에서 제거", "lists.delete": "리스트 삭제", "lists.edit": "리스트 편집", - "lists.edit.submit": "제목 수정", - "lists.exclusive": "홈에서 이 게시물들 숨기기", - "lists.new.create": "리스트 추가", - "lists.new.title_placeholder": "새 리스트의 이름", "lists.replies_policy.followed": "팔로우 한 사용자 누구나", "lists.replies_policy.list": "리스트의 구성원", "lists.replies_policy.none": "모두 제외", - "lists.replies_policy.title": "답글 표시:", - "lists.search": "팔로우 중인 사람들 중에서 찾기", - "lists.subheading": "리스트", "load_pending": "{count, plural, other {#}} 개의 새 항목", "loading_indicator.label": "불러오는 중...", "media_gallery.hide": "숨기기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 86ecf98446..d15fbb6762 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -190,7 +190,6 @@ "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.", "empty_column.home": "Rojeva demnameya te vala ye! Ji bona tijîkirinê bêtir mirovan bişopîne. {suggestions}", "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.", - "empty_column.lists": "Hîn tu rêzokên te tune ne. Dema yekî çê bikî, ew ê li vir xuya bibe.", "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.", "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.", "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin", @@ -297,19 +296,11 @@ "lightbox.previous": "Paş", "limited_account_hint.action": "Bi heman awayî profîlê nîşan bide", "limited_account_hint.title": "Profîl ji aliyê rêveberên {domain}ê ve hatiye veşartin.", - "lists.account.add": "Li lîsteyê zêde bike", - "lists.account.remove": "Ji lîsteyê rake", "lists.delete": "Lîsteyê jê bibe", "lists.edit": "Lîsteyê serrast bike", - "lists.edit.submit": "Sernavê biguherîne", - "lists.new.create": "Li lîsteyê zêde bike", - "lists.new.title_placeholder": "Sernavê lîsteya nû", "lists.replies_policy.followed": "Bikarhênereke şopandî", "lists.replies_policy.list": "Endamên lîsteyê", "lists.replies_policy.none": "Ne yek", - "lists.replies_policy.title": "Bersivan nîşan bide:", - "lists.search": "Di navbera kesên ku te dişopînin bigere", - "lists.subheading": "Lîsteyên te", "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", "moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.", "navigation_bar.about": "Derbar", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index cef24aa3b7..49f8149f65 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -131,7 +131,6 @@ "empty_column.hashtag": "Nyns eus travyth y'n bòlnos ma hwath.", "empty_column.home": "Agas amserlin dre yw gwag! Holyewgh moy a dus dh'y lenwel. {suggestions}", "empty_column.list": "Nyns eus travyth y'n rol ma hwath. Pan wra eseli an rol ma dyllo postow nowydh, i a wra omdhiskwedhes omma.", - "empty_column.lists": "Nyns eus dhywgh rolyow hwath. Pan wrewgh onan, hi a wra omdhiskwedhes omma.", "empty_column.mutes": "Ny wrussowgh tawhe devnydhyoryon vyth hwath.", "empty_column.notifications": "Nyns eus dhywgh gwarnyansow hwath. Pan wra tus erel ynterweythresa genowgh, hwi a'n gwel omma.", "empty_column.public": "Nyns eus travyth omma! Skrifewgh neppyth yn poblek, po holyewgh tus a leurennow erel dre leuv dh'y lenwel", @@ -197,19 +196,11 @@ "lightbox.close": "Degea", "lightbox.next": "Nessa", "lightbox.previous": "Kynsa", - "lists.account.add": "Keworra dhe rol", - "lists.account.remove": "Removya a rol", "lists.delete": "Dilea rol", "lists.edit": "Golegi rol", - "lists.edit.submit": "Chanjya titel", - "lists.new.create": "Keworra rol", - "lists.new.title_placeholder": "Titel rol nowydh", "lists.replies_policy.followed": "Py devnydhyer holys pynag", "lists.replies_policy.list": "Eseli an rol", "lists.replies_policy.none": "Nagonan", - "lists.replies_policy.title": "Diskwedhes gorthebow orth:", - "lists.search": "Hwilas yn-mysk tus a holyewgh", - "lists.subheading": "Agas rolyow", "load_pending": "{count, plural, one {# daklennowydh} other {# a daklennow nowydh}}", "navigation_bar.blocks": "Devnydhyoryon lettys", "navigation_bar.bookmarks": "Folennosow", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index 55678dbdf8..fc36d89272 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -81,7 +81,6 @@ "empty_column.followed_tags": "Nōn adhūc aliquem hastāginem secūtus es. Cum id fēceris, hic ostendētur.", "empty_column.home": "Tua linea temporum domesticus vacua est! Sequere plures personas ut eam compleas.", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "Nōn adhūc habēs ullo tabellās. Cum creās, hīc apparēbunt.", "empty_column.mutes": "Nondum quemquam usorem tacuisti.", "empty_column.notification_requests": "Omnia clara sunt! Nihil hic est. Cum novās notificātiōnēs accipīs, hic secundum tua praecepta apparebunt.", "empty_column.notifications": "Nōn adhūc habēs ullo notificātiōnēs. Cum aliī tē interagunt, hīc videbis.", @@ -138,9 +137,6 @@ "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "Claudere", "lightbox.next": "Secundum", - "lists.account.add": "Adde ad tabellās", - "lists.new.create": "Addere tabella", - "lists.subheading": "Tuae tabulae", "load_pending": "{count, plural, one {# novum item} other {# nova itema}}", "moved_to_account_banner.text": "Tua ratione {disabledAccount} interdum reposita est, quod ad {movedToAccount} migrāvisti.", "mute_modal.you_wont_see_mentions": "Non videbis nuntios quī eōs commemorant.", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 0a5f82aee3..9f4f6e6cb9 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -270,7 +270,6 @@ "empty_column.hashtag": "Ainda no ay niente en esta etiketa.", "empty_column.home": "Tu linya de tiempo esta vaziya! Sige a mas personas para inchirla.", "empty_column.list": "Ainda no ay niente en esta lista. Kuando miembros de esta lista publiken muevas publikasyones, se amostraran aki.", - "empty_column.lists": "Ainda no tienes dinguna lista. Kuando kriyes una, aperesera aki.", "empty_column.mutes": "Ainda no tienes silensiado a dingun utilizador.", "empty_column.notifications": "Ainda no tienes dingun avizo. Kuando otras personas enteraktuen kontigo, se amostraran aki.", "empty_column.public": "No ay niente aki! Eskrive algo publikamente o manualmente sige utilizadores de otros sirvidores para inchirlo", @@ -433,20 +432,11 @@ "link_preview.author": "Publikasyon de {name}", "link_preview.more_from_author": "Mas de {name}", "link_preview.shares": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}", - "lists.account.add": "Adjusta a lista", - "lists.account.remove": "Kita de lista", "lists.delete": "Efasa lista", "lists.edit": "Edita lista", - "lists.edit.submit": "Troka titolo", - "lists.exclusive": "Eskonder estas publikasyones de linya prinsipala", - "lists.new.create": "Adjusta lista", - "lists.new.title_placeholder": "Titolo de mueva lista", "lists.replies_policy.followed": "Kualseker utilizador segido", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Dinguno", - "lists.replies_policy.title": "Amostra repuestas a:", - "lists.search": "Bushka entre personas a las kualas siges", - "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# muevo elemento} other {# muevos elementos}}", "loading_indicator.label": "Eskargando…", "media_gallery.hide": "Eskonde", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 6d4f46f1d4..f9080f96e5 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -140,13 +140,16 @@ "column.blocks": "Užblokuoti naudotojai", "column.bookmarks": "Žymės", "column.community": "Vietinė laiko skalė", + "column.create_list": "Kurti sąrašą", "column.direct": "Privatūs paminėjimai", "column.directory": "Naršyti profilius", "column.domain_blocks": "Užblokuoti serveriai", + "column.edit_list": "Redaguoti sąrašą", "column.favourites": "Mėgstami", "column.firehose": "Tiesioginiai srautai", "column.follow_requests": "Sekimo prašymai", "column.home": "Pagrindinis", + "column.list_members": "Tvarkyti sąrašo narius", "column.lists": "Sąrašai", "column.mutes": "Nutildyti naudotojai", "column.notifications": "Pranešimai", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Nėra nieko šiame saitažodyje kol kas.", "empty_column.home": "Tavo pagrindinio laiko skalė tuščia. Sek daugiau žmonių, kad ją užpildytum.", "empty_column.list": "Nėra nieko šiame sąraše kol kas. Kai šio sąrašo nariai paskelbs naujų įrašų, jie bus rodomi čia.", - "empty_column.lists": "Dar neturi jokių sąrašų. Kai jį sukursi, jis bus rodomas čia.", "empty_column.mutes": "Dar nesi nutildęs (-usi) nė vieno naudotojo.", "empty_column.notification_requests": "Viskas švaru! Čia nieko nėra. Kai gausi naujų pranešimų, jie bus rodomi čia pagal tavo nustatymus.", "empty_column.notifications": "Dar neturi jokių pranešimų. Kai kiti žmonės su tavimi sąveikaus, matysi tai čia.", @@ -465,20 +467,32 @@ "link_preview.author": "Sukūrė {name}", "link_preview.more_from_author": "Daugiau iš {name}", "link_preview.shares": "{count, plural, one {{counter} įrašas} few {{counter} įrašai} many {{counter} įrašo} other {{counter} įrašų}}", - "lists.account.add": "Pridėti į sąrašą", - "lists.account.remove": "Pašalinti iš sąrašo", + "lists.add_member": "Pridėti", + "lists.add_to_list": "Pridėti į sąrašą", + "lists.add_to_lists": "Pridėti {name} į sąrašą", + "lists.create": "Kurti", + "lists.create_a_list_to_organize": "Sukurkite naują sąrašą, kad sutvarkytumėte pagrindinį srautą", + "lists.create_list": "Kurti sąrašą", "lists.delete": "Ištrinti sąrašą", + "lists.done": "Atlikta", "lists.edit": "Redaguoti sąrašą", - "lists.edit.submit": "Keisti pavadinimą", - "lists.exclusive": "Slėpti šiuos įrašus iš pagrindinio", - "lists.new.create": "Pridėti sąrašą", - "lists.new.title_placeholder": "Naujas sąrašo pavadinimas", + "lists.exclusive": "Slėpti narius pagrindiniame", + "lists.exclusive_hint": "Jei kas nors yra šiame sąraše, paslėpkite juos pagrindinio srauto laiko skalėje, kad nematytumėte jų įrašus dukart.", + "lists.find_users_to_add": "Raskite naudotojų, kurių pridėti", + "lists.list_members": "Sąrašo nariai", + "lists.list_members_count": "{count, plural, one {# narys} few {# nariai} many {# nario} other {# narių}}", + "lists.list_name": "Sąrašo pavadinimas", + "lists.new_list_name": "Naujas sąrašo pavadinimas", + "lists.no_lists_yet": "Kol kas nėra sąrašų.", + "lists.no_members_yet": "Kol kas nėra narių.", + "lists.no_results_found": "Rezultatų nerasta.", + "lists.remove_member": "Šalinti", "lists.replies_policy.followed": "Bet kuriam sekamam naudotojui", "lists.replies_policy.list": "Sąrašo nariams", "lists.replies_policy.none": "Nei vienam", - "lists.replies_policy.title": "Rodyti atsakymus:", - "lists.search": "Ieškoti tarp sekamų žmonių", - "lists.subheading": "Tavo sąrašai", + "lists.save": "Išsaugoti", + "lists.search_placeholder": "Ieškokite asmenų, kuriuos sekate", + "lists.show_replies_to": "Įtraukti atsakymus iš sąrašo narių į", "load_pending": "{count, plural, one {# naujas elementas} few {# nauji elementai} many {# naujo elemento} other {# naujų elementų}}", "loading_indicator.label": "Kraunama…", "media_gallery.hide": "Slėpti", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index d6fcb34828..542231f05f 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -262,7 +262,6 @@ "empty_column.hashtag": "Ar šo tēmturi nekas nav atrodams.", "empty_column.home": "Tava mājas laikjosla ir tukša. Seko vairāk cilvēkiem, lai to piepildītu!", "empty_column.list": "Pagaidām šajā sarakstā nekā nav. Kad šī saraksta dalībnieki ievietos jaunus ierakstus, tie parādīsies šeit.", - "empty_column.lists": "Pašlaik Tev nav neviena saraksta. Kad tādu izveidosi, tas parādīsies šeit.", "empty_column.mutes": "Neviens lietotājs vēl nav apklusināts.", "empty_column.notifications": "Tev vēl nav paziņojumu. Kad citi cilvēki ar Tevi mijiedarbosies, Tu to redzēsi šeit.", "empty_column.public": "Šeit nekā nav. Ieraksti kaut ko publiski vai seko lietotājiem no citiem serveriem, lai iegūtu saturu", @@ -405,20 +404,11 @@ "limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.", "link_preview.author": "Pēc {name}", "link_preview.more_from_author": "Vairāk no {name}", - "lists.account.add": "Pievienot sarakstam", - "lists.account.remove": "Noņemt no saraksta", "lists.delete": "Izdzēst sarakstu", "lists.edit": "Labot sarakstu", - "lists.edit.submit": "Mainīt virsrakstu", - "lists.exclusive": "Nerādīt šos ierakstus sākumā", - "lists.new.create": "Pievienot sarakstu", - "lists.new.title_placeholder": "Jaunā saraksta nosaukums", "lists.replies_policy.followed": "Jebkuram sekotajam lietotājam", "lists.replies_policy.list": "Saraksta dalībniekiem", "lists.replies_policy.none": "Nevienam", - "lists.replies_policy.title": "Rādīt atbildes:", - "lists.search": "Meklēt starp cilvēkiem, kuriem tu seko", - "lists.subheading": "Tavi saraksti", "load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}", "loading_indicator.label": "Ielādē…", "media_gallery.hide": "Paslēpt", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b7a2ad2a3f..de4f565a5f 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -275,17 +275,9 @@ "lightbox.previous": "പുറകോട്ട്", "limited_account_hint.action": "എന്നാലും രൂപരേഖ കാണിക്കുക", "link_preview.author": "{name}-നിന്നു്", - "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക", - "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക", "lists.delete": "പട്ടിക ഒഴിവാക്കുക", "lists.edit": "പട്ടിക തിരുത്തുക", - "lists.edit.submit": "തലക്കെട്ട് മാറ്റുക", - "lists.exclusive": "ഈ എഴുത്തുകൾ ആമുഖം നിന്നു് മറയ്ക്കുക", - "lists.new.create": "പുതിയ പട്ടിക ചേർക്കുക", - "lists.new.title_placeholder": "പുതിയ പട്ടിക തലക്കെട്ടു്", "lists.replies_policy.none": "ആരുമില്ല", - "lists.replies_policy.title": "ഇതിനുള്ള മറുപടികൾ കാണിക്കുക:", - "lists.subheading": "എന്റെ പട്ടികകൾ", "media_gallery.hide": "മറയ്ക്കുക", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index aa8169616e..363269541b 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -173,19 +173,11 @@ "lightbox.previous": "मागील", "limited_account_hint.action": "तरीही प्रोफाइल दाखवा", "limited_account_hint.title": "हे प्रोफाइल {domain} च्या नियंत्रकांनी लपवले आहे.", - "lists.account.add": "यादीमध्ये जोडा", - "lists.account.remove": "यादीमधून काढा", "lists.delete": "सूची हटवा", "lists.edit": "सूची संपादित करा", - "lists.edit.submit": "शीर्षक बदला", - "lists.new.create": "यादी जोडा", - "lists.new.title_placeholder": "नवीन सूची शीर्षक", "lists.replies_policy.followed": "कोणताही फॉलो केलेला वापरकर्ता", "lists.replies_policy.list": "यादीतील सदस्य", "lists.replies_policy.none": "कोणीच नाही", - "lists.replies_policy.title": "यांना उत्तरे दाखवा:", - "lists.search": "तुम्ही फॉलो करत असलेल्या लोकांमध्ये शोधा", - "lists.subheading": "तुमच्या याद्या", "load_pending": "{count, plural, one {# new item} other {# new items}}", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 9dea731397..f2af798d4e 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -229,7 +229,6 @@ "empty_column.hashtag": "Belum ada apa-apa dengan tanda pagar ini.", "empty_column.home": "Garis masa laman utama anda kosong! Ikuti lebih ramai orang untuk mengisinya. {suggestions}", "empty_column.list": "Tiada apa-apa di senarai ini lagi. Apabila ahli senarai ini menerbitkan hantaran baharu, ia akan dipaparkan di sini.", - "empty_column.lists": "Anda belum ada sebarang senarai. Apabila anda menciptanya, ia akan muncul di sini.", "empty_column.mutes": "Anda belum membisukan sesiapa.", "empty_column.notifications": "Anda belum ada sebarang pemberitahuan. Apabila orang lain berinteraksi dengan anda, ia akan muncul di sini.", "empty_column.public": "Tiada apa-apa di sini! Tulis sesuatu secara awam, atau ikuti pengguna daripada pelayan lain secara manual untuk mengisinya", @@ -366,20 +365,11 @@ "limited_account_hint.action": "Paparkan profil", "limited_account_hint.title": "Profil ini telah disembunyikan oleh moderator {domain}.", "link_preview.author": "Dengan {name}", - "lists.account.add": "Tambah ke senarai", - "lists.account.remove": "Buang daripada senarai", "lists.delete": "Padam senarai", "lists.edit": "Sunting senarai", - "lists.edit.submit": "Ubah tajuk", - "lists.exclusive": "Sembunyikan pos ini dari rumah", - "lists.new.create": "Tambah senarai", - "lists.new.title_placeholder": "Tajuk senarai baharu", "lists.replies_policy.followed": "Sesiapa yang diikuti", "lists.replies_policy.list": "Ahli-ahli dalam senarai", "lists.replies_policy.none": "Tiada sesiapa", - "lists.replies_policy.title": "Tunjukkan balasan kepada:", - "lists.search": "Cari dalam kalangan orang yang anda ikuti", - "lists.subheading": "Senarai anda", "load_pending": "{count, plural, one {# item baharu} other {# item baharu}}", "loading_indicator.label": "Memuatkan…", "moved_to_account_banner.text": "Akaun anda {disabledAccount} kini dinyahdayakan kerana anda berpindah ke {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index c97de73335..a82e56e6f2 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -215,7 +215,6 @@ "empty_column.hashtag": "ဤ hashtag တွင် မည်သည့်အရာမျှ မရှိသေးပါ။", "empty_column.home": "သင့်ပင်မစာမျက်နှာမှာ အလွတ်ဖြစ်နေပါသည်။ ဖြည့်ရန်အတွက် လူများကို စောင့်ကြည့်ပါ {suggestions}", "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "သင့်တွင် List မရှိသေးပါ။ List အသစ်ဖွင့်လျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်မည်", "empty_column.mutes": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ", "empty_column.notifications": "သတိပေးချက်မရှိသေးပါ။ သတိပေးချက်အသစ်ရှိလျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်သည်", "empty_column.public": "ဤနေရာတွင် မည်သည့်အရာမျှမရှိပါ။ တစ်ခုခုရေးပါ သို့မဟုတ် ဖြည့်စွက်ရန်အတွက် အခြားဆာဗာ အသုံးပြုသူများကို စောင့်ကြည့်ပါ။", @@ -344,20 +343,11 @@ "limited_account_hint.action": "ဘာပဲဖြစ်ဖြစ် ပရိုဖိုင်ကို ပြပါ", "limited_account_hint.title": "ဤပရိုဖိုင်ကို {domain} ၏ စိစစ်သူများမှ ဖျောက်ထားသည်။", "link_preview.author": "{name} ဖြင့်", - "lists.account.add": "စာရင်းထဲသို့ထည့်ပါ", - "lists.account.remove": "စာရင်းမှ ဖယ်ရှားလိုက်ပါ။", "lists.delete": "စာရင်းကိုဖျက်ပါ", "lists.edit": "စာရင်းကိုပြင်ဆင်ပါ", - "lists.edit.submit": "ခေါင်းစဥ် ပြောင်းလဲရန်", - "lists.exclusive": "ဤပို့စ်များကို ပင်မစာမျက်နှာတွင် မပြပါနှင့်", - "lists.new.create": "စာရင်းသွင်းပါ", - "lists.new.title_placeholder": "စာရင်းသစ်ခေါင်းစဥ်", "lists.replies_policy.followed": "မည်သည့်စောင့်ကြည့်သူမဆို", "lists.replies_policy.list": "စာရင်းထဲမှ အဖွဲ့ဝင်များ", "lists.replies_policy.none": "တစ်ယောက်မှမရှိပါ", - "lists.replies_policy.title": "ပြန်စာများကို ပြရန် -", - "lists.search": "မိမိဖောလိုးထားသူများမှရှာဖွေမည်", - "lists.subheading": "သင့်၏စာရင်းများ", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "လုပ်ဆောင်နေသည်…", "moved_to_account_banner.text": "{movedToAccount} အကောင့်သို့ပြောင်းလဲထားသဖြင့် {disabledAccount} အကောင့်မှာပိတ်ထားသည်", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index eb21d2ad1d..1828fc8f02 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -140,13 +140,16 @@ "column.blocks": "Geblokkeerde gebruikers", "column.bookmarks": "Bladwijzers", "column.community": "Lokale tijdlijn", + "column.create_list": "Lijst aanmaken", "column.direct": "Privéberichten", "column.directory": "Gebruikersgids", "column.domain_blocks": "Geblokkeerde servers", + "column.edit_list": "Lijst bewerken", "column.favourites": "Favorieten", "column.firehose": "Openbare tijdlijnen", "column.follow_requests": "Volgverzoeken", "column.home": "Start", + "column.list_members": "Lijstleden beheren", "column.lists": "Lijsten", "column.mutes": "Genegeerde gebruikers", "column.notifications": "Meldingen", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.", "empty_column.home": "Deze tijdlijn is leeg! Volg meer mensen om het te vullen.", "empty_column.list": "Er is nog niks te zien in deze lijst. Wanneer lijstleden nieuwe berichten plaatsen, zijn deze hier te zien.", - "empty_column.lists": "Je hebt nog geen lijsten. Wanneer je er een aanmaakt, valt dat hier te zien.", "empty_column.mutes": "Jij hebt nog geen gebruikers genegeerd.", "empty_column.notification_requests": "Helemaal leeg! Er is hier niets. Wanneer je nieuwe meldingen ontvangt, verschijnen deze hier volgens jouw instellingen.", "empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.", @@ -465,20 +467,32 @@ "link_preview.author": "Door {name}", "link_preview.more_from_author": "Meer van {name}", "link_preview.shares": "{count, plural, one {{counter} bericht} other {{counter} berichten}}", - "lists.account.add": "Aan lijst toevoegen", - "lists.account.remove": "Uit lijst verwijderen", + "lists.add_member": "Toevoegen", + "lists.add_to_list": "Aan lijst toevoegen", + "lists.add_to_lists": "{name} aan lijsten toevoegen", + "lists.create": "Aanmaken", + "lists.create_a_list_to_organize": "Maak een nieuwe lijst aan om je Startpagina te organiseren", + "lists.create_list": "Lijst aanmaken", "lists.delete": "Lijst verwijderen", + "lists.done": "Klaar", "lists.edit": "Lijst bewerken", - "lists.edit.submit": "Titel veranderen", - "lists.exclusive": "Verberg lijstleden op je starttijdlijn", - "lists.new.create": "Lijst toevoegen", - "lists.new.title_placeholder": "Naam nieuwe lijst", + "lists.exclusive": "Leden op je Startpagina verbergen", + "lists.exclusive_hint": "Als iemand op deze lijst staat, verberg hem dan op je Startpagina om te voorkomen dat zijn berichten twee keer worden getoond.", + "lists.find_users_to_add": "Vind gebruikers om toe te voegen", + "lists.list_members": "Lijstleden", + "lists.list_members_count": "{count, plural, one{# lid} other{# leden}}", + "lists.list_name": "Lijstnaam", + "lists.new_list_name": "Nieuwe lijstnaam", + "lists.no_lists_yet": "Nog geen lijsten.", + "lists.no_members_yet": "Nog geen leden.", + "lists.no_results_found": "Geen resultaten gevonden.", + "lists.remove_member": "Verwijderen", "lists.replies_policy.followed": "Elke gevolgde gebruiker", "lists.replies_policy.list": "Leden van de lijst", "lists.replies_policy.none": "Niemand", - "lists.replies_policy.title": "Toon reacties aan:", - "lists.search": "Zoek naar mensen die je volgt", - "lists.subheading": "Jouw lijsten", + "lists.save": "Opslaan", + "lists.search_placeholder": "Zoek mensen die je volgt", + "lists.show_replies_to": "Voeg antwoorden van lijstleden toe aan", "load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}", "loading_indicator.label": "Laden…", "media_gallery.hide": "Verberg", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 85d19c4f93..440387e1a9 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Det er ingenting i denne emneknaggen enno.", "empty_column.home": "Heime-tidslina di er tom! Fylg fleire folk for å fylla ho med innhald. {suggestions}.", "empty_column.list": "Det er ingenting i denne lista enno. Når medlemer av denne lista legg ut nye statusar, så dukkar dei opp her.", - "empty_column.lists": "Du har ingen lister enno. Når du lagar ei, så dukkar ho opp her.", "empty_column.mutes": "Du har ikkje målbunde nokon enno.", "empty_column.notification_requests": "Ferdig! Her er det ingenting. Når du får nye varsel, kjem dei opp her slik du har valt.", "empty_column.notifications": "Du har ingen varsel enno. Kommuniser med andre for å starte samtalen.", @@ -465,20 +464,11 @@ "link_preview.author": "Av {name}", "link_preview.more_from_author": "Meir frå {name}", "link_preview.shares": "{count, plural,one {{counter} innlegg} other {{counter} innlegg}}", - "lists.account.add": "Legg til i liste", - "lists.account.remove": "Fjern frå liste", "lists.delete": "Slett liste", "lists.edit": "Rediger liste", - "lists.edit.submit": "Endre tittel", - "lists.exclusive": "Skjul desse innlegga frå heimestraumen din", - "lists.new.create": "Legg til liste", - "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Alle fylgde brukarar", "lists.replies_policy.list": "Medlemar i lista", "lists.replies_policy.none": "Ingen", - "lists.replies_policy.title": "Vis svar på:", - "lists.search": "Søk blant folk du fylgjer", - "lists.subheading": "Listene dine", "load_pending": "{count, plural, one {# nytt element} other {# nye element}}", "loading_indicator.label": "Lastar…", "media_gallery.hide": "Gøym", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 9a5f379797..b461d3049f 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -268,7 +268,6 @@ "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.", "empty_column.home": "Hjem-tidslinjen din er tom! Følg flere folk for å fylle den. {suggestions}", "empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.", - "empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.", "empty_column.mutes": "Du har ikke dempet noen brukere enda.", "empty_column.notification_requests": "Alt klart! Det er ingenting her. Når du mottar nye varsler, vises de her i henhold til dine innstillinger.", "empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.", @@ -436,20 +435,11 @@ "link_preview.author": "Av {name}", "link_preview.more_from_author": "Mer fra {name}", "link_preview.shares": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}", - "lists.account.add": "Legg til i listen", - "lists.account.remove": "Fjern fra listen", "lists.delete": "Slett listen", "lists.edit": "Rediger listen", - "lists.edit.submit": "Endre tittel", - "lists.exclusive": "Skjul disse innleggene i tidslinjen", - "lists.new.create": "Legg til liste", - "lists.new.title_placeholder": "Ny listetittel", "lists.replies_policy.followed": "Enhver fulgt bruker", "lists.replies_policy.list": "Medlemmer i listen", "lists.replies_policy.none": "Ingen", - "lists.replies_policy.title": "Vis svar på:", - "lists.search": "Søk blant personer du følger", - "lists.subheading": "Dine lister", "load_pending": "{count, plural,one {# ny gjenstand} other {# nye gjenstander}}", "loading_indicator.label": "Laster…", "moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 37687bc844..ddaf949873 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -202,7 +202,6 @@ "empty_column.hashtag": "I a pas encara de contengut ligat a aquesta etiqueta.", "empty_column.home": "Vòstre flux d’acuèlh es void. Visitatz {public} o utilizatz la recèrca per vos connectar a d’autras personas.", "empty_column.list": "I a pas res dins la lista pel moment. Quand de membres d’aquesta lista publiquen de novèls estatuts los veiretz aquí.", - "empty_column.lists": "Encara avètz pas cap de lista. Quand ne creetz una, apareisserà aquí.", "empty_column.mutes": "Encara avètz pas mes en silenci degun.", "empty_column.notifications": "Avètz pas encara de notificacions. Respondètz a qualqu’un per començar una conversacion.", "empty_column.public": "I a pas res aquí ! Escrivètz quicòm de public, o seguètz de personas d’autres servidors per garnir lo flux public", @@ -311,19 +310,11 @@ "limited_account_hint.action": "Afichar lo perfil de tota manièra", "limited_account_hint.title": "Aqueste perfil foguèt rescondut per la moderacion de {domain}.", "link_preview.author": "Per {name}", - "lists.account.add": "Ajustar a la lista", - "lists.account.remove": "Levar de la lista", "lists.delete": "Suprimir la lista", "lists.edit": "Modificar la lista", - "lists.edit.submit": "Cambiar lo títol", - "lists.new.create": "Ajustar una lista", - "lists.new.title_placeholder": "Títol de la nòva lista", "lists.replies_policy.followed": "Quin seguidor que siá", "lists.replies_policy.list": "Membres de la lista", "lists.replies_policy.none": "Degun", - "lists.replies_policy.title": "Mostrar las responsas a :", - "lists.search": "Cercar demest lo mond que seguètz", - "lists.subheading": "Vòstras listas", "load_pending": "{count, plural, one {# nòu element} other {# nòu elements}}", "loading_indicator.label": "Cargament…", "navigation_bar.about": "A prepaus", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 5da88ff08f..86226f4cde 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -201,8 +201,6 @@ "lightbox.next": "ਅਗਲੀ", "lightbox.previous": "ਪਿਛਲੀ", "link_preview.author": "{name} ਵਲੋਂ", - "lists.account.add": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ", - "lists.account.remove": "ਸੂਚੀ ਵਿਚੋਂ ਹਟਾਓ", "lists.delete": "ਸੂਚੀ ਹਟਾਓ", "lists.replies_policy.followed": "ਕੋਈ ਵੀ ਫ਼ਾਲੋ ਕੀਤਾ ਵਰਤੋਂਕਾਰ", "lists.replies_policy.none": "ਕੋਈ ਨਹੀਂ", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 4558e29cb8..86c02a6a87 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -291,7 +291,6 @@ "empty_column.hashtag": "Nie ma wpisów oznaczonych tym hasztagiem. Możesz napisać pierwszy(-a).", "empty_column.home": "Nie obserwujesz nikogo. Odwiedź globalną oś czasu lub użyj wyszukiwarki, aby znaleźć interesujące Cię profile.", "empty_column.list": "Nie ma nic na tej liście. Kiedy członkowie listy dodadzą nowe wpisy, pojawia się one tutaj.", - "empty_column.lists": "Nie masz żadnych list. Kiedy utworzysz jedną, pojawi się tutaj.", "empty_column.mutes": "Nie wyciszyłeś(-aś) jeszcze żadnego użytkownika.", "empty_column.notification_requests": "To wszystko – kiedy otrzymasz nowe powiadomienia, pokażą się tutaj zgodnie z twoimi ustawieniami.", "empty_column.notifications": "Nie masz żadnych powiadomień. Rozpocznij interakcje z innymi użytkownikami.", @@ -464,20 +463,11 @@ "link_preview.author": "{name}", "link_preview.more_from_author": "Więcej od {name}", "link_preview.shares": "{count, plural, one {{counter} wpis} few {{counter} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", - "lists.account.add": "Dodaj do listy", - "lists.account.remove": "Usunąć z listy", "lists.delete": "Usuń listę", "lists.edit": "Edytuj listę", - "lists.edit.submit": "Zmień tytuł", - "lists.exclusive": "Ukryj te posty w lokalnej osi czasu", - "lists.new.create": "Utwórz listę", - "lists.new.title_placeholder": "Wprowadź tytuł listy", "lists.replies_policy.followed": "Dowolny obserwowany użytkownik", "lists.replies_policy.list": "Członkowie listy", "lists.replies_policy.none": "Nikt", - "lists.replies_policy.title": "Pokazuj odpowiedzi dla:", - "lists.search": "Szukaj wśród osób które obserwujesz", - "lists.subheading": "Twoje listy", "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", "media_gallery.hide": "Ukryj", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index e2fbaff02b..8740cd13de 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -140,13 +140,16 @@ "column.blocks": "Usuários bloqueados", "column.bookmarks": "Salvos", "column.community": "Linha local", + "column.create_list": "Criar lista", "column.direct": "Menções privadas", "column.directory": "Explorar perfis", "column.domain_blocks": "Domínios bloqueados", + "column.edit_list": "Editar lista", "column.favourites": "Favoritos", "column.firehose": "Feeds ao vivo", "column.follow_requests": "Seguidores pendentes", "column.home": "Página inicial", + "column.list_members": "Gerenciar membros da lista", "column.lists": "Listas", "column.mutes": "Usuários silenciados", "column.notifications": "Notificações", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Nada aqui.", "empty_column.home": "Sua página inicial está vazia! Siga mais pessoas para começar: {suggestions}", "empty_column.list": "Nada aqui. Quando membros da lista tootarem, eles aparecerão aqui.", - "empty_column.lists": "Nada aqui. Quando você criar listas, elas aparecerão aqui.", "empty_column.mutes": "Nada aqui.", "empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui de acordo com suas configurações.", "empty_column.notifications": "Interaja com outros usuários para começar a conversar.", @@ -465,20 +467,32 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Mais de {name}", "link_preview.shares": "{count, plural, one {{counter} publicação} other {{counter} publicações}}", - "lists.account.add": "Adicionar à lista", - "lists.account.remove": "Remover da lista", + "lists.add_member": "Adicionar", + "lists.add_to_list": "Adicionar à lista", + "lists.add_to_lists": "Adicionar {name} à lista", + "lists.create": "Criar", + "lists.create_a_list_to_organize": "Crie uma lista para organizar seu feed inicial", + "lists.create_list": "Criar lista", "lists.delete": "Excluir lista", + "lists.done": "Concluído", "lists.edit": "Editar lista", - "lists.edit.submit": "Renomear lista", - "lists.exclusive": "Ocultar estes posts da página inicial", - "lists.new.create": "Criar lista", - "lists.new.title_placeholder": "Nome da lista", + "lists.exclusive": "Ocultar membros no início", + "lists.exclusive_hint": "Se existe alguém nesta lista, oculte-os no seu feed inicial para evitar ver suas publicações duas vezes.", + "lists.find_users_to_add": "Encontrar usuários para adicionar", + "lists.list_members": "Membros da lista", + "lists.list_members_count": "{count, plural, one {# membro} other {# membros}}", + "lists.list_name": "Nome da lista", + "lists.new_list_name": "Nome novo da lista", + "lists.no_lists_yet": "Sem listas ainda.", + "lists.no_members_yet": "Nenhum membro ainda.", + "lists.no_results_found": "Nenhum resultado encontrado.", + "lists.remove_member": "Remover", "lists.replies_policy.followed": "Qualquer usuário seguido", "lists.replies_policy.list": "Membros da lista", "lists.replies_policy.none": "Ninguém", - "lists.replies_policy.title": "Mostrar respostas para:", - "lists.search": "Procurar entre as pessoas que segue", - "lists.subheading": "Suas listas", + "lists.save": "Salvar", + "lists.search_placeholder": "Buscar pessoas que você segue", + "lists.show_replies_to": "Incluir respostas de membros da lista para", "load_pending": "{count, plural, one {# novo item} other {# novos items}}", "loading_indicator.label": "Carregando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index a06d259be2..6a6b5549ed 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -272,7 +272,6 @@ "empty_column.hashtag": "Não foram encontradas publicações com essa #etiqueta.", "empty_column.home": "A sua linha cronológica inicial está vazia! Siga mais pessoas para a preencher.", "empty_column.list": "Ainda não existem publicações nesta lista. Quando membros desta lista fizerem novas publicações, elas aparecerão aqui.", - "empty_column.lists": "Ainda não tem qualquer lista. Quando criar uma, ela irá aparecer aqui.", "empty_column.mutes": "Ainda não silenciaste qualquer utilizador.", "empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui conforme as suas configurações.", "empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.", @@ -440,20 +439,11 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Mais de {name}", "link_preview.shares": "{count, plural, one {{counter} publicação} other {{counter} publicações}}", - "lists.account.add": "Adicionar à lista", - "lists.account.remove": "Remover da lista", "lists.delete": "Eliminar lista", "lists.edit": "Editar lista", - "lists.edit.submit": "Mudar o título", - "lists.exclusive": "Ocultar essas publicações da página inicial", - "lists.new.create": "Adicionar lista", - "lists.new.title_placeholder": "Título da nova lista", "lists.replies_policy.followed": "Qualquer utilizador seguido", "lists.replies_policy.list": "Membros da lista", "lists.replies_policy.none": "Ninguém", - "lists.replies_policy.title": "Mostrar respostas para:", - "lists.search": "Pesquisa entre as pessoas que segues", - "lists.subheading": "As tuas listas", "load_pending": "{count, plural, one {# novo item} other {# novos itens}}", "loading_indicator.label": "A carregar…", "media_gallery.hide": "Esconder", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 96f9eac2b3..f21ce027f4 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -213,7 +213,6 @@ "empty_column.hashtag": "Acest hashtag încă nu a fost folosit.", "empty_column.home": "Nu există nimic în cronologia ta! Abonează-te la mai multe persoane pentru a o umple. {suggestions}", "empty_column.list": "Momentan nu există nimic în această listă. Când membrii ei vor posta ceva nou, vor apărea aici.", - "empty_column.lists": "Momentan nu ai nicio listă. Când vei crea una, va apărea aici.", "empty_column.mutes": "Momentan nu ai ignorat niciun utilizator.", "empty_column.notifications": "Momentan nu ai nicio notificare. Când alte persoane vor interacționa cu tine, îl vei vedea aici.", "empty_column.public": "Nu există nimic aici! Postează ceva public, sau abonează-te manual la utilizatori din alte servere pentru a umple cronologia", @@ -338,19 +337,11 @@ "limited_account_hint.action": "Afișează profilul oricum", "limited_account_hint.title": "Acest profil a fost ascuns de moderatorii domeniului {domain}.", "link_preview.author": "De {name}", - "lists.account.add": "Adaugă în listă", - "lists.account.remove": "Elimină din listă", "lists.delete": "Șterge lista", "lists.edit": "Modifică lista", - "lists.edit.submit": "Schimbă titlul", - "lists.new.create": "Adaugă o listă", - "lists.new.title_placeholder": "Titlu pentru noua listă", "lists.replies_policy.followed": "Tuturor persoanelor la care te-ai abonat", "lists.replies_policy.list": "Membrilor din listă", "lists.replies_policy.none": "Nu afișa nimănui", - "lists.replies_policy.title": "Afișează răspunsurile:", - "lists.search": "Caută printre persoanele la care ești abonat", - "lists.subheading": "Listele tale", "load_pending": "{count, plural, one {# element nou} other {# elemente noi}}", "moved_to_account_banner.text": "Contul tău {disabledAccount} este în acest moment dezactivat deoarece te-ai mutat la {movedToAccount}.", "navigation_bar.about": "Despre", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index e336e39e01..90af458cdc 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -291,7 +291,6 @@ "empty_column.hashtag": "С этим хэштегом пока ещё ничего не постили.", "empty_column.home": "Ваша лента совсем пуста! Подписывайтесь на других, чтобы заполнить её.", "empty_column.list": "В этом списке пока ничего нет.", - "empty_column.lists": "У вас ещё нет списков. Созданные вами списки будут показаны здесь.", "empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.", "empty_column.notification_requests": "Здесь ничего нет! Когда вы получите новые уведомления, они здесь появятся согласно вашим настройкам.", "empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.", @@ -464,20 +463,11 @@ "link_preview.author": "Автор: {name}", "link_preview.more_from_author": "Больше от {name}", "link_preview.shares": "{count, plural, one {{counter} пост} other {{counter} посты}}", - "lists.account.add": "Добавить в список", - "lists.account.remove": "Убрать из списка", "lists.delete": "Удалить список", "lists.edit": "Изменить список", - "lists.edit.submit": "Изменить название", - "lists.exclusive": "Скрыть эти сообщения из дома", - "lists.new.create": "Создать список", - "lists.new.title_placeholder": "Название для нового списка", "lists.replies_policy.followed": "Любой подписанный пользователь", "lists.replies_policy.list": "Пользователи в списке", "lists.replies_policy.none": "Никого", - "lists.replies_policy.title": "Показать ответы только:", - "lists.search": "Искать среди подписок", - "lists.subheading": "Ваши списки", "load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}", "loading_indicator.label": "Загрузка…", "media_gallery.hide": "Скрыть", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 2d48f688d5..a12bb6bde7 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -194,7 +194,6 @@ "empty_column.hashtag": "नाऽस्मिन् प्रचलितवस्तुचिह्ने किमपि ।", "empty_column.home": "गृहसमयतालिका रिक्ताऽस्ति । गम्यतां {public} वाऽन्वेषणैः प्रारभ्यतां मेलनं क्रियताञ्च ।", "empty_column.list": "न किमपि वर्तते सूच्यामस्याम् । यदा सूच्याः सदस्या नवपत्राणि प्रकटीकुर्वन्ति तदाऽत्राऽऽयान्ति ।", - "empty_column.lists": "तव पार्श्वे न कापि सूचिर्वर्तते। यदैकां सृजसि तदा अत्र दृश्यते।", "empty_column.mutes": "त्वया अद्यापि नैकोऽप्युपभोक्ता मूकीकृतो वर्तते।", "empty_column.notifications": "तव पार्श्वे न अधुना पर्यन्तं किमपि विज्ञापनं वर्तते। यदा अन्या जना त्वया संयोजयन्ति तदा इह पश्यसि।", "empty_column.public": "न इह किमपि वर्तते! किञ्चिल्लिख सार्वजनिकरूपेण, उत स्वयमन्यसर्वर्तः उपभोक्तॄननुसर एतत्पूरयितुम्", @@ -303,19 +302,11 @@ "lightbox.previous": "पूर्वः", "limited_account_hint.action": "प्रोफैलं दर्शय कथञ्चित्", "limited_account_hint.title": "{domain} इत्यस्य प्रशासकैरयं प्रोफैल्प्रच्छन्नः।", - "lists.account.add": "सूचेर्मध्ये योजय", - "lists.account.remove": "सूचेर्मार्जय", "lists.delete": "सूचिं मार्जय", "lists.edit": "सूचिं सम्पादय", - "lists.edit.submit": "उपाधिं परिवर्तय", - "lists.new.create": "सूचिं योजय", - "lists.new.title_placeholder": "नूतनसूच्युपाधिः", "lists.replies_policy.followed": "कोऽप्यनुसारितोपभोक्ता", "lists.replies_policy.list": "सूचेस्सदस्याः", "lists.replies_policy.none": "न कोऽपि", - "lists.replies_policy.title": "एतमुत्तराणि दर्शय :", - "lists.search": "त्वया अनुसारितजनेषु अन्विष्य", - "lists.subheading": "तव सूचयः", "load_pending": "{count, plural, one {# नूतनवस्तु} other {# नूतनवस्तूनि}}", "moved_to_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतो यतोहि {movedToAccount} अस्मिन्त्वमसार्षीः।", "navigation_bar.about": "विषये", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 71bcaef7ab..19bdba818c 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -257,7 +257,6 @@ "empty_column.hashtag": "Ancora nudda in custa eticheta.", "empty_column.home": "Sa lìnia de tempus printzipale tua est bòida. Visita {public} o imprea sa chirca pro cumintzare e agatare àteras persones.", "empty_column.list": "Nudda ancora in custa lista. Cando is persones de custa lista ant a publicare, is publicatziones ant a aparèssere inoghe.", - "empty_column.lists": "Non tenes ancora peruna lista. Cando nd'as a creare una, at a èssere ammustrada inoghe.", "empty_column.mutes": "No as postu ancora nemos a sa muda.", "empty_column.notifications": "Non tenes ancora peruna notìfica. Chistiona cun una persone pro cumintzare un'arresonada.", "empty_column.public": "Nudda inoghe. Iscrie calicuna cosa pùblica, o sighi àteras persones de àteros serbidores pro prenare custu ispàtziu", @@ -392,20 +391,11 @@ "lightbox.previous": "Pretzedente", "limited_account_hint.title": "Custu profilu est istadu cuadu dae sa moderatzione de {domain}.", "link_preview.shares": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}", - "lists.account.add": "Agiunghe a sa lista", - "lists.account.remove": "Boga dae sa lista", "lists.delete": "Cantzella sa lista", "lists.edit": "Modìfica sa lista", - "lists.edit.submit": "Muda su tìtulu", - "lists.exclusive": "Cua custas publicatziones dae sa pàgina printzipale", - "lists.new.create": "Agiunghe lista", - "lists.new.title_placeholder": "Tìtulu de sa lista noa", "lists.replies_policy.followed": "Cale si siat persone chi sighis", "lists.replies_policy.list": "Persones de sa lista", "lists.replies_policy.none": "Nemos", - "lists.replies_policy.title": "Ammustra is rispostas a:", - "lists.search": "Chirca intre sa gente chi ses sighende", - "lists.subheading": "Is listas tuas", "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", "loading_indicator.label": "Carrighende…", "media_gallery.hide": "Cua", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index c14f1cc51a..196b4cdb08 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -185,7 +185,6 @@ "empty_column.hashtag": "There naethin in this hashtag yit.", "empty_column.home": "Yer hame timeline is toum! Follae mair fowk fir tae full it up. {suggestions}", "empty_column.list": "There naethin in this list yit. Whan memmers o this list publish new posts, ye'll see them here.", - "empty_column.lists": "Ye dinnae hae onie lists yit. Ance ye mak ane, it'll shaw up here.", "empty_column.mutes": "Ye'v no wheesht onie uisers yit.", "empty_column.notifications": "Ye dinnae hae onie notes yit. Whan ither fowk interacks wi ye, ye'll see it here.", "empty_column.public": "There naethin here! Scrieve socht public, or follae uisers fae ither servers fir tae full it up", @@ -288,19 +287,11 @@ "lightbox.previous": "Last ane", "limited_account_hint.action": "Shaw profile onieweys", "limited_account_hint.title": "This profile haes been planked bi the moderators o {domain}.", - "lists.account.add": "Add tae list", - "lists.account.remove": "Tak aff o the list", "lists.delete": "Delete list", "lists.edit": "Edit list", - "lists.edit.submit": "Chynge title", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", "lists.replies_policy.followed": "Onie follaed uiser", "lists.replies_policy.list": "Memmers o the list", "lists.replies_policy.none": "Naebody", - "lists.replies_policy.title": "Shaw replies tae:", - "lists.search": "Seirch amang the fowk ye ken", - "lists.subheading": "Yer lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "moved_to_account_banner.text": "Yer accoont {disabledAccount} is disabilt the noo acause ye flittit tae {movedToAccount}.", "navigation_bar.about": "Aboot", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 93ce9dd7e2..dbf6a41f6f 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -166,7 +166,6 @@ "empty_column.favourited_statuses": "ඔබ සතුව ප්‍රියතම ලිපි කිසිවක් නැත. ඔබ යමකට ප්‍රිය කළ විට එය මෙහි පෙන්වනු ඇත.", "empty_column.follow_requests": "ඔබට තවමත් අනුගමන ඉල්ලීම් ලැබී නැත. ඉල්ලීමක් ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.home": "මුල් පිටුව හිස් ය! මෙය පිරවීමට බොහෝ පුද්ගලයින් අනුගමනය කරන්න.", - "empty_column.lists": "ඔබට තවමත් ලැයිස්තු කිසිවක් නැත. ඔබ එකක් සාදන විට, එය මෙහි පෙන්වනු ඇත.", "empty_column.mutes": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු නිහඬ කර නැත.", "empty_column.notifications": "ඔබට දැනුම්දීම් ලැබී නැත. අන් අය සහ ඔබ අතර අන්‍යෝන්‍ය බලපවත්වන දෑ මෙහි දිස්වනු ඇත.", "error.unexpected_crash.explanation": "අපගේ කේතයේ දෝෂයක් හෝ බ්‍රවුසර ගැළපුම් ගැටලුවක් හේතුවෙන්, මෙම පිටුව නිවැරදිව ප්‍රදර්ශනය කළ නොහැක.", @@ -250,17 +249,10 @@ "lightbox.next": "ඊළඟ", "lightbox.previous": "පෙර", "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න", - "lists.account.add": "ලැයිස්තුවට දමන්න", - "lists.account.remove": "ලැයිස්තුවෙන් ඉවතලන්න", "lists.delete": "ලැයිස්තුව මකන්න", "lists.edit": "ලැයිස්තුව සංස්කරණය", - "lists.edit.submit": "සිරැසිය සංශෝධනය", - "lists.new.create": "එකතු", - "lists.new.title_placeholder": "නව ලැයිස්තුවේ සිරැසිය", "lists.replies_policy.list": "ලැයිස්තුවේ සාමාජිකයින්", "lists.replies_policy.none": "කිසිවෙක් නැත", - "lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:", - "lists.subheading": "ඔබගේ ලැයිස්තු", "navigation_bar.about": "පිළිබඳව", "navigation_bar.blocks": "අවහිර කළ අය", "navigation_bar.bookmarks": "පොත්යොමු", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 1ecbaaffdd..d7e396c69b 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -269,7 +269,6 @@ "empty_column.hashtag": "Pod týmto hashtagom sa ešte nič nenachádza.", "empty_column.home": "Vaša domáca časová os je zatiaľ prázdna. Začnite sledovať ostatných a naplňte si ju.", "empty_column.list": "Tento zoznam je zatiaľ prázdny. Keď ale členovia tohoto zoznamu uverejnia nové príspevky, objavia sa tu.", - "empty_column.lists": "Zatiaľ nemáte žiadne zoznamy. Keď nejaký vytvoríte, zobrazí sa tu.", "empty_column.mutes": "Zatiaľ ste si nikoho nestíšili.", "empty_column.notification_requests": "Všetko čisté! Nič tu nieje. Keď dostaneš nové oboznámenia, zobrazia sa tu podľa tvojich nastavení.", "empty_column.notifications": "Zatiaľ nemáte žiadne upozornenia. Začnú vám pribúdať, keď s vami začnú interagovať ostatní.", @@ -428,20 +427,11 @@ "link_preview.author": "Autor: {name}", "link_preview.more_from_author": "Viac od {name}", "link_preview.shares": "{count, plural, one {{counter} príspevok} other {{counter} príspevkov}}", - "lists.account.add": "Pridať do zoznamu", - "lists.account.remove": "Odstrániť zo zoznamu", "lists.delete": "Vymazať zoznam", "lists.edit": "Upraviť zoznam", - "lists.edit.submit": "Zmeniť názov", - "lists.exclusive": "Skryť tieto príspevky z domovskej stránky", - "lists.new.create": "Pridať zoznam", - "lists.new.title_placeholder": "Názov nového zoznamu", "lists.replies_policy.followed": "Akémukoľvek sledovanému účtu", "lists.replies_policy.list": "Členom zoznamu", "lists.replies_policy.none": "Nikomu", - "lists.replies_policy.title": "Zobraziť odpovede:", - "lists.search": "Vyhľadávať medzi účtami, ktoré sledujete", - "lists.subheading": "Vaše zoznamy", "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položiek} other {# nových položiek}}", "loading_indicator.label": "Načítavanie…", "media_gallery.hide": "Skryť", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 3690c612b7..84141a779d 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -85,9 +85,14 @@ "alert.rate_limited.title": "Hitrost omejena", "alert.unexpected.message": "Zgodila se je nepričakovana napaka.", "alert.unexpected.title": "Ojoj!", + "alt_text_badge.title": "Nadomestno besedilo", "announcement.announcement": "Obvestilo", + "annual_report.summary.followers.followers": "sledilcev", + "annual_report.summary.followers.total": "", + "annual_report.summary.highlighted_post.by_favourites": "- najpriljubljenejša objava", "annual_report.summary.most_used_hashtag.none": "Brez", "annual_report.summary.new_posts.new_posts": "nove objave", + "annual_report.summary.thanks": "Hvala, ker ste del Mastodona!", "attachments_list.unprocessed": "(neobdelano)", "audio.hide": "Skrij zvok", "block_modal.remote_users_caveat": "Od strežnika {domain} bomo zahtevali, da spoštuje vašo odločitev. Izpolnjevanje zahteve ni zagotovljeno, ker nekateri strežniki blokiranja obravnavajo drugače. Javne objave bodo morda še vedno vidne neprijavljenim uporabnikom.", @@ -99,6 +104,8 @@ "block_modal.title": "Blokiraj uporabnika?", "block_modal.you_wont_see_mentions": "Objav, ki jih omenjajo, ne boste videli.", "boost_modal.combo": "Če želite preskočiti to, lahko pritisnete {combo}", + "boost_modal.reblog": "Izpostavi objavo?", + "boost_modal.undo_reblog": "Ali želite preklicati izpostavitev objave?", "bundle_column_error.copy_stacktrace": "Kopiraj poročilo o napaki", "bundle_column_error.error.body": "Zahtevane strani ni mogoče upodobiti. Vzrok težave je morda hrošč v naši kodi ali pa nezdružljivost z brskalnikom.", "bundle_column_error.error.title": "Oh, ne!", @@ -120,13 +127,16 @@ "column.blocks": "Blokirani uporabniki", "column.bookmarks": "Zaznamki", "column.community": "Krajevna časovnica", + "column.create_list": "Ustvari seznam", "column.direct": "Zasebne omembe", "column.directory": "Prebrskaj profile", "column.domain_blocks": "Blokirane domene", + "column.edit_list": "Uredi seznam", "column.favourites": "Priljubljeni", "column.firehose": "Viri v živo", "column.follow_requests": "Sledi prošnjam", "column.home": "Domov", + "column.list_members": "Upravljaj člane seznama", "column.lists": "Seznami", "column.mutes": "Utišani uporabniki", "column.notifications": "Obvestila", @@ -157,6 +167,7 @@ "compose_form.poll.duration": "Trajanje ankete", "compose_form.poll.multiple": "Več možnosti", "compose_form.poll.option_placeholder": "Možnost {number}", + "compose_form.poll.single": "Ena izbira", "compose_form.poll.switch_to_multiple": "Spremenite anketo, da omogočite več izbir", "compose_form.poll.switch_to_single": "Spremenite anketo, da omogočite eno izbiro", "compose_form.poll.type": "Slog", @@ -193,6 +204,9 @@ "confirmations.unfollow.confirm": "Ne sledi več", "confirmations.unfollow.message": "Ali ste prepričani, da ne želite več slediti {name}?", "confirmations.unfollow.title": "Želite nehati spremljati uporabnika?", + "content_warning.hide": "Skrij objavo", + "content_warning.show": "Vseeno pokaži", + "content_warning.show_more": "Pokaži več", "conversation.delete": "Izbriši pogovor", "conversation.mark_as_read": "Označi kot prebrano", "conversation.open": "Pokaži pogovor", @@ -266,7 +280,6 @@ "empty_column.hashtag": "V tem ključniku še ni nič.", "empty_column.home": "Vaša domača časovnica je prazna! Sledite več osebam, da jo zapolnite. {suggestions}", "empty_column.list": "Na tem seznamu ni ničesar. Ko bodo člani tega seznama objavili nove statuse, se bodo pojavili tukaj.", - "empty_column.lists": "Nimate seznamov. Ko ga boste ustvarili, se bo prikazal tukaj.", "empty_column.mutes": "Niste utišali še nobenega uporabnika.", "empty_column.notification_requests": "Vse prebrano! Tu ni ničesar več. Ko prejmete nova obvestila, se bodo pojavila tu glede na vaše nastavitve.", "empty_column.notifications": "Nimate še nobenih obvestil. Povežite se z drugimi, da začnete pogovor.", @@ -348,7 +361,10 @@ "hashtag.unfollow": "Nehaj slediti ključniku", "hashtags.and_other": "…in še {count, plural, other {#}}", "hints.profiles.posts_may_be_missing": "Nekatere objave s tega profila morda manjkajo.", + "hints.profiles.see_more_followers": "Pokaži več sledilcev na {domain}", + "hints.profiles.see_more_posts": "Pokaži več objav na {domain}", "hints.threads.replies_may_be_missing": "Odgovori z drugih strežnikov morda manjkajo.", + "hints.threads.see_more": "Pokaži več odgovorov na {domain}", "home.column_settings.show_reblogs": "Pokaži izpostavitve", "home.column_settings.show_replies": "Pokaži odgovore", "home.hide_announcements": "Skrij obvestila", @@ -419,20 +435,25 @@ "link_preview.author": "Avtor_ica {name}", "link_preview.more_from_author": "Več od {name}", "link_preview.shares": "{count, plural, one {{counter} objava} two {{counter} objavi} few {{counter} objave} other {{counter} objav}}", - "lists.account.add": "Dodaj na seznam", - "lists.account.remove": "Odstrani s seznama", + "lists.add_member": "Dodaj", + "lists.add_to_list": "Dodaj na seznam", + "lists.create": "Ustvari", + "lists.create_list": "Ustvari seznam", "lists.delete": "Izbriši seznam", + "lists.done": "Opravljeno", "lists.edit": "Uredi seznam", - "lists.edit.submit": "Spremeni naslov", - "lists.exclusive": "Skrij te objave od doma", - "lists.new.create": "Dodaj seznam", - "lists.new.title_placeholder": "Nov naslov seznama", + "lists.find_users_to_add": "Poišči člane za dodajanje", + "lists.list_name": "Ime seznama", + "lists.new_list_name": "Novo ime seznama", + "lists.no_lists_yet": "Ni seznamov.", + "lists.no_members_yet": "Ni še nobenega člana.", + "lists.no_results_found": "Ni rezultatov.", + "lists.remove_member": "Odstrani", "lists.replies_policy.followed": "Vsem sledenim uporabnikom", "lists.replies_policy.list": "Članom seznama", "lists.replies_policy.none": "Nikomur", - "lists.replies_policy.title": "Pokaži odgovore:", - "lists.search": "Iščite med ljudmi, katerim sledite", - "lists.subheading": "Vaši seznami", + "lists.save": "Shrani", + "lists.search_placeholder": "Iščite ljudi, katerim sledite", "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}", "loading_indicator.label": "Nalaganje …", "media_gallery.hide": "Skrij", @@ -464,6 +485,7 @@ "navigation_bar.follows_and_followers": "Sledenja in sledilci", "navigation_bar.lists": "Seznami", "navigation_bar.logout": "Odjava", + "navigation_bar.moderation": "Moderiranje", "navigation_bar.mutes": "Utišani uporabniki", "navigation_bar.opened_in_classic_interface": "Objave, računi in druge specifične strani se privzeto odprejo v klasičnem spletnem vmesniku.", "navigation_bar.personal": "Osebno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index d1d92c69f6..c2781a2b6a 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -135,13 +135,16 @@ "column.blocks": "Përdorues të bllokuar", "column.bookmarks": "Faqerojtës", "column.community": "Rrjedhë kohore vendore", + "column.create_list": "Krijo listë", "column.direct": "Përmendje private", "column.directory": "Shfletoni profile", "column.domain_blocks": "Përkatësi të bllokuara", + "column.edit_list": "Përpunoni listën", "column.favourites": "Të parapëlqyer", "column.firehose": "Prurje “live”", "column.follow_requests": "Kërkesa për ndjekje", "column.home": "Kreu", + "column.list_members": "Administroni anëtarë liste", "column.lists": "Lista", "column.mutes": "Përdorues të heshtuar", "column.notifications": "Njoftime", @@ -287,7 +290,6 @@ "empty_column.hashtag": "Ende s’ka gjë nën këtë hashtag.", "empty_column.home": "Rrjedha juaj kohore është e zbrazët! Vizitoni {public} ose përdorni kërkimin që t’ia filloni dhe të takoni përdorues të tjerë.", "empty_column.list": "Në këtë listë ende s’ka gjë. Kur anëtarë të kësaj liste postojnë gjendje të reja, ato do të shfaqen këtu.", - "empty_column.lists": "Ende s’keni ndonjë listë. Kur të krijoni një të tillë, do të duket këtu.", "empty_column.mutes": "S’keni heshtuar ende ndonjë përdorues.", "empty_column.notification_requests": "Gjithçka si duhet! S’ka ç’bëhet këtu. Kur merrni njoftime të reja, do të shfaqen këtu, në përputhje me rregullimet tuaja.", "empty_column.notifications": "Ende s’keni ndonjë njoftim. Ndërveproni me të tjerët që të nisë biseda.", @@ -460,20 +462,32 @@ "link_preview.author": "Nga {name}", "link_preview.more_from_author": "Më tepër nga {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} postime}}", - "lists.account.add": "Shto në listë", - "lists.account.remove": "Hiqe nga lista", + "lists.add_member": "Shtoje", + "lists.add_to_list": "Shto në listë", + "lists.add_to_lists": "Shtoje {name} në lista", + "lists.create": "Krijoje", + "lists.create_a_list_to_organize": "Krijoni një listë të re të sistemoni prurjen tuaj Kreu", + "lists.create_list": "Krijo listë", "lists.delete": "Fshije listën", + "lists.done": "U bë", "lists.edit": "Përpunoni listën", - "lists.edit.submit": "Ndryshoni titullin", - "lists.exclusive": "Fshihi këto postime prej kreut", - "lists.new.create": "Shtoni listë", - "lists.new.title_placeholder": "Titull liste të re", + "lists.exclusive": "Fshihni anëtarët në Krye", + "lists.exclusive_hint": "Nëse dikush gjendje në këtë listë, fshihini ata te prurja juaj e Kreut, që të shmangni parjen dy herë të postimeve të tyre.", + "lists.find_users_to_add": "Gjeni përdorues për t’i shtuar", + "lists.list_members": "Shfaq anëtarë", + "lists.list_members_count": "{count, plural, one {# anëtar} other {# anëtarë}}", + "lists.list_name": "Emër liste", + "lists.new_list_name": "Emër liste të re", + "lists.no_lists_yet": "Ende pa lista.", + "lists.no_members_yet": "Ende pa anëtarë.", + "lists.no_results_found": "S’u gjetën përfundime.", + "lists.remove_member": "Hiqe", "lists.replies_policy.followed": "Cilido përdorues i ndjekur", "lists.replies_policy.list": "Anëtarë të listës", "lists.replies_policy.none": "Askush", - "lists.replies_policy.title": "Shfaq përgjigje për:", - "lists.search": "Kërkoni mes personash që ndiqni", - "lists.subheading": "Listat tuaja", + "lists.save": "Ruaje", + "lists.search_placeholder": "Kërkoni persona që ndiqni", + "lists.show_replies_to": "Përfshi përgjigje nga anëtarë liste te", "load_pending": "{count, plural,one {# objekt i ri }other {# objekte të rinj }}", "loading_indicator.label": "Po ngarkohet…", "media_gallery.hide": "Fshihe", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 4a33c2f5ca..5a587f2666 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -256,7 +256,6 @@ "empty_column.hashtag": "Još uvek nema ničega u ovoj heš oznaci.", "empty_column.home": "Vaša početna vremenska linija je prazna! Pratite više ljudi da biste je popunili.", "empty_column.list": "U ovoj listi još nema ničega. Kada članovi ove liste objave nešto novo, pojaviće se ovde.", - "empty_column.lists": "Još uvek nemate nijednu listu. Kada napravite jednu, ona će se pojaviti ovde.", "empty_column.mutes": "Još uvek ne ignorišete nijednog korisnika.", "empty_column.notification_requests": "Sve je čisto! Ovde nema ničega. Kada dobijete nova obaveštenja, ona će se pojaviti ovde u skladu sa vašim podešavanjima.", "empty_column.notifications": "Još uvek nemate nikakva obaveštenja. Kada drugi ljudi budu u interakciji sa vama, videćete to ovde.", @@ -404,20 +403,11 @@ "link_preview.author": "Po {name}", "link_preview.more_from_author": "Više od {name}", "link_preview.shares": "{count, plural, one {{counter} objava} few {{counter} objave} other {{counter} objava}}", - "lists.account.add": "Dodaj na listu", - "lists.account.remove": "Ukloni sa liste", "lists.delete": "Izbriši listu", "lists.edit": "Uredi listu", - "lists.edit.submit": "Promeni naslov", - "lists.exclusive": "Sakrijte ove objave sa početne stranice", - "lists.new.create": "Dodaj listu", - "lists.new.title_placeholder": "Naslov nove liste", "lists.replies_policy.followed": "Svakom praćenom korisniku", "lists.replies_policy.list": "Članovima liste", "lists.replies_policy.none": "Nikome", - "lists.replies_policy.title": "Prikaži odgovore:", - "lists.search": "Pretraži među ljudima koje pratite", - "lists.subheading": "Vaše liste", "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}", "loading_indicator.label": "Učitavanje…", "moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index d80411859e..ea92a3bf10 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -256,7 +256,6 @@ "empty_column.hashtag": "Још увек нема ничега у овој хеш ознаци.", "empty_column.home": "Ваша почетна временска линија је празна! Пратите више људи да бисте је попунили.", "empty_column.list": "У овој листи још нема ничега. Када чланови ове листе објаве нешто ново, појавиће се овде.", - "empty_column.lists": "Још увек немате ниједну листу. Када направите једну, она ће се појавити овде.", "empty_column.mutes": "Још увек не игноришете ниједног корисника.", "empty_column.notification_requests": "Све је чисто! Овде нема ничега. Када добијете нова обавештења, она ће се појавити овде у складу са вашим подешавањима.", "empty_column.notifications": "Још увек немате никаква обавештења. Када други људи буду у интеракцији са вама, видећете то овде.", @@ -404,20 +403,11 @@ "link_preview.author": "По {name}", "link_preview.more_from_author": "Више од {name}", "link_preview.shares": "{count, plural, one {{counter} објава} few {{counter} објаве} other {{counter} објава}}", - "lists.account.add": "Додај на листу", - "lists.account.remove": "Уклони са листе", "lists.delete": "Избриши листу", "lists.edit": "Уреди листу", - "lists.edit.submit": "Промени наслов", - "lists.exclusive": "Сакријте ове објаве са почетне странице", - "lists.new.create": "Додај листу", - "lists.new.title_placeholder": "Наслов нове листе", "lists.replies_policy.followed": "Сваком праћеном кориснику", "lists.replies_policy.list": "Члановима листе", "lists.replies_policy.none": "Никоме", - "lists.replies_policy.title": "Прикажи одговоре:", - "lists.search": "Претражи међу људима које пратите", - "lists.subheading": "Ваше листе", "load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}", "loading_indicator.label": "Учитавање…", "moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index df24db9634..0fb714d9a7 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -292,7 +292,6 @@ "empty_column.hashtag": "Det finns inget i denna hashtag ännu.", "empty_column.home": "Din hemma-tidslinje är tom! Följ fler användare för att fylla den.", "empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.", - "empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.", "empty_column.mutes": "Du har ännu inte tystat några användare.", "empty_column.notification_requests": "Allt klart! Det finns inget mer här. När du får nya meddelanden visas de här enligt dina inställningar.", "empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.", @@ -465,20 +464,11 @@ "link_preview.author": "Av {name}", "link_preview.more_from_author": "Mer från {name}", "link_preview.shares": "{count, plural, one {{counter} inlägg} other {{counter} inlägg}}", - "lists.account.add": "Lägg till i lista", - "lists.account.remove": "Ta bort från lista", "lists.delete": "Radera lista", "lists.edit": "Redigera lista", - "lists.edit.submit": "Ändra titel", - "lists.exclusive": "Dölj dessa inlägg från hemflödet", - "lists.new.create": "Lägg till lista", - "lists.new.title_placeholder": "Ny listrubrik", "lists.replies_policy.followed": "Alla användare som följs", "lists.replies_policy.list": "Medlemmar i listan", "lists.replies_policy.none": "Ingen", - "lists.replies_policy.title": "Visa svar till:", - "lists.search": "Sök bland personer du följer", - "lists.subheading": "Dina listor", "load_pending": "{count, plural, one {# nytt objekt} other {# nya objekt}}", "loading_indicator.label": "Laddar…", "media_gallery.hide": "Dölj", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 87d6660f05..1465fcb51f 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -174,7 +174,6 @@ "empty_column.hashtag": "இந்த சிட்டையில் இதுவரை ஏதும் இல்லை.", "empty_column.home": "உங்கள் மாஸ்டடான் வீட்டில் யாரும் இல்லை. {public} -இல் சென்று பார்க்கவும், அல்லது தேடல் கருவியைப் பயன்படுத்திப் பிற பயனர்களைக் கண்டடையவும்.", "empty_column.list": "இந்தப் பட்டியலில் இதுவரை ஏதும் இல்லை. இப்பட்டியலின் உறுப்பினர்கள் புதிய டூட்டுகளை இட்டால். அவை இங்கே காண்பிக்கப்படும்.", - "empty_column.lists": "இதுவரை நீங்கள் எந்தப் பட்டியலையும் உருவாக்கவில்லை. உருவாக்கினால், அது இங்கே காண்பிக்கப்படும்.", "empty_column.mutes": "நீங்கள் இதுவரை எந்தப் பயனர்களையும் முடக்கியிருக்கவில்லை.", "empty_column.notifications": "உங்களுக்காக எந்த அறிவிப்புகளும் இல்லை. உரையாடலைத் துவங்க பிறரைத் தொடர்புகொள்ளவும்.", "empty_column.public": "இங்கு எதுவும் இல்லை! இவ்விடத்தை நிரப்ப எதையேனும் எழுதவும், அல்லது வேறு சர்வர்களில் உள்ள பயனர்களைப் பின்தொடரவும்", @@ -242,15 +241,8 @@ "lightbox.close": "நெருக்கமாக", "lightbox.next": "அடுத்த", "lightbox.previous": "சென்ற", - "lists.account.add": "பட்டியலில் சேர்", - "lists.account.remove": "பட்டியலில் இருந்து அகற்று", "lists.delete": "பட்டியலை நீக்கு", "lists.edit": "பட்டியலை திருத்து", - "lists.edit.submit": "தலைப்பு மாற்றவும்", - "lists.new.create": "பட்டியலில் சேர்", - "lists.new.title_placeholder": "புதிய பட்டியல் தலைப்பு", - "lists.search": "நீங்கள் பின்தொடரும் நபர்கள் மத்தியில் தேடுதல்", - "lists.subheading": "உங்கள் பட்டியல்கள்", "load_pending": "{count, plural,one {# புதியது}other {# புதியவை}}", "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்", "navigation_bar.bookmarks": "அடையாளக்குறிகள்", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 40fbd7f7bd..d58a691635 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -106,7 +106,6 @@ "empty_column.hashtag": "ఇంకా హాష్ ట్యాగ్లో ఏమీ లేదు.", "empty_column.home": "మీ హోమ్ కాలక్రమం ఖాళీగా ఉంది! {Public} ను సందర్శించండి లేదా ఇతర వినియోగదారులను కలుసుకోవడానికి మరియు అన్వేషణ కోసం శోధనను ఉపయోగించండి.", "empty_column.list": "ఇంకా ఈ జాబితాలో ఏదీ లేదు. ఈ జాబితాలోని సభ్యులు కొత్త స్టేటస్ లను పోస్ట్ చేసినప్పుడు, అవి ఇక్కడ కనిపిస్తాయి.", - "empty_column.lists": "మీకు ఇంకా జాబితాలు ఏమీ లేవు. మీరు ఒకటి సృష్టించగానే, అది ఇక్కడ కనబడుతుంది.", "empty_column.mutes": "మీరు ఇంకా ఏ వినియోగదారులనూ మ్యూట్ చేయలేదు.", "empty_column.notifications": "మీకు ఇంకా ఏ నోటిఫికేషన్లు లేవు. సంభాషణను ప్రారంభించడానికి ఇతరులతో ప్రతిస్పందించండి.", "empty_column.public": "ఇక్కడ ఏమీ లేదు! దీన్ని నింపడానికి బహిరంగంగా ఏదైనా వ్రాయండి, లేదా ఇతర సేవికల నుండి వినియోగదారులను అనుసరించండి", @@ -158,15 +157,8 @@ "lightbox.close": "మూసివేయు", "lightbox.next": "తరువాత", "lightbox.previous": "మునుపటి", - "lists.account.add": "జాబితాకు జోడించు", - "lists.account.remove": "జాబితా నుండి తొలగించు", "lists.delete": "జాబితాను తొలగించు", "lists.edit": "జాబితాను సవరించు", - "lists.edit.submit": "శీర్షిక మార్చు", - "lists.new.create": "జాబితాను జోడించు", - "lists.new.title_placeholder": "కొత్త జాబితా శీర్షిక", - "lists.search": "మీరు అనుసరించే వ్యక్తులలో శోధించండి", - "lists.subheading": "మీ జాబితాలు", "navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 95e3e1e52b..b9fe9cf33b 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -280,7 +280,6 @@ "empty_column.hashtag": "ยังไม่มีสิ่งใดในแฮชแท็กนี้", "empty_column.home": "เส้นเวลาหน้าแรกของคุณว่างเปล่า! ติดตามผู้คนเพิ่มเติมเพื่อเติมเส้นเวลาให้เต็ม", "empty_column.list": "ยังไม่มีสิ่งใดในรายการนี้ เมื่อสมาชิกของรายการนี้โพสต์โพสต์ใหม่ โพสต์จะปรากฏที่นี่", - "empty_column.lists": "คุณยังไม่มีรายการใด ๆ เมื่อคุณสร้างรายการ รายการจะปรากฏที่นี่", "empty_column.mutes": "คุณยังไม่ได้ซ่อนผู้ใช้ใด ๆ", "empty_column.notification_requests": "โล่งทั้งหมด! ไม่มีสิ่งใดที่นี่ เมื่อคุณได้รับการแจ้งเตือนใหม่ การแจ้งเตือนจะปรากฏที่นี่ตามการตั้งค่าของคุณ", "empty_column.notifications": "คุณยังไม่มีการแจ้งเตือนใด ๆ เมื่อผู้คนอื่น ๆ โต้ตอบกับคุณ คุณจะเห็นการแจ้งเตือนที่นี่", @@ -453,20 +452,11 @@ "link_preview.author": "โดย {name}", "link_preview.more_from_author": "เพิ่มเติมจาก {name}", "link_preview.shares": "{count, plural, other {{counter} โพสต์}}", - "lists.account.add": "เพิ่มไปยังรายการ", - "lists.account.remove": "เอาออกจากรายการ", "lists.delete": "ลบรายการ", "lists.edit": "แก้ไขรายการ", - "lists.edit.submit": "เปลี่ยนชื่อเรื่อง", - "lists.exclusive": "ซ่อนโพสต์เหล่านี้จากหน้าแรก", - "lists.new.create": "เพิ่มรายการ", - "lists.new.title_placeholder": "ชื่อเรื่องรายการใหม่", "lists.replies_policy.followed": "ผู้ใช้ใด ๆ ที่ติดตาม", "lists.replies_policy.list": "สมาชิกของรายการ", "lists.replies_policy.none": "ไม่มีใคร", - "lists.replies_policy.title": "แสดงการตอบกลับแก่:", - "lists.search": "ค้นหาในหมู่ผู้คนที่คุณติดตาม", - "lists.subheading": "รายการของคุณ", "load_pending": "{count, plural, other {# รายการใหม่}}", "loading_indicator.label": "กำลังโหลด…", "media_gallery.hide": "ซ่อน", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index 2cf7f1929a..d526c271c6 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -191,7 +191,6 @@ "empty_column.hashtag": "ala li lon toki ni", "empty_column.home": "ala a li lon lipu open sina! sina wile lon e ijo lon ni la o kute e jan pi toki suli.", "empty_column.list": "ala li lon kulupu lipu ni. jan pi kulupu lipu ni li toki sin la toki ni li lon ni.", - "empty_column.lists": "sina jo ala e kulupu lipu. sina pali sin e kulupu lipu la ona li lon ni.", "empty_column.mutes": "jan ala li len tawa sina.", "error.unexpected_crash.explanation": "ilo li ken ala pana e lipu ni. ni li ken tan pakala mi tan pakala pi ilo sina.", "errors.unexpected_crash.report_issue": "o toki e pakala tawa lawa", @@ -253,17 +252,11 @@ "lightbox.next": "sinpin", "lightbox.previous": "monsi", "link_preview.author": "tan {name}", - "lists.account.add": "o pana tawa kulupu lipu", - "lists.account.remove": "o weka tan kulupu lipu", "lists.delete": "o weka e kulupu lipu", "lists.edit": "o ante e kulupu lipu", - "lists.edit.submit": "o ante e nimi", - "lists.exclusive": "o len e toki lon lipu open", - "lists.new.create": "o sin e kulupu lipu", "lists.replies_policy.followed": "jan kute ale", "lists.replies_policy.list": "jan pi kulupu ni taso", "lists.replies_policy.none": "jan ala", - "lists.subheading": "kulupu lipu sina", "load_pending": "{count, plural, other {ijo sin #}}", "loading_indicator.label": "ni li kama…", "mute_modal.title": "sina wile ala wile kute e jan ni?", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 061f9c6c28..7851da5ecb 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -140,13 +140,16 @@ "column.blocks": "Engellenen kullanıcılar", "column.bookmarks": "Yer İşaretleri", "column.community": "Yerel ağ akışı", + "column.create_list": "Liste oluştur", "column.direct": "Özel değinmeler", "column.directory": "Profillere göz at", "column.domain_blocks": "Engellenen alan adları", + "column.edit_list": "Listeyi düzenle", "column.favourites": "Gözdelerin", "column.firehose": "Anlık Akışlar", "column.follow_requests": "Takip istekleri", "column.home": "Anasayfa", + "column.list_members": "Liste üyelerini yönet", "column.lists": "Listeler", "column.mutes": "Sessize alınmış kullanıcılar", "column.notifications": "Bildirimler", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Henüz bu etikete sahip hiçbir gönderi yok.", "empty_column.home": "Ana zaman tünelin boş! Akışını doldurmak için daha fazla kişiyi takip ediniz.", "empty_column.list": "Henüz bu listede bir şey yok. Bu listenin üyeleri bir şey paylaşığında burada gözükecek.", - "empty_column.lists": "Henüz listen yok. Liste oluşturduğunda burada görünür.", "empty_column.mutes": "Henüz bir kullanıcıyı sessize almadınız.", "empty_column.notification_requests": "Hepsi tamam! Burada yeni bir şey yok. Yeni bildirim aldığınızda, ayarlarınıza göre burada görüntülenecekler.", "empty_column.notifications": "Henüz bildiriminiz yok. Sohbete başlamak için başkalarıyla etkileşim kurun.", @@ -465,20 +467,31 @@ "link_preview.author": "Yazar: {name}", "link_preview.more_from_author": "{name} kişisinden daha fazlası", "link_preview.shares": "{count, plural, one {{counter} gönderi} other {{counter} gönderi}}", - "lists.account.add": "Listeye ekle", - "lists.account.remove": "Listeden kaldır", + "lists.add_member": "Ekle", + "lists.add_to_list": "Listeye ekle", + "lists.add_to_lists": "{name} kişisini listelere ekle", + "lists.create": "Oluştur", + "lists.create_a_list_to_organize": "Anasayfa akışınızı düzenlemek için yeni bir liste oluşturun", + "lists.create_list": "Liste oluştur", "lists.delete": "Listeyi sil", + "lists.done": "Tamamlandı", "lists.edit": "Listeleri düzenle", - "lists.edit.submit": "Başlığı değiştir", - "lists.exclusive": "Bu gönderileri Anasayfadan gizle", - "lists.new.create": "Liste ekle", - "lists.new.title_placeholder": "Yeni liste başlığı", + "lists.exclusive": "Anasayfada üyeleri gizle", + "lists.exclusive_hint": "Birisi bu listede yer alıyorsa, gönderilerini iki kez görmekten kaçınmak için onu anasayfa akışınızda gizleyin.", + "lists.find_users_to_add": "Eklenecek kullanıcıları bul", + "lists.list_members": "Liste üyeleri", + "lists.list_members_count": "{count, plural, one {# üye} other {# üye}}", + "lists.list_name": "Liste adı", + "lists.new_list_name": "Yeni liste adı", + "lists.no_lists_yet": "Henüz liste yok.", + "lists.no_members_yet": "Henüz üye yok.", + "lists.no_results_found": "Sonuç bulunamadı.", + "lists.remove_member": "Kaldır", "lists.replies_policy.followed": "Takip edilen herhangi bir kullanıcı", "lists.replies_policy.list": "Listenin üyeleri", "lists.replies_policy.none": "Hiç kimse", - "lists.replies_policy.title": "Yanıtları göster:", - "lists.search": "Takip ettiğiniz kişiler arasından arayın", - "lists.subheading": "Listeleriniz", + "lists.save": "Kaydet", + "lists.search_placeholder": "Takip ettiğiniz kişilerde arama yapın", "load_pending": "{count, plural, one {# yeni öğe} other {# yeni öğe}}", "loading_indicator.label": "Yükleniyor…", "media_gallery.hide": "Gizle", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 08bb7979a1..07b9decc10 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -275,16 +275,10 @@ "lightbox.previous": "Алдагы", "limited_account_hint.action": "Барыбер профильне күрсәтергә", "limited_account_hint.title": "Бу профильне модераторлар яшергән {domain}.", - "lists.account.add": "Исемлеккә өстәргә", - "lists.account.remove": "Исемлектән бетерергә", "lists.delete": "Исемлекне бетерегез", "lists.edit": "Исемлекне үзгәртү", - "lists.edit.submit": "Исемен үзгәртү", - "lists.new.create": "Исемлек өстәгез", - "lists.new.title_placeholder": "Яңа исемлек башламы", "lists.replies_policy.list": "Исемлек әгъзалары", "lists.replies_policy.none": "Һичкем", - "lists.subheading": "Исемлегегегезләр", "load_pending": "{count, plural, one {# яңа элемент} other {# яңа элемент}}", "navigation_bar.about": "Проект турында", "navigation_bar.blocks": "Блокланган кулланучылар", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 0e0906eb37..a88c588350 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -140,9 +140,11 @@ "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", "column.community": "Локальна стрічка", + "column.create_list": "Створити список", "column.direct": "Особисті згадки", "column.directory": "Переглянути профілі", "column.domain_blocks": "Заблоковані домени", + "column.edit_list": "Редагувати список", "column.favourites": "Уподобане", "column.firehose": "Стрічка новин", "column.follow_requests": "Запити на підписку", @@ -292,7 +294,6 @@ "empty_column.hashtag": "Дописів з цим гештеґом поки не існує.", "empty_column.home": "Ваша стрічка порожня! Підпишіться на інших, щоб її заповнити.", "empty_column.list": "Цей список порожній. Коли його учасники додадуть нові дописи, вони з'являться тут.", - "empty_column.lists": "У вас ще немає списків. Коли ви їх створите, вони з'являться тут.", "empty_column.mutes": "Ви ще не приховали жодного користувача.", "empty_column.notification_requests": "Усе чисто! Тут нічого немає. Коли ви отримаєте нові сповіщення, вони з'являться тут відповідно до ваших налаштувань.", "empty_column.notifications": "У вас ще немає сповіщень. Коли інші люди почнуть взаємодіяти з вами, ви побачите їх тут.", @@ -465,20 +466,11 @@ "link_preview.author": "Від {name}", "link_preview.more_from_author": "Більше від {name}", "link_preview.shares": "{count, plural, one {{counter} допис} few {{counter} дописи} many {{counter} дописів} other {{counter} допис}}", - "lists.account.add": "Додати до списку", - "lists.account.remove": "Вилучити зі списку", "lists.delete": "Видалити список", "lists.edit": "Редагувати список", - "lists.edit.submit": "Змінити назву", - "lists.exclusive": "Сховати ці дописи з домашньої сторінки", - "lists.new.create": "Додати список", - "lists.new.title_placeholder": "Нова назва списку", "lists.replies_policy.followed": "Будь-який відстежуваний користувач", "lists.replies_policy.list": "Учасники списку", "lists.replies_policy.none": "Ніхто", - "lists.replies_policy.title": "Показати відповіді для:", - "lists.search": "Шукати серед людей, на яких ви підписані", - "lists.subheading": "Ваші списки", "load_pending": "{count, plural, one {# новий елемент} other {# нових елементів}}", "loading_indicator.label": "Завантаження…", "media_gallery.hide": "Сховати", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index cb5dfa63cd..476b8c2afb 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -162,7 +162,6 @@ "empty_column.hashtag": "ابھی یہ ہیش ٹیگ خالی ہے.", "empty_column.home": "آپ کا خانگی جدول خالی ہے! {public} دیکھیں یا شروعات کیلئے تلاش کریں اور دیگر صارفین سے ملیں.", "empty_column.list": "یہ فہرست ابھی خالی ہے. جب اس فہرست کے ارکان کچھ تحریر کریں گے، یہاں نظر آئے گا.", - "empty_column.lists": "ابھی آپ کی کوئی فہرست نہیں ہے. جب آپ بنائیں گے، وہ یہاں نظر آئے گی.", "empty_column.mutes": "آپ نے ابھی کسی صارف کو خاموش نہیں کیا ہے.", "empty_column.notifications": "ابھی آپ کیلئے کوئی اطلاعات نہیں ہیں. گفتگو شروع کرنے کے لئے دیگر صارفین سے متعامل ہوں.", "empty_column.public": "یہاں کچھ بھی نہیں ہے! کچھ عمومی تحریر کریں یا اس جگہ کو پُر کرنے کے لئے از خود دیگر سرورس کے صارفین کی پیروی کریں", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 6dae368ffc..dd67fc6c81 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -187,7 +187,6 @@ "empty_column.hashtag": "Ushbu hashtagda hali hech narsa yo'q.", "empty_column.home": "Bosh sahifa yilnomangiz boʻsh! Uni to'ldirish uchun ko'proq odamlarni kuzatib boring. {suggestions}", "empty_column.list": "Bu ro'yxatda hali hech narsa yo'q. Ushbu roʻyxat aʼzolari yangi xabarlarni nashr qilganda, ular shu yerda paydo boʻladi.", - "empty_column.lists": "Sizda hali hech qanday roʻyxat yoʻq. Uni yaratganingizda, u shu yerda paydo bo'ladi.", "empty_column.mutes": "Siz hali hech bir foydalanuvchining ovozini o‘chirmagansiz.", "empty_column.notifications": "Sizda hali hech qanday bildirishnoma yo‘q. Boshqa odamlar siz bilan muloqot qilganda, buni shu yerda ko'rasiz.", "empty_column.public": "Bu erda hech narsa yo'q! Biror narsani ochiq yozing yoki uni toʻldirish uchun boshqa serverlardagi foydalanuvchilarni qoʻlda kuzatib boring", @@ -288,16 +287,10 @@ "keyboard_shortcuts.up": "Roʻyxatda yuqoriga koʻtarish", "lightbox.close": "Yopish", "limited_account_hint.action": "Baribir profilni ko'rsatish", - "lists.account.add": "Ro‘yxatga qo‘shish", - "lists.account.remove": "Roʻyxatdan o'chirish", "lists.delete": "Roʻyxatni o'chirish", "lists.edit": "Roʻyxatni tahrirlash", - "lists.new.create": "Ro‘yxatga qo‘shish", "lists.replies_policy.list": "Ro'yxat a'zolari", "lists.replies_policy.none": "Hech kim", - "lists.replies_policy.title": "Javoblarni ko'rsatish:", - "lists.search": "Siz kuzatadigan odamlar orasidan qidiring", - "lists.subheading": "Sizning ro'yxatlaringiz", "load_pending": "{count, plural, one {# yangi element} other {# yangi elementlar}}", "moved_to_account_banner.text": "{movedToAccount} hisobiga koʻchganingiz uchun {disabledAccount} hisobingiz hozirda oʻchirib qoʻyilgan.", "navigation_bar.about": "Haqida", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 73016ed8c9..4ba36e0545 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -140,13 +140,16 @@ "column.blocks": "Người đã chặn", "column.bookmarks": "Những tút đã lưu", "column.community": "Máy chủ này", + "column.create_list": "Tạo danh sách", "column.direct": "Nhắn riêng", "column.directory": "Tìm người cùng sở thích", "column.domain_blocks": "Máy chủ đã chặn", + "column.edit_list": "Sửa danh sách", "column.favourites": "Những tút đã thích", "column.firehose": "Bảng tin", "column.follow_requests": "Yêu cầu theo dõi", "column.home": "Trang chủ", + "column.list_members": "Quản lý danh sách", "column.lists": "Danh sách", "column.mutes": "Người đã ẩn", "column.notifications": "Thông báo", @@ -292,7 +295,6 @@ "empty_column.hashtag": "Chưa có tút nào dùng hashtag này.", "empty_column.home": "Trang chủ của bạn đang trống! Hãy theo dõi nhiều người hơn để lấp đầy.", "empty_column.list": "Chưa có tút. Khi những người trong danh sách này đăng tút mới, chúng sẽ xuất hiện ở đây.", - "empty_column.lists": "Bạn chưa tạo danh sách nào.", "empty_column.mutes": "Bạn chưa ẩn bất kỳ ai.", "empty_column.notification_requests": "Sạch sẽ! Không còn gì ở đây. Khi bạn nhận được thông báo mới, chúng sẽ xuất hiện ở đây theo cài đặt của bạn.", "empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử theo dõi hoặc nhắn riêng cho ai đó.", @@ -465,20 +467,32 @@ "link_preview.author": "Bởi {name}", "link_preview.more_from_author": "Viết bởi {name}", "link_preview.shares": "{count, plural, other {{counter} lượt chia sẻ}}", - "lists.account.add": "Thêm vào danh sách", - "lists.account.remove": "Xóa khỏi danh sách", + "lists.add_member": "Thêm", + "lists.add_to_list": "Thêm vào danh sách", + "lists.add_to_lists": "Thêm {name} vào danh sách", + "lists.create": "Tạo", + "lists.create_a_list_to_organize": "Tạo một danh sách để sắp xếp Bảng tin", + "lists.create_list": "Tạo danh sách", "lists.delete": "Xóa danh sách", + "lists.done": "Xong", "lists.edit": "Sửa danh sách", - "lists.edit.submit": "Thay đổi tiêu đề", - "lists.exclusive": "Ẩn những tút này khỏi bảng tin", - "lists.new.create": "Tạo mới", - "lists.new.title_placeholder": "Tên danh sách", + "lists.exclusive": "Ẩn thành viên trong Trang chủ", + "lists.exclusive_hint": "Nếu ai đó có trong danh sách này, ẩn họ trong Trang chủ để tránh thấy tút của họ hiện trùng lặp.", + "lists.find_users_to_add": "Tìm người để thêm vào", + "lists.list_members": "Liệt kê các thành viên", + "lists.list_members_count": "{count, plural, other {# thành viên}}", + "lists.list_name": "Tên danh sách", + "lists.new_list_name": "Tên danh sách mới", + "lists.no_lists_yet": "Chưa có danh sách nào.", + "lists.no_members_yet": "Chưa có thành viên nào.", + "lists.no_results_found": "Không tìm thấy kết quả nào.", + "lists.remove_member": "Xóa", "lists.replies_policy.followed": "Người theo dõi", "lists.replies_policy.list": "Người trong danh sách", "lists.replies_policy.none": "Không ai", - "lists.replies_policy.title": "Cho phép trả lời với:", - "lists.search": "Tìm kiếm những người mà bạn quan tâm", - "lists.subheading": "Danh sách của bạn", + "lists.save": "Lưu", + "lists.search_placeholder": "Tìm những người mà bạn quan tâm", + "lists.show_replies_to": "Bao gồm lượt trả lời từ thành viên danh sách", "load_pending": "{count, plural, one {# tút mới} other {# tút mới}}", "loading_indicator.label": "Đang tải…", "media_gallery.hide": "Ẩn", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 2fe63fe83c..73a626d59f 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -107,16 +107,9 @@ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "ⵔⴳⵍ", - "lists.account.add": "ⵔⵏⵓ ⵖⵔ ⵜⵍⴳⴰⵎⵜ", - "lists.account.remove": "ⴽⴽⵙ ⵙⴳ ⵜⵍⴳⴰⵎⵜ", "lists.delete": "ⴽⴽⵙ ⵜⴰⵍⴳⴰⵎⵜ", "lists.edit": "ⵙⵏⴼⵍ ⵜⴰⵍⴳⴰⵎⵜ", - "lists.edit.submit": "ⵙⵏⴼⵍ ⴰⵣⵡⵍ", - "lists.new.create": "ⵙⴽⵔ ⵜⴰⵍⴳⴰⵎⵜ", - "lists.new.title_placeholder": "ⴰⵣⵡⵍ ⵏ ⵜⵍⴳⴰⵎⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ", "lists.replies_policy.none": "ⴰⵡⴷ ⵢⴰⵏ", - "lists.replies_policy.title": "ⵙⴽⵏ ⵜⵉⵔⴰⵔⵉⵏ ⵉ:", - "lists.subheading": "ⵜⵉⵍⴳⴰⵎⵉⵏ ⵏⵏⴽ", "load_pending": "{count, plural, one {# ⵓⴼⵔⴷⵉⵙ ⴰⵎⴰⵢⵏⵓ} other {# ⵉⴼⵔⴷⴰⵙ ⵉⵎⴰⵢⵏⵓⵜⵏ}}", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 463167e8f8..16d32417c6 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -140,13 +140,16 @@ "column.blocks": "屏蔽的用户", "column.bookmarks": "书签", "column.community": "本站时间线", + "column.create_list": "创建列表", "column.direct": "私下提及", "column.directory": "浏览用户资料", "column.domain_blocks": "已屏蔽的域名", + "column.edit_list": "编辑列表", "column.favourites": "喜欢", "column.firehose": "实时动态", "column.follow_requests": "关注请求", "column.home": "主页", + "column.list_members": "管理列表成员", "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", @@ -292,7 +295,6 @@ "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你的主页时间线还没有内容!快去关注更多人吧。", "empty_column.list": "列表中还没有任何内容。当列表成员发布新嘟文时,它们将出现在这里。", - "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。", "empty_column.mutes": "你没有隐藏任何用户。", "empty_column.notification_requests": "都看完了!这里没有任何未读通知。当收到新的通知时,它们将根据你的设置显示在这里。", "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。", @@ -465,20 +467,32 @@ "link_preview.author": "由 {name}", "link_preview.more_from_author": "查看 {name} 的更多内容", "link_preview.shares": "{count, plural, other {{counter} 条嘟文}}", - "lists.account.add": "添加到列表", - "lists.account.remove": "从列表中移除", + "lists.add_member": "添加", + "lists.add_to_list": "添加到列表", + "lists.add_to_lists": "把 {name} 添加到列表", + "lists.create": "创建", + "lists.create_a_list_to_organize": "新建一个列表,整理你的主页动态", + "lists.create_list": "创建列表", "lists.delete": "删除列表", + "lists.done": "完成", "lists.edit": "编辑列表", - "lists.edit.submit": "更改标题", - "lists.exclusive": "在主页中隐藏这些嘟文", - "lists.new.create": "新建列表", - "lists.new.title_placeholder": "新列表的标题", + "lists.exclusive": "在主页动态中隐藏列表成员", + "lists.exclusive_hint": "列表成员的嘟文将不会在你的主页动态中显示,以免重复阅读。", + "lists.find_users_to_add": "查找要添加的用户", + "lists.list_members": "列表成员", + "lists.list_members_count": "{count, plural, other {# 人}}", + "lists.list_name": "列表名称", + "lists.new_list_name": "新列表名称", + "lists.no_lists_yet": "尚无列表。", + "lists.no_members_yet": "尚无成员。", + "lists.no_results_found": "未找到结果。", + "lists.remove_member": "移除", "lists.replies_policy.followed": "所有我关注的用户", "lists.replies_policy.list": "列表成员", "lists.replies_policy.none": "不显示", - "lists.replies_policy.title": "显示回复:", - "lists.search": "搜索你关注的人", - "lists.subheading": "你的列表", + "lists.save": "保存", + "lists.search_placeholder": "搜索你关注的人", + "lists.show_replies_to": "列表成员回复的显示范围", "load_pending": "{count} 项", "loading_indicator.label": "加载中…", "media_gallery.hide": "隐藏", @@ -691,7 +705,7 @@ "privacy.direct.short": "特定的人", "privacy.private.long": "仅限你的关注者", "privacy.private.short": "关注者", - "privacy.public.long": "所有 Mastodon 内外的人", + "privacy.public.long": "", "privacy.public.short": "公开", "privacy.unlisted.additional": "该模式的行为与“公开”完全相同,只是嘟文不会出现在实时动态、话题标签、探索或 Mastodon 搜索中,即使你已在账户级设置中选择加入。", "privacy.unlisted.long": "减少算法影响", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 8acd6df078..ff0a124fcf 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -263,7 +263,6 @@ "empty_column.hashtag": "這個標籤暫時未有內容。", "empty_column.home": "你還沒有關注任何使用者。快看看{public},向其他使用者搭訕吧。", "empty_column.list": "這個列表暫時未有內容。", - "empty_column.lists": "你還沒有建立任何名單。這裡將會顯示你所建立的名單。", "empty_column.mutes": "你尚未靜音任何使用者。", "empty_column.notification_requests": "沒有新通知了!當有新通知時,會根據設定顯示在這裏。", "empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。", @@ -410,20 +409,11 @@ "limited_account_hint.action": "一律顯示個人檔案", "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。", "link_preview.author": "由 {name} 提供", - "lists.account.add": "新增到列表", - "lists.account.remove": "從列表刪除", "lists.delete": "刪除列表", "lists.edit": "編輯列表", - "lists.edit.submit": "變更標題", - "lists.exclusive": "從主頁隱藏這些帖文", - "lists.new.create": "新增列表", - "lists.new.title_placeholder": "新列表標題", "lists.replies_policy.followed": "任何已關注的用戶", "lists.replies_policy.list": "列表中的用戶", "lists.replies_policy.none": "無人", - "lists.replies_policy.title": "顯示回應文章︰", - "lists.search": "從你關注的人搜索", - "lists.subheading": "列表", "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "載入中…", "media_gallery.hide": "隱藏", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 56ddd9745e..355fecac4c 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -140,13 +140,16 @@ "column.blocks": "已封鎖的使用者", "column.bookmarks": "書籤", "column.community": "本站時間軸", + "column.create_list": "建立列表", "column.direct": "私訊", "column.directory": "瀏覽個人檔案", "column.domain_blocks": "已封鎖網域", + "column.edit_list": "編輯列表", "column.favourites": "最愛", "column.firehose": "即時內容", "column.follow_requests": "跟隨請求", "column.home": "首頁", + "column.list_members": "管理列表成員", "column.lists": "列表", "column.mutes": "已靜音的使用者", "column.notifications": "推播通知", @@ -292,7 +295,6 @@ "empty_column.hashtag": "這個主題標籤下什麼也沒有。", "empty_column.home": "您的首頁時間軸是空的!跟隨更多人來將它填滿吧!", "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出新的嘟文時,它們將顯示於此。", - "empty_column.lists": "您還沒有新增任何列表。當您新增列表時,它將於此顯示。", "empty_column.mutes": "您尚未靜音任何使用者。", "empty_column.notification_requests": "清空啦!已經沒有任何推播通知。當您收到新推播通知時,它們將依照您的設定於此顯示。", "empty_column.notifications": "您還沒有收到任何推播通知,當您與別人開始互動時,它將於此顯示。", @@ -465,20 +467,32 @@ "link_preview.author": "來自 {name}", "link_preview.more_from_author": "來自 {name} 之更多內容", "link_preview.shares": "{count, plural, other {{count} 則嘟文}}", - "lists.account.add": "新增至列表", - "lists.account.remove": "自列表中移除", + "lists.add_member": "新增", + "lists.add_to_list": "新增至列表", + "lists.add_to_lists": "新增 {name} 至列表", + "lists.create": "建立", + "lists.create_a_list_to_organize": "建立新列表以整理您的首頁動態", + "lists.create_list": "建立列表", "lists.delete": "刪除列表", + "lists.done": "完成", "lists.edit": "編輯列表", - "lists.edit.submit": "變更標題", - "lists.exclusive": "於首頁時間軸隱藏這些嘟文", - "lists.new.create": "新增列表", - "lists.new.title_placeholder": "新列表標題", + "lists.exclusive": "在首頁隱藏成員", + "lists.exclusive_hint": "如果某個帳號於此列表中,將自您的首頁動態中隱藏此帳號,以防重複見到他們的嘟文。", + "lists.find_users_to_add": "尋找欲新增之使用者", + "lists.list_members": "列表成員", + "lists.list_members_count": "{count, plural, other {# 個成員}}", + "lists.list_name": "列表名稱", + "lists.new_list_name": "新列表名稱", + "lists.no_lists_yet": "尚無列表。", + "lists.no_members_yet": "尚無成員。", + "lists.no_results_found": "找不到結果。", + "lists.remove_member": "移除", "lists.replies_policy.followed": "任何跟隨的使用者", "lists.replies_policy.list": "列表成員", "lists.replies_policy.none": "沒有人", - "lists.replies_policy.title": "顯示回覆:", - "lists.search": "搜尋您跟隨之使用者", - "lists.subheading": "您的列表", + "lists.save": "儲存", + "lists.search_placeholder": "搜尋您跟隨的人", + "lists.show_replies_to": "包含來自列表成員的回覆到", "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "正在載入...", "media_gallery.hide": "隱藏", diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 61de577709..04c23f1706 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -311,7 +311,7 @@ zh-CN: text: 规则 settings: indexable: 允许搜索引擎索引个人资料页面 - show_application: 显示你发嘟所用的应用 + show_application: 显示 tag: listable: 允许这个话题标签在用户目录中显示 name: 话题标签 From d0753ec276502ea28a1e853cbc6487020a0602e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:54:58 +0100 Subject: [PATCH 441/550] Update dependency aws-sdk-s3 to v1.173.0 (#33019) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d005c744cc..471795a7e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,7 +95,7 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.1009.0) + aws-partitions (1.1012.0) aws-sdk-core (3.213.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -104,7 +104,7 @@ GEM aws-sdk-kms (1.96.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.172.0) + aws-sdk-s3 (1.173.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From 9ebed5d410ddd1f7f427235a81096d13a2666657 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 22 Nov 2024 09:58:04 +0100 Subject: [PATCH 442/550] Fix CSS warnings (#32266) --- .../styles/mastodon/components.scss | 23 ++++--------------- app/javascript/styles/mastodon/polls.scss | 5 ---- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 8b95c3776e..2c6efb71b4 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6154,13 +6154,6 @@ a.status-card { } } -.onboard-sliders { - display: inline-block; - max-width: 30px; - max-height: auto; - margin-inline-start: 10px; -} - .safety-action-modal { width: 600px; flex-direction: column; @@ -8739,6 +8732,7 @@ noscript { &__item { flex-shrink: 0; background: lighten($ui-base-color, 12%); + color: $darker-text-color; border: 0; border-radius: 3px; margin: 2px; @@ -8775,7 +8769,6 @@ noscript { font-weight: 500; text-align: center; margin-inline-start: 6px; - color: $darker-text-color; } &:hover, @@ -8784,10 +8777,7 @@ noscript { background: lighten($ui-base-color, 16%); transition: all 200ms ease-out; transition-property: background-color, color; - - &__count { - color: lighten($darker-text-color, 4%); - } + color: lighten($darker-text-color, 4%); } &.active { @@ -8798,10 +8788,7 @@ noscript { $ui-highlight-color, 80% ); - - .reactions-bar__item__count { - color: lighten($highlight-text-color, 8%); - } + color: lighten($highlight-text-color, 8%); } } @@ -10416,7 +10403,7 @@ noscript { &__text { flex: 1 1 auto; - font-style: 14px; + font-size: 14px; line-height: 20px; strong { @@ -10474,7 +10461,7 @@ noscript { &__name { flex: 1 1 auto; color: $darker-text-color; - font-style: 14px; + font-size: 14px; line-height: 20px; overflow: hidden; text-overflow: ellipsis; diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss index 939fca3364..ced4c60c44 100644 --- a/app/javascript/styles/mastodon/polls.scss +++ b/app/javascript/styles/mastodon/polls.scss @@ -38,11 +38,6 @@ background: darken($ui-primary-color, 5%); } - &::-ms-fill { - border-radius: 4px; - background: darken($ui-primary-color, 5%); - } - &::-webkit-progress-value { border-radius: 4px; background: darken($ui-primary-color, 5%); From 0ad5c212c112716e67ce4e7e206a822e6cd13cbd Mon Sep 17 00:00:00 2001 From: Oliver Geer <69071853+WebCoder49@users.noreply.github.com> Date: Fri, 22 Nov 2024 09:50:47 +0000 Subject: [PATCH 443/550] Fix accounts table long display name (#29316) --- app/javascript/styles/mastodon/widgets.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index d810ee4bfc..e1e8797460 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -82,6 +82,7 @@ .accounts-table { width: 100%; + table-layout: fixed; .account { padding: 0; From 35683ac154ee7c717246dcac0d791b3f93c3824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=B7=E3=83=A5=E3=83=B3=E3=82=B8=E3=83=A7=E3=83=BC?= =?UTF-8?q?=E3=82=A1?= <68307970+mszpro@users.noreply.github.com> Date: Fri, 22 Nov 2024 19:04:48 +0900 Subject: [PATCH 444/550] Remove webauthn credentials on `tootctl accounts modify --disable-2fa` (#29883) Co-authored-by: Claire --- lib/mastodon/cli/accounts.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/cli/accounts.rb b/lib/mastodon/cli/accounts.rb index c8e91224cf..41127741ef 100644 --- a/lib/mastodon/cli/accounts.rb +++ b/lib/mastodon/cli/accounts.rb @@ -164,7 +164,7 @@ module Mastodon::CLI user.disabled = false if options[:enable] user.disabled = true if options[:disable] user.approved = true if options[:approve] - user.otp_required_for_login = false if options[:disable_2fa] + user.disable_two_factor! if options[:disable_2fa] if user.save user.confirm if options[:confirm] From 9d34146aaae9e87384c3d16e04ed935a96049e3c Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 22 Nov 2024 15:19:11 +0100 Subject: [PATCH 445/550] Remove redundant temporary index creation in `tootctl status remove` (#33023) --- lib/mastodon/cli/statuses.rb | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/lib/mastodon/cli/statuses.rb b/lib/mastodon/cli/statuses.rb index f441dbcd84..7104181e97 100644 --- a/lib/mastodon/cli/statuses.rb +++ b/lib/mastodon/cli/statuses.rb @@ -40,17 +40,11 @@ module Mastodon::CLI def remove_statuses return if options[:skip_status_remove] - say('Creating temporary database indices...') - - ActiveRecord::Base.connection.add_index(:media_attachments, :remote_url, name: :index_media_attachments_remote_url, where: 'remote_url is not null', algorithm: :concurrently, if_not_exists: true) - - max_id = Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false) start_at = Time.now.to_f - unless options[:continue] && ActiveRecord::Base.connection.table_exists?('statuses_to_be_deleted') - ActiveRecord::Base.connection.add_index(:accounts, :id, name: :index_accounts_local, where: 'domain is null', algorithm: :concurrently, if_not_exists: true) - ActiveRecord::Base.connection.add_index(:status_pins, :status_id, name: :index_status_pins_status_id, algorithm: :concurrently, if_not_exists: true) + max_id = Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false) + unless options[:continue] && ActiveRecord::Base.connection.table_exists?('statuses_to_be_deleted') say('Extract the deletion target from statuses... This might take a while...') ActiveRecord::Base.connection.create_table('statuses_to_be_deleted', force: true) @@ -72,9 +66,6 @@ module Mastodon::CLI SQL say('Removing temporary database indices to restore write performance...') - - ActiveRecord::Base.connection.remove_index(:accounts, name: :index_accounts_local, if_exists: true) - ActiveRecord::Base.connection.remove_index(:status_pins, name: :index_status_pins_status_id, if_exists: true) end say('Beginning statuses removal... This might take a while...') @@ -102,12 +93,6 @@ module Mastodon::CLI ActiveRecord::Base.connection.drop_table('statuses_to_be_deleted') say("Done after #{Time.now.to_f - start_at}s, removed #{removed} out of #{processed} statuses.", :green) - ensure - say('Removing temporary database indices to restore write performance...') - - ActiveRecord::Base.connection.remove_index(:accounts, name: :index_accounts_local, if_exists: true) - ActiveRecord::Base.connection.remove_index(:status_pins, name: :index_status_pins_status_id, if_exists: true) - ActiveRecord::Base.connection.remove_index(:media_attachments, name: :index_media_attachments_remote_url, if_exists: true) end def remove_orphans_media_attachments From 04ce5939ae1d865b24e1ea8512c33bbb06889409 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 22 Nov 2024 15:36:08 +0100 Subject: [PATCH 446/550] Prevent delivery of new posts to suspended followers (#27509) --- app/lib/status_reach_finder.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 17e42e3ec3..d08c077c74 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -16,7 +16,9 @@ class StatusReachFinder private def reached_account_inboxes - Account.where(id: reached_account_ids).inboxes + scope = Account.where(id: reached_account_ids) + scope.merge!(Account.without_suspended) unless unsafe? + scope.inboxes end def reached_account_ids From 99f36f1b7b4350747de5043eed2528291aa4c469 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 22 Nov 2024 15:43:16 +0100 Subject: [PATCH 447/550] Tweak antispam a bit (#33024) --- app/lib/antispam.rb | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/app/lib/antispam.rb b/app/lib/antispam.rb index bc4841280f..4ebf192485 100644 --- a/app/lib/antispam.rb +++ b/app/lib/antispam.rb @@ -5,25 +5,36 @@ class Antispam ACCOUNT_AGE_EXEMPTION = 1.week.freeze + class DummyStatus < SimpleDelegator + def self.model_name + Mention.model_name + end + + def active_mentions + # Don't use the scope but the in-memory array + mentions.filter { |mention| !mention.silent? } + end + end + class SilentlyDrop < StandardError attr_reader :status def initialize(status) super() - @status = status - status.created_at = Time.now.utc status.id = Mastodon::Snowflake.id_at(status.created_at) status.in_reply_to_account_id = status.thread&.account_id status.delete # Make sure this is not persisted + + @status = DummyStatus.new(status) end end def local_preflight_check!(status) return unless spammy_texts.any? { |spammy_text| status.text.include?(spammy_text) } - return unless status.thread.present? && !status.thread.account.following?(status.account) + return unless suspicious_reply_or_mention?(status) return unless status.account.created_at >= ACCOUNT_AGE_EXEMPTION.ago report_if_needed!(status.account) @@ -37,6 +48,14 @@ class Antispam redis.smembers('antispam:spammy_texts') end + def suspicious_reply_or_mention?(status) + parent = status.thread + return true if parent.present? && !Follow.exists?(account_id: parent.account_id, target_account: status.account_id) + + account_ids = status.mentions.map(&:account_id).uniq + !Follow.exists?(account_id: account_ids, target_account_id: status.account.id) + end + def report_if_needed!(account) return if Report.unresolved.exists?(account: Account.representative, target_account: account) From 2e66dd09e2d2db54327188ae9e393d2004c7bb95 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Fri, 22 Nov 2024 15:48:41 +0100 Subject: [PATCH 448/550] Show default time zone (#31803) --- app/views/settings/preferences/appearance/show.html.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 22f88c7cdd..1239b8bcd9 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -18,6 +18,7 @@ = f.input :time_zone, collection: ActiveSupport::TimeZone.all.map { |tz| ["(GMT#{tz.formatted_offset}) #{tz.name}", tz.tzinfo.name] }, hint: false, + selected: current_user.time_zone || Time.zone.tzinfo.name, wrapper: :with_label .fields-group From 21a8612aaba7ca871c7b45ef6ef84e7b20f97a22 Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Fri, 22 Nov 2024 16:58:48 +0100 Subject: [PATCH 449/550] Prevent delivery of posts to (even more) suspended followers (#33030) --- app/lib/status_reach_finder.rb | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index d08c077c74..5fb1964337 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -17,8 +17,7 @@ class StatusReachFinder def reached_account_inboxes scope = Account.where(id: reached_account_ids) - scope.merge!(Account.without_suspended) unless unsafe? - scope.inboxes + inboxes_without_suspended_for(scope) end def reached_account_ids @@ -71,13 +70,8 @@ class StatusReachFinder end def followers_inboxes - if @status.in_reply_to_local_account? && distributable? - @status.account.followers.or(@status.thread.account.followers.not_domain_blocked_by_account(@status.account)).inboxes - elsif @status.direct_visibility? || @status.limited_visibility? - [] - else - @status.account.followers.inboxes - end + scope = followers_scope + inboxes_without_suspended_for(scope) end def relay_inboxes @@ -95,4 +89,19 @@ class StatusReachFinder def unsafe? @options[:unsafe] end + + def followers_scope + if @status.in_reply_to_local_account? && distributable? + @status.account.followers.or(@status.thread.account.followers.not_domain_blocked_by_account(@status.account)) + elsif @status.direct_visibility? || @status.limited_visibility? + Account.none + else + @status.account.followers + end + end + + def inboxes_without_suspended_for(scope) + scope.merge!(Account.without_suspended) unless unsafe? + scope.inboxes + end end From 27e79da6b9d296ff20d8f1b800414ad039031fa5 Mon Sep 17 00:00:00 2001 From: Nick Schonning Date: Fri, 22 Nov 2024 17:23:02 -0500 Subject: [PATCH 450/550] Update immutable imports for v5 (#33037) --- .../features/status/components/card.jsx | 4 ++-- .../mastodon/features/status/index.jsx | 10 ++++---- .../subscribed_languages_modal/index.jsx | 2 +- app/javascript/mastodon/models/account.ts | 24 +++++++++++-------- .../mastodon/reducers/push_notifications.js | 12 +++++----- 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/app/javascript/mastodon/features/status/components/card.jsx b/app/javascript/mastodon/features/status/components/card.jsx index ee1fbe0f8f..136a5568a4 100644 --- a/app/javascript/mastodon/features/status/components/card.jsx +++ b/app/javascript/mastodon/features/status/components/card.jsx @@ -8,7 +8,7 @@ import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; -import Immutable from 'immutable'; +import { is } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import DescriptionIcon from '@/material-icons/400-24px/description-fill.svg?react'; @@ -73,7 +73,7 @@ export default class Card extends PureComponent { }; UNSAFE_componentWillReceiveProps (nextProps) { - if (!Immutable.is(this.props.card, nextProps.card)) { + if (!is(this.props.card, nextProps.card)) { this.setState({ embedded: false, previewLoaded: false }); } diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index c115f77755..8da3d7e11a 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -7,7 +7,7 @@ import { Helmet } from 'react-helmet'; import { withRouter } from 'react-router-dom'; import { createSelector } from '@reduxjs/toolkit'; -import Immutable from 'immutable'; +import { List as ImmutableList } from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; @@ -87,7 +87,7 @@ const makeMapStateToProps = () => { (_, { id }) => id, state => state.getIn(['contexts', 'inReplyTos']), ], (statusId, inReplyTos) => { - let ancestorsIds = Immutable.List(); + let ancestorsIds = ImmutableList(); ancestorsIds = ancestorsIds.withMutations(mutable => { let id = statusId; @@ -134,14 +134,14 @@ const makeMapStateToProps = () => { }); } - return Immutable.List(descendantsIds); + return ImmutableList(descendantsIds); }); const mapStateToProps = (state, props) => { const status = getStatus(state, { id: props.params.statusId }); - let ancestorsIds = Immutable.List(); - let descendantsIds = Immutable.List(); + let ancestorsIds = ImmutableList(); + let descendantsIds = ImmutableList(); if (status) { ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') }); diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx index 0531346f91..895a2686e8 100644 --- a/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx +++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.jsx @@ -23,7 +23,7 @@ const getAccountLanguages = createSelector([ (state, accountId) => state.getIn(['timelines', `account:${accountId}`, 'items'], ImmutableList()), state => state.get('statuses'), ], (statusIds, statuses) => - new ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language')))); + ImmutableSet(statusIds.map(statusId => statuses.get(statusId)).filter(status => !status.get('reblog')).map(status => status.get('language')))); const mapStateToProps = (state, { accountId }) => ({ acct: state.getIn(['accounts', accountId, 'acct']), diff --git a/app/javascript/mastodon/models/account.ts b/app/javascript/mastodon/models/account.ts index 8e8e3b0e8d..34fd1b57e9 100644 --- a/app/javascript/mastodon/models/account.ts +++ b/app/javascript/mastodon/models/account.ts @@ -1,5 +1,5 @@ import type { RecordOf } from 'immutable'; -import { List, Record as ImmutableRecord } from 'immutable'; +import { List as ImmutableList, Record as ImmutableRecord } from 'immutable'; import escapeTextContentForBrowser from 'escape-html'; @@ -48,9 +48,9 @@ export interface AccountShape extends Required< Omit > { - emojis: List; - fields: List; - roles: List; + emojis: ImmutableList; + fields: ImmutableList; + roles: ImmutableList; display_name_html: string; note_emojified: string; note_plain: string | null; @@ -70,8 +70,8 @@ export const accountDefaultValues: AccountShape = { indexable: false, display_name: '', display_name_html: '', - emojis: List(), - fields: List(), + emojis: ImmutableList(), + fields: ImmutableList(), group: false, header: '', header_static: '', @@ -82,7 +82,7 @@ export const accountDefaultValues: AccountShape = { note: '', note_emojified: '', note_plain: 'string', - roles: List(), + roles: ImmutableList(), uri: '', url: '', username: '', @@ -139,11 +139,15 @@ export function createAccountFromServerJSON(serverJSON: ApiAccountJSON) { return AccountFactory({ ...accountJSON, moved: moved?.id, - fields: List( + fields: ImmutableList( serverJSON.fields.map((field) => createAccountField(field, emojiMap)), ), - emojis: List(serverJSON.emojis.map((emoji) => CustomEmojiFactory(emoji))), - roles: List(serverJSON.roles?.map((role) => AccountRoleFactory(role))), + emojis: ImmutableList( + serverJSON.emojis.map((emoji) => CustomEmojiFactory(emoji)), + ), + roles: ImmutableList( + serverJSON.roles?.map((role) => AccountRoleFactory(role)), + ), display_name_html: emojify( escapeTextContentForBrowser(displayName), emojiMap, diff --git a/app/javascript/mastodon/reducers/push_notifications.js b/app/javascript/mastodon/reducers/push_notifications.js index fa8af0e8cc..35c2955b85 100644 --- a/app/javascript/mastodon/reducers/push_notifications.js +++ b/app/javascript/mastodon/reducers/push_notifications.js @@ -1,11 +1,11 @@ -import Immutable from 'immutable'; +import { Map as ImmutableMap } from 'immutable'; import { SET_BROWSER_SUPPORT, SET_SUBSCRIPTION, CLEAR_SUBSCRIPTION, SET_ALERTS } from '../actions/push_notifications'; import { STORE_HYDRATE } from '../actions/store'; -const initialState = Immutable.Map({ +const initialState = ImmutableMap({ subscription: null, - alerts: new Immutable.Map({ + alerts: ImmutableMap({ follow: false, follow_request: false, favourite: false, @@ -24,7 +24,7 @@ export default function push_subscriptions(state = initialState, action) { if (push_subscription) { return state - .set('subscription', new Immutable.Map({ + .set('subscription', ImmutableMap({ id: push_subscription.get('id'), endpoint: push_subscription.get('endpoint'), })) @@ -36,11 +36,11 @@ export default function push_subscriptions(state = initialState, action) { } case SET_SUBSCRIPTION: return state - .set('subscription', new Immutable.Map({ + .set('subscription', ImmutableMap({ id: action.subscription.id, endpoint: action.subscription.endpoint, })) - .set('alerts', new Immutable.Map(action.subscription.alerts)) + .set('alerts', ImmutableMap(action.subscription.alerts)) .set('isSubscribed', true); case SET_BROWSER_SUPPORT: return state.set('browserSupport', action.value); From 91cc180cd022cf2d0557c9b674c0ac6c76e7ea13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 11:28:09 +0100 Subject: [PATCH 451/550] Update dependency puma to v6.5.0 (#33041) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 471795a7e7..d5a78f1116 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -424,7 +424,7 @@ GEM timeout net-smtp (0.5.0) net-protocol - nio4r (2.7.3) + nio4r (2.7.4) nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) @@ -580,7 +580,7 @@ GEM psych (5.2.0) stringio public_suffix (6.0.1) - puma (6.4.3) + puma (6.5.0) nio4r (~> 2.0) pundit (2.4.0) activesupport (>= 3.0.0) From 8c322cca192179a611774624ba95869e5e51bce6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 10:29:04 +0000 Subject: [PATCH 452/550] Update dependency mutex_m to v0.3.0 (#32991) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d5a78f1116..842d25dd1b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -411,7 +411,7 @@ GEM minitest (5.25.1) msgpack (1.7.5) multi_json (1.15.0) - mutex_m (0.2.0) + mutex_m (0.3.0) net-http (0.5.0) uri net-imap (0.5.1) From a20dca73277acd305f1e804bf8d778a5deaef658 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Sun, 24 Nov 2024 15:00:37 -0500 Subject: [PATCH 453/550] Restore stdout logging setting in development environment (#33057) --- config/environments/development.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/environments/development.rb b/config/environments/development.rb index 8533935a88..bbdd9e2fce 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -37,6 +37,11 @@ Rails.application.configure do config.action_controller.forgery_protection_origin_check = ENV['DISABLE_FORGERY_REQUEST_PROTECTION'].nil? + ActiveSupport::Logger.new($stdout).tap do |logger| + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + # Generate random VAPID keys Webpush.generate_key.tap do |vapid_key| config.x.vapid_private_key = vapid_key.private_key From 1333ed4d4e3d5cae73b04ac10184a3002dba58b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 08:58:05 +0100 Subject: [PATCH 454/550] Update docker/dockerfile Docker tag to v1.11 (#33060) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- streaming/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c91f10de0f..4d6287912e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.10 +# syntax=docker/dockerfile:1.11 # This file is designed for production server deployment, not local development work # For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker diff --git a/streaming/Dockerfile b/streaming/Dockerfile index f94c04e7a2..52c4a1a3d0 100644 --- a/streaming/Dockerfile +++ b/streaming/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.10 +# syntax=docker/dockerfile:1.11 # Please see https://docs.docker.com/engine/reference/builder for information about # the extended buildx capabilities used in this file. From 452139016353b41dea5fcd9cf3f9fc6ba078c1a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:17:41 +0100 Subject: [PATCH 455/550] New Crowdin Translations (automated) (#33043) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 13 ++ app/javascript/mastodon/locales/ca.json | 34 ++- app/javascript/mastodon/locales/de.json | 16 +- app/javascript/mastodon/locales/eo.json | 13 ++ app/javascript/mastodon/locales/es-AR.json | 24 +++ app/javascript/mastodon/locales/es-MX.json | 24 +++ app/javascript/mastodon/locales/es.json | 38 +++- app/javascript/mastodon/locales/fa.json | 3 + app/javascript/mastodon/locales/fo.json | 24 +++ app/javascript/mastodon/locales/fr-CA.json | 40 ++++ app/javascript/mastodon/locales/fr.json | 40 ++++ app/javascript/mastodon/locales/gl.json | 25 +++ app/javascript/mastodon/locales/hu.json | 32 ++- app/javascript/mastodon/locales/it.json | 27 +++ app/javascript/mastodon/locales/pa.json | 228 +++++++++++++++++++-- app/javascript/mastodon/locales/ru.json | 27 ++- app/javascript/mastodon/locales/th.json | 31 +++ app/javascript/mastodon/locales/tr.json | 1 + app/javascript/mastodon/locales/zh-CN.json | 156 +++++++------- app/javascript/mastodon/locales/zh-TW.json | 6 +- config/locales/ca.yml | 10 + config/locales/doorkeeper.zh-CN.yml | 8 +- config/locales/es.yml | 26 +-- config/locales/hu.yml | 2 +- config/locales/lv.yml | 5 + config/locales/simple_form.ca.yml | 2 + config/locales/simple_form.es.yml | 14 +- config/locales/simple_form.th.yml | 1 + config/locales/simple_form.zh-CN.yml | 32 +-- config/locales/th.yml | 15 ++ config/locales/zh-CN.yml | 70 +++---- config/locales/zh-TW.yml | 2 +- 32 files changed, 785 insertions(+), 204 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 32d61423d6..3e6a2c64be 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -244,6 +244,8 @@ "domain_block_modal.they_cant_follow": "Никого от този сървър не може да ви последва.", "domain_block_modal.they_wont_know": "Няма да узнаят, че са били блокирани.", "domain_block_modal.title": "Блокирате ли домейн?", + "domain_block_modal.you_will_lose_num_followers": "Ще загубите {followersCount, plural, one {{followersCountDisplay} последовател} other {{followersCountDisplay} последователи}} и {followingCount, plural, one {{followingCountDisplay} лице, което следвате} other {{followingCountDisplay} души, които следвате}}.", + "domain_block_modal.you_will_lose_relationships": "Ще загубите всичките си последователи и хората, които следвате от този сървър.", "domain_block_modal.you_wont_see_posts": "Няма да виждате публикации или известия от потребителите на този сървър.", "domain_pill.activitypub_lets_connect": "Позволява ви да се свързвате и взаимодействате с хора не само в Mastodon, но и през различни социални приложения.", "domain_pill.activitypub_like_language": "ActivityPub е като език на Mastodon, говорещ с други социални мрежи.", @@ -391,11 +393,13 @@ "ignore_notifications_modal.disclaimer": "Mastodon не може да осведоми потребители, че сте пренебрегнали известията им. Пренебрегването на известията няма да спре самите съобщения да не бъдат изпращани.", "ignore_notifications_modal.filter_to_act_users": "Вие все още ще може да приемате, отхвърляте или докладвате потребители", "ignore_notifications_modal.filter_to_avoid_confusion": "Прецеждането помага за избягване на възможно объркване", + "ignore_notifications_modal.filter_to_review_separately": "Може да разгледате отделно филтрираните известия", "ignore_notifications_modal.ignore": "Пренебрегване на известията", "ignore_notifications_modal.limited_accounts_title": "Пренебрегвате ли известията от модерирани акаунти?", "ignore_notifications_modal.new_accounts_title": "Пренебрегвате ли известията от нови акаунти?", "ignore_notifications_modal.not_followers_title": "Пренебрегвате ли известията от хора, които не са ви последвали?", "ignore_notifications_modal.not_following_title": "Пренебрегвате ли известията от хора, които не сте последвали?", + "ignore_notifications_modal.private_mentions_title": "Пренебрегвате ли известия от непоискани лични споменавания?", "interaction_modal.description.favourite": "Имайки акаунт в Mastodon, може да сложите тази публикации в любими, за да позволите на автора да узнае, че я цените и да я запазите за по-късно.", "interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.", "interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.", @@ -460,10 +464,17 @@ "link_preview.author": "От {name}", "link_preview.more_from_author": "Още от {name}", "link_preview.shares": "{count, plural, one {{counter} публикация} other {{counter} публикации}}", + "lists.add_member": "Добавяне", + "lists.add_to_list": "Добавяне в списък", + "lists.add_to_lists": "Добавяне на {name} в списъци", + "lists.create": "Създаване", + "lists.create_a_list_to_organize": "Сътворете нов списък, за да организирате инфоканала си на Начало", "lists.create_list": "Създаване на списък", "lists.delete": "Изтриване на списъка", "lists.done": "Готово", "lists.edit": "Промяна на списъка", + "lists.exclusive": "Скриване на членуващи в Начало", + "lists.exclusive_hint": "Ако някой е в този списък, то скрийте го в инфоканала си на Начало, за да избегнете виждането на публикациите му два пъти.", "lists.find_users_to_add": "Намерете потребители за добавяне", "lists.list_members": "Списък членуващи", "lists.list_name": "Име на списък", @@ -524,6 +535,7 @@ "notification.admin.report_statuses_other": "{name} докладва {target}", "notification.admin.sign_up": "{name} се регистрира", "notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} се регистрираха", + "notification.annual_report.view": "Преглед на #Wrapstodon", "notification.favourite": "{name} направи любима публикацията ви", "notification.favourite.name_and_others_with_link": "{name} и {count, plural, one {# друг} other {# други}} направиха любима ваша публикация", "notification.follow": "{name} ви последва", @@ -559,6 +571,7 @@ "notification_requests.accept": "Приемам", "notification_requests.confirm_accept_multiple.message": "На път сте да приемете {count, plural, one {едно известие за заявка} other {# известия за заявки}}. Наистина ли искате да продължите?", "notification_requests.confirm_accept_multiple.title": "Приемате ли заявките за известие?", + "notification_requests.confirm_dismiss_multiple.message": "На път сте да отхвърлите {count, plural, one {една заявка за известие} other {# заявки за известие}}. Няма да имате лесен достъп до {count, plural, one {това лице} other {тях}} отново. Наистина ли искате да продължите?", "notification_requests.confirm_dismiss_multiple.title": "Отхвърляте ли заявките за известие?", "notification_requests.dismiss": "Отхвърлям", "notification_requests.edit_selection": "Редактиране", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index fc100d7c01..41b5608d0b 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -134,13 +134,16 @@ "column.blocks": "Usuaris blocats", "column.bookmarks": "Marcadors", "column.community": "Línia de temps local", + "column.create_list": "Crea una llista", "column.direct": "Mencions privades", "column.directory": "Navega pels perfils", "column.domain_blocks": "Dominis blocats", + "column.edit_list": "Edita la llista", "column.favourites": "Favorits", "column.firehose": "Tuts en directe", "column.follow_requests": "Peticions de seguir-te", "column.home": "Inici", + "column.list_members": "Gestiona els membres de la llista", "column.lists": "Llistes", "column.mutes": "Usuaris silenciats", "column.notifications": "Notificacions", @@ -458,11 +461,32 @@ "link_preview.author": "Per {name}", "link_preview.more_from_author": "Més de {name}", "link_preview.shares": "{count, plural, one {{counter} publicació} other {{counter} publicacions}}", + "lists.add_member": "Afegeix", + "lists.add_to_list": "Afegeix a la llista", + "lists.add_to_lists": "Afegeix {name} a les llistes", + "lists.create": "Crea", + "lists.create_a_list_to_organize": "Creeu una nova llista per a organitzar la pantalla d'inici", + "lists.create_list": "Crea una llista", "lists.delete": "Elimina la llista", + "lists.done": "Fet", "lists.edit": "Edita la llista", + "lists.exclusive": "Amaga membres a Inici", + "lists.exclusive_hint": "Si algú és a la llista, amagueu-los de la pantalla d'inici, per a no veure'n les publicacions duplicades.", + "lists.find_users_to_add": "Troba usuaris per a afegir", + "lists.list_members": "Membres de la llista", + "lists.list_members_count": "{count, plural, one {# membre} other {# membres}}", + "lists.list_name": "Nom de la llista", + "lists.new_list_name": "Nom de la nova llista", + "lists.no_lists_yet": "Encara no hi ha cap llista.", + "lists.no_members_yet": "Encara no hi ha membres.", + "lists.no_results_found": "No s'han trobat resultats.", + "lists.remove_member": "Elimina", "lists.replies_policy.followed": "Qualsevol usuari que segueixis", "lists.replies_policy.list": "Membres de la llista", "lists.replies_policy.none": "Ningú", + "lists.save": "Desa", + "lists.search_placeholder": "Cerca persones que seguiu", + "lists.show_replies_to": "Inclou respostes de membres de la llista a", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}", "loading_indicator.label": "Es carrega…", "media_gallery.hide": "Amaga", @@ -620,11 +644,11 @@ "onboarding.action.back": "Porta'm enrere", "onboarding.actions.back": "Porta'm enrere", "onboarding.actions.go_to_explore": "Mira què és tendència", - "onboarding.actions.go_to_home": "Ves a la teva línia de temps", + "onboarding.actions.go_to_home": "Aneu a la vostra pantalla d'inici", "onboarding.compose.template": "Hola Mastodon!", "onboarding.follows.empty": "Malauradament, cap resultat pot ser mostrat ara mateix. Pots provar de fer servir la cerca o visitar la pàgina Explora per a trobar gent a qui seguir o provar-ho de nou més tard.", - "onboarding.follows.lead": "La teva línia de temps inici només està a les teves mans. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant de seguir-los!:", - "onboarding.follows.title": "Personalitza la pantalla d'inci", + "onboarding.follows.lead": "La vostra pantalla d'inici és la manera principal d'experimentar Mastodon. Com més gent seguiu, més activa i interessant serà. Per a començar, alguns suggeriments:", + "onboarding.follows.title": "Personalitzeu la pantalla d'inci", "onboarding.profile.discoverable": "Fes el meu perfil descobrible", "onboarding.profile.discoverable_hint": "En acceptar d'ésser descobert a Mastodon els teus missatges poden aparèixer dins les tendències i els resultats de cerques, i el teu perfil es pot suggerir a qui tingui interessos semblants als teus.", "onboarding.profile.display_name": "Nom que es mostrarà", @@ -644,7 +668,7 @@ "onboarding.start.skip": "Vols saltar-te tota la resta?", "onboarding.start.title": "Llestos!", "onboarding.steps.follow_people.body": "Mastodon va de seguir a gent interessant.", - "onboarding.steps.follow_people.title": "Personalitza la pantalla d'inci", + "onboarding.steps.follow_people.title": "Personalitzeu la pantalla d'inici", "onboarding.steps.publish_status.body": "Saluda al món amb text, fotos, vídeos o enquestes {emoji}", "onboarding.steps.publish_status.title": "Fes el teu primer tut", "onboarding.steps.setup_profile.body": "És més fàcil que altres interactuïn amb tu si tens un perfil complet.", @@ -683,7 +707,7 @@ "recommended": "Recomanat", "refresh": "Actualitza", "regeneration_indicator.label": "Es carrega…", - "regeneration_indicator.sublabel": "Es prepara la teva línia de temps d'Inici!", + "regeneration_indicator.sublabel": "Es prepara la vostra pantalla d'Inici!", "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/de.json b/app/javascript/mastodon/locales/de.json index b47007522b..6a28617106 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -89,9 +89,9 @@ "announcement.announcement": "Ankündigung", "annual_report.summary.archetype.booster": "Trendjäger*in", "annual_report.summary.archetype.lurker": "Beobachter*in", - "annual_report.summary.archetype.oracle": "Orakel", + "annual_report.summary.archetype.oracle": "Universaltalent", "annual_report.summary.archetype.pollster": "Meinungsforscher*in", - "annual_report.summary.archetype.replier": "Geselliger Schmetterling", + "annual_report.summary.archetype.replier": "Sozialer Schmetterling", "annual_report.summary.followers.followers": "Follower", "annual_report.summary.followers.total": "{count} insgesamt", "annual_report.summary.here_it_is": "Dein Jahresrückblick für {year}:", @@ -113,7 +113,7 @@ "block_modal.show_more": "Mehr anzeigen", "block_modal.they_cant_mention": "Das Profil wird dich nicht erwähnen oder dir folgen können.", "block_modal.they_cant_see_posts": "Deine Beiträge können nicht mehr angesehen werden und du wirst deren Beiträge nicht mehr sehen.", - "block_modal.they_will_know": "Es wird erkennbar sein, dass dieses Profil blockiert wurde.", + "block_modal.they_will_know": "Das Profil wird erkennen können, dass du es blockiert hast.", "block_modal.title": "Profil blockieren?", "block_modal.you_wont_see_mentions": "Du wirst keine Beiträge sehen, die dieses Profil erwähnen.", "boost_modal.combo": "Mit {combo} erscheint dieses Fenster beim nächsten Mal nicht mehr", @@ -255,7 +255,7 @@ "domain_pill.their_server": "Deren digitale Heimat. Hier „leben“ alle Beiträge von diesem Profil.", "domain_pill.their_username": "Deren eindeutigen Identität auf dem betreffenden Server. Es ist möglich, Profile mit dem gleichen Profilnamen auf verschiedenen Servern zu finden.", "domain_pill.username": "Profilname", - "domain_pill.whats_in_a_handle": "Was ist Teil der Adresse?", + "domain_pill.whats_in_a_handle": "Woraus besteht eine Adresse?", "domain_pill.who_they_are": "Adressen teilen mit, wer jemand ist und wo sich jemand aufhält. Daher kannst du mit Leuten im gesamten Social Web interagieren, wenn es eine durch ist.", "domain_pill.who_you_are": "Deine Adresse teilt mit, wer du bist und wo du dich aufhältst. Daher können andere Leute im gesamten Social Web mit dir interagieren, wenn es eine durch ist.", "domain_pill.your_handle": "Deine Adresse:", @@ -330,9 +330,9 @@ "filter_warning.matches_filter": "Übereinstimmend mit dem Filter „{title}“", "filtered_notifications_banner.pending_requests": "Von {count, plural, =0 {keinem, den} one {einer Person, die} other {# Personen, die}} du möglicherweise kennst", "filtered_notifications_banner.title": "Gefilterte Benachrichtigungen", - "firehose.all": "Alles", + "firehose.all": "Alle Server", "firehose.local": "Dieser Server", - "firehose.remote": "Andere Server", + "firehose.remote": "Externe Server", "follow_request.authorize": "Genehmigen", "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", @@ -492,7 +492,7 @@ "lists.replies_policy.none": "Niemanden", "lists.save": "Speichern", "lists.search_placeholder": "Nach Profilen suchen, denen du folgst", - "lists.show_replies_to": "Antworten von Listenmitgliedern anzeigen für …", + "lists.show_replies_to": "Antworten von Listenmitgliedern einbeziehen für …", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", "media_gallery.hide": "Ausblenden", @@ -541,7 +541,7 @@ "notification.admin.report_statuses_other": "{name} meldete {target}", "notification.admin.sign_up": "{name} registrierte sich", "notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich", - "notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!", + "notification.annual_report.message": "Dein #Wrapstodon für {year} erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!", "notification.annual_report.view": "#Wrapstodon ansehen", "notification.favourite": "{name} favorisierte deinen Beitrag", "notification.favourite.name_and_others_with_link": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} favorisierten deinen Beitrag", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 730c301769..4f4cf136bb 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -128,9 +128,11 @@ "column.blocks": "Blokitaj uzantoj", "column.bookmarks": "Legosignoj", "column.community": "Loka templinio", + "column.create_list": "Krei liston", "column.direct": "Privataj mencioj", "column.directory": "Foliumi la profilojn", "column.domain_blocks": "Blokitaj domajnoj", + "column.edit_list": "Redakti liston", "column.favourites": "Stelumoj", "column.firehose": "Rektaj fluoj", "column.follow_requests": "Petoj de sekvado", @@ -452,11 +454,22 @@ "link_preview.author": "De {name}", "link_preview.more_from_author": "Pli de {name}", "link_preview.shares": "{count, plural, one {{counter} afiŝo} other {{counter} afiŝoj}}", + "lists.add_member": "Aldoni", + "lists.add_to_list": "Aldoni al la listo", + "lists.add_to_lists": "Aldoni {name} al la listo", + "lists.create": "Krei", + "lists.create_list": "Krei liston", "lists.delete": "Forigi la liston", + "lists.done": "Farita", "lists.edit": "Redakti la liston", + "lists.no_lists_yet": "Ankoraŭ ne estas listoj.", + "lists.no_members_yet": "Ankoraŭ neniuj membroj.", + "lists.no_results_found": "Neniuj rezultoj trovitaj.", + "lists.remove_member": "Forigi", "lists.replies_policy.followed": "Iu sekvanta uzanto", "lists.replies_policy.list": "Membroj de la listo", "lists.replies_policy.none": "Neniu", + "lists.save": "Konservi", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", "loading_indicator.label": "Ŝargado…", "media_gallery.hide": "Kaŝi", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 2dea704a72..56cc2b33d3 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -140,13 +140,16 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea temporal local", + "column.create_list": "Crear una lista", "column.direct": "Menciones privadas", "column.directory": "Explorar perfiles", "column.domain_blocks": "Dominios bloqueados", + "column.edit_list": "Editar lista", "column.favourites": "Favoritos", "column.firehose": "Líneas temporales en vivo", "column.follow_requests": "Solicitudes de seguimiento", "column.home": "Principal", + "column.list_members": "Administrar miembros de la lista", "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", @@ -464,11 +467,32 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} mensaje} other {{counter} mensajes}}", + "lists.add_member": "Añadir", + "lists.add_to_list": "Añadir a la lista", + "lists.add_to_lists": "Añadir {name} a las listas", + "lists.create": "Crear", + "lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio", + "lists.create_list": "Crear una lista", "lists.delete": "Eliminar lista", + "lists.done": "Hecho", "lists.edit": "Editar lista", + "lists.exclusive": "Ocultar miembros en Inicio", + "lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.", + "lists.find_users_to_add": "Buscar usuarios para añadir", + "lists.list_members": "Miembros de la lista", + "lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}", + "lists.list_name": "Nombre de la lista", + "lists.new_list_name": "Nombre de la nueva lista", + "lists.no_lists_yet": "Aún no hay listas.", + "lists.no_members_yet": "Aún no hay miembros.", + "lists.no_results_found": "No se encontraron resultados.", + "lists.remove_member": "Eliminar", "lists.replies_policy.followed": "Cualquier cuenta seguida", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", + "lists.save": "Guardar", + "lists.search_placeholder": "Buscar gente a la que sigues", + "lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a", "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index d863873418..9a61e0fbc5 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -140,13 +140,16 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Línea de tiempo local", + "column.create_list": "Crear una lista", "column.direct": "Menciones privadas", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios ocultados", + "column.edit_list": "Editar lista", "column.favourites": "Favoritos", "column.firehose": "Cronologías", "column.follow_requests": "Solicitudes de seguimiento", "column.home": "Inicio", + "column.list_members": "Administrar miembros de la lista", "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", @@ -464,11 +467,32 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", + "lists.add_member": "Añadir", + "lists.add_to_list": "Añadir a la lista", + "lists.add_to_lists": "Añadir {name} a las listas", + "lists.create": "Crear", + "lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio", + "lists.create_list": "Crear una lista", "lists.delete": "Borrar lista", + "lists.done": "Hecho", "lists.edit": "Editar lista", + "lists.exclusive": "Ocultar miembros en Inicio", + "lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.", + "lists.find_users_to_add": "Buscar usuarios para añadir", + "lists.list_members": "Miembros de la lista", + "lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}", + "lists.list_name": "Nombre de la lista", + "lists.new_list_name": "Nombre de la nueva lista", + "lists.no_lists_yet": "Aún no hay listas.", + "lists.no_members_yet": "Aún no hay miembros.", + "lists.no_results_found": "No se encontraron resultados.", + "lists.remove_member": "Eliminar", "lists.replies_policy.followed": "Cualquier usuario seguido", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", + "lists.save": "Guardar", + "lists.search_placeholder": "Buscar gente a la que sigues", + "lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index bfb16e9fd8..86083afcbf 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -140,13 +140,16 @@ "column.blocks": "Usuarios bloqueados", "column.bookmarks": "Marcadores", "column.community": "Cronología local", + "column.create_list": "Crear una lista", "column.direct": "Menciones privadas", "column.directory": "Buscar perfiles", "column.domain_blocks": "Dominios bloqueados", + "column.edit_list": "Editar lista", "column.favourites": "Favoritos", "column.firehose": "Cronologías", "column.follow_requests": "Solicitudes de seguimiento", "column.home": "Inicio", + "column.list_members": "Administrar miembros de la lista", "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", @@ -401,7 +404,7 @@ "ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de personas a las que no sigues?", "ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?", "interaction_modal.description.favourite": "Con una cuenta en Mastodon, puedes marcar como favorita esta publicación para que el autor sepa que te gusta, y guardala para más adelante.", - "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.", + "interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu página de inicio.", "interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.", "interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.", "interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.", @@ -464,11 +467,32 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Más de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", + "lists.add_member": "Añadir", + "lists.add_to_list": "Añadir a la lista", + "lists.add_to_lists": "Añadir {name} a las listas", + "lists.create": "Crear", + "lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio", + "lists.create_list": "Crear una lista", "lists.delete": "Borrar lista", + "lists.done": "Hecho", "lists.edit": "Editar lista", + "lists.exclusive": "Ocultar miembros en Inicio", + "lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.", + "lists.find_users_to_add": "Buscar usuarios para añadir", + "lists.list_members": "Miembros de la lista", + "lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}", + "lists.list_name": "Nombre de la lista", + "lists.new_list_name": "Nombre de la nueva lista", + "lists.no_lists_yet": "Aún no hay listas.", + "lists.no_members_yet": "Aún no hay miembros.", + "lists.no_results_found": "No se encontraron resultados.", + "lists.remove_member": "Eliminar", "lists.replies_policy.followed": "Cualquier usuario seguido", "lists.replies_policy.list": "Miembros de la lista", "lists.replies_policy.none": "Nadie", + "lists.save": "Guardar", + "lists.search_placeholder": "Buscar gente a la que sigues", + "lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", "media_gallery.hide": "Ocultar", @@ -628,11 +652,11 @@ "onboarding.action.back": "Llévame atrás", "onboarding.actions.back": "Llévame atrás", "onboarding.actions.go_to_explore": "Llévame a tendencias", - "onboarding.actions.go_to_home": "Ir a mi inicio", + "onboarding.actions.go_to_home": "Ir a mi página de inicio", "onboarding.compose.template": "¡Hola #Mastodon!", "onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar personas a las que seguir, o inténtalo de nuevo más tarde.", - "onboarding.follows.lead": "Tu línea de inicio es la forma principal de experimentar Mastodon. Cuanta más personas sigas, más activa e interesante será. Para empezar, aquí hay algunas sugerencias:", - "onboarding.follows.title": "Personaliza tu línea de inicio", + "onboarding.follows.lead": "Tu página de inicio es la forma principal de experimentar Mastodon. Cuanta más personas sigas, más activa e interesante será. Para empezar, aquí hay algunas sugerencias:", + "onboarding.follows.title": "Personaliza tu página de inicio", "onboarding.profile.discoverable": "Hacer que mi perfil aparezca en búsquedas", "onboarding.profile.discoverable_hint": "Cuando permites que tu perfil aparezca en búsquedas en Mastodon, tus publicaciones podrán aparecer en los resultados de búsqueda y en tendencias, y tu perfil podrá recomendarse a gente con intereses similares a los tuyos.", "onboarding.profile.display_name": "Nombre para mostrar", @@ -652,7 +676,7 @@ "onboarding.start.skip": "¿No necesitas ayuda para empezar?", "onboarding.start.title": "¡Lo has logrado!", "onboarding.steps.follow_people.body": "Seguir personas interesante es de lo que trata Mastodon.", - "onboarding.steps.follow_people.title": "Personaliza tu línea de inicio", + "onboarding.steps.follow_people.title": "Personaliza tu página de inicio", "onboarding.steps.publish_status.body": "Di hola al mundo con texto, fotos, vídeos o encuestas {emoji}", "onboarding.steps.publish_status.title": "Escribe tu primera publicación", "onboarding.steps.setup_profile.body": "Aumenta tus interacciones con un perfil completo.", @@ -691,7 +715,7 @@ "recommended": "Recomendado", "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", - "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", + "regeneration_indicator.sublabel": "¡Tu página de inicio se está preparando!", "relative_time.days": "{number} d", "relative_time.full.days": "hace {number, plural, one {# día} other {# días}}", "relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}", @@ -745,7 +769,7 @@ "report.thanks.title": "¿No quieres esto?", "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.", "report.unfollow": "Dejar de seguir a @{name}", - "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.", + "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para dejar de ver sus publicaciones en tu página de inicio, deja de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", "report_notification.categories.legal": "Legal", "report_notification.categories.legal_sentence": "contenido ilegal", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 608c1321b7..fdab913550 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -87,6 +87,7 @@ "alert.unexpected.title": "ای وای!", "alt_text_badge.title": "متن جایگزین", "announcement.announcement": "اعلامیه", + "annual_report.summary.followers.followers": "دنبال کننده", "attachments_list.unprocessed": "(پردازش نشده)", "audio.hide": "نهفتن صدا", "block_modal.remote_users_caveat": "ما از کارساز {domain} خواهیم خواست که به تصمیم شما احترام بگذارد. با این حال، تضمینی برای رعایت آن وجود ندارد زیرا برخی کارسازها ممکن است بلوک‌ها را به‌طور متفاوتی مدیریت کنند. فرسته‌های عمومی ممکن است همچنان برای کاربران که وارد نشده قابل مشاهده باشند.", @@ -438,9 +439,11 @@ "link_preview.shares": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}", "lists.delete": "حذف سیاهه", "lists.edit": "ویرایش سیاهه", + "lists.remove_member": "حذف", "lists.replies_policy.followed": "هر کاربر پی‌گرفته", "lists.replies_policy.list": "اعضای سیاهه", "lists.replies_policy.none": "هیچ کدام", + "lists.save": "ذخیره", "load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}", "loading_indicator.label": "در حال بارگذاری…", "media_gallery.hide": "نهفتن", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index bc56152f37..9a15dbc519 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -140,13 +140,16 @@ "column.blocks": "Bannaðir brúkarar", "column.bookmarks": "Bókamerki", "column.community": "Lokal tíðarlinja", + "column.create_list": "Ger lista", "column.direct": "Privatar umrøður", "column.directory": "Blaða gjøgnum vangar", "column.domain_blocks": "Bannað økisnøvn", + "column.edit_list": "Broyt lista", "column.favourites": "Dámdir postar", "column.firehose": "Beinleiðis rásir", "column.follow_requests": "Umbønir at fylgja", "column.home": "Heim", + "column.list_members": "Rætta limalista", "column.lists": "Listar", "column.mutes": "Sløktir brúkarar", "column.notifications": "Fráboðanir", @@ -464,11 +467,32 @@ "link_preview.author": "Av {name}", "link_preview.more_from_author": "Meira frá {name}", "link_preview.shares": "{count, plural, one {{counter} postur} other {{counter} postar}}", + "lists.add_member": "Legg afturat", + "lists.add_to_list": "Legg afturat lista", + "lists.add_to_lists": "Legg {name} afturat lista", + "lists.create": "Ger", + "lists.create_a_list_to_organize": "Ger ein nýggjan lista til heimarásina hjá tær", + "lists.create_list": "Ger lista", "lists.delete": "Strika lista", + "lists.done": "Liðugt", "lists.edit": "Broyt lista", + "lists.exclusive": "Fjal limir á heimarás", + "lists.exclusive_hint": "Um onkur er á hesum listanum, so skulu tey fjalast á heimarásini, so tú sleppir undan at síggja postar teirra tvær ferðir.", + "lists.find_users_to_add": "Finn brúkarar at leggja afturat", + "lists.list_members": "Lista limir", + "lists.list_members_count": "{count, plural, one {# limur} other {# limir}}", + "lists.list_name": "Listanavn", + "lists.new_list_name": "Nýtt listanavn", + "lists.no_lists_yet": "Ongir listar enn.", + "lists.no_members_yet": "Eingir limir enn.", + "lists.no_results_found": "Eingi úrslit funnin.", + "lists.remove_member": "Burturbein", "lists.replies_policy.followed": "Øllum fylgdum brúkarum", "lists.replies_policy.list": "Listalimunum", "lists.replies_policy.none": "Eingin", + "lists.save": "Goym", + "lists.search_placeholder": "Leita eftir fólki, sum tú fylgir", + "lists.show_replies_to": "Írokna svar frá limum á listanum til", "load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}", "loading_indicator.label": "Innlesur…", "media_gallery.hide": "Fjal", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index a1134e0de3..f241a44217 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -87,9 +87,21 @@ "alert.unexpected.title": "Oups!", "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", + "annual_report.summary.archetype.lurker": "Le faucheur", "annual_report.summary.archetype.oracle": "L’oracle", + "annual_report.summary.followers.followers": "abonné·e·s", + "annual_report.summary.followers.total": "{count} au total", "annual_report.summary.here_it_is": "Voici votre récap de {year} :", + "annual_report.summary.highlighted_post.by_favourites": "post le plus aimé", + "annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté", + "annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses", "annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé", + "annual_report.summary.most_used_hashtag.none": "Aucun", + "annual_report.summary.new_posts.new_posts": "nouveaux posts", + "annual_report.summary.percentile.text": "Cela vous place dans le topdes utilisateurs de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.", + "annual_report.summary.thanks": "Merci de faire partie de Mastodon!", "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 utilisateur·rice·s non connecté·e·s.", @@ -124,13 +136,16 @@ "column.blocks": "Comptes bloqués", "column.bookmarks": "Signets", "column.community": "Fil local", + "column.create_list": "Créer une liste", "column.direct": "Mention privée", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", + "column.edit_list": "Modifier la liste", "column.favourites": "Favoris", "column.firehose": "Flux en direct", "column.follow_requests": "Demande d'abonnement", "column.home": "Accueil", + "column.list_members": "Gérer les membres de la liste", "column.lists": "Listes", "column.mutes": "Comptes masqués", "column.notifications": "Notifications", @@ -200,6 +215,7 @@ "confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?", "content_warning.hide": "Masquer le message", "content_warning.show": "Afficher quand même", + "content_warning.show_more": "Déplier", "conversation.delete": "Supprimer cette conversation", "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher cette conversation", @@ -307,6 +323,7 @@ "filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle", "filter_modal.select_filter.title": "Filtrer cette publication", "filter_modal.title.status": "Filtrer une publication", + "filter_warning.matches_filter": "Correspond au filtre « {title} »", "filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître", "filtered_notifications_banner.title": "Notifications filtrées", "firehose.all": "Tout", @@ -386,6 +403,7 @@ "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs publications dans votre fil d'accueil.", "interaction_modal.description.reblog": "Avec un compte Mastodon, vous pouvez booster cette publication pour la partager avec vos propres abonné·e·s.", "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à cette publication.", + "interaction_modal.description.vote": "Avec un compte sur Mastodon, vous pouvez répondre à cette question.", "interaction_modal.login.action": "Aller à mon serveur", "interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social", "interaction_modal.no_account_yet": "Pas sur Mastodon ?", @@ -397,6 +415,7 @@ "interaction_modal.title.follow": "Suivre {name}", "interaction_modal.title.reblog": "Booster la publication de {name}", "interaction_modal.title.reply": "Répondre à la publication de {name}", + "interaction_modal.title.vote": "Voter pour le sondage de {name}", "intervals.full.days": "{number, plural, one {# jour} other {# jours}}", "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -444,11 +463,30 @@ "link_preview.author": "Par {name}", "link_preview.more_from_author": "Plus via {name}", "link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}", + "lists.add_member": "Ajouter", + "lists.add_to_list": "Ajouter à la liste", + "lists.add_to_lists": "Ajouter {name} aux listes", + "lists.create": "Créer", + "lists.create_a_list_to_organize": "Créer une nouvelle liste pour organiser votre Page d'accueil", + "lists.create_list": "Créer une liste", "lists.delete": "Supprimer la liste", + "lists.done": "Terminé", "lists.edit": "Modifier la liste", + "lists.exclusive": "Cacher les membres de la page d'accueil", + "lists.exclusive_hint": "Si quelqu'un est dans cette liste, les cacher dans votre fil pour éviter de voir leurs messages deux fois.", + "lists.find_users_to_add": "Trouver des utilisateurs à ajouter", + "lists.list_members": "Lister les membres", + "lists.list_name": "Nom de la liste", + "lists.new_list_name": "Nom de la nouvelle liste", + "lists.no_lists_yet": "Aucune liste pour l'instant.", + "lists.no_members_yet": "Aucun membre pour l'instant.", + "lists.no_results_found": "Aucun résultat.", + "lists.remove_member": "Supprimer", "lists.replies_policy.followed": "N'importe quel compte suivi", "lists.replies_policy.list": "Membres de la liste", "lists.replies_policy.none": "Personne", + "lists.save": "Enregistrer", + "lists.search_placeholder": "Rechercher parmi les gens que vous suivez", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", "media_gallery.hide": "Masquer", @@ -497,6 +535,7 @@ "notification.admin.report_statuses_other": "{name} a signalé {target}", "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit", + "notification.annual_report.view": "Voir #Wrapstodon", "notification.favourite": "{name} a ajouté votre publication à ses favoris", "notification.favourite.name_and_others_with_link": "{name} et {count, plural, one {# autre} other {# autres}} ont mis votre message en favori", "notification.follow": "{name} vous suit", @@ -848,6 +887,7 @@ "upload_form.description": "Décrire pour les malvoyants", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", + "upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 8597152f00..ac2d25ea3e 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -87,9 +87,21 @@ "alert.unexpected.title": "Oups !", "alt_text_badge.title": "Texte Alt", "announcement.announcement": "Annonce", + "annual_report.summary.archetype.lurker": "Le faucheur", "annual_report.summary.archetype.oracle": "L’oracle", + "annual_report.summary.followers.followers": "abonné·e·s", + "annual_report.summary.followers.total": "{count} au total", "annual_report.summary.here_it_is": "Voici votre récap de {year} :", + "annual_report.summary.highlighted_post.by_favourites": "post le plus aimé", + "annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté", + "annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses", "annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée", + "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé", + "annual_report.summary.most_used_hashtag.none": "Aucun", + "annual_report.summary.new_posts.new_posts": "nouveaux posts", + "annual_report.summary.percentile.text": "Cela vous place dans le topdes utilisateurs de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.", + "annual_report.summary.thanks": "Merci de faire partie de Mastodon!", "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 utilisateur·rice·s non connecté·e·s.", @@ -124,13 +136,16 @@ "column.blocks": "Utilisateurs bloqués", "column.bookmarks": "Marque-pages", "column.community": "Fil public local", + "column.create_list": "Créer une liste", "column.direct": "Mentions privées", "column.directory": "Parcourir les profils", "column.domain_blocks": "Domaines bloqués", + "column.edit_list": "Modifier la liste", "column.favourites": "Favoris", "column.firehose": "Flux en direct", "column.follow_requests": "Demandes d'abonnement", "column.home": "Accueil", + "column.list_members": "Gérer les membres de la liste", "column.lists": "Listes", "column.mutes": "Comptes masqués", "column.notifications": "Notifications", @@ -200,6 +215,7 @@ "confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?", "content_warning.hide": "Masquer le message", "content_warning.show": "Afficher quand même", + "content_warning.show_more": "Déplier", "conversation.delete": "Supprimer la conversation", "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher la conversation", @@ -307,6 +323,7 @@ "filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou créez-en une nouvelle", "filter_modal.select_filter.title": "Filtrer ce message", "filter_modal.title.status": "Filtrer un message", + "filter_warning.matches_filter": "Correspond au filtre « {title} »", "filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître", "filtered_notifications_banner.title": "Notifications filtrées", "firehose.all": "Tout", @@ -386,6 +403,7 @@ "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.", "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez partager ce message pour le faire découvrir à vos propres abonné⋅e⋅s.", "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.", + "interaction_modal.description.vote": "Avec un compte sur Mastodon, vous pouvez répondre à cette question.", "interaction_modal.login.action": "Aller à mon serveur", "interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social", "interaction_modal.no_account_yet": "Pas sur Mastodon ?", @@ -397,6 +415,7 @@ "interaction_modal.title.follow": "Suivre {name}", "interaction_modal.title.reblog": "Partager le message de {name}", "interaction_modal.title.reply": "Répondre au message de {name}", + "interaction_modal.title.vote": "Voter pour le sondage de {name}", "intervals.full.days": "{number, plural, one {# jour} other {# jours}}", "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -444,11 +463,30 @@ "link_preview.author": "Par {name}", "link_preview.more_from_author": "Plus via {name}", "link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}", + "lists.add_member": "Ajouter", + "lists.add_to_list": "Ajouter à la liste", + "lists.add_to_lists": "Ajouter {name} aux listes", + "lists.create": "Créer", + "lists.create_a_list_to_organize": "Créer une nouvelle liste pour organiser votre Page d'accueil", + "lists.create_list": "Créer une liste", "lists.delete": "Supprimer la liste", + "lists.done": "Terminé", "lists.edit": "Modifier la liste", + "lists.exclusive": "Cacher les membres de la page d'accueil", + "lists.exclusive_hint": "Si quelqu'un est dans cette liste, les cacher dans votre fil pour éviter de voir leurs messages deux fois.", + "lists.find_users_to_add": "Trouver des utilisateurs à ajouter", + "lists.list_members": "Lister les membres", + "lists.list_name": "Nom de la liste", + "lists.new_list_name": "Nom de la nouvelle liste", + "lists.no_lists_yet": "Aucune liste pour l'instant.", + "lists.no_members_yet": "Aucun membre pour l'instant.", + "lists.no_results_found": "Aucun résultat.", + "lists.remove_member": "Supprimer", "lists.replies_policy.followed": "N'importe quel compte suivi", "lists.replies_policy.list": "Membres de la liste", "lists.replies_policy.none": "Personne", + "lists.save": "Enregistrer", + "lists.search_placeholder": "Rechercher parmi les gens que vous suivez", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", "media_gallery.hide": "Masquer", @@ -497,6 +535,7 @@ "notification.admin.report_statuses_other": "{name} a signalé {target}", "notification.admin.sign_up": "{name} s'est inscrit", "notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit", + "notification.annual_report.view": "Voir #Wrapstodon", "notification.favourite": "{name} a ajouté votre message à ses favoris", "notification.favourite.name_and_others_with_link": "{name} et {count, plural, one {# autre} other {# autres}} ont mis votre message en favori", "notification.follow": "{name} vous suit", @@ -848,6 +887,7 @@ "upload_form.description": "Décrire pour les malvoyant·e·s", "upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.", "upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.", + "upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.", "upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.", "upload_form.edit": "Modifier", "upload_form.thumbnail": "Changer la vignette", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index e77aaade6b..d4283ed18b 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -104,6 +104,7 @@ "annual_report.summary.most_used_hashtag.none": "Nada", "annual_report.summary.new_posts.new_posts": "novas publicacións", "annual_report.summary.percentile.text": "Sitúante no top das usuarias de Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Moito tes que contarnos!", "annual_report.summary.thanks": "Grazas por ser parte de Mastodon!", "attachments_list.unprocessed": "(sen procesar)", "audio.hide": "Agochar audio", @@ -139,13 +140,16 @@ "column.blocks": "Usuarias bloqueadas", "column.bookmarks": "Marcadores", "column.community": "Cronoloxía local", + "column.create_list": "Crear lista", "column.direct": "Mencións privadas", "column.directory": "Procurar perfís", "column.domain_blocks": "Dominios agochados", + "column.edit_list": "Editar lista", "column.favourites": "Favoritas", "column.firehose": "O que acontece", "column.follow_requests": "Peticións de seguimento", "column.home": "Inicio", + "column.list_members": "Xestionar membros da lista", "column.lists": "Listaxes", "column.mutes": "Usuarias acaladas", "column.notifications": "Notificacións", @@ -463,11 +467,32 @@ "link_preview.author": "Por {name}", "link_preview.more_from_author": "Máis de {name}", "link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicacións}}", + "lists.add_member": "Engadir", + "lists.add_to_list": "Engadir á lista", + "lists.add_to_lists": "Engadir {name} ás listas", + "lists.create": "Crear", + "lists.create_a_list_to_organize": "Crear unha nova lista para organizar o teu Inicio", + "lists.create_list": "Crear lista", "lists.delete": "Eliminar listaxe", + "lists.done": "Feito", "lists.edit": "Editar listaxe", + "lists.exclusive": "Ocultar membros no Inicio", + "lists.exclusive_hint": "Se alguén está nesta lista non aparerá na cronoloxía de Inicio para evitar duplicidades das publicacións.", + "lists.find_users_to_add": "Buscar persoas que engadir", + "lists.list_members": "Membros da lista", + "lists.list_members_count": "{count, plural, one {# membro} other {# membros}}", + "lists.list_name": "Nome da lista", + "lists.new_list_name": "Novo nome da lista", + "lists.no_lists_yet": "Aínda non hai listas.", + "lists.no_members_yet": "Aínda non hai membros.", + "lists.no_results_found": "Non se atoparon resultados.", + "lists.remove_member": "Retirar", "lists.replies_policy.followed": "Calquera usuaria que siga", "lists.replies_policy.list": "Membros da lista", "lists.replies_policy.none": "Ninguén", + "lists.save": "Gardar", + "lists.search_placeholder": "Buscar persoas que segues", + "lists.show_replies_to": "Incluír respostas dos membros das listas a", "load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}", "loading_indicator.label": "Estase a cargar…", "media_gallery.hide": "Agochar", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 9a76a21e93..c061b58840 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -140,13 +140,16 @@ "column.blocks": "Letiltott felhasználók", "column.bookmarks": "Könyvjelzők", "column.community": "Helyi idővonal", + "column.create_list": "Lista létrehozása", "column.direct": "Személyes említések", "column.directory": "Profilok böngészése", "column.domain_blocks": "Letiltott domainek", + "column.edit_list": "Lista módosítása", "column.favourites": "Kedvencek", "column.firehose": "Hírfolyamok", "column.follow_requests": "Követési kérések", "column.home": "Kezdőlap", + "column.list_members": "Listatagok kezelése", "column.lists": "Listák", "column.mutes": "Némított felhasználók", "column.notifications": "Értesítések", @@ -464,11 +467,32 @@ "link_preview.author": "{name} szerint", "link_preview.more_from_author": "Több tőle: {name}", "link_preview.shares": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}", + "lists.add_member": "Hozzáadás", + "lists.add_to_list": "Hozzáadás a listához", + "lists.add_to_lists": "{name} hozzáadása a listához", + "lists.create": "Létrehozás", + "lists.create_a_list_to_organize": "Új lista létrehozása a kezdőlapod szervezéséhez", + "lists.create_list": "Lista létrehozása", "lists.delete": "Lista törlése", + "lists.done": "Kész", "lists.edit": "Lista szerkesztése", + "lists.exclusive": "Tagok elrejtése a kezdőlapon", + "lists.exclusive_hint": "Ha valaki szerepel ezen a listán, el lesz rejtve a kezdőlapod hírfolyamán, hogy ne lásd kétszer a bejegyzéseit.", + "lists.find_users_to_add": "Hozzáadandó felhasználók keresése", + "lists.list_members": "Tagok listázása", + "lists.list_members_count": "{count, plural, one {# tag} other {# tag}}", + "lists.list_name": "Lista neve", + "lists.new_list_name": "Új lista neve", + "lists.no_lists_yet": "Nincsenek még listák.", + "lists.no_members_yet": "Nincsenek még tagok.", + "lists.no_results_found": "Nincs találat.", + "lists.remove_member": "Eltávolítás", "lists.replies_policy.followed": "Bármely követett felhasználó", "lists.replies_policy.list": "A lista tagjai", "lists.replies_policy.none": "Senki", + "lists.save": "Mentés", + "lists.search_placeholder": "Keresés a követett személyek között", + "lists.show_replies_to": "Listatagok válaszainak hozzávétele", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés…", "media_gallery.hide": "Elrejtés", @@ -628,7 +652,7 @@ "onboarding.action.back": "Vissza", "onboarding.actions.back": "Vissza", "onboarding.actions.go_to_explore": "Felkapottak megtekintése", - "onboarding.actions.go_to_home": "Ugrás a saját hírfolyamra", + "onboarding.actions.go_to_home": "Ugrás a kezdőlapod hírfolyamára", "onboarding.compose.template": "Üdvözlet, #Mastodon!", "onboarding.follows.empty": "Sajnos jelenleg nem jeleníthető meg eredmény. Kipróbálhatod a keresést vagy böngészheted a felfedező oldalon a követni kívánt személyeket, vagy próbáld meg később.", "onboarding.follows.lead": "A kezdőlapod a Mastodon használatának elsődleges módja. Minél több embert követsz, annál aktívabbak és érdekesebbek lesznek a dolgok. Az induláshoz itt van néhány javaslat:", @@ -691,7 +715,7 @@ "recommended": "Ajánlott", "refresh": "Frissítés", "regeneration_indicator.label": "Betöltés…", - "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", + "regeneration_indicator.sublabel": "A kezdőlapod hírfolyama épp készül!", "relative_time.days": "{number}n", "relative_time.full.days": "{number, plural, one {# napja} other {# napja}}", "relative_time.full.hours": "{number, plural, one {# órája} other {# órája}}", @@ -745,7 +769,7 @@ "report.thanks.title": "Nem akarod ezt látni?", "report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.", "report.unfollow": "@{name} követésének leállítása", - "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", + "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a kezdőlapi hírfolyamban, szüntesd meg a követését.", "report_notification.attached_statuses": "{count} bejegyzés mellékelve", "report_notification.categories.legal": "Jogi", "report_notification.categories.legal_sentence": "illegális tartalom", @@ -849,7 +873,7 @@ "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", "subscribed_languages.save": "Változások mentése", "subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében", - "tabs_bar.home": "Kezdőoldal", + "tabs_bar.home": "Kezdőlap", "tabs_bar.notifications": "Értesítések", "time_remaining.days": "{number, plural, one {# nap} other {# nap}} van hátra", "time_remaining.hours": "{number, plural, one {# óra} other {# óra}} van hátra", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index d947b59eae..ff5526a71f 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -87,8 +87,11 @@ "alert.unexpected.title": "Oops!", "alt_text_badge.title": "Testo alternativo", "announcement.announcement": "Annuncio", + "annual_report.summary.archetype.booster": "Cacciatore/trice di tendenze", + "annual_report.summary.archetype.lurker": "L'osservatore/trice", "annual_report.summary.archetype.oracle": "L'oracolo", "annual_report.summary.archetype.pollster": "Sondaggista", + "annual_report.summary.archetype.replier": "Utente socievole", "annual_report.summary.followers.followers": "seguaci", "annual_report.summary.followers.total": "{count} in totale", "annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:", @@ -137,13 +140,16 @@ "column.blocks": "Utenti bloccati", "column.bookmarks": "Segnalibri", "column.community": "Cronologia locale", + "column.create_list": "Crea lista", "column.direct": "Menzioni private", "column.directory": "Sfoglia profili", "column.domain_blocks": "Domini bloccati", + "column.edit_list": "Modifica lista", "column.favourites": "Preferiti", "column.firehose": "Feed dal vivo", "column.follow_requests": "Richieste di seguirti", "column.home": "Home", + "column.list_members": "Gestisci i membri della lista", "column.lists": "Liste", "column.mutes": "Utenti silenziati", "column.notifications": "Notifiche", @@ -461,11 +467,32 @@ "link_preview.author": "Di {name}", "link_preview.more_from_author": "Altro da {name}", "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} post}}", + "lists.add_member": "Aggiungi", + "lists.add_to_list": "Aggiungi alla lista", + "lists.add_to_lists": "Aggiungi {name} alle liste", + "lists.create": "Crea", + "lists.create_a_list_to_organize": "Crea una nuova lista per organizzare il tuo feed Home", + "lists.create_list": "Crea lista", "lists.delete": "Elimina elenco", + "lists.done": "Fatto", "lists.edit": "Modifica elenco", + "lists.exclusive": "Nascondi i membri in Home", + "lists.exclusive_hint": "Se qualcuno è presente in questa lista, nascondilo nel tuo feed Home per evitare di vedere i suoi post due volte.", + "lists.find_users_to_add": "Trova utenti da aggiungere", + "lists.list_members": "Membri della lista", + "lists.list_members_count": "{count, plural, one {# membro} other {# membri}}", + "lists.list_name": "Nome della lista", + "lists.new_list_name": "Nuovo nome della lista", + "lists.no_lists_yet": "Non ci sono ancora liste.", + "lists.no_members_yet": "Non ci sono ancora membri.", + "lists.no_results_found": "Nessun risultato trovato.", + "lists.remove_member": "Rimuovi", "lists.replies_policy.followed": "Qualsiasi utente seguito", "lists.replies_policy.list": "Membri dell'elenco", "lists.replies_policy.none": "Nessuno", + "lists.save": "Salva", + "lists.search_placeholder": "Cerca le persone che segui", + "lists.show_replies_to": "Includi le risposte dei membri della lista a", "load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}", "loading_indicator.label": "Caricamento…", "media_gallery.hide": "Nascondi", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 86226f4cde..0557951a7f 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -4,6 +4,7 @@ "about.domain_blocks.silenced.title": "ਸੀਮਿਤ", "about.domain_blocks.suspended.title": "ਮੁਅੱਤਲ ਕੀਤੀ", "about.rules": "ਸਰਵਰ ਨਿਯਮ", + "account.account_note_header": "ਨਿੱਜੀ ਨੋਟ", "account.add_or_remove_from_list": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ ਜਾਂ ਹਟਾਓ", "account.badges.bot": "ਆਟੋਮੇਟ ਕੀਤਾ", "account.badges.group": "ਗਰੁੱਪ", @@ -27,7 +28,9 @@ "account.following": "ਫ਼ਾਲੋ ਕੀਤਾ", "account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।", "account.go_to_profile": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਜਾਓ", + "account.joined_short": "ਜੁਆਇਨ ਕੀਤਾ", "account.media": "ਮੀਡੀਆ", + "account.mention": "@{name} ਦਾ ਜ਼ਿਕਰ", "account.mute": "{name} ਨੂੰ ਮੌਨ ਕਰੋ", "account.mute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਮੌਨ ਕਰੋ", "account.mute_short": "ਮੌਨ ਕਰੋ", @@ -44,16 +47,32 @@ "account.unblock": "@{name} ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ", "account.unblock_domain": "{domain} ਡੋਮੇਨ ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ", "account.unblock_short": "ਪਾਬੰਦੀ ਹਟਾਓ", + "account.unendorse": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਫ਼ੀਚਰ ਨਾ ਕਰੋ", "account.unfollow": "ਅਣ-ਫ਼ਾਲੋ", + "account.unmute": "@{name} ਲਈ ਮੌਨ ਹਟਾਓ", + "account.unmute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਅਣ-ਮੌਨ ਕਰੋ", "account.unmute_short": "ਮੌਨ-ਰਹਿਤ ਕਰੋ", "account_note.placeholder": "Click to add a note", "admin.dashboard.retention.average": "ਔਸਤ", "admin.dashboard.retention.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ", "alert.unexpected.title": "ਓਹੋ!", + "alt_text_badge.title": "ਬਦਲੀ ਲਿਖਤ", "announcement.announcement": "ਹੋਕਾ", + "annual_report.summary.followers.followers": "ਫ਼ਾਲੋਅਰ", + "annual_report.summary.followers.total": "{count} ਕੁੱਲ", + "annual_report.summary.highlighted_post.by_favourites": "ਸਭ ਤੋਂ ਵੱਧ ਪਸੰਦ ਕੀਤੀ ਪੋਸਟ", + "annual_report.summary.highlighted_post.by_reblogs": "ਸਭ ਤੋਂ ਵੱਧ ਬੂਸਟ ਕੀਤੀ ਪੋਸਟ", + "annual_report.summary.highlighted_post.by_replies": "ਸਭ ਤੋਂ ਵੱਧ ਜਵਾਬ ਦਿੱਤੀ ਗਈ ਪੋਸਟ", + "annual_report.summary.highlighted_post.possessive": "{name}", + "annual_report.summary.most_used_app.most_used_app": "ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀ ਐਪ", + "annual_report.summary.most_used_hashtag.none": "ਕੋਈ ਨਹੀਂ", + "annual_report.summary.new_posts.new_posts": "ਨਵੀਆਂ ਪੋਸਟਾਂ", + "annual_report.summary.thanks": "Mastodon ਦਾ ਹਿੱਸਾ ਬਣਨ ਵਾਸਤੇ ਧੰਨਵਾਦ ਹੈ!", + "audio.hide": "ਆਡੀਓ ਨੂੰ ਲੁਕਾਓ", "block_modal.show_less": "ਘੱਟ ਦਿਖਾਓ", "block_modal.show_more": "ਵੱਧ ਦਿਖਾਓ", "block_modal.title": "ਵਰਤੋਂਕਾਰ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣੀ ਹੈ?", + "boost_modal.reblog": "ਪੋਸਟ ਨੂੰ ਬੂਸਟ ਕਰਨਾ ਹੈ?", "bundle_column_error.error.title": "ਓਹ ਹੋ!", "bundle_column_error.network.title": "ਨੈੱਟਵਰਕ ਦੀ ਸਮੱਸਿਆ", "bundle_column_error.retry": "ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ", @@ -62,18 +81,29 @@ "bundle_modal_error.close": "ਬੰਦ ਕਰੋ", "bundle_modal_error.message": "ਭਾਗ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਕੁਝ ਗਲਤ ਵਾਪਰਿਆ ਹੈ।", "bundle_modal_error.retry": "ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ", + "closed_registrations_modal.title": "Mastodon ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ", "column.about": "ਸਾਡੇ ਬਾਰੇ", "column.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ", "column.bookmarks": "ਬੁੱਕਮਾਰਕ", "column.community": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ", + "column.create_list": "ਸੂਚੀ ਬਣਾਓ", "column.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ", + "column.directory": "ਪ੍ਰੋਫਾਈਲਾਂ ਨੂੰ ਦੇਖੋ", + "column.domain_blocks": "ਪਾਬੰਦੀ ਲਾਏ ਡੋਮੇਨ", + "column.edit_list": "ਸੂਚੀ ਨੂੰ ਸੋਧੋ", "column.favourites": "ਮਨਪਸੰਦ", + "column.firehose": "ਲਾਈਵ ਫੀਡ", "column.follow_requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ", "column.home": "ਮੁੱਖ ਸਫ਼ਾ", + "column.list_members": "ਸੂਚੀ ਦੇ ਮੈਂਬਰ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ", "column.lists": "ਸੂਚੀਆਂ", + "column.mutes": "ਮੌਨ ਕੀਤੇ ਵਰਤੋਂਕਾਰ", "column.notifications": "ਸੂਚਨਾਵਾਂ", "column.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ", "column_back_button.label": "ਪਿੱਛੇ", + "column_header.hide_settings": "ਸੈਟਿੰਗਾਂ ਨੂੰ ਲੁਕਾਓ", + "column_header.moveLeft_settings": "ਕਾਲਮ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਭੇਜੋ", + "column_header.moveRight_settings": "ਕਾਲਮ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ", "column_header.pin": "ਟੰਗੋ", "column_header.show_settings": "ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ", "column_header.unpin": "ਲਾਹੋ", @@ -83,16 +113,20 @@ "community.column_settings.remote_only": "ਸਿਰਫ਼ ਰਿਮੋਟ ਹੀ", "compose.language.change": "ਭਾਸ਼ਾ ਬਦਲੋ", "compose.language.search": "ਭਾਸ਼ਾਵਾਂ ਦੀ ਖੋਜ...", + "compose.published.body": "ਪੋਸਟ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੀ।", "compose.published.open": "ਖੋਲ੍ਹੋ", "compose.saved.body": "ਪੋਸਟ ਸੰਭਾਲੀ ਗਈ।", "compose_form.direct_message_warning_learn_more": "ਹੋਰ ਜਾਣੋ", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", + "compose_form.lock_disclaimer": "ਤੁਹਾਡਾ ਖਾਤਾ {locked} ਨਹੀਂ ਹੈ। ਕੋਈ ਵੀ ਤੁਹਾਡੀਆਂ ਸਿਰਫ਼-ਫ਼ਾਲੋਅਰ ਪੋਸਟਾਂ ਵੇਖਣ ਵਾਸਤੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰ ਸਕਦਾ ਹੈ।", "compose_form.lock_disclaimer.lock": "ਲਾਕ ਹੈ", - "compose_form.placeholder": "What is on your mind?", + "compose_form.placeholder": "ਤੁਹਾਡੇ ਮਨ ਵਿੱਚ ਕੀ ਹੈ?", + "compose_form.poll.option_placeholder": "{number} ਚੋਣ", + "compose_form.poll.single": "ਇਕੱਲੀ ਚੋਣ", "compose_form.poll.type": "ਸਟਾਈਲ", "compose_form.publish": "ਪੋਸਟ", - "compose_form.publish_form": "Publish", + "compose_form.publish_form": "ਨਵੀਂ ਪੋਸਟ", "compose_form.reply": "ਜਵਾਬ ਦਿਓ", "compose_form.save_changes": "ਅੱਪਡੇਟ", "compose_form.spoiler.marked": "ਸਮੱਗਰੀ ਚੇਤਾਵਨੀ ਨੂੰ ਹਟਾਓ", @@ -102,20 +136,49 @@ "confirmations.block.confirm": "ਪਾਬੰਦੀ", "confirmations.delete.confirm": "ਹਟਾਓ", "confirmations.delete.message": "ਕੀ ਤੁਸੀਂ ਇਹ ਪੋਸਟ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?", + "confirmations.delete.title": "ਪੋਸਟ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?", "confirmations.delete_list.confirm": "ਹਟਾਓ", + "confirmations.delete_list.message": "ਕੀ ਤੁਸੀਂ ਇਸ ਸੂਚੀ ਨੂੰ ਪੱਕੇ ਤੌਰ ਉੱਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?", + "confirmations.delete_list.title": "ਸੂਚੀ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?", "confirmations.discard_edit_media.confirm": "ਰੱਦ ਕਰੋ", "confirmations.edit.confirm": "ਸੋਧ", "confirmations.logout.confirm": "ਬਾਹਰ ਹੋਵੋ", + "confirmations.logout.message": "ਕੀ ਤੁਸੀਂ ਲਾਗ ਆਉਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", + "confirmations.logout.title": "ਲਾਗ ਆਉਟ ਕਰਨਾ ਹੈ?", "confirmations.mute.confirm": "ਮੌਨ ਕਰੋ", + "confirmations.redraft.confirm": "ਹਟਾਓ ਤੇ ਮੁੜ-ਡਰਾਫਟ", "confirmations.reply.confirm": "ਜਵਾਬ ਦੇਵੋ", "confirmations.unfollow.confirm": "ਅਣ-ਫ਼ਾਲੋ", + "confirmations.unfollow.message": "ਕੀ ਤੁਸੀਂ {name} ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", + "confirmations.unfollow.title": "ਵਰਤੋਂਕਾਰ ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰਨਾ ਹੈ?", + "content_warning.hide": "ਪੋਸਟ ਨੂੰ ਲੁਕਾਓ", + "content_warning.show": "ਕਿਵੇਂ ਵੀ ਵੇਖਾਓ", + "content_warning.show_more": "ਹੋਰ ਵੇਖਾਓ", + "conversation.delete": "ਗੱਲਬਾਤ ਨੂੰ ਹਟਾਓ", + "conversation.mark_as_read": "ਪੜ੍ਹੇ ਵਜੋਂ ਨਿਸ਼ਾਨੀ ਲਾਓ", + "conversation.open": "ਗੱਲਬਾਤ ਨੂੰ ਵੇਖੋ", + "conversation.with": "{names} ਨਾਲ", + "copy_icon_button.copied": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ", "copypaste.copied": "ਕਾਪੀ ਕੀਤਾ", "copypaste.copy_to_clipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ", + "directory.local": "ਸਿਰਫ਼ {domain} ਤੋਂ", + "directory.new_arrivals": "ਨਵੇਂ ਆਉਣ ਵਾਲੇ", + "directory.recently_active": "ਸੱਜਰੇ ਸਰਗਰਮ", "disabled_account_banner.account_settings": "ਖਾਤੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ", + "disabled_account_banner.text": "ਤੁਹਾਡਾ ਖਾਤਾ {disabledAccount} ਇਸ ਵੇਲੇ ਅਸਮਰੱਥ ਕੀਤਾ ਹੈ।", "dismissable_banner.dismiss": "ਰੱਦ ਕਰੋ", "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.", "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", - "embed.instructions": "Embed this status on your website by copying the code below.", + "domain_block_modal.block": "ਸਰਵਰ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ", + "domain_block_modal.block_account_instead": "ਇਸ ਦੀ ਬਜਾਏ @{name} ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ", + "domain_block_modal.title": "ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣੀ ਹੈ?", + "domain_pill.server": "ਸਰਵਰ", + "domain_pill.their_handle": "ਇਹ ਹੈਂਡਲ:", + "domain_pill.their_server": "ਉਹਨਾਂ ਦਾ ਡਿਜ਼ਿਟਲ ਘਰ, ਜਿੱਥੇ ਉਹਨਾਂ ਦੀਆਂ ਸਾਰੀਆਂ ਪੋਸਟਾਂ ਹੁੰਦੀਆਂ ਹਨ।", + "domain_pill.username": "ਵਰਤੋਂਕਾਰ-ਨਾਂ", + "domain_pill.whats_in_a_handle": "ਹੈਂਡਲ ਕੀ ਹੁੰਦਾ ਹੈ?", + "domain_pill.your_handle": "ਤੁਹਾਡਾ ਹੈਂਡਲ:", + "embed.instructions": "ਹੇਠਲੇ ਕੋਡ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਆਪਣੀ ਵੈੱਬਸਾਈਟ ਉੱਤੇ ਇਸ ਪੋਸਟ ਨੂੰ ਇੰਬੈੱਡ ਕਰੋ।", "emoji_button.activity": "ਗਤੀਵਿਧੀ", "emoji_button.clear": "ਮਿਟਾਓ", "emoji_button.custom": "ਕਸਟਮ", @@ -124,27 +187,43 @@ "emoji_button.nature": "ਕੁਦਰਤ", "emoji_button.objects": "ਇਕਾਈ", "emoji_button.people": "ਲੋਕ", + "emoji_button.recent": "ਅਕਸਰ ਵਰਤੇ", "emoji_button.search": "ਖੋਜ ਕਰੋ...", "emoji_button.search_results": "ਖੋਜ ਨਤੀਜੇ", "emoji_button.symbols": "ਚਿੰਨ੍ਹ", "emoji_button.travel": "ਸੈਰ ਸਪਾਟਾ ਤੇ ਥਾਵਾਂ", + "empty_column.account_suspended": "ਖਾਤਾ ਸਸਪੈਂਡ ਕੀਤਾ", "empty_column.account_timeline": "ਇੱਥੇ ਕੋਈ ਪੋਸਟ ਨਹੀਂ ਹੈ!", - "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.account_unavailable": "ਪ੍ਰੋਫਾਈਲ ਅਣ-ਉਪਲਬਧ ਹੈ", + "empty_column.blocks": "ਤੁਸੀਂ ਹਾਲੇ ਕਿਸੇ ਵਰਤੋਂਕਾਰ ਉੱਤੇ ਪਾਬੰਦੀ ਨਹੀਂ ਲਾਈ ਹੈ।", + "empty_column.bookmarked_statuses": "ਤੁਸੀਂ ਹਾਲੇ ਕਿਸੇ ਵੀ ਪੋਸਟ ਨੂੰ ਬੁੱਕਮਾਰਕ ਨਹੀਂ ਕੀਤਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਬੁੱਕਮਾਰਕ ਕੀਤਾ ਤਾਂ ਉਹ ਇੱਥੇ ਦਿਖਾਈ ਦਾਵੇਗਾ।", "empty_column.home": "ਤੁਹਾਡੀ ਟਾਈਮ-ਲਾਈਨ ਖਾਲੀ ਹੈ! ਇਸ ਨੂੰ ਭਰਨ ਲਈ ਹੋਰ ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ।", - "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.list": "ਇਸ ਸੂਚੀ ਵਿੱਚ ਹਾਲੇ ਕੁਝ ਵੀ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਇਸ ਸੂਚੀ ਦੇ ਮੈਂਬਰ ਨਵੀਆਂ ਪੋਸਟਾਂ ਪਾਉਂਦੇ ਹਨ ਤਾਂ ਉਹ ਇੱਥੇ ਦਿਖਾਈ ਦੇਣਗੀਆਂ।", "errors.unexpected_crash.report_issue": "ਮੁੱਦੇ ਦੀ ਰਿਪੋਰਟ ਕਰੋ", + "explore.search_results": "ਖੋਜ ਦੇ ਨਤੀਜੇ", "explore.suggested_follows": "ਲੋਕ", "explore.title": "ਪੜਚੋਲ ਕਰੋ", "explore.trending_links": "ਖ਼ਬਰਾਂ", "explore.trending_statuses": "ਪੋਸਟਾਂ", "explore.trending_tags": "ਹੈਸ਼ਟੈਗ", + "filter_modal.added.expired_title": "ਫਿਲਟਰ ਦੀ ਮਿਆਦ ਪੁੱਗੀ!", + "filter_modal.added.review_and_configure_title": "ਫਿਲਟਰ ਸੈਟਿੰਗਾਂ", "filter_modal.added.settings_link": "ਸੈਟਿੰਗਾਂ ਸਫ਼ਾ", + "filter_modal.added.title": "ਫਿਲਟਰ ਨੂੰ ਜੋੜਿਆ!", + "filter_modal.select_filter.expired": "ਮਿਆਦ ਪੁੱਗੀ", + "filter_modal.select_filter.prompt_new": "ਨਵੀਂ ਕੈਟਾਗਰੀ: {name}", + "filter_modal.select_filter.search": "ਖੋਜੋ ਜਾਂ ਬਣਾਓ", "firehose.all": "ਸਭ", "firehose.local": "ਇਹ ਸਰਵਰ", "firehose.remote": "ਹੋਰ ਸਰਵਰ", "follow_request.reject": "ਰੱਦ ਕਰੋ", "follow_suggestions.dismiss": "ਮੁੜ ਨਾ ਵੇਖਾਓ", + "follow_suggestions.personalized_suggestion": "ਨਿੱਜੀ ਸੁਝਾਅ", + "follow_suggestions.popular_suggestion": "ਹਰਮਨਪਿਆਰੇ ਸੁਝਾਅ", + "follow_suggestions.popular_suggestion_longer": "{domain} ਉੱਤੇ ਹਰਮਨਪਿਆਰੇ", "follow_suggestions.view_all": "ਸਭ ਵੇਖੋ", + "follow_suggestions.who_to_follow": "ਕਿਸ ਨੂੰ ਫ਼ਾਲੋ ਕਰੀਏ", + "followed_tags": "ਫ਼ਾਲੋ ਕੀਤੇ ਹੈਸ਼ਟੈਗ", "footer.about": "ਸਾਡੇ ਬਾਰੇ", "footer.directory": "ਪਰੋਫਾਇਲ ਡਾਇਰੈਕਟਰੀ", "footer.get_app": "ਐਪ ਲਵੋ", @@ -159,53 +238,94 @@ "hashtag.column_header.tag_mode.any": "ਜਾਂ {additional}", "hashtag.column_header.tag_mode.none": "{additional} ਬਿਨਾਂ", "hashtag.column_settings.select.no_options_message": "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ ਲੱਭਾ", + "hashtag.column_settings.select.placeholder": "ਹੈਸ਼ਟੈਗ ਦਿਓ…", + "hashtag.column_settings.tag_mode.all": "ਇਹ ਸਭ", "hashtag.column_settings.tag_mode.any": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ", "hashtag.column_settings.tag_mode.none": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਹੀਂ", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.follow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ", "hashtag.unfollow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰੋ", + "hints.profiles.see_more_followers": "{domain} ਉੱਤੇ ਹੋਰ ਫ਼ਾਲੋਅਰ ਵੇਖੋ", + "hints.profiles.see_more_follows": "{domain} ਉੱਤੇ ਹੋਰ ਫ਼ਾਲੋ ਨੂੰ ਵੇਖੋ", + "hints.profiles.see_more_posts": "{domain} ਉੱਤੇ ਹੋਰ ਪੋਸਟਾਂ ਨੂੰ ਵੇਖੋ", + "home.column_settings.show_reblogs": "ਬੂਸਟਾਂ ਨੂੰ ਵੇਖੋ", + "home.column_settings.show_replies": "ਜਵਾਬਾਂ ਨੂੰ ਵੇਖੋ", + "home.hide_announcements": "ਐਲਾਨਾਂ ਨੂੰ ਓਹਲੇ ਕਰੋ", "home.pending_critical_update.link": "ਅੱਪਡੇਟ ਵੇਖੋ", + "ignore_notifications_modal.ignore": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ", + "interaction_modal.login.action": "ਮੈਨੂੰ ਮੁੱਖ ਸਫ਼ੇ ਉੱਤੇ ਲੈ ਜਾਓ", + "interaction_modal.no_account_yet": "Mastodon ਉੱਤੇ ਨਹੀਂ ਹੋ?", + "interaction_modal.on_another_server": "ਵੱਖਰੇ ਸਰਵਰ ਉੱਤੇ", + "interaction_modal.on_this_server": "ਇਸ ਸਰਵਰ ਉੱਤੇ", + "interaction_modal.title.favourite": "{name} ਦੀ ਪੋਸਟ ਨੂੰ ਪਸੰਦ ਕਰੋ", "interaction_modal.title.follow": "{name} ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ", + "interaction_modal.title.reblog": "{name} ਦੀ ਪੋਸਟ ਨੂੰ ਬੂਸਟ ਕਰੋ", + "interaction_modal.title.reply": "{name} ਦੀ ਪੋਸਟ ਦਾ ਜਵਾਬ ਦਿਓ", + "interaction_modal.title.vote": "{name} ਦੀ ਚੋਣ ਵਾਸਤੇ ਵੋਟ ਪਾਓ", + "intervals.full.days": "{number, plural, one {# ਦਿਨ} other {# ਦਿਨ}}", + "intervals.full.hours": "{number, plural, one {# ਘੰਟਾ} other {# ਘੰਟੇ}}", + "intervals.full.minutes": "{number, plural, one {# ਮਿੰਟ} other {# ਮਿੰਟ}}", "keyboard_shortcuts.back": "ਪਿੱਛੇ ਜਾਓ", "keyboard_shortcuts.blocked": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਸੂਚੀ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.boost": "ਪੋਸਟ ਨੂੰ ਬੂਸਟ ਕਰੋ", "keyboard_shortcuts.column": "ਫੋਕਸ ਕਾਲਮ", "keyboard_shortcuts.compose": "to focus the compose textarea", "keyboard_shortcuts.description": "ਵਰਣਨ", - "keyboard_shortcuts.direct": "to open direct messages column", - "keyboard_shortcuts.down": "to move down in the list", - "keyboard_shortcuts.enter": "to open status", - "keyboard_shortcuts.federated": "to open federated timeline", + "keyboard_shortcuts.direct": "ਪ੍ਰਾਈਵੇਟ ਜ਼ਿਕਰ ਕੀਤੇ ਕਾਲਮ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ", + "keyboard_shortcuts.down": "ਸੂਚੀ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋ", + "keyboard_shortcuts.enter": "ਪੋਸਟ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.favourite": "ਪੋਸਟ ਨੂੰ ਪਸੰਦ ਕਰੋ", + "keyboard_shortcuts.federated": "", "keyboard_shortcuts.heading": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ", - "keyboard_shortcuts.home": "to open home timeline", - "keyboard_shortcuts.legend": "to display this legend", - "keyboard_shortcuts.local": "to open local timeline", - "keyboard_shortcuts.mention": "to mention author", - "keyboard_shortcuts.muted": "to open muted users list", - "keyboard_shortcuts.my_profile": "to open your profile", + "keyboard_shortcuts.home": "ਮੁੱਖ-ਸਫ਼ਾ ਟਾਈਮ-ਲਾਈਨ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.legend": "ਇਸ ਸੰਕੇਤ ਨੂੰ ਵੇਖਾਓ", + "keyboard_shortcuts.local": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.mention": "ਲੇਖਕ ਦਾ ਜ਼ਿਕਰ", + "keyboard_shortcuts.muted": "ਮੌਨ ਕੀਤੇ ਵਰਤੋਂਕਾਰ ਦੀ ਸੂਚੀ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.my_profile": "ਆਪਣੇ ਪਰੋਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.notifications": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਕਾਲਮ ਖੋਲ੍ਹੋ", - "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.open_media": "ਮੀਡੀਏ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.pinned": "ਪਿੰਨ ਕੀਤੀਆਂ ਪੋਸਟਾਂ ਦੀ ਸੂਚੀ ਨੂੰ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.profile": "ਲੇਖਕ ਦਾ ਪਰੋਫਾਈਲ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.reply": "ਪੋਸਟ ਨੂੰ ਜਵਾਬ ਦਿਓ", - "keyboard_shortcuts.requests": "to open follow requests list", - "keyboard_shortcuts.search": "to focus search", - "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਖੋਲ੍ਹੋ", + "keyboard_shortcuts.search": "ਖੋਜ ਪੱਟੀ ਨੂੰ ਫੋਕਸ ਕਰੋ", + "keyboard_shortcuts.spoilers": "CW ਖੇਤਰ ਨੂੰ ਵੇਖਾਓ/ਓਹਲੇ ਕਰੋ", "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "ਮੀਡੀਆ ਦਿਖਾਉਣ/ਲੁਕਾਉਣ ਲਈ", "keyboard_shortcuts.toot": "ਨਵੀਂ ਪੋਸਟ ਸ਼ੁਰੂ ਕਰੋ", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", - "keyboard_shortcuts.up": "to move up in the list", + "keyboard_shortcuts.up": "ਸੂਚੀ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋ", "lightbox.close": "ਬੰਦ ਕਰੋ", "lightbox.next": "ਅਗਲੀ", "lightbox.previous": "ਪਿਛਲੀ", "link_preview.author": "{name} ਵਲੋਂ", + "link_preview.more_from_author": "{name} ਵਲੋਂ ਹੋਰ", + "link_preview.shares": "{count, plural, one {{counter} ਪੋਸਟ} other {{counter} ਪੋਸਟਾਂ}}", + "lists.add_member": "ਜੋੜੋ", + "lists.add_to_list": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ", + "lists.create": "ਬਣਾਓ", + "lists.create_list": "ਸੂਚੀ ਬਣਾਓ", "lists.delete": "ਸੂਚੀ ਹਟਾਓ", + "lists.done": "ਮੁਕੰਮਲ", + "lists.edit": "ਸੂਚੀ ਨੂੰ ਸੋਧੋ", + "lists.find_users_to_add": "ਜੋੜਨ ਲਈ ਵਰਤੋਂਕਾਰ ਲੱਭੋ", + "lists.list_members": "ਮੈਂਬਰਾਂ ਦੀ ਸੂਚੀ", + "lists.list_members_count": "{count, plural, one {# ਮੈਂਬਰ} other {# ਮੈਂਬਰ}}", + "lists.list_name": "ਸੂਚੀ ਦਾ ਨਾਂ", + "lists.new_list_name": "ਨਵੀਂ ਸੂਚੀਂ ਦਾ ਨਾਂ", + "lists.no_lists_yet": "ਹਾਲੇ ਕੋਈ ਵੀ ਸੂਚੀ ਨਹੀਂ ਹੈ।", + "lists.remove_member": "ਹਟਾਓ", "lists.replies_policy.followed": "ਕੋਈ ਵੀ ਫ਼ਾਲੋ ਕੀਤਾ ਵਰਤੋਂਕਾਰ", + "lists.replies_policy.list": "ਸੂਚੀ ਦੇ ਮੈਂਬਰ", "lists.replies_policy.none": "ਕੋਈ ਨਹੀਂ", + "lists.save": "ਸੰਭਾਲੋ", "loading_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ…", + "media_gallery.hide": "ਲੁਕਾਓ", + "mute_modal.show_options": "ਚੋਣਾਂ ਨੂੰ ਵੇਖਾਓ", "navigation_bar.about": "ਇਸ ਬਾਰੇ", + "navigation_bar.administration": "ਪਰਸ਼ਾਸ਼ਨ", "navigation_bar.advanced_interface": "ਤਕਨੀਕੀ ਵੈੱਬ ਇੰਟਰਫੇਸ ਵਿੱਚ ਖੋਲ੍ਹੋ", "navigation_bar.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ", "navigation_bar.bookmarks": "ਬੁੱਕਮਾਰਕ", @@ -229,20 +349,57 @@ "navigation_bar.search": "ਖੋਜੋ", "navigation_bar.security": "ਸੁਰੱਖਿਆ", "not_signed_in_indicator.not_signed_in": "ਇਹ ਸਰੋਤ ਵਰਤਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।", + "notification.admin.sign_up": "{name} ਨੇ ਸਾਈਨ ਅੱਪ ਕੀਤਾ", "notification.follow": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕੀਤਾ", + "notification.follow.name_and_others": "{name} ਅਤੇ {count, plural, one {# ਹੋਰ} other {# ਹੋਰਾਂ}} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕੀਤਾ", "notification.follow_request": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ", + "notification.label.mention": "ਜ਼ਿਕਰ", + "notification.label.private_mention": "ਨਿੱਜੀ ਜ਼ਿਕਰ", + "notification.label.private_reply": "ਪ੍ਰਾਈਵੇਟ ਜਵਾਬ", + "notification.label.reply": "ਜਵਾਬ", + "notification.mention": "ਜ਼ਿਕਰ", + "notification.mentioned_you": "{name} ਨੇ ਤੁਹਾਡਾ ਜ਼ਿਕਰ ਕੀਤਾ", + "notification.moderation-warning.learn_more": "ਹੋਰ ਜਾਣੋ", + "notification.moderation_warning.action_disable": "ਤੁਹਾਡੇ ਖਾਤੇ ਨੂੰਅਸਮਰੱਥ ਕੀਤਾ ਹੈ।", "notification.reblog": "{name} boosted your status", + "notification.relationships_severance_event.learn_more": "ਹੋਰ ਜਾਣੋ", + "notification.status": "{name} ਨੇ ਹੁਣੇ ਪੋਸਟ ਕੀਤਾ", + "notification.update": "{name} ਨੋ ਪੋਸਟ ਨੂੰ ਸੋਧਿਆ", + "notification_requests.accept": "ਮਨਜ਼ੂਰ", + "notification_requests.confirm_accept_multiple.title": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਬੇਨਤੀਆਂ ਨੂੰ ਮਨਜ਼ੂਰ ਕਰਨਾ ਹੈ?", + "notification_requests.confirm_dismiss_multiple.title": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਬੇਨਤੀਆਂ ਨੂੰ ਖ਼ਾਰਜ ਕਰਨਾ ਹੈ?", + "notification_requests.dismiss": "ਖ਼ਾਰਜ ਕਰੋ", + "notification_requests.edit_selection": "ਸੋਧੋ", + "notification_requests.exit_selection": "ਮੁਕੰਮਲ", + "notification_requests.notifications_from": "{name} ਵਲੋਂ ਨੋਟੀਫਿਕੇਸ਼ਨ", + "notifications.clear_title": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?", + "notifications.column_settings.admin.report": "ਨਵੀਆਂ ਰਿਪੋਰਟਾਂ:", "notifications.column_settings.alert": "ਡੈਸਕਟਾਪ ਸੂਚਨਾਵਾਂ", "notifications.column_settings.favourite": "ਮਨਪਸੰਦ:", + "notifications.column_settings.filter_bar.category": "ਫੌਰੀ ਫਿਲਟਰ ਪੱਟੀ", "notifications.column_settings.follow": "ਨਵੇਂ ਫ਼ਾਲੋਅਰ:", "notifications.column_settings.follow_request": "ਨਵੀਆਂ ਫ਼ਾਲੋ ਬੇਨਤੀਆਂ:", + "notifications.column_settings.group": "ਗਰੁੱਪ", + "notifications.column_settings.mention": "ਜ਼ਿਕਰ:", + "notifications.column_settings.poll": "ਪੋਲ ਦੇ ਨਤੀਜੇ:", + "notifications.column_settings.reblog": "ਬੂਸਟ:", + "notifications.column_settings.show": "ਕਾਲਮ ਵਿੱਚ ਵੇਖਾਓ", + "notifications.column_settings.sound": "ਆਵਾਜ਼ ਚਲਾਓ", "notifications.column_settings.status": "ਨਵੀਆਂ ਪੋਸਟਾਂ:", + "notifications.column_settings.unread_notifications.category": "ਨਾ-ਪੜ੍ਹੇ ਨੋਟੀਫਿਕੇਸ਼ਨ", + "notifications.column_settings.unread_notifications.highlight": "ਨਾ-ਪੜ੍ਹੇ ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਉਘਾੜੋ", "notifications.column_settings.update": "ਸੋਧ:", "notifications.filter.all": "ਸਭ", "notifications.filter.boosts": "ਬੂਸਟ", "notifications.filter.favourites": "ਮਨਪਸੰਦ", "notifications.filter.follows": "ਫ਼ਾਲੋ", "notifications.filter.mentions": "ਜ਼ਿਕਰ", + "notifications.filter.polls": "ਪੋਲ ਦੇ ਨਤੀਜੇ", + "notifications.grant_permission": "ਇਜਾਜ਼ਤ ਦਿਓ।", + "notifications.group": "{count} ਨੋਟੀਫਿਕੇਸ਼ਨ", + "notifications.policy.accept": "ਮਨਜ਼ੂਰ", + "notifications.policy.accept_hint": "ਨੋਟੀਫਿਕੇਸ਼ਨਾਂ ਵਿੱਚ ਵੇਖਾਓ", + "notifications.policy.drop": "ਅਣਡਿੱਠਾ", "onboarding.actions.go_to_explore": "ਮੈਨੂੰ ਰੁਝਾਨ ਵੇਖਾਓ", "onboarding.actions.go_to_home": "ਮੇਰੀ ਮੁੱਖ ਫੀਡ ਉੱਤੇ ਲੈ ਜਾਓ", "onboarding.follows.lead": "", @@ -265,13 +422,23 @@ "onboarding.steps.share_profile.title": "ਆਪਣੇ ਮਸਟਾਡੋਨ ਪਰੋਫਾਈਲ ਨੂੰ ਸਾਂਝਾ ਕਰੋ", "poll.closed": "ਬੰਦ ਹੈ", "poll.refresh": "ਤਾਜ਼ਾ ਕਰੋ", + "poll.reveal": "ਨਤੀਜਿਆਂ ਨੂੰ ਵੇਖੋ", "poll.vote": "ਵੋਟ ਪਾਓ", + "poll.voted": "ਤੁਸੀਂ ਇਸ ਜਵਾਬ ਲਈ ਵੋਟ ਕੀਤਾ", "privacy.change": "ਪੋਸਟ ਦੀ ਪਰਦੇਦਾਰੀ ਨੂੰ ਬਦਲੋ", + "privacy.private.short": "ਫ਼ਾਲੋਅਰ", "privacy.public.short": "ਜਨਤਕ", "privacy_policy.title": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ", + "recommended": "ਸਿਫ਼ਾਰਸ਼ੀ", "refresh": "ਤਾਜ਼ਾ ਕਰੋ", "regeneration_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...", + "relative_time.days": "{number}ਦਿਨ", + "relative_time.full.days": "{number, plural, one {# ਦਿਨ} other {# ਦਿਨ}} ਪਹਿਲਾਂ", + "relative_time.full.hours": "{number, plural, one {# ਘੰਟਾ} other {# ਘੰਟੇ}} ਪਹਿਲਾਂ", "relative_time.full.just_now": "ਹੁਣੇ ਹੀ", + "relative_time.full.minutes": "{number, plural, one {# ਮਿੰਟ} other {# ਮਿੰਟ}} ਪਹਿਲਾਂ", + "relative_time.full.seconds": "{number, plural, one {# ਸਕਿੰਟ} other {# ਸਕਿੰਟ}} ਪਹਿਲਾਂ", + "relative_time.hours": "{number}ਘੰ", "relative_time.just_now": "ਹੁਣੇ", "relative_time.minutes": "{number}ਮਿੰ", "relative_time.seconds": "{number}ਸ", @@ -295,11 +462,19 @@ "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.categories.legal": "ਕਨੂੰਨੀ", "report_notification.categories.other": "ਬਾਕੀ", + "report_notification.categories.other_sentence": "ਹੋਰ", "report_notification.categories.spam": "ਸਪੈਮ", + "report_notification.categories.spam_sentence": "ਸਪੈਮ", "report_notification.categories.violation": "ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ", + "report_notification.categories.violation_sentence": "ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ", "report_notification.open": "ਰਿਪੋਰਟ ਨੂੰ ਖੋਲ੍ਹੋ", "search.placeholder": "ਖੋਜੋ", + "search.quick_action.go_to_account": "ਪਰੋਫਾਈਲ {x} ਉੱਤੇ ਜਾਓ", + "search.quick_action.go_to_hashtag": "ਹੈਸ਼ਟੈਗ {x} ਉੱਤੇ ਜਾਓ", + "search_popout.language_code": "ISO ਭਾਸ਼ਾ ਕੋਡ", + "search_popout.options": "ਖੋਜ ਲਈ ਚੋਣਾਂ", "search_popout.quick_actions": "ਫੌਰੀ ਕਾਰਵਾਈਆਂ", + "search_popout.recent": "ਸੱਜਰੀਆਂ ਖੋਜੋ", "search_popout.specific_date": "ਖਾਸ ਤਾਰੀਖ", "search_popout.user": "ਵਰਤੋਂਕਾਰ", "search_results.accounts": "ਪਰੋਫਾਈਲ", @@ -308,6 +483,7 @@ "search_results.see_all": "ਸਭ ਵੇਖੋ", "search_results.statuses": "ਪੋਸਟਾਂ", "search_results.title": "{q} ਲਈ ਖੋਜ", + "server_banner.active_users": "ਸਰਗਰਮ ਵਰਤੋਂਕਾਰ", "sign_in_banner.create_account": "ਖਾਤਾ ਬਣਾਓ", "sign_in_banner.sign_in": "ਲਾਗਇਨ", "sign_in_banner.sso_redirect": "ਲਾਗਇਨ ਜਾਂ ਰਜਿਸਟਰ ਕਰੋ", @@ -316,7 +492,10 @@ "status.bookmark": "ਬੁੱਕਮਾਰਕ", "status.copy": "ਪੋਸਟ ਲਈ ਲਿੰਕ ਕਾਪੀ ਕਰੋ", "status.delete": "ਹਟਾਓ", + "status.direct": "{name} ਪ੍ਰਾਈਵੇਟ ਜ਼ਿਕਰ", + "status.direct_indicator": "ਪ੍ਰਾਈਵੇਟ ਜ਼ਿਕਰ", "status.edit": "ਸੋਧ", + "status.edited": "ਆਖਰੀ ਸੋਧ ਦੀ ਤਾਰੀਖ {date}", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.favourite": "ਪਸੰਦ", "status.history.created": "{name} ਨੇ {date} ਨੂੰ ਬਣਾਇਆ", @@ -340,10 +519,12 @@ "status.share": "ਸਾਂਝਾ ਕਰੋ", "status.title.with_attachments": "{user} ਨੇ {attachmentCount, plural,one {ਅਟੈਚਮੈਂਟ} other {{attachmentCount}ਅਟੈਚਮੈਂਟਾਂ}} ਪੋਸਟ ਕੀਤੀਆਂ", "status.translate": "ਉਲੱਥਾ ਕਰੋ", + "status.unpin": "ਪਰੋਫਾਈਲ ਤੋਂ ਲਾਹੋ", "subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ", "tabs_bar.home": "ਘਰ", "tabs_bar.notifications": "ਸੂਚਨਾਵਾਂ", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", + "trends.trending_now": "ਹੁਣ ਰੁਝਾਨ ਵਿੱਚ", "units.short.billion": "{count}ਿਬ", "units.short.million": "{count}ਮਿ", "units.short.thousand": "{count}ਹਜ਼ਾਰ", @@ -357,8 +538,13 @@ "upload_modal.edit_media": "ਮੀਡੀਆ ਸੋਧੋ", "upload_progress.label": "ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...", "upload_progress.processing": "ਕਾਰਵਾਈ ਚੱਲ ਰਹੀ ਹੈ…", + "username.taken": "ਉਹ ਵਰਤੋਂਕਾਰ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਲੈ ਲਿਆ ਹੈ। ਹੋਰ ਅਜ਼ਮਾਓ", + "video.close": "ਵੀਡੀਓ ਨੂੰ ਬੰਦ ਕਰੋ", + "video.download": "ਫ਼ਾਈਲ ਨੂੰ ਡਾਊਨਲੋਡ ਕਰੋ", "video.exit_fullscreen": "ਪੂਰੀ ਸਕਰੀਨ ਵਿੱਚੋਂ ਬਾਹਰ ਨਿਕਲੋ", + "video.expand": "ਵੀਡੀਓ ਨੂੰ ਫੈਲਾਓ", "video.fullscreen": "ਪੂਰੀ ਸਕਰੀਨ", + "video.hide": "ਵੀਡੀਓ ਨੂੰ ਲੁਕਾਓ", "video.pause": "ਠਹਿਰੋ", "video.play": "ਚਲਾਓ" } diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 90af458cdc..50a431eb76 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -104,6 +104,7 @@ "annual_report.summary.most_used_hashtag.none": "Нет", "annual_report.summary.new_posts.new_posts": "новых постов", "annual_report.summary.percentile.text": "Всё это помещает вас в топпользователей Mastodon.", + "annual_report.summary.percentile.we_wont_tell_bernie": "Роскомнадзор об этом не узнает.", "annual_report.summary.thanks": "Спасибо за то, что были вместе с Mastodon!", "attachments_list.unprocessed": "(не обработан)", "audio.hide": "Скрыть аудио", @@ -139,13 +140,16 @@ "column.blocks": "Заблокированные пользователи", "column.bookmarks": "Закладки", "column.community": "Локальная лента", + "column.create_list": "Создать список", "column.direct": "Личные упоминания", "column.directory": "Просмотр профилей", "column.domain_blocks": "Заблокированные домены", + "column.edit_list": "Изменить список", "column.favourites": "Избранные", "column.firehose": "Живая лента", "column.follow_requests": "Запросы на подписку", "column.home": "Главная", + "column.list_members": "Управление участниками списка", "column.lists": "Списки", "column.mutes": "Игнорируемые пользователи", "column.notifications": "Уведомления", @@ -463,11 +467,32 @@ "link_preview.author": "Автор: {name}", "link_preview.more_from_author": "Больше от {name}", "link_preview.shares": "{count, plural, one {{counter} пост} other {{counter} посты}}", + "lists.add_member": "Добавить", + "lists.add_to_list": "Добавить в список", + "lists.add_to_lists": "Добавить {name} в списки", + "lists.create": "Создать", + "lists.create_a_list_to_organize": "Создать новый список, чтобы упорядочить домашнюю ленту", + "lists.create_list": "Создать список", "lists.delete": "Удалить список", + "lists.done": "Готово", "lists.edit": "Изменить список", - "lists.replies_policy.followed": "Любой подписанный пользователь", + "lists.exclusive": "Не показывать участников в домашней ленте", + "lists.exclusive_hint": "Если кто-то есть в этом списке, скрыть его в домашней ленте, чтобы не видеть его посты дважды.", + "lists.find_users_to_add": "Найти пользователей для добавления", + "lists.list_members": "Участники списка", + "lists.list_members_count": "{count, plural, one {# участник} few {# участника} other {# участников}}", + "lists.list_name": "Название списка", + "lists.new_list_name": "Новое имя списка", + "lists.no_lists_yet": "Пока нет списков.", + "lists.no_members_yet": "Пока нет участников.", + "lists.no_results_found": "Не найдено.", + "lists.remove_member": "Удалить", + "lists.replies_policy.followed": "Пользователи, на которых вы подписаны", "lists.replies_policy.list": "Пользователи в списке", "lists.replies_policy.none": "Никого", + "lists.save": "Сохранить", + "lists.search_placeholder": "Искать среди подписок", + "lists.show_replies_to": "Показывать ответы участников списка на посты", "load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}", "loading_indicator.label": "Загрузка…", "media_gallery.hide": "Скрыть", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index b9fe9cf33b..506a073287 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -87,10 +87,17 @@ "alert.unexpected.title": "อุปส์!", "alt_text_badge.title": "ข้อความแสดงแทน", "announcement.announcement": "ประกาศ", + "annual_report.summary.archetype.booster": "ผู้ล่าความเจ๋ง", + "annual_report.summary.archetype.lurker": "ผู้ซุ่มอ่านข่าว", + "annual_report.summary.archetype.oracle": "ผู้ให้คำปรึกษา", + "annual_report.summary.archetype.pollster": "ผู้สำรวจความคิดเห็น", + "annual_report.summary.archetype.replier": "ผู้ชอบเข้าสังคม", "annual_report.summary.followers.followers": "ผู้ติดตาม", + "annual_report.summary.followers.total": "รวม {count}", "annual_report.summary.highlighted_post.by_favourites": "โพสต์ที่ได้รับการชื่นชอบมากที่สุด", "annual_report.summary.highlighted_post.by_reblogs": "โพสต์ที่ได้รับการดันมากที่สุด", "annual_report.summary.highlighted_post.by_replies": "โพสต์ที่มีการตอบกลับมากที่สุด", + "annual_report.summary.most_used_hashtag.none": "ไม่มี", "annual_report.summary.new_posts.new_posts": "โพสต์ใหม่", "annual_report.summary.percentile.we_wont_tell_bernie": "เราจะไม่บอก Bernie", "annual_report.summary.thanks": "ขอบคุณสำหรับการเป็นส่วนหนึ่งของ Mastodon!", @@ -128,13 +135,16 @@ "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", "column.bookmarks": "ที่คั่นหน้า", "column.community": "เส้นเวลาในเซิร์ฟเวอร์", + "column.create_list": "สร้างรายการ", "column.direct": "การกล่าวถึงแบบส่วนตัว", "column.directory": "เรียกดูโปรไฟล์", "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่", + "column.edit_list": "แก้ไขรายการ", "column.favourites": "รายการโปรด", "column.firehose": "ฟีดสด", "column.follow_requests": "คำขอติดตาม", "column.home": "หน้าแรก", + "column.list_members": "จัดการสมาชิกของรายการ", "column.lists": "รายการ", "column.mutes": "ผู้ใช้ที่ซ่อนอยู่", "column.notifications": "การแจ้งเตือน", @@ -452,11 +462,32 @@ "link_preview.author": "โดย {name}", "link_preview.more_from_author": "เพิ่มเติมจาก {name}", "link_preview.shares": "{count, plural, other {{counter} โพสต์}}", + "lists.add_member": "เพิ่ม", + "lists.add_to_list": "เพิ่มไปยังรายการ", + "lists.add_to_lists": "เพิ่ม {name} ไปยังรายการ", + "lists.create": "สร้าง", + "lists.create_a_list_to_organize": "สร้างรายการใหม่เพื่อจัดระเบียบฟีดหน้าแรกของคุณ", + "lists.create_list": "สร้างรายการ", "lists.delete": "ลบรายการ", + "lists.done": "เสร็จสิ้น", "lists.edit": "แก้ไขรายการ", + "lists.exclusive": "ซ่อนสมาชิกในหน้าแรก", + "lists.exclusive_hint": "หากใครสักคนอยู่ในรายการนี้ ให้ซ่อนเขาในฟีดหน้าแรกของคุณเพื่อหลีกเลี่ยงการเห็นโพสต์ของเขาสองครั้ง", + "lists.find_users_to_add": "ค้นหาผู้ใช้ที่จะเพิ่ม", + "lists.list_members": "สมาชิกของรายการ", + "lists.list_members_count": "{count, plural, other {# สมาชิก}}", + "lists.list_name": "ชื่อรายการ", + "lists.new_list_name": "ชื่อรายการใหม่", + "lists.no_lists_yet": "ยังไม่มีรายการ", + "lists.no_members_yet": "ยังไม่มีสมาชิก", + "lists.no_results_found": "ไม่พบผลลัพธ์", + "lists.remove_member": "เอาออก", "lists.replies_policy.followed": "ผู้ใช้ใด ๆ ที่ติดตาม", "lists.replies_policy.list": "สมาชิกของรายการ", "lists.replies_policy.none": "ไม่มีใคร", + "lists.save": "บันทึก", + "lists.search_placeholder": "ค้นหาผู้คนที่คุณติดตาม", + "lists.show_replies_to": "รวมการตอบกลับจากสมาชิกของรายการถึง", "load_pending": "{count, plural, other {# รายการใหม่}}", "loading_indicator.label": "กำลังโหลด…", "media_gallery.hide": "ซ่อน", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 7851da5ecb..bd3c0a27ee 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -492,6 +492,7 @@ "lists.replies_policy.none": "Hiç kimse", "lists.save": "Kaydet", "lists.search_placeholder": "Takip ettiğiniz kişilerde arama yapın", + "lists.show_replies_to": "Liste üyelerinin yanıtlarını içer", "load_pending": "{count, plural, one {# yeni öğe} other {# yeni öğe}}", "loading_indicator.label": "Yükleniyor…", "media_gallery.hide": "Gizle", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 16d32417c6..4046225164 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -43,8 +43,8 @@ "account.in_memoriam": "谨此悼念。", "account.joined_short": "加入于", "account.languages": "更改订阅语言", - "account.link_verified_on": "此链接的所有权已在 {date} 检查", - "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。", + "account.link_verified_on": "已于 {date} 验证此链接的所有权", + "account.locked_info": "此账户已锁嘟。账户所有人会手动审核新关注者。", "account.media": "媒体", "account.mention": "提及 @{name}", "account.moved_to": "{name} 的新账号是:", @@ -60,9 +60,9 @@ "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 向你发送了关注请求", - "account.share": "分享 @{name} 的个人资料页", + "account.share": "分享 @{name} 的账户页", "account.show_reblogs": "显示来自 @{name} 的转嘟", - "account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}", + "account.statuses_counter": "{count, plural, other {{counter} 嘟文}}", "account.unblock": "取消屏蔽 @{name}", "account.unblock_domain": "取消屏蔽 {domain} 域名", "account.unblock_short": "取消屏蔽", @@ -77,7 +77,7 @@ "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "注册月份", "admin.dashboard.retention.cohort_size": "新用户", - "admin.impact_report.instance_accounts": "将要删除的账户资料", + "admin.impact_report.instance_accounts": "将被删除的账户", "admin.impact_report.instance_followers": "本实例用户即将丢失的关注者", "admin.impact_report.instance_follows": "对方实例用户将会丢失的关注者", "admin.impact_report.title": "影响摘要", @@ -102,7 +102,7 @@ "annual_report.summary.most_used_app.most_used_app": "最常用的应用", "annual_report.summary.most_used_hashtag.most_used_hashtag": "最常用的话题", "annual_report.summary.most_used_hashtag.none": "无", - "annual_report.summary.new_posts.new_posts": "新嘟嘟", + "annual_report.summary.new_posts.new_posts": "发嘟", "annual_report.summary.percentile.text": "这使你跻身 Mastodon 用户的前", "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉扣税国王的(他知道的话要来收你发嘟税了)。", "annual_report.summary.thanks": "感谢你这一年与 Mastodon 一路同行!", @@ -131,7 +131,7 @@ "bundle_modal_error.close": "关闭", "bundle_modal_error.message": "载入这个组件时发生了错误。", "bundle_modal_error.retry": "重试", - "closed_registrations.other_server_instructions": "基于 Mastodon 去中心化的特性,你可以在其它服务器上创建账号并继续与此服务器互动。", + "closed_registrations.other_server_instructions": "基于 Mastodon 的去中心化特性,你可以在其它服务器上创建账号,并与本站用户保持互动。", "closed_registrations_modal.description": "你目前无法在 {domain} 上创建账户,但请注意,使用 Mastodon 并非需要专门在 {domain} 上注册账户。", "closed_registrations_modal.find_another_server": "查找其他服务器", "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以无论在哪个实例创建账号,都可以关注本服务器上的账号并与之交流。 或者你还可以自己搭建实例!", @@ -175,7 +175,7 @@ "compose_form.encryption_warning": "Mastodon 上的嘟文未经端到端加密。请勿在 Mastodon 上分享敏感信息。", "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。", "compose_form.lock_disclaimer": "你的账户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。", - "compose_form.lock_disclaimer.lock": "开启保护", + "compose_form.lock_disclaimer.lock": "锁嘟", "compose_form.placeholder": "想写什么?", "compose_form.poll.duration": "投票期限", "compose_form.poll.multiple": "多选", @@ -248,19 +248,19 @@ "domain_block_modal.you_will_lose_num_followers": "你将失去 {followersCount, plural, other {{followersCountDisplay} 名关注者}}和 {followingCount, plural, other {{followingCountDisplay} 名关注}}。", "domain_block_modal.you_will_lose_relationships": "你将失去在此实例上的所有关注和关注者。", "domain_block_modal.you_wont_see_posts": "你将不会看到此服务器上用户的嘟文或通知。", - "domain_pill.activitypub_lets_connect": "它让你不仅能与 Mastodon 上的人交流互动,还能与其它不同社交应用上的人联系。", + "domain_pill.activitypub_lets_connect": "它可以让你与不同社交应用上的人交流互动,而不仅限于 Mastodon。", "domain_pill.activitypub_like_language": "ActivityPub 好比 Mastodon 与其它社交网络交流时使用的语言。", "domain_pill.server": "服务器", - "domain_pill.their_handle": "对方代号:", + "domain_pill.their_handle": "对方用户名:", "domain_pill.their_server": "对方的数字家园,对方的所有嘟文都存放在那里。", - "domain_pill.their_username": "对方在其服务器上的唯一标识符。不同服务器上可能会存在相同用户名的用户。", + "domain_pill.their_username": "对方在其服务器上的唯一标识。不同服务器上可能会存在相同用户名的用户。", "domain_pill.username": "用户名", - "domain_pill.whats_in_a_handle": "代号里都有什么?", - "domain_pill.who_they_are": "代号可以表明用户和其所在站点,你可以在社交网络上与的人们互动。", - "domain_pill.who_you_are": "代号可以表明你自己和你所在站点,社交网络上来自的人们因此可以与你互动。", - "domain_pill.your_handle": "你的代号:", - "domain_pill.your_server": "你的数字家园,你的所有嘟文都存放在这里。不喜欢这个服务器吗?随时带上你的关注者一起迁移到其它服务器。", - "domain_pill.your_username": "你在这个服务器上的唯一标识符。不同服务器上可能会存在相同用户名的用户。", + "domain_pill.whats_in_a_handle": "用户名的构成", + "domain_pill.who_they_are": "用户名可以表明用户的身份和其所在站点,这样你就可以通过在社交网络和人们互动。", + "domain_pill.who_you_are": "用户名可以表明你的身份和你所在的站点,这样人们就可以通过在社交网络与你互动。", + "domain_pill.your_handle": "你的用户名:", + "domain_pill.your_server": "你的数字家园,你的所有嘟文都在此存储。不喜欢这里吗?你可以随时迁移到其它服务器,并带上你的关注者。", + "domain_pill.your_username": "你在此服务器上的唯一标识。不同服务器上可能存在相同用户名的用户。", "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。", "embed.preview": "这是它的预览效果:", "emoji_button.activity": "活动", @@ -311,31 +311,31 @@ "explore.trending_links": "新闻", "explore.trending_statuses": "嘟文", "explore.trending_tags": "话题标签", - "filter_modal.added.context_mismatch_explanation": "此过滤器类别不适用访问过嘟文的环境中。如要在此环境中过滤嘟文,你必须编辑此过滤器。", - "filter_modal.added.context_mismatch_title": "环境不匹配!", - "filter_modal.added.expired_explanation": "此过滤器类别已过期,你需要修改到期日期才能应用。", - "filter_modal.added.expired_title": "过滤器已过期!", - "filter_modal.added.review_and_configure": "要审核并进一步配置此过滤器分类,请前往{settings_link}。", - "filter_modal.added.review_and_configure_title": "过滤器设置", + "filter_modal.added.context_mismatch_explanation": "这条过滤规则不适用于你当前访问此嘟文的场景。要在此场景下过滤嘟文,你必须编辑此过滤规则。", + "filter_modal.added.context_mismatch_title": "场景不匹配!", + "filter_modal.added.expired_explanation": "此过滤规则类别已过期,你需要修改到期日期才能应用。", + "filter_modal.added.expired_title": "过滤规则已过期!", + "filter_modal.added.review_and_configure": "要检查并进一步配置此过滤规则分类,请前往{settings_link}。", + "filter_modal.added.review_and_configure_title": "过滤规则设置", "filter_modal.added.settings_link": "设置页面", - "filter_modal.added.short_explanation": "此嘟文已添加到以下过滤器类别:{title}。", - "filter_modal.added.title": "过滤器已添加 !", - "filter_modal.select_filter.context_mismatch": "不适用于此环境", + "filter_modal.added.short_explanation": "此嘟文已被添加到以下过滤规则:{title}。", + "filter_modal.added.title": "已添加过滤规则 !", + "filter_modal.select_filter.context_mismatch": "不适用于此场景", "filter_modal.select_filter.expired": "已过期", - "filter_modal.select_filter.prompt_new": "新类别:{name}", + "filter_modal.select_filter.prompt_new": "新条目:{name}", "filter_modal.select_filter.search": "搜索或创建", - "filter_modal.select_filter.subtitle": "使用一个已存在类别,或创建一个新类别", + "filter_modal.select_filter.subtitle": "使用一个已存在条目,或创建新条目", "filter_modal.select_filter.title": "过滤此嘟文", "filter_modal.title.status": "过滤一条嘟文", "filter_warning.matches_filter": "命中过滤规则 “{title}”", "filtered_notifications_banner.pending_requests": "来自你可能认识的 {count, plural, =0 {0 个人} other {# 个人}}", - "filtered_notifications_banner.title": "通知(已过滤)", + "filtered_notifications_banner.title": "被过滤的通知", "firehose.all": "全部", "firehose.local": "此服务器", "firehose.remote": "其他服务器", "follow_request.authorize": "同意", "follow_request.reject": "拒绝", - "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的站务人员认为你也许会想手动审核审核这些账号的关注请求。", + "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的站务人员认为你也许会想手动审核这些账号的关注请求。", "follow_suggestions.curated_suggestion": "站务人员精选", "follow_suggestions.dismiss": "不再显示", "follow_suggestions.featured_longer": "由 {domain} 管理团队精选", @@ -343,8 +343,8 @@ "follow_suggestions.hints.featured": "该用户已被 {domain} 管理团队精选。", "follow_suggestions.hints.friends_of_friends": "该用户在你关注的人中很受欢迎。", "follow_suggestions.hints.most_followed": "该用户是 {domain} 上关注度最高的用户之一。", - "follow_suggestions.hints.most_interactions": "该用户最近在 {domain} 上获得了很多关注。", - "follow_suggestions.hints.similar_to_recently_followed": "该用户与你最近关注的用户类似。", + "follow_suggestions.hints.most_interactions": "该用户最近在 {domain} 获得了很多关注。", + "follow_suggestions.hints.similar_to_recently_followed": "该用户与你最近关注的人类似。", "follow_suggestions.personalized_suggestion": "个性化建议", "follow_suggestions.popular_suggestion": "热门建议", "follow_suggestions.popular_suggestion_longer": "在 {domain} 上很受欢迎", @@ -353,7 +353,7 @@ "follow_suggestions.who_to_follow": "推荐关注", "followed_tags": "已关注话题标签", "footer.about": "关于", - "footer.directory": "用户目录", + "footer.directory": "用户列表", "footer.get_app": "获取应用", "footer.invite": "邀请", "footer.keyboard_shortcuts": "快捷键", @@ -395,7 +395,7 @@ "ignore_notifications_modal.disclaimer": "Mastodon无法通知对方用户你忽略了他们的通知。忽略通知不会阻止消息本身的发送。", "ignore_notifications_modal.filter_instead": "改为过滤", "ignore_notifications_modal.filter_to_act_users": "你仍然可以接受、拒绝或举报用户", - "ignore_notifications_modal.filter_to_avoid_confusion": "选择过滤有助于避免潜在的混淆", + "ignore_notifications_modal.filter_to_avoid_confusion": "过滤有助于避免潜在的混淆", "ignore_notifications_modal.filter_to_review_separately": "你可以单独查看被过滤的通知", "ignore_notifications_modal.ignore": "忽略通知", "ignore_notifications_modal.limited_accounts_title": "是否忽略来自受限账号的通知?", @@ -403,17 +403,17 @@ "ignore_notifications_modal.not_followers_title": "是否忽略未关注你的人的通知?", "ignore_notifications_modal.not_following_title": "是否忽略你未关注的人的通知?", "ignore_notifications_modal.private_mentions_title": "是否忽略不请自来的私下提及?", - "interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,对嘟文的作者展示你欣赏的态度,并保存嘟文以供日后使用。", - "interaction_modal.description.follow": "拥有一个 Mastodon 账号,你就可以关注 {name} 并在自己的主页上接收对方的新嘟文。", - "interaction_modal.description.reblog": "拥有一个 Mastodon 账号,你就可以向自己的关注者们转发此嘟文。", - "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你就可以回复此嘟文。", - "interaction_modal.description.vote": "拥有一个 Mastodon 账号,你就可以参与此投票。", + "interaction_modal.description.favourite": "只需一个 Mastodon 账号,即可喜欢这条嘟文,向作者展示你欣赏的态度,并将其保存以供日后查看。", + "interaction_modal.description.follow": "只需一个 Mastodon 账号,即可关注 {name} 并在自己的主页接收对方的新嘟文。", + "interaction_modal.description.reblog": "只需一个 Mastodon 账号,即可转发此嘟文,向你的关注者分享它。", + "interaction_modal.description.reply": "只需一个 Mastodon 账号,即可回复此嘟文。", + "interaction_modal.description.vote": "只需一个 Mastodon 账号,即可参与此投票。", "interaction_modal.login.action": "转到主页", "interaction_modal.login.prompt": "你所入驻的服务器域名,如:mastodon.social", - "interaction_modal.no_account_yet": "不在 Mastodon 上?", + "interaction_modal.no_account_yet": "还没加入 Mastodon?", "interaction_modal.on_another_server": "在另一服务器", "interaction_modal.on_this_server": "在此服务器", - "interaction_modal.sign_in": "你尚未登录此服务器,你的账号托管在哪?", + "interaction_modal.sign_in": "你尚未登录此服务器,你的账号是在哪里注册的?", "interaction_modal.sign_in_hint": "提示:这是你注册的网站,如果你不记得了,请在邮箱的收件箱中查找欢迎邮件。你还可以输入完整的用户名!(例如 @Mastodon@mastodon.social)", "interaction_modal.title.favourite": "喜欢 {name} 的嘟文", "interaction_modal.title.follow": "关注 {name}", @@ -442,11 +442,11 @@ "keyboard_shortcuts.local": "打开本站时间线", "keyboard_shortcuts.mention": "提及嘟文作者", "keyboard_shortcuts.muted": "打开隐藏用户列表", - "keyboard_shortcuts.my_profile": "打开你的个人资料", + "keyboard_shortcuts.my_profile": "打开你的账户页", "keyboard_shortcuts.notifications": "打开通知栏", "keyboard_shortcuts.open_media": "打开媒体", "keyboard_shortcuts.pinned": "打开置顶嘟文列表", - "keyboard_shortcuts.profile": "打开作者的个人资料", + "keyboard_shortcuts.profile": "打开作者的账户页", "keyboard_shortcuts.reply": "回复嘟文", "keyboard_shortcuts.requests": "打开关注请求列表", "keyboard_shortcuts.search": "选中搜索框", @@ -526,7 +526,7 @@ "navigation_bar.logout": "退出登录", "navigation_bar.moderation": "审核", "navigation_bar.mutes": "已隐藏的用户", - "navigation_bar.opened_in_classic_interface": "嘟文、账户和其他特定页面默认在经典网页界面中打开。", + "navigation_bar.opened_in_classic_interface": "嘟文页、账户页与其他某些页面默认在经典网页界面中打开。", "navigation_bar.personal": "个人", "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "偏好设置", @@ -569,8 +569,8 @@ "notification.reblog": "{name} 转发了你的嘟文", "notification.reblog.name_and_others_with_link": "{name} 和 {count, plural, other {另外 # 人}} 转嘟了你的嘟文", "notification.relationships_severance_event": "与 {name} 的联系已断开", - "notification.relationships_severance_event.account_suspension": "来自 {from} 的管理员封禁了 {target},这意味着你将无法再收到对方的更新或与其互动。", - "notification.relationships_severance_event.domain_block": "来自 {from} 的管理员屏蔽了 {target},其中包括你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", + "notification.relationships_severance_event.account_suspension": "{from} 的管理员封禁了 {target},这意味着你将无法再收到对方的更新或与其互动。", + "notification.relationships_severance_event.domain_block": "{from} 的管理员屏蔽了 {target},其中包括你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", "notification.relationships_severance_event.learn_more": "了解更多", "notification.relationships_severance_event.user_domain_block": "你已经屏蔽了 {target},移除了你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", "notification.status": "{name} 刚刚发布嘟文", @@ -587,12 +587,12 @@ "notification_requests.dismiss_multiple": "{count, plural, other {拒绝 # 个请求…}}", "notification_requests.edit_selection": "编辑", "notification_requests.exit_selection": "完成", - "notification_requests.explainer_for_limited_account": "来自该账户的通知已被过滤,因为该账户已被管理员限制。", - "notification_requests.explainer_for_limited_remote_account": "来自该账户的通知已被过滤,因为该账户或其所在的实例已被管理员限制。", + "notification_requests.explainer_for_limited_account": "来自此账户的通知已被过滤,因为此账户已被管理员限制。", + "notification_requests.explainer_for_limited_remote_account": "来自此账户的通知已被过滤,因为此账户或其所在的服务器已被管理员限制。", "notification_requests.maximize": "最大化", - "notification_requests.minimize_banner": "最小化被过滤通知的横幅", + "notification_requests.minimize_banner": "最小化被过滤通知横幅", "notification_requests.notifications_from": "来自 {name} 的通知", - "notification_requests.title": "通知(已过滤)", + "notification_requests.title": "被过滤的通知", "notification_requests.view": "查看通知", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", @@ -634,16 +634,16 @@ "notifications.policy.drop": "忽略", "notifications.policy.drop_hint": "送入虚空,再也不查看", "notifications.policy.filter": "过滤", - "notifications.policy.filter_hint": "发送到被过滤通知收件箱", - "notifications.policy.filter_limited_accounts_hint": "被实例管理员限制", + "notifications.policy.filter_hint": "发送到被过滤通知列表", + "notifications.policy.filter_limited_accounts_hint": "被服务器管理员限制的账号", "notifications.policy.filter_limited_accounts_title": "受限账号", - "notifications.policy.filter_new_accounts.hint": "在 {days, plural, other {# 天}}内创建的账户", + "notifications.policy.filter_new_accounts.hint": "注册未满 {days, plural, other {# 天}} 的账号", "notifications.policy.filter_new_accounts_title": "新账户", - "notifications.policy.filter_not_followers_hint": "包括关注你少于 {days, plural, other {# 天}}的人", - "notifications.policy.filter_not_followers_title": "未关注你的人", - "notifications.policy.filter_not_following_hint": "直到你手动批准", + "notifications.policy.filter_not_followers_hint": "包括关注你未满 {days, plural, other {# 天}}的人", + "notifications.policy.filter_not_followers_title": "没有关注你的人", + "notifications.policy.filter_not_following_hint": "需要你手动批准", "notifications.policy.filter_not_following_title": "你没有关注的人", - "notifications.policy.filter_private_mentions_hint": "过滤通知,除非通知是在回复提及你自己的内容,或发送者是你关注的人", + "notifications.policy.filter_private_mentions_hint": "过滤通知,除非对应嘟文是在回复你的私下提及,或来自你关注的人。", "notifications.policy.filter_private_mentions_title": "不请自来的私下提及", "notifications.policy.title": "管理来自 … 的通知", "notifications_permission_banner.enable": "启用桌面通知", @@ -657,21 +657,21 @@ "onboarding.follows.empty": "很抱歉,现在无法显示任何结果。你可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。", "onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!", "onboarding.follows.title": "定制你的主页动态", - "onboarding.profile.discoverable": "让我的资料卡可被他人发现", - "onboarding.profile.discoverable_hint": "当你选择在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果和热门中,你的账户可能会被推荐给与你兴趣相似的人。", + "onboarding.profile.discoverable": "让我的账户可被他人发现", + "onboarding.profile.discoverable_hint": "当你在 Mastodon 上启用发现功能时,你的嘟文可能会出现在搜索结果与热门中,你的账户可能会被推荐给与你兴趣相似的人。", "onboarding.profile.display_name": "昵称", "onboarding.profile.display_name_hint": "你的全名或昵称…", "onboarding.profile.lead": "你可以稍后在设置中完成此操作,设置中有更多的自定义选项。", "onboarding.profile.note": "简介", - "onboarding.profile.note_hint": "你可以提及 @其他人 或 #标签…", + "onboarding.profile.note_hint": "你可以提及 @其他人 或使用 #话题标签…", "onboarding.profile.save_and_continue": "保存并继续", "onboarding.profile.title": "设置个人资料", "onboarding.profile.upload_avatar": "上传头像", - "onboarding.profile.upload_header": "上传个人资料背景横幅", + "onboarding.profile.upload_header": "上传账户页封面图", "onboarding.share.lead": "让人们知道他们如何在Mastodon找到你!", "onboarding.share.message": "我是来自 #Mastodon 的 {username}!请在 {url} 关注我。", "onboarding.share.next_steps": "可能的下一步:", - "onboarding.share.title": "分享你的个人资料", + "onboarding.share.title": "分享你的账户页", "onboarding.start.lead": "你的新 Mastodon 账户已准备好。下面是如何最大限度地利用它:", "onboarding.start.skip": "想要在前面跳过吗?", "onboarding.start.title": "你已经成功了!", @@ -679,14 +679,14 @@ "onboarding.steps.follow_people.title": "定制你的主页动态", "onboarding.steps.publish_status.body": "向世界问声好吧。", "onboarding.steps.publish_status.title": "发布你的第一篇嘟文", - "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", - "onboarding.steps.setup_profile.title": "自定义你的个人资料", - "onboarding.steps.share_profile.body": "让你的朋友知道怎样在 Mastodon 找到你", - "onboarding.steps.share_profile.title": "分享你的个人资料", + "onboarding.steps.setup_profile.body": "完善个人资料,提升你的互动体验。", + "onboarding.steps.setup_profile.title": "自定义你的账户", + "onboarding.steps.share_profile.body": "让你的朋友知道如何在 Mastodon 找到你", + "onboarding.steps.share_profile.title": "分享你的账户页", "onboarding.tips.2fa": "你知道吗?你可以在账户设置中配置双因素认证来保护账户安全。可以使用你选择的任何 TOTP 应用,无需电话号码!", - "onboarding.tips.accounts_from_other_servers": "你知道吗? 既然Mastodon是去中心化的,你所看到的一些账户将被托管在你以外的服务器上。 但你可以无缝地与他们交互!他们的服务器在他们的用户名的后半部分!", + "onboarding.tips.accounts_from_other_servers": "你知道吗? Mastodon 是去中心化的,所以你看到的一些账号实际上是在别的服务器上。不过你仍然可以和他们无缝交流!他们的服务器地址就在他们用户名的后半部分!", "onboarding.tips.migration": "你知道吗?如果你将来觉得 {domain} 不再符合您的需求,你可以在保留现有关注者的情况下迁移至其他 Mastodon 服务器。你甚至可以部署自己的服务器!", - "onboarding.tips.verification": "你知道吗? 你可以通过在自己的网站上放置一个链接到你的 Mastodon 个人资料并将网站添加到你的个人资料来验证你的账户。 无需收费或文书工作!", + "onboarding.tips.verification": "你知道吗? 你可以在自己的网站上添加指向你 Mastodon 账户页的链接,并在你的 Mastodon 账户页中添加对应的网站链接,以此来验证您的账号。此验证方式无需任何费用或文件。", "password_confirmation.exceeds_maxlength": "密码确认超过最大密码长度", "password_confirmation.mismatching": "确认密码与密码不一致。", "picture_in_picture.restore": "恢复", @@ -705,9 +705,9 @@ "privacy.direct.short": "特定的人", "privacy.private.long": "仅限你的关注者", "privacy.private.short": "关注者", - "privacy.public.long": "", + "privacy.public.long": "所有 Mastodon 内外的人", "privacy.public.short": "公开", - "privacy.unlisted.additional": "该模式的行为与“公开”完全相同,只是嘟文不会出现在实时动态、话题标签、探索或 Mastodon 搜索中,即使你已在账户级设置中选择加入。", + "privacy.unlisted.additional": "此模式的行为与“公开”类似,只是嘟文不会出现在实时动态、话题标签、探索或 Mastodon 搜索页面中,即使您已全局开启了对应的发现设置。", "privacy.unlisted.long": "减少算法影响", "privacy.unlisted.short": "悄悄公开", "privacy_policy.last_updated": "最近更新于 {date}", @@ -738,7 +738,7 @@ "report.categories.violation": "内容违反一条或多条服务器规则", "report.category.subtitle": "选择最佳匹配", "report.category.title": "告诉我们此 {type} 存在的问题", - "report.category.title_account": "个人资料", + "report.category.title_account": "账户", "report.category.title_status": "嘟文", "report.close": "完成", "report.comment.title": "还有什么你认为我们应该知道的吗?", @@ -782,11 +782,11 @@ "report_notification.open": "打开举报", "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", - "search.quick_action.account_search": "匹配 {x} 的个人资料", - "search.quick_action.go_to_account": "前往 {x} 个人资料", - "search.quick_action.go_to_hashtag": "前往标签 {x}", - "search.quick_action.open_url": "在 Mastodon 中打开网址", - "search.quick_action.status_search": "匹配 {x} 的嘟文", + "search.quick_action.account_search": "包含 {x} 的账户", + "search.quick_action.go_to_account": "打开 {x} 的账户页", + "search.quick_action.go_to_hashtag": "打开话题标签 {x}", + "search.quick_action.open_url": "在 Mastodon 中打开此链接", + "search.quick_action.status_search": "包含 {x} 的嘟文", "search.search_or_paste": "搜索或输入网址", "search_popout.full_text_search_disabled_message": "在 {domain} 不可用", "search_popout.full_text_search_logged_out_message": "只有登录后才可用。", @@ -844,7 +844,7 @@ "status.mute": "隐藏 @{name}", "status.mute_conversation": "禁用此对话的消息提醒", "status.open": "展开嘟文", - "status.pin": "在个人资料页面置顶", + "status.pin": "在账户页置顶", "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", @@ -869,7 +869,7 @@ "status.translated_from_with": "由 {provider} 翻译自 {lang}", "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", - "status.unpin": "在个人资料页面取消置顶", + "status.unpin": "在账户页取消置顶", "subscribed_languages.lead": "更改此选择后,只有选定语言的嘟文才会出现在你的主页和列表时间线上。选择「无」将显示所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 355fecac4c..99f329ba4e 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -471,13 +471,13 @@ "lists.add_to_list": "新增至列表", "lists.add_to_lists": "新增 {name} 至列表", "lists.create": "建立", - "lists.create_a_list_to_organize": "建立新列表以整理您的首頁動態", + "lists.create_a_list_to_organize": "建立新列表以整理您的首頁時間軸", "lists.create_list": "建立列表", "lists.delete": "刪除列表", "lists.done": "完成", "lists.edit": "編輯列表", - "lists.exclusive": "在首頁隱藏成員", - "lists.exclusive_hint": "如果某個帳號於此列表中,將自您的首頁動態中隱藏此帳號,以防重複見到他們的嘟文。", + "lists.exclusive": "於首頁隱藏成員", + "lists.exclusive_hint": "如果某個帳號於此列表中,將自您的首頁時間軸中隱藏此帳號,以防重複見到他們的嘟文。", "lists.find_users_to_add": "尋找欲新增之使用者", "lists.list_members": "列表成員", "lists.list_members_count": "{count, plural, other {# 個成員}}", diff --git a/config/locales/ca.yml b/config/locales/ca.yml index b1af2d95d4..28caa1d1fc 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -826,8 +826,10 @@ ca: back_to_account: Torna a la pàgina del compte back_to_report: Torna a la pàgina de l'informe batch: + add_to_report: 'Afegiu a l''informe #%{id}' remove_from_report: Treu de l'informe report: Denuncia + contents: Continguts deleted: Eliminada favourites: Favorits history: Històric de versions @@ -836,12 +838,17 @@ ca: media: title: Contingut multimèdia metadata: Metadada + no_history: Aquesta publicació no s'ha editat no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat open: Obre la publicació original_status: Publicació original reblogs: Impulsos + replied_to_html: En resposta a %{acct_link} status_changed: Publicació canviada + status_title: Publicació de @%{name} + title: Publicacions del compte - @%{name} trending: Tendència + view_publicly: Vegeu en públic visibility: Visibilitat with_media: Amb contingut multimèdia strikes: @@ -1173,8 +1180,11 @@ ca: use_security_key: Usa clau de seguretat author_attribution: example_title: Text d'exemple + hint_html: Escriviu notícies o un blog fora de Mastodon? Controleu quin crèdit rebeu quan es comparteixen aquí. + instructions: 'Assegureu-vos que aquest codi és a l''HTML de l''article:' more_from_html: Més de %{name} s_blog: Blog de %{name} + then_instructions: Després, afegiu el nom del domini de la publicació aquí sota. title: Atribució d'autor challenge: confirm: Continua diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index 848b0d6b6c..d14bd575f4 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -129,7 +129,7 @@ zh-CN: conversations: 会话 crypto: 端到端加密 favourites: 喜欢 - filters: 过滤器 + filters: 过滤规则 follow: 关注,隐藏与屏蔽 follows: 关注 lists: 列表 @@ -167,14 +167,14 @@ zh-CN: admin:write:reports: 对举报执行管理操作 crypto: 使用端到端加密 follow: 关注或屏蔽用户 - profile: 仅读取你账号的个人资料信息 + profile: 仅读取你账户的个人资料信息 push: 接收你的账户的推送通知 read: 读取你的账户数据 read:accounts: 查看账号信息 read:blocks: 查看你的屏蔽列表 read:bookmarks: 查看你的书签 read:favourites: 查看喜欢的嘟文 - read:filters: 查看你的过滤器 + read:filters: 查看你的过滤规则 read:follows: 查看你的关注 read:lists: 查看你的列表 read:mutes: 查看你的隐藏列表 @@ -188,7 +188,7 @@ zh-CN: write:bookmarks: 为嘟文添加书签 write:conversations: 静音并删除会话 write:favourites: 喜欢嘟文 - write:filters: 创建过滤器 + write:filters: 创建过滤规则 write:follows: 关注其他人 write:lists: 创建列表 write:media: 上传媒体文件 diff --git a/config/locales/es.yml b/config/locales/es.yml index 22123e4309..921db752ab 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1073,7 +1073,7 @@ es: remove: Desvincular alias appearance: advanced_web_interface: Interfaz web avanzada - advanced_web_interface_hint: 'Si desea utilizar todo el ancho de pantalla, la interfaz web avanzada le permite configurar varias columnas diferentes para ver tanta información al mismo tiempo como quiera: Inicio, notificaciones, línea de tiempo federada, cualquier número de listas y etiquetas.' + advanced_web_interface_hint: 'Si quieres aprovechar todo el ancho de tu pantalla, la interfaz web avanzada te permite configurar muchas columnas diferentes para ver toda la información que quieras al mismo tiempo: Inicio, notificaciones, cronología federada, cualquier número de listas y etiquetas.' animations_and_accessibility: Animaciones y accesibilidad confirmation_dialogs: Diálogos de confirmación discovery: Descubrir @@ -1115,7 +1115,7 @@ es: welcome_title: "¡Te damos la bienvenida, %{name}!" wrong_email_hint: Si esa dirección de correo electrónico no es correcta, puedes cambiarla en la configuración de la cuenta. delete_account: Borrar cuenta - delete_account_html: Si desea eliminar su cuenta, puede proceder aquí. Será pedido de una confirmación. + delete_account_html: Si deseas eliminar tu cuenta, puedes hacerlo aquí. Se te pedirá una confirmación. description: prefix_invited_by_user: "¡@%{name} te invita a unirte a este servidor de Mastodon!" prefix_sign_up: "¡Únete a Mastodon hoy!" @@ -1157,7 +1157,7 @@ es: set_new_password: Establecer nueva contraseña setup: email_below_hint_html: Comprueba tu carpeta de correo no deseado o solicita otro enlace de confirmación. Puedes corregir tu dirección de correo electrónico si está mal. - email_settings_hint_html: Pulsa el enlace que te hemos enviado para verificar %{email}. Esperaremos aquí mismo. + email_settings_hint_html: Haz clic en el enlace que te hemos enviado para verificar %{email}. Te esperamos aquí. link_not_received: "¿No recibiste un enlace?" new_confirmation_instructions_sent: "¡Recibirás un nuevo correo electrónico con el enlace de confirmación en unos minutos!" title: Revisa tu bandeja de entrada @@ -1299,7 +1299,7 @@ es: featured_tags: add_new: Añadir nuevo errors: - limit: Ya has alcanzado la cantidad máxima de hashtags + limit: Ya has alcanzado la cantidad máxima de etiquetas hint_html: "¿Qué son las etiquetas destacadas? Se muestran de forma prominente en tu perfil público y permiten a los usuarios navegar por tus publicaciones públicas específicamente bajo esas etiquetas. Son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo." filters: contexts: @@ -1352,7 +1352,7 @@ es: one: "%{count} elemento que coincide con su búsqueda está seleccionado." other: Todos los %{count} elementos que coinciden con su búsqueda están seleccionados. cancel: Cancelar - changes_saved_msg: "¡Cambios guardados con éxito!" + changes_saved_msg: "¡Los cambios se han guardado correctamente!" confirm: Confirmar copy: Copiar delete: Eliminar @@ -1376,7 +1376,7 @@ es: too_large: El archivo es demasiado grande failures: Fallos imported: Importado - mismatched_types_warning: Parece que podrías haber seleccionado el tipo incorrecto para esta importación, por favor vuelve a verificarlo. + mismatched_types_warning: Parece que has seleccionado el tipo incorrecto para esta importación, vuelve a comprobarlo. modes: merge: Unir merge_long: Mantener registros existentes y añadir nuevos @@ -1737,7 +1737,7 @@ es: development: Desarrollo edit_profile: Editar perfil export: Exportar - featured_tags: Hashtags destacados + featured_tags: Etiquetas destacadas import: Importar import_and_export: Importar y exportar migrate: Migración de cuenta @@ -1777,8 +1777,8 @@ es: content_warning: 'Alerta de contenido: %{warning}' default_language: Igual que el idioma de la interfaz disallowed_hashtags: - one: 'contenía un hashtag no permitido: %{tags}' - other: 'contenía los hashtags no permitidos: %{tags}' + one: 'contenía una etiqueta no permitida: %{tags}' + other: 'contenía las etiquetas no permitidas: %{tags}' edited_at_html: Editado %{date} errors: in_reply_not_found: La publicación a la que intentas responder no existe. @@ -1803,9 +1803,9 @@ es: exceptions: Excepciones explanation: Debido a que la eliminación de mensajes es una operación costosa, esto se hace lentamente, a lo largo de un tiempo, cuando el servidor no está ocupado. Por este motivo, puede que tus publicaciones sean borradas algo después de que alcancen el umbral de tiempo especificado. ignore_favs: Ignorar favoritos - ignore_reblogs: Ignorar reblogueos + ignore_reblogs: Ignorar impulsos interaction_exceptions: Excepciones basadas en interacciones - interaction_exceptions_explanation: Ten en cuenta que no hay garantía de que se eliminen las publicaciones que están por debajo de los umbrales de favoritos o de reblogueos si los han superado en algún momento. + interaction_exceptions_explanation: Ten en cuenta que no hay garantía de que se eliminen las publicaciones que están por debajo de los umbrales de favoritos o de impulsos si los han superado en algún momento. keep_direct: Mantener mensajes directos keep_direct_hint: No elimina ninguno de tus mensajes directos keep_media: Mantener publicaciones con multimedia adjunto @@ -1831,7 +1831,7 @@ es: min_favs: Mantener mensajes con un número de favoritos mayor que min_favs_hint: No borra ninguna de las publicaciones que hayan recibido al menos esta cantidad de favoritos. Deja en blanco para eliminar publicaciones sin importar el número de favoritos min_reblogs: Mantener publicaciones reblogueadas más de - min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido reblogueadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de reblogueos + min_reblogs_hint: No borra ninguna de las publicaciones que hayan sido impulsadas más de este número de veces. Deja en blanco para eliminar publicaciones sin importar el número de impulsos stream_entries: sensitive_content: Contenido sensible strikes: @@ -1982,7 +1982,7 @@ es: verification: extra_instructions_html: Consejo: El enlace en tu web puede ser invisible. La parte importante es rel="me", que evita la suplantación de identidad en sitios con contenido generado por el usuario. Puedes incluso usar una etiqueta enlace en el encabezado de la página en vez de a, pero el HTML debe ser accesible sin ejecutar JavaScript. here_is_how: Así es como se hace - hint_html: "Verificar tu identidad en Mastodon es para todos. Basado en estándares web abiertos, ahora y para siempre. Todo lo que necesitas es un sitio web propio que la gente reconozca. Cuando enlaces a este sitio web desde tu perfil, comprobaremos que el sitio web se enlaza a tu perfil y mostraremos un indicador visual en él." + hint_html: "Verificar tu identidad en Mastodon es para todos. Basado en estándares web abiertos, ahora y siempre gratis. Todo lo que necesitas es un sitio web personal por el que la gente te reconozca. Cuando enlaces a este sitio web desde tu perfil, comprobaremos que el sitio web enlaza con tu perfil y mostraremos un indicador visual en él." instructions_html: Copia y pega el siguiente código en el HTML de tu sitio web. A continuación, añade la dirección de su sitio web en uno de los campos extra de tu perfil desde la pestaña "Editar perfil" y guarda los cambios. verification: Verificación verified_links: Tus enlaces verificados diff --git a/config/locales/hu.yml b/config/locales/hu.yml index f23711d403..c3420205c8 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1945,7 +1945,7 @@ hu: feature_moderation_title: Moderálás, ahogy annak lennie kell follow_action: Követés follow_step: A Mastodon az érdekes emberek követéséről szól. - follow_title: Saját hírfolyam testreszabása + follow_title: Kezdőlapi hírfolyam testreszabása follows_subtitle: Jól ismert fiókok követése follows_title: Kit érdemes követni follows_view_more: További követendő személyek megtekintése diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 3e44adbf46..cc4f4d9cfc 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -190,6 +190,7 @@ lv: create_domain_block: Izveidot Domēna Bloku create_email_domain_block: Izveidot e-pasta domēna liegumu create_ip_block: Izveidot IP noteikumu + create_relay: Izveidot retranslāciju create_unavailable_domain: Izveidot Nepieejamu Domēnu create_user_role: Izveidot lomu demote_user: Pazemināt Lietotāju @@ -201,14 +202,17 @@ lv: destroy_email_domain_block: Izdzēst e-pasta domēna liegumu destroy_instance: Attīrīt domēnu destroy_ip_block: Dzēst IP noteikumu + destroy_relay: Izdzēst retranslāciju destroy_status: Izdzēst Rakstu destroy_unavailable_domain: Dzēst Nepieejamu Domēnu destroy_user_role: Iznīcināt lomu disable_2fa_user: Atspējot 2FA disable_custom_emoji: Atspējot pielāgotu emocijzīmi + disable_relay: Atspējot retranslāciju disable_sign_in_token_auth_user: Atspējot autentificēšanos ar e-pasta pilnvaru lietotājam disable_user: Atspējot Lietotāju enable_custom_emoji: Iespējot pielāgotu emocijzīmi + enable_relay: Iespējot retranslāciju enable_sign_in_token_auth_user: Iespējot autentificēšanos ar e-pasta pilnvaru lietotājam enable_user: Ieslēgt Lietotāju memorialize_account: Saglabāt Kontu Piemiņai @@ -817,6 +821,7 @@ lv: batch: remove_from_report: Noņemt no ziņojuma report: Ziņojums + contents: Saturs deleted: Dzēstie favourites: Izlase history: Versiju vēsture diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index defb13325b..3a70c41097 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,6 +3,7 @@ ca: simple_form: hints: account: + attribution_domains_as_text: Un per línia. Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -143,6 +144,7 @@ ca: url: On els esdeveniments seran enviats labels: account: + attribution_domains_as_text: Webs que us poden donar crèdit discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index a0338a3029..b668f32209 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -16,7 +16,7 @@ es: account_migration: acct: Especifica el nombre_de_usuario@dominio de la cuenta hacia la que quieres migrar account_warning_preset: - text: Puede usar sintaxis de publicaciones, como URLs, hashtags y menciones + text: Puede usar sintaxis de publicaciones, como URLs, etiquetas y menciones title: Opcional. No es visible para el destinatario admin_account_action: include_statuses: El usuario verá qué publicaciones han causado la acción de moderación o advertencia @@ -46,12 +46,12 @@ es: current_password: Por razones de seguridad por favor ingrese la contraseña de la cuenta actual current_username: Para confirmar, por favor ingrese el nombre de usuario de la cuenta actual digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia - email: Se le enviará un correo de confirmación + email: Te enviaremos un correo electrónico de confirmación header: WEBP, PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px inbox_url: Copia la URL de la página principal del relés que quieres utilizar irreversible: Las publicaciones filtradas desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante locale: El idioma de la interfaz de usuario, correos y notificaciones push - password: Utilice al menos 8 caracteres + password: Utiliza al menos 8 caracteres phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de una publicación scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos impulsos para las publicaciones que han sido recientemente impulsadas (sólo afecta a los impulsos recibidos recientemente) @@ -101,7 +101,7 @@ es: thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor. timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor. trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias. - trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor. + trends: Las tendencias muestran qué publicaciones, etiquetas y noticias están ganando tracción en tu servidor. trends_as_landing_page: Mostrar contenido en tendencia para usuarios y visitantes en lugar de una descripción de este servidor. Requiere que las tendencias estén habilitadas. form_challenge: current_password: Estás entrando en un área segura @@ -193,7 +193,7 @@ es: email: Dirección de correo electrónico expires_in: Expirar tras fields: Metadatos de perfil - header: Img. cabecera + header: Imagen de encabezado honeypot: "%{label} (no rellenar)" inbox_url: URL de la entrada de relés irreversible: Rechazar en lugar de ocultar @@ -208,7 +208,7 @@ es: setting_aggregate_reblogs: Agrupar impulsos en las líneas de tiempo setting_always_send_emails: Enviar siempre notificaciones por correo setting_auto_play_gif: Reproducir automáticamente los GIFs animados - setting_boost_modal: Mostrar ventana de confirmación antes de impulsar + setting_boost_modal: Mostrar diálogo de confirmación antes de impulsar una publicación setting_default_language: Idioma de publicación setting_default_privacy: Privacidad de publicaciones setting_default_sensitive: Marcar siempre imágenes como sensibles @@ -339,5 +339,5 @@ es: text: necesario title: sessions: - webauthn: Utilice una de sus claves de seguridad para iniciar sesión + webauthn: Utiliza una de sus claves de seguridad para iniciar sesión 'yes': Sí diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 0ba54e26ce..f8f4d3f119 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -10,6 +10,7 @@ th: indexable: โพสต์สาธารณะของคุณอาจปรากฏในผลลัพธ์การค้นหาใน Mastodon ผู้คนที่ได้โต้ตอบกับโพสต์ของคุณอาจสามารถค้นหาโพสต์เหล่านั้นได้ไม่ว่าอย่างไรก็ตาม note: 'คุณสามารถ @กล่าวถึง ผู้คนอื่น ๆ หรือ #แฮชแท็ก' show_collections: ผู้คนจะสามารถเรียกดูการติดตามและผู้ติดตามของคุณ ผู้คนที่คุณติดตามจะเห็นว่าคุณติดตามเขาไม่ว่าอย่างไรก็ตาม + unlocked: ผู้คนจะสามารถติดตามคุณได้โดยไม่ต้องขอการอนุมัติ เลิกกาเครื่องหมายหากคุณต้องการตรวจทานคำขอติดตามและเลือกว่าจะยอมรับหรือปฏิเสธผู้ติดตามใหม่ account_alias: acct: ระบุ username@domain ของบัญชีที่คุณต้องการย้ายจาก account_migration: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 04c23f1706..f0f1bf15c5 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -42,14 +42,14 @@ zh-CN: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。将缩小到 %{dimensions}px bot: 来自这个账户的绝大多数操作都是自动进行的,并且可能无人监控 - context: 过滤器的应用环境 + context: 过滤规则将被应用到的一个或多个场景 current_password: 为了安全起见,请输入当前账号的密码 current_username: 请输入当前账号的用户名以确认 digest: 仅在你长时间未登录,且收到了私信时发送 email: 我们会向你发送一封确认邮件 - header: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。将缩小到 %{dimensions}px + header: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。分辨率将被压缩至 %{dimensions}px inbox_url: 从你想要使用的中继站的主页上复制 URL - irreversible: 已过滤的嘟文会不可逆转地消失,即便移除过滤器之后也一样 + irreversible: 被过滤的嘟文会永久消失,移除过滤规则后也不会恢复 locale: 在用户界面、电子邮件和推送通知中使用的语言 password: 至少需要8个字符 phrase: 匹配将忽略嘟文或内容警告里的字母大小写 @@ -72,10 +72,10 @@ zh-CN: featured_tag: name: 以下是你最近使用过的标签: filters: - action: 选择在嘟文命中过滤器时要执行的操作 + action: 选择在嘟文命中过滤规则时要执行的操作 actions: - hide: 彻底屏蔽过滤内容,犹如它不曾存在过一般 - warn: 在警告中提及过滤器标题后,隐藏过滤内容 + hide: 彻底隐藏过滤内容,就像它从未存在过一样 + warn: 显示带有过滤规则标题的警告,并隐藏过滤内容 form_admin_settings: activity_api_enabled: 本站每周的嘟文数、活跃用户数和新注册用户数 app_icon: WEBP、PNG、GIF 或 JPG。使用自定义图标覆盖移动设备上的默认应用图标。 @@ -125,7 +125,7 @@ zh-CN: otp: 输入你手机应用上生成的双因素认证代码,或者任意一个恢复代码: webauthn: 如果是 USB 密钥,请确保将其插入,如有必要,请点击它。 settings: - indexable: 你的个人资料页面可能会出现在Google、Bing等搜索结果中。 + indexable: 你的账户页可能会出现在Google、Bing等的搜索结果中。 show_application: 无论如何,你始终可以看到是哪个应用发布了你的嘟文。 tag: name: 你只能改变字母的大小写,让它更易读 @@ -145,12 +145,12 @@ zh-CN: labels: account: attribution_domains_as_text: 授权展示你的署名的网站 - discoverable: 在发现算法中展示你的个人资料和嘟文 + discoverable: 在发现算法中展示你的账户与嘟文 fields: name: 标签 value: 内容 indexable: 将公开嘟文纳入搜索范围 - show_collections: 在个人资料中显示关注和关注者 + show_collections: 在账户页显示关注和关注者 unlocked: 自动接受新关注者 account_alias: acct: 处理旧账号 @@ -183,17 +183,17 @@ zh-CN: autofollow: 让被邀请人关注你的账户 avatar: 头像 bot: 这是一个机器人账户 - chosen_languages: 语言过滤 + chosen_languages: 过滤语言 confirm_new_password: 确认新密码 confirm_password: 确认密码 - context: 过滤环境 + context: 过滤规则生效场景 current_password: 当前密码 data: 数据文件 display_name: 昵称 email: 邮箱地址 expires_in: 失效时间 fields: 个人资料附加信息 - header: 个人资料页横幅图片 + header: 封面图 honeypot: "%{label} (请勿填写)" inbox_url: 中继站收件箱的 URL irreversible: 丢弃而非隐藏 @@ -213,7 +213,7 @@ zh-CN: setting_default_privacy: 嘟文默认可见范围 setting_default_sensitive: 始终标记媒体为敏感内容 setting_delete_modal: 在删除嘟文前询问我 - setting_disable_hover_cards: 禁用悬停资料预览 + setting_disable_hover_cards: 禁用悬停资料卡预览 setting_disable_swiping: 禁用滑动动作 setting_display_media: 媒体显示 setting_display_media_default: 默认 @@ -242,7 +242,7 @@ zh-CN: filters: actions: hide: 完全隐藏 - warn: 隐藏时显示警告信息 + warn: 隐藏时显示警告 form_admin_settings: activity_api_enabled: 在 API 中发布有关用户活动的汇总统计数据 app_icon: 应用图标 @@ -310,8 +310,8 @@ zh-CN: hint: 补充信息 text: 规则 settings: - indexable: 允许搜索引擎索引个人资料页面 - show_application: 显示 + indexable: 允许搜索引擎索引账户页 + show_application: 显示你发嘟所用的应用 tag: listable: 允许这个话题标签在用户目录中显示 name: 话题标签 diff --git a/config/locales/th.yml b/config/locales/th.yml index 5178506bab..6834f8ac26 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -184,6 +184,7 @@ th: create_domain_block: สร้างการปิดกั้นโดเมน create_email_domain_block: สร้างการปิดกั้นโดเมนอีเมล create_ip_block: สร้างกฎ IP + create_relay: สร้างรีเลย์ create_unavailable_domain: สร้างโดเมนที่ไม่พร้อมใช้งาน create_user_role: สร้างบทบาท demote_user: ลดขั้นผู้ใช้ @@ -195,14 +196,17 @@ th: destroy_email_domain_block: ลบการปิดกั้นโดเมนอีเมล destroy_instance: ล้างข้อมูลโดเมน destroy_ip_block: ลบกฎ IP + destroy_relay: ลบรีเลย์ destroy_status: ลบโพสต์ destroy_unavailable_domain: ลบโดเมนที่ไม่พร้อมใช้งาน destroy_user_role: ทำลายบทบาท disable_2fa_user: ปิดใช้งาน 2FA disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง + disable_relay: ปิดใช้งานรีเลย์ disable_sign_in_token_auth_user: ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับผู้ใช้ disable_user: ปิดใช้งานผู้ใช้ enable_custom_emoji: เปิดใช้งานอีโมจิที่กำหนดเอง + enable_relay: เปิดใช้งานรีเลย์ enable_sign_in_token_auth_user: เปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับผู้ใช้ enable_user: เปิดใช้งานผู้ใช้ memorialize_account: ทำให้บัญชีเป็นอนุสรณ์ @@ -244,6 +248,7 @@ th: create_domain_block_html: "%{name} ได้ปิดกั้นโดเมน %{target}" create_email_domain_block_html: "%{name} ได้ปิดกั้นโดเมนอีเมล %{target}" create_ip_block_html: "%{name} ได้สร้างกฎสำหรับ IP %{target}" + create_relay_html: "%{name} ได้สร้างรีเลย์ %{target}" create_unavailable_domain_html: "%{name} ได้หยุดการจัดส่งไปยังโดเมน %{target}" create_user_role_html: "%{name} ได้สร้างบทบาท %{target}" demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}" @@ -255,14 +260,17 @@ th: destroy_email_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}" destroy_instance_html: "%{name} ได้ล้างข้อมูลโดเมน %{target}" destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}" + destroy_relay_html: "%{name} ได้ลบรีเลย์ %{target}" destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก" destroy_unavailable_domain_html: "%{name} ได้ทำการจัดส่งไปยังโดเมน %{target} ต่อ" destroy_user_role_html: "%{name} ได้ลบบทบาท %{target}" disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}" disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}" + disable_relay_html: "%{name} ได้ปิดใช้งานรีเลย์ %{target}" disable_sign_in_token_auth_user_html: "%{name} ได้ปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" disable_user_html: "%{name} ได้ปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}" enable_custom_emoji_html: "%{name} ได้เปิดใช้งานอีโมจิ %{target}" + enable_relay_html: "%{name} ได้เปิดใช้งานรีเลย์ %{target}" enable_sign_in_token_auth_user_html: "%{name} ได้เปิดใช้งานการรับรองความถูกต้องด้วยโทเคนอีเมลสำหรับ %{target}" enable_user_html: "%{name} ได้เปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}" memorialize_account_html: "%{name} ได้เปลี่ยนบัญชีของ %{target} เป็นหน้าอนุสรณ์" @@ -804,8 +812,10 @@ th: back_to_account: กลับไปที่หน้าบัญชี back_to_report: กลับไปที่หน้ารายงาน batch: + add_to_report: 'เพิ่มไปยังรายงาน #%{id}' remove_from_report: เอาออกจากรายงาน report: รายงาน + contents: เนื้อหา deleted: ลบแล้ว favourites: รายการโปรด history: ประวัติรุ่น @@ -814,12 +824,17 @@ th: media: title: สื่อ metadata: ข้อมูลอภิพันธุ์ + no_history: ไม่มีการแก้ไขโพสต์นี้ no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์เนื่องจากไม่มีการเลือก open: เปิดโพสต์ original_status: โพสต์ดั้งเดิม reblogs: การดัน + replied_to_html: ตอบกลับ %{acct_link} status_changed: เปลี่ยนโพสต์แล้ว + status_title: โพสต์โดย @%{name} + title: โพสต์ของบัญชี - @%{name} trending: กำลังนิยม + view_publicly: ดูแบบสาธารณะ visibility: การมองเห็น with_media: มีสื่อ strikes: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 1623f39ad6..d2170d3e11 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -11,8 +11,8 @@ zh-CN: other: 关注者 following: 正在关注 instance_actor_flash: 该账号用来代表虚拟角色,并不代表个人用户,仅代表服务器本身。该账号用于联合目的,不应该被停用。 - last_active: 最近活动 - link_verified_on: 此链接的所有权已在 %{date} 检查 + last_active: 上次活跃 + link_verified_on: 此链接的所有权已在 %{date} 验证 nothing_here: 空空如也! pin_errors: following: 你必须关注你要推荐的人 @@ -25,7 +25,7 @@ zh-CN: action: 执行操作 already_silenced: 此账户已受限。 already_suspended: 此账户已被封禁。 - title: 在 %{acct} 上执行管理操作 + title: 对 %{acct} 执行管理操作 account_moderation_notes: create: 新建记录 created_msg: 管理记录创建成功! @@ -73,7 +73,7 @@ zh-CN: enabled_msg: 成功解冻 %{username} 的账号 followers: 粉丝 follows: 关注 - header: 个人资料页横幅图片 + header: 封面图 inbox_url: 收件箱(Inbox)URL invite_request_text: 加入理由 invited_by: 邀请者为 @@ -82,7 +82,7 @@ zh-CN: location: all: 全部 local: 本站 - remote: 远端实例 + remote: 外站 title: 位置 login_status: 登录状态 media_attachments: 媒体文件 @@ -113,16 +113,16 @@ zh-CN: protocol: 协议 public: 公开页面 push_subscription_expires: PuSH 订阅过期时间 - redownload: 刷新个人资料 - redownloaded_msg: 成功从来源处刷新 %{username} 的用户资料 + redownload: 刷新账户信息 + redownloaded_msg: 成功从来源站点刷新 %{username} 的账户信息 reject: 拒绝 rejected_msg: 已拒绝 %{username} 的注册申请 remote_suspension_irreversible: 此账户的数据已被不可逆转地删除。 remote_suspension_reversible_hint_html: 账号已在他们的服务器上封禁,数据将在 %{date} 完全删除。 在此之前,远程服务器仍可恢复此账号,并且没有任何不良影响。 如果你想立即移除该账号的所有数据,可以在下面进行。 remove_avatar: 删除头像 - remove_header: 删除横幅图片 + remove_header: 移除封面图 removed_avatar_msg: 成功删除 %{username} 的头像 - removed_header_msg: 成功删除了 %{username} 的横幅图片 + removed_header_msg: 成功移除 %{username} 的封面图 resend_confirmation: already_confirmed: 该用户已被确认 send: 重新发送确认链接 @@ -299,8 +299,8 @@ zh-CN: update_user_role_html: "%{name} 更改了 %{target} 角色" deleted_account: 账号已注销 empty: 没有找到日志 - filter_by_action: 根据行为过滤 - filter_by_user: 根据用户过滤 + filter_by_action: 根据操作筛选 + filter_by_user: 根据用户筛选 title: 审核日志 unavailable_instance: "(域名不可用)" announcements: @@ -547,7 +547,7 @@ zh-CN: filter: all: 全部 available: 可用 - expired: 已失效 + expired: 已过期 title: 筛选 title: 邀请用户 ip_blocks: @@ -637,7 +637,7 @@ zh-CN: notes_description_html: 查看备注或向其他监察员留言 processed_msg: '举报 #%{id} 处理成功' quick_actions_description_html: 快捷选择操作或向下滚动以查看举报内容: - remote_user_placeholder: 来自 %{instance} 的远程实例用户 + remote_user_placeholder: 来自 %{instance} 的外站用户 reopen: 重开举报 report: '举报 #%{id}' reported_account: 举报用户 @@ -673,7 +673,7 @@ zh-CN: unknown_action_msg: 未知操作:%{action} unresolved: 未处理 updated_at: 更新时间 - view_profile: 查看资料 + view_profile: 查看账户 roles: add_new: 添加角色 assigned_users: @@ -1070,7 +1070,7 @@ zh-CN: settings: 更改邮件偏好: %{link} unsubscribe: 取消订阅 view: 点此链接查看详情: - view_profile: 查看个人资料页 + view_profile: 查看账户页 view_status: 查看嘟文 applications: created: 应用创建成功 @@ -1285,8 +1285,8 @@ zh-CN: hint_html: "什么是精选话题标签? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。" filters: contexts: - account: 个人资料 - home: 主页时间线 + account: 账户 + home: 主页与列表 notifications: 通知 public: 公共时间线 thread: 对话 @@ -1294,33 +1294,33 @@ zh-CN: add_keyword: 添加关键词 keywords: 关键词 statuses: 个别嘟文 - statuses_hint_html: 无论是否匹配下列关键词,此过滤器适用于选用个别嘟文。从过滤器中审核嘟文或移除嘟文。 - title: 编辑过滤器 + statuses_hint_html: 无论是否匹配下列关键词,此过滤规则均适用于选中的个别嘟文。在过滤规则页面检查或移除这些嘟文 + title: 编辑过滤规则 errors: - deprecated_api_multiple_keywords: 这些参数不能从此应用程序更改,因为它们应用于一个以上的过滤关键字。 使用较新的应用程序或网页界面。 - invalid_context: 提供的过滤器环境没有或无效 + deprecated_api_multiple_keywords: 不能在此应用中更改这些参数,因为它们应用于不止一个过滤关键词。请使用较新的应用程序或网页界面。 + invalid_context: 过滤规则生效场景为空或无效 index: - contexts: 在 %{contexts} 中的过滤器 + contexts: 过滤 %{contexts} delete: 删除 - empty: 你没有过滤器。 - expires_in: 在 %{distance} 后过期 - expires_on: "%{date} 后到期" + empty: 你没有过滤规则。 + expires_in: "%{distance} 后到期" + expires_on: 在 %{date} 到期 keywords: - other: "%{count} 关键词" + other: "%{count} 个关键词" statuses: other: "%{count} 条嘟文" statuses_long: - other: "%{count} 条个别嘟文已隐藏" - title: 过滤器 + other: 已隐藏 %{count} 条个别嘟文 + title: 过滤规则 new: - save: 保存新过滤器 - title: 添加新的过滤器 + save: 保存过滤规则 + title: 新建过滤规则 statuses: - back_to_filter: 返回过滤器 + back_to_filter: 返回过滤规则 batch: - remove: 从过滤器中移除 + remove: 从过滤规则中移除 index: - hint: 无论其他条件如何,此过滤器适用于选用个别嘟文。你可以从网页界面中向此过滤器加入更多嘟文。 + hint: 此过滤规则适用于选中的个别嘟文,不受其它条件限制。你可以通过网页界面向此过滤规则添加更多嘟文。 title: 过滤的嘟文 generic: all: 全部 @@ -1752,7 +1752,7 @@ zh-CN: private: 仅关注者 private_long: 只有关注你的用户能看到 public: 公开 - public_long: 所有人可见,并会出现在公共时间线上 + public_long: 所有人可见 unlisted: 悄悄公开 unlisted_long: 对所有人可见,但不出现在公共时间线上 statuses_cleanup: @@ -1910,7 +1910,7 @@ zh-CN: feature_moderation_title: 管理,本应如此 follow_action: 关注 follow_step: 关注有趣的人,这就是 Mastodon 的意义所在。 - follow_title: 个性化你的首页动态 + follow_title: 个性化你的主页动态 follows_subtitle: 关注知名账户 follows_title: 推荐关注 follows_view_more: 查看更多可关注的人 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 701ea0ea53..d14bfee1b4 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1904,7 +1904,7 @@ zh-TW: feature_action: 了解更多 feature_audience: Mastodon 為您打開了一扇獨特的門,使您不受平台干擾,自由地管理您的受眾。只需將 Mastodon 部署於您自己的基礎設施上,您便能與線上任何 Mastodon 伺服器互動,而且控制權只在您手中。 feature_audience_title: 自信地建立您的受眾 - feature_control: 您最清楚自己想於首頁動態看到什麼內容,別讓演算法與廣告浪費您寶貴的時間。自同一帳號跟隨任何 Mastodon 伺服器上的任何一個人,依時間順序接收他們的嘟文,建立屬於自己的網路小角落。 + feature_control: 您最清楚自己想於首頁時間軸看到什麼內容,別讓演算法與廣告浪費您寶貴的時間。自同一帳號跟隨任何 Mastodon 伺服器上的任何一個人,依時間順序接收他們的嘟文,建立屬於自己的網路小角落。 feature_control_title: 掌控自己的時間軸 feature_creativity: Mastodon 支援音訊、影片及圖片嘟文、無障礙說明文字、投票、內容警告、動畫大頭貼、自訂 emoji 表情符號、縮圖裁剪控制等等,協助您表達自我。無論是發佈藝術作品、音樂,或是 podcast,Mastodon 將隨時陪伴著您。 feature_creativity_title: 無與倫比的創意 From 7fb0880e1e8325973ef2774f9fea159495d647d4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:17:52 +0100 Subject: [PATCH 456/550] Update dependency husky to v9.1.7 (#33058) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 20d00347b8..86fbc7e184 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9534,11 +9534,11 @@ __metadata: linkType: hard "husky@npm:^9.0.11": - version: 9.1.6 - resolution: "husky@npm:9.1.6" + version: 9.1.7 + resolution: "husky@npm:9.1.7" bin: husky: bin.js - checksum: 10c0/705673db4a247c1febd9c5df5f6a3519106cf0335845027bb50a15fba9b1f542cb2610932ede96fd08008f6d9f49db0f15560509861808b0031cdc0e7c798bac + checksum: 10c0/35bb110a71086c48906aa7cd3ed4913fb913823715359d65e32e0b964cb1e255593b0ae8014a5005c66a68e6fa66c38dcfa8056dbbdfb8b0187c0ffe7ee3a58f languageName: node linkType: hard From fd90f04f0ea630f24d69084263b3a1fa90e479e7 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 25 Nov 2024 03:18:07 -0500 Subject: [PATCH 457/550] Add coverage for `UserRole` validations (#33029) --- spec/models/user_role_spec.rb | 64 ++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/spec/models/user_role_spec.rb b/spec/models/user_role_spec.rb index 4ab66c3260..4ad7e04217 100644 --- a/spec/models/user_role_spec.rb +++ b/spec/models/user_role_spec.rb @@ -3,9 +3,69 @@ require 'rails_helper' RSpec.describe UserRole do - subject { described_class.create(name: 'Foo', position: 1) } + describe 'Validations' do + describe 'name' do + context 'when everyone' do + subject { described_class.everyone } + + it { is_expected.to_not validate_presence_of(:name) } + end + + context 'when not everyone' do + subject { Fabricate.build :user_role } + + it { is_expected.to validate_presence_of(:name) } + end + end + + describe 'color' do + it { is_expected.to allow_values('#112233', '#aabbcc', '').for(:color) } + it { is_expected.to_not allow_values('x', '112233445566', '#xxyyzz').for(:color) } + end + + context 'when current_account is set' do + subject { Fabricate :user_role } + + let(:account) { Fabricate :account } + + before { subject.current_account = account } + + it { is_expected.to_not allow_value(999_999).for(:position).with_message(:elevated) } + + it { is_expected.to_not allow_value(999_999).for(:permissions).against(:permissions_as_keys).with_message(:elevated) } + + context 'when current_account is changing their own role' do + let(:account) { Fabricate :account, user: Fabricate(:user, role: subject) } + + it { is_expected.to_not allow_value(100).for(:permissions).against(:permissions_as_keys).with_message(:own_role) } + it { is_expected.to_not allow_value(100).for(:position).with_message(:own_role) } + end + end + end + + describe 'Callback for position' do + context 'when everyone' do + subject { Fabricate.build :user_role, id: described_class::EVERYONE_ROLE_ID } + + it 'sets the position to nobody position' do + expect { subject.valid? } + .to change(subject, :position).to(described_class::NOBODY_POSITION) + end + end + + context 'when not everyone' do + subject { Fabricate.build :user_role } + + it 'does not change the position' do + expect { subject.valid? } + .to_not change(subject, :position) + end + end + end describe '#can?' do + subject { Fabricate :user_role } + context 'with a single flag' do it 'returns true if any of them are present' do subject.permissions = described_class::FLAGS[:manage_reports] @@ -92,6 +152,8 @@ RSpec.describe UserRole do end describe '#computed_permissions' do + subject { Fabricate :user_role } + context 'when the role is nobody' do subject { described_class.nobody } From ab9c62e8c7d71296f426b8c1a8c5c892bc570523 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 25 Nov 2024 03:18:10 -0500 Subject: [PATCH 458/550] Add coverage for `User` validations (#33028) --- spec/models/user_spec.rb | 49 +++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 9a5a070d25..f39b80c942 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -33,14 +33,12 @@ RSpec.describe User do end end - describe 'validations' do + describe 'Associations' do it { is_expected.to belong_to(:account).required } + end - it 'is invalid without a valid email' do - user = Fabricate.build(:user, email: 'john@') - user.valid? - expect(user).to model_have_error_on_field(:email) - end + describe 'Validations' do + it { is_expected.to_not allow_value('john@').for(:email) } it 'is valid with an invalid e-mail that has already been saved' do user = Fabricate.build(:user, email: 'invalid-email') @@ -48,11 +46,7 @@ RSpec.describe User do expect(user.valid?).to be true end - it 'is valid with a localhost e-mail address' do - user = Fabricate.build(:user, email: 'admin@localhost') - user.valid? - expect(user.valid?).to be true - end + it { is_expected.to allow_value('admin@localhost').for(:email) } end describe 'Normalizations' do @@ -183,6 +177,39 @@ RSpec.describe User do end end + describe '#update_sign_in!' do + context 'with an existing user' do + let!(:user) { Fabricate :user, last_sign_in_at: 10.days.ago, current_sign_in_at: 1.hour.ago, sign_in_count: 123 } + + context 'with new sign in false' do + it 'updates timestamps but not counts' do + expect { user.update_sign_in!(new_sign_in: false) } + .to change(user, :last_sign_in_at) + .and change(user, :current_sign_in_at) + .and not_change(user, :sign_in_count) + end + end + + context 'with new sign in true' do + it 'updates timestamps and counts' do + expect { user.update_sign_in!(new_sign_in: true) } + .to change(user, :last_sign_in_at) + .and change(user, :current_sign_in_at) + .and change(user, :sign_in_count).by(1) + end + end + end + + context 'with a new user' do + let(:user) { Fabricate.build :user } + + it 'does not persist the user' do + expect { user.update_sign_in! } + .to_not change(user, :persisted?).from(false) + end + end + end + describe '#confirmed?' do it 'returns true when a confirmed_at is set' do user = Fabricate.build(:user, confirmed_at: Time.now.utc) From 74df47ad9cc5801041b4fc19d542bc79f000026c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 25 Nov 2024 03:19:16 -0500 Subject: [PATCH 459/550] Add coverage for `Webhook` validations (#33026) --- app/models/webhook.rb | 2 +- spec/models/webhook_spec.rb | 116 +++++++++++++++++++++++++++++++++--- 2 files changed, 108 insertions(+), 10 deletions(-) diff --git a/app/models/webhook.rb b/app/models/webhook.rb index 304b2b1f18..f9d6564c92 100644 --- a/app/models/webhook.rb +++ b/app/models/webhook.rb @@ -53,7 +53,7 @@ class Webhook < ApplicationRecord end def required_permissions - events.map { |event| Webhook.permission_for_event(event) } + events.map { |event| Webhook.permission_for_event(event) }.uniq end def self.permission_for_event(event) diff --git a/spec/models/webhook_spec.rb b/spec/models/webhook_spec.rb index 03ef1dcc68..18a6047dd0 100644 --- a/spec/models/webhook_spec.rb +++ b/spec/models/webhook_spec.rb @@ -6,20 +6,28 @@ RSpec.describe Webhook do let(:webhook) { Fabricate(:webhook) } describe 'Validations' do + subject { Fabricate.build :webhook } + it { is_expected.to validate_presence_of(:events) } - it 'requires non-empty events value' do - record = described_class.new(events: []) - record.valid? + it { is_expected.to_not allow_values([], %w(account.invalid)).for(:events) } - expect(record).to model_have_error_on_field(:events) - end + it { is_expected.to_not allow_values('{{account }').for(:template) } - it 'requires valid events value from EVENTS' do - record = described_class.new(events: ['account.invalid']) - record.valid? + context 'when current_account is assigned' do + subject { Fabricate.build :webhook, current_account: account } - expect(record).to model_have_error_on_field(:events) + context 'with account that has permissions' do + let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account } + + it { is_expected.to allow_values(%w(account.created)).for(:events) } + end + + context 'with account lacking permissions' do + let(:account) { Fabricate :account } + + it { is_expected.to_not allow_values(%w(account.created)).for(:events) } + end end end @@ -29,6 +37,96 @@ RSpec.describe Webhook do end end + describe 'Callbacks' do + describe 'Generating a secret' do + context 'when secret exists already' do + subject { described_class.new(secret: 'secret') } + + it 'does not override' do + expect { subject.valid? } + .to_not change(subject, :secret) + end + end + + context 'when secret does not exist' do + subject { described_class.new(secret: nil) } + + it 'does not override' do + expect { subject.valid? } + .to change(subject, :secret) + end + end + end + end + + describe '.permission_for_event' do + subject { described_class.permission_for_event(event) } + + context 'with a nil value' do + let(:event) { nil } + + it { is_expected.to be_nil } + end + + context 'with an account approved event' do + let(:event) { 'account.approved' } + + it { is_expected.to eq(:manage_users) } + end + + context 'with an account created event' do + let(:event) { 'account.created' } + + it { is_expected.to eq(:manage_users) } + end + + context 'with an account updated event' do + let(:event) { 'account.updated' } + + it { is_expected.to eq(:manage_users) } + end + + context 'with an report created event' do + let(:event) { 'report.created' } + + it { is_expected.to eq(:manage_reports) } + end + + context 'with an report updated event' do + let(:event) { 'report.updated' } + + it { is_expected.to eq(:manage_reports) } + end + + context 'with an status created event' do + let(:event) { 'status.created' } + + it { is_expected.to eq(:view_devops) } + end + + context 'with an status updated event' do + let(:event) { 'status.updated' } + + it { is_expected.to eq(:view_devops) } + end + end + + describe '#required_permissions' do + subject { described_class.new(events:).required_permissions } + + context 'with empty events' do + let(:events) { [] } + + it { is_expected.to eq([]) } + end + + context 'with multiple event types' do + let(:events) { %w(account.created account.updated status.created) } + + it { is_expected.to eq %i(manage_users view_devops) } + end + end + describe '#rotate_secret!' do it 'changes the secret' do expect { webhook.rotate_secret! } From 1be83c698231b1d4dacbf2a092af3dfba6faffbb Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 25 Nov 2024 10:18:06 +0100 Subject: [PATCH 460/550] Fix username and display name being hidden on narrow screens in moderation interface (#33064) --- app/javascript/styles/mastodon/widgets.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index e1e8797460..f467069052 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -82,9 +82,9 @@ .accounts-table { width: 100%; - table-layout: fixed; .account { + max-width: calc(56px + 30ch); padding: 0; border: 0; } From 1a88c052746e2454497e25e9c7d41f290468cf83 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 25 Nov 2024 11:23:09 +0100 Subject: [PATCH 461/550] Fix arrow in the wrong place on empty list members screen in web UI (#33054) --- app/javascript/mastodon/features/lists/members.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/mastodon/features/lists/members.tsx b/app/javascript/mastodon/features/lists/members.tsx index bdd5064ce4..a1b50ffaf8 100644 --- a/app/javascript/mastodon/features/lists/members.tsx +++ b/app/javascript/mastodon/features/lists/members.tsx @@ -312,7 +312,7 @@ const ListMembers: React.FC<{ footer={ mode === 'remove' && ( <> -
+ {displayedAccountIds.length > 0 &&
}
From 2d8fed23e62521c2aba5cdbd5380906e955c665e Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 25 Nov 2024 11:27:58 +0100 Subject: [PATCH 462/550] Fix `TagFollow` records not being correctly handled in account operations (#33063) --- app/models/concerns/account/interactions.rb | 3 +++ app/models/concerns/account/merging.rb | 2 +- app/services/delete_account_service.rb | 1 + lib/mastodon/cli/maintenance.rb | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/account/interactions.rb b/app/models/concerns/account/interactions.rb index 6f6b8c16d0..6e2dc9126c 100644 --- a/app/models/concerns/account/interactions.rb +++ b/app/models/concerns/account/interactions.rb @@ -88,6 +88,9 @@ module Account::Interactions has_many :remote_severed_relationships, foreign_key: 'remote_account_id', inverse_of: :remote_account end + # Hashtag follows + has_many :tag_follows, inverse_of: :account, dependent: :destroy + # Account notes has_many :account_notes, dependent: :destroy diff --git a/app/models/concerns/account/merging.rb b/app/models/concerns/account/merging.rb index bd8b162238..181061c37e 100644 --- a/app/models/concerns/account/merging.rb +++ b/app/models/concerns/account/merging.rb @@ -16,7 +16,7 @@ module Account::Merging Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin, AccountStat, ListAccount, PollVote, Mention, AccountDeletionRequest, AccountNote, FollowRecommendationSuppression, - Appeal + Appeal, TagFollow ] owned_classes.each do |klass| diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb index 0c03267d43..7d06302af5 100644 --- a/app/services/delete_account_service.rb +++ b/app/services/delete_account_service.rb @@ -50,6 +50,7 @@ class DeleteAccountService < BaseService owned_lists scheduled_statuses status_pins + tag_follows ) ASSOCIATIONS_ON_DESTROY = %w( diff --git a/lib/mastodon/cli/maintenance.rb b/lib/mastodon/cli/maintenance.rb index 0b84047a1c..532fbc328a 100644 --- a/lib/mastodon/cli/maintenance.rb +++ b/lib/mastodon/cli/maintenance.rb @@ -43,6 +43,7 @@ module Mastodon::CLI class BulkImport < ApplicationRecord; end class SoftwareUpdate < ApplicationRecord; end class SeveredRelationship < ApplicationRecord; end + class TagFollow < ApplicationRecord; end class DomainBlock < ApplicationRecord enum :severity, { silence: 0, suspend: 1, noop: 2 } @@ -102,6 +103,7 @@ module Mastodon::CLI owned_classes << AccountIdentityProof if db_table_exists?(:account_identity_proofs) owned_classes << Appeal if db_table_exists?(:appeals) owned_classes << BulkImport if db_table_exists?(:bulk_imports) + owned_classes << TagFollow if db_table_exists?(:tag_follows) owned_classes.each do |klass| klass.where(account_id: other_account.id).find_each do |record| From 9a7130d6daf8f41962de03995592924e40cff0b3 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 25 Nov 2024 16:54:18 +0100 Subject: [PATCH 463/550] Fix direct inbox delivery pushing posts into inactive followers' timelines (#33067) --- app/lib/feed_manager.rb | 5 ++++- app/models/user.rb | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index edd1162f4f..74bf534e80 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -58,6 +58,7 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_home(account, status, update: false) + return false unless account.user&.signed_in_recently? return false unless add_to_feed(:home, account.id, status, aggregate_reblogs: account.user&.aggregates_reblogs?) trim(:home, account.id) @@ -83,7 +84,9 @@ class FeedManager # @param [Boolean] update # @return [Boolean] def push_to_list(list, status, update: false) - return false if filter_from_list?(status, list) || !add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) + return false if filter_from_list?(status, list) + return false unless list.account.user&.signed_in_recently? + return false unless add_to_feed(:list, list.id, status, aggregate_reblogs: list.account.user&.aggregates_reblogs?) trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}", { 'update' => update }) if push_update_required?("timeline:list:#{list.id}") diff --git a/app/models/user.rb b/app/models/user.rb index c90a78f0cc..310ec77a15 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -165,6 +165,10 @@ class User < ApplicationRecord end end + def signed_in_recently? + current_sign_in_at.present? && current_sign_in_at >= ACTIVE_DURATION.ago + end + def confirmed? confirmed_at.present? end From 6d62581da125856934438cf95c7eee5f8ed0979b Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 25 Nov 2024 11:49:24 -0500 Subject: [PATCH 464/550] =?UTF-8?q?Update=20=E2=9C=A8binstub=E2=9C=A8=20te?= =?UTF-8?q?mplates=20(#32335)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/bundler-audit.yml | 2 +- .github/workflows/check-i18n.yml | 10 +++---- .github/workflows/crowdin-download-stable.yml | 2 +- .github/workflows/crowdin-download.yml | 2 +- .github/workflows/lint-haml.yml | 2 +- Gemfile.lock | 4 +-- bin/bundler-audit | 27 +++++++++++++++++++ bin/haml-lint | 27 +++++++++++++++++++ bin/i18n-tasks | 27 +++++++++++++++++++ bin/rspec | 16 ++++++++--- lint-staged.config.js | 2 +- 11 files changed, 106 insertions(+), 15 deletions(-) create mode 100755 bin/bundler-audit create mode 100755 bin/haml-lint create mode 100755 bin/i18n-tasks diff --git a/.github/workflows/bundler-audit.yml b/.github/workflows/bundler-audit.yml index 2341d6e67f..fa28d28f74 100644 --- a/.github/workflows/bundler-audit.yml +++ b/.github/workflows/bundler-audit.yml @@ -36,4 +36,4 @@ jobs: bundler-cache: true - name: Run bundler-audit - run: bundle exec bundler-audit check --update + run: bin/bundler-audit check --update diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml index 7c1004329c..4f87f0fe5f 100644 --- a/.github/workflows/check-i18n.yml +++ b/.github/workflows/check-i18n.yml @@ -35,18 +35,18 @@ jobs: git diff --exit-code - name: Check locale file normalization - run: bundle exec i18n-tasks check-normalized + run: bin/i18n-tasks check-normalized - name: Check for unused strings - run: bundle exec i18n-tasks unused + run: bin/i18n-tasks unused - name: Check for missing strings in English YML run: | - bundle exec i18n-tasks add-missing -l en + bin/i18n-tasks add-missing -l en git diff --exit-code - name: Check for wrong string interpolations - run: bundle exec i18n-tasks check-consistent-interpolations + run: bin/i18n-tasks check-consistent-interpolations - name: Check that all required locale files exist - run: bundle exec rake repo:check_locales_files + run: bin/rake repo:check_locales_files diff --git a/.github/workflows/crowdin-download-stable.yml b/.github/workflows/crowdin-download-stable.yml index de21e2e58f..ef28258cca 100644 --- a/.github/workflows/crowdin-download-stable.yml +++ b/.github/workflows/crowdin-download-stable.yml @@ -46,7 +46,7 @@ jobs: uses: ./.github/actions/setup-ruby - name: Run i18n normalize task - run: bundle exec i18n-tasks normalize + run: bin/i18n-tasks normalize # Create or update the pull request - name: Create Pull Request diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml index 900899dd52..e9b909b9e0 100644 --- a/.github/workflows/crowdin-download.yml +++ b/.github/workflows/crowdin-download.yml @@ -48,7 +48,7 @@ jobs: uses: ./.github/actions/setup-ruby - name: Run i18n normalize task - run: bundle exec i18n-tasks normalize + run: bin/i18n-tasks normalize # Create or update the pull request - name: Create Pull Request diff --git a/.github/workflows/lint-haml.yml b/.github/workflows/lint-haml.yml index a1a9e99c90..499be2010a 100644 --- a/.github/workflows/lint-haml.yml +++ b/.github/workflows/lint-haml.yml @@ -43,4 +43,4 @@ jobs: - name: Run haml-lint run: | echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json" - bundle exec haml-lint --reporter github + bin/haml-lint --reporter github diff --git a/Gemfile.lock b/Gemfile.lock index 842d25dd1b..e87224236b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1031,7 +1031,7 @@ DEPENDENCIES xorcist (~> 1.1) RUBY VERSION - ruby 3.3.5p100 + ruby 3.3.6p108 BUNDLED WITH - 2.5.22 + 2.5.23 diff --git a/bin/bundler-audit b/bin/bundler-audit new file mode 100755 index 0000000000..334a73784f --- /dev/null +++ b/bin/bundler-audit @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundler-audit' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("bundler-audit", "bundler-audit") diff --git a/bin/haml-lint b/bin/haml-lint new file mode 100755 index 0000000000..bd55739400 --- /dev/null +++ b/bin/haml-lint @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'haml-lint' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("haml_lint", "haml-lint") diff --git a/bin/i18n-tasks b/bin/i18n-tasks new file mode 100755 index 0000000000..22cbc1f1b1 --- /dev/null +++ b/bin/i18n-tasks @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'i18n-tasks' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("i18n-tasks", "i18n-tasks") diff --git a/bin/rspec b/bin/rspec index d738b23c0b..cb53ebe5f0 100755 --- a/bin/rspec +++ b/bin/rspec @@ -1,5 +1,6 @@ #!/usr/bin/env ruby # frozen_string_literal: true + # # This file was generated by Bundler. # @@ -7,9 +8,18 @@ # this file is here to facilitate running it. # -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end require "rubygems" require "bundler/setup" diff --git a/lint-staged.config.js b/lint-staged.config.js index 6740def512..1ee6962c2a 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -3,7 +3,7 @@ const config = { 'Capfile|Gemfile|*.{rb,ruby,ru,rake}': 'bin/rubocop --force-exclusion -a', '*.{js,jsx,ts,tsx}': 'eslint --fix', '*.{css,scss}': 'stylelint --fix', - '*.haml': 'bundle exec haml-lint -a', + '*.haml': 'bin/haml-lint -a', '**/*.ts?(x)': () => 'tsc -p tsconfig.json --noEmit', }; From 0ea9d8164b8f5a45b0c636a654b732018f6cb1e6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 26 Nov 2024 02:19:20 -0500 Subject: [PATCH 465/550] Remove `body_class_string` helper (#33072) --- app/controllers/application_controller.rb | 5 ----- app/helpers/application_helper.rb | 2 +- spec/helpers/application_helper_spec.rb | 20 +++++++++++++------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d493bd43bf..7a858ed059 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -22,7 +22,6 @@ class ApplicationController < ActionController::Base helper_method :use_seamless_external_login? helper_method :sso_account_settings helper_method :limited_federation_mode? - helper_method :body_class_string helper_method :skip_csrf_meta_tags? rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request @@ -158,10 +157,6 @@ class ApplicationController < ActionController::Base current_user.setting_theme end - def body_class_string - @body_classes || '' - end - def respond_with_error(code) respond_to do |format| format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3d5025724f..9861ee7e8e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -143,7 +143,7 @@ module ApplicationHelper end def body_classes - output = body_class_string.split + output = [] output << content_for(:body_classes) output << "theme-#{current_theme.parameterize}" output << 'system-font' if current_account&.user&.setting_system_font_ui diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 557d08e851..942cc5103c 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -5,12 +5,20 @@ require 'rails_helper' RSpec.describe ApplicationHelper do describe 'body_classes' do context 'with a body class string from a controller' do - before { helper.extend controller_helpers } + before do + user = Fabricate :user + user.settings['web.use_system_font'] = true + user.settings['web.reduce_motion'] = true + user.save - it 'uses the controller body classes in the result' do + helper.extend controller_helpers + end + + it 'uses the current theme and user settings classes in the result' do expect(helper.body_classes) - .to match(/modal-layout compose-standalone/) - .and match(/theme-default/) + .to match(/theme-default/) + .and match(/system-font/) + .and match(/reduce-motion/) end it 'includes values set via content_for' do @@ -24,10 +32,8 @@ RSpec.describe ApplicationHelper do def controller_helpers Module.new do - def body_class_string = 'modal-layout compose-standalone' - def current_account - @current_account ||= Fabricate(:account) + @current_account ||= Fabricate(:account, user: User.last) end def current_theme = 'default' From 3e901d108c5a73212e1f2a648456f1b12a3c32ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 08:19:35 +0100 Subject: [PATCH 466/550] Update dependency selenium-webdriver to v4.27.0 (#33071) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index e87224236b..cfda83d324 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -752,7 +752,7 @@ GEM activerecord (>= 4.0.0) railties (>= 4.0.0) securerandom (0.3.2) - selenium-webdriver (4.26.0) + selenium-webdriver (4.27.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) From 36496f4d73f30cfa0a22706b574c8ca57b4f0c4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 08:19:48 +0100 Subject: [PATCH 467/550] Update Yarn to v4.5.3 (#33069) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- streaming/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4eb95d4389..e9f6364026 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/mastodon", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.2", + "packageManager": "yarn@4.5.3", "engines": { "node": ">=18" }, diff --git a/streaming/package.json b/streaming/package.json index 521544f42b..e40d262378 100644 --- a/streaming/package.json +++ b/streaming/package.json @@ -1,7 +1,7 @@ { "name": "@mastodon/streaming", "license": "AGPL-3.0-or-later", - "packageManager": "yarn@4.5.2", + "packageManager": "yarn@4.5.3", "engines": { "node": ">=18" }, From 6b1dd1bf2a7ac4658a06b5846cf9107f4462f004 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 08:24:28 +0100 Subject: [PATCH 468/550] New Crowdin Translations (automated) (#33074) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/zh-CN.json | 34 ++++++++--------- config/locales/bg.yml | 6 +++ config/locales/de.yml | 18 ++++----- config/locales/doorkeeper.zh-CN.yml | 6 +-- config/locales/es-AR.yml | 14 +++---- config/locales/simple_form.de.yml | 2 +- config/locales/zh-CN.yml | 44 +++++++++++----------- 7 files changed, 65 insertions(+), 59 deletions(-) diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 4046225164..6d86ed477e 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -26,8 +26,8 @@ "account.domain_blocked": "域名已屏蔽", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发布嘟文时通知我", - "account.endorse": "在个人资料中推荐此用户", - "account.featured_tags.last_status_at": "最近发言于 {date}", + "account.endorse": "在账户页推荐此用户", + "account.featured_tags.last_status_at": "上次发言于 {date}", "account.featured_tags.last_status_never": "暂无嘟文", "account.featured_tags.title": "{name} 的精选标签", "account.follow": "关注", @@ -105,7 +105,7 @@ "annual_report.summary.new_posts.new_posts": "发嘟", "annual_report.summary.percentile.text": "这使你跻身 Mastodon 用户的前", "annual_report.summary.percentile.we_wont_tell_bernie": "我们打死也不会告诉扣税国王的(他知道的话要来收你发嘟税了)。", - "annual_report.summary.thanks": "感谢你这一年与 Mastodon 一路同行!", + "annual_report.summary.thanks": "感谢你这一年和 Mastodon 上的大家一起嘟嘟!", "attachments_list.unprocessed": "(未处理)", "audio.hide": "隐藏音频", "block_modal.remote_users_caveat": "我们将要求服务器 {domain} 尊重你的决定。然而,我们无法保证对方一定遵从,因为某些服务器可能会以不同的方案处理屏蔽操作。公开嘟文仍然可能对未登录的用户可见。", @@ -138,7 +138,7 @@ "closed_registrations_modal.title": "注册 Mastodon 账号", "column.about": "关于", "column.blocks": "屏蔽的用户", - "column.bookmarks": "书签", + "column.bookmarks": "收藏夹", "column.community": "本站时间线", "column.create_list": "创建列表", "column.direct": "私下提及", @@ -510,7 +510,7 @@ "navigation_bar.administration": "管理", "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", - "navigation_bar.bookmarks": "书签", + "navigation_bar.bookmarks": "收藏夹", "navigation_bar.community_timeline": "本站时间线", "navigation_bar.compose": "撰写新嘟文", "navigation_bar.direct": "私下提及", @@ -555,7 +555,7 @@ "notification.label.reply": "回复", "notification.mention": "提及", "notification.mentioned_you": "{name} 提到了你", - "notification.moderation-warning.learn_more": "了解更多", + "notification.moderation-warning.learn_more": "详细了解", "notification.moderation_warning": "你收到了一条管理警告", "notification.moderation_warning.action_delete_statuses": "你的一些嘟文已被移除。", "notification.moderation_warning.action_disable": "你的账号已被禁用。", @@ -571,7 +571,7 @@ "notification.relationships_severance_event": "与 {name} 的联系已断开", "notification.relationships_severance_event.account_suspension": "{from} 的管理员封禁了 {target},这意味着你将无法再收到对方的更新或与其互动。", "notification.relationships_severance_event.domain_block": "{from} 的管理员屏蔽了 {target},其中包括你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", - "notification.relationships_severance_event.learn_more": "了解更多", + "notification.relationships_severance_event.learn_more": "详细了解", "notification.relationships_severance_event.user_domain_block": "你已经屏蔽了 {target},移除了你的 {followersCount} 个关注者和 {followingCount, plural, other {# 个关注}}。", "notification.status": "{name} 刚刚发布嘟文", "notification.update": "{name} 编辑了嘟文", @@ -717,11 +717,11 @@ "regeneration_indicator.label": "加载中…", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", "relative_time.days": "{number} 天前", - "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", - "relative_time.full.hours": "{number, plural, one {# 小时} other {# 小时}}前", + "relative_time.full.days": "{number, plural, other {# 天}}前", + "relative_time.full.hours": "{number, plural, other {# 小时}}前", "relative_time.full.just_now": "刚刚", - "relative_time.full.minutes": "{number, plural, one {# 分钟} other {# 分钟}}前", - "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", + "relative_time.full.minutes": "{number, plural, other {# 分钟}}前", + "relative_time.full.seconds": "{number, plural, other {# 秒}}前", "relative_time.hours": "{number} 小时前", "relative_time.just_now": "刚刚", "relative_time.minutes": "{number} 分钟前", @@ -817,7 +817,7 @@ "status.admin_domain": "打开 {domain} 的管理界面", "status.admin_status": "打开此帖的管理界面", "status.block": "屏蔽 @{name}", - "status.bookmark": "添加到书签", + "status.bookmark": "收藏", "status.cancel_reblog_private": "取消转贴", "status.cannot_reblog": "这条嘟文不允许被转嘟", "status.continued_thread": "上接嘟文串", @@ -853,7 +853,7 @@ "status.reblogs": "{count, plural, other {次转嘟}}", "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。", "status.redraft": "删除并重新编辑", - "status.remove_bookmark": "移除书签", + "status.remove_bookmark": "取消收藏", "status.replied_in_thread": "回复给嘟文串", "status.replied_to": "回复给 {name}", "status.reply": "回复", @@ -875,11 +875,11 @@ "subscribed_languages.target": "更改 {target} 的订阅语言", "tabs_bar.home": "主页", "tabs_bar.notifications": "通知", - "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}", - "time_remaining.hours": "剩余 {number, plural, one {# 小时} other {# 小时}}", - "time_remaining.minutes": "剩余 {number, plural, one {# 分钟} other {# 分钟}}", + "time_remaining.days": "剩余 {number, plural, other {# 天}}", + "time_remaining.hours": "剩余 {number, plural, other {# 小时}}", + "time_remaining.minutes": "剩余 {number, plural, other {# 分钟}}", "time_remaining.moments": "即将结束", - "time_remaining.seconds": "剩余 {number, plural, one {# 秒} other {# 秒}}", + "time_remaining.seconds": "剩余 {number, plural, other {# 秒}}", "trends.counter_by_accounts": "过去 {days, plural, other {{days} 天}}有{count, plural, other { {counter} 人}}讨论", "trends.trending_now": "当前热门", "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。", diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 20ee1f6c68..a51ef24262 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -226,20 +226,26 @@ bg: approve_appeal_html: "%{name} одобри обжалването на решение за модериране от %{target}" approve_user_html: "%{name} одобри регистрирането от %{target}" assigned_to_self_report_html: "%{name} възложи на себе си доклад %{target}" + change_email_user_html: "%{name} промени адреса на имейла на потребителя %{target}" change_role_user_html: "%{name} промени ролята на %{target}" + confirm_user_html: "%{name} потвърди адреса на имейла на потребителя %{target}" create_account_warning_html: "%{name} изпрати предупреждение до %{target}" create_announcement_html: "%{name} създаде ново оповестяване %{target}" + create_canonical_email_block_html: "%{name} блокира имейл с хеш %{target}" create_custom_emoji_html: "%{name} качи ново емоджи %{target}" create_domain_allow_html: "%{name} позволи федерирането с домейн %{target}" create_domain_block_html: "%{name} блокира домейн %{target}" + create_email_domain_block_html: "%{name} блокира домейн за е-поща %{target}" create_ip_block_html: "%{name} създаде правило за IP %{target}" create_unavailable_domain_html: "%{name} спря доставянето до домейн %{target}" create_user_role_html: "%{name} създаде роля %{target}" demote_user_html: "%{name} понижи потребителя %{target}" destroy_announcement_html: "%{name} изтри оповестяване %{target}" + destroy_canonical_email_block_html: "%{name} отблокира имейла с хеш %{target}" destroy_custom_emoji_html: "%{name} изтри емоджито %{target}" destroy_domain_allow_html: "%{name} забрани федерирация с домейн %{target}" destroy_domain_block_html: "%{name} отблокира домейн %{target}" + destroy_email_domain_block_html: "%{name} отблокира домейн за е-поща %{target}" destroy_instance_html: "%{name} прочисти домейн %{target}" destroy_ip_block_html: "%{name} изтри правило за IP %{target}" destroy_status_html: "%{name} премахна публикация от %{target}" diff --git a/config/locales/de.yml b/config/locales/de.yml index 26ccc8f3ee..1c82b4da3f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1180,12 +1180,12 @@ de: use_security_key: Sicherheitsschlüssel verwenden author_attribution: example_title: Beispieltext - hint_html: Schreibst du außerhalb von Mastodon Nachrichtenartikel oder betreibst du einen Blog? Bestimme, wie du Anerkennungen durch geteilte Links auf Mastodon handhaben möchtest. - instructions: 'Der nachfolgende Code muss im HTML-Code deines Artikels sein:' + hint_html: Schreibst du außerhalb von Mastodon journalistische Artikel oder andere Texte, beispielsweise in einem Blog? Lege hier fest, wann auf dein Profil verwiesen werden soll, wenn Links zu deinen Werken auf Mastodon geteilt werden. + instructions: 'Der nachfolgende Code muss im HTML-Header deines zu verlinkenden Textes stehen:' more_from_html: Mehr von %{name} s_blog: Blog von %{name} - then_instructions: Ergänze die Domain, auf der deine Inhalte veröffentlicht werden in das unten stehende Feld. - title: Anerkennung als Autor*in + then_instructions: Ergänze anschließend im unteren Feld die Domain, auf der sich deine Inhalte befinden. + title: Verifizierung als Autor*in challenge: confirm: Fortfahren hint_html: "Hinweis: Wir werden dich für die nächste Stunde nicht erneut nach deinem Passwort fragen." @@ -1625,7 +1625,7 @@ de: posting_defaults: Standardeinstellungen für Beiträge public_timelines: Öffentliche Timelines privacy: - hint_html: "Bestimme, wie dein Profil und deine Beiträge gefunden werden sollen. Eine Vielzahl von Funktionen in Mastodon können dir helfen, eine größere Reichweite zu erlangen, wenn sie aktiviert sind. Nimm dir einen Moment Zeit, um diese Einstellungen zu überprüfen und sicherzustellen, dass sie für deinen Anwendungsfall geeignet sind." + hint_html: "Bestimme selbst, wie dein Profil und deine Beiträge gefunden werden sollen. Zahlreiche Mastodon-Funktionen können dir für eine größere Reichweite behilflich sein. Nimm dir einen Moment Zeit, um diese Einstellungen zu überprüfen." privacy: Datenschutz privacy_hint_html: Bestimme, wie viele Informationen du für andere preisgeben möchtest. Viele Menschen entdecken interessante Profile und coole Apps, indem sie die Follower anderer Profile durchstöbern und die Apps sehen, über die Beiträge veröffentlicht wurden – möglicherweise möchtest du diese Informationen ausblenden. reach: Reichweite @@ -1801,7 +1801,7 @@ de: enabled: Alte Beiträge automatisch entfernen enabled_hint: Löscht automatisch deine Beiträge, sobald sie die angegebene Altersgrenze erreicht haben, es sei denn, sie entsprechen einer der unten angegebenen Ausnahmen exceptions: Ausnahmen - explanation: Damit Mastodon nicht durch das Löschen von Beiträgen ausgebremst wird, wartet der Server damit, bis wenig los ist. Aus diesem Grund werden deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht. + explanation: Damit der Server nicht durch das Löschen von Beiträgen ausgebremst wird, wartet die Mastodon-Software, bis wenig(er) los ist. Deshalb könnten deine Beiträge ggf. erst einige Zeit nach Erreichen der Altersgrenze gelöscht werden. ignore_favs: Favoriten ignorieren ignore_reblogs: Geteilte Beiträge ignorieren interaction_exceptions: Ausnahmen basierend auf Interaktionen @@ -1980,13 +1980,13 @@ de: seamless_external_login: Du bist über einen externen Dienst angemeldet, daher sind Passwort- und E-Mail-Einstellungen nicht verfügbar. signed_in_as: 'Angemeldet als:' verification: - extra_instructions_html: Hinweis: Der Link auf deiner Website kann unsichtbar sein. Der wichtige Teil ist rel="me", wodurch das Nachahmen von Personen auf Websites mit nutzergenerierten Inhalten verhindert wird. Du kannst auch ein link-Tag statt a im Header auf der Seite verwenden, jedoch muss der HTML-Code ohne das Ausführen von JavaScript zugänglich sein. + extra_instructions_html: Hinweis: Der Link auf deiner Website kann unsichtbar sein. Der wichtige Teil ist rel="me". Du kannst auch den Tag link im head (statt a im body) verwenden, jedoch muss die Internetseite ohne JavaScript abrufbar sein. here_is_how: So funktioniert’s hint_html: "Alle können ihre Identität auf Mastodon verifizieren. Basierend auf offenen Standards – jetzt und für immer kostenlos. Alles, was du brauchst, ist eine eigene Website. Wenn du von deinem Profil auf diese Website verlinkst, überprüfen wir, ob die Website zu deinem Profil zurückverlinkt, und zeigen einen visuellen Hinweis an." instructions_html: Kopiere den unten stehenden Code und füge ihn in den HTML-Code deiner Website ein. Trage anschließend die Adresse deiner Website in ein Zusatzfeld auf deinem Profil ein und speichere die Änderungen. Die Zusatzfelder befinden sich im Reiter „Profil bearbeiten“. verification: Verifizierung - verified_links: Deine verifizierten Links - website_verification: Website-Verifizierung + verified_links: Deine verifizierten Domains + website_verification: Verifizierung einer Website webauthn_credentials: add: Sicherheitsschlüssel hinzufügen create: diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index d14bd575f4..50705932e6 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -125,7 +125,7 @@ zh-CN: admin/reports: 举报管理 all: 完全访问你的Mastodon账户 blocks: 屏蔽 - bookmarks: 书签 + bookmarks: 收藏 conversations: 会话 crypto: 端到端加密 favourites: 喜欢 @@ -172,7 +172,7 @@ zh-CN: read: 读取你的账户数据 read:accounts: 查看账号信息 read:blocks: 查看你的屏蔽列表 - read:bookmarks: 查看你的书签 + read:bookmarks: 查看你的收藏夹 read:favourites: 查看喜欢的嘟文 read:filters: 查看你的过滤规则 read:follows: 查看你的关注 @@ -185,7 +185,7 @@ zh-CN: write: 修改你的账号数据 write:accounts: 修改你的个人资料 write:blocks: 屏蔽账号和域名 - write:bookmarks: 为嘟文添加书签 + write:bookmarks: 收藏嘟文 write:conversations: 静音并删除会话 write:favourites: 喜欢嘟文 write:filters: 创建过滤规则 diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 09163c2e4a..170c16f094 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -187,7 +187,7 @@ es-AR: create_domain_block: Crear bloqueo de dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regla de dirección IP - create_relay: Crear Relé + create_relay: Crear relé create_unavailable_domain: Crear dominio no disponible create_user_role: Crear rol demote_user: Descender usuario @@ -199,17 +199,17 @@ es-AR: destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_instance: Purgar dominio destroy_ip_block: Eliminar regla de dirección IP - destroy_relay: Eliminar Relé + destroy_relay: Eliminar relé destroy_status: Eliminar mensaje destroy_unavailable_domain: Eliminar dominio no disponible destroy_user_role: Destruir rol disable_2fa_user: Deshabilitar 2FA disable_custom_emoji: Deshabilitar emoji personalizado - disable_relay: Desactivar Relé + disable_relay: Deshabilitar relé disable_sign_in_token_auth_user: Deshabilitar autenticación de token por correo electrónico para el usuario disable_user: Deshabilitar usuario enable_custom_emoji: Habilitar emoji personalizado - enable_relay: Activar Relé + enable_relay: Habilitar relé enable_sign_in_token_auth_user: Habilitar autenticación de token por correo electrónico para el usuario enable_user: Habilitar usuario memorialize_account: Convertir en cuenta conmemorativa @@ -251,7 +251,7 @@ es-AR: create_domain_block_html: "%{name} bloqueó el dominio %{target}" create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}" create_ip_block_html: "%{name} creó la regla para la dirección IP %{target}" - create_relay_html: "%{name} creó un relé %{target}" + create_relay_html: "%{name} creó el relé %{target}" create_unavailable_domain_html: "%{name} detuvo la entrega al dominio %{target}" create_user_role_html: "%{name} creó el rol %{target}" demote_user_html: "%{name} bajó de nivel al usuario %{target}" @@ -269,11 +269,11 @@ es-AR: destroy_user_role_html: "%{name} eliminó el rol %{target}" disable_2fa_user_html: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}" disable_custom_emoji_html: "%{name} deshabilitó el emoji %{target}" - disable_relay_html: "%{name} desactivó el relé %{target}" + disable_relay_html: "%{name} deshabilitó el relé %{target}" disable_sign_in_token_auth_user_html: "%{name} deshabilitó la autenticación de token por correo electrónico para %{target}" disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" enable_custom_emoji_html: "%{name} habilitó el emoji %{target}" - enable_relay_html: "%{name} activó el relé %{target}" + enable_relay_html: "%{name} eliminó el relé %{target}" enable_sign_in_token_auth_user_html: "%{name} habilitó la autenticación de token por correo electrónico para %{target}" enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una cuenta conmemorativa" diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 08d5331151..d6d6536737 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -144,7 +144,7 @@ de: url: Wohin Ereignisse gesendet werden labels: account: - attribution_domains_as_text: Websites, die dich anerkennen dürfen + attribution_domains_as_text: Websites, die auf dich verweisen dürfen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d2170d3e11..a87f8e64b0 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1272,7 +1272,7 @@ zh-CN: request: 请求你的存档 size: 大小 blocks: 屏蔽的用户 - bookmarks: 书签 + bookmarks: 收藏 csv: CSV domain_blocks: 域名屏蔽 lists: 列表 @@ -1361,7 +1361,7 @@ zh-CN: blocking_html: other: 你即将使用来自 %{filename} 的最多 %{count} 个账户替换你的屏蔽列表。 bookmarks_html: - other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的书签。 + other: 你即将使用来自 %{filename} 的最多 %{count} 条嘟文替换你的收藏列表。 domain_blocking_html: other: 你即将使用来自 %{filename} 的最多 %{count} 个域名替换你的域名屏蔽列表。 following_html: @@ -1374,7 +1374,7 @@ zh-CN: blocking_html: other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个账号。 bookmarks_html: - other: 你即将把来自 %{filename} %{count} 篇嘟文添加到你的书签中。 + other: 你即将把来自 %{filename} %{count} 篇嘟文添加到你的收藏夹中。 domain_blocking_html: other: 你即将屏蔽来自 %{filename} 的最多 %{count} 个域名。 following_html: @@ -1395,18 +1395,18 @@ zh-CN: time_started: 开始于 titles: blocking: 正在导入被屏蔽的账户 - bookmarks: 正在导入书签 + bookmarks: 正在导入收藏 domain_blocking: 正在导入被屏蔽的域名 following: 正在导入关注的账户 lists: 导入列表 muting: 正在导入隐藏的账户 type: 导入类型 type_groups: - constructive: 关注和书签 + constructive: 关注与收藏 destructive: 屏蔽与隐藏 types: blocking: 屏蔽列表 - bookmarks: 书签 + bookmarks: 收藏 domain_blocking: 域名屏蔽列表 following: 关注列表 lists: 列表 @@ -1757,24 +1757,24 @@ zh-CN: unlisted_long: 对所有人可见,但不出现在公共时间线上 statuses_cleanup: enabled: 自动删除旧嘟文 - enabled_hint: 达到指定过期时间后自动删除你的嘟文,除非满足下列条件之一 + enabled_hint: 自动删除你发布的超过指定期限的嘟文,除非满足下列条件之一 exceptions: 例外 - explanation: 删除嘟文是一个消耗系统资源的耗时操作,所以这个操作会在服务器空闲时完成。因此,你的嘟文可能会在达到过期阈值之后一段时间才会被删除。 - ignore_favs: 取消喜欢 - ignore_reblogs: 忽略转嘟 + explanation: 删除嘟文会占用大量服务器资源,所以这个操作将在服务器空闲时完成。因此,你的嘟文可能会在达到删除期限之后一段时间才会被删除。 + ignore_favs: 喜欢数阈值 + ignore_reblogs: 转嘟数阈值 interaction_exceptions: 基于互动的例外 - interaction_exceptions_explanation: 请注意,如果嘟文超出转嘟和喜欢的阈值之后,又降到阈值以下,则可能不会被删除。 + interaction_exceptions_explanation: 请注意,如果嘟文的转嘟数和喜欢数超过保留阈值之后,又降到阈值以下,则可能不会被删除。 keep_direct: 保留私信 - keep_direct_hint: 不会删除你的任何私信 + keep_direct_hint: 不删除你的任何私信 keep_media: 保留带媒体附件的嘟文 - keep_media_hint: 不会删除任何包含媒体附件的嘟文 + keep_media_hint: 不删除任何包含媒体附件的嘟文 keep_pinned: 保留置顶嘟文 - keep_pinned_hint: 不会删除你的任何置顶嘟文 + keep_pinned_hint: 不删除你的任何置顶嘟文 keep_polls: 保留投票 - keep_polls_hint: 不会删除你的任何投票 - keep_self_bookmark: 保存被你加入书签的嘟文 - keep_self_bookmark_hint: 如果你已将自己的嘟文添加书签,就不会删除这些嘟文 - keep_self_fav: 保留你点赞的嘟文 + keep_polls_hint: 不删除你的任何投票 + keep_self_bookmark: 保存你收藏的的嘟文 + keep_self_bookmark_hint: 不删除你收藏的嘟文 + keep_self_fav: 保留你喜欢的嘟文 keep_self_fav_hint: 如果你喜欢了自己的嘟文,则不会删除这些嘟文 min_age: '1209600': 2周 @@ -1786,8 +1786,8 @@ zh-CN: '63113904': 两年 '7889238': 3个月 min_age_label: 过期阈值 - min_favs: 保留如下嘟文:点赞数超过 - min_favs_hint: 点赞数超过该阈值的的嘟文都不会被删除。如果留空,则无论嘟文获得多少点赞,都将被删除。 + min_favs: 保留如下嘟文:喜欢数超过 + min_favs_hint: 获得喜欢数超过该阈值的的嘟文都不会被删除。如果留空,则无论嘟文获得多少点赞,都将被删除。 min_reblogs: 保留如下嘟文:转嘟数超过 min_reblogs_hint: 转嘟数超过该阈值的的嘟文不会被删除。如果留空,则无论嘟文获得多少转嘟,都将被删除。 stream_entries: @@ -1899,13 +1899,13 @@ zh-CN: edit_profile_step: 完善个人资料,提升你的互动体验。 edit_profile_title: 个性化你的个人资料 explanation: 下面是几个小贴士,希望它们能帮到你 - feature_action: 了解更多 + feature_action: 详细了解 feature_audience: Mastodon 为你提供了无需中间商即可管理受众的独特可能。Mastodon 可被部署在你自己的基础设施上,允许你关注其它任何 Mastodon 在线服务器的用户,或被任何其他在线 Mastodon 服务器的用户关注,并且不受你之外的任何人控制。 feature_audience_title: 自由吸引你的受众 feature_control: 你最清楚你想在你自己的主页中看到什么动态。没有算法或广告浪费你的时间。你可以用一个账号关注任何 Mastodon 服务器上的任何人,并按时间顺序获得他们发布的嘟文,让你的互联网的角落更合自己的心意。 feature_control_title: 掌控自己的时间线 feature_creativity: Mastodon 支持音频、视频和图片、无障碍描述、投票、内容警告, 动画头像、自定义表情包、缩略图裁剪控制等功能,帮助你在网上尽情表达自己。无论你是要发布你的艺术作品、音乐还是播客,Mastodon 都能为你服务。 - feature_creativity_title: 无与伦比的创造力 + feature_creativity_title: 尽情发挥创造力 feature_moderation: Mastodon 将决策权交还给你。每个服务器都会创建自己的规则和条例,并在站点内施行,而不是像企业社交媒体那样居高临下,这使得它可以最灵活地响应不同人群的需求。加入一个你认同其规则的服务器,或托管你自己的服务器。 feature_moderation_title: 管理,本应如此 follow_action: 关注 From 72f623c391e2f27cd25cb22d78286ac9738aa8f3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:26:47 +0000 Subject: [PATCH 469/550] Update dependency @dnd-kit/sortable to v9 (#33051) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index e9f6364026..3b828ce3f8 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@babel/preset-typescript": "^7.21.5", "@babel/runtime": "^7.22.3", "@dnd-kit/core": "^6.1.0", - "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/sortable": "^9.0.0", "@dnd-kit/utilities": "^3.2.2", "@formatjs/intl-pluralrules": "^5.2.2", "@gamestdio/websocket": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 86fbc7e184..28372d6ae3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2004,16 +2004,16 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/sortable@npm:^8.0.0": - version: 8.0.0 - resolution: "@dnd-kit/sortable@npm:8.0.0" +"@dnd-kit/sortable@npm:^9.0.0": + version: 9.0.0 + resolution: "@dnd-kit/sortable@npm:9.0.0" dependencies: "@dnd-kit/utilities": "npm:^3.2.2" tslib: "npm:^2.0.0" peerDependencies: - "@dnd-kit/core": ^6.1.0 + "@dnd-kit/core": ^6.2.0 react: ">=16.8.0" - checksum: 10c0/a6066c652b892c6a11320c7d8f5c18fdf723e721e8eea37f4ab657dee1ac5e7ca710ac32ce0712a57fe968bc07c13bcea5d5599d90dfdd95619e162befd4d2fb + checksum: 10c0/30566ec05371bd59729c0fb87537d78cd1760f08e4b49b5fa8298ebd3cb9f29fc258a48425c6a060b9efeca88e36a059000e770d630681986626abcc3589e97a languageName: node linkType: hard @@ -2843,7 +2843,7 @@ __metadata: "@babel/preset-typescript": "npm:^7.21.5" "@babel/runtime": "npm:^7.22.3" "@dnd-kit/core": "npm:^6.1.0" - "@dnd-kit/sortable": "npm:^8.0.0" + "@dnd-kit/sortable": "npm:^9.0.0" "@dnd-kit/utilities": "npm:^3.2.2" "@formatjs/cli": "npm:^6.1.1" "@formatjs/intl-pluralrules": "npm:^5.2.2" From b702cd74f328fa6fa3d25fbc6ff9291c79812a80 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:26:50 +0000 Subject: [PATCH 470/550] Update dependency @dnd-kit/core to v6.2.0 (#33050) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 28372d6ae3..a8fde8ab51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1979,28 +1979,28 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/accessibility@npm:^3.1.0": - version: 3.1.0 - resolution: "@dnd-kit/accessibility@npm:3.1.0" +"@dnd-kit/accessibility@npm:^3.1.1": + version: 3.1.1 + resolution: "@dnd-kit/accessibility@npm:3.1.1" dependencies: tslib: "npm:^2.0.0" peerDependencies: react: ">=16.8.0" - checksum: 10c0/4f9d24e801d66d4fbb551ec389ed90424dd4c5bbdf527000a618e9abb9833cbd84d9a79e362f470ccbccfbd6d00217a9212c92f3cef66e01c951c7f79625b9d7 + checksum: 10c0/be0bf41716dc58f9386bc36906ec1ce72b7b42b6d1d0e631d347afe9bd8714a829bd6f58a346dd089b1519e93918ae2f94497411a61a4f5e4d9247c6cfd1fef8 languageName: node linkType: hard "@dnd-kit/core@npm:^6.1.0": - version: 6.1.0 - resolution: "@dnd-kit/core@npm:6.1.0" + version: 6.2.0 + resolution: "@dnd-kit/core@npm:6.2.0" dependencies: - "@dnd-kit/accessibility": "npm:^3.1.0" + "@dnd-kit/accessibility": "npm:^3.1.1" "@dnd-kit/utilities": "npm:^3.2.2" tslib: "npm:^2.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 10c0/c793eb97cb59285ca8937ebcdfcd27cff09d750ae06722e36ca5ed07925e41abc36a38cff98f9f6056f7a07810878d76909826142a2968330e7e22060e6be584 + checksum: 10c0/478d6bb027441b0e5fa5ecd9a4da8a5876811505147303de1a5a0783a4418c5f7f464bd3eb07b4be77ef7626364d1b905dc2a4f9055093b845cf39e1d6f13b73 languageName: node linkType: hard From 6efa320feb1ea2dac253f4875559881765891cde Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 26 Nov 2024 03:09:04 -0500 Subject: [PATCH 471/550] Fix `Style/SafeNavigation` cop (#32970) --- app/controllers/concerns/cache_concern.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/cache_concern.rb b/app/controllers/concerns/cache_concern.rb index 1823b5b8ed..b1b09f2aab 100644 --- a/app/controllers/concerns/cache_concern.rb +++ b/app/controllers/concerns/cache_concern.rb @@ -28,7 +28,7 @@ module CacheConcern def render_with_cache(**options) raise ArgumentError, 'Only JSON render calls are supported' unless options.key?(:json) || block_given? - key = options.delete(:key) || [[params[:controller], params[:action]].join('/'), options[:json].respond_to?(:cache_key) ? options[:json].cache_key : nil, options[:fields].nil? ? nil : options[:fields].join(',')].compact.join(':') + key = options.delete(:key) || [[params[:controller], params[:action]].join('/'), options[:json].respond_to?(:cache_key) ? options[:json].cache_key : nil, options[:fields]&.join(',')].compact.join(':') expires_in = options.delete(:expires_in) || 3.minutes body = Rails.cache.read(key, raw: true) From 08914516d9915ddff499bb5d40b775bbf7a5adcc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:09:34 +0100 Subject: [PATCH 472/550] Update dependency postcss-preset-env to v10.1.1 (#32947) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index a8fde8ab51..a2c9dc80e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1837,7 +1837,7 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-random-function@npm:^1.0.0": +"@csstools/postcss-random-function@npm:^1.0.1": version: 1.0.1 resolution: "@csstools/postcss-random-function@npm:1.0.1" dependencies: @@ -1876,16 +1876,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-sign-functions@npm:^1.0.0": - version: 1.0.0 - resolution: "@csstools/postcss-sign-functions@npm:1.0.0" +"@csstools/postcss-sign-functions@npm:^1.1.0": + version: 1.1.0 + resolution: "@csstools/postcss-sign-functions@npm:1.1.0" dependencies: "@csstools/css-calc": "npm:^2.1.0" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/ec745b2f1e714ffead43ade5964234dfc1750c3a71d2e29df862ab3f79ba4a1275187b270b4c226bbb1155bee8e9e63c35597b4f4cb3effaa632e5e07e422344 + checksum: 10c0/503bbaa8fe1d1a619880d5d6b838f07f1898a5820889e5db3c4e02bb8b340dab18b88f439f9f1da44c6669bab2d4ba3f9543643ccc459d8a21191c5d22109c9b languageName: node linkType: hard @@ -13850,8 +13850,8 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.1.0 - resolution: "postcss-preset-env@npm:10.1.0" + version: 10.1.1 + resolution: "postcss-preset-env@npm:10.1.1" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.1" "@csstools/postcss-color-function": "npm:^4.0.6" @@ -13877,10 +13877,10 @@ __metadata: "@csstools/postcss-normalize-display-values": "npm:^4.0.0" "@csstools/postcss-oklab-function": "npm:^4.0.6" "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-random-function": "npm:^1.0.0" + "@csstools/postcss-random-function": "npm:^1.0.1" "@csstools/postcss-relative-color-syntax": "npm:^3.0.6" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" - "@csstools/postcss-sign-functions": "npm:^1.0.0" + "@csstools/postcss-sign-functions": "npm:^1.1.0" "@csstools/postcss-stepped-value-functions": "npm:^4.0.5" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1" "@csstools/postcss-trigonometric-functions": "npm:^4.0.5" @@ -13918,7 +13918,7 @@ __metadata: postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/bd157dbed38c3c125b3bf86f5437a8094539ec5bf24428487c7bbf29da393731e48053afc695494cc9dbe4d182cfe405c398fcf0b22eb326b6db395e7315f892 + checksum: 10c0/99931117735a66827c7318be023ddb614990457617ccbe7fd2fdc1f10345554652df180d4842768d68d57e14fc0be4d86d0b413c65e77e02db5511e57ed07c4f languageName: node linkType: hard From 7ba19ecf1e684781d4265cb076f10e1cf579eb87 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:09:54 +0100 Subject: [PATCH 473/550] Update dependency webauthn to v3.2.2 (#32879) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cfda83d324..ab60bd9d0a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -93,7 +93,6 @@ GEM annotaterb (4.13.0) ast (2.4.2) attr_required (1.0.2) - awrence (1.2.1) aws-eventstream (1.3.0) aws-partitions (1.1012.0) aws-sdk-core (3.213.0) @@ -349,7 +348,8 @@ GEM json-schema (5.1.0) addressable (~> 2.8) jsonapi-renderer (0.2.2) - jwt (2.7.1) + jwt (2.9.3) + base64 kaminari (1.2.2) activesupport (>= 4.1.0) kaminari-actionview (= 1.2.2) @@ -844,9 +844,8 @@ GEM public_suffix warden (1.2.9) rack (>= 2.0.9) - webauthn (3.1.0) + webauthn (3.2.2) android_key_attestation (~> 0.3.0) - awrence (~> 1.1) bindata (~> 2.4) cbor (~> 0.5.9) cose (~> 1.1) From 5c3a64dd50f8279335ed4ad3df341c91e4f94024 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:10:08 +0100 Subject: [PATCH 474/550] Update dependency aws-sdk-s3 to v1.174.0 (#33076) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab60bd9d0a..3bbfb33d74 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -94,8 +94,8 @@ GEM ast (2.4.2) attr_required (1.0.2) aws-eventstream (1.3.0) - aws-partitions (1.1012.0) - aws-sdk-core (3.213.0) + aws-partitions (1.1013.0) + aws-sdk-core (3.214.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -103,7 +103,7 @@ GEM aws-sdk-kms (1.96.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.173.0) + aws-sdk-s3 (1.174.0) aws-sdk-core (~> 3, >= 3.210.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From f0855fd41f0cc726c0d2dbdf19f311a1ee6729dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:10:19 +0100 Subject: [PATCH 475/550] Update dependency axios to v1.7.8 (#33075) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a2c9dc80e9..ae6e1aa9aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5156,13 +5156,13 @@ __metadata: linkType: hard "axios@npm:^1.4.0": - version: 1.7.7 - resolution: "axios@npm:1.7.7" + version: 1.7.8 + resolution: "axios@npm:1.7.8" dependencies: follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/4499efc89e86b0b49ffddc018798de05fab26e3bf57913818266be73279a6418c3ce8f9e934c7d2d707ab8c095e837fc6c90608fb7715b94d357720b5f568af7 + checksum: 10c0/23ae2d0105aea9170c34ac9b6f30d9b2ab2fa8b1370205d2f7ce98b9f9510ab420148c13359ee837ea5a4bf2fb028ff225bd2fc92052fb0c478c6b4a836e2d5f languageName: node linkType: hard From a27bafa59653328a0f06bedb1dfb2b6ee92af43d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 26 Nov 2024 04:45:47 -0500 Subject: [PATCH 476/550] Add `UserRole#bypass_block?` method for notification check (#32974) --- app/models/user_role.rb | 4 ++++ app/services/notify_service.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/user_role.rb b/app/models/user_role.rb index 23cc28b9b7..815a894088 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -142,6 +142,10 @@ class UserRole < ApplicationRecord other_role.nil? || position > other_role.position end + def bypass_block?(role) + overrides?(role) && highlighted? && can?(*Flags::CATEGORIES[:moderation]) + end + def computed_permissions # If called on the everyone role, no further computation needed return permissions if everyone? diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 0cf56c5a24..e87e5024fe 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -134,7 +134,7 @@ class NotifyService < BaseService end def from_staff? - @sender.local? && @sender.user.present? && @sender.user_role&.overrides?(@recipient.user_role) && @sender.user_role&.highlighted? && @sender.user_role&.can?(*UserRole::Flags::CATEGORIES[:moderation]) + @sender.local? && @sender.user.present? && @sender.user_role&.bypass_block?(@recipient.user_role) end def from_self? From 429e08e3d244b71e704fd54096c41b533b4ad2d5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 26 Nov 2024 10:59:11 +0100 Subject: [PATCH 477/550] Remove old notifications route from web UI (#33038) --- .../notifications/components/filter_bar.jsx | 119 ------- .../containers/filter_bar_container.js | 17 - .../mastodon/features/notifications/index.jsx | 308 ------------------ .../features/notifications_wrapper.jsx | 9 - .../features/ui/components/columns_area.jsx | 4 +- app/javascript/mastodon/features/ui/index.jsx | 4 +- .../features/ui/util/async-components.js | 10 +- 7 files changed, 5 insertions(+), 466 deletions(-) delete mode 100644 app/javascript/mastodon/features/notifications/components/filter_bar.jsx delete mode 100644 app/javascript/mastodon/features/notifications/containers/filter_bar_container.js delete mode 100644 app/javascript/mastodon/features/notifications/index.jsx delete mode 100644 app/javascript/mastodon/features/notifications_wrapper.jsx diff --git a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx b/app/javascript/mastodon/features/notifications/components/filter_bar.jsx deleted file mode 100644 index c288c2c0de..0000000000 --- a/app/javascript/mastodon/features/notifications/components/filter_bar.jsx +++ /dev/null @@ -1,119 +0,0 @@ -import PropTypes from 'prop-types'; -import { PureComponent } from 'react'; - -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; - -import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react'; -import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react'; -import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; -import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; -import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; -import StarIcon from '@/material-icons/400-24px/star.svg?react'; -import { Icon } from 'mastodon/components/icon'; - -const tooltips = defineMessages({ - mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' }, - favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' }, - boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' }, - polls: { id: 'notifications.filter.polls', defaultMessage: 'Poll results' }, - follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' }, - statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' }, -}); - -class FilterBar extends PureComponent { - - static propTypes = { - selectFilter: PropTypes.func.isRequired, - selectedFilter: PropTypes.string.isRequired, - advancedMode: PropTypes.bool.isRequired, - intl: PropTypes.object.isRequired, - }; - - onClick (notificationType) { - return () => this.props.selectFilter(notificationType); - } - - render () { - const { selectedFilter, advancedMode, intl } = this.props; - const renderedElement = !advancedMode ? ( -
- - -
- ) : ( -
- - - - - - - -
- ); - return renderedElement; - } - -} - -export default injectIntl(FilterBar); diff --git a/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js b/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js deleted file mode 100644 index 4e0184cef3..0000000000 --- a/app/javascript/mastodon/features/notifications/containers/filter_bar_container.js +++ /dev/null @@ -1,17 +0,0 @@ -import { connect } from 'react-redux'; - -import { setFilter } from '../../../actions/notifications'; -import FilterBar from '../components/filter_bar'; - -const makeMapStateToProps = state => ({ - selectedFilter: state.getIn(['settings', 'notifications', 'quickFilter', 'active']), - advancedMode: state.getIn(['settings', 'notifications', 'quickFilter', 'advanced']), -}); - -const mapDispatchToProps = (dispatch) => ({ - selectFilter (newActiveFilter) { - dispatch(setFilter(newActiveFilter)); - }, -}); - -export default connect(makeMapStateToProps, mapDispatchToProps)(FilterBar); diff --git a/app/javascript/mastodon/features/notifications/index.jsx b/app/javascript/mastodon/features/notifications/index.jsx deleted file mode 100644 index cefbd544b0..0000000000 --- a/app/javascript/mastodon/features/notifications/index.jsx +++ /dev/null @@ -1,308 +0,0 @@ -import PropTypes from 'prop-types'; -import { PureComponent } from 'react'; - -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; - -import { Helmet } from 'react-helmet'; - -import { createSelector } from '@reduxjs/toolkit'; -import { List as ImmutableList } from 'immutable'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import { connect } from 'react-redux'; - -import { debounce } from 'lodash'; - -import DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react'; -import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react'; -import { compareId } from 'mastodon/compare_id'; -import { Icon } from 'mastodon/components/icon'; -import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; -import { identityContextPropShape, withIdentity } from 'mastodon/identity_context'; - -import { addColumn, removeColumn, moveColumn } from '../../actions/columns'; -import { submitMarkers } from '../../actions/markers'; -import { - expandNotifications, - scrollTopNotifications, - loadPending, - mountNotifications, - unmountNotifications, - markNotificationsAsRead, -} from '../../actions/notifications'; -import Column from '../../components/column'; -import ColumnHeader from '../../components/column_header'; -import { LoadGap } from '../../components/load_gap'; -import ScrollableList from '../../components/scrollable_list'; - -import { - FilteredNotificationsBanner, - FilteredNotificationsIconButton, -} from './components/filtered_notifications_banner'; -import NotificationsPermissionBanner from './components/notifications_permission_banner'; -import ColumnSettingsContainer from './containers/column_settings_container'; -import FilterBarContainer from './containers/filter_bar_container'; -import NotificationContainer from './containers/notification_container'; - -const messages = defineMessages({ - title: { id: 'column.notifications', defaultMessage: 'Notifications' }, - markAsRead : { id: 'notifications.mark_as_read', defaultMessage: 'Mark every notification as read' }, -}); - -const getExcludedTypes = createSelector([ - state => state.getIn(['settings', 'notifications', 'shows']), -], (shows) => { - return ImmutableList(shows.filter(item => !item).keys()); -}); - -const getNotifications = createSelector([ - state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']), - state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']), - getExcludedTypes, - state => state.getIn(['notifications', 'items']), -], (showFilterBar, allowedType, excludedTypes, notifications) => { - if (!showFilterBar || allowedType === 'all') { - // used if user changed the notification settings after loading the notifications from the server - // otherwise a list of notifications will come pre-filtered from the backend - // we need to turn it off for FilterBar in order not to block ourselves from seeing a specific category - return notifications.filterNot(item => item !== null && excludedTypes.includes(item.get('type'))); - } - return notifications.filter(item => item === null || allowedType === item.get('type')); -}); - -const mapStateToProps = state => ({ - notifications: getNotifications(state), - isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0, - isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0, - hasMore: state.getIn(['notifications', 'hasMore']), - numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, - lastReadId: state.getIn(['settings', 'notifications', 'showUnread']) ? state.getIn(['notifications', 'readMarkerId']) : '0', - canMarkAsRead: state.getIn(['settings', 'notifications', 'showUnread']) && state.getIn(['notifications', 'readMarkerId']) !== '0' && getNotifications(state).some(item => item !== null && compareId(item.get('id'), state.getIn(['notifications', 'readMarkerId'])) > 0), - needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default' && !state.getIn(['settings', 'notifications', 'dismissPermissionBanner']), -}); - -class Notifications extends PureComponent { - static propTypes = { - identity: identityContextPropShape, - columnId: PropTypes.string, - notifications: ImmutablePropTypes.list.isRequired, - dispatch: PropTypes.func.isRequired, - intl: PropTypes.object.isRequired, - isLoading: PropTypes.bool, - isUnread: PropTypes.bool, - multiColumn: PropTypes.bool, - hasMore: PropTypes.bool, - numPending: PropTypes.number, - lastReadId: PropTypes.string, - canMarkAsRead: PropTypes.bool, - needsNotificationPermission: PropTypes.bool, - }; - - static defaultProps = { - trackScroll: true, - }; - - UNSAFE_componentWillMount() { - this.props.dispatch(mountNotifications()); - } - - componentWillUnmount () { - this.handleLoadOlder.cancel(); - this.handleScrollToTop.cancel(); - this.handleScroll.cancel(); - this.props.dispatch(scrollTopNotifications(false)); - this.props.dispatch(unmountNotifications()); - } - - handleLoadGap = (maxId) => { - this.props.dispatch(expandNotifications({ maxId })); - }; - - handleLoadOlder = debounce(() => { - const last = this.props.notifications.last(); - this.props.dispatch(expandNotifications({ maxId: last && last.get('id') })); - }, 300, { leading: true }); - - handleLoadPending = () => { - this.props.dispatch(loadPending()); - }; - - handleScrollToTop = debounce(() => { - this.props.dispatch(scrollTopNotifications(true)); - }, 100); - - handleScroll = debounce(() => { - this.props.dispatch(scrollTopNotifications(false)); - }, 100); - - handlePin = () => { - const { columnId, dispatch } = this.props; - - if (columnId) { - dispatch(removeColumn(columnId)); - } else { - dispatch(addColumn('NOTIFICATIONS', {})); - } - }; - - handleMove = (dir) => { - const { columnId, dispatch } = this.props; - dispatch(moveColumn(columnId, dir)); - }; - - handleHeaderClick = () => { - this.column.scrollTop(); - }; - - setColumnRef = c => { - this.column = c; - }; - - handleMoveUp = id => { - const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) - 1; - this._selectChild(elementIndex, true); - }; - - handleMoveDown = id => { - const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1; - this._selectChild(elementIndex, false); - }; - - _selectChild (index, align_top) { - const container = this.column.node; - const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`); - - if (element) { - if (align_top && container.scrollTop > element.offsetTop) { - element.scrollIntoView(true); - } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) { - element.scrollIntoView(false); - } - element.focus(); - } - } - - handleMarkAsRead = () => { - this.props.dispatch(markNotificationsAsRead()); - this.props.dispatch(submitMarkers({ immediate: true })); - }; - - render () { - const { intl, notifications, isLoading, isUnread, columnId, multiColumn, hasMore, numPending, lastReadId, canMarkAsRead, needsNotificationPermission } = this.props; - const pinned = !!columnId; - const emptyMessage = ; - const { signedIn } = this.props.identity; - - let scrollableContent = null; - - const filterBarContainer = signedIn - ? () - : null; - - if (isLoading && this.scrollableContent) { - scrollableContent = this.scrollableContent; - } else if (notifications.size > 0 || hasMore) { - scrollableContent = notifications.map((item, index) => item === null ? ( - 0 ? notifications.getIn([index - 1, 'id']) : null} - onClick={this.handleLoadGap} - /> - ) : ( - 0} - /> - )); - } else { - scrollableContent = null; - } - - this.scrollableContent = scrollableContent; - - let scrollContainer; - - const prepend = ( - <> - {needsNotificationPermission && } - - - ); - - if (signedIn) { - scrollContainer = ( - - {scrollableContent} - - ); - } else { - scrollContainer = ; - } - - const extraButton = ( - <> - - {canMarkAsRead && ( - - )} - - ); - - return ( - - - - - - {filterBarContainer} - - {scrollContainer} - - - {intl.formatMessage(messages.title)} - - - - ); - } - -} - -export default connect(mapStateToProps)(withIdentity(injectIntl(Notifications))); diff --git a/app/javascript/mastodon/features/notifications_wrapper.jsx b/app/javascript/mastodon/features/notifications_wrapper.jsx deleted file mode 100644 index 50383d5ebf..0000000000 --- a/app/javascript/mastodon/features/notifications_wrapper.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import Notifications_v2 from 'mastodon/features/notifications_v2'; - -export const NotificationsWrapper = (props) => { - return ( - - ); -}; - -export default NotificationsWrapper; \ No newline at end of file diff --git a/app/javascript/mastodon/features/ui/components/columns_area.jsx b/app/javascript/mastodon/features/ui/components/columns_area.jsx index de957a79b6..97b54e50d3 100644 --- a/app/javascript/mastodon/features/ui/components/columns_area.jsx +++ b/app/javascript/mastodon/features/ui/components/columns_area.jsx @@ -8,7 +8,7 @@ import { scrollRight } from '../../../scroll'; import BundleContainer from '../containers/bundle_container'; import { Compose, - NotificationsWrapper, + Notifications, HomeTimeline, CommunityTimeline, PublicTimeline, @@ -30,7 +30,7 @@ import NavigationPanel from './navigation_panel'; const componentMap = { 'COMPOSE': Compose, 'HOME': HomeTimeline, - 'NOTIFICATIONS': NotificationsWrapper, + 'NOTIFICATIONS': Notifications, 'PUBLIC': PublicTimeline, 'REMOTE': PublicTimeline, 'COMMUNITY': CommunityTimeline, diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index daa4585ead..4e5cd4bd64 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -49,7 +49,7 @@ import { Favourites, DirectTimeline, HashtagTimeline, - NotificationsWrapper, + Notifications, NotificationRequests, NotificationRequest, FollowRequests, @@ -211,7 +211,7 @@ class SwitchingColumnsArea extends PureComponent { - + diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js index 5a85c856d2..26bb7cd1e0 100644 --- a/app/javascript/mastodon/features/ui/util/async-components.js +++ b/app/javascript/mastodon/features/ui/util/async-components.js @@ -7,15 +7,7 @@ export function Compose () { } export function Notifications () { - return import(/* webpackChunkName: "features/notifications_v1" */'../../notifications'); -} - -export function Notifications_v2 () { - return import(/* webpackChunkName: "features/notifications_v2" */'../../notifications_v2'); -} - -export function NotificationsWrapper () { - return import(/* webpackChunkName: "features/notifications" */'../../notifications_wrapper'); + return import(/* webpackChunkName: "features/notifications" */'../../notifications_v2'); } export function HomeTimeline () { From 7a3dea385e48c72ff4d1553709f618bc5070b255 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 26 Nov 2024 17:10:12 +0100 Subject: [PATCH 478/550] Change onboarding flow in web UI (#32998) --- .../mastodon/actions/suggestions.js | 58 --- .../mastodon/actions/suggestions.ts | 24 ++ app/javascript/mastodon/api/suggestions.ts | 8 + .../mastodon/api_types/suggestions.ts | 13 + .../mastodon/components/account.jsx | 20 +- .../components/column_back_button.tsx | 2 +- .../components/column_search_header.tsx | 67 ++++ .../mastodon/components/follow_button.tsx | 7 +- .../mastodon/features/explore/suggestions.jsx | 19 +- .../components/inline_follow_suggestions.jsx | 217 ------------ .../components/inline_follow_suggestions.tsx | 326 +++++++++++++++++ .../mastodon/features/lists/members.tsx | 123 ++----- .../features/onboarding/components/step.jsx | 57 --- .../mastodon/features/onboarding/follows.jsx | 62 ---- .../mastodon/features/onboarding/follows.tsx | 191 ++++++++++ .../mastodon/features/onboarding/index.jsx | 91 ----- .../mastodon/features/onboarding/profile.jsx | 162 --------- .../mastodon/features/onboarding/profile.tsx | 329 ++++++++++++++++++ .../mastodon/features/onboarding/share.jsx | 120 ------- app/javascript/mastodon/features/ui/index.jsx | 6 +- .../features/ui/util/async-components.js | 8 +- app/javascript/mastodon/locales/en.json | 32 +- app/javascript/mastodon/models/suggestion.ts | 12 + app/javascript/mastodon/reducers/index.ts | 4 +- .../mastodon/reducers/suggestions.js | 40 --- .../mastodon/reducers/suggestions.ts | 60 ++++ .../styles/mastodon-light/diff.scss | 19 +- .../styles/mastodon-light/variables.scss | 1 + app/javascript/styles/mastodon/_mixins.scss | 2 +- .../styles/mastodon/components.scss | 237 ++----------- app/javascript/styles/mastodon/forms.scss | 6 +- app/javascript/styles/mastodon/variables.scss | 2 + 32 files changed, 1142 insertions(+), 1183 deletions(-) delete mode 100644 app/javascript/mastodon/actions/suggestions.js create mode 100644 app/javascript/mastodon/actions/suggestions.ts create mode 100644 app/javascript/mastodon/api/suggestions.ts create mode 100644 app/javascript/mastodon/api_types/suggestions.ts create mode 100644 app/javascript/mastodon/components/column_search_header.tsx delete mode 100644 app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx create mode 100644 app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx delete mode 100644 app/javascript/mastodon/features/onboarding/components/step.jsx delete mode 100644 app/javascript/mastodon/features/onboarding/follows.jsx create mode 100644 app/javascript/mastodon/features/onboarding/follows.tsx delete mode 100644 app/javascript/mastodon/features/onboarding/index.jsx delete mode 100644 app/javascript/mastodon/features/onboarding/profile.jsx create mode 100644 app/javascript/mastodon/features/onboarding/profile.tsx delete mode 100644 app/javascript/mastodon/features/onboarding/share.jsx create mode 100644 app/javascript/mastodon/models/suggestion.ts delete mode 100644 app/javascript/mastodon/reducers/suggestions.js create mode 100644 app/javascript/mastodon/reducers/suggestions.ts diff --git a/app/javascript/mastodon/actions/suggestions.js b/app/javascript/mastodon/actions/suggestions.js deleted file mode 100644 index 258ffa901d..0000000000 --- a/app/javascript/mastodon/actions/suggestions.js +++ /dev/null @@ -1,58 +0,0 @@ -import api from '../api'; - -import { fetchRelationships } from './accounts'; -import { importFetchedAccounts } from './importer'; - -export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST'; -export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS'; -export const SUGGESTIONS_FETCH_FAIL = 'SUGGESTIONS_FETCH_FAIL'; - -export const SUGGESTIONS_DISMISS = 'SUGGESTIONS_DISMISS'; - -export function fetchSuggestions(withRelationships = false) { - return (dispatch) => { - dispatch(fetchSuggestionsRequest()); - - api().get('/api/v2/suggestions', { params: { limit: 20 } }).then(response => { - dispatch(importFetchedAccounts(response.data.map(x => x.account))); - dispatch(fetchSuggestionsSuccess(response.data)); - - if (withRelationships) { - dispatch(fetchRelationships(response.data.map(item => item.account.id))); - } - }).catch(error => dispatch(fetchSuggestionsFail(error))); - }; -} - -export function fetchSuggestionsRequest() { - return { - type: SUGGESTIONS_FETCH_REQUEST, - skipLoading: true, - }; -} - -export function fetchSuggestionsSuccess(suggestions) { - return { - type: SUGGESTIONS_FETCH_SUCCESS, - suggestions, - skipLoading: true, - }; -} - -export function fetchSuggestionsFail(error) { - return { - type: SUGGESTIONS_FETCH_FAIL, - error, - skipLoading: true, - skipAlert: true, - }; -} - -export const dismissSuggestion = accountId => (dispatch) => { - dispatch({ - type: SUGGESTIONS_DISMISS, - id: accountId, - }); - - api().delete(`/api/v1/suggestions/${accountId}`).catch(() => {}); -}; diff --git a/app/javascript/mastodon/actions/suggestions.ts b/app/javascript/mastodon/actions/suggestions.ts new file mode 100644 index 0000000000..0eadfa6b47 --- /dev/null +++ b/app/javascript/mastodon/actions/suggestions.ts @@ -0,0 +1,24 @@ +import { + apiGetSuggestions, + apiDeleteSuggestion, +} from 'mastodon/api/suggestions'; +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; + +import { fetchRelationships } from './accounts'; +import { importFetchedAccounts } from './importer'; + +export const fetchSuggestions = createDataLoadingThunk( + 'suggestions/fetch', + () => apiGetSuggestions(20), + (data, { dispatch }) => { + dispatch(importFetchedAccounts(data.map((x) => x.account))); + dispatch(fetchRelationships(data.map((x) => x.account.id))); + + return data; + }, +); + +export const dismissSuggestion = createDataLoadingThunk( + 'suggestions/dismiss', + ({ accountId }: { accountId: string }) => apiDeleteSuggestion(accountId), +); diff --git a/app/javascript/mastodon/api/suggestions.ts b/app/javascript/mastodon/api/suggestions.ts new file mode 100644 index 0000000000..d4817698cc --- /dev/null +++ b/app/javascript/mastodon/api/suggestions.ts @@ -0,0 +1,8 @@ +import { apiRequestGet, apiRequestDelete } from 'mastodon/api'; +import type { ApiSuggestionJSON } from 'mastodon/api_types/suggestions'; + +export const apiGetSuggestions = (limit: number) => + apiRequestGet('v2/suggestions', { limit }); + +export const apiDeleteSuggestion = (accountId: string) => + apiRequestDelete(`v1/suggestions/${accountId}`); diff --git a/app/javascript/mastodon/api_types/suggestions.ts b/app/javascript/mastodon/api_types/suggestions.ts new file mode 100644 index 0000000000..7d91daf901 --- /dev/null +++ b/app/javascript/mastodon/api_types/suggestions.ts @@ -0,0 +1,13 @@ +import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; + +export type ApiSuggestionSourceJSON = + | 'featured' + | 'most_followed' + | 'most_interactions' + | 'similar_to_recently_followed' + | 'friends_of_friends'; + +export interface ApiSuggestionJSON { + sources: [ApiSuggestionSourceJSON, ...ApiSuggestionSourceJSON[]]; + account: ApiAccountJSON; +} diff --git a/app/javascript/mastodon/components/account.jsx b/app/javascript/mastodon/components/account.jsx index 265c68697b..fa66fd56bb 100644 --- a/app/javascript/mastodon/components/account.jsx +++ b/app/javascript/mastodon/components/account.jsx @@ -10,6 +10,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import { EmptyAccount } from 'mastodon/components/empty_account'; +import { FollowButton } from 'mastodon/components/follow_button'; import { ShortNumber } from 'mastodon/components/short_number'; import { VerifiedBadge } from 'mastodon/components/verified_badge'; @@ -23,9 +24,6 @@ import { DisplayName } from './display_name'; import { RelativeTimestamp } from './relative_timestamp'; const messages = defineMessages({ - follow: { id: 'account.follow', defaultMessage: 'Follow' }, - unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, - cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' }, unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, mute_notifications: { id: 'account.mute_notifications_short', defaultMessage: 'Mute notifications' }, @@ -35,13 +33,9 @@ const messages = defineMessages({ more: { id: 'status.more', defaultMessage: 'More' }, }); -const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifications, hidden, minimal, defaultAction, withBio }) => { +const Account = ({ size = 46, account, onBlock, onMute, onMuteNotifications, hidden, minimal, defaultAction, withBio }) => { const intl = useIntl(); - const handleFollow = useCallback(() => { - onFollow(account); - }, [onFollow, account]); - const handleBlock = useCallback(() => { onBlock(account); }, [onBlock, account]); @@ -74,13 +68,12 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica let buttons; if (account.get('id') !== me && account.get('relationship', null) !== null) { - const following = account.getIn(['relationship', 'following']); const requested = account.getIn(['relationship', 'requested']); const blocking = account.getIn(['relationship', 'blocking']); const muting = account.getIn(['relationship', 'muting']); if (requested) { - buttons = + )} + + ); +}; diff --git a/app/javascript/mastodon/components/follow_button.tsx b/app/javascript/mastodon/components/follow_button.tsx index 46314af309..faf9d8bdb8 100644 --- a/app/javascript/mastodon/components/follow_button.tsx +++ b/app/javascript/mastodon/components/follow_button.tsx @@ -99,7 +99,12 @@ export const FollowButton: React.FC<{ return ( - -
-
- -
-
- {suggestions.map(suggestion => ( - - ))} -
- - {canScrollLeft && ( - - )} - - {canScrollRight && ( - - )} -
-
- ); -}; - -InlineFollowSuggestions.propTypes = { - hidden: PropTypes.bool, -}; diff --git a/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx new file mode 100644 index 0000000000..5fd47443d9 --- /dev/null +++ b/app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.tsx @@ -0,0 +1,326 @@ +import { useEffect, useCallback, useRef, useState } from 'react'; + +import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; + +import { Link } from 'react-router-dom'; + +import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react'; +import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react'; +import CloseIcon from '@/material-icons/400-24px/close.svg?react'; +import InfoIcon from '@/material-icons/400-24px/info.svg?react'; +import { changeSetting } from 'mastodon/actions/settings'; +import { + fetchSuggestions, + dismissSuggestion, +} from 'mastodon/actions/suggestions'; +import type { ApiSuggestionSourceJSON } from 'mastodon/api_types/suggestions'; +import { Avatar } from 'mastodon/components/avatar'; +import { DisplayName } from 'mastodon/components/display_name'; +import { FollowButton } from 'mastodon/components/follow_button'; +import { Icon } from 'mastodon/components/icon'; +import { IconButton } from 'mastodon/components/icon_button'; +import { VerifiedBadge } from 'mastodon/components/verified_badge'; +import { domain } from 'mastodon/initial_state'; +import { useAppDispatch, useAppSelector } from 'mastodon/store'; + +const messages = defineMessages({ + follow: { id: 'account.follow', defaultMessage: 'Follow' }, + unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, + previous: { id: 'lightbox.previous', defaultMessage: 'Previous' }, + next: { id: 'lightbox.next', defaultMessage: 'Next' }, + dismiss: { + id: 'follow_suggestions.dismiss', + defaultMessage: "Don't show again", + }, + friendsOfFriendsHint: { + id: 'follow_suggestions.hints.friends_of_friends', + defaultMessage: 'This profile is popular among the people you follow.', + }, + similarToRecentlyFollowedHint: { + id: 'follow_suggestions.hints.similar_to_recently_followed', + defaultMessage: + 'This profile is similar to the profiles you have most recently followed.', + }, + featuredHint: { + id: 'follow_suggestions.hints.featured', + defaultMessage: 'This profile has been hand-picked by the {domain} team.', + }, + mostFollowedHint: { + id: 'follow_suggestions.hints.most_followed', + defaultMessage: 'This profile is one of the most followed on {domain}.', + }, + mostInteractionsHint: { + id: 'follow_suggestions.hints.most_interactions', + defaultMessage: + 'This profile has been recently getting a lot of attention on {domain}.', + }, +}); + +const Source: React.FC<{ + id: ApiSuggestionSourceJSON; +}> = ({ id }) => { + const intl = useIntl(); + + let label, hint; + + switch (id) { + case 'friends_of_friends': + hint = intl.formatMessage(messages.friendsOfFriendsHint); + label = ( + + ); + break; + case 'similar_to_recently_followed': + hint = intl.formatMessage(messages.similarToRecentlyFollowedHint); + label = ( + + ); + break; + case 'featured': + hint = intl.formatMessage(messages.featuredHint, { domain }); + label = ( + + ); + break; + case 'most_followed': + hint = intl.formatMessage(messages.mostFollowedHint, { domain }); + label = ( + + ); + break; + case 'most_interactions': + hint = intl.formatMessage(messages.mostInteractionsHint, { domain }); + label = ( + + ); + break; + } + + return ( +
+ + {label} +
+ ); +}; + +const Card: React.FC<{ + id: string; + sources: [ApiSuggestionSourceJSON, ...ApiSuggestionSourceJSON[]]; +}> = ({ id, sources }) => { + const intl = useIntl(); + const account = useAppSelector((state) => state.accounts.get(id)); + const firstVerifiedField = account?.fields.find((item) => !!item.verified_at); + const dispatch = useAppDispatch(); + + const handleDismiss = useCallback(() => { + void dispatch(dismissSuggestion({ accountId: id })); + }, [id, dispatch]); + + return ( +
+ + +
+ + + +
+ +
+ + + + {firstVerifiedField ? ( + + ) : ( + + )} +
+ + +
+ ); +}; + +const DISMISSIBLE_ID = 'home/follow-suggestions'; + +export const InlineFollowSuggestions: React.FC<{ + hidden?: boolean; +}> = ({ hidden }) => { + const intl = useIntl(); + const dispatch = useAppDispatch(); + const suggestions = useAppSelector((state) => state.suggestions.items); + const isLoading = useAppSelector((state) => state.suggestions.isLoading); + const dismissed = useAppSelector( + (state) => + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + state.settings.getIn(['dismissed_banners', DISMISSIBLE_ID]) as boolean, + ); + const bodyRef = useRef(null); + const [canScrollLeft, setCanScrollLeft] = useState(false); + const [canScrollRight, setCanScrollRight] = useState(true); + + useEffect(() => { + void dispatch(fetchSuggestions()); + }, [dispatch]); + + useEffect(() => { + if (!bodyRef.current) { + return; + } + + if (getComputedStyle(bodyRef.current).direction === 'rtl') { + setCanScrollLeft( + bodyRef.current.clientWidth - bodyRef.current.scrollLeft < + bodyRef.current.scrollWidth, + ); + setCanScrollRight(bodyRef.current.scrollLeft < 0); + } else { + setCanScrollLeft(bodyRef.current.scrollLeft > 0); + setCanScrollRight( + bodyRef.current.scrollLeft + bodyRef.current.clientWidth < + bodyRef.current.scrollWidth, + ); + } + }, [setCanScrollRight, setCanScrollLeft, suggestions]); + + const handleLeftNav = useCallback(() => { + if (!bodyRef.current) { + return; + } + + bodyRef.current.scrollLeft -= 200; + }, []); + + const handleRightNav = useCallback(() => { + if (!bodyRef.current) { + return; + } + + bodyRef.current.scrollLeft += 200; + }, []); + + const handleScroll = useCallback(() => { + if (!bodyRef.current) { + return; + } + + if (getComputedStyle(bodyRef.current).direction === 'rtl') { + setCanScrollLeft( + bodyRef.current.clientWidth - bodyRef.current.scrollLeft < + bodyRef.current.scrollWidth, + ); + setCanScrollRight(bodyRef.current.scrollLeft < 0); + } else { + setCanScrollLeft(bodyRef.current.scrollLeft > 0); + setCanScrollRight( + bodyRef.current.scrollLeft + bodyRef.current.clientWidth < + bodyRef.current.scrollWidth, + ); + } + }, [setCanScrollRight, setCanScrollLeft]); + + const handleDismiss = useCallback(() => { + dispatch(changeSetting(['dismissed_banners', DISMISSIBLE_ID], true)); + }, [dispatch]); + + if (dismissed || (!isLoading && suggestions.length === 0)) { + return null; + } + + if (hidden) { + return
; + } + + return ( +
+
+

+ +

+ +
+ + + + +
+
+ +
+
+ {suggestions.map((suggestion) => ( + + ))} +
+ + {canScrollLeft && ( + + )} + + {canScrollRight && ( + + )} +
+
+ ); +}; diff --git a/app/javascript/mastodon/features/lists/members.tsx b/app/javascript/mastodon/features/lists/members.tsx index a1b50ffaf8..184b54b92d 100644 --- a/app/javascript/mastodon/features/lists/members.tsx +++ b/app/javascript/mastodon/features/lists/members.tsx @@ -7,11 +7,8 @@ import { useParams, Link } from 'react-router-dom'; import { useDebouncedCallback } from 'use-debounce'; -import AddIcon from '@/material-icons/400-24px/add.svg?react'; -import ArrowBackIcon from '@/material-icons/400-24px/arrow_back.svg?react'; import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react'; import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react'; -import { fetchFollowing } from 'mastodon/actions/accounts'; import { importFetchedAccounts } from 'mastodon/actions/importer'; import { fetchList } from 'mastodon/actions/lists'; import { apiRequest } from 'mastodon/api'; @@ -25,14 +22,12 @@ import { Avatar } from 'mastodon/components/avatar'; import { Button } from 'mastodon/components/button'; import Column from 'mastodon/components/column'; import { ColumnHeader } from 'mastodon/components/column_header'; +import { ColumnSearchHeader } from 'mastodon/components/column_search_header'; import { FollowersCounter } from 'mastodon/components/counters'; import { DisplayName } from 'mastodon/components/display_name'; -import { Icon } from 'mastodon/components/icon'; import ScrollableList from 'mastodon/components/scrollable_list'; import { ShortNumber } from 'mastodon/components/short_number'; import { VerifiedBadge } from 'mastodon/components/verified_badge'; -import { ButtonInTabsBar } from 'mastodon/features/ui/util/columns_context'; -import { me } from 'mastodon/initial_state'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; const messages = defineMessages({ @@ -49,54 +44,6 @@ const messages = defineMessages({ type Mode = 'remove' | 'add'; -const ColumnSearchHeader: React.FC<{ - onBack: () => void; - onSubmit: (value: string) => void; -}> = ({ onBack, onSubmit }) => { - const intl = useIntl(); - const [value, setValue] = useState(''); - - const handleChange = useCallback( - ({ target: { value } }: React.ChangeEvent) => { - setValue(value); - onSubmit(value); - }, - [setValue, onSubmit], - ); - - const handleSubmit = useCallback(() => { - onSubmit(value); - }, [onSubmit, value]); - - return ( - -
- - - -
-
- ); -}; - const AccountItem: React.FC<{ accountId: string; listId: string; @@ -156,6 +103,7 @@ const AccountItem: React.FC<{ text={intl.formatMessage( partOfList ? messages.remove : messages.add, )} + secondary={partOfList} onClick={handleClick} />
@@ -171,9 +119,6 @@ const ListMembers: React.FC<{ const { id } = useParams<{ id: string }>(); const intl = useIntl(); - const followingAccountIds = useAppSelector( - (state) => state.user_lists.getIn(['following', me, 'items']) as string[], - ); const [searching, setSearching] = useState(false); const [accountIds, setAccountIds] = useState([]); const [searchAccountIds, setSearchAccountIds] = useState([]); @@ -195,8 +140,6 @@ const ListMembers: React.FC<{ .catch(() => { setLoading(false); }); - - dispatch(fetchFollowing(me)); } }, [dispatch, id]); @@ -265,8 +208,8 @@ const ListMembers: React.FC<{ let displayedAccountIds: string[]; - if (mode === 'add') { - displayedAccountIds = searching ? searchAccountIds : followingAccountIds; + if (mode === 'add' && searching) { + displayedAccountIds = searchAccountIds; } else { displayedAccountIds = accountIds; } @@ -276,31 +219,21 @@ const ListMembers: React.FC<{ bindToDocument={!multiColumn} label={intl.formatMessage(messages.heading)} > - {mode === 'remove' ? ( - - - - } - /> - ) : ( - - )} + + + - {displayedAccountIds.length > 0 &&
} + <> + {displayedAccountIds.length > 0 &&
} -
- - - -
- - ) +
+ + + +
+ } emptyMessage={ mode === 'remove' ? ( diff --git a/app/javascript/mastodon/features/onboarding/components/step.jsx b/app/javascript/mastodon/features/onboarding/components/step.jsx deleted file mode 100644 index a2a1653b8a..0000000000 --- a/app/javascript/mastodon/features/onboarding/components/step.jsx +++ /dev/null @@ -1,57 +0,0 @@ -import PropTypes from 'prop-types'; - -import { Link } from 'react-router-dom'; - -import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; -import CheckIcon from '@/material-icons/400-24px/done.svg?react'; -import { Icon } from 'mastodon/components/icon'; - -export const Step = ({ label, description, icon, iconComponent, completed, onClick, href, to }) => { - const content = ( - <> -
- -
- -
-
{label}
-

{description}

-
- -
- {completed ? : } -
- - ); - - if (href) { - return ( - - {content} - - ); - } else if (to) { - return ( - - {content} - - ); - } - - return ( - - ); -}; - -Step.propTypes = { - label: PropTypes.node, - description: PropTypes.node, - icon: PropTypes.string, - iconComponent: PropTypes.func, - completed: PropTypes.bool, - href: PropTypes.string, - to: PropTypes.string, - onClick: PropTypes.func, -}; diff --git a/app/javascript/mastodon/features/onboarding/follows.jsx b/app/javascript/mastodon/features/onboarding/follows.jsx deleted file mode 100644 index e23a335c06..0000000000 --- a/app/javascript/mastodon/features/onboarding/follows.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import { useEffect } from 'react'; - -import { FormattedMessage } from 'react-intl'; - -import { Link } from 'react-router-dom'; - -import { useDispatch } from 'react-redux'; - - -import { fetchSuggestions } from 'mastodon/actions/suggestions'; -import { markAsPartial } from 'mastodon/actions/timelines'; -import { ColumnBackButton } from 'mastodon/components/column_back_button'; -import { EmptyAccount } from 'mastodon/components/empty_account'; -import Account from 'mastodon/containers/account_container'; -import { useAppSelector } from 'mastodon/store'; - -export const Follows = () => { - const dispatch = useDispatch(); - const isLoading = useAppSelector(state => state.getIn(['suggestions', 'isLoading'])); - const suggestions = useAppSelector(state => state.getIn(['suggestions', 'items'])); - - useEffect(() => { - dispatch(fetchSuggestions(true)); - - return () => { - dispatch(markAsPartial('home')); - }; - }, [dispatch]); - - let loadedContent; - - if (isLoading) { - loadedContent = (new Array(8)).fill().map((_, i) => ); - } else if (suggestions.isEmpty()) { - loadedContent =
; - } else { - loadedContent = suggestions.map(suggestion => ); - } - - return ( - <> - - -
-
-

-

-
- -
- {loadedContent} -
- -

{chunks} }} />

- -
- -
-
- - ); -}; diff --git a/app/javascript/mastodon/features/onboarding/follows.tsx b/app/javascript/mastodon/features/onboarding/follows.tsx new file mode 100644 index 0000000000..25ee48c8ac --- /dev/null +++ b/app/javascript/mastodon/features/onboarding/follows.tsx @@ -0,0 +1,191 @@ +import { useEffect, useState, useCallback, useRef } from 'react'; + +import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; + +import { Helmet } from 'react-helmet'; +import { Link } from 'react-router-dom'; + +import { useDebouncedCallback } from 'use-debounce'; + +import PersonIcon from '@/material-icons/400-24px/person.svg?react'; +import { fetchRelationships } from 'mastodon/actions/accounts'; +import { importFetchedAccounts } from 'mastodon/actions/importer'; +import { fetchSuggestions } from 'mastodon/actions/suggestions'; +import { markAsPartial } from 'mastodon/actions/timelines'; +import { apiRequest } from 'mastodon/api'; +import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; +import Column from 'mastodon/components/column'; +import { ColumnHeader } from 'mastodon/components/column_header'; +import { ColumnSearchHeader } from 'mastodon/components/column_search_header'; +import ScrollableList from 'mastodon/components/scrollable_list'; +import Account from 'mastodon/containers/account_container'; +import { useAppSelector, useAppDispatch } from 'mastodon/store'; + +const messages = defineMessages({ + title: { + id: 'onboarding.follows.title', + defaultMessage: 'Follow people to get started', + }, + search: { id: 'onboarding.follows.search', defaultMessage: 'Search' }, + back: { id: 'onboarding.follows.back', defaultMessage: 'Back' }, +}); + +type Mode = 'remove' | 'add'; + +export const Follows: React.FC<{ + multiColumn?: boolean; +}> = ({ multiColumn }) => { + const intl = useIntl(); + const dispatch = useAppDispatch(); + const isLoading = useAppSelector((state) => state.suggestions.isLoading); + const suggestions = useAppSelector((state) => state.suggestions.items); + const [searchAccountIds, setSearchAccountIds] = useState([]); + const [mode, setMode] = useState('remove'); + const [isLoadingSearch, setIsLoadingSearch] = useState(false); + const [isSearching, setIsSearching] = useState(false); + + useEffect(() => { + void dispatch(fetchSuggestions()); + + return () => { + dispatch(markAsPartial('home')); + }; + }, [dispatch]); + + const handleSearchClick = useCallback(() => { + setMode('add'); + }, [setMode]); + + const handleDismissSearchClick = useCallback(() => { + setMode('remove'); + setIsSearching(false); + }, [setMode, setIsSearching]); + + const searchRequestRef = useRef(null); + + const handleSearch = useDebouncedCallback( + (value: string) => { + if (searchRequestRef.current) { + searchRequestRef.current.abort(); + } + + if (value.trim().length === 0) { + setIsSearching(false); + setSearchAccountIds([]); + return; + } + + setIsSearching(true); + setIsLoadingSearch(true); + + searchRequestRef.current = new AbortController(); + + void apiRequest('GET', 'v1/accounts/search', { + signal: searchRequestRef.current.signal, + params: { + q: value, + }, + }) + .then((data) => { + dispatch(importFetchedAccounts(data)); + dispatch(fetchRelationships(data.map((a) => a.id))); + setSearchAccountIds(data.map((a) => a.id)); + setIsLoadingSearch(false); + return ''; + }) + .catch(() => { + setIsLoadingSearch(false); + }); + }, + 500, + { leading: true, trailing: true }, + ); + + let displayedAccountIds: string[]; + + if (mode === 'add' && isSearching) { + displayedAccountIds = searchAccountIds; + } else { + displayedAccountIds = suggestions.map( + (suggestion) => suggestion.account_id, + ); + } + + return ( + + + + + + + {displayedAccountIds.length > 0 &&
} + +
+ + + +
+ + } + emptyMessage={ + mode === 'remove' ? ( + + ) : ( + + ) + } + > + {displayedAccountIds.map((accountId) => ( + + ))} + + + + {intl.formatMessage(messages.title)} + + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export default Follows; diff --git a/app/javascript/mastodon/features/onboarding/index.jsx b/app/javascript/mastodon/features/onboarding/index.jsx deleted file mode 100644 index d100a1c3d5..0000000000 --- a/app/javascript/mastodon/features/onboarding/index.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import { useCallback } from 'react'; - -import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; - -import { Helmet } from 'react-helmet'; -import { Link, Switch, Route } from 'react-router-dom'; - -import { useDispatch } from 'react-redux'; - - -import illustration from '@/images/elephant_ui_conversation.svg'; -import AccountCircleIcon from '@/material-icons/400-24px/account_circle.svg?react'; -import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react'; -import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react'; -import EditNoteIcon from '@/material-icons/400-24px/edit_note.svg?react'; -import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react'; -import { focusCompose } from 'mastodon/actions/compose'; -import { Icon } from 'mastodon/components/icon'; -import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator'; -import Column from 'mastodon/features/ui/components/column'; -import { me } from 'mastodon/initial_state'; -import { useAppSelector } from 'mastodon/store'; -import { assetHost } from 'mastodon/utils/config'; - -import { Step } from './components/step'; -import { Follows } from './follows'; -import { Profile } from './profile'; -import { Share } from './share'; - -const messages = defineMessages({ - template: { id: 'onboarding.compose.template', defaultMessage: 'Hello #Mastodon!' }, -}); - -const Onboarding = () => { - const account = useAppSelector(state => state.getIn(['accounts', me])); - const dispatch = useDispatch(); - const intl = useIntl(); - - const handleComposeClick = useCallback(() => { - dispatch(focusCompose(intl.formatMessage(messages.template))); - }, [dispatch, intl]); - - return ( - - {account ? ( - - -
-
- -

-

-
- -
- 0 && account.get('note').length > 0)} icon='address-book-o' iconComponent={AccountCircleIcon} label={} description={} /> - = 1} icon='user-plus' iconComponent={PersonAddIcon} label={} description={} /> - = 1} icon='pencil-square-o' iconComponent={EditNoteIcon} label={} description={ }} />} /> - } description={} /> -
- -

- -
- - - - - - - - - -
-
-
- - - - -
- ) : } - - - - -
- ); -}; - -export default Onboarding; diff --git a/app/javascript/mastodon/features/onboarding/profile.jsx b/app/javascript/mastodon/features/onboarding/profile.jsx deleted file mode 100644 index 14250ae39b..0000000000 --- a/app/javascript/mastodon/features/onboarding/profile.jsx +++ /dev/null @@ -1,162 +0,0 @@ -import { useState, useMemo, useCallback, createRef } from 'react'; - -import { useIntl, defineMessages, FormattedMessage } from 'react-intl'; - -import classNames from 'classnames'; -import { useHistory } from 'react-router-dom'; - - -import { useDispatch } from 'react-redux'; - -import Toggle from 'react-toggle'; - -import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react'; -import EditIcon from '@/material-icons/400-24px/edit.svg?react'; -import { updateAccount } from 'mastodon/actions/accounts'; -import { Button } from 'mastodon/components/button'; -import { ColumnBackButton } from 'mastodon/components/column_back_button'; -import { Icon } from 'mastodon/components/icon'; -import { LoadingIndicator } from 'mastodon/components/loading_indicator'; -import { me } from 'mastodon/initial_state'; -import { useAppSelector } from 'mastodon/store'; -import { unescapeHTML } from 'mastodon/utils/html'; - -const messages = defineMessages({ - uploadHeader: { id: 'onboarding.profile.upload_header', defaultMessage: 'Upload profile header' }, - uploadAvatar: { id: 'onboarding.profile.upload_avatar', defaultMessage: 'Upload profile picture' }, -}); - -const nullIfMissing = path => path.endsWith('missing.png') ? null : path; - -export const Profile = () => { - const account = useAppSelector(state => state.getIn(['accounts', me])); - const [displayName, setDisplayName] = useState(account.get('display_name')); - const [note, setNote] = useState(unescapeHTML(account.get('note'))); - const [avatar, setAvatar] = useState(null); - const [header, setHeader] = useState(null); - const [discoverable, setDiscoverable] = useState(account.get('discoverable')); - const [isSaving, setIsSaving] = useState(false); - const [errors, setErrors] = useState(); - const avatarFileRef = createRef(); - const headerFileRef = createRef(); - const dispatch = useDispatch(); - const intl = useIntl(); - const history = useHistory(); - - const handleDisplayNameChange = useCallback(e => { - setDisplayName(e.target.value); - }, [setDisplayName]); - - const handleNoteChange = useCallback(e => { - setNote(e.target.value); - }, [setNote]); - - const handleDiscoverableChange = useCallback(e => { - setDiscoverable(e.target.checked); - }, [setDiscoverable]); - - const handleAvatarChange = useCallback(e => { - setAvatar(e.target?.files?.[0]); - }, [setAvatar]); - - const handleHeaderChange = useCallback(e => { - setHeader(e.target?.files?.[0]); - }, [setHeader]); - - const avatarPreview = useMemo(() => avatar ? URL.createObjectURL(avatar) : nullIfMissing(account.get('avatar')), [avatar, account]); - const headerPreview = useMemo(() => header ? URL.createObjectURL(header) : nullIfMissing(account.get('header')), [header, account]); - - const handleSubmit = useCallback(() => { - setIsSaving(true); - - dispatch(updateAccount({ - displayName, - note, - avatar, - header, - discoverable, - indexable: discoverable, - })).then(() => history.push('/start/follows')).catch(err => { - setIsSaving(false); - setErrors(err.response.data.details); - }); - }, [dispatch, displayName, note, avatar, header, discoverable, history]); - - return ( - <> - - -
-
-

-

-
- -
-
- - - -
- -
- - -
- -
-
- -
- - -
-