Merge commit '4fc8c6912979e8fd7882fb360b77e677ffd68565' into glitch-soc/merge-upstream

This commit is contained in:
Claire 2025-02-12 18:40:21 +01:00
commit 28d85ede4c
61 changed files with 1158 additions and 896 deletions

2
.nvmrc
View File

@ -1 +1 @@
22.13
22.14

View File

@ -328,7 +328,7 @@ GEM
azure-blob (~> 0.5.2)
hashie (~> 5.0)
jmespath (1.6.2)
json (2.9.1)
json (2.10.1)
json-canonicalization (1.0.0)
json-jwt (1.15.3.1)
activesupport (>= 4.2)
@ -371,9 +371,10 @@ GEM
mime-types
terrapin (>= 0.6.0, < 2.0)
language_server-protocol (3.17.0.4)
launchy (3.0.1)
launchy (3.1.0)
addressable (~> 2.8)
childprocess (~> 5.0)
logger (~> 1.6)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)
@ -416,7 +417,7 @@ GEM
mutex_m (0.3.0)
net-http (0.6.0)
uri
net-imap (0.5.5)
net-imap (0.5.6)
date
net-protocol
net-ldap (0.19.0)
@ -424,7 +425,7 @@ GEM
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.0)
net-smtp (0.5.1)
net-protocol
nio4r (2.7.4)
nokogiri (1.18.2)
@ -562,10 +563,10 @@ GEM
opentelemetry-api (~> 1.0)
orm_adapter (0.5.0)
ostruct (0.6.1)
ox (2.14.21)
ox (2.14.22)
bigdecimal (>= 3.0)
parallel (1.26.3)
parser (3.3.7.0)
parser (3.3.7.1)
ast (~> 2.4.1)
racc
parslet (2.0.0)
@ -602,7 +603,7 @@ GEM
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.8.1)
rack (2.2.10)
rack (2.2.11)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (2.0.2)
@ -669,7 +670,7 @@ GEM
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.7.0)
rdf (~> 3.3)
rdoc (6.11.0)
rdoc (6.12.0)
psych (>= 4.0.0)
redcarpet (3.6.0)
redis (4.8.1)
@ -768,7 +769,7 @@ GEM
activerecord (>= 4.0.0)
railties (>= 4.0.0)
securerandom (0.4.1)
selenium-webdriver (4.27.0)
selenium-webdriver (4.28.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
@ -806,7 +807,7 @@ GEM
simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4)
stackprof (0.2.27)
stoplight (4.1.0)
stoplight (4.1.1)
redlock (~> 1.0)
stringio (3.1.2)
strong_migrations (2.2.0)
@ -817,8 +818,8 @@ GEM
httpclient (>= 2.4)
sysexits (1.2.0)
temple (0.10.3)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terminal-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
terrapin (1.0.1)
climate_control
test-prof (1.4.4)
@ -849,7 +850,9 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.9.1)
unicode-display_width (2.6.0)
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uri (1.0.2)
useragent (0.16.11)
validate_email (0.1.6)

View File

@ -6,7 +6,7 @@ module Admin
def index
authorize :software_update, :index?
@software_updates = SoftwareUpdate.by_version
@software_updates = SoftwareUpdate.by_version.filter(&:pending?)
end
private

View File

@ -46,6 +46,6 @@ module WebAppControllerConcern
protected
def set_referer_header
response.set_header('Referrer-Policy', Setting.allow_referrer_origin ? 'origin' : 'same-origin')
response.set_header('Referrer-Policy', Setting.allow_referrer_origin ? 'strict-origin-when-cross-origin' : 'same-origin')
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 KiB

After

Width:  |  Height:  |  Size: 554 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 858 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 985 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 KiB

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 786 KiB

After

Width:  |  Height:  |  Size: 653 KiB

View File

@ -68,8 +68,13 @@
"alert.unexpected.message": "Prodúxose un error inesperáu.",
"alert.unexpected.title": "¡Meca!",
"alt_text_badge.title": "Testu alternativu",
"alt_text_modal.add_alt_text": "Amestar testu alternativu",
"alt_text_modal.cancel": "Encaboxar",
"alt_text_modal.done": "Fecho",
"announcement.announcement": "Anunciu",
"annual_report.summary.followers.followers": "siguidores",
"annual_report.summary.here_it_is": "Equí ta'l to resume de {year}:",
"annual_report.summary.highlighted_post.possessive": "de {name}",
"annual_report.summary.new_posts.new_posts": "artículos nuevos",
"annual_report.summary.thanks": "Gracies por ser parte de Mastodon!",
"attachments_list.unprocessed": "(ensin procesar)",
@ -87,6 +92,7 @@
"bundle_column_error.routing.body": "Nun se pudo atopar la páxina solicitada. ¿De xuru que la URL de la barra de direiciones ta bien escrita?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Zarrar",
"bundle_modal_error.retry": "Retentar",
"closed_registrations.other_server_instructions": "Darréu que Mastodon ye una rede social descentralizada, pues crear una cuenta n'otru sirvidor y siguir interactuando con esti.",
"closed_registrations_modal.description": "Anguaño nun ye posible crear cuentes en {domain}, mas ten en cuenta que nun precises una cuenta nesti sirvidor pa usar Mastodon.",
"closed_registrations_modal.find_another_server": "Atopar otru sirvidor",
@ -114,6 +120,7 @@
"column_header.pin": "Fixar",
"column_header.show_settings": "Amosar la configuración",
"column_header.unpin": "Lliberar",
"column_search.cancel": "Encaboxar",
"column_subheading.settings": "Configuración",
"community.column_settings.media_only": "Namás el conteníu multimedia",
"community.column_settings.remote_only": "Namás lo remoto",
@ -129,26 +136,42 @@
"compose_form.placeholder": "¿En qué pienses?",
"compose_form.poll.option_placeholder": "Opción {number}",
"compose_form.poll.type": "Tipu",
"compose_form.publish": "Espublizar",
"compose_form.publish_form": "Artículu nuevu",
"compose_form.reply": "Responder",
"confirmation_modal.cancel": "Encaboxar",
"confirmations.block.confirm": "Bloquiar",
"confirmations.delete.confirm": "Desaniciar",
"confirmations.delete.message": "¿De xuru que quies desaniciar esti artículu?",
"confirmations.delete.title": "¿Desaniciar l'artículu?",
"confirmations.delete_list.confirm": "Desaniciar",
"confirmations.delete_list.message": "¿De xuru que quies desaniciar permanentemente esta llista?",
"confirmations.delete_list.title": "¿Desaniciar la llista?",
"confirmations.discard_edit_media.confirm": "Escartar",
"confirmations.edit.confirm": "Editar",
"confirmations.edit.message": "La edición va sobrescribir el mensaxe que tas escribiendo. ¿De xuru que quies siguir?",
"confirmations.follow_to_list.title": "¿Siguir al usuariu?",
"confirmations.logout.confirm": "Zarrar la sesión",
"confirmations.logout.message": "¿De xuru que quies zarrar la sesión?",
"confirmations.logout.title": "¿Zarrar la sesión?",
"confirmations.missing_alt_text.confirm": "Amestar testu alternativu",
"confirmations.missing_alt_text.title": "¿Quies amestar testu alternativu?",
"confirmations.redraft.confirm": "Desaniciar y reeditar",
"confirmations.redraft.message": "¿De xuru que quies desaniciar esti artículu y reeditalu? Van perdese los favoritos y comparticiones, y les rempuestes al artículu orixinal van quedar güérfanes.",
"confirmations.redraft.title": "¿Desaniciar ya reeditar l'artículu?",
"confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Responder agora va sobrescribir el mensaxe que tas componiendo anguaño. ¿De xuru que quies siguir?",
"confirmations.unfollow.confirm": "Dexar de siguir",
"confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
"confirmations.unfollow.title": "¿Dexar de siguir al usuariu?",
"content_warning.hide": "Anubrir l'artículu",
"content_warning.show": "Amosar de toes toes",
"content_warning.show_more": "Amosar más",
"conversation.delete": "Desaniciar la conversación",
"conversation.mark_as_read": "Marcar como lleíu",
"conversation.open": "Ver la conversación",
"conversation.with": "Con {names}",
"copy_icon_button.copied": "Copiáu nel cartafueyu",
"copypaste.copied": "Copióse",
"copypaste.copy_to_clipboard": "Copiar nel cartafueyu",
"directory.federated": "Del fediversu conocíu",
@ -159,6 +182,7 @@
"dismissable_banner.community_timeline": "Esta seición contién los artículos públicos más actuales de los perfiles agospiaos nel dominiu {domain}.",
"dismissable_banner.dismiss": "Escartar",
"domain_block_modal.block": "Bloquiar el sirvidor",
"domain_block_modal.they_cant_follow": "Naide d'esti sirvidor pue siguite.",
"domain_block_modal.title": "Bloquiar el dominiu?",
"domain_pill.server": "Sirvidor",
"domain_pill.username": "Nome d'usuariu",
@ -176,6 +200,7 @@
"emoji_button.search_results": "Resultaos de la busca",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes y llugares",
"empty_column.account_suspended": "Cuenta suspendida",
"empty_column.account_timeline": "¡Equí nun hai nengún artículu!",
"empty_column.blocks": "Nun bloquiesti a nengún perfil.",
"empty_column.bookmarked_statuses": "Nun tienes nengún artículu en Marcadores. Cuando amiestes dalgún, apaez equí.",
@ -207,6 +232,7 @@
"filter_modal.added.settings_link": "páxina de configuración",
"filter_modal.added.short_explanation": "Esti artículu amestóse a la categoría de peñera siguiente: {title}.",
"filter_modal.added.title": "¡Amestóse la peñera!",
"filter_modal.select_filter.expired": "caducó",
"filter_modal.select_filter.prompt_new": "Categoría nueva: {name}",
"filter_modal.select_filter.search": "Buscar o crear",
"filter_modal.select_filter.subtitle": "Usa una categoría esistente o créala",
@ -241,6 +267,7 @@
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "ensin {additional}",
"hashtag.column_settings.select.no_options_message": "Nun s'atopó nenguna suxerencia",
"hashtag.column_settings.select.placeholder": "Introduz etiquetes…",
"hashtag.column_settings.tag_mode.all": "Toes estes",
"hashtag.column_settings.tag_mode.any": "Cualesquiera d'estes",
"hashtag.column_settings.tag_mode.none": "Nenguna d'estes",
@ -252,9 +279,14 @@
"home.column_settings.show_replies": "Amosar les rempuestes",
"home.pending_critical_update.body": "¡Anueva'l sirvidor de Mastodon namás que puedas!",
"home.show_announcements": "Amosar anuncios",
"info_button.label": "Ayuda",
"interaction_modal.go": "Dir",
"interaction_modal.no_account_yet": "¿Tovía nun tienes una cuenta?",
"interaction_modal.on_another_server": "N'otru sirvidor",
"interaction_modal.on_this_server": "Nesti sirvidor",
"interaction_modal.title.follow": "Siguir a {name}",
"interaction_modal.title.reply": "Rempuesta al artículu de: {name}",
"interaction_modal.title.vote": "Vota na encuesta de {name}",
"intervals.full.days": "{number, plural, one {# día} other {# díes}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
"intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}",
@ -291,10 +323,15 @@
"lightbox.close": "Zarrar",
"lightbox.next": "Siguiente",
"limited_account_hint.action": "Amosar el perfil de toes toes",
"link_preview.author": "Por {name}",
"link_preview.more_from_author": "Más de {name}",
"lists.add_member": "Amestar",
"lists.add_to_list": "Amestar a la llista",
"lists.add_to_lists": "Amestar {name} a la llista",
"lists.create": "Crear",
"lists.create_list": "Crear llista",
"lists.delete": "Desaniciar la llista",
"lists.done": "Fecho",
"lists.edit": "Editar la llista",
"lists.list_name": "Nome de la llista",
"lists.no_lists_yet": "Ensin llistes tovía.",
@ -332,6 +369,11 @@
"notification.admin.sign_up": "{name} rexistróse",
"notification.follow": "{name} siguióte",
"notification.follow_request": "{name} solicitó siguite",
"notification.label.mention": "Mención",
"notification.label.private_mention": "Mención privada",
"notification.label.private_reply": "Rempuesta privada",
"notification.label.reply": "Responder",
"notification.mention": "Mención",
"notification.mentioned_you": "{name} mentóte",
"notification.moderation-warning.learn_more": "Deprender más",
"notification.poll": "Finó una encuesta na que votesti",
@ -364,6 +406,9 @@
"notifications.group": "{count} avisos",
"notifications.mark_as_read": "Marcar tolos avisos como lleíos",
"notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.",
"notifications.policy.accept": "Aceptar",
"notifications.policy.accept_hint": "Amosar n'avisos",
"onboarding.follows.done": "Fecho",
"onboarding.profile.note": "Biografía",
"onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetes…",
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación supera la llongura de caráuteres máxima",

View File

@ -253,6 +253,58 @@
"dismissable_banner.explore_links": "Bu xəbərlər bu gün fediversedə ən çox paylaşılır. Daha fərqli insanlar tərəfindən dərc edilən daha yeni xəbərlər daha yuxarıda sıralanır.",
"dismissable_banner.explore_statuses": "Fediversedən olan bu paylaşımlar bu gün maraq qazanır. Daha çox gücləndirici və bəyənmə olan daha yeni paylaşımlar daha yuxarıda sıralanır.",
"dismissable_banner.explore_tags": "Bu heşteqlər fediverse-də trend olublar. Daha çox fərqli insanlar tərəfindən istifadə olunan heşteqlər daha yuxarıda sıralanır.",
"dismissable_banner.public_timeline": "Bunlar, {domain} saytında insanların izlədiyi fediversedəki insanların ən son ictimai paylaşımlarıdır.",
"domain_block_modal.block": "Serveri blokla",
"domain_block_modal.block_account_instead": "@{name} istifadəçisini blokla",
"domain_block_modal.they_can_interact_with_old_posts": "Bu serverdən olan insanlar köhnə paylaşımlarınızla əlaqə qura bilər."
"domain_block_modal.they_can_interact_with_old_posts": "Bu serverdən olan insanlar köhnə paylaşımlarınızla əlaqə qura bilər.",
"domain_block_modal.they_cant_follow": "Bu serverdən heç kim sizi izləyə bilməz.",
"domain_block_modal.they_wont_know": "Onlar bloklandıqlarını bilməyəcəklər.",
"domain_block_modal.title": "Domen bloklansın?",
"domain_block_modal.you_will_lose_num_followers": "Siz {followersCount, plural, one {{followersCountDisplay} follower} other {{followersCountDisplay} izləyici}} və izlədiyiniz {followingCount, plural, one {{followingCountDisplay} istifadəçini} other {{followingCountDisplay} istifadəçini}} itirəcəksiniz.",
"domain_block_modal.you_will_lose_relationships": "Bu serverdən olan bütün izləyicilərinizi və izlədiklərinizi itirəcəksiniz.",
"domain_block_modal.you_wont_see_posts": "Bu serverdən olan paylaşımları və istifadəçilərdən olan bildirişləri görməyəcəksiniz.",
"domain_pill.activitypub_lets_connect": "Bu, təkcə Mastodonda deyil, həm də müxtəlif sosial tətbiqlərdə insanlarla əlaqə saxlamağa və onlarla ünsiyyət qurmağa imkan verir.",
"domain_pill.activitypub_like_language": "ActivityPub-ı Mastodonun digər sosial şəbəkələrlə danışdığı dil kimi düşünə bilərsiniz.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Tanıdıcısı:",
"domain_pill.their_server": "Onların bütün paylaşımlarının yaşadığı rəqəmsal ev.",
"domain_pill.their_username": "Serverdəki unikal identifikator. Fərqli serverlərdə eyni istifadəçi adı ilə istifadəçilər tapmaq mümkündür.",
"domain_pill.username": "İstifadəçi adı",
"domain_pill.whats_in_a_handle": "Tanıdıcı nədir?",
"domain_pill.who_they_are": "Tanıdıcılar kimin kim olduğunu və harada olduğunu bildirdiyi üçün siz <button>ActivityPub tərəfindən dəstəklənən platformaların</button> sosial şəbəkəsindəki bütün insanlarla əlaqə saxlaya bilərsiniz.",
"domain_pill.who_you_are": "Tanıdıcılar sizin kim olduğunuzu və harada olduğunuzu bildirdiyi üçün <button>ActivityPub tərəfindən dəstəklənən platformaların</button> sosial şəbəkəsindəki bütün insanlar sizlə əlaqə saxlaya bilər.",
"domain_pill.your_handle": "Tanıdıcınız:",
"domain_pill.your_server": "Bütün paylaşımlarınızın yaşadığı rəqəmsal ev. Buranı bəyənmirsiniz? İstədiyiniz vaxt serverdən köçün və izləyicilərinizi də aparın.",
"domain_pill.your_username": "Serverdəki unikal identifikatoruz. Fərqli serverlərdə eyni istifadəçi adı ilə istifadəçilər tapmaq mümkündür.",
"embed.instructions": "Aşağıdakı kodu kopyalayaraq bu postu veb-saytınıza yerləşdirin.",
"embed.preview": "Belə görünəcək:",
"emoji_button.activity": "Aktivlik",
"emoji_button.clear": "Təmizlə",
"emoji_button.custom": "Özəl",
"emoji_button.flags": "Bayraqlar",
"emoji_button.food": "Yemək və içki",
"emoji_button.label": "Emoji daxil et",
"emoji_button.nature": "Təbiət",
"emoji_button.not_found": "Uyğun emoji tapılmadı",
"emoji_button.objects": "Obyektlər",
"emoji_button.people": "İnsanlar",
"emoji_button.recent": "Tez-tez istifadə edilən",
"emoji_button.search": "Axtar...",
"emoji_button.search_results": "Axtarış nəticələri",
"emoji_button.symbols": "Simvollar",
"emoji_button.travel": "Səyahət və məkanlar",
"empty_column.account_hides_collections": "Bu istifadəçi bu məlumatı əlçatan etməməyi seçib",
"empty_column.account_suspended": "Hesab silinib",
"empty_column.account_timeline": "Heç bir paylaşım yoxdur!",
"empty_column.account_unavailable": "Profil əlçatan deyil",
"empty_column.blocks": "Hələ ki, heç bir istifadəçini bloklamamasınız.",
"empty_column.bookmarked_statuses": "Hələ ki, heç bir paylaşımı yadda saxlamamısınız. Yadda saxlayanda burada görünəcək.",
"empty_column.community": "Lokal zaman qrafiki boşdur. Topun yuvarlanmağa başlaması üçün ictimai bir şey paylaşın!",
"empty_column.direct": "Gizli etiketiniz yoxdur. Göndərdikdə və ya qəbul etdikdə burada görəcəksiniz.",
"empty_column.domain_blocks": "Hələ ki, bloklanmış domen yoxdur.",
"empty_column.explore_statuses": "Hal-hazırda trenddə heç yoxdur. Daha sonra yenidən yoxlayın!",
"empty_column.favourited_statuses": "Bəyəndiyiniz paylaşımlar yoxdur. Birini bəyəndikdə burada görünəcək.",
"empty_column.favourites": "Bu paylaşımı hələ ki, heç kim bəyənməyib. Bəyənildikdə burada görünəcək.",
"follow_suggestions.hints.friends_of_friends": "Bu profil izlədiyiniz insanlar arasında populyardır.",
"follow_suggestions.hints.most_followed": "Bu profil {domain} serverində ən çox izlənilənlərdən biridir."
}

View File

@ -86,6 +86,7 @@
"alert.unexpected.message": "Узнікла нечаканая памылка.",
"alert.unexpected.title": "Вой!",
"alt_text_badge.title": "Альтэрнатыўны тэкст",
"alt_text_modal.done": "Гатова",
"announcement.announcement": "Аб'ява",
"annual_report.summary.archetype.booster": "Трэнда-сьледнік",
"annual_report.summary.archetype.lurker": "Назіральнік",
@ -407,6 +408,7 @@
"ignore_notifications_modal.not_followers_title": "Ігнараваць паведамленьні ад людзей, якія ня падпісаныя на вас?",
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей на якіх вы не падпісаны?",
"ignore_notifications_modal.private_mentions_title": "Ігнараваць паведамленьні аб непажаданых прыватных згадках?",
"info_button.label": "Даведка",
"interaction_modal.action.favourite": "Каб працягнуць, вы мусіце ўпадабаць з вашага ўліковага запісу.",
"interaction_modal.action.follow": "Каб працягнуць, вы мусіце падпісацца з вашага ўліковага запісу.",
"interaction_modal.on_another_server": "На іншым серверы",

View File

@ -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": "দল",
@ -19,6 +20,7 @@
"account.block_short": "ব্লক",
"account.blocked": "অবরুদ্ধ",
"account.cancel_follow_request": "অনুসরণ অনুরোধ প্রত্যাহার করুন",
"account.copy": "অবতারের সংযোগ অনুলিপি করো",
"account.direct": "গোপনে মেনশন করুন @{name}",
"account.disable_notifications": "আমাকে জানানো বন্ধ করো যখন @{name} পোস্ট করবে",
"account.domain_blocked": "ডোমেইন ব্লক করা",
@ -29,6 +31,7 @@
"account.featured_tags.last_status_never": "কোনো পোস্ট নেই",
"account.featured_tags.title": "{name} এর ফিচার করা Hashtag সমূহ",
"account.follow": "অনুসরণ",
"account.follow_back": "তাকে অনুসরণ করো",
"account.followers": "অনুসরণকারী",
"account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না.",
"account.following": "অনুসরণ করা হচ্ছে",

View File

@ -1,5 +1,5 @@
{
"about.blocks": "Gweinyddion gyda chymedrolwyr",
"about.blocks": "Gweinyddion wedi'u cymedroli",
"about.contact": "Cysylltwch â:",
"about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael",

View File

@ -540,7 +540,7 @@
"navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj",
"navigation_bar.lists": "Listoj",
"navigation_bar.logout": "Elsaluti",
"navigation_bar.moderation": "Reguligo",
"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",

View File

@ -13,13 +13,13 @@
"about.rules": "Reglas del servidor",
"account.account_note_header": "Nota personal",
"account.add_or_remove_from_list": "Agregar o eliminar de las listas",
"account.badges.bot": "Bot",
"account.badges.bot": "Automatizada",
"account.badges.group": "Grupo",
"account.block": "Bloquear a @{name}",
"account.block_domain": "Bloquear dominio {domain}",
"account.block_short": "Bloquear",
"account.blocked": "Bloqueado",
"account.cancel_follow_request": "Retirar solicitud de seguimiento",
"account.cancel_follow_request": "Cancelar seguimiento",
"account.copy": "Copiar enlace al perfil",
"account.direct": "Mención privada @{name}",
"account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo",
@ -84,7 +84,7 @@
"alert.rate_limited.message": "Por favor, intenta después de las {retry_time, time, medium}.",
"alert.rate_limited.title": "Tarifa limitada",
"alert.unexpected.message": "Hubo un error inesperado.",
"alert.unexpected.title": "¡Ups!",
"alert.unexpected.title": "¡Uy!",
"alt_text_badge.title": "Texto alternativo",
"alt_text_modal.add_alt_text": "Añadir texto alternativo",
"alt_text_modal.add_text_from_image": "Añadir texto de la imagen",
@ -193,7 +193,7 @@
"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",
"compose_form.publish_form": "Nueva publicación",
"compose_form.reply": "Respuesta",
"compose_form.save_changes": "Actualización",
"compose_form.spoiler.marked": "Quitar advertencia de contenido",
@ -285,7 +285,7 @@
"emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza",
"emoji_button.not_found": "Sin emojis coincidentes",
"emoji_button.not_found": "No se han encontrado emojis que coincidan",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Gente",
"emoji_button.recent": "Usados frecuentemente",
@ -308,8 +308,8 @@
"empty_column.follow_requests": "No tienes ninguna petición de seguidor. Cuando recibas una, se mostrará aquí.",
"empty_column.followed_tags": "No estás siguiendo ninguna etiqueta todavía. Cuando lo hagas, aparecerá aquí.",
"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.home": "¡Tu cronología está vacía! Sigue a más gente para llenarla.",
"empty_column.list": "Aún no hay nada en esta lista. Cuando los miembros de esta lista publiquen nuevos contenidos, aparecerán 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.",
@ -438,41 +438,41 @@
"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}}",
"keyboard_shortcuts.back": "volver atrás",
"keyboard_shortcuts.blocked": "abrir una lista de usuarios bloqueados",
"keyboard_shortcuts.back": "Volver atrás",
"keyboard_shortcuts.blocked": "Abrir la lista de usuarios bloqueados",
"keyboard_shortcuts.boost": "Impulsar publicación",
"keyboard_shortcuts.column": "enfocar un estado en una de las columnas",
"keyboard_shortcuts.compose": "enfocar el área de texto de redacción",
"keyboard_shortcuts.column": "Enfocar columna",
"keyboard_shortcuts.compose": "Enfocar el área de texto de redacción",
"keyboard_shortcuts.description": "Descripción",
"keyboard_shortcuts.direct": "para abrir la columna de menciones privadas",
"keyboard_shortcuts.down": "mover hacia abajo en la lista",
"keyboard_shortcuts.down": "Descender en la lista",
"keyboard_shortcuts.enter": "Abrir publicación",
"keyboard_shortcuts.favourite": "Marcar como favorita la publicación",
"keyboard_shortcuts.favourites": "Abrir lista de favoritos",
"keyboard_shortcuts.federated": "abrir el timeline federado",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "abrir el timeline propio",
"keyboard_shortcuts.hotkey": "Tecla caliente",
"keyboard_shortcuts.legend": "para mostrar esta leyenda",
"keyboard_shortcuts.local": "abrir el timeline local",
"keyboard_shortcuts.mention": "para mencionar al autor",
"keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "abrir tu perfil",
"keyboard_shortcuts.notifications": "abrir la columna de notificaciones",
"keyboard_shortcuts.open_media": "para abrir archivos multimedia",
"keyboard_shortcuts.federated": "Abrir cronología federada",
"keyboard_shortcuts.heading": "Atajos de teclado",
"keyboard_shortcuts.home": "Abrir cronología principal",
"keyboard_shortcuts.hotkey": "Tecla de acceso rápido",
"keyboard_shortcuts.legend": "Mostrar esta leyenda",
"keyboard_shortcuts.local": "Abrir cronología local",
"keyboard_shortcuts.mention": "Mencionar al autor",
"keyboard_shortcuts.muted": "Abrir la lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "Abrir tu perfil",
"keyboard_shortcuts.notifications": "Abrir la columna de notificaciones",
"keyboard_shortcuts.open_media": "Abrir multimedia",
"keyboard_shortcuts.pinned": "Abrir la lista de publicaciones fijadas",
"keyboard_shortcuts.profile": "abrir el perfil del autor",
"keyboard_shortcuts.profile": "Abrir perfil del autor",
"keyboard_shortcuts.reply": "Responder a la publicación",
"keyboard_shortcuts.requests": "abrir la lista de peticiones de seguidores",
"keyboard_shortcuts.search": "para poner el foco en la búsqueda",
"keyboard_shortcuts.spoilers": "para mostrar/ocultar el campo CW",
"keyboard_shortcuts.start": "abrir la columna \"comenzar\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)",
"keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios",
"keyboard_shortcuts.requests": "Abrir lista de solicitudes de seguimiento",
"keyboard_shortcuts.search": "Enfocar la barra de búsqueda",
"keyboard_shortcuts.spoilers": "Mostrar/ocultar el campo AC",
"keyboard_shortcuts.start": "Abrir la columna “empezar”",
"keyboard_shortcuts.toggle_hidden": "Mostrar/ocultar texto detrás de AC",
"keyboard_shortcuts.toggle_sensitivity": "Mostrar/ocultar multimedia",
"keyboard_shortcuts.toot": "Comenzar una nueva publicación",
"keyboard_shortcuts.translate": "para traducir una publicación",
"keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda",
"keyboard_shortcuts.up": "para ir hacia arriba en la lista",
"keyboard_shortcuts.unfocus": "Desenfocar área de redacción/búsqueda",
"keyboard_shortcuts.up": "Ascender en la lista",
"lightbox.close": "Cerrar",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
@ -644,7 +644,7 @@
"notifications.grant_permission": "Conceder permiso.",
"notifications.group": "{count} notificaciones",
"notifications.mark_as_read": "Marcar todas las notificaciones como leídas",
"notifications.permission_denied": "No se pueden habilitar las notificaciones de escritorio ya que se denegó el permiso.",
"notifications.permission_denied": "No se pueden habilitar las notificaciones de escritorio, ya que se denegó el permiso",
"notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado anteriormente",
"notifications.permission_required": "Las notificaciones de escritorio no están disponibles porque no se ha concedido el permiso requerido.",
"notifications.policy.accept": "Aceptar",
@ -835,7 +835,7 @@
"status.media.open": "Click para abrir",
"status.media.show": "Click para mostrar",
"status.media_hidden": "Contenido multimedia oculto",
"status.mention": "Mencionar",
"status.mention": "Mencionar @{name}",
"status.more": "Más",
"status.mute": "Silenciar @{name}",
"status.mute_conversation": "Silenciar conversación",
@ -855,7 +855,7 @@
"status.replied_to": "Respondió a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.report": "Reportar",
"status.report": "Reportar @{name}",
"status.sensitive_warning": "Contenido sensible",
"status.share": "Compartir",
"status.show_less_all": "Mostrar menos para todo",
@ -880,21 +880,21 @@
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} en los últimos {days, plural, one {días} other {{days} días}}",
"trends.trending_now": "Tendencia ahora",
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
"ui.beforeunload": "Tu borrador se perderá si abandonas Mastodon.",
"units.short.billion": "{count} MM",
"units.short.million": "{count} M",
"units.short.thousand": "{count} K",
"upload_area.title": "Arrastra y suelta para subir",
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Límite de subida de archivos excedido.",
"upload_error.poll": "Subida de archivos no permitida con encuestas.",
"upload_error.poll": "No se permite subir archivos con las encuestas.",
"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_progress.label": "Subiendo",
"upload_progress.label": "Subiendo...",
"upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario está ocupado. Prueba con otro",
"video.close": "Cerrar video",

View File

@ -56,9 +56,9 @@
"account.no_bio": "Sin biografía.",
"account.open_original_page": "Abrir página original",
"account.posts": "Publicaciones",
"account.posts_with_replies": "Pub. y respuestas",
"account.posts_with_replies": "Publicaciones y respuestas",
"account.report": "Reportar a @{name}",
"account.requested": "Esperando aprobación. Clica para cancelar la solicitud de seguimiento",
"account.requested": "Esperando aprobación. Haz clic para cancelar la solicitud de seguimiento",
"account.requested_follow": "{name} ha solicitado seguirte",
"account.share": "Compartir el perfil de @{name}",
"account.show_reblogs": "Mostrar impulsos de @{name}",
@ -71,7 +71,7 @@
"account.unmute": "Dejar de silenciar a @{name}",
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
"account.unmute_short": "Dejar de silenciar",
"account_note.placeholder": "Clic para añadir nota",
"account_note.placeholder": "Haz clic para añadir nota",
"admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro",
"admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro",
"admin.dashboard.retention.average": "Media",
@ -81,7 +81,7 @@
"admin.impact_report.instance_followers": "Seguidores que nuestros usuarios perderían",
"admin.impact_report.instance_follows": "Seguidores que perderían sus usuarios",
"admin.impact_report.title": "Resumen de impacto",
"alert.rate_limited.message": "Por favor, vuelve a intentarlo después de la(s) {retry_time, time, medium}.",
"alert.rate_limited.message": "Por favor, vuelve a intentarlo después de {retry_time, time, medium}.",
"alert.rate_limited.title": "Tráfico limitado",
"alert.unexpected.message": "Hubo un error inesperado.",
"alert.unexpected.title": "¡Ups!",
@ -93,7 +93,7 @@
"alt_text_modal.describe_for_people_with_hearing_impairments": "Descríbelo para personas con deficiencias auditivas…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Descríbelo para personas con discapacidad visual…",
"alt_text_modal.done": "Hecho",
"announcement.announcement": "Anuncio",
"announcement.announcement": "Comunicación",
"annual_report.summary.archetype.booster": "El cazador de tendencias",
"annual_report.summary.archetype.lurker": "El acechador",
"annual_report.summary.archetype.oracle": "El oráculo",
@ -243,7 +243,7 @@
"copypaste.copied": "Copiado",
"copypaste.copy_to_clipboard": "Copiar al portapapeles",
"directory.federated": "Desde el fediverso conocido",
"directory.local": "Solo de {domain}",
"directory.local": "Solo desde {domain}",
"directory.new_arrivals": "Recién llegados",
"directory.recently_active": "Recientemente activo",
"disabled_account_banner.account_settings": "Ajustes de la cuenta",
@ -285,7 +285,7 @@
"emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza",
"emoji_button.not_found": "No se encontró ningún emoji coincidente",
"emoji_button.not_found": "No se encontró ningún emoji que coincida",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Personas",
"emoji_button.recent": "Usados frecuentemente",
@ -316,7 +316,7 @@
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo",
"error.unexpected_crash.explanation": "Debido a un error en nuestro código o a un problema de compatibilidad con el navegador, esta página no se ha podido mostrar correctamente.",
"error.unexpected_crash.explanation_addons": "No se pudo mostrar correctamente esta página. Este error probablemente fue causado por un complemento del navegador web o por herramientas de traducción automática.",
"error.unexpected_crash.next_steps": "Intenta actualizar la página. Si eso no ayuda, es posible que puedas usar Mastodon a través de otro navegador o aplicación nativa.",
"error.unexpected_crash.next_steps": "Intenta actualizar la página. Si eso no ayuda, quizás puedas usar Mastodon desde otro navegador o aplicación nativa.",
"error.unexpected_crash.next_steps_addons": "Intenta deshabilitarlos y recarga la página. Si eso no ayuda, podrías usar Mastodon a través de un navegador web diferente o aplicación nativa.",
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
"errors.unexpected_crash.report_issue": "Informar de un problema/error",
@ -330,7 +330,7 @@
"filter_modal.added.expired_explanation": "Esta categoría de filtro ha caducado, tendrás que cambiar la fecha de caducidad para que se aplique.",
"filter_modal.added.expired_title": "¡Filtro caducado!",
"filter_modal.added.review_and_configure": "Para revisar y configurar esta categoría de filtros, vaya a {settings_link}.",
"filter_modal.added.review_and_configure_title": "Ajustes de filtro",
"filter_modal.added.review_and_configure_title": "Ajustes de filtros",
"filter_modal.added.settings_link": "página de ajustes",
"filter_modal.added.short_explanation": "Esta publicación ha sido añadida a la siguiente categoría de filtros: {title}.",
"filter_modal.added.title": "¡Filtro añadido!",
@ -352,7 +352,7 @@
"follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.",
"follow_suggestions.curated_suggestion": "Recomendaciones del equipo",
"follow_suggestions.dismiss": "No mostrar de nuevo",
"follow_suggestions.featured_longer": "Escogidos por el equipo de {domain}",
"follow_suggestions.featured_longer": "Sugerencias del equipo de {domain}",
"follow_suggestions.friends_of_friends_longer": "Populares entre las personas a las que sigues",
"follow_suggestions.hints.featured": "Este perfil ha sido elegido a mano por el equipo de {domain}.",
"follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.",
@ -380,11 +380,11 @@
"hashtag.column_header.tag_mode.all": "y {additional}",
"hashtag.column_header.tag_mode.any": "o {additional}",
"hashtag.column_header.tag_mode.none": "sin {additional}",
"hashtag.column_settings.select.no_options_message": "No se encontraron sugerencias",
"hashtag.column_settings.select.no_options_message": "No se han encontrado sugerencias",
"hashtag.column_settings.select.placeholder": "Introduce etiquetas…",
"hashtag.column_settings.tag_mode.all": "Todos estos",
"hashtag.column_settings.tag_mode.any": "Cualquiera de estos",
"hashtag.column_settings.tag_mode.none": "Ninguno de estos",
"hashtag.column_settings.tag_mode.all": "Todas estas",
"hashtag.column_settings.tag_mode.any": "Cualquiera de estas",
"hashtag.column_settings.tag_mode.none": "Ninguna de estas",
"hashtag.column_settings.tag_toggle": "Incluir etiquetas adicionales en esta columna",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}",
@ -402,12 +402,12 @@
"hints.threads.see_more": "Ver más respuestas en {domain}",
"home.column_settings.show_reblogs": "Mostrar impulsos",
"home.column_settings.show_replies": "Mostrar respuestas",
"home.hide_announcements": "Ocultar anuncios",
"home.hide_announcements": "Ocultar comunicaciones",
"home.pending_critical_update.body": "Por favor, ¡actualiza tu servidor Mastodon lo antes posible!",
"home.pending_critical_update.link": "Ver actualizaciones",
"home.pending_critical_update.title": "¡Actualización de seguridad crítica disponible!",
"home.show_announcements": "Mostrar anuncios",
"ignore_notifications_modal.disclaimer": "Mastodon no puede informar a los usuarios que has ignorado sus notificaciones. Ignorar notificaciones no impedirá que se sigan enviando los mensajes.",
"home.show_announcements": "Mostrar comunicaciones",
"ignore_notifications_modal.disclaimer": "Mastodon no puede informar a los usuarios de que has ignorado sus notificaciones. Ignorar notificaciones no impedirá que se sigan enviando los mensajes.",
"ignore_notifications_modal.filter_instead": "Filtrar en vez de ignorar",
"ignore_notifications_modal.filter_to_act_users": "Aún podrás aceptar, rechazar o reportar usuarios",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrar ayuda a evitar confusiones potenciales",
@ -438,14 +438,14 @@
"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}}",
"keyboard_shortcuts.back": "volver atrás",
"keyboard_shortcuts.blocked": "abrir una lista de usuarios bloqueados",
"keyboard_shortcuts.back": "Navegar hacia atrás",
"keyboard_shortcuts.blocked": "Abrir lista de usuarios bloqueados",
"keyboard_shortcuts.boost": "Impulsar",
"keyboard_shortcuts.column": "Enfocar columna",
"keyboard_shortcuts.compose": "enfocar el área de texto de redacción",
"keyboard_shortcuts.compose": "Focalizar el área de texto de redacción",
"keyboard_shortcuts.description": "Descripción",
"keyboard_shortcuts.direct": "para abrir la columna de menciones privadas",
"keyboard_shortcuts.down": "mover hacia abajo en la lista",
"keyboard_shortcuts.down": "Moverse hacia abajo en la lista",
"keyboard_shortcuts.enter": "Abrir publicación",
"keyboard_shortcuts.favourite": "Marcar como favorita la publicación",
"keyboard_shortcuts.favourites": "Abrir lista de favoritos",
@ -455,24 +455,24 @@
"keyboard_shortcuts.hotkey": "Tecla rápida",
"keyboard_shortcuts.legend": "Mostrar esta leyenda",
"keyboard_shortcuts.local": "Abrir cronología local",
"keyboard_shortcuts.mention": "mencionar al autor",
"keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "abrir tu perfil",
"keyboard_shortcuts.notifications": "abrir la columna de notificaciones",
"keyboard_shortcuts.open_media": "para abrir archivos multimedia",
"keyboard_shortcuts.mention": "Mencionar autor",
"keyboard_shortcuts.muted": "Abrir lista de usuarios silenciados",
"keyboard_shortcuts.my_profile": "Abrir tu perfil",
"keyboard_shortcuts.notifications": "Abrir columna de notificaciones",
"keyboard_shortcuts.open_media": "Abrir multimedia",
"keyboard_shortcuts.pinned": "Abrir la lista de publicaciones destacadas",
"keyboard_shortcuts.profile": "abrir el perfil del autor",
"keyboard_shortcuts.reply": "para responder",
"keyboard_shortcuts.requests": "abrir la lista de peticiones de seguidores",
"keyboard_shortcuts.search": "para poner el foco en la búsqueda",
"keyboard_shortcuts.spoilers": "para mostrar/ocultar el campo CW",
"keyboard_shortcuts.start": "abrir la columna \"comenzar\"",
"keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)",
"keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios",
"keyboard_shortcuts.toot": "Comienza una nueva publicación",
"keyboard_shortcuts.profile": "Abrir perfil del autor",
"keyboard_shortcuts.reply": "Responder a una publicación",
"keyboard_shortcuts.requests": "Abrir lista de solicitudes de seguimiento",
"keyboard_shortcuts.search": "Focalizar barra de búsqueda",
"keyboard_shortcuts.spoilers": "Mostrar/ocultar el campo de CW",
"keyboard_shortcuts.start": "Abrir la columna \"comenzar\"",
"keyboard_shortcuts.toggle_hidden": "Mostrar/ocultar texto tras aviso de contenido (CW)",
"keyboard_shortcuts.toggle_sensitivity": "Mostrar/ocultar multimedia",
"keyboard_shortcuts.toot": "Comenzar una nueva publicación",
"keyboard_shortcuts.translate": "para traducir una publicación",
"keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda",
"keyboard_shortcuts.up": "para ir hacia arriba en la lista",
"keyboard_shortcuts.unfocus": "Quitar el foco de la caja de redacción/búsqueda",
"keyboard_shortcuts.up": "Moverse hacia arriba en la lista",
"lightbox.close": "Cerrar",
"lightbox.next": "Siguiente",
"lightbox.previous": "Anterior",
@ -644,7 +644,7 @@
"notifications.grant_permission": "Conceder permiso.",
"notifications.group": "{count} notificaciones",
"notifications.mark_as_read": "Marcar todas las notificaciones como leídas",
"notifications.permission_denied": "No se pueden habilitar las notificaciones de escritorio ya que se denegó el permiso.",
"notifications.permission_denied": "Las notificaciones de escritorio no están disponibles porque se denegó el permiso del navegador previamente",
"notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado anteriormente",
"notifications.permission_required": "Las notificaciones de escritorio no están disponibles porque no se ha concedido el permiso requerido.",
"notifications.policy.accept": "Aceptar",
@ -835,7 +835,7 @@
"status.media.open": "Pulsa para abrir",
"status.media.show": "Pulsa para mostrar",
"status.media_hidden": "Contenido multimedia oculto",
"status.mention": "Mencionar",
"status.mention": "Mencionar a @{name}",
"status.more": "Más",
"status.mute": "Silenciar @{name}",
"status.mute_conversation": "Silenciar conversación",
@ -855,7 +855,7 @@
"status.replied_to": "Respondió a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.report": "Reportar",
"status.report": "Reportar a @{name}",
"status.sensitive_warning": "Contenido sensible",
"status.share": "Compartir",
"status.show_less_all": "Mostrar menos para todo",
@ -885,7 +885,7 @@
"units.short.million": "{count} M",
"units.short.thousand": "{count} K",
"upload_area.title": "Arrastra y suelta para subir",
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_button.label": "Añadir imágenes, un fichero de vídeo o de audio",
"upload_error.limit": "Límite de subida de archivos excedido.",
"upload_error.poll": "No se permite la subida de archivos con encuestas.",
"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.",
@ -894,7 +894,7 @@
"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_progress.label": "Subiendo",
"upload_progress.label": "Subiendo...",
"upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario ya está en uso. Prueba con otro",
"video.close": "Cerrar video",

View File

@ -218,6 +218,10 @@
"confirmations.logout.confirm": "Välju",
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
"confirmations.logout.title": "Logida välja?",
"confirmations.missing_alt_text.confirm": "Lisa alt-tekst",
"confirmations.missing_alt_text.message": "Sinu postituses on ilma alt-tekstita meediat. Kirjelduse lisamine aitab su sisu muuta ligipääsetavaks rohkematele inimestele.",
"confirmations.missing_alt_text.secondary": "Postita siiski",
"confirmations.missing_alt_text.title": "Lisada alt-tekst?",
"confirmations.mute.confirm": "Vaigista",
"confirmations.redraft.confirm": "Kustuta & taasalusta",
"confirmations.redraft.message": "Kindel, et soovid postituse kustutada ja võtta uue aluseks? Lemmikuks märkimised ja jagamised lähevad kaotsi ning vastused jäävad ilma algse postituseta.",
@ -553,8 +557,11 @@
"notification.admin.report_statuses_other": "{name} raporteeris kohast {target}",
"notification.admin.sign_up": "{name} registreerus",
"notification.admin.sign_up.name_and_others": "{name} ja {count, plural, one {# veel} other {# teist}} liitus",
"notification.annual_report.message": "Sinu {year} #Wrapstodon ootab! Avalda oma aasta tipphetked ja meeldejäävad hetked Mastodonis!",
"notification.annual_report.view": "Vaata #Wrapstodon",
"notification.favourite": "{name} märkis su postituse lemmikuks",
"notification.favourite.name_and_others_with_link": "{name} ja <a>{count, plural, one {# veel} other {# teist}}</a> märkis su postituse lemmikuks",
"notification.favourite_pm": "{name} märkis sinu privaatse mainimise 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",

View File

@ -78,6 +78,7 @@
"alt_text_modal.done": "Immed",
"announcement.announcement": "Ulɣu",
"annual_report.summary.most_used_hashtag.none": "Ula yiwen",
"annual_report.summary.new_posts.new_posts": "tisuffaɣ timaynutin",
"audio.hide": "Ffer amesli",
"block_modal.show_less": "Ssken-d drus",
"block_modal.show_more": "Ssken-d ugar",
@ -123,6 +124,7 @@
"column_header.pin": "Senteḍ",
"column_header.show_settings": "Ssken iɣewwaṛen",
"column_header.unpin": "Kkes asenteḍ",
"column_search.cancel": "Semmet",
"column_subheading.settings": "Iɣewwaṛen",
"community.column_settings.local_only": "Adigan kan",
"community.column_settings.media_only": "Imidyaten kan",
@ -141,6 +143,7 @@
"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": "Yiwen wefran",
"compose_form.poll.type": "Aɣanib",
"compose_form.publish": "Suffeɣ",
"compose_form.publish_form": "Tasuffeɣt tamaynut",
@ -162,6 +165,7 @@
"confirmations.logout.confirm": "Ffeɣ",
"confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
"confirmations.logout.title": "Tebɣiḍ ad teffɣeḍ ssya?",
"confirmations.missing_alt_text.secondary": "Suffeɣ akken yebɣu yili",
"confirmations.mute.confirm": "Sgugem",
"confirmations.redraft.confirm": "Kkes sakin ɛiwed tira",
"confirmations.reply.confirm": "Err",
@ -273,7 +277,7 @@
"hashtag.column_settings.tag_toggle": "Glu-d s yihacṭagen imerna i ujgu-agi",
"hashtag.counter_by_accounts": "{count, plural, one {{counter} imtekki} other {{counter} n imtekkiyen}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} assa",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} ass-a",
"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.",
@ -284,10 +288,19 @@
"home.pending_critical_update.body": "Ma ulac aɣilif, leqqem aqeddac-ik Mastodon akken kan tzemreḍ !",
"home.pending_critical_update.link": "Wali ileqman",
"home.show_announcements": "Ssken-d ulɣuyen",
"info_button.label": "Tallelt",
"interaction_modal.action.favourite": "I wakken ad tkemmleḍ, yessefk ad d-tḥemmleḍ seg umiḍan-ik·im.",
"interaction_modal.action.follow": "I wakken ad tkemmleḍ, yessefk ad d-tḍefreḍ seg umiḍan-ik·im.",
"interaction_modal.action.reblog": "I wakken ad tkemmleḍ, yessefk ad d-snernuḍ seg umiḍan-ik·im.",
"interaction_modal.action.reply": "I wakken ad tkemmleḍ, yessefk ad d-terreḍ seg umiḍan-ik·im.",
"interaction_modal.action.vote": "I wakken ad tkemmleḍ, yessefk ad d-tferneḍ seg umiḍan-ik·im.",
"interaction_modal.go": "Ddu",
"interaction_modal.no_account_yet": "Werɛad ur tesɛid amiḍan?",
"interaction_modal.on_another_server": "Deg uqeddac nniḍen",
"interaction_modal.on_this_server": "Deg uqeddac-ayi",
"interaction_modal.title.follow": "Ḍfer {name}",
"interaction_modal.title.reply": "Tiririt i tsuffeɣt n {name}",
"interaction_modal.username_prompt": "Amedya: {example}",
"intervals.full.days": "{number, plural, one {# wass} other {# wussan}}",
"intervals.full.hours": "{number, plural, one {# usarag} other {# yisragen}}",
"intervals.full.minutes": "{number, plural, one {# n tesdat} other {# n tesdatin}}",
@ -436,6 +449,7 @@
"notifications.mark_as_read": "Creḍ meṛṛa alɣuten am wakken ttwaɣran",
"notifications.permission_denied": "D awezɣi ad yili wermad n walɣuten n tnarit axateṛ turagt tettwagdel",
"notifications.policy.drop": "Anef-as",
"notifications.policy.filter": "Sizdeg",
"notifications.policy.filter_new_accounts.hint": "Imiḍanen imaynuten i d-yennulfan deg {days, plural, one {yiwen n wass} other {# n wussan}} yezrin",
"notifications.policy.filter_new_accounts_title": "Imiḍan imaynuten",
"notifications.policy.filter_not_followers_hint": "Ula d wid akked tid i k·m-id-iḍefren, ur wwiḍen ara {days, plural, one {yiwen wass} other {# wussan}}",
@ -485,7 +499,7 @@
"relative_time.just_now": "tura",
"relative_time.minutes": "{number}tis",
"relative_time.seconds": "{number}tas",
"relative_time.today": "assa",
"relative_time.today": "ass-a",
"reply_indicator.cancel": "Sefsex",
"reply_indicator.poll": "Afmiḍi",
"report.block": "Sewḥel",
@ -535,6 +549,7 @@
"search.quick_action.status_search": "Tisuffaɣ mṣadan d {x}",
"search.search_or_paste": "Nadi neɣ senṭeḍ URL",
"search_popout.full_text_search_disabled_message": "Ur yelli ara deg {domain}.",
"search_popout.full_text_search_logged_out_message": "Yella kan mi ara tiliḍ d uqqin.",
"search_popout.language_code": "Tangalt ISO n tutlayt",
"search_popout.options": "Iwellihen n unadi",
"search_popout.quick_actions": "Tigawin tiruradin",
@ -546,6 +561,7 @@
"search_results.no_results": "Ulac igemmaḍ.",
"search_results.see_all": "Wali-ten akk",
"search_results.statuses": "Tisuffaɣ",
"search_results.title": "Igemmaḍ n unadi ɣef \"{q}\"",
"server_banner.active_users": "iseqdacen urmiden",
"server_banner.administered_by": "Yettwadbel sɣur :",
"server_banner.server_stats": "Tidaddanin n uqeddac:",

View File

@ -233,8 +233,46 @@
"confirmations.unfollow.message": "Lí kám確定無愛跟tuè {name}",
"confirmations.unfollow.title": "Kám beh取消跟tuè tsit ê用者?",
"content_warning.hide": "Am-khàm PO文",
"content_warning.show": "Mā tio̍h顯示",
"content_warning.show_more": "其他內容",
"conversation.delete": "Thâi掉會話",
"conversation.mark_as_read": "標做有讀",
"conversation.open": "顯示會話",
"conversation.with": "Kap {names}",
"copy_icon_button.copied": "有khóo-pih kàu tsián貼pang",
"copypaste.copied": "有khóo-pih",
"copypaste.copy_to_clipboard": "Khóo-pih kàu tsián貼pang",
"directory.federated": "Uì知影ê Fediverse",
"directory.local": "Kan-ta uì {domain}",
"directory.new_arrivals": "新來ê",
"directory.recently_active": "最近活動ê",
"disabled_account_banner.account_settings": "口座ê設定",
"disabled_account_banner.text": "Lí ê口座 {disabledAccount} tsit-má hōo lâng停止使用。",
"dismissable_banner.community_timeline": "Tsia sī uì 口座hē tī {domain} ê lâng最近所公開PO ê。",
"dismissable_banner.dismiss": "Mài kā tshah",
"domain_block_modal.block": "封鎖服侍器",
"domain_block_modal.block_account_instead": "改做封鎖 @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Uì tsit ê服侍器來ê通kap lí khah早ê PO交流。",
"embed.preview": "伊e án-ne顯示\n",
"emoji_button.activity": "活動",
"emoji_button.clear": "清掉",
"emoji_button.custom": "自訂ê",
"emoji_button.flags": "旗á",
"emoji_button.food": "Tsia̍h-mi̍h kap 飲料",
"emoji_button.label": "加入繪文字(emoji)",
"emoji_button.nature": "自然",
"emoji_button.not_found": "Tshuē無對應ê emoji",
"emoji_button.objects": "物件",
"emoji_button.people": "Lâng",
"emoji_button.recent": "Tsia̍p用ê",
"emoji_button.search": "Tshiau-tshuē……",
"emoji_button.search_results": "Tshiau-tshuē ê結果",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅行kap地點",
"empty_column.account_hides_collections": "Tsit位用者選擇無愛公開tsit ê資訊",
"empty_column.account_suspended": "口座已經受停止",
"empty_column.account_timeline": "Tsia無PO文",
"empty_column.account_unavailable": "個人資料bē當看",
"notification.favourite_pm": "{name} kah意lí ê私人提起",
"notification.favourite_pm.name_and_others_with_link": "{name} kap<a>{count, plural, other {另外 # ê lâng}}</a>kah意lí ê私人提起",
"search_popout.language_code": "ISO語言代碼",

View File

@ -117,6 +117,8 @@
"compose_form.publish_form": "नयाँ पोस्ट",
"compose_form.reply": "जवाफ दिनुहोस्",
"compose_form.save_changes": "अपडेट गर्नुहोस्",
"confirmation_modal.cancel": "रद्द गर्नुहोस्",
"confirmations.block.confirm": "ब्लक गर्नुहोस्",
"confirmations.delete.message": "के तपाइँ पक्का हुनुहुन्छ कि तपाईं यो पोष्ट मेटाउन चाहनुहुन्छ?",
"confirmations.delete.title": "पोस्ट मेटाउने?",
"confirmations.delete_list.message": "के तपाइँ पक्का हुनुहुन्छ कि तपाईं यो सूची स्थायी रूपमा मेटाउन चाहनुहुन्छ?",
@ -129,7 +131,10 @@
"confirmations.follow_to_list.title": "प्रयोगकर्तालाई फलो गर्ने?",
"confirmations.logout.message": "के तपाइँ पक्का हुनुहुन्छ कि तपाइँ लाई लग आउट गर्न चाहनुहुन्छ?",
"confirmations.logout.title": "लग आउट गर्ने?",
"confirmations.mute.confirm": "म्यूट गर्नुहोस्",
"confirmations.redraft.confirm": "मेटाएर पुन: ड्राफ्ट गर्नुहोस्",
"confirmations.redraft.title": "पोस्ट मेटाएर पुन: ड्राफ्ट गर्ने?",
"confirmations.reply.confirm": "जवाफ दिनुहोस्",
"confirmations.reply.message": "अहिले जवाफ दिनाले तपाईंले हाल लेखिरहनुभएको सन्देश अधिलेखन हुनेछ। के तपाईं अगाडि बढ्न चाहनुहुन्छ?",
"confirmations.reply.title": "पोस्ट अधिलेखन गर्ने?",
"confirmations.unfollow.confirm": "अनफलो गर्नुहोस्",

View File

@ -86,6 +86,13 @@
"alert.unexpected.message": "Det oppstod eit uventa problem.",
"alert.unexpected.title": "Oi sann!",
"alt_text_badge.title": "Alternativ tekst",
"alt_text_modal.add_alt_text": "Legg til alternativ tekst",
"alt_text_modal.add_text_from_image": "Legg til tekst frå biletet",
"alt_text_modal.cancel": "Avbryt",
"alt_text_modal.change_thumbnail": "Endre miniatyrbilete",
"alt_text_modal.describe_for_people_with_hearing_impairments": "Skriv ei skildring for menneske med høyrselsnedsetjingar…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Skriv ei skildring for menneske med synsnedsetjingar…",
"alt_text_modal.done": "Ferdig",
"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",
@ -411,6 +418,8 @@
"ignore_notifications_modal.not_followers_title": "Oversjå varsel frå folk som ikkje fylgjer deg?",
"ignore_notifications_modal.not_following_title": "Oversjå varsel frå folk du ikkje fylgjer?",
"ignore_notifications_modal.private_mentions_title": "Oversjå varsel frå masseutsende private omtaler?",
"info_button.label": "Hjelp",
"info_button.what_is_alt_text": "<h1>Kva er alternativ tekst?</h1> <p>Alternativ eller skildrande tekst gjev ei skildring av biletet for menneske som har synsvanskar, sein nettilkopling eller dei som ser etter ekstra innhald.</p> <p>Du gjer innhaldet ditt meir tilgjengeleg og forståeleg for alle ved å skriva klåre, presise og nøytrale alt-tekstar.</p> <ul> <li>Skriv om viktige element</li> <li>Oppsummer tekst i bilete</li> <li>Skriv vanlege setningar</li> <li>Unngå unyttige opplysingar</li> <li>Legg vekt på hovudpunkta i innhaldsrike visuelle element, som grafar eller kart</li> </ul>",
"interaction_modal.action.favourite": "Du må favorittmerka frå kontoen din for å halda fram.",
"interaction_modal.action.follow": "Du må fylgja frå kontoen din for å halda fram.",
"interaction_modal.action.reblog": "Du må framheva frå kontoen din for å halda fram.",

View File

@ -218,7 +218,10 @@
"confirmations.logout.confirm": "Wyloguj",
"confirmations.logout.message": "Czy na pewno chcesz się wylogować?",
"confirmations.logout.title": "Wylogować?",
"confirmations.missing_alt_text.confirm": "Dodaj tekst alternatywny",
"confirmations.missing_alt_text.message": "Twój wpis zawiera treści graficzne bez opisu pomocniczego. Dodając opis, sprawisz, że będzie on bardziej dostępny dla większej liczby osób.",
"confirmations.missing_alt_text.secondary": "Publikuj mimo to",
"confirmations.missing_alt_text.title": "Dodać tekst alternatywny?",
"confirmations.mute.confirm": "Wycisz",
"confirmations.redraft.confirm": "Usuń i przeredaguj",
"confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Polubienia i podbicia zostaną utracone, a odpowiedzi do oryginalnego wpisu zostaną osierocone.",

View File

@ -86,6 +86,13 @@
"alert.unexpected.message": "Ocorreu um erro inesperado.",
"alert.unexpected.title": "Eita!",
"alt_text_badge.title": "Texto alternativo",
"alt_text_modal.add_alt_text": "Adicione texto alternativo",
"alt_text_modal.add_text_from_image": "Adicione texto da imagem",
"alt_text_modal.cancel": "Cancelar",
"alt_text_modal.change_thumbnail": "Alterar miniatura",
"alt_text_modal.describe_for_people_with_hearing_impairments": "…Descreva isso para pessoas com deficiências auditivas.…",
"alt_text_modal.describe_for_people_with_visual_impairments": "Descreva isso para pessoas com deficiências visuais…",
"alt_text_modal.done": "Feito",
"announcement.announcement": "Comunicados",
"annual_report.summary.archetype.booster": "Caçador legal",
"annual_report.summary.archetype.lurker": "O espreitador",
@ -211,6 +218,10 @@
"confirmations.logout.confirm": "Sair",
"confirmations.logout.message": "Você tem certeza de que deseja sair?",
"confirmations.logout.title": "Sair da sessão?",
"confirmations.missing_alt_text.confirm": "Adicione texto alternativo",
"confirmations.missing_alt_text.message": "Seu post contém mídia sem texto alternativo. Adicionar descrições ajuda a tornar seu conteúdo acessível para mais pessoas.",
"confirmations.missing_alt_text.secondary": "Postar mesmo assim",
"confirmations.missing_alt_text.title": "Adicionar texto alternativo?",
"confirmations.mute.confirm": "Silenciar",
"confirmations.redraft.confirm": "Excluir e rascunhar",
"confirmations.redraft.message": "Você tem certeza de que quer apagar essa postagem e rascunhá-la? Favoritos e impulsos serão perdidos, e respostas à postagem original ficarão órfãs.",
@ -407,6 +418,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não seguem você?",
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que você não segue?",
"ignore_notifications_modal.private_mentions_title": "Ignorar notificações de menções privadas não solicitadas?",
"info_button.label": "Ajuda",
"info_button.what_is_alt_text": "<h1>O que é texto alternativo?</h1><p>O texto alternativo fornece descrições de imagens para pessoas com deficiências visuais, conexões de internet de baixa largura de banda ou aquelas que buscam mais contexto.</p><p>Você pode melhorar a acessibilidade e a compreensão para todos escrevendo texto alternativo claro, conciso e objetivo.</p> <ul> <li>Capture elementos importantes</li> <li>Resuma textos em imagens</li> <li>Use estrutura de frases regular</li> <li>Evite informações redundantes</li> <li>Foque em tendências e descobertas principais em visuais complexos (como diagramas ou mapas)</li> </ul>",
"interaction_modal.action.favourite": "Para continuar, você precisa favoritar na sua conta.",
"interaction_modal.action.follow": "Para continuar, você precisa seguir da sua conta.",
"interaction_modal.action.reblog": "Para continuar, você precisa impulsionar na sua conta.",
@ -457,6 +470,7 @@
"keyboard_shortcuts.toggle_hidden": "expandir/ocultar aviso de conteúdo",
"keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar mídia",
"keyboard_shortcuts.toot": "compor novo toot",
"keyboard_shortcuts.translate": "Para traduzir um post",
"keyboard_shortcuts.unfocus": "desfocar de tudo",
"keyboard_shortcuts.up": "mover para cima",
"lightbox.close": "Fechar",
@ -836,6 +850,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.remove_favourite": "Remover dos favoritos",
"status.replied_in_thread": "Respondido na conversa",
"status.replied_to": "Em resposta a {name}",
"status.reply": "Responder",

View File

@ -207,8 +207,8 @@
"confirmations.delete_list.confirm": "Удалить",
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
"confirmations.delete_list.title": "Удалить список?",
"confirmations.discard_edit_media.confirm": "Отменить",
"confirmations.discard_edit_media.message": "У вас имеются несохранённые изменения превью и описания медиафайла, отменить их?",
"confirmations.discard_edit_media.confirm": "Сбросить",
"confirmations.discard_edit_media.message": "У вас есть несохранённые изменения в описании мультимедиа или предпросмотре, сбросить их?",
"confirmations.edit.confirm": "Редактировать",
"confirmations.edit.message": "При редактировании, текст набираемого поста будет очищен. Продолжить?",
"confirmations.edit.title": "Переписать сообщение?",

View File

@ -736,6 +736,7 @@
"server_banner.is_one_of_many": "{domain} je jeden z mnohých nezávislých Mastodon serverov, ktoré môžeš použiť na zúčastňovanie sa v rámci fediversa.",
"server_banner.server_stats": "Štatistiky servera:",
"sign_in_banner.create_account": "Vytvoriť účet",
"sign_in_banner.mastodon_is": "Mastodon je najlepšia cesta ako udržať krok s tým, čo sa deje.",
"sign_in_banner.sign_in": "Prihlásiť sa",
"sign_in_banner.sso_redirect": "Prihlásenie alebo registrácia",
"status.admin_account": "Moderovať @{name}",

View File

@ -252,7 +252,7 @@
"dismissable_banner.dismiss": "Відхилити",
"dismissable_banner.explore_links": "Ці новини сьогодні найбільше поширюють у fediverse. Свіжіші новини, опубліковані більшою кількістю різних людей, оцінюються вище.",
"dismissable_banner.explore_statuses": "Ці дописи з усього fediverse сьогодні набирають популярності. Новіші дописи з більшою кількістю посилень і додавань у вибрані мають вищий рейтинг.",
"dismissable_banner.explore_tags": "Ці гештеґи сьогодні набувають популярності у fediverse. Гештеґи, якими користується більше людей, займають вищі позиції.",
"dismissable_banner.explore_tags": "Ці хештеги сьогодні набувають популярності у fediverse. Хештеги, якими користується більше людей, займають вищі позиції.",
"dismissable_banner.public_timeline": "Це найновіші загальнодоступні дописи від людей у федіверсі, на яких підписані люди в {domain}.",
"domain_block_modal.block": "Блокувати сервер",
"domain_block_modal.block_account_instead": "Блокувати @{name} натомість",

View File

@ -227,7 +227,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
nil
end
@status.mentions.upsert_all(currently_mentioned_account_ids.map { |id| { account_id: id, silent: false } }, unique_by: %w(status_id account_id))
@status.mentions.upsert_all(currently_mentioned_account_ids.uniq.map { |id| { account_id: id, silent: false } }, unique_by: %w(status_id account_id))
# If previous mentions are no longer contained in the text, convert them
# to silent mentions, since withdrawing access from someone who already

View File

@ -47,10 +47,14 @@ class BlockDomainService < BaseService
def notify_of_severed_relationships!
return if @domain_block_event.nil?
# TODO: check how efficient that query is, also check `push_bulk`/`perform_bulk`
@domain_block_event.affected_local_accounts.reorder(nil).find_each do |account|
event = AccountRelationshipSeveranceEvent.create!(account: account, relationship_severance_event: @domain_block_event)
LocalNotificationWorker.perform_async(account.id, event.id, 'AccountRelationshipSeveranceEvent', 'severed_relationships')
# find_in_batches and perform_bulk both default to batches of 1000
@domain_block_event.affected_local_accounts.reorder(nil).find_in_batches do |accounts|
notification_jobs_args = accounts.map do |account|
event = AccountRelationshipSeveranceEvent.create!(account:, relationship_severance_event: @domain_block_event)
[account.id, event.id, 'AccountRelationshipSeveranceEvent', 'severed_relationships']
end
LocalNotificationWorker.perform_bulk(notification_jobs_args)
end
end

View File

@ -23,6 +23,8 @@ ja:
models:
account:
attributes:
fields:
fields_with_values_missing_labels: プロフィール補足情報にラベルが入力されていないものがあります
username:
invalid: アルファベット・数字・アンダーバーの組み合わせで入力してください
reserved: は予約されています

View File

@ -23,6 +23,8 @@ pt-BR:
models:
account:
attributes:
fields:
fields_with_values_missing_labels: contém valores sem rótulos
username:
invalid: apenas letras, números e underlines ( "_" )
reserved: já existe

View File

@ -88,8 +88,8 @@ kab:
success: Asesṭeb idda akken iwata seg umiḍan %{kind}.
passwords:
no_token: Ur tezmireḍ ara ad tkecmeḍ ɣer usebter-a war ma tusiḍ-d seg imayl n uwennez n wawal uffir. ma syin i d-tusiḍ, wali ma tesqedceḍ tansa URL i d ak·am-d-nuzen.
send_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneγ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaγ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam.
send_paranoid_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneγ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaγ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam.
send_instructions: Ma nufa tansa-inek·inem imayl tella deg uzadur-nneɣ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaɣ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k·m ẓer deg ukaram yespamen.
send_paranoid_instructions: Ma nufa tansa-inek·inem imayl tella deg uzadur-nneɣ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaɣ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k·m ẓer deg ukaram yespamen.
updated: Awal-ik uffir yettwabeddel mebla ugur. Aqla-k tura tjerrḍeḍ.
updated_not_active: Awal-ik uffir yettwabeddel mebla ugur.
registrations:

View File

@ -5,7 +5,7 @@ eo:
contact_missing: Ne elektita
contact_unavailable: Ne disponebla
hosted_on: "%{domain} estas nodo de Mastodon"
title: Pri
title: Prio
accounts:
followers:
one: Sekvanto
@ -41,7 +41,7 @@ eo:
by_domain: Domajno
change_email:
changed_msg: Retpoŝta adreso sukcese ŝanĝita!
current_email: Nuna retadreso
current_email: Aktuala retadreso
label: Ŝanĝi retadreson
new_email: Nova retadreso
submit: Ŝanĝi retadreson
@ -102,7 +102,7 @@ eo:
moderation_notes: Notoj de moderigado
most_recent_activity: Lastaj afiŝoj
most_recent_ip: Lasta IP
no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita
no_account_selected: Neniu konto estis ŝanĝita kial neniu estis selektita
no_limits_imposed: Neniu limito trudita
no_role_assigned: Sen rolo
not_subscribed: Ne abonita
@ -142,7 +142,7 @@ eo:
only_password: Nur pasvorto
password_and_2fa: Pasvorto kaj 2FA
sensitive: Tikla
sensitized: markita tikla
sensitized: Markita kiel tikla
shared_inbox_url: URL de kunhavigita leterkesto
show:
created_reports: Faritaj raportoj
@ -204,7 +204,7 @@ eo:
destroy_unavailable_domain: Forigi Nehaveblan Domajnon
destroy_user_role: Detrui Rolon
disable_2fa_user: Malebligi 2FA
disable_custom_emoji: Malebligi proprajn emoĝiojn
disable_custom_emoji: Malŝalti Proprajn Bildosignojn
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
@ -220,14 +220,14 @@ eo:
remove_avatar_user: Forigi la profilbildon
reopen_report: Remalfermi signalon
resend_user: Resendi konfirman retmesaĝon
reset_password_user: Restarigi pasvorton
reset_password_user: Restarigi Pasvorton
resolve_report: Solvitaj reporto
sensitive_account: Marki tikla la aŭdovidaĵojn de via konto
silence_account: Silentigi konton
suspend_account: Suspendi la konton
silence_account: Silentigi Konton
suspend_account: Suspendi Konton
unassigned_report: Malatribui Raporton
unblock_email_account: Malbloki retpoŝtadreson
unsensitive_account: Malmarku la amaskomunikilojn en via konto kiel sentemaj
unsensitive_account: Malmarki Konton kiel Sentime Tikla
unsilence_account: Malsilentigi konton
unsuspend_account: Malsuspendi la konton
update_announcement: Ĝisdatigi anoncon
@ -235,19 +235,19 @@ eo:
update_domain_block: Ĝigdatigi domajnan blokadon
update_ip_block: Krei IP-regulon
update_report: Ĝisdatigo de Raporto
update_status: Ĝisdatigi afiŝon
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}"
approve_appeal_html: "%{name} aprobis apelacion kontraŭ reguliga decido de %{target}"
approve_user_html: "%{name} aprobis la 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_email_user_html: "%{name} ŝanĝis la 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_canonical_email_block_html: "%{name} blokis retpoŝtadreson per krado %{target}"
create_custom_emoji_html: "%{name} alŝutis novan emoĝion %{target}"
create_custom_emoji_html: "%{name} alŝutis novan bildosignon %{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}"
@ -258,7 +258,7 @@ eo:
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_custom_emoji_html: "%{name} forigis la bildosignon %{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}"
@ -269,11 +269,11 @@ eo:
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_custom_emoji_html: "%{name} malebligis la bildosignon %{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_custom_emoji_html: "%{name} ebligis la bildosignon %{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}"
@ -296,7 +296,7 @@ eo:
unsilence_account_html: "%{name} malfaris limon al konto de %{target}"
unsuspend_account_html: "%{name} malsuspendis la konton de %{target}"
update_announcement_html: "%{name} ĝisdatigis la anoncon %{target}"
update_custom_emoji_html: "%{name} ĝisdatigis la emoĝion %{target}"
update_custom_emoji_html: "%{name} ĝisdatigis la bildosignon %{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}"
@ -309,17 +309,17 @@ eo:
title: Ĵurnalo de revizo
unavailable_instance: "(domajna nomo nedisponebla)"
announcements:
destroyed_msg: Anonco sukcese forigita!
destroyed_msg: La anonco sukcese forigita!
edit:
title: Redakti anoncon
empty: Neniu anonco trovita.
empty: Neniu anonco troviĝas.
live: Publikigita
new:
create: Krei anoncon
title: Nova anonco
publish: Publikigi
published_msg: Anonco sukcese publikigita!
scheduled_for: Planigita je %{time}
scheduled_for: Planigota je %{time}
scheduled_msg: Anonco planigita por publikigo!
title: Anoncoj
unpublish: Malpublikigi
@ -341,7 +341,7 @@ eo:
disabled_msg: Emoĝio sukcese malebligita
emoji: Emoĝio
enable: Ebligi
enabled: Ebligita
enabled: Ŝaltita
enabled_msg: Emoĝio sukcese ebligita
image_hint: PNG aŭ GIF malpli granda ol %{size}
list: Listo
@ -1313,8 +1313,8 @@ eo:
Por uzi la retan aplikaĵon de Mastodon, bonvolu ebligi JavaScript. Alimaniere, provu unu el la
<a href="%{apps_path}">operaciumaj aplikaĵoj</a> por Mastodon por via platformo.
existing_username_validator:
not_found: Ne povas trovi lokaj uzanto kun tiu uzantnomo
not_found_multiple: Ne povas trovi %{usernames}
not_found: ne povas trovi lokaj uzanto kun tiu uzantnomo
not_found_multiple: ne povas trovi %{usernames}
exports:
archive_takeout:
date: Dato
@ -1539,7 +1539,7 @@ eo:
validations:
images_and_video: Aldoni videon al mesaĝo, kiu jam havas bildojn ne eblas
not_found: Dosiero %{ids} ne trovis aŭ jam alteniĝis al alia afiŝo
not_ready: Ne povas aldoni dosieron kiu ne finas procezitis.
not_ready: Ne povas aldoni dosieron kiu ne finis procezitis.
too_many: Aldoni pli ol 4 dosierojn ne eblas
migrations:
acct: Movigita al

View File

@ -436,6 +436,7 @@ kab:
terms_of_service:
draft: Arewway
publish: Asuffeɣ
save_draft: Sekles arewway
title: Tadbelt
trends:
allow: Sireg
@ -489,7 +490,7 @@ kab:
delete_account: Kkes amiḍan
description:
prefix_invited_by_user: "@%{name} inced-ik·ikem ad ternuḍ ɣer uqeddac-a n Mastodon!"
prefix_sign_up: Zeddi di Maṣṭudun assa!
prefix_sign_up: Zeddi di Maṣṭudun ass-a!
suffix: S umiḍan, tzemreḍ ad tḍefreḍ imdanen, ad d-tessufɣeḍ tisuffaɣ d wembadal n yiznan akked yiseqdacen n yal aqeddac Mastodon d wayen-nniḍen!
didnt_get_confirmation: Ur d-teṭṭifeḍ ara aseɣwen n usentem ?
dont_have_your_security_key: Ulac ɣur-k·m tasarut-ik·im n tɣellist?
@ -746,6 +747,7 @@ kab:
electron: Electron
firefox: Firefox
generic: Iminig arusin
huawei_browser: Iminig n Huawei
ie: Internet Explorer
micro_messenger: MicroMessenger
nokia: Iminig Nokia S40 Ovi
@ -754,6 +756,7 @@ kab:
phantom_js: PhantomJS
qq: Iminig QQ
safari: Safari
uc_browser: UC Browser
unknown_browser: Iminig arussin
weibo: Weibo
current_session: Tiɣimit tamirant

View File

@ -937,6 +937,25 @@ pt-BR:
generates:
action: Gerar
chance_to_review_html: "<strong>Os termos de serviço gerado não será publicado automaticamente.</strong>Você terá uma chance de revisar os resultados. Preencha os detalhes necessários para continuar"
explanation_html: O modelo de termos de serviço fornecido é apenas para fins informativos e não deve ser interpretado como aconselhamento jurídico sobre qualquer assunto. Consulte seu próprio advogado para esclarecer sua situação e dúvidas jurídicas específicas.
title: Configuração dos Termos de Serviço
history: Histórico
live: Em vigor
no_history: Ainda não há alterações registradas nos termos de serviço.
no_terms_of_service_html: Atualmente, você não tem nenhum termo de serviço configurado. Os termos de serviço servem para fornecer clareza e protegê-lo de possíveis responsabilidades em disputas com seus usuários.
notified_on_html: Usuários notificados em %{date}
notify_users: Notificar usuários
preview:
explanation_html: 'O e-mail será enviado para <strong>%{display_count} usuários</strong> que se inscreveram antes de %{date}. O seguinte texto será incluído no e-mail:'
send_preview: Enviar pŕevia para %{email}
send_to_all:
one: Enviar %{display_count} email
other: Enviar %{display_count} emails
title: Prévia da notificação dos termos de serviço
publish: Publicar
published_on_html: Publicado em %{date}
save_draft: Salvar rascunho
title: Termos de Serviço
title: Administração
trends:
allow: Permitir
@ -1168,6 +1187,7 @@ pt-BR:
set_new_password: Definir uma nova senha
setup:
email_below_hint_html: Verifique a sua pasta de spam, ou solicite outra. Você pode corrigir o seu endereço de e-mail se estiver errado.
email_settings_hint_html: Clique no link que enviamos para %{email} para começar a usar o Mastodon. Estaremos esperando aqui.
link_not_received: Não recebeu um link?
new_confirmation_instructions_sent: Você receberá um novo e-mail com o link de confirmação em alguns minutos!
title: Verifique sua caixa de entrada
@ -1176,6 +1196,7 @@ pt-BR:
title: Entrar em %{domain}
sign_up:
manual_review: Inscrições no %{domain} passam pela revisão manual dos nossos moderadores. Para nos ajudar a processar o seu cadastro, escreva um pouco sobre você e por que você quer uma conta no %{domain}.
preamble: Com uma conta neste servidor do Mastodon, você poderá seguir qualquer outra pessoa no fediverso, independentemente de onde a conta dela esteja hospedada.
title: Então vamos lá criar uma conta em %{domain}.
status:
account_status: Status da conta
@ -1187,6 +1208,8 @@ pt-BR:
view_strikes: Veja os avisos anteriores em relação à sua conta
too_fast: O formulário foi enviado muito rapidamente, tente novamente.
use_security_key: Usar chave de segurança
user_agreement_html: Eu li e concordo com os <a href="%{terms_of_service_path}" target="_blank">termos de serviço</a> e <a href="%{privacy_policy_path}" target="_blank">política de privacidade</a>.
user_privacy_agreement_html: Eu li e concordo com a <a href="%{privacy_policy_path}" target="_blank">política de privacidade</a>.
author_attribution:
example_title: Texto de amostra
hint_html: Você está escrevendo notícias ou artigos de blogs fora do Mastodon? Controle como você é credenciado quando eles forem compartilhados no Mastodon.
@ -1401,7 +1424,31 @@ pt-BR:
domain_blocking_html:
one: Você está prestes a <strong>substituir seu bloco de lista do domínio</strong> com <strong>%{count} domínio</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>substituir sua lista de bloqueio de domínio</strong> com <strong>domínios%{count}</strong> de <strong>%{filename}</strong>.
following_html:
one: Você está prestes a <strong>seguir</strong> <strong>%{count} contas</strong> de <strong>%{filename}</strong> e <strong>parar de seguir todos os outros</strong>.
other: Você está prestes a <strong>seguir</strong> até <strong>%{count} contas</strong> de <strong>%{filename}</strong> e <strong>deixar de seguir qualquer outra pessoa</strong>.
lists_html:
one: Você está prestes a <strong>substituir suas listas</strong> pelo conteúdo de <strong>%{filename}</strong>. Até <strong>%{count} conta</strong> será adicionada às novas listas.
other: Você está prestes a <strong>substituir suas listas</strong> pelo conteúdo de <strong>%{filename}</strong>. Até <strong>%{count} contas</strong> serão adicionadas às novas listas.
muting_html:
one: Você está prestes a <strong>substituir sua lista de contas silenciadas</strong> por até <strong>%{count} conta</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>substituir sua lista de contas silenciadas</strong> por até <strong>%{count} contas</strong> de <strong>%{filename}</strong>.
preambles:
blocking_html:
one: Você está prestes a <strong>bloquear</strong> até <strong>%{count} conta</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>bloquear</strong> até <strong>%{count} contas</strong> de <strong>%{filename}</strong>.
bookmarks_html:
one: Você está prestes a adicionar até <strong>%{count} post</strong> de <strong>%{filename}</strong> aos seus <strong>favoritos</strong>.
other: Você está prestes a adicionar até <strong>%{count} posts</strong> de <strong>%{filename}</strong> aos seus <strong>favoritos</strong>.
domain_blocking_html:
one: Você está prestes a <strong>bloquear</strong> até <strong>%{count} domínio</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>bloquear</strong> até <strong>%{count} domínios</strong> de <strong>%{filename}</strong>.
following_html:
one: Você está prestes a <strong>seguir</strong> até <strong>%{count} conta</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>seguir</strong> até <strong>%{count} contas</strong> de <strong>%{filename}</strong>.
lists_html:
one: Você está prestes a adicionar até <strong>%{count} conta</strong> a partir de <strong>%{filename}</strong> para suas <strong>listas</strong>. Novas listas serão criadas se não houver uma para a qual adicionar.
other: Você está prestes a adicionar até <strong>%{count} contas</strong> a partir de <strong>%{filename}</strong> para suas <strong>listas</strong>. Novas listas serão criadas se não houver uma para a qual adicionar.
muting_html:
one: Você está prestes a <strong>silenciar</strong> <strong>%{count} conta</strong> de <strong>%{filename}</strong>.
other: Você está prestes a <strong>silenciar</strong> mais de <strong>%{count} contas</strong> de <strong>%{filename}</strong>.
@ -1824,6 +1871,8 @@ pt-BR:
too_late: É tarde demais para solicitar uma revisão desta punição
tags:
does_not_match_previous_name: não corresponde ao nome anterior
terms_of_service:
title: Termos de Serviço
themes:
contrast: Mastodon (Alto contraste)
default: Mastodon (Noturno)
@ -1884,6 +1933,15 @@ pt-BR:
further_actions_html: Se não foi você, recomendamos que você %{action} imediatamente e ative a autenticação de dois fatores para manter sua conta segura.
subject: Sua conta foi acessada a partir de um novo endereço IP
title: Um novo login
terms_of_service_changed:
agreement: Ao continuar a usar %{domain}, você concorda com estes termos. Se discordar dos termos atualizados, poderá encerrar seu acordo com %{domain} a qualquer momento excluindo sua conta.
changelog: 'Em resumo, veja o que essa atualização significa para você:'
description: 'Você está recebendo este e-mail porque estamos fazendo algumas alterações em nossos termos de serviço em %{domain}. Incentivamos você a revisar os termos atualizados na íntegra aqui:'
description_html: Você está recebendo este e-mail porque estamos fazendo algumas alterações em nossos termos de serviço em %{domain}. Incentivamos você a revisar os <a href="%{path}" target="_blank">termos atualizados na íntegra aqui</a>.
sign_off: A equipe do %{domain}
subject: Atualizações dos nossos termos de serviço
subtitle: Os termos de serviço do %{domain} estão mudando.
title: atualização importante
warning:
appeal: Enviar uma revisão
appeal_description: Se você acredita que isso é um erro, você pode enviar uma revisão para a equipe de %{instance}.

View File

@ -56,7 +56,7 @@ eo:
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj)
setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive
setting_default_sensitive: Tiklaj vidaŭdaĵoj estas kaŝitaj implicite, kaj povas esti montritaj per klako
setting_default_sensitive: Tiklaj vidaŭdaĵoj estas implicite kaŝitaj, kaj povas esti montritaj per klako
setting_display_media_default: Kaŝi plurmediojn markitajn kiel tiklaj
setting_display_media_hide_all: Ĉiam kaŝi la vidaŭdaĵojn
setting_display_media_show_all: Ĉiam montri la vidaŭdaĵojn

View File

@ -3,6 +3,7 @@ ja:
simple_form:
hints:
account:
attribution_domains: 1行につき1つずつ入力してください。この設定は関わりのないwebサイトに対して虚偽の帰属表示が行われることを防止する役割があります。
discoverable: プロフィールと公開投稿をMastodonのおすすめやハイライトとしてほかのユーザーに表示することを許可します。
display_name: フルネーム、ハンドルネームなど
fields: ホームページ、代名詞、年齢など何でも構いません。
@ -155,6 +156,7 @@ ja:
url: イベントの送信先
labels:
account:
attribution_domains: あなたの著者表示を許可するwebサイト
discoverable: アカウントを見つけやすくする
fields:
name: ラベル
@ -231,6 +233,7 @@ ja:
setting_display_media_show_all: 表示
setting_expand_spoilers: 閲覧注意としてマークされた投稿を常に展開する
setting_hide_network: 繋がりを隠す
setting_missing_alt_text_modal: 代替テキストなしでメディアを投稿する前に確認ダイアログを表示する
setting_reduce_motion: アニメーションの動きを減らす
setting_system_font_ui: システムのデフォルトフォントを使う
setting_system_scrollbars_ui: システムのデフォルトのスクロールバーを使う

View File

@ -104,6 +104,7 @@ kab:
featured_tag:
name: Ahacṭag
form_admin_settings:
app_icon: Tignit n usnas
custom_css: CSS udmawan
profile_directory: Rmed akaram n imaγnuten
site_contact_email: Imayl n unermas

View File

@ -3,6 +3,7 @@ nn:
simple_form:
hints:
account:
attribution_domains: 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.
@ -155,6 +156,7 @@ nn:
url: Kvar hendingar skal sendast
labels:
account:
attribution_domains: Nettstader som har lov å kreditera deg
discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar
fields:
name: Merkelapp

View File

@ -3,6 +3,7 @@ pt-BR:
simple_form:
hints:
account:
attribution_domains: Um por linha. Protege contra atribuições falsas.
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.
@ -129,8 +130,17 @@ pt-BR:
show_application: Você sempre conseguirá ver qual aplicativo realizou sua publicação independentemente disso.
tag:
name: Você pode mudar a capitalização das letras, por exemplo, para torná-la mais legível
terms_of_service:
changelog: Pode ser estruturado com a sintaxe Markdown.
text: Pode ser estruturado com a sintaxe Markdown.
terms_of_service_generator:
admin_email: Avisos legais incluem contra-notificações, ordens judiciais, solicitações de remoção e solicitações de órgãos de fiscalização.
arbitration_address: Pode ser o mesmo que o endereço físico acima, ou "N/A" se estiver usando e-mail.
arbitration_website: Pode ser um formulário na web, ou "N/A" se estiver usando e-mail.
dmca_address: Para operadores dos EUA, utilize o endereço registrado no Diretório de Agentes Designados pela DMCA. Um endereço de Caixa Postal está disponível mediante solicitação direta; use a Solicitação de Isenção de Caixa Postal de Agente Designado pela DMCA para enviar um e-mail ao Escritório de Direitos Autorais, explicando que você é um moderador de conteúdo que trabalha em casa e teme vingança ou retaliação por suas ações, precisando usar uma Caixa Postal para remover seu endereço residencial da visualização pública.
dmca_email: Pode ser o mesmo e-mail utilizado para "Endereço de e-mail para avisos legais" acima
domain: Identificação única do serviço online que você está fornecendo.
jurisdiction: Liste o país onde quem paga as contas reside. Se for uma empresa ou outra entidade, liste o país onde ela está incorporada, e a cidade, região, território ou estado, conforme apropriado.
user:
chosen_languages: Apenas as publicações dos idiomas selecionados serão exibidas nas linhas públicas
role: A função controla quais permissões o usuário tem.
@ -146,6 +156,7 @@ pt-BR:
url: Aonde os eventos serão enviados
labels:
account:
attribution_domains: Sites autorizados a creditar você.
discoverable: Destacar perfil e publicações nos algoritmos de descoberta
fields:
name: Rótulo
@ -222,6 +233,7 @@ pt-BR:
setting_display_media_show_all: Mostrar tudo
setting_expand_spoilers: Sempre expandir toots com Aviso de Conteúdo
setting_hide_network: Ocultar suas relações
setting_missing_alt_text_modal: Mostrar caixa de diálogo de confirmação antes de postar mídia sem texto alternativo.
setting_reduce_motion: Reduzir animações
setting_system_font_ui: Usar fonte padrão do sistema
setting_system_scrollbars_ui: Usar barra de rolagem padrão do sistema
@ -319,6 +331,17 @@ pt-BR:
name: Hashtag
trendable: Permitir que esta hashtag fique em alta
usable: Permitir que as publicações usem esta hashtag localmente
terms_of_service:
changelog: O que mudou?
text: Termos de Serviço
terms_of_service_generator:
admin_email: Endereço de e-mail para avisos legais.
arbitration_address: Endereço físico para avisos de arbitragem.
arbitration_website: Site para submissão de notificações de arbitragem
dmca_address: Endereço físico para notificações de DMCA/direitos autorais
dmca_email: Endereço de e-mail para notificações de DMCA/direitos autorais
domain: Domínio
jurisdiction: Jurisdicação legal
user:
role: Cargo
time_zone: Fuso horário

View File

@ -246,6 +246,7 @@ sk:
destroy_custom_emoji_html: "%{name} vymazal/a emotikonu %{target}"
destroy_domain_allow_html: "%{name} zakázal/a federáciu s doménou %{target}"
destroy_domain_block_html: "%{name} odblokoval/i doménu %{target}"
destroy_email_domain_block_html: "%{name} odblokoval/a emailovú doménu %{target}"
destroy_ip_block_html: "%{name} vymazal/a pravidlo pre IP %{target}"
destroy_status_html: "%{name} zmazal/a príspevok od %{target}"
destroy_unavailable_domain_html: "%{name} znova spustil/a doručovanie pre doménu %{target}"

View File

@ -59,16 +59,15 @@ RSpec.describe Admin::AccountsController do
let(:account) { Fabricate(:account) }
it 'includes moderation notes' do
note1 = Fabricate(:account_moderation_note, target_account: account)
note2 = Fabricate(:account_moderation_note, target_account: account)
note1 = Fabricate(:account_moderation_note, target_account: account, content: 'Note 1 remarks')
note2 = Fabricate(:account_moderation_note, target_account: account, content: 'Note 2 remarks')
get :show, params: { id: account.id }
expect(response).to have_http_status(200)
moderation_notes = assigns(:moderation_notes).to_a
expect(moderation_notes.size).to be 2
expect(moderation_notes).to eq [note1, note2]
expect(response.body)
.to include(note1.content)
.and include(note2.content)
end
end

View File

@ -3,40 +3,54 @@
require 'rails_helper'
RSpec.describe Admin::BaseController do
render_views
controller do
def success
authorize :dashboard, :index?
render 'admin/reports/show'
render html: '<p>success</p>', layout: true
end
end
it 'requires administrator or moderator' do
routes.draw { get 'success' => 'admin/base#success' }
sign_in(Fabricate(:user))
before { routes.draw { get 'success' => 'admin/base#success' } }
context 'when signed in as regular user' do
before { sign_in Fabricate(:user) }
it 'responds with unauthorized' do
get :success
expect(response).to have_http_status(403)
end
it 'returns private cache control headers' do
routes.draw { get 'success' => 'admin/base#success' }
sign_in(Fabricate(:moderator_user))
get :success
expect(response.headers['Cache-Control']).to include('private, no-store')
end
it 'renders admin layout as a moderator' do
routes.draw { get 'success' => 'admin/base#success' }
sign_in(Fabricate(:moderator_user))
context 'when signed in as moderator' do
before { sign_in Fabricate(:moderator_user) }
it 'returns success with private headers and admin layout' do
get :success
expect(response).to render_template layout: 'admin'
expect(response)
.to have_http_status(200)
expect(response.headers['Cache-Control'])
.to include('private, no-store')
expect(response.parsed_body)
.to have_css('body.admin')
end
end
it 'renders admin layout as an admin' do
routes.draw { get 'success' => 'admin/base#success' }
sign_in(Fabricate(:admin_user))
context 'when signed in as admin' do
before { sign_in Fabricate(:admin_user) }
it 'returns success with private headers and admin layout' do
get :success
expect(response).to render_template layout: 'admin'
expect(response)
.to have_http_status(200)
expect(response.headers['Cache-Control'])
.to include('private, no-store')
expect(response.parsed_body)
.to have_css('body.admin')
end
end
end

View File

@ -49,23 +49,11 @@ RSpec.describe Admin::InstancesController do
expect(response).to have_http_status(200)
instance = assigns(:instance)
expect(instance).to_not be_new_record
expect(response.body)
.to include(I18n.t('admin.instances.totals_time_period_hint_html'))
.and include(I18n.t('accounts.nothing_here'))
expect(Admin::ActionLogFilter).to have_received(:new).with(target_domain: account_popular_main.domain)
action_logs = assigns(:action_logs).to_a
expect(action_logs.size).to eq 0
end
context 'with an unknown domain' do
it 'returns http success' do
get :show, params: { id: 'unknown.example' }
expect(response).to have_http_status(200)
instance = assigns(:instance)
expect(instance).to be_new_record
end
end
end

View File

@ -223,8 +223,8 @@ RSpec.describe Auth::SessionsController do
end
it 'renders two factor authentication page' do
expect(controller).to render_template('two_factor')
expect(controller).to render_template(partial: '_otp_authentication_form')
expect(response.body)
.to include(I18n.t('simple_form.hints.sessions.otp'))
end
end
@ -239,8 +239,8 @@ RSpec.describe Auth::SessionsController do
end
it 'renders two factor authentication page' do
expect(controller).to render_template('two_factor')
expect(controller).to render_template(partial: '_otp_authentication_form')
expect(response.body)
.to include(I18n.t('simple_form.hints.sessions.otp'))
end
end
@ -250,8 +250,8 @@ RSpec.describe Auth::SessionsController do
end
it 'renders two factor authentication page' do
expect(controller).to render_template('two_factor')
expect(controller).to render_template(partial: '_otp_authentication_form')
expect(response.body)
.to include(I18n.t('simple_form.hints.sessions.otp'))
end
end
@ -378,8 +378,8 @@ RSpec.describe Auth::SessionsController do
end
it 'renders webauthn authentication page' do
expect(controller).to render_template('two_factor')
expect(controller).to render_template(partial: '_webauthn_form')
expect(response.body)
.to include(I18n.t('simple_form.title.sessions.webauthn'))
end
end
@ -389,8 +389,8 @@ RSpec.describe Auth::SessionsController do
end
it 'renders webauthn authentication page' do
expect(controller).to render_template('two_factor')
expect(controller).to render_template(partial: '_webauthn_form')
expect(response.body)
.to include(I18n.t('simple_form.title.sessions.webauthn'))
end
end

View File

@ -3,6 +3,8 @@
require 'rails_helper'
RSpec.describe ChallengableConcern do
render_views
controller(ApplicationController) do
include ChallengableConcern # rubocop:disable RSpec/DescribedClass
@ -85,29 +87,35 @@ RSpec.describe ChallengableConcern do
before { get :foo }
it 'renders challenge' do
expect(response).to render_template('auth/challenges/new', layout: :auth)
expect(response.parsed_body)
.to have_title(I18n.t('challenge.prompt'))
end
# See Auth::ChallengesControllerSpec
end
context 'with POST requests' do
before { post :bar }
it 'renders challenge' do
expect(response).to render_template('auth/challenges/new', layout: :auth)
expect(response.parsed_body)
.to have_title(I18n.t('challenge.prompt'))
end
it 'accepts correct password' do
post :bar, params: { form_challenge: { current_password: password } }
expect(response.body).to eq 'bar'
expect(session[:challenge_passed_at]).to_not be_nil
expect(response.body)
.to eq 'bar'
expect(session[:challenge_passed_at])
.to_not be_nil
end
it 'rejects wrong password' do
post :bar, params: { form_challenge: { current_password: 'dddfff888123' } }
expect(response.body).to render_template('auth/challenges/new', layout: :auth)
expect(session[:challenge_passed_at]).to be_nil
expect(response.parsed_body)
.to have_title(I18n.t('challenge.prompt'))
expect(session[:challenge_passed_at])
.to be_nil
end
end
end

View File

@ -1,68 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Settings::FeaturedTagsController do
render_views
context 'when user is not signed in' do
subject { post :create }
it { is_expected.to redirect_to new_user_session_path }
end
context 'when user is signed in' do
let(:user) { Fabricate(:user, password: '12345678') }
before { sign_in user, scope: :user }
describe 'POST #create' do
subject { post :create, params: { featured_tag: params } }
context 'when parameter is valid' do
let(:params) { { name: 'test' } }
it 'creates featured tag' do
expect { subject }.to change { user.account.featured_tags.count }.by(1)
end
end
context 'when parameter is invalid' do
let(:params) { { name: 'test, #foo !bleh' } }
it 'renders new' do
expect(subject).to render_template :index
end
end
end
describe 'GET to #index' do
let(:tag) { Fabricate(:tag) }
before do
status = Fabricate :status, account: user.account
status.tags << tag
end
it 'responds with success' do
get :index
expect(response).to have_http_status(200)
expect(response.body).to include(
settings_featured_tags_path(featured_tag: { name: tag.name })
)
end
end
describe 'DELETE to #destroy' do
let(:featured_tag) { Fabricate(:featured_tag, account: user.account) }
it 'removes the featured tag' do
delete :destroy, params: { id: featured_tag.id }
expect(response).to redirect_to(settings_featured_tags_path)
expect { featured_tag.reload }.to raise_error(ActiveRecord::RecordNotFound)
end
end
end
end

View File

@ -1,67 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Settings::Migration::RedirectsController do
render_views
let!(:user) { Fabricate(:user, password: 'testtest') }
before do
sign_in user, scope: :user
end
describe 'GET #new' do
before do
get :new
end
it 'returns http success with private cache control headers', :aggregate_failures do
expect(response).to have_http_status(200)
expect(response.headers['Cache-Control']).to include('private, no-store')
end
end
describe 'POST #create' do
context 'with valid params' do
before { stub_resolver }
it 'redirects to the settings migration path' do
post :create, params: { form_redirect: { acct: 'new@host.com', current_password: 'testtest' } }
expect(response).to redirect_to(settings_migration_path)
end
end
context 'with non valid params' do
it 'returns success and renders the new page' do
post :create, params: { form_redirect: { acct: '' } }
expect(response).to have_http_status(200)
expect(response).to render_template(:new)
end
end
end
describe 'DELETE #destroy' do
let(:account) { Fabricate(:account) }
before do
user.account.update(moved_to_account_id: account.id)
end
it 'resets the account and sends an update' do
delete :destroy
expect(response).to redirect_to(settings_migration_path)
expect(user.account.reload.moved_to_account).to be_nil
end
end
private
def stub_resolver
resolver = instance_double(ResolveAccountService, call: Fabricate(:account))
allow(ResolveAccountService).to receive(:new).and_return(resolver)
end
end

View File

@ -1,74 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Settings::PrivacyController do
render_views
let!(:user) { Fabricate(:user) }
let(:account) { user.account }
before do
sign_in user, scope: :user
end
describe 'GET #show' do
before do
get :show
end
it 'returns http success with private cache control headers', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and have_attributes(
headers: include(
'Cache-Control' => 'private, no-store'
)
)
end
end
describe 'PUT #update' do
context 'when update succeeds' do
before do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
end
it 'updates the user profile' do
put :update, params: { account: { discoverable: '1', settings: { indexable: '1' } } }
expect(account.reload.discoverable)
.to be(true)
expect(response)
.to redirect_to(settings_privacy_path)
expect(ActivityPub::UpdateDistributionWorker)
.to have_received(:perform_async).with(account.id)
end
end
context 'when update fails' do
before do
allow(UpdateAccountService).to receive(:new).and_return(failing_update_service)
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
end
it 'updates the user profile' do
put :update, params: { account: { discoverable: '1', settings: { indexable: '1' } } }
expect(response)
.to render_template(:show)
expect(ActivityPub::UpdateDistributionWorker)
.to_not have_received(:perform_async)
end
private
def failing_update_service
instance_double(UpdateAccountService, call: false)
end
end
end
end

View File

@ -9,93 +9,6 @@ RSpec.describe StatusesController do
let(:account) { Fabricate(:account) }
let(:status) { Fabricate(:status, account: account) }
context 'when status is public' do
before do
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and render_template(:show)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('public'),
'Link' => include('activity+json')
)
expect(response.body).to include status.text
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and have_cacheable_headers.with_vary('Accept, Accept-Language, Cookie')
expect(response.headers).to include(
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when status is private' do
let(:status) { Fabricate(:status, account: account, visibility: :private) }
before do
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with JSON' do
let(:format) { 'json' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
context 'with HTML' do
let(:format) { 'html' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
end
context 'when status is direct' do
let(:status) { Fabricate(:status, account: account, visibility: :direct) }
before do
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with JSON' do
let(:format) { 'json' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
context 'with HTML' do
let(:format) { 'html' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
end
context 'when signed-in' do
let(:user) { Fabricate(:user) }
@ -275,206 +188,5 @@ RSpec.describe StatusesController do
end
end
end
context 'with signature' do
let(:remote_account) { Fabricate(:account, domain: 'example.com') }
before do
allow(controller).to receive(:signed_request_actor).and_return(remote_account)
end
context 'when account blocks account' do
before do
account.block!(remote_account)
get :show, 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 account domain blocks account' do
before do
account.block_domain!(remote_account.domain)
get :show, 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 :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and render_template(:show)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body).to include status.text
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and have_cacheable_headers.with_vary('Accept, Accept-Language, Cookie')
expect(response.headers).to include(
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when status is private' do
let(:status) { Fabricate(:status, account: account, visibility: :private) }
context 'when user is authorized to see it' do
before do
remote_account.follow!(account)
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and render_template(:show)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body).to include status.text
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully' do
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when user is not authorized to see it' do
before do
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with JSON' do
let(:format) { 'json' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
context 'with HTML' do
let(:format) { 'html' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
end
end
context 'when status is direct' do
let(:status) { Fabricate(:status, account: account, visibility: :direct) }
context 'when user is authorized to see it' do
before do
Fabricate(:mention, account: remote_account, status: status)
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
expect(response)
.to have_http_status(200)
.and render_template(:show)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body).to include status.text
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object', :aggregate_failures do
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when user is not authorized to see it' do
before do
get :show, params: { account_username: status.account.username, id: status.id, format: format }
end
context 'with JSON' do
let(:format) { 'json' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
context 'with HTML' do
let(:format) { 'html' }
it 'returns http not found' do
expect(response).to have_http_status(404)
end
end
end
end
end
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

View File

@ -37,10 +37,16 @@ RSpec.describe ActivityPub::Activity::Create do
content: '@bob lorem ipsum',
published: 1.hour.ago.utc.iso8601,
updated: 1.hour.ago.utc.iso8601,
tag: {
tag: [
{
type: 'Mention',
href: ActivityPub::TagManager.instance.uri_for(follower),
},
{
type: 'Mention',
href: ActivityPub::TagManager.instance.uri_for(follower),
},
],
}
end

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'Admin Instances' do
describe 'GET /admin/instances/:id' do
context 'with an unknown domain' do
before { sign_in Fabricate(:admin_user) }
it 'returns http success' do
get admin_instance_path(id: 'unknown.example')
expect(response)
.to have_http_status(200)
end
end
end
end

View File

@ -2,8 +2,9 @@
require 'rails_helper'
RSpec.describe 'Settings Aliases' do
RSpec.describe 'Settings Featured Tags' do
describe 'POST /settings/featured_tags' do
context 'when signed in' do
before { sign_in Fabricate(:user) }
it 'gracefully handles invalid nested params' do
@ -13,4 +14,11 @@ RSpec.describe 'Settings Aliases' do
.to have_http_status(400)
end
end
context 'when not signed in' do
subject { post settings_featured_tags_path }
it { is_expected.to redirect_to new_user_session_path }
end
end
end

View File

@ -45,6 +45,72 @@ RSpec.describe 'Statuses' do
.to redirect_to(original_status.url)
end
end
context 'when status visibility is public' do
subject { get short_account_status_path(account_username: account.username, id: status.id, format: format) }
let(:status) { Fabricate(:status, account: account, visibility: :public) }
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
.and render_template(:show)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('public'),
'Link' => include('activity+json')
)
expect(response.body)
.to include(status.text)
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
.and have_cacheable_headers.with_vary('Accept, Accept-Language, Cookie')
expect(response.headers).to include(
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when status visibility is private' do
let(:status) { Fabricate(:status, account: account, visibility: :private) }
it 'returns http not found' do
get short_account_status_path(account_username: account.username, id: status.id)
expect(response)
.to have_http_status(404)
end
end
context 'when status visibility is direct' do
let(:status) { Fabricate(:status, account: account, visibility: :direct) }
it 'returns http not found' do
get short_account_status_path(account_username: account.username, id: status.id)
expect(response)
.to have_http_status(404)
end
end
end
context 'when signed in' do
@ -63,5 +129,185 @@ RSpec.describe 'Statuses' do
end
end
end
context 'with "HTTP Signature" access signed by a remote account' do
subject do
get short_account_status_path(account_username: status.account.username, id: status.id, format: format),
headers: nil,
sign_with: remote_account
end
let(:format) { 'html' }
let(:remote_account) { Fabricate(:account, domain: 'host.example') }
context 'when account blocks the remote account' do
before { account.block!(remote_account) }
it 'returns http not found' do
subject
expect(response)
.to have_http_status(404)
end
end
context 'when account domain blocks the domain of the remote account' do
before { account.block_domain!(remote_account.domain) }
it 'returns http not found' do
subject
expect(response)
.to have_http_status(404)
end
end
context 'when status has public visibility' do
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body)
.to include(status.text)
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
.and have_cacheable_headers.with_vary('Accept, Accept-Language, Cookie')
expect(response.headers).to include(
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when status has private visibility' do
let(:status) { Fabricate(:status, account: account, visibility: :private) }
context 'when user is authorized to see it' do
before { remote_account.follow!(account) }
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body)
.to include(status.text)
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object successfully' do
subject
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when user is not authorized to see it' do
it 'returns http not found' do
subject
expect(response)
.to have_http_status(404)
end
end
end
context 'when status is direct' do
let(:status) { Fabricate(:status, account: account, visibility: :direct) }
context 'when user is authorized to see it' do
before { Fabricate(:mention, account: remote_account, status: status) }
context 'with HTML' do
let(:format) { 'html' }
it 'renders status successfully', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Link' => include('activity+json')
)
expect(response.body)
.to include(status.text)
end
end
context 'with JSON' do
let(:format) { 'json' }
it 'renders ActivityPub Note object', :aggregate_failures do
subject
expect(response)
.to have_http_status(200)
expect(response.headers).to include(
'Vary' => 'Accept, Accept-Language, Cookie',
'Cache-Control' => include('private'),
'Content-Type' => include('application/activity+json'),
'Link' => include('activity+json')
)
expect(response.parsed_body)
.to include(content: include(status.text))
end
end
end
context 'when user is not authorized to see it' do
it 'returns http not found' do
subject
expect(response)
.to have_http_status(404)
end
end
end
end
end
end

View File

@ -18,6 +18,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do
tag: [
{ type: 'Hashtag', name: 'hoge' },
{ type: 'Mention', href: ActivityPub::TagManager.instance.uri_for(alice) },
{ type: 'Mention', href: ActivityPub::TagManager.instance.uri_for(alice) },
{ type: 'Mention', href: bogus_mention },
],
}

View File

@ -5,6 +5,7 @@ require 'rails_helper'
RSpec.describe 'finding software updates through the admin interface' do
before do
Fabricate(:software_update, version: '99.99.99', type: 'major', urgent: true, release_notes: 'https://github.com/mastodon/mastodon/releases/v99')
Fabricate(:software_update, version: '3.5.0', type: 'major', urgent: true, release_notes: 'https://github.com/mastodon/mastodon/releases/v3.5.0')
sign_in Fabricate(:owner_user), scope: :user
end
@ -16,6 +17,7 @@ RSpec.describe 'finding software updates through the admin interface' do
expect(page).to have_title(I18n.t('admin.software_updates.title'))
expect(page).to have_content('99.99.99')
.and have_no_content('3.5.0')
click_on I18n.t('admin.software_updates.release_notes')
expect(page).to have_current_path('https://github.com/mastodon/mastodon/releases/v99', url: true)

View File

@ -0,0 +1,42 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'Settings Featured Tags' do
let(:user) { Fabricate(:user) }
before { sign_in(user) }
describe 'Managing tags' do
let(:tag) { Fabricate(:tag) }
let(:status) { Fabricate :status, account: user.account }
before { status.tags << tag }
it 'Views, adds, and removes featured tags' do
visit settings_featured_tags_path
# Link to existing tag used on a status
expect(page.body)
.to include(
settings_featured_tags_path(featured_tag: { name: tag.name })
)
# Invalid entry
fill_in 'featured_tag_name', with: 'test, #foo !bleh'
expect { click_on I18n.t('featured_tags.add_new') }
.to_not change(user.account.featured_tags, :count)
# Valid entry
fill_in 'featured_tag_name', with: '#friends'
expect { click_on I18n.t('featured_tags.add_new') }
.to change(user.account.featured_tags, :count).by(1)
# Delete the created entry
expect { click_on I18n.t('filters.index.delete') }
.to change(user.account.featured_tags, :count).by(-1)
expect(page)
.to have_title(I18n.t('settings.featured_tags'))
end
end
end

View File

@ -0,0 +1,42 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'Settings Migration Redirects' do
let!(:user) { Fabricate(:user, password: 'testtest') }
before { sign_in(user) }
describe 'Managing redirects' do
before { stub_resolver }
it 'creates and destroys redirects' do
visit new_settings_migration_redirect_path
expect(page)
.to have_title(I18n.t('settings.migrate'))
# Empty form invalid submission
expect { click_on I18n.t('migrations.set_redirect') }
.to_not(change { user.account.moved_to_account_id }.from(nil))
# Valid form submission
fill_in 'form_redirect_acct', with: 'new@example.host'
fill_in 'form_redirect_current_password', with: 'testtest'
expect { click_on I18n.t('migrations.set_redirect') }
.to(change { user.reload.account.moved_to_account_id }.from(nil))
# Delete the account move
expect { click_on I18n.t('migrations.cancel') }
.to(change { user.reload.account.moved_to_account_id }.to(nil))
expect(page)
.to have_content(I18n.t('migrations.cancelled_msg'))
end
private
def stub_resolver
resolver = instance_double(ResolveAccountService, call: Fabricate(:account))
allow(ResolveAccountService).to receive(:new).and_return(resolver)
end
end
end

View File

@ -0,0 +1,67 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'Settings Privacy' do
let!(:user) { Fabricate(:user) }
before { sign_in(user) }
describe 'Managing privacy settings' do
before { user.account.update(discoverable: false) }
context 'with a successful update' do
before { allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) }
it 'updates user profile information' do
# View settings page
visit settings_privacy_path
expect(page)
.to have_content(I18n.t('privacy.title'))
.and have_private_cache_control
# Fill out form and submit
check 'account_discoverable'
check 'account_indexable'
expect { click_on submit_button }
.to change { user.account.reload.discoverable }.to(true)
expect(page)
.to have_content(I18n.t('privacy.title'))
.and have_content(I18n.t('generic.changes_saved_msg'))
expect(ActivityPub::UpdateDistributionWorker)
.to have_received(:perform_async).with(user.account.id)
end
end
context 'with a failed update' do
before do
allow(UpdateAccountService).to receive(:new).and_return(failing_update_service)
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
end
it 'updates user profile information' do
# View settings page
visit settings_privacy_path
expect(page)
.to have_content(I18n.t('privacy.title'))
.and have_private_cache_control
# Fill out form and submit
check 'account_discoverable'
check 'account_indexable'
expect { click_on submit_button }
.to_not(change { user.account.reload.discoverable })
expect(page)
.to have_content(I18n.t('privacy.title'))
expect(ActivityPub::UpdateDistributionWorker)
.to_not have_received(:perform_async)
end
private
def failing_update_service
instance_double(UpdateAccountService, call: false)
end
end
end
end

400
yarn.lock
View File

@ -55,7 +55,7 @@ __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, @babel/code-frame@npm:^7.26.2":
"@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.26.2":
version: 7.26.2
resolution: "@babel/code-frame@npm:7.26.2"
dependencies:
@ -66,46 +66,47 @@ __metadata:
languageName: node
linkType: hard
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.5":
version: 7.26.5
resolution: "@babel/compat-data@npm:7.26.5"
checksum: 10c0/9d2b41f0948c3dfc5de44d9f789d2208c2ea1fd7eb896dfbb297fe955e696728d6f363c600cd211e7f58ccbc2d834fe516bb1e4cf883bbabed8a32b038afc1a0
"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.5, @babel/compat-data@npm:^7.26.8":
version: 7.26.8
resolution: "@babel/compat-data@npm:7.26.8"
checksum: 10c0/66408a0388c3457fff1c2f6c3a061278dd7b3d2f0455ea29bb7b187fa52c60ae8b4054b3c0a184e21e45f0eaac63cf390737bc7504d1f4a088a6e7f652c068ca
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.26.7
resolution: "@babel/core@npm:7.26.7"
version: 7.26.8
resolution: "@babel/core@npm:7.26.8"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.5"
"@babel/generator": "npm:^7.26.8"
"@babel/helper-compilation-targets": "npm:^7.26.5"
"@babel/helper-module-transforms": "npm:^7.26.0"
"@babel/helpers": "npm:^7.26.7"
"@babel/parser": "npm:^7.26.7"
"@babel/template": "npm:^7.25.9"
"@babel/traverse": "npm:^7.26.7"
"@babel/types": "npm:^7.26.7"
"@babel/parser": "npm:^7.26.8"
"@babel/template": "npm:^7.26.8"
"@babel/traverse": "npm:^7.26.8"
"@babel/types": "npm:^7.26.8"
"@types/gensync": "npm:^1.0.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/fbd2cd9fc23280bdcaca556e558f715c0a42d940b9913c52582e8e3d24e391d269cb8a9cd6589172593983569021c379e28bba6b19ea2ee08674f6068c210a9d
checksum: 10c0/fafbd083ed3f79973ae2a11a69eee3f13b3226a1d4907abc2c6f2fea21adf4a7c20e00fe0eaa33f44a3666eeaf414edb07460ec031d478ee5f6088eb38b2a011
languageName: node
linkType: hard
"@babel/generator@npm:^7.26.5, @babel/generator@npm:^7.7.2":
version: 7.26.5
resolution: "@babel/generator@npm:7.26.5"
"@babel/generator@npm:^7.26.8, @babel/generator@npm:^7.7.2":
version: 7.26.8
resolution: "@babel/generator@npm:7.26.8"
dependencies:
"@babel/parser": "npm:^7.26.5"
"@babel/types": "npm:^7.26.5"
"@babel/parser": "npm:^7.26.8"
"@babel/types": "npm:^7.26.8"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0
checksum: 10c0/9467f197d285ac315d1fa419138d36a3bfd69ca4baf763e914acab12f5f38e5d231497f6528e80613b28e73bb28c66fcc50b250b1f277b1a4d38ac14b03e9674
languageName: node
linkType: hard
@ -171,9 +172,9 @@ __metadata:
languageName: node
linkType: hard
"@babel/helper-define-polyfill-provider@npm:^0.6.1, @babel/helper-define-polyfill-provider@npm:^0.6.2":
version: 0.6.2
resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2"
"@babel/helper-define-polyfill-provider@npm:^0.6.1, @babel/helper-define-polyfill-provider@npm:^0.6.2, @babel/helper-define-polyfill-provider@npm:^0.6.3":
version: 0.6.3
resolution: "@babel/helper-define-polyfill-provider@npm:0.6.3"
dependencies:
"@babel/helper-compilation-targets": "npm:^7.22.6"
"@babel/helper-plugin-utils": "npm:^7.22.5"
@ -182,7 +183,7 @@ __metadata:
resolve: "npm:^1.14.2"
peerDependencies:
"@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0
checksum: 10c0/f777fe0ee1e467fdaaac059c39ed203bdc94ef2465fb873316e9e1acfc511a276263724b061e3b0af2f6d7ad3ff174f2bb368fde236a860e0f650fda43d7e022
checksum: 10c0/4320e3527645e98b6a0d5626fef815680e3b2b03ec36045de5e909b0f01546ab3674e96f50bf3bc8413f8c9037e5ee1a5f560ebdf8210426dad1c2c03c96184a
languageName: node
linkType: hard
@ -313,14 +314,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.9, @babel/parser@npm:^7.26.5, @babel/parser@npm:^7.26.7":
version: 7.26.7
resolution: "@babel/parser@npm:7.26.7"
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.8":
version: 7.26.8
resolution: "@babel/parser@npm:7.26.8"
dependencies:
"@babel/types": "npm:^7.26.7"
"@babel/types": "npm:^7.26.8"
bin:
parser: ./bin/babel-parser.js
checksum: 10c0/dcb08a4f2878ece33caffefe43b71488d753324bae7ca58d64bca3bc4af34dcfa1b58abdf9972516d76af760fceb25bb9294ca33461d56b31c5059ccfe32001f
checksum: 10c0/da04f26bae732a5b6790775a736b58c7876c28e62203c5097f043fd7273ef6debe5bfd7a4e670a6819f4549b215c7b9762c6358e44797b3c4d733defc8290781
languageName: node
linkType: hard
@ -591,16 +592,16 @@ __metadata:
languageName: node
linkType: hard
"@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"
"@babel/plugin-transform-async-generator-functions@npm:^7.26.8":
version: 7.26.8
resolution: "@babel/plugin-transform-async-generator-functions@npm:7.26.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.26.5"
"@babel/helper-remap-async-to-generator": "npm:^7.25.9"
"@babel/traverse": "npm:^7.25.9"
"@babel/traverse": "npm:^7.26.8"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10c0/e3fcb9fc3d6ab6cbd4fcd956b48c17b5e92fe177553df266ffcd2b2c1f2f758b893e51b638e77ed867941e0436487d2b8b505908d615c41799241699b520dec6
checksum: 10c0/f6fefce963fe2e6268dde1958975d7adbce65fba94ca6f4bc554c90da03104ad1dd2e66d03bc0462da46868498428646e30b03a218ef0e5a84bfc87a7e375cec
languageName: node
linkType: hard
@ -1137,18 +1138,18 @@ __metadata:
linkType: hard
"@babel/plugin-transform-runtime@npm:^7.22.4":
version: 7.25.9
resolution: "@babel/plugin-transform-runtime@npm:7.25.9"
version: 7.26.8
resolution: "@babel/plugin-transform-runtime@npm:7.26.8"
dependencies:
"@babel/helper-module-imports": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.26.5"
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/888a4998ba0a2313de347954c9a8dfeccbff0633c69d33aee385b8878eba2b429dbfb00c3cc04f6bca454b9be8afa01ebbd73defb7fbbb6e2d3086205c07758b
checksum: 10c0/e206206fee262d2200763e6c427b27ca8a7a40a967dfe52f984f07a225952be0990fcce0acae6cee63fe92f5cadc94bb336fae2f3d687f0f2fcd2dadaf33029a
languageName: node
linkType: hard
@ -1186,14 +1187,14 @@ __metadata:
languageName: node
linkType: hard
"@babel/plugin-transform-template-literals@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/plugin-transform-template-literals@npm:7.25.9"
"@babel/plugin-transform-template-literals@npm:^7.26.8":
version: 7.26.8
resolution: "@babel/plugin-transform-template-literals@npm:7.26.8"
dependencies:
"@babel/helper-plugin-utils": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.26.5"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10c0/5144da6036807bbd4e9d2a8b92ae67a759543929f34f4db9b463448a77298f4a40bf1e92e582db208fe08ee116224806a3bd0bed75d9da404fc2c0af9e6da540
checksum: 10c0/205a938ded9554857a604416d369023a961334b6c20943bd861b45f0e5dbbeca1cf6fda1c2049126e38a0d18865993433fdc78eae3028e94836b3b643c08ba0d
languageName: node
linkType: hard
@ -1271,10 +1272,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.26.7
resolution: "@babel/preset-env@npm:7.26.7"
version: 7.26.8
resolution: "@babel/preset-env@npm:7.26.8"
dependencies:
"@babel/compat-data": "npm:^7.26.5"
"@babel/compat-data": "npm:^7.26.8"
"@babel/helper-compilation-targets": "npm:^7.26.5"
"@babel/helper-plugin-utils": "npm:^7.26.5"
"@babel/helper-validator-option": "npm:^7.25.9"
@ -1288,7 +1289,7 @@ __metadata:
"@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"
"@babel/plugin-transform-async-generator-functions": "npm:^7.26.8"
"@babel/plugin-transform-async-to-generator": "npm:^7.25.9"
"@babel/plugin-transform-block-scoped-functions": "npm:^7.26.5"
"@babel/plugin-transform-block-scoping": "npm:^7.25.9"
@ -1331,7 +1332,7 @@ __metadata:
"@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-template-literals": "npm:^7.26.8"
"@babel/plugin-transform-typeof-symbol": "npm:^7.26.7"
"@babel/plugin-transform-unicode-escapes": "npm:^7.25.9"
"@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9"
@ -1339,13 +1340,13 @@ __metadata:
"@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"
babel-plugin-polyfill-corejs3: "npm:^0.11.0"
babel-plugin-polyfill-regenerator: "npm:^0.6.1"
core-js-compat: "npm:^3.38.1"
core-js-compat: "npm:^3.40.0"
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
checksum: 10c0/77d2e46a4f133768c5c8a6b3fec49a7c85c6baec601991e63458921e889ff93911f447723c3a99a6a471ca654ea6dc2aaa7ed690f3e518ee80cea7820ab80ce3
checksum: 10c0/314ab8c6173d1f14e40cf22e1e646c429acfd45195e2ddbadca81956aa2a670e37e4446658db65f1a669f82ef115a4a018f78448bc10789cacdaf4e995680db5
languageName: node
linkType: hard
@ -1411,39 +1412,39 @@ __metadata:
languageName: node
linkType: hard
"@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.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.9, @babel/traverse@npm:^7.26.7":
version: 7.26.7
resolution: "@babel/traverse@npm:7.26.7"
"@babel/template@npm:^7.25.9, @babel/template@npm:^7.26.8, @babel/template@npm:^7.3.3":
version: 7.26.8
resolution: "@babel/template@npm:7.26.8"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.5"
"@babel/parser": "npm:^7.26.7"
"@babel/template": "npm:^7.25.9"
"@babel/types": "npm:^7.26.7"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
checksum: 10c0/b23a36ce40d2e4970741431c45d4f92e3f4c2895c0a421456516b2729bd9e17278846e01ee3d9039b0adf5fc5a071768061c17fcad040e74a5c3e39517449d5b
"@babel/parser": "npm:^7.26.8"
"@babel/types": "npm:^7.26.8"
checksum: 10c0/90bc1085cbc090cbdd43af7b9dbb98e6bda96e55e0f565f17ebb8e97c2dfce866dc727ca02b8e08bd2662ba4fd3851907ba3c48618162c291221af17fb258213
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.26.5, @babel/types@npm:^7.26.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
version: 7.26.7
resolution: "@babel/types@npm:7.26.7"
"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.8":
version: 7.26.8
resolution: "@babel/traverse@npm:7.26.8"
dependencies:
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.8"
"@babel/parser": "npm:^7.26.8"
"@babel/template": "npm:^7.26.8"
"@babel/types": "npm:^7.26.8"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
checksum: 10c0/0771d1ce0351628ad2e8dac56f0d59f706eb125c83fbcc039bde83088ba0a1477244ad5fb060802f90366cc4d7fa871e5009a292aef6205bcf83f2e01d1a0a5d
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.26.7, @babel/types@npm:^7.26.8, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
version: 7.26.8
resolution: "@babel/types@npm:7.26.8"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
checksum: 10c0/7810a2bca97b13c253f07a0863a628d33dbe76ee3c163367f24be93bfaf4c8c0a325f73208abaaa050a6b36059efc2950c2e4b71fb109c0f07fa62221d8473d4
checksum: 10c0/cd41ea47bb3d7baf2b3bf5e70e9c3a16f2eab699fab8575b2b31a7b1cb64166eb52c97124313863dde0581747bfc7a1810c838ad60b5b7ad1897d8004c7b95a9
languageName: node
linkType: hard
@ -2258,15 +2259,15 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ecma402-abstract@npm:2.3.2":
version: 2.3.2
resolution: "@formatjs/ecma402-abstract@npm:2.3.2"
"@formatjs/ecma402-abstract@npm:2.3.3":
version: 2.3.3
resolution: "@formatjs/ecma402-abstract@npm:2.3.3"
dependencies:
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/intl-localematcher": "npm:0.5.10"
"@formatjs/intl-localematcher": "npm:0.6.0"
decimal.js: "npm:10"
tslib: "npm:2"
checksum: 10c0/364e9e7de974fed976e0e8142a0f888ee0af4a11a61899115e5761ed933e7c1f16379b7b54a01524fd3c5d58bf08b71308237ea969cd54889eaf7bb2d30ec776
checksum: 10c0/63de990c380a1800bc54d97c4aa13a88a92e73b1680f0f561d03f9bf3e23289b7aafd1a92037527c285bd587a44e20504258ac2cbd4564a4138ce2b4612c1495
languageName: node
linkType: hard
@ -2288,14 +2289,14 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/icu-messageformat-parser@npm:2.11.0":
version: 2.11.0
resolution: "@formatjs/icu-messageformat-parser@npm:2.11.0"
"@formatjs/icu-messageformat-parser@npm:2.11.1":
version: 2.11.1
resolution: "@formatjs/icu-messageformat-parser@npm:2.11.1"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/icu-skeleton-parser": "npm:1.8.12"
"@formatjs/ecma402-abstract": "npm:2.3.3"
"@formatjs/icu-skeleton-parser": "npm:1.8.13"
tslib: "npm:2"
checksum: 10c0/9ad43847cb4a5c13895af606c634dcf2ec034d484cbbce6566746b60920643f33cbc5e2e3fd1efe21bcfdb555e1ee527e4518768001c3b36bf2e76c171e4049f
checksum: 10c0/2e4106d564ede73cc52c97fc4270002f2460c3ded10715a095ec6765c48f951b1e9744cc55679abe046e24e4e22c345e738f7477c43d440d1d10a0235b12df37
languageName: node
linkType: hard
@ -2310,13 +2311,13 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/icu-skeleton-parser@npm:1.8.12":
version: 1.8.12
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.12"
"@formatjs/icu-skeleton-parser@npm:1.8.13":
version: 1.8.13
resolution: "@formatjs/icu-skeleton-parser@npm:1.8.13"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/ecma402-abstract": "npm:2.3.3"
tslib: "npm:2"
checksum: 10c0/03e743aa09acb2137e37d03b98578fcbbc949d056b8c151763778e885d04d621e69c82f7656547f0532351d2a987bffac0a8c4c3d81186f47a28047ba64385e2
checksum: 10c0/eddea5b7c43745d05178211b25641319e054747e40b42ffaa93ae9940fd42e6f5654d12d42e6998b91b4de4b67a24e3ed779a37394262ec1dd46e693c166729a
languageName: node
linkType: hard
@ -2330,15 +2331,6 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-localematcher@npm:0.5.10":
version: 0.5.10
resolution: "@formatjs/intl-localematcher@npm:0.5.10"
dependencies:
tslib: "npm:2"
checksum: 10c0/362ec83aca9382165be575f1cefa477478339e6fead8ca8866185ce6e58427ea1487a811b12c73d1bcfa99fd4db0c24543b35c823451839f585576bfccb8c9cc
languageName: node
linkType: hard
"@formatjs/intl-localematcher@npm:0.5.5":
version: 0.5.5
resolution: "@formatjs/intl-localematcher@npm:0.5.5"
@ -2348,33 +2340,42 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/intl-pluralrules@npm:^5.2.2":
version: 5.4.2
resolution: "@formatjs/intl-pluralrules@npm:5.4.2"
"@formatjs/intl-localematcher@npm:0.6.0":
version: 0.6.0
resolution: "@formatjs/intl-localematcher@npm:0.6.0"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/intl-localematcher": "npm:0.5.10"
decimal.js: "npm:10"
tslib: "npm:2"
checksum: 10c0/0ecb9da19084d7a15e636362c206c7ee14297ad365e3e63ea53c82c8442d02cd4dcf8a0da65af9b0f835b32f0e8c3d43407d6ee0a0d7974c3044c92574b49686
checksum: 10c0/90238e633426ff7237ab2bbe017be044fb2fb185a8d59a0652096ddab9cb1ddf64106d58fafd711ea19c4d3455bd966516ab93574ac3b169d9af2325875fae59
languageName: node
linkType: hard
"@formatjs/intl@npm:3.1.3":
version: 3.1.3
resolution: "@formatjs/intl@npm:3.1.3"
"@formatjs/intl-pluralrules@npm:^5.2.2":
version: 5.4.3
resolution: "@formatjs/intl-pluralrules@npm:5.4.3"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/ecma402-abstract": "npm:2.3.3"
"@formatjs/intl-localematcher": "npm:0.6.0"
decimal.js: "npm:10"
tslib: "npm:2"
checksum: 10c0/ffebb0fa56e0a8452a5e948a0ae38902daa138fc5c7638732697fb1648d8fb4d42883dbff7531e09468a498a85ef9cb4f443f916544a683f8d4c18d2fca8b69a
languageName: node
linkType: hard
"@formatjs/intl@npm:3.1.4":
version: 3.1.4
resolution: "@formatjs/intl@npm:3.1.4"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.3"
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
intl-messageformat: "npm:10.7.14"
"@formatjs/icu-messageformat-parser": "npm:2.11.1"
intl-messageformat: "npm:10.7.15"
tslib: "npm:2"
peerDependencies:
typescript: 5
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/1f9fce896b69dd3ff84221d2d18fbd57f8968c1d0691e44d33ac949d3d6f4e86f9c3075e4da870fb0b189d4952ec5e8bc7375558fa85c37bcb76a73aeb6f9f52
checksum: 10c0/c05828cf510b3e7930e7d334662142d4bbe603eb8b1bcb2eb5bc81856501c8ae62c89d43f6c54c9605d2a538fc8b361822880e5d92cea621c95e8d1915f870c5
languageName: node
linkType: hard
@ -2398,11 +2399,11 @@ __metadata:
languageName: node
linkType: hard
"@formatjs/ts-transformer@npm:3.13.31":
version: 3.13.31
resolution: "@formatjs/ts-transformer@npm:3.13.31"
"@formatjs/ts-transformer@npm:3.13.32":
version: 3.13.32
resolution: "@formatjs/ts-transformer@npm:3.13.32"
dependencies:
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
"@formatjs/icu-messageformat-parser": "npm:2.11.1"
"@types/json-stable-stringify": "npm:1"
"@types/node": "npm:14 || 16 || 17 || 18 || 20 || 22"
chalk: "npm:4"
@ -2414,7 +2415,7 @@ __metadata:
peerDependenciesMeta:
ts-jest:
optional: true
checksum: 10c0/bfd7a41203c2b1691d883b3c306f3ae413b94c4875dec75df2be0e62da22625f673e41ecdc3257be40fe4a5b22a311365c2462d00a98f9bac59f00488543add0
checksum: 10c0/f51102e5427f9e22ed8dd4094e0347fa7bf96b99a97c5b48eb23bb11cd319f653c829073040884d0c6381136e227a1d0d2b7b2ac3ec0dba6ed9e26f454b61254
languageName: node
linkType: hard
@ -3776,6 +3777,13 @@ __metadata:
languageName: node
linkType: hard
"@types/gensync@npm:^1.0.0":
version: 1.0.4
resolution: "@types/gensync@npm:1.0.4"
checksum: 10c0/1daeb1693196a85ee68b82f3fb30906a1cccede69d492b190de80ff20cec2d528d98cad866d733fd83cb171096dfe8c26c9c02c50ffb93e1113d48bd79daa556
languageName: node
linkType: hard
"@types/glob@npm:^7.1.1":
version: 7.2.0
resolution: "@types/glob@npm:7.2.0"
@ -5310,21 +5318,21 @@ __metadata:
linkType: hard
"babel-plugin-formatjs@npm:^10.5.1":
version: 10.5.34
resolution: "babel-plugin-formatjs@npm:10.5.34"
version: 10.5.35
resolution: "babel-plugin-formatjs@npm:10.5.35"
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.11.0"
"@formatjs/ts-transformer": "npm:3.13.31"
"@formatjs/icu-messageformat-parser": "npm:2.11.1"
"@formatjs/ts-transformer": "npm:3.13.32"
"@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/6e6c67db41044427a7f182e7c18a8519e5aca96645de094244b332cb8c82ed498c56a4634e4e4ed1a4ef85c8e996669ef5bddd63ee9c45d6e512cbbf782af2a2
checksum: 10c0/2b47105f5e5b894c921fd60bafbe78d1286eec7aae499892dbc95dbd043dd38c8fe49ba28f1529321c3fea263d1fcfe8b5803116288c5bbffb35c123fc3fc2e5
languageName: node
linkType: hard
@ -5415,6 +5423,18 @@ __metadata:
languageName: node
linkType: hard
"babel-plugin-polyfill-corejs3@npm:^0.11.0":
version: 0.11.1
resolution: "babel-plugin-polyfill-corejs3@npm:0.11.1"
dependencies:
"@babel/helper-define-polyfill-provider": "npm:^0.6.3"
core-js-compat: "npm:^3.40.0"
peerDependencies:
"@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0
checksum: 10c0/025f754b6296d84b20200aff63a3c1acdd85e8c621781f2bd27fe2512d0060526192d02329326947c6b29c27cf475fbcfaaff8c51eab1d2bfc7b79086bb64229
languageName: node
linkType: hard
"babel-plugin-polyfill-regenerator@npm:^0.6.1":
version: 0.6.1
resolution: "babel-plugin-polyfill-regenerator@npm:0.6.1"
@ -5754,17 +5774,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, browserslist@npm:^4.24.0":
version: 4.24.0
resolution: "browserslist@npm:4.24.0"
"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, browserslist@npm:^4.24.3":
version: 4.24.4
resolution: "browserslist@npm:4.24.4"
dependencies:
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"
caniuse-lite: "npm:^1.0.30001688"
electron-to-chromium: "npm:^1.5.73"
node-releases: "npm:^2.0.19"
update-browserslist-db: "npm:^1.1.1"
bin:
browserslist: cli.js
checksum: 10c0/95e76ad522753c4c470427f6e3c8a4bb5478ff448841e22b3d3e53f89ecaf17b6984666d6c7e715c370f1e7fa0cf684f42e34e554236a8b2fab38ea76b9e4c52
checksum: 10c0/db7ebc1733cf471e0b490b4f47e3e2ea2947ce417192c9246644e92c667dd56a71406cc58f62ca7587caf828364892e9952904a02b7aead752bc65b62a37cfe9
languageName: node
linkType: hard
@ -5956,10 +5976,10 @@ __metadata:
languageName: node
linkType: hard
"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
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001688":
version: 1.0.30001699
resolution: "caniuse-lite@npm:1.0.30001699"
checksum: 10c0/e87b3a0602c3124131f6a21f1eb262378e17a2ee3089e3c472ac8b9caa85cf7d6a219655379302c29c6f10a74051f2a712639d7f98ee0444c73fefcbaf25d519
languageName: node
linkType: hard
@ -6462,12 +6482,12 @@ __metadata:
languageName: node
linkType: hard
"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"
"core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.40.0":
version: 3.40.0
resolution: "core-js-compat@npm:3.40.0"
dependencies:
browserslist: "npm:^4.23.3"
checksum: 10c0/d8bc8a35591fc5fbf3e376d793f298ec41eb452619c7ef9de4ea59b74be06e9fda799e0dcbf9ba59880dae87e3b41fb191d744ffc988315642a1272bb9442b31
browserslist: "npm:^4.24.3"
checksum: 10c0/44f6e88726fe266a5be9581a79766800478a8d5c492885f2d4c2a4e2babd9b06bc1689d5340d3a61ae7332f990aff2e83b6203ff8773137a627cfedfbeefabeb
languageName: node
linkType: hard
@ -7518,10 +7538,10 @@ __metadata:
languageName: node
linkType: hard
"electron-to-chromium@npm:^1.5.28":
version: 1.5.31
resolution: "electron-to-chromium@npm:1.5.31"
checksum: 10c0/e8aecd88c4c6d50a9d459b4b222865b855bab8f1b52e82913804e18b7884f2887bd76c61b3aa08c2ccbdcda098dd8486443f75bf770f0138f21dd9e63548fca7
"electron-to-chromium@npm:^1.5.73":
version: 1.5.96
resolution: "electron-to-chromium@npm:1.5.96"
checksum: 10c0/827d480f35abe8b0d01a4311fc3180089a406edfcd016d8433712b03ec6e56618ad6f9757e35403092de5c2e163372f9ec90eb8e8334f6f26119a21b568d9bf9
languageName: node
linkType: hard
@ -7858,10 +7878,10 @@ __metadata:
languageName: node
linkType: hard
"escalade@npm:^3.1.1, escalade@npm:^3.1.2":
version: 3.1.2
resolution: "escalade@npm:3.1.2"
checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287
"escalade@npm:^3.1.1, escalade@npm:^3.2.0":
version: 3.2.0
resolution: "escalade@npm:3.2.0"
checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65
languageName: node
linkType: hard
@ -9864,15 +9884,15 @@ __metadata:
languageName: node
linkType: hard
"intl-messageformat@npm:10.7.14, intl-messageformat@npm:^10.3.5":
version: 10.7.14
resolution: "intl-messageformat@npm:10.7.14"
"intl-messageformat@npm:10.7.15, intl-messageformat@npm:^10.3.5":
version: 10.7.15
resolution: "intl-messageformat@npm:10.7.15"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/ecma402-abstract": "npm:2.3.3"
"@formatjs/fast-memoize": "npm:2.2.6"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
"@formatjs/icu-messageformat-parser": "npm:2.11.1"
tslib: "npm:2"
checksum: 10c0/914c11118c47bb7d0163a7d54afebf52ae4fe9b250bba609b5db4c802a34f8bf758edbbc8c58094203205faf76948c7112399addb32e9b36e40483c4cf7c1cb7
checksum: 10c0/5759cd38718b7e4874fd6eb5e759e920227f993bdf17d71cd7474919098aafc13c8bbc63f5ccb2bafe13093f3a519fd7a03a47efc84bb3e9fbf9f25f88a408c9
languageName: node
linkType: hard
@ -12423,10 +12443,10 @@ __metadata:
languageName: node
linkType: hard
"node-releases@npm:^2.0.18":
version: 2.0.18
resolution: "node-releases@npm:2.0.18"
checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27
"node-releases@npm:^2.0.19":
version: 2.0.19
resolution: "node-releases@npm:2.0.19"
checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa
languageName: node
linkType: hard
@ -13097,19 +13117,19 @@ __metadata:
languageName: node
linkType: hard
"pg-pool@npm:^3.7.0":
version: 3.7.0
resolution: "pg-pool@npm:3.7.0"
"pg-pool@npm:^3.7.1":
version: 3.7.1
resolution: "pg-pool@npm:3.7.1"
peerDependencies:
pg: ">=8.0"
checksum: 10c0/9128673cf941f288c0cb1a74ca959a9b4f6075ef73b2cc7dece5d4db3dd7043784869e7c12bce2e69ca0df22132a419cc45c2050b4373632856fe8bae9eb94b5
checksum: 10c0/65bff013102684774f4cfdffbfe0a2b0614252234561d391608f7fd915477e44f5fd0e1968ecc2f42032dcf8bac241d2f724c4f3df90384567d22df37dd3b6ba
languageName: node
linkType: hard
"pg-protocol@npm:*, pg-protocol@npm:^1.7.0":
version: 1.7.0
resolution: "pg-protocol@npm:1.7.0"
checksum: 10c0/c4af854d9b843c808231c0040fed89f2b9101006157df8da2bb2f62a7dde702de748d852228dc22df41cc7ffddfb526af3bcb34b278b581e9f76a060789186c1
"pg-protocol@npm:*, pg-protocol@npm:^1.7.1":
version: 1.7.1
resolution: "pg-protocol@npm:1.7.1"
checksum: 10c0/3168d407ddc4c0fa2403eb9b49205399d4bc53dadbafdfcc5d25fa61b860a31c25df25704cf14c8140c80f0a41061d586e5fd5ce9bf800dfb91e9ce810bc2c37
languageName: node
linkType: hard
@ -13142,13 +13162,13 @@ __metadata:
linkType: hard
"pg@npm:^8.5.0":
version: 8.13.1
resolution: "pg@npm:8.13.1"
version: 8.13.2
resolution: "pg@npm:8.13.2"
dependencies:
pg-cloudflare: "npm:^1.1.1"
pg-connection-string: "npm:^2.7.0"
pg-pool: "npm:^3.7.0"
pg-protocol: "npm:^1.7.0"
pg-pool: "npm:^3.7.1"
pg-protocol: "npm:^1.7.1"
pg-types: "npm:^2.1.0"
pgpass: "npm:1.x"
peerDependencies:
@ -13159,7 +13179,7 @@ __metadata:
peerDependenciesMeta:
pg-native:
optional: true
checksum: 10c0/c13bc661cbdb115337bc8519254836faf4bd79106dfd7ed588c8ece8c8b2dd3b7376bfec9a9a2f7646fa095b0b310cec77a83c3ba2ea4872331446eb93fd9055
checksum: 10c0/955615fc6db2849e047472b3a314ce6b70ecdef2de1ecdbb663ac2cd39f6e9ae25da5de4727baceb0b6e439075e6ad0ac8548fd150e38d9cda6514c43c840a31
languageName: node
linkType: hard
@ -13172,7 +13192,7 @@ __metadata:
languageName: node
linkType: hard
"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.1":
"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
@ -14137,13 +14157,13 @@ __metadata:
linkType: hard
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.49":
version: 8.5.1
resolution: "postcss@npm:8.5.1"
version: 8.5.2
resolution: "postcss@npm:8.5.2"
dependencies:
nanoid: "npm:^3.3.8"
picocolors: "npm:^1.1.1"
source-map-js: "npm:^1.2.1"
checksum: 10c0/c4d90c59c98e8a0c102b77d3f4cac190f883b42d63dc60e2f3ed840f16197c0c8e25a4327d2e9a847b45a985612317dc0534178feeebd0a1cf3eb0eecf75cae4
checksum: 10c0/3044d49bc725029ab62292e8bf9849741251b95f3b754e191bf8b4025414d40ec3b4ac05c5a563d4b50060b5c8e96683eb4d783d8d8fa3867eb7b763cbe66127
languageName: node
linkType: hard
@ -14587,16 +14607,16 @@ __metadata:
linkType: hard
"react-intl@npm:^7.0.0":
version: 7.1.5
resolution: "react-intl@npm:7.1.5"
version: 7.1.6
resolution: "react-intl@npm:7.1.6"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
"@formatjs/intl": "npm:3.1.3"
"@formatjs/ecma402-abstract": "npm:2.3.3"
"@formatjs/icu-messageformat-parser": "npm:2.11.1"
"@formatjs/intl": "npm:3.1.4"
"@types/hoist-non-react-statics": "npm:3"
"@types/react": "npm:16 || 17 || 18 || 19"
hoist-non-react-statics: "npm:3"
intl-messageformat: "npm:10.7.14"
intl-messageformat: "npm:10.7.15"
tslib: "npm:2"
peerDependencies:
react: ^16.6.0 || 17 || 18 || 19
@ -14604,7 +14624,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/9d8d5afae16d26466f82fc1c0b8c4afd7559a8faa5b3ef31983a0af540b1b225fa89208b48bf9ec83056c0a27f2972fb86f2717422f788efdc819fb0e0846134
checksum: 10c0/6ccb6ba40e30079822994eb36f76c8631d5f31f5826f1fa62b00371be6efd1481b094285f7f1f672c01705dfe9b36b91ce89df35f61d7bb293e5709d7f07d1b7
languageName: node
linkType: hard
@ -17596,17 +17616,17 @@ __metadata:
languageName: node
linkType: hard
"update-browserslist-db@npm:^1.1.0":
version: 1.1.0
resolution: "update-browserslist-db@npm:1.1.0"
"update-browserslist-db@npm:^1.1.1":
version: 1.1.2
resolution: "update-browserslist-db@npm:1.1.2"
dependencies:
escalade: "npm:^3.1.2"
picocolors: "npm:^1.0.1"
escalade: "npm:^3.2.0"
picocolors: "npm:^1.1.1"
peerDependencies:
browserslist: ">= 4.21.0"
bin:
update-browserslist-db: cli.js
checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9
checksum: 10c0/9cb353998d6d7d6ba1e46b8fa3db888822dd972212da4eda609d185eb5c3557a93fd59780ceb757afd4d84240518df08542736969e6a5d6d6ce2d58e9363aac6
languageName: node
linkType: hard