diff --git a/.devcontainer/codespaces/devcontainer.json b/.devcontainer/codespaces/devcontainer.json index d2358657f6..8acffec825 100644 --- a/.devcontainer/codespaces/devcontainer.json +++ b/.devcontainer/codespaces/devcontainer.json @@ -39,7 +39,7 @@ }, "onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}", - "postCreateCommand": "bin/setup", + "postCreateCommand": "COREPACK_ENABLE_DOWNLOAD_PROMPT=0 bin/setup", "waitFor": "postCreateCommand", "customizations": { diff --git a/Dockerfile b/Dockerfile index 758db9bcc9..bc7cd3b682 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.8 +# syntax=docker/dockerfile:1.9 # This file is designed for production server deployment, not local development work # For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker diff --git a/Gemfile.lock b/Gemfile.lock index 31e317e819..1cf7f8d769 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -451,7 +451,7 @@ GEM net-smtp (0.5.0) net-protocol nio4r (2.7.3) - nokogiri (1.16.6) + nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) nsa (0.3.0) @@ -589,7 +589,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.5.6) + pg (1.5.7) pghero (3.6.0) activerecord (>= 6.1) premailer (1.23.0) @@ -775,7 +775,7 @@ GEM fugit (~> 1.1, >= 1.1.6) safety_net_attestation (0.4.0) jwt (~> 2.0) - sanitize (6.1.1) + sanitize (6.1.2) crass (~> 1.0.2) nokogiri (>= 1.12.0) scenic (1.8.0) diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb index 4f727c398a..4759d15bc4 100644 --- a/app/controllers/admin/tags_controller.rb +++ b/app/controllers/admin/tags_controller.rb @@ -2,7 +2,15 @@ module Admin class TagsController < BaseController - before_action :set_tag + before_action :set_tag, except: [:index] + + PER_PAGE = 20 + + def index + authorize :tag, :index? + + @tags = filtered_tags.page(params[:page]).per(PER_PAGE) + end def show authorize @tag, :show? @@ -31,5 +39,13 @@ module Admin def tag_params params.require(:tag).permit(:name, :display_name, :trendable, :usable, :listable) end + + def filtered_tags + TagFilter.new(filter_params.with_defaults(order: 'newest')).results + end + + def filter_params + params.slice(:page, *TagFilter::KEYS).permit(:page, *TagFilter::KEYS) + end end end diff --git a/app/helpers/admin/tags_helper.rb b/app/helpers/admin/tags_helper.rb new file mode 100644 index 0000000000..eb928a6db2 --- /dev/null +++ b/app/helpers/admin/tags_helper.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Admin::TagsHelper + def admin_tags_moderation_options + [ + [t('admin.tags.moderation.reviewed'), 'reviewed'], + [t('admin.tags.moderation.review_requested'), 'review_requested'], + [t('admin.tags.moderation.unreviewed'), 'unreviewed'], + [t('admin.tags.moderation.trendable'), 'trendable'], + [t('admin.tags.moderation.not_trendable'), 'not_trendable'], + [t('admin.tags.moderation.usable'), 'usable'], + [t('admin.tags.moderation.not_usable'), 'not_usable'], + ] + end +end diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 2161286c6c..b83286bf90 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Блокиране", "confirmations.delete.confirm": "Изтриване", "confirmations.delete.message": "Наистина ли искате да изтриете публикацията?", + "confirmations.delete.title": "Изтривате ли публикацията?", "confirmations.delete_list.confirm": "Изтриване", "confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги списъка?", + "confirmations.delete_list.title": "Изтривате ли списъка?", "confirmations.discard_edit_media.confirm": "Отхвърляне", "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?", "confirmations.edit.confirm": "Редактиране", "confirmations.edit.message": "Редактирането сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", + "confirmations.edit.title": "Презаписвате ли публикацията?", "confirmations.logout.confirm": "Излизане", "confirmations.logout.message": "Наистина ли искате да излезете?", + "confirmations.logout.title": "Излизате ли от системата?", "confirmations.mute.confirm": "Заглушаване", "confirmations.redraft.confirm": "Изтриване и преработване", "confirmations.redraft.message": "Наистина ли искате да изтриете тази публикация и да я направите чернова? Означаванията като любими и подсилванията ще се изгубят, а и отговорите към първоначалната публикация ще осиротеят.", + "confirmations.redraft.title": "Изтривате и преработвате ли публикацията?", "confirmations.reply.confirm": "Отговор", "confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?", + "confirmations.reply.title": "Презаписвате ли публикацията?", "confirmations.unfollow.confirm": "Без следване", "confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?", + "confirmations.unfollow.title": "Спирате ли да следвате потребителя?", "conversation.delete": "Изтриване на разговора", "conversation.mark_as_read": "Маркиране като прочетено", "conversation.open": "Преглед на разговора", @@ -503,6 +510,7 @@ "notification_requests.title": "Филтрирани известия", "notifications.clear": "Изчистване на известията", "notifications.clear_confirmation": "Наистина ли искате да изчистите завинаги всичките си известия?", + "notifications.clear_title": "Изчиствате ли известията?", "notifications.column_settings.admin.report": "Нови доклади:", "notifications.column_settings.admin.sign_up": "Нови регистрации:", "notifications.column_settings.alert": "Известия на работния плот", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index f44d60e9c4..164a2cdb3a 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -171,28 +171,28 @@ "confirmations.block.confirm": "Bloca", "confirmations.delete.confirm": "Elimina", "confirmations.delete.message": "Segur que vols eliminar aquest tut?", - "confirmations.delete.title": "Elimina la publicació?", + "confirmations.delete.title": "Eliminar la publicació?", "confirmations.delete_list.confirm": "Elimina", "confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?", - "confirmations.delete_list.title": "Elimina la llista?", + "confirmations.delete_list.title": "Eliminar la llista?", "confirmations.discard_edit_media.confirm": "Descarta", "confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?", "confirmations.edit.confirm": "Edita", "confirmations.edit.message": "Editant ara sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", - "confirmations.edit.title": "Sobreescriu la publicació?", + "confirmations.edit.title": "Sobreescriure la publicació?", "confirmations.logout.confirm": "Tanca la sessió", "confirmations.logout.message": "Segur que vols tancar la sessió?", - "confirmations.logout.title": "Tanca la sessió?", + "confirmations.logout.title": "Tancar la sessió?", "confirmations.mute.confirm": "Silencia", "confirmations.redraft.confirm": "Esborra i reescriu", "confirmations.redraft.message": "Segur que vols eliminar aquest tut i tornar a escriure'l? Es perdran tots els impulsos i els favorits, i les respostes al tut original quedaran aïllades.", - "confirmations.redraft.title": "Esborra i reescriu la publicació?", + "confirmations.redraft.title": "Esborrar i reescriure la publicació?", "confirmations.reply.confirm": "Respon", "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", - "confirmations.reply.title": "Sobreescriu la publicació?", + "confirmations.reply.title": "Sobreescriure la publicació?", "confirmations.unfollow.confirm": "Deixa de seguir", "confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?", - "confirmations.unfollow.title": "Deixa de seguir l'usuari?", + "confirmations.unfollow.title": "Deixar de seguir l'usuari?", "conversation.delete": "Elimina la conversa", "conversation.mark_as_read": "Marca com a llegida", "conversation.open": "Mostra la conversa", @@ -510,7 +510,7 @@ "notification_requests.title": "Notificacions filtrades", "notifications.clear": "Esborra les notificacions", "notifications.clear_confirmation": "Segur que vols esborrar permanentment totes les teves notificacions?", - "notifications.clear_title": "Esborra les notificacions?", + "notifications.clear_title": "Esborrar les notificacions?", "notifications.column_settings.admin.report": "Nous informes:", "notifications.column_settings.admin.sign_up": "Registres nous:", "notifications.column_settings.alert": "Notificacions d'escriptori", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index cc9d3fd855..828896678b 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -9,7 +9,7 @@ "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei gadw na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", "about.domain_blocks.suspended.title": "Ataliwyd", "about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.", - "about.powered_by": "Cyfrwng cymdeithasol datganoledig sy'n cael ei yrru gan {mastodon}", + "about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}", "about.rules": "Rheolau'r gweinydd", "account.account_note_header": "Nodyn", "account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau", @@ -35,7 +35,9 @@ "account.follow_back": "Dilyn yn ôl", "account.followers": "Dilynwyr", "account.followers.empty": "Does neb yn dilyn y defnyddiwr hwn eto.", + "account.followers_counter": "{count, plural, one {{counter} dilynwr} two {{counter} ddilynwr} other {{counter} dilynwyr}}", "account.following": "Yn dilyn", + "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter}}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.go_to_profile": "Mynd i'r proffil", "account.hide_reblogs": "Cuddio hybiau gan @{name}", @@ -61,6 +63,7 @@ "account.requested_follow": "Mae {name} wedi gwneud cais i'ch dilyn", "account.share": "Rhannwch broffil @{name}", "account.show_reblogs": "Dangos hybiau gan @{name}", + "account.statuses_counter": "{count, plural, one {{counter} post} two {{counter} bost} few {{counter} phost} many {{counter} post} other {{counter} post}}", "account.unblock": "Dadflocio @{name}", "account.unblock_domain": "Dadflocio parth {domain}", "account.unblock_short": "Dadflocio", @@ -168,21 +171,28 @@ "confirmations.block.confirm": "Blocio", "confirmations.delete.confirm": "Dileu", "confirmations.delete.message": "Ydych chi'n sicr eich bod eisiau dileu y post hwn?", + "confirmations.delete.title": "Dileu post?", "confirmations.delete_list.confirm": "Dileu", "confirmations.delete_list.message": "Ydych chi'n siŵr eich bod eisiau dileu'r rhestr hwn am byth?", + "confirmations.delete_list.title": "Dileu rhestr?", "confirmations.discard_edit_media.confirm": "Dileu", "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg - eu dileu beth bynnag?", "confirmations.edit.confirm": "Golygu", "confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?", + "confirmations.edit.title": "Trosysgrifo post?", "confirmations.logout.confirm": "Allgofnodi", "confirmations.logout.message": "Ydych chi'n siŵr eich bod am allgofnodi?", + "confirmations.logout.title": "Allgofnodi?", "confirmations.mute.confirm": "Tewi", "confirmations.redraft.confirm": "Dileu ac ailddrafftio", "confirmations.redraft.message": "Ydych chi'n siŵr eich bod am ddileu'r postiad hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael eu colli, a bydd atebion i'r post gwreiddiol yn mynd yn amddifad.", + "confirmations.redraft.title": "Dileu & ailddraftio post?", "confirmations.reply.confirm": "Ateb", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n siŵr eich bod am barhau?", + "confirmations.reply.title": "Trosysgrifo post?", "confirmations.unfollow.confirm": "Dad-ddilyn", "confirmations.unfollow.message": "Ydych chi'n siŵr eich bod am ddad-ddilyn {name}?", + "confirmations.unfollow.title": "Dad-ddilyn defnyddiwr?", "conversation.delete": "Dileu sgwrs", "conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.open": "Gweld sgwrs", @@ -408,6 +418,7 @@ "limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan gymedrolwyr {domain}.", "link_preview.author": "Gan {name}", "link_preview.more_from_author": "Mwy gan {name}", + "link_preview.shares": "{count, plural, one {{counter} post} two {{counter} bost} few {{counter} phost} many {{counter} post} other {{counter} post}}", "lists.account.add": "Ychwanegu at restr", "lists.account.remove": "Tynnu o'r rhestr", "lists.delete": "Dileu rhestr", @@ -435,6 +446,8 @@ "mute_modal.title": "Tewi defnyddiwr?", "mute_modal.you_wont_see_mentions": "Welwch chi ddim postiadau sy'n sôn amdanyn nhw.", "mute_modal.you_wont_see_posts": "Gallan nhw weld eich postiadau o hyd, ond fyddwch chi ddim yn gweld eu rhai hwy.", + "name_and_others": "{name} a(c) {count, plural, one {# arall} other {# eraill}}", + "name_and_others_with_link": "{name} a{count, plural, zero {}one {c # arall} two { # eraill} few { # eraill} many { # eraill} other { # eraill}}", "navigation_bar.about": "Ynghylch", "navigation_bar.advanced_interface": "Agor mewn rhyngwyneb gwe uwch", "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", @@ -462,6 +475,9 @@ "navigation_bar.security": "Diogelwch", "not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.", "notification.admin.report": "Adroddwyd ar {name} {target}", + "notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un post} two {# bost} few {# phost} other {# post}} gan {target}", + "notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}", + "notification.admin.report_statuses_other": "Adroddodd {name} {target}", "notification.admin.sign_up": "Cofrestrodd {name}", "notification.favourite": "Hoffodd {name} eich postiad", "notification.follow": "Dilynodd {name} chi", @@ -477,6 +493,8 @@ "notification.moderation_warning.action_silence": "Mae eich cyfrif wedi'i gyfyngu.", "notification.moderation_warning.action_suspend": "Mae eich cyfrif wedi'i hatal.", "notification.own_poll": "Mae eich pleidlais wedi dod i ben", + "notification.poll": "Mae arolwg y gwnaethoch bleidleisio ynddo wedi dod i ben", + "notification.private_mention": "Mae {name} wedi eich crybwyll yn breifat", "notification.reblog": "Hybodd {name} eich post", "notification.relationships_severance_event": "Wedi colli cysylltiad â {name}", "notification.relationships_severance_event.account_suspension": "Mae gweinyddwr o {from} wedi atal {target}, sy'n golygu na allwch dderbyn diweddariadau ganddynt mwyach na rhyngweithio â nhw.", @@ -491,9 +509,12 @@ "notification_requests.title": "Hysbysiadau wedi'u hidlo", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n siŵr eich bod am glirio'ch holl hysbysiadau am byth?", + "notifications.clear_title": "Clirio hysbysiadau?", "notifications.column_settings.admin.report": "Adroddiadau newydd:", "notifications.column_settings.admin.sign_up": "Cofrestriadau newydd:", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", + "notifications.column_settings.beta.category": "Nodweddion arbrofol", + "notifications.column_settings.beta.grouping": "Grŵpio hysbysiadau", "notifications.column_settings.favourite": "Ffefrynnau:", "notifications.column_settings.filter_bar.advanced": "Dangos pob categori", "notifications.column_settings.filter_bar.category": "Bar hidlo cyflym", @@ -657,9 +678,13 @@ "report.unfollow_explanation": "Rydych chi'n dilyn y cyfrif hwn. I beidio â gweld eu postiadau yn eich porthiant cartref mwyach, dad-ddilynwch nhw.", "report_notification.attached_statuses": "{count, plural, one {{count} postiad} arall {{count} postiad}} atodwyd", "report_notification.categories.legal": "Cyfreithiol", + "report_notification.categories.legal_sentence": "cynnwys anghyfreithlon", "report_notification.categories.other": "Arall", + "report_notification.categories.other_sentence": "arall", "report_notification.categories.spam": "Sbam", + "report_notification.categories.spam_sentence": "sbam", "report_notification.categories.violation": "Torri rheol", + "report_notification.categories.violation_sentence": "torri rheolau", "report_notification.open": "Agor adroddiad", "search.no_recent_searches": "Does dim chwiliadau diweddar", "search.placeholder": "Chwilio", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 78237e45cf..a4c277b8a8 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -186,7 +186,7 @@ "confirmations.mute.confirm": "Stummschalten", "confirmations.redraft.confirm": "Löschen und neu erstellen", "confirmations.redraft.message": "Möchtest du diesen Beitrag wirklich löschen und neu verfassen? Favoriten und geteilte Beiträge gehen verloren, und Antworten auf den ursprünglichen Beitrag verlieren den Zusammenhang.", - "confirmations.redraft.title": "Beitrag löschen & neu verfassen?", + "confirmations.redraft.title": "Beitrag löschen und neu erstellen?", "confirmations.reply.confirm": "Antworten", "confirmations.reply.message": "Wenn du jetzt darauf antwortest, wird der andere Beitrag, an dem du gerade geschrieben hast, verworfen. Möchtest du wirklich fortfahren?", "confirmations.reply.title": "Beitrag überschreiben?", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index cbb99ddd6f..791f66e507 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -171,7 +171,7 @@ "confirmations.block.confirm": "Bloquear", "confirmations.delete.confirm": "Eliminar", "confirmations.delete.message": "¿Estás seguro que querés eliminar este mensaje?", - "confirmations.delete.title": "¿Eliminar publicación?", + "confirmations.delete.title": "¿Eliminar mensaje?", "confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.message": "¿Estás seguro que querés eliminar permanentemente esta lista?", "confirmations.delete_list.title": "¿Eliminar lista?", @@ -179,17 +179,17 @@ "confirmations.discard_edit_media.message": "Tenés cambios sin guardar en la descripción de medios o en la vista previa, ¿querés descartarlos de todos modos?", "confirmations.edit.confirm": "Editar", "confirmations.edit.message": "Editar ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?", - "confirmations.edit.title": "¿Sobrescribir publicación?", + "confirmations.edit.title": "¿Sobrescribir mensaje?", "confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?", "confirmations.logout.title": "¿Cerrar sesión?", "confirmations.mute.confirm": "Silenciar", "confirmations.redraft.confirm": "Eliminar mensaje original y editarlo", "confirmations.redraft.message": "¿Estás seguro que querés eliminar este mensaje y volver a editarlo? Se perderán las veces marcadas como favorito y sus adhesiones, y las respuestas al mensaje original quedarán huérfanas.", - "confirmations.redraft.title": "¿Borrar y volver a redactar la publicación?", + "confirmations.redraft.title": "¿Eliminar y volver a redactar mensaje?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?", - "confirmations.reply.title": "¿Sobrescribir publicación?", + "confirmations.reply.title": "¿Sobrescribir mensaje?", "confirmations.unfollow.confirm": "Dejar de seguir", "confirmations.unfollow.message": "¿Estás seguro que querés dejar de seguir a {name}?", "confirmations.unfollow.title": "¿Dejar de seguir al usuario?", @@ -510,7 +510,7 @@ "notification_requests.title": "Notificaciones filtradas", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?", - "notifications.clear_title": "¿Borrar notificaciones?", + "notifications.clear_title": "¿Limpiar notificaciones?", "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 9e0db8458c..fc1d252325 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -59,7 +59,7 @@ "account.posts": "Julkaisut", "account.posts_with_replies": "Julkaisut ja vastaukset", "account.report": "Raportoi @{name}", - "account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö napsauttamalla", + "account.requested": "Odottaa hyväksyntää. Peruuta seurantapyyntö napsauttamalla", "account.requested_follow": "{name} on pyytänyt lupaa seurata sinua", "account.share": "Jaa käyttäjän @{name} profiili", "account.show_reblogs": "Näytä käyttäjän @{name} tehostukset", @@ -96,7 +96,7 @@ "block_modal.they_cant_see_posts": "Hän ei voi enää nähdä julkaisujasi, etkä sinä voi nähdä hänen.", "block_modal.they_will_know": "Hän voi nähdä, että hänet on estetty.", "block_modal.title": "Estetäänkö käyttäjä?", - "block_modal.you_wont_see_mentions": "Et tule enää näkemään julkaisuja, joissa hänet mainitaan.", + "block_modal.you_wont_see_mentions": "Et näe enää julkaisuja, joissa hänet mainitaan.", "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}", "bundle_column_error.copy_stacktrace": "Kopioi virheraportti", "bundle_column_error.error.body": "Pyydettyä sivua ei voitu hahmontaa. Se voi johtua virheestä koodissamme tai selaimen yhteensopivuudessa.", @@ -111,7 +111,7 @@ "bundle_modal_error.message": "Jotain meni pieleen komponenttia ladattaessa.", "bundle_modal_error.retry": "Yritä uudelleen", "closed_registrations.other_server_instructions": "Koska Mastodon on hajautettu, voit luoda tilin toiselle palvelimelle ja olla silti vuorovaikutuksessa tämän kanssa.", - "closed_registrations_modal.description": "Tilin luonti palvelimelle {domain} ei tällä hetkellä ole mahdollista, mutta huomioi, ettei Mastodonin käyttö edellytä juuri kyseisen tuon tiliä.", + "closed_registrations_modal.description": "Tilin luonti palvelimelle {domain} ei tällä hetkellä ole mahdollista, mutta ota huomioon, ettei Mastodonin käyttö edellytä juuri kyseisen palvelimen tiliä.", "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", "closed_registrations_modal.preamble": "Mastodon on hajautettu, joten riippumatta siitä, missä luot tilisi, voit seurata ja olla vuorovaikutuksessa kenen tahansa kanssa tällä palvelimella. Voit jopa isännöidä palvelinta!", "closed_registrations_modal.title": "Rekisteröityminen Mastodoniin", @@ -124,7 +124,7 @@ "column.domain_blocks": "Estetyt verkkotunnukset", "column.favourites": "Suosikit", "column.firehose": "Livesyötteet", - "column.follow_requests": "Seuraamispyynnöt", + "column.follow_requests": "Seurantapyynnöt", "column.home": "Koti", "column.lists": "Listat", "column.mutes": "Mykistetyt käyttäjät", @@ -216,7 +216,7 @@ "domain_block_modal.block_account_instead": "Estä sen sijaan @{name}", "domain_block_modal.they_can_interact_with_old_posts": "Ihmiset tältä palvelimelta eivät voi olla vuorovaikutuksessa vanhojen julkaisujesi kanssa.", "domain_block_modal.they_cant_follow": "Kukaan tältä palvelimelta ei voi seurata sinua.", - "domain_block_modal.they_wont_know": "Hän ei saa ilmoitusta tulleensa estetyksi.", + "domain_block_modal.they_wont_know": "Hän ei saa tietää tulleensa estetyksi.", "domain_block_modal.title": "Estetäänkö verkkotunnus?", "domain_block_modal.you_will_lose_followers": "Kaikki seuraajasi tältä palvelimelta poistetaan.", "domain_block_modal.you_wont_see_posts": "Et enää näe julkaisuja etkä ilmoituksia tämän palvelimen käyttäjiltä.", @@ -257,12 +257,12 @@ "empty_column.blocks": "Et ole vielä estänyt käyttäjiä.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt julkaisuja kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", - "empty_column.direct": "Yksityismainintoja ei vielä ole. Jos lähetät tai sinulle lähetetään sellainen, näet sen tässä.", + "empty_column.direct": "Yksityismainintoja ei vielä ole. Jos lähetät tai sinulle lähetetään sellaisia, näet ne täällä.", "empty_column.domain_blocks": "Verkkotunnuksia ei ole vielä estetty.", "empty_column.explore_statuses": "Mikään ei ole nyt suosittua. Tarkista myöhemmin uudelleen!", "empty_column.favourited_statuses": "Sinulla ei ole vielä yhtään suosikkijulkaisua. Kun lisäät sellaisen, näkyy se tässä.", "empty_column.favourites": "Kukaan ei ole vielä lisännyt tätä julkaisua suosikkeihinsa. Kun joku tekee niin, tulee hän tähän näkyviin.", - "empty_column.follow_requests": "Et ole vielä vastaanottanut seuraamispyyntöjä. Saamasi pyynnöt näkyvät täällä.", + "empty_column.follow_requests": "Et ole vielä vastaanottanut seurantapyyntöjä. Saamasi pyynnöt näkyvät täällä.", "empty_column.followed_tags": "Et seuraa vielä yhtäkään aihetunnistetta. Kun alat seurata, ne tulevat tähän näkyviin.", "empty_column.hashtag": "Tällä aihetunnisteella ei löydy vielä sisältöä.", "empty_column.home": "Kotiaikajanasi on tyhjä! Seuraa useampia henkilöjä, niin näet enemmän sisältöä.", @@ -308,7 +308,7 @@ "firehose.remote": "Muut palvelimet", "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", - "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelimen {domain} ylläpito on arvioinut, että saatat olla halukas tarkistamaan nämä seuraamispyynnöt erikseen.", + "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelimen {domain} ylläpito on arvioinut, että saatat olla halukas tarkistamaan nämä seurantapyynnöt erikseen.", "follow_suggestions.curated_suggestion": "Ehdotus ylläpidolta", "follow_suggestions.dismiss": "Älä näytä uudelleen", "follow_suggestions.featured_longer": "Palvelimen {domain} tiimin poimintoja", @@ -400,7 +400,7 @@ "keyboard_shortcuts.pinned": "Avaa kiinnitettyjen julkaisujen luettelo", "keyboard_shortcuts.profile": "Avaa kirjoittajan profiili", "keyboard_shortcuts.reply": "Vastaa julkaisuun", - "keyboard_shortcuts.requests": "Avaa seuraamispyyntöjen luettelo", + "keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo", "keyboard_shortcuts.search": "Kohdista hakukenttään", "keyboard_shortcuts.spoilers": "Näytä/piilota sisältövaroituskenttä", "keyboard_shortcuts.start": "Avaa Näin pääset alkuun -sarake", @@ -417,7 +417,7 @@ "limited_account_hint.action": "Näytä profiili joka tapauksessa", "limited_account_hint.title": "Palvelimen {domain} moderaattorit ovat piilottaneet tämän profiilin.", "link_preview.author": "Julkaissut {name}", - "link_preview.more_from_author": "Lisää käyttäjältä {name}", + "link_preview.more_from_author": "Lisää tekijältä {name}", "link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}", "lists.account.add": "Lisää listalle", "lists.account.remove": "Poista listalta", @@ -439,12 +439,12 @@ "moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.", "mute_modal.hide_from_notifications": "Piilota ilmoituksista", "mute_modal.hide_options": "Piilota vaihtoehdot", - "mute_modal.indefinite": "Kunnes perun häntä koskevan mykistyksen", + "mute_modal.indefinite": "Kunnes kumoan häntä koskevan mykistyksen", "mute_modal.show_options": "Näytä vaihtoehdot", "mute_modal.they_can_mention_and_follow": "Hän voi mainita sinut ja seurata sinua, mutta sinä et näe häntä.", - "mute_modal.they_wont_know": "Hän ei saa ilmoitusta tulleensa mykistetyksi.", + "mute_modal.they_wont_know": "Hän ei saa tietää tulleensa mykistetyksi.", "mute_modal.title": "Mykistetäänkö käyttäjä?", - "mute_modal.you_wont_see_mentions": "Et tule enää näkemään julkaisuja, joissa hänet mainitaan.", + "mute_modal.you_wont_see_mentions": "Et näe enää julkaisuja, joissa hänet mainitaan.", "mute_modal.you_wont_see_posts": "Hän voi yhä nähdä julkaisusi, mutta sinä et näe hänen.", "name_and_others": "{name} ja {count, plural, one {# muu} other {# muuta}}", "name_and_others_with_link": "{name} ja {count, plural, one {# muu} other {# muuta}}", @@ -460,7 +460,7 @@ "navigation_bar.explore": "Selaa", "navigation_bar.favourites": "Suosikit", "navigation_bar.filters": "Mykistetyt sanat", - "navigation_bar.follow_requests": "Seuraamispyynnöt", + "navigation_bar.follow_requests": "Seurantapyynnöt", "navigation_bar.followed_tags": "Seuratut aihetunnisteet", "navigation_bar.follows_and_followers": "Seuratut ja seuraajat", "navigation_bar.lists": "Listat", @@ -482,7 +482,7 @@ "notification.admin.sign_up": "{name} rekisteröityi", "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.follow": "{name} seurasi sinua", - "notification.follow_request": "{name} on pyytänyt lupaa saada seurata sinua", + "notification.follow_request": "{name} on pyytänyt lupaa seurata sinua", "notification.mention": "{name} mainitsi sinut", "notification.moderation-warning.learn_more": "Lue lisää", "notification.moderation_warning": "Olet saanut moderointivaroituksen", @@ -520,7 +520,7 @@ "notifications.column_settings.filter_bar.advanced": "Näytä kaikki luokat", "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki", "notifications.column_settings.follow": "Uudet seuraajat:", - "notifications.column_settings.follow_request": "Uudet seuraamispyynnöt:", + "notifications.column_settings.follow_request": "Uudet seurantapyynnöt:", "notifications.column_settings.mention": "Maininnat:", "notifications.column_settings.poll": "Äänestyksen tulokset:", "notifications.column_settings.push": "Puskuilmoitukset", @@ -544,11 +544,11 @@ "notifications.permission_denied": "Työpöytäilmoitukset eivät ole käytettävissä, koska selaimen käyttöoikeuspyyntö on aiemmin evätty", "notifications.permission_denied_alert": "Työpöytäilmoituksia ei voi ottaa käyttöön, koska selaimen käyttöoikeus on aiemmin evätty", "notifications.permission_required": "Työpöytäilmoitukset eivät ole käytettävissä, koska siihen tarvittavaa käyttöoikeutta ei ole myönnetty.", - "notifications.policy.filter_new_accounts.hint": "Luotu {days, plural, one {viimeisimmän päivän aikana} other {# viime päivän aikana}}", + "notifications.policy.filter_new_accounts.hint": "Luotu {days, plural, one {viime päivänä} other {viimeisenä # päivänä}}", "notifications.policy.filter_new_accounts_title": "Uudet tilit", - "notifications.policy.filter_not_followers_hint": "Mukaan lukien alle {days, plural, one {päivän} other {# päivän}} verran sinua seuranneet", + "notifications.policy.filter_not_followers_hint": "Mukaan lukien alle {days, plural, one {päivän} other {# päivää}} sinua seuranneet", "notifications.policy.filter_not_followers_title": "Henkilöt, jotka eivät seuraa sinua", - "notifications.policy.filter_not_following_hint": "Kunnes hyväksyt ne omin käsin", + "notifications.policy.filter_not_following_hint": "Kunnes hyväksyt ne manuaalisesti", "notifications.policy.filter_not_following_title": "Henkilöt, joita et seuraa", "notifications.policy.filter_private_mentions_hint": "Suodatetaan, ellei se vastaa omaan mainintaasi tai ellet seuraa lähettäjää", "notifications.policy.filter_private_mentions_title": "Ei-toivotut yksityismaininnat", @@ -716,7 +716,7 @@ "server_banner.is_one_of_many": "{domain} on yksi monista itsenäisistä Mastodon-palvelimista, joiden välityksellä voit toimia fediversumissa.", "server_banner.server_stats": "Palvelimen tilastot:", "sign_in_banner.create_account": "Luo tili", - "sign_in_banner.follow_anyone": "Seuraa kenen tahansa julkaisuja fediversumissa ja näe ne kaikki aikajärjestyksessä. Ei algoritmeja, mainoksia tai klikkausten kalastelua.", + "sign_in_banner.follow_anyone": "Seuraa kenen tahansa julkaisuja fediversumissa ja näe ne kaikki aikajärjestyksessä. Ei algoritmeja, mainoksia eikä klikkausten kalastelua.", "sign_in_banner.mastodon_is": "Mastodon on paras tapa pysyä ajan tasalla siitä, mitä ympärillä tapahtuu.", "sign_in_banner.sign_in": "Kirjaudu", "sign_in_banner.sso_redirect": "Kirjaudu tai rekisteröidy", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index da90494804..eedbc35ff5 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -1,5 +1,5 @@ { - "about.blocks": "שרתים מוגבלים", + "about.blocks": "שרתים שנחסמו על ידי המנהלים", "about.contact": "יצירת קשר:", "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "הסיבה אינה זמינה", @@ -171,21 +171,28 @@ "confirmations.block.confirm": "לחסום", "confirmations.delete.confirm": "למחוק", "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?", + "confirmations.delete.title": "למחוק הודעה?", "confirmations.delete_list.confirm": "למחוק", "confirmations.delete_list.message": "האם אתם בטוחים שאתם רוצים למחוק את הרשימה לצמיתות?", + "confirmations.delete_list.title": "למחוק רשימה?", "confirmations.discard_edit_media.confirm": "השלך", "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?", "confirmations.edit.confirm": "עריכה", "confirmations.edit.message": "עריכה תדרוס את ההודעה שכבר התחלת לכתוב. האם להמשיך?", + "confirmations.edit.title": "לבצע החלפת תוכן?", "confirmations.logout.confirm": "התנתקות", "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?", + "confirmations.logout.title": "להתנתק?", "confirmations.mute.confirm": "להשתיק", "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", "confirmations.redraft.message": "למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות להודעה המקורית ישארו יתומות.", + "confirmations.redraft.title": "מחיקה ועריכה מחדש?", "confirmations.reply.confirm": "תגובה", "confirmations.reply.message": "תגובה עכשיו תמחק את ההודעה שכבר התחלת לכתוב. להמשיך?", + "confirmations.reply.title": "לבצע החלפת תוכן?", "confirmations.unfollow.confirm": "הפסקת מעקב", "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?", + "confirmations.unfollow.title": "לבטל מעקב אחר המשתמש.ת?", "conversation.delete": "מחיקת שיחה", "conversation.mark_as_read": "סמן כנקרא", "conversation.open": "צפו בשיחה", @@ -503,6 +510,7 @@ "notification_requests.title": "התראות מסוננות", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ", + "notifications.clear_title": "לנקות התראות?", "notifications.column_settings.admin.report": "דו\"חות חדשים", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 70e48f6948..f8253865ae 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -171,21 +171,26 @@ "confirmations.block.confirm": "Blocar", "confirmations.delete.confirm": "Deler", "confirmations.delete.message": "Es tu secur que tu vole deler iste message?", + "confirmations.delete.title": "Deler message?", "confirmations.delete_list.confirm": "Deler", "confirmations.delete_list.message": "Es tu secur que tu vole deler permanentemente iste lista?", + "confirmations.delete_list.title": "Deler lista?", "confirmations.discard_edit_media.confirm": "Abandonar", "confirmations.discard_edit_media.message": "Tu ha cambiamentos non salvate in le description o previsualisation del objecto multimedial. Abandonar los?", "confirmations.edit.confirm": "Modificar", "confirmations.edit.message": "Si tu modifica isto ora, le message in curso de composition essera perdite. Es tu secur de voler continuar?", "confirmations.logout.confirm": "Clauder session", "confirmations.logout.message": "Es tu secur que tu vole clauder le session?", + "confirmations.logout.title": "Clauder session?", "confirmations.mute.confirm": "Silentiar", "confirmations.redraft.confirm": "Deler e rescriber", "confirmations.redraft.message": "Es tu secur de voler deler iste message e rescriber lo? Le favorites e le impulsos essera perdite, e le responsas al message original essera orphanate.", + "confirmations.redraft.title": "Deler e rescriber le message?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Si tu responde ora, le message in curso de composition essera perdite. Es tu secur de voler continuar?", "confirmations.unfollow.confirm": "Non plus sequer", "confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?", + "confirmations.unfollow.title": "Cessar de sequer le usator?", "conversation.delete": "Deler conversation", "conversation.mark_as_read": "Marcar como legite", "conversation.open": "Vider conversation", @@ -497,6 +502,7 @@ "notification_requests.title": "Notificationes filtrate", "notifications.clear": "Rader notificationes", "notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?", + "notifications.clear_title": "Rader le notificationes?", "notifications.column_settings.admin.report": "Nove reportos:", "notifications.column_settings.admin.sign_up": "Nove inscriptiones:", "notifications.column_settings.alert": "Notificationes de scriptorio", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index c8c545922c..6e37961e12 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Blocca", "confirmations.delete.confirm": "Elimina", "confirmations.delete.message": "Sei sicuro di voler eliminare questo post?", + "confirmations.delete.title": "Eliminare il post?", "confirmations.delete_list.confirm": "Elimina", "confirmations.delete_list.message": "Sei sicuro/a di voler eliminare permanentemente questo elenco?", + "confirmations.delete_list.title": "Eliminare la lista?", "confirmations.discard_edit_media.confirm": "Scarta", "confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?", "confirmations.edit.confirm": "Modifica", "confirmations.edit.message": "Modificare ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?", + "confirmations.edit.title": "Sovrascrivere il post?", "confirmations.logout.confirm": "Disconnettiti", "confirmations.logout.message": "Sei sicuro di volerti disconnettere?", + "confirmations.logout.title": "Uscire?", "confirmations.mute.confirm": "Silenzia", "confirmations.redraft.confirm": "Elimina e riscrivi", "confirmations.redraft.message": "Sei sicuro di voler eliminare questo post e riscriverlo? I preferiti e i boost andranno persi e le risposte al post originale non saranno più collegate.", + "confirmations.redraft.title": "Eliminare e riformulare il post?", "confirmations.reply.confirm": "Rispondi", "confirmations.reply.message": "Rispondere ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?", + "confirmations.reply.title": "Sovrascrivere il post?", "confirmations.unfollow.confirm": "Smetti di seguire", "confirmations.unfollow.message": "Sei sicuro di voler smettere di seguire {name}?", + "confirmations.unfollow.title": "Smettere di seguire l'utente?", "conversation.delete": "Elimina conversazione", "conversation.mark_as_read": "Segna come letto", "conversation.open": "Visualizza conversazione", @@ -503,6 +510,7 @@ "notification_requests.title": "Notifiche filtrate", "notifications.clear": "Cancella le notifiche", "notifications.clear_confirmation": "Sei sicuro di voler cancellare permanentemente tutte le tue notifiche?", + "notifications.clear_title": "Cancellare le notifiche?", "notifications.column_settings.admin.report": "Nuove segnalazioni:", "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ea00b0eb23..b8fd039b8d 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -235,6 +235,8 @@ "follow_request.authorize": "Ssireg", "follow_request.reject": "Agi", "follow_suggestions.dismiss": "Dayen ur t-id-skan ara", + "follow_suggestions.featured_longer": "Yettwafraned s ufus sɣur agraw n {domain}", + "follow_suggestions.hints.featured": "Amaɣnu-a ifren-it-id wegraw n {domain} s ufus.", "follow_suggestions.popular_suggestion_longer": "Yettwassen deg {domain}", "follow_suggestions.view_all": "Wali-ten akk", "follow_suggestions.who_to_follow": "Ad tḍefreḍ?", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 37c37b63eb..04d2c3c8e4 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Blokuoti", "confirmations.delete.confirm": "Ištrinti", "confirmations.delete.message": "Ar tikrai nori ištrinti šį įrašą?", + "confirmations.delete.title": "Ištrinti įrašą?", "confirmations.delete_list.confirm": "Ištrinti", "confirmations.delete_list.message": "Ar tikrai nori visam laikui ištrinti šį sąrašą?", + "confirmations.delete_list.title": "Ištrinti sąrašą?", "confirmations.discard_edit_media.confirm": "Atmesti", "confirmations.discard_edit_media.message": "Turi neišsaugotų medijos aprašymo ar peržiūros pakeitimų, vis tiek juos atmesti?", "confirmations.edit.confirm": "Redaguoti", "confirmations.edit.message": "Redaguojant dabar, bus perrašyta šiuo metu kuriama žinutė. Ar tikrai nori tęsti?", + "confirmations.edit.title": "Perrašyti įrašą?", "confirmations.logout.confirm": "Atsijungti", "confirmations.logout.message": "Ar tikrai nori atsijungti?", + "confirmations.logout.title": "Atsijungti?", "confirmations.mute.confirm": "Nutildyti", "confirmations.redraft.confirm": "Ištrinti ir perrašyti", "confirmations.redraft.message": "Ar tikrai nori ištrinti šį įrašą ir parašyti jį iš naujo? Bus prarastos mėgstamai ir pakėlimai, o atsakymai į originalinį įrašą taps liekamojais.", + "confirmations.redraft.title": "Ištrinti ir iš naujo parengti įrašą?", "confirmations.reply.confirm": "Atsakyti", "confirmations.reply.message": "Atsakant dabar, bus perrašyta šiuo metu kuriama žinutė. Ar tikrai nori tęsti?", + "confirmations.reply.title": "Perrašyti įrašą?", "confirmations.unfollow.confirm": "Nebesekti", "confirmations.unfollow.message": "Ar tikrai nori nebesekti {name}?", + "confirmations.unfollow.title": "Nebesekti naudotoją?", "conversation.delete": "Ištrinti pokalbį", "conversation.mark_as_read": "Žymėti kaip skaitytą", "conversation.open": "Peržiūrėti pokalbį", @@ -501,6 +508,7 @@ "notification_requests.title": "Filtruojami pranešimai", "notifications.clear": "Išvalyti pranešimus", "notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?", + "notifications.clear_title": "Valyti pranešimus?", "notifications.column_settings.admin.report": "Naujos ataskaitos:", "notifications.column_settings.admin.sign_up": "Naujos registracijos:", "notifications.column_settings.alert": "Darbalaukio pranešimai", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ee8622029c..e10d423a0f 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -166,21 +166,28 @@ "confirmations.block.confirm": "Zablokovať", "confirmations.delete.confirm": "Vymazať", "confirmations.delete.message": "Určite chcete tento príspevok vymazať?", + "confirmations.delete.title": "Vymazať príspevok?", "confirmations.delete_list.confirm": "Vymazať", "confirmations.delete_list.message": "Určite chcete tento zoznam trvalo vymazať?", + "confirmations.delete_list.title": "Vymazať zoznam?", "confirmations.discard_edit_media.confirm": "Zahodiť", "confirmations.discard_edit_media.message": "Máte neuložené zmeny v popise alebo náhľade média, zahodiť ich aj tak?", "confirmations.edit.confirm": "Upraviť", "confirmations.edit.message": "Úpravou prepíšete príspevok, ktorý máte rozpísaný. Určite chcete pokračovať?", + "confirmations.edit.title": "Prepísať príspevok?", "confirmations.logout.confirm": "Odhlásiť sa", "confirmations.logout.message": "Určite sa chcete odhlásiť?", + "confirmations.logout.title": "Odhlásiť sa?", "confirmations.mute.confirm": "Stíšiť", "confirmations.redraft.confirm": "Vymazať a prepísať", "confirmations.redraft.message": "Určite chcete tento príspevok vymazať a prepísať? Prídete o jeho zdieľania a ohviezdičkovania a odpovede na pôvodný príspevok budú odlúčené.", + "confirmations.redraft.title": "Vymazať a prepísať príspevok?", "confirmations.reply.confirm": "Odpovedať", "confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?", + "confirmations.reply.title": "Prepísať príspevok?", "confirmations.unfollow.confirm": "Prestať sledovať", "confirmations.unfollow.message": "Určite chcete prestať sledovať {name}?", + "confirmations.unfollow.title": "Prestať sledovať užívateľa?", "conversation.delete": "Vymazať konverzáciu", "conversation.mark_as_read": "Označiť ako prečítanú", "conversation.open": "Zobraziť konverzáciu", @@ -202,7 +209,12 @@ "dismissable_banner.public_timeline": "Toto sú najnovšie verejné príspevky od účtov na sociálnej sieti, ktoré sú sledované účtami z {domain}.", "domain_block_modal.block": "Blokovať server", "domain_block_modal.block_account_instead": "Namiesto toho zablokuj @{name}", + "domain_block_modal.they_can_interact_with_old_posts": "Ľudia z tohto servera môžu interaktovať s tvojimi starými príspevkami.", + "domain_block_modal.they_cant_follow": "Nikto z tohoto servera ťa nemôže nasledovať.", + "domain_block_modal.they_wont_know": "Nebude vedieť, že bol/a zablokovaný/á.", "domain_block_modal.title": "Blokovať doménu?", + "domain_block_modal.you_will_lose_followers": "Všetci tvoji nasledovatelia z tohto servera budú odstránení.", + "domain_block_modal.you_wont_see_posts": "Neuvidíš príspevky, ani oboznámenia od užívateľov na tomto serveri.", "domain_pill.server": "Server", "domain_pill.their_server": "Ich digitálny domov, kde žijú všetky ich príspevky.", "domain_pill.username": "Používateľské meno", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 9562757036..279bc09715 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Bllokoje", "confirmations.delete.confirm": "Fshije", "confirmations.delete.message": "Jeni i sigurt se doni të fshihet kjo gjendje?", + "confirmations.delete.title": "Të fshihet postimi?", "confirmations.delete_list.confirm": "Fshije", "confirmations.delete_list.message": "Jeni i sigurt se doni të fshihet përgjithmonë kjo listë?", + "confirmations.delete_list.title": "Të fshihet lista?", "confirmations.discard_edit_media.confirm": "Hidhe tej", "confirmations.discard_edit_media.message": "Keni ndryshime të paruajtura te përshkrimi ose paraparja e medias, të hidhen tej, sido qoftë?", "confirmations.edit.confirm": "Përpunojeni", "confirmations.edit.message": "Përpunimi tani do të sjellë mbishkrim të mesazhit që po hartoni aktualisht. Jeni i sigurt se doni të vazhdohet?", + "confirmations.edit.title": "Të mbishkruhet postimi?", "confirmations.logout.confirm": "Dilni", "confirmations.logout.message": "Jeni i sigurt se doni të dilet?", + "confirmations.logout.title": "Të dilet?", "confirmations.mute.confirm": "Heshtoje", "confirmations.redraft.confirm": "Fshijeni & rihartojeni", "confirmations.redraft.message": "Jeni i sigurt se doni të fshihet kjo gjendje dhe të rihartohet? Të parapëlqyerit dhe përforcimet do të humbin, ndërsa përgjigjet te postimi origjinal do të bëhen jetime.", + "confirmations.redraft.title": "Të fshihet & riharothet postimi?", "confirmations.reply.confirm": "Përgjigjuni", "confirmations.reply.message": "Po të përgjigjeni tani, mesazhi që po hartoni, do të mbishkruhet. Jeni i sigurt se doni të vazhdohet më tej?", + "confirmations.reply.title": "Të mbishkruhet postimi?", "confirmations.unfollow.confirm": "Resht së ndjekuri", "confirmations.unfollow.message": "Jeni i sigurt se doni të mos ndiqet më {name}?", + "confirmations.unfollow.title": "Të ndalet ndjekja e përdoruesit?", "conversation.delete": "Fshije bisedën", "conversation.mark_as_read": "Vëri shenjë si të lexuar", "conversation.open": "Shfaq bisedën", @@ -503,6 +510,7 @@ "notification_requests.title": "Njoftime të filtruar", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", + "notifications.clear_title": "Të spastrohen njoftimet?", "notifications.column_settings.admin.report": "Raportime të reja:", "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 6ed1742267..096de0f42e 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -37,6 +37,7 @@ "account.followers.empty": "Ingen följer denna användare än.", "account.followers_counter": "{count, plural, one {{counter} följare} other {{counter} följare}}", "account.following": "Följer", + "account.following_counter": "{count, plural, one {{counter} följer} other {{counter} följer}}", "account.follows.empty": "Denna användare följer inte någon än.", "account.go_to_profile": "Gå till profilen", "account.hide_reblogs": "Dölj boostar från @{name}", @@ -170,21 +171,28 @@ "confirmations.block.confirm": "Blockera", "confirmations.delete.confirm": "Radera", "confirmations.delete.message": "Är du säker på att du vill radera detta inlägg?", + "confirmations.delete.title": "Ta bort inlägg?", "confirmations.delete_list.confirm": "Radera", "confirmations.delete_list.message": "Är du säker på att du vill radera denna lista permanent?", + "confirmations.delete_list.title": "Ta bort listan?", "confirmations.discard_edit_media.confirm": "Kasta", "confirmations.discard_edit_media.message": "Du har osparade ändringar till mediabeskrivningen eller förhandsgranskningen, kasta bort dem ändå?", "confirmations.edit.confirm": "Redigera", "confirmations.edit.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", + "confirmations.edit.title": "Skriva över inlägg?", "confirmations.logout.confirm": "Logga ut", "confirmations.logout.message": "Är du säker på att du vill logga ut?", + "confirmations.logout.title": "Logga ut?", "confirmations.mute.confirm": "Tysta", "confirmations.redraft.confirm": "Radera & gör om", "confirmations.redraft.message": "Är du säker på att du vill radera detta inlägg och göra om det? Favoritmarkeringar, boostar och svar till det ursprungliga inlägget kommer förlora sitt sammanhang.", + "confirmations.redraft.title": "Ta bort & gör om inlägget?", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?", + "confirmations.reply.title": "Skriva över inlägget?", "confirmations.unfollow.confirm": "Avfölj", "confirmations.unfollow.message": "Är du säker på att du vill avfölja {name}?", + "confirmations.unfollow.title": "Avfölj %s?", "conversation.delete": "Radera konversation", "conversation.mark_as_read": "Markera som läst", "conversation.open": "Visa konversation", @@ -467,6 +475,9 @@ "navigation_bar.security": "Säkerhet", "not_signed_in_indicator.not_signed_in": "Du behöver logga in för att få åtkomst till denna resurs.", "notification.admin.report": "{name} rapporterade {target}", + "notification.admin.report_account": "{name} rapporterade {count, plural, one {ett inlägg} other {# inlägg}} från {target} för {category}", + "notification.admin.report_account_other": "{name} rapporterade {count, plural, one {ett inlägg} other {# inlägg}} från {target}", + "notification.admin.report_statuses": "{name} rapporterade {target} för {category}", "notification.admin.report_statuses_other": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoritmarkerade ditt inlägg", @@ -483,6 +494,7 @@ "notification.moderation_warning.action_silence": "Ditt konto har begränsats.", "notification.moderation_warning.action_suspend": "Ditt konto har stängts av.", "notification.own_poll": "Din röstning har avslutats", + "notification.poll": "En enkät som du röstat i har avslutats", "notification.private_mention": "{name} nämnde dig privat", "notification.reblog": "{name} boostade ditt inlägg", "notification.relationships_severance_event": "Förlorade kontakter med {name}", @@ -498,10 +510,12 @@ "notification_requests.title": "Filtrerade meddelanden", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", + "notifications.clear_title": "Rensa aviseringar?", "notifications.column_settings.admin.report": "Nya rapporter:", "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.beta.category": "Experimentella funktioner", + "notifications.column_settings.beta.grouping": "Gruppera notifikationer", "notifications.column_settings.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", "notifications.column_settings.filter_bar.category": "Snabbfilter", @@ -665,6 +679,7 @@ "report.unfollow_explanation": "Du följer detta konto. Avfölj hen för att inte se hens inlägg i ditt hemflöde.", "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", "report_notification.categories.legal": "Rättsligt", + "report_notification.categories.legal_sentence": "olagligt innehåll", "report_notification.categories.other": "Övrigt", "report_notification.categories.other_sentence": "övrigt", "report_notification.categories.spam": "Skräppost", @@ -698,8 +713,11 @@ "server_banner.about_active_users": "Personer som använt denna server de senaste 30 dagarna (månatligt aktiva användare)", "server_banner.active_users": "aktiva användare", "server_banner.administered_by": "Administrerad av:", + "server_banner.is_one_of_many": "{domain} är en av de många oberoende Mastodon-servrar som du kan använda för att delta i Fediversen.", "server_banner.server_stats": "Serverstatistik:", "sign_in_banner.create_account": "Skapa konto", + "sign_in_banner.follow_anyone": "Följ vem som helst över Fediverse och se allt i kronologisk ordning. Inga algoritmer, inga annonser och inga klickbeten i sikte.", + "sign_in_banner.mastodon_is": "Mastodon är det bästa sättet att hänga med i vad som händer.", "sign_in_banner.sign_in": "Logga in", "sign_in_banner.sso_redirect": "Logga in eller registrera dig", "status.admin_account": "Öppet modereringsgränssnitt för @{name}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index bb0b96943b..1bb22da225 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Engelle", "confirmations.delete.confirm": "Sil", "confirmations.delete.message": "Bu tootu silmek istediğinden emin misin?", + "confirmations.delete.title": "Gönderiyi sil?", "confirmations.delete_list.confirm": "Sil", "confirmations.delete_list.message": "Bu listeyi kalıcı olarak silmek istediğinden emin misin?", + "confirmations.delete_list.title": "Listeyi sil?", "confirmations.discard_edit_media.confirm": "Vazgeç", "confirmations.discard_edit_media.message": "Medya açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?", "confirmations.edit.confirm": "Düzenle", "confirmations.edit.message": "Şimdi düzenlersen şu an oluşturduğun iletinin üzerine yazılır. Devam etmek istediğine emin misin?", + "confirmations.edit.title": "Gönderinin üzerine yaz?", "confirmations.logout.confirm": "Oturumu kapat", "confirmations.logout.message": "Oturumu kapatmak istediğinden emin misin?", + "confirmations.logout.title": "Oturumu kapat?", "confirmations.mute.confirm": "Sessize al", "confirmations.redraft.confirm": "Sil Düzenle ve yeniden paylaş", "confirmations.redraft.message": "Bu gönderiyi silip taslak haline getirmek istediğinize emin misiniz? Mevcut favoriler ve boostlar silinecek ve gönderiye verilen yanıtlar başıboş kalacak.", + "confirmations.redraft.title": "Gönderiyi sil veya taslağa dönüştür?", "confirmations.reply.confirm": "Yanıtla", "confirmations.reply.message": "Şimdi yanıtlarken o an oluşturduğun mesajın üzerine yazılır. Devam etmek istediğine emin misin?", + "confirmations.reply.title": "Gönderinin üzerine yaz?", "confirmations.unfollow.confirm": "Takibi bırak", "confirmations.unfollow.message": "{name} adlı kullanıcıyı takibi bırakmak istediğinden emin misin?", + "confirmations.unfollow.title": "Kullanıcıyı takipten çık?", "conversation.delete": "Sohbeti sil", "conversation.mark_as_read": "Okundu olarak işaretle", "conversation.open": "Sohbeti görüntüle", @@ -503,6 +510,7 @@ "notification_requests.title": "Filtrelenmiş bildirimler", "notifications.clear": "Bildirimleri temizle", "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", + "notifications.clear_title": "Bildirimleri temizle?", "notifications.column_settings.admin.report": "Yeni bildirimler:", "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index fb9c35e438..dd91e0e77a 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -179,16 +179,20 @@ "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?", "confirmations.edit.confirm": "Змінити", "confirmations.edit.message": "Редагування перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", + "confirmations.edit.title": "Перезаписати допис?", "confirmations.logout.confirm": "Вийти", "confirmations.logout.message": "Ви впевнені, що хочете вийти?", "confirmations.logout.title": "Вийти?", "confirmations.mute.confirm": "Приховати", "confirmations.redraft.confirm": "Видалити та виправити", "confirmations.redraft.message": "Ви впевнені, що хочете видалити цей допис та переписати його? Додавання у вибране та поширення буде втрачено, а відповіді на оригінальний допис залишаться без першоджерела.", + "confirmations.redraft.title": "Видалити та переробити допис?", "confirmations.reply.confirm": "Відповісти", "confirmations.reply.message": "Нова відповідь перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", + "confirmations.reply.title": "Перезаписати допис?", "confirmations.unfollow.confirm": "Відписатися", "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?", + "confirmations.unfollow.title": "Відписатися від користувача?", "conversation.delete": "Видалити бесіду", "conversation.mark_as_read": "Позначити як прочитане", "conversation.open": "Переглянути бесіду", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index af8008b272..3001675498 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -171,21 +171,28 @@ "confirmations.block.confirm": "Chặn", "confirmations.delete.confirm": "Xóa bỏ", "confirmations.delete.message": "Bạn thật sự muốn xóa tút này?", + "confirmations.delete.title": "Xóa tút?", "confirmations.delete_list.confirm": "Xóa bỏ", "confirmations.delete_list.message": "Bạn thật sự muốn xóa vĩnh viễn danh sách này?", + "confirmations.delete_list.title": "Xóa danh sách?", "confirmations.discard_edit_media.confirm": "Bỏ qua", "confirmations.discard_edit_media.message": "Bạn chưa lưu thay đổi đối với phần mô tả hoặc bản xem trước của media, vẫn bỏ luôn?", "confirmations.edit.confirm": "Sửa", "confirmations.edit.message": "Nội dung tút cũ sẽ bị ghi đè, bạn có tiếp tục?", + "confirmations.edit.title": "Viết đè lên tút cũ?", "confirmations.logout.confirm": "Đăng xuất", "confirmations.logout.message": "Bạn có thật sự muốn thoát?", + "confirmations.logout.title": "Đăng xuất?", "confirmations.mute.confirm": "Ẩn", "confirmations.redraft.confirm": "Xóa & viết lại", "confirmations.redraft.message": "Bạn thật sự muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và đăng lại của tút, cũng như những trả lời sẽ không còn nội dung gốc.", + "confirmations.redraft.title": "Xóa & viết lại?", "confirmations.reply.confirm": "Trả lời", "confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?", + "confirmations.reply.title": "Viết đè lên tút cũ?", "confirmations.unfollow.confirm": "Bỏ theo dõi", "confirmations.unfollow.message": "Bạn thật sự muốn bỏ theo dõi {name}?", + "confirmations.unfollow.title": "Bỏ theo dõi?", "conversation.delete": "Xóa tin nhắn này", "conversation.mark_as_read": "Đánh dấu là đã đọc", "conversation.open": "Xem toàn bộ tin nhắn", @@ -503,6 +510,7 @@ "notification_requests.title": "Thông báo đã lọc", "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", + "notifications.clear_title": "Xóa hết thông báo?", "notifications.column_settings.admin.report": "Báo cáo mới:", "notifications.column_settings.admin.sign_up": "Người mới tham gia:", "notifications.column_settings.alert": "Báo trên máy tính", diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 635bab5460..0ad8e1028e 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -298,12 +298,6 @@ html { .directory__tag > div { background: $white; border: 1px solid var(--background-border-color); - - @media screen and (max-width: $no-gap-breakpoint) { - border-left: 0; - border-right: 0; - border-top: 0; - } } .picture-in-picture-placeholder { @@ -318,10 +312,6 @@ html { &:focus { background: $ui-base-color; } - - @media screen and (max-width: $no-gap-breakpoint) { - border: 0; - } } .batch-table { diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index e63601fa9f..894332acb5 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -350,6 +350,10 @@ color: $primary-text-color; font-weight: 700; } + + .warning-hint { + font-weight: normal !important; + } } &__body { diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 41ccbc3746..4c8e647c54 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1,6 +1,6 @@ @use 'sass:math'; -$no-columns-breakpoint: 600px; +$no-columns-breakpoint: 890px; $sidebar-width: 300px; $content-width: 840px; diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss index eab7937150..65f42d0467 100644 --- a/app/javascript/styles/mastodon/tables.scss +++ b/app/javascript/styles/mastodon/tables.scss @@ -286,6 +286,10 @@ a.table-action-link { padding: 0; } + &--padded { + padding: 12px 16px 16px; + } + &--with-image { display: flex; align-items: center; diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb index 71d6c63fb5..84ffc41d74 100644 --- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb +++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb @@ -85,7 +85,14 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim def imagemagick_version return if Rails.configuration.x.use_vips - version = `convert -version`.match(/Version: ImageMagick ([\d\.]+)/)[1] + imagemagick_binary = Paperclip.options[:is_windows] ? 'magick convert' : 'convert' + + version_output = Terrapin::CommandLine.new(imagemagick_binary, '-version').run + version_match = version_output.match(/Version: ImageMagick (\S+)/)[1].strip + + return nil unless version_match + + version = version_match { key: 'imagemagick', @@ -93,7 +100,7 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim value: version, human_value: version, } - rescue Errno::ENOENT + rescue Terrapin::CommandNotFoundError, Terrapin::ExitStatusError, Paperclip::Errors::CommandNotFoundError, Paperclip::Errors::CommandFailedError nil end diff --git a/app/models/admin/tag_filter.rb b/app/models/admin/tag_filter.rb new file mode 100644 index 0000000000..6149c52175 --- /dev/null +++ b/app/models/admin/tag_filter.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +class Admin::TagFilter + KEYS = %i( + status + name + order + ).freeze + + attr_reader :params + + def initialize(params) + @params = params.to_h.symbolize_keys + end + + def results + scope = Tag.reorder(nil) + + params.each do |key, value| + next if key == :page + + scope.merge!(scope_for(key, value)) if value.present? + end + + scope + end + + private + + def scope_for(key, value) + case key + when :status + status_scope(value) + when :name + Tag.search_for(value.to_s.strip, params[:limit], params[:offset], exclude_unlistable: false) + when :order + order_scope(value) + else + raise Mastodon::InvalidParameterError, "Unknown filter: #{key}" + end + end + + def status_scope(value) + case value.to_s + when 'reviewed' + Tag.reviewed + when 'review_requested' + Tag.pending_review + when 'unreviewed' + Tag.unreviewed + when 'trendable' + Tag.trendable + when 'not_trendable' + Tag.not_trendable + when 'usable' + Tag.usable + when 'not_usable' + Tag.not_usable + else + raise Mastodon::InvalidParameterError, "Unknown status: #{value}" + end + end + + def order_scope(value) + case value.to_s + when 'newest' + Tag.order(created_at: :desc) + when 'oldest' + Tag.order(created_at: :asc) + else + raise Mastodon::InvalidParameterError, "Unknown order: #{value}" + end + end +end diff --git a/app/models/tag.rb b/app/models/tag.rb index dd1cb3027d..9006e1f25d 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -52,6 +52,7 @@ class Tag < ApplicationRecord scope :unreviewed, -> { where(reviewed_at: nil) } scope :pending_review, -> { unreviewed.where.not(requested_review_at: nil) } scope :usable, -> { where(usable: [true, nil]) } + scope :not_usable, -> { where(usable: false) } scope :listable, -> { where(listable: [true, nil]) } scope :trendable, -> { Setting.trendable_by_default ? where(trendable: [true, nil]) : where(trendable: true) } scope :not_trendable, -> { where(trendable: false) } @@ -74,6 +75,10 @@ class Tag < ApplicationRecord attributes['display_name'] || name end + def formatted_name + "##{display_name}" + end + def usable boolean_with_default('usable', true) end @@ -132,8 +137,10 @@ class Tag < ApplicationRecord def search_for(term, limit = 5, offset = 0, options = {}) stripped_term = term.strip + options.reverse_merge!({ exclude_unlistable: true, exclude_unreviewed: false }) - query = Tag.listable.matches_name(stripped_term) + query = Tag.matches_name(stripped_term) + query = query.merge(Tag.listable) if options[:exclude_unlistable] query = query.merge(matching_name(stripped_term).or(where.not(reviewed_at: nil))) if options[:exclude_unreviewed] query.order(Arel.sql('length(name) ASC, name ASC')) diff --git a/app/views/admin/tags/_tag.html.haml b/app/views/admin/tags/_tag.html.haml new file mode 100644 index 0000000000..322eee0407 --- /dev/null +++ b/app/views/admin/tags/_tag.html.haml @@ -0,0 +1,27 @@ +.batch-table__row{ class: [!tag.requires_review? && !tag.usable? && 'batch-table__row--muted'] } + .batch-table__row__content.batch-table__row__content--padded.pending-account + .pending-account__header + %strong + = link_to tag.formatted_name, admin_tag_path(tag.id) + + %br/ + + - if tag.usable? + = t('admin.tags.moderation.usable') + - else + = t('admin.tags.moderation.not_usable') + + · + - if tag.trendable? + = t('admin.tags.moderation.trendable') + - else + = t('admin.tags.moderation.not_trendable') + + - if tag.requested_review? || tag.requires_review? + · + - if tag.requested_review? + %span.negative-hint + = t('admin.tags.moderation.review_requested') + - else + %span.warning-hint + = t('admin.tags.moderation.pending_review') diff --git a/app/views/admin/tags/index.html.haml b/app/views/admin/tags/index.html.haml new file mode 100644 index 0000000000..8d76d8ffa7 --- /dev/null +++ b/app/views/admin/tags/index.html.haml @@ -0,0 +1,39 @@ +- content_for :page_title do + = t('admin.tags.title') + += form_with url: admin_tags_url, method: :get, class: :simple_form do |form| + .filters + .filter-subset.filter-subset--with-select + %strong= t('admin.tags.moderation.title') + .input.select.optional + = form.select :status, + options_for_select(admin_tags_moderation_options, params[:status]), + prompt: t('generic.all') + + .filter-subset.filter-subset--with-select + %strong= t 'generic.order_by' + .input.select + = form.select :order, + options_for_select([[t('admin.tags.newest'), 'newest'], [t('admin.tags.oldest'), 'oldest']], params[:order]) + + .fields-group + .input.string.optional + = form.text_field :name, + value: params[:name], + class: 'string optional', + placeholder: t('admin.tags.name') + + .actions + %button.button= t('admin.tags.search') + = link_to t('admin.tags.reset'), admin_tags_path, class: 'button negative' + +%hr.spacer/ + +.batch-table + .batch-table__body + - if @tags.empty? + = nothing_here 'nothing-here--under-tabs' + - else + = render partial: 'tag', collection: @tags + += paginate @tags diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml index f2d87b54b0..f6155575ae 100644 --- a/app/views/admin/tags/show.html.haml +++ b/app/views/admin/tags/show.html.haml @@ -1,12 +1,13 @@ - content_for :page_title do - = "##{@tag.display_name}" + = @tag.formatted_name -- if current_user.can?(:view_dashboard) - - content_for :heading_actions do +- content_for :heading_actions do + - if current_user.can?(:view_dashboard) = l(@time_period.first) = ' - ' = l(@time_period.last) +- if current_user.can?(:view_dashboard) .dashboard .dashboard__item = react_admin_component :counter, diff --git a/app/views/admin/trends/tags/_tag.html.haml b/app/views/admin/trends/tags/_tag.html.haml index 8cc0d713b9..b1e714a912 100644 --- a/app/views/admin/trends/tags/_tag.html.haml +++ b/app/views/admin/trends/tags/_tag.html.haml @@ -4,9 +4,7 @@ .batch-table__row__content.pending-account .pending-account__header - = link_to admin_tag_path(tag.id) do - = material_symbol 'tag' - = tag.display_name + = link_to tag.formatted_name, admin_tag_path(tag.id) %br/ diff --git a/config/locales/bg.yml b/config/locales/bg.yml index c0abc3c845..fdaab7ac2a 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -12,7 +12,7 @@ bg: one: Последовател other: Последователи following: Следва - instance_actor_flash: Акаунтът е виртуално действащо лице, представляващо сървъра, а не отделен потребител. Използва се за федерацията и не бива да се спира. + instance_actor_flash: Акаунтът е виртуално действащо лице, представляващо сървъра, а не отделен потребител. Използва се за целите на федериране и не бива да се спира. last_active: последна дейност link_verified_on: Собствеността върху тази връзка е проверена на %{date} nothing_here: Тук няма нищо! @@ -471,6 +471,9 @@ bg: title: Препоръки за следване unsuppress: Възстановяване на препоръките за следване instances: + audit_log: + title: Скорошни одитни дневници + view_all: Преглед на пълните одитни дневници availability: description_html: one: Ако доставянето до домейна не е успешно за %{count} ден, няма да има последващи опити, докато не се получи доставка от домейна. diff --git a/config/locales/cy.yml b/config/locales/cy.yml index cd48b3e3b0..5f1b0b4bce 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -238,6 +238,7 @@ cy: update_custom_emoji: Diweddaru Emoji Addasedig update_domain_block: Diweddaru'r Blocio Parth update_ip_block: Diweddaru rheol IP + update_report: Diweddaru Adroddiad update_status: Diweddaru Postiad update_user_role: Diweddaru Rôl actions: @@ -686,6 +687,7 @@ cy: report: 'Adroddiad #%{id}' reported_account: Cyfrif wedi ei adrodd reported_by: Adroddwyd gan + reported_with_application: Adroddwyd gydag ap resolved: Wedi ei ddatrys resolved_msg: Llwyddwyd i ddatrys yr adroddiad! skip_to_actions: Mynd i gamau gweithredu diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index f6223fc480..61d58981d8 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -51,7 +51,7 @@ fi: explanation: Sisäänkirjautuminen on nyt mahdollista pelkällä sähköpostiosoitteella ja salasanalla. subject: 'Mastodon: kaksivaiheinen todennus poistettu käytöstä' subtitle: Kaksivaiheinen todennus on poistettu käytöstä tililtäsi. - title: 2-vaiheinen todennus pois käytöstä + title: Kaksivaiheinen todennus poissa käytöstä two_factor_enabled: explanation: Sisäänkirjautuminen edellyttää liitetyn TOTP-sovelluksen luomaa aikarajattua kertatunnuslukua. subject: 'Mastodon: kaksivaiheinen todennus otettu käyttöön' @@ -61,7 +61,7 @@ fi: explanation: Uudet palautuskoodit on nyt luotu ja vanhat mitätöity. subject: 'Mastodon: kaksivaiheisen todennuksen palautuskoodit luotiin uudelleen' subtitle: Aiemmat palautuskoodit on mitätöity, ja korvaavat uudet koodit on luotu. - title: 2-vaiheisen todennuksen palautuskoodit vaihdettiin + title: Kaksivaiheisen todennuksen palautuskoodit vaihdettiin unlock_instructions: subject: 'Mastodon: ohjeet lukituksen poistoon' webauthn_credential: @@ -84,8 +84,8 @@ fi: subject: 'Mastodon: suojausavaimella todennus otettu käyttöön' title: Suojausavaimet käytössä omniauth_callbacks: - failure: Tunnistautuminen lähteestä %{kind} ei onnistunut, syynä ”%{reason}”. - success: Tunnistautuminen tililtä %{kind} onnistui. + failure: Todentaminen lähteestä %{kind} ei onnistunut, syynä ”%{reason}”. + success: Todentaminen tililtä %{kind} onnistui. passwords: no_token: Tälle sivulle pääsee vain salasananvaihtoviestin kautta. Jos tiedät tulevasi sen kautta, varmista, että käytät viestissä mainittua URL-osoitetta kokonaisuudessaan. send_instructions: Jos sähköpostiosoiteesi on tiedossamme, siihen lähetetään pian viesti, jossa on linkki salasanan vaihtamiseksi. Jos viestiä ei kuulu, tarkista roskapostikansiosi. diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml index dd53661827..a1ef177854 100644 --- a/config/locales/doorkeeper.bg.yml +++ b/config/locales/doorkeeper.bg.yml @@ -83,6 +83,7 @@ bg: access_denied: Заявката беше отказана от собственика на ресурса или от сървъра за упълномощаване. credential_flow_not_configured: Resource Owner Password Credentials предизвика грешка, заради това, че настройките за Doorkeeper.configure.resource_owner_from_credentials липсват. invalid_client: Удостоверяването на клиента предизвика грешка, поради непознат клиент, липсващо клиентско удостоверяване, или заради това, че методът на удостоверяване не се поддържа. + invalid_code_challenge_method: Методът на предизвикателството на кода трябва да е S256, обикновен не се поддържа. invalid_grant: Предоставеното удостоверение за достъп е невалидно, изтекло, отхвърлено, не съвпада с пренасочващото URI, използвано в заявката за удостоверение, или е бил издадено от друг клиент. invalid_redirect_uri: Включеният пренасочващ Uri е невалиден. invalid_request: diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml index 0323656dab..85a09b5b43 100644 --- a/config/locales/doorkeeper.ca.yml +++ b/config/locales/doorkeeper.ca.yml @@ -83,6 +83,7 @@ ca: access_denied: El propietari del recurs o servidor d'autorizació ha denegat la petició. credential_flow_not_configured: Les credencials de contrasenya del propietari del recurs han fallat degut a que Doorkeeper.configure.resource_owner_from_credentials està sense configurar. invalid_client: La autentificació del client ha fallat perquè és un client desconegut o no està inclòsa l'autentificació del client o el mètode d'autenticació no està confirmat. + invalid_code_challenge_method: El mètode de desafiament de codi ha de ser S256, no es permet que sigui pla. invalid_grant: La concessió d'autorizació oferta és invàlida, ha vençut, s'ha revocat, no coincideix amb l'URI de redirecció utilizada en la petició d'autorizació, o fou emesa per a un altre client. invalid_redirect_uri: L'uri de redirecció inclòsa no és vàlida. invalid_request: diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml index e023bc0603..f15d74d721 100644 --- a/config/locales/doorkeeper.cy.yml +++ b/config/locales/doorkeeper.cy.yml @@ -83,6 +83,7 @@ cy: access_denied: Mae perchennog yr adnodd neu'r gweinydd awdurdodi wedi atal y cais. credential_flow_not_configured: Llif meini prawf cyfrinair perchennog yr adnodd wedi methu achos fod Doorkeeper.configure.resource_owner_from_credentials heb ei ffurfweddu. invalid_client: Methodd dilysu cleient oherwydd cleient anhysbys, dim dilysiad cleient wedi'i gynnwys, neu ddull dilysu heb ei gefnogi. + invalid_code_challenge_method: Rhaid i'r dull herio cod fod yn S256, nid oes cefnogaeth i'r plaen. invalid_grant: Mae'r grant awdurdodi ar yr amod yn annilys, wedi dod i ben, wedi'i ddirymu, nid yw'n cyfateb i'r URI ailgyfeirio a ddefnyddiwyd yn y cais am awdurdodiad, neu wedi'i roi i gleient arall. invalid_redirect_uri: Nid yw'r uri ailgyfeirio a gynhwysir yn ddilys. invalid_request: diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml index d462f43d3b..cd11dcf4e3 100644 --- a/config/locales/doorkeeper.da.yml +++ b/config/locales/doorkeeper.da.yml @@ -83,6 +83,7 @@ da: access_denied: Ressourceejeren eller godkendelsesserveren afviste anmodningen. credential_flow_not_configured: Ressourceejeradgangskodeakkreditiver-flow mislykkedes grundet ikke-opsat Doorkeeper.configure.resource_owner_from_credentials. invalid_client: Klientgodkendelse mislykkedes grundet en ukendt klient, ingen inkluderet klientgodkendelse eller uunderstøttet godkendelsesmetode. + invalid_code_challenge_method: Kodeudfordringsmetoden skal være S256, simpel (plain) er uunderstøttet. invalid_grant: Den leverede godkendelse er ugyldig, udløbet, ophævet, matcher ikke omdirigerings-URI'en brugt i godkendelsesanmodningen eller er udstedt til en anden klient. invalid_redirect_uri: Inkluderede ormdirigerings-URI er ugyldig. invalid_request: diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml index f303aa23a2..b29d668b2e 100644 --- a/config/locales/doorkeeper.de.yml +++ b/config/locales/doorkeeper.de.yml @@ -83,6 +83,7 @@ de: access_denied: Diese Anfrage wurde von den Inhaber*innen oder durch den Autorisierungsserver abgelehnt. credential_flow_not_configured: Das Konto konnte nicht gefunden werden, da Doorkeeper.configure.resource_owner_from_credentials nicht konfiguriert ist. invalid_client: 'Client-Authentisierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.' + invalid_code_challenge_method: Die Code-Challenge-Methode muss „S256“ sein, „plain“ wird nicht unterstützt. invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen oder einem anderen Client ausgestellt, oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein. invalid_redirect_uri: Der beigefügte Weiterleitungs-URI ist ungültig. invalid_request: diff --git a/config/locales/doorkeeper.es-AR.yml b/config/locales/doorkeeper.es-AR.yml index 0b04696b6a..91f4191247 100644 --- a/config/locales/doorkeeper.es-AR.yml +++ b/config/locales/doorkeeper.es-AR.yml @@ -83,6 +83,7 @@ es-AR: access_denied: El propietario del recurso o servidor de autorización denegó la petición. credential_flow_not_configured: Las credenciales de contraseña del propietario del recurso fallaron debido a que "Doorkeeper.configure.resource_owner_from_credentials" está sin configurar. invalid_client: La autenticación del cliente falló debido a que es un cliente desconocido, o no está incluída la autenticación del cliente, o el método de autenticación no está soportado. + invalid_code_challenge_method: El método de desafío de código debe ser S256, «plain» no está soportado. invalid_grant: La concesión de autorización ofrecida no es válida, venció, se revocó, no coincide con la dirección web de redireccionamiento usada en la petición de autorización, o fue emitida para otro cliente. invalid_redirect_uri: La dirección web de redireccionamiento incluida no es válida. invalid_request: diff --git a/config/locales/doorkeeper.es-MX.yml b/config/locales/doorkeeper.es-MX.yml index 54386c4c33..b5987676d2 100644 --- a/config/locales/doorkeeper.es-MX.yml +++ b/config/locales/doorkeeper.es-MX.yml @@ -83,6 +83,7 @@ es-MX: access_denied: El propietario del recurso o servidor de autorización denegó la petición. credential_flow_not_configured: Las credenciales de contraseña del propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_from_credentials está sin configurar. invalid_client: La autentificación del cliente falló ya que es un cliente desconocido, no está incluída la autentificación del cliente o el método de autentificación no es compatible. + invalid_code_challenge_method: El método de desafío de código debe ser S256, «plain» no está soportado. invalid_grant: La concesión de autorización ofrecida es inválida, venció, se revocó, no coincide con la URI de redirección utilizada en la petición de autorización, o fue emitida para otro cliente. invalid_redirect_uri: La URI de redirección incluida no es válida. invalid_request: diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml index 9be036a1d4..b3c7ccddd4 100644 --- a/config/locales/doorkeeper.es.yml +++ b/config/locales/doorkeeper.es.yml @@ -83,6 +83,7 @@ es: access_denied: El propietario del recurso o servidor de autorización denegó la petición. credential_flow_not_configured: Las credenciales de contraseña del propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_from_credentials está sin configurar. invalid_client: La autentificación del cliente falló debido o a que es un cliente desconocido o no está incluída la autentificación del cliente o el método de autentificación no está confirmado. + invalid_code_challenge_method: El método de desafío de código debe ser S256, «plain» no está soportado. invalid_grant: La concesión de autorización ofrecida es inválida, venció, se revocó, no coincide con la URI de redirección utilizada en la petición de autorización, o fue emitida para otro cliente. invalid_redirect_uri: La URI de redirección incluida no es válida. invalid_request: diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml index 3aae89f6ca..ecd2fab690 100644 --- a/config/locales/doorkeeper.fi.yml +++ b/config/locales/doorkeeper.fi.yml @@ -83,6 +83,7 @@ fi: access_denied: Resurssin omistaja tai valtuutuspalvelin hylkäsi pyynnön. credential_flow_not_configured: Resurssin omistajan salasanatietojen luku epäonnistui, koska asetusta Doorkeeper.configure.resource_owner_from_credentials ei ole konfiguroitu. invalid_client: Asiakasohjelman todennus epäonnistui, koska asiakas on tuntematon, asiakkaan todennus ei ollut mukana tai todennustapaa ei tueta. + invalid_code_challenge_method: Koodihaastemenetelmän tulee olla S256 – selväkielistä ei tueta. invalid_grant: Valtuutuslupa on virheellinen, vanhentunut, peruttu, valtuutuspyynnössä käytettyä uudelleenohjaus-URI:tä vastaamaton tai myönnetty toiselle asiakkaalle. invalid_redirect_uri: Uudelleenohjaus-URI on virheellinen. invalid_request: @@ -165,7 +166,7 @@ fi: admin:write:ip_blocks: suorita moderointitoimia estetyille IP-osoitteille admin:write:reports: suorita moderointitoimia raporteille crypto: käytä päästä päähän -salausta - follow: muokkaa tilin suhteita + follow: muokkaa tilin seurantasuhteita profile: lue vain tilisi profiilitietoja push: vastaanota puskuilmoituksesi read: lue kaikkia tilin tietoja diff --git a/config/locales/doorkeeper.fo.yml b/config/locales/doorkeeper.fo.yml index bd9457b620..29f8cd3387 100644 --- a/config/locales/doorkeeper.fo.yml +++ b/config/locales/doorkeeper.fo.yml @@ -83,6 +83,7 @@ fo: access_denied: Tilfarseigarin ella váttanarambætarin noktaðu umbønina. credential_flow_not_configured: Resource Owner Password Credentials floymurin eydnaðist ikki. Orsøkin var, at Doorkeeper.configure.resource_owner_from_credentials var ikki sett upp. invalid_client: Viðskiftaraváttan miseydnaðist. Orsøkin var ein ókendur viðskiftari, at eingin viðskiftaraváttan var við ella at váttanarmannagongdin er ókend. + invalid_code_challenge_method: Koduavbjóðingarmetodan má vera S256, einfalt format riggar ikki. invalid_grant: Veitta váttanarheimildin er antin ógildug, útgingin, tikin aftur, samsvarar ikki við endursendingar-URI'ið, sum bleiv brúkt í váttanarumbønini ella var flýggjað øðrum viðskiftara. invalid_redirect_uri: Endursendingar-URI'ið, sum var viðheft, er ógyldugt. invalid_request: diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml index 09857768e3..95c3c4d223 100644 --- a/config/locales/doorkeeper.ga.yml +++ b/config/locales/doorkeeper.ga.yml @@ -83,6 +83,7 @@ ga: access_denied: Shéan úinéir na hacmhainne nó an freastalaí údaraithe an t-iarratas. credential_flow_not_configured: Theip ar shreabhadh Dintiúir Pasfhocal Úinéir Acmhainne toisc go raibh Doorkeeper.configure.resource_owner_from_credentials díchumraithe. invalid_client: Theip ar fhíordheimhniú cliant de bharr cliant anaithnid, níl fíordheimhniú cliant san áireamh, nó modh fíordheimhnithe nach dtacaítear leis. + invalid_code_challenge_method: Ní mór gur S256 an modh dúshlán cód, ach ní thacaítear leis. invalid_grant: Tá an deonú údaraithe ar choinníoll neamhbhailí, imithe in éag, cúlghairthe, nach ionann é agus an URI atreoraithe a úsáideadh san iarratas ar údarú, nó gur eisíodh é chuig cliant eile. invalid_redirect_uri: Níl an uri atreoraithe atá san áireamh bailí. invalid_request: diff --git a/config/locales/doorkeeper.is.yml b/config/locales/doorkeeper.is.yml index 84a4d38954..01093f4429 100644 --- a/config/locales/doorkeeper.is.yml +++ b/config/locales/doorkeeper.is.yml @@ -83,6 +83,7 @@ is: access_denied: Eigandi tilfangs eða auðkenningarþjónn höfnuðu beininni. credential_flow_not_configured: Flæði á lykilorðsauðkennum eiganda tilfangs (Resource Owner) brást vegna þess að Doorkeeper.configure.resource_owner_from_credentials er óskilgreint. invalid_client: Auðkenning á biðlara brást vegna þess að biðlarinn er óþekktur, að auðkenning biðlarans fylgdi ekki með, eða að notuð var óstudd auðkenningaraðferð. + invalid_code_challenge_method: Aðferð við ráðningu kóðans verður að vera í S256, hreinn texti er ekki studdur. invalid_grant: Uppgefin auðkenningarheimild er ógild, útrunnin, afturkölluð, samsvarar ekki endurbirtingarslóðinni í auðkenningarbeiðninni, eða var gefin út til annars biðlara. invalid_redirect_uri: Endurbeiningarslóðin sem fylgdi er ekki gild. invalid_request: diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml index f5df14deac..9654cb2a20 100644 --- a/config/locales/doorkeeper.it.yml +++ b/config/locales/doorkeeper.it.yml @@ -83,6 +83,7 @@ it: access_denied: Il proprietario della risorsa o il server d'autorizzazione ha negato la richiesta. credential_flow_not_configured: Il processo delle Credenziali Password del Proprietario della Risorsa è fallito a causa della mancata configurazione di Doorkeeper.configure.resource_owner_from_credentials. invalid_client: Autenticazione del client fallita a causa di un client sconosciuto, di nessun'autenticazione del client inclusa o di un metodo d'autenticazione non supportato. + invalid_code_challenge_method: Il metodo di verifica del codice deve essere S256, semplice non è supportato. invalid_grant: L'autorizzazione fornita non è valida, è scaduta, è stata revocata, non corrisponde all'URI di reindirizzamento utilizzato nella richiesta d'autorizzazione o è stata emessa a un altro client. invalid_redirect_uri: L'uri di reindirizzamento incluso non è valido. invalid_request: diff --git a/config/locales/doorkeeper.lt.yml b/config/locales/doorkeeper.lt.yml index 38bb17ad13..d04e4c9f2c 100644 --- a/config/locales/doorkeeper.lt.yml +++ b/config/locales/doorkeeper.lt.yml @@ -83,6 +83,7 @@ lt: access_denied: Išteklių savininkas (-ė) arba įgaliojimų serveris atmetė užklausą. credential_flow_not_configured: Išteklių savininko slaptažodžio kredencialų srautas nepavyko, nes Doorkeeper.configure.resource_owner_from_credentials nėra nesukonfigūruotas. invalid_client: Kliento tapatybės nustatymas nepavyko dėl nežinomo kliento, neįtraukto kliento tapatybės nustatymo arba nepalaikomo tapatybės nustatymo metodo. + invalid_code_challenge_method: Kodo iššūkio būdas turi būti S256. Paprastas nepalaikomas. invalid_grant: Pateiktas įgaliojimas yra netinkamas, pasibaigęs, panaikintas, neatitinka įgaliojimo užklausoje naudoto nukreipimo URI arba buvo išduotas kitam klientui. invalid_redirect_uri: Nukreipimo uri įtrauktas yra netinkamas. invalid_request: diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml index 0a3d8fd081..f75cc04eab 100644 --- a/config/locales/doorkeeper.nl.yml +++ b/config/locales/doorkeeper.nl.yml @@ -83,6 +83,7 @@ nl: access_denied: De resource-eigenaar of autorisatie-server weigerde het verzoek. credential_flow_not_configured: De wachtwoordgegevens-flow van de resource-eigenaar is mislukt omdat Doorkeeper.configure.resource_owner_from_credentials niet is ingesteld. invalid_client: Clientverificatie is mislukt door een onbekende client, ontbrekende client-authenticatie of een niet ondersteunde authenticatie-methode. + invalid_code_challenge_method: De code-uitdagingsmethode moet S256 zijn, eenvoudig wordt niet ondersteund. invalid_grant: De verstrekte autorisatie is ongeldig, verlopen, ingetrokken, komt niet overeen met de redirect-URI die is opgegeven of werd uitgegeven aan een andere client. invalid_redirect_uri: De opgegeven redirect-URI is ongeldig. invalid_request: diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml index a18a86e979..bf2da6f808 100644 --- a/config/locales/doorkeeper.pl.yml +++ b/config/locales/doorkeeper.pl.yml @@ -83,6 +83,7 @@ pl: access_denied: Właściciel zasobu lub serwer autoryzujący odrzuciły żądanie. credential_flow_not_configured: Ścieżka "Resource Owner Password Credentials" zakończyła się błędem, ponieważ Doorkeeper.configure.resource_owner_from_credentials nie został skonfigurowany. invalid_client: Autoryzacja klienta nie powiodła się z powodu nieznanego klienta, braku uwierzytelnienia klienta, lub niewspieranej metody uwierzytelniania. + invalid_code_challenge_method: Metodą wyzwania kodowego musi być S256, plain jest nieobsługiwany. invalid_grant: Grant uwierzytelnienia jest niepoprawny, przeterminowany, unieważniony, nie pasuje do URI przekierowwania użytego w żądaniu uwierzytelnienia, lub został wystawiony przez innego klienta. invalid_redirect_uri: URI przekierowania jest nieprawidłowy. invalid_request: diff --git a/config/locales/doorkeeper.pt-PT.yml b/config/locales/doorkeeper.pt-PT.yml index f03cee6b3a..30ea62d9eb 100644 --- a/config/locales/doorkeeper.pt-PT.yml +++ b/config/locales/doorkeeper.pt-PT.yml @@ -83,6 +83,7 @@ pt-PT: access_denied: O proprietário do recurso ou servidor de autorização negou o pedido. credential_flow_not_configured: As credenciais da palavra-passe do proprietário do recurso falhou devido a que Doorkeeper.configure.resource_owner_from_credentials não foram configuradas. invalid_client: Autenticação do cliente falhou por causa de um cliente desconhecido, nenhum cliente de autenticação incluído ou método de autenticação não suportado. + invalid_code_challenge_method: O método de validação do código tem de ser S256, o método simples não é suportado. invalid_grant: A concessão de autorização fornecida é inválida, expirou, foi revogada, não corresponde à URI de redirecionamento usada no pedido de autorização ou foi emitida para outro cliente. invalid_redirect_uri: A URI de redirecionamento incluída não é válida. invalid_request: diff --git a/config/locales/doorkeeper.sq.yml b/config/locales/doorkeeper.sq.yml index de34154067..651f90b3b4 100644 --- a/config/locales/doorkeeper.sq.yml +++ b/config/locales/doorkeeper.sq.yml @@ -83,6 +83,7 @@ sq: access_denied: I zoti i burimit ose shërbyesi i autorizimit e hodhi poshtë kërkesën. credential_flow_not_configured: Rrjedha për Kredenciale Fjalëkalimi të të Zotit të Burimit dështoi për shkak se Doorkeeper.configure.resource_owner_from_credentials është i paformësuar. invalid_client: Mirëfilltësimi i klientit dështoi për shkak klienti të panjohur, mospërfshirjeje mirëfilltësimi klienti, ose metode të pambuluar mirëfilltësimi. + invalid_code_challenge_method: Metoda me kod duhet të jetë e llojit S256, e thjeshta nuk mbulohet. invalid_grant: Autorizimi i dhënë është i pavlefshëm, ka skaduar, është shfuqizuar, s’përputhet me URI-n e ridrejtimit të përdorur te kërkesa e autorizimit, ose është emetuar për klient tjetër. invalid_redirect_uri: URI e ridrejtimit s’është e vlefshme. invalid_request: diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index b46c16d4de..83927d1097 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -83,6 +83,7 @@ sv: access_denied: Resursägaren eller behörighetsservern nekade begäran. credential_flow_not_configured: Resurs Ägare Lösenord Credentials flöde misslyckades på grund av att Doorkeeper.configure.resource_owner_from_credentials är okonfigurerad. invalid_client: Klientautentisering misslyckades på grund av okänd klient, ingen klientautentisering inkluderad eller icke godkänd autentiseringsmetod. + invalid_code_challenge_method: Kodutmaningsmetoden måste vara S256, en slät stöds inte. invalid_grant: Det beviljade godkännandetillskottet är ogiltigt, upphört, återkallat, matchar inte den omdirigering URI som användes i auktorisationsförfrågan eller har utfärdats till en annan klient. invalid_redirect_uri: Den omdirigerade uri är inte giltig. invalid_request: diff --git a/config/locales/doorkeeper.tr.yml b/config/locales/doorkeeper.tr.yml index 330449b1b5..41996d9603 100644 --- a/config/locales/doorkeeper.tr.yml +++ b/config/locales/doorkeeper.tr.yml @@ -83,6 +83,7 @@ tr: access_denied: Kaynak sahibi veya yetkilendirme sunucusu isteği reddetti. credential_flow_not_configured: Kaynak Sahibi Parolası Kimlik Bilgileri akışı Doorkeeper.configure.resource_owner_from_credentials 'ın yapılandırılmamış olması nedeniyle başarısız oldu. invalid_client: İstemcinin kimlik doğrulaması bilinmeyen istemci, istemci kimlik doğrulamasının dahil olmaması veya desteklenmeyen kimlik doğrulama yöntemi nedeniyle başarısız oldu. + invalid_code_challenge_method: Kod zorluk metodu S256 olmalı, düz yöntem desteklenmiyor. invalid_grant: Sağlanan yetkilendirme izni geçersiz, süresi dolmuş, iptal edilmiş, yetkilendirme isteğinde kullanılan yönlendirme URL'siyle eşleşmiyor veya başka bir istemciye verilmiş. invalid_redirect_uri: Dahil edilmiş yönlendirme uri'si geçersiz. invalid_request: diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml index ca54fcb65a..55b91fd69d 100644 --- a/config/locales/doorkeeper.uk.yml +++ b/config/locales/doorkeeper.uk.yml @@ -83,6 +83,7 @@ uk: access_denied: Власник ресурсу або сервер авторизації відхилив Ваш запит. credential_flow_not_configured: Не вдалося перевірити парольні дані клієнту через неналаштований параметр Doorkeeper.configure.resource_owner_from_credentials. invalid_client: Не вдалося аутентифікувати клієнта (клієнт невідомий, аутентифікацію клієнта не увімкнено, або непідтримуваний метод аутентифікації). + invalid_code_challenge_method: Метод виклику коду повинен бути S256, простий не підтримується. invalid_grant: Наданий санкціонований дозвіл недійсний, прострочений, анульований, не відповідає URI перенаправлення, що використовується в запиті авторизації, або був виданий іншому клієнту. invalid_redirect_uri: Включений uri перенаправлення не є дійсним. invalid_request: diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index d0bdd2cc7b..5837961737 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -83,6 +83,7 @@ vi: access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu. credential_flow_not_configured: Resource Owner Password Credentials không thành công do Doorkeeper.configure.resource_owner_from_credentials không được định cấu hình. invalid_client: Xác minh ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ. + invalid_code_challenge_method: Phương pháp thử thách mã phải là S256, phương pháp plain không được hỗ trợ. invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị gỡ hoặc không khớp với tài khoản đã cấp phép. Hoặc xung đột với ứng dụng khác. invalid_redirect_uri: URL chuyển hướng không hợp lệ. invalid_request: diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml index 18477bc845..36bbe2b874 100644 --- a/config/locales/doorkeeper.zh-CN.yml +++ b/config/locales/doorkeeper.zh-CN.yml @@ -83,6 +83,7 @@ zh-CN: access_denied: 资源所有者或验证服务器拒绝了此请求 credential_flow_not_configured: 由于 Doorkeeper.configure.resource_owner_from_credentials 尚未配置,应用验证授权流程失败。 invalid_client: 由于应用信息未知、未提交认证信息或使用了不支持的认证方式,认证失败 + invalid_code_challenge_method: 代码验证方法必须是 S256,不支持明文。 invalid_grant: 授权方式无效、过期或已被撤销、与授权请求中的回调地址不一致,或使用了其他应用的回调地址 invalid_redirect_uri: 无效的登录回调地址 invalid_request: diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml index d12651a648..1a4c62fdbf 100644 --- a/config/locales/doorkeeper.zh-TW.yml +++ b/config/locales/doorkeeper.zh-TW.yml @@ -83,6 +83,7 @@ zh-TW: access_denied: 資源持有者或授權伺服器拒絕請求。 credential_flow_not_configured: 因為 Doorkeeper.configure.resource_owner_from_credentials 未設定,所以資源持有者密碼認證程序失敗。 invalid_client: 用戶端驗證失敗,可能是因為未知的用戶端程式、未包含用戶端驗證、或使用了不支援的認證方法。 + invalid_code_challenge_method: code challenge 方式必須為 S256 (SHA256),不支援 plain 方式。 invalid_grant: 授權申請不正確、逾期、已被註銷、與授權請求內的重新導向 URI 不符、或屬於別的用戶端程式。 invalid_redirect_uri: 包含的重新導向 URI 是不正確的。 invalid_request: diff --git a/config/locales/en.yml b/config/locales/en.yml index 322183f4ce..aab8db1815 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -885,7 +885,23 @@ en: action: Check here for more information message_html: "Your object storage is misconfigured. The privacy of your users is at risk." tags: + moderation: + not_trendable: Not trendable + not_usable: Not usable + pending_review: Pending review + review_requested: Review requested + reviewed: Reviewed + title: Status + trendable: Trendable + unreviewed: Unreviewed + usable: Usable + name: Name + newest: Newest + oldest: Oldest + reset: Reset review: Review status + search: Search + title: Hashtags updated_msg: Hashtag settings updated successfully title: Administration trends: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 344d6b84ca..0aa38ed923 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -59,7 +59,7 @@ fi: destroyed_msg: Käyttäjän %{username} tiedot ovat nyt jonossa poistettavaksi välittömästi disable: Poista käytöstä disable_sign_in_token_auth: Poista sähköpostitunnuksella todennus käytöstä - disable_two_factor_authentication: Poista 2FA käytöstä + disable_two_factor_authentication: Poista kaksivaiheinen todennus käytöstä disabled: Poistettu käytöstä display_name: Näyttönimi domain: Verkkotunnus @@ -137,7 +137,7 @@ fi: security: Turvallisuus security_measures: only_password: Vain salasana - password_and_2fa: Salasana ja kaksivaiheinen tunnistautuminen + password_and_2fa: Salasana ja kaksivaiheinen todennus sensitive: Pakota arkaluonteiseksi sensitized: Merkitty arkaluonteiseksi shared_inbox_url: Jaetun saapuvan postilaatikon osoite @@ -159,7 +159,7 @@ fi: unconfirmed_email: Sähköpostia ei vahvistettu undo_sensitized: Kumoa pakotus arkaluonteiseksi undo_silenced: Kumoa rajoitus - undo_suspension: Peru jäähy + undo_suspension: Kumoa jäädytys unsilenced_msg: Tilin %{username} rajoitus kumottiin onnistuneesti unsubscribe: Lopeta tilaus unsuspended_msg: Tilin %{username} jäädytys kumottiin onnistuneesti @@ -198,23 +198,23 @@ fi: destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus destroy_user_role: Hävitä rooli - disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä + disable_2fa_user: Poista kaksivaiheinen todennus käytöstä disable_custom_emoji: Poista mukautettu emoji käytöstä - disable_sign_in_token_auth_user: Estä käyttäjältä sähköpostitunnuksella todennus + disable_sign_in_token_auth_user: Poista sähköpostitunnuksella todennus käytöstä käyttäjältä disable_user: Poista tili käytöstä - enable_custom_emoji: Käytä mukautettuja emojeita + enable_custom_emoji: Ota mukautetut emojit käyttöön enable_sign_in_token_auth_user: Salli käyttäjälle sähköpostitunnuksella todennuksen enable_user: Ota tili käyttöön memorialize_account: Muuta muistotiliksi - promote_user: Käyttäjä ylennetty + promote_user: Ylennä käyttäjä reject_appeal: Hylkää valitus reject_user: Hylkää käyttäjä - remove_avatar_user: Profiilikuvan poisto + remove_avatar_user: Poista profiilikuva reopen_report: Avaa raportti uudelleen resend_user: Lähetä vahvistusviesti uudelleen reset_password_user: Nollaa salasana resolve_report: Selvitä raportti - sensitive_account: Pakotus arkaluonteiseksi tiliksi + sensitive_account: Pakota arkaluonteiseksi tiliksi silence_account: Rajoita tiliä suspend_account: Jäädytä tili unassigned_report: Poista raportti käsittelystä @@ -262,7 +262,7 @@ fi: disable_custom_emoji_html: "%{name} poisti käytöstä emojin %{target}" disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksella todennuksen käytöstä tililtä %{target}" disable_user_html: "%{name} poisti kirjautumisen käyttäjältä %{target}" - enable_custom_emoji_html: "%{name} otti käyttöön emojin %{target}" + enable_custom_emoji_html: "%{name} otti emojin %{target} käyttöön" enable_sign_in_token_auth_user_html: "%{name} otti sähköpostitunnuksella todennuksen käyttöön tilille %{target}" enable_user_html: "%{name} otti kirjautumisen käyttöön käyttäjälle %{target}" memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi" @@ -389,14 +389,14 @@ fi: confirm_suspension: cancel: Peruuta confirm: Jäädytä - permanent_action: Jäädytyksen kumoaminen ei palauta mitään tietoja tai suhteita. + permanent_action: Jäädytyksen kumoaminen ei palauta mitään tietoja tai seurantasuhteita. preamble_html: Olet jäädyttämässä verkkotunnuksen %{domain} aliverkkotunnuksineen. remove_all_data: Tämä poistaa palvelimeltasi kaiken sisällön, median ja profiilitiedot tämän verkkotunnuksen tileiltä. stop_communication: Palvelimesi lopettaa viestinnän näiden palvelinten kanssa. title: Vahvista verkkotunnuksen %{domain} esto - undo_relationships: Tämä kumoaa näiden palvelimien ja sinun tilien välisen seurannan. + undo_relationships: Tämä kumoaa näiden palvelinten ja sinun palvelimesi tilien väliset seurantasuhteet. created_msg: Verkkotunnuksen estoa käsitellään - destroyed_msg: Verkkotunnuksen esto on peruttu + destroyed_msg: Verkkotunnuksen esto on kumottu domain: Verkkotunnus edit: Muokkaa verkkotunnuksen estoa existing_domain_block: Olet jo asettanut tiukemmat rajoitukset käyttäjälle %{name}. @@ -424,7 +424,7 @@ fi: reject_media_hint: Poistaa paikallisesti tallennetut mediatiedostot eikä lataa niitä enää jatkossa. Ei merkitystä jäähyn kohdalla reject_reports: Hylkää raportit reject_reports_hint: Ohita kaikki tästä verkkotunnuksesta tulevat raportit. Ei vaikuta jäädytyksiin - undo: Peru verkkotunnuksen esto + undo: Kumoa verkkotunnuksen esto view: Näytä verkkotunnuksen esto email_domain_blocks: add_new: Lisää uusi @@ -454,7 +454,7 @@ fi: export_domain_blocks: import: description_html: Olet tuomassa verkkotunnusten estoluetteloa. Tarkista luettelo huolella – etenkin, jos et ole laatinut sitä itse. - existing_relationships_warning: Olemassa olevat seuraussuhteet + existing_relationships_warning: Olemassa olevat seurantasuhteet private_comment_description_html: 'Seurataksesi tuotujen estojen alkuperää lisätään estojen yhteyteen seuraava yksityinen kommentti: %{comment}' private_comment_template: Tuotu lähteestä %{source} %{date} title: Tuo verkkotunnusten estoja @@ -566,7 +566,7 @@ fi: no_ip_block_selected: IP-sääntöjä ei muutettu, koska yhtään ei ollut valittuna title: IP-säännöt relationships: - title: "%{acct}n suhteet" + title: Tilin %{acct} seurantasuhteet relays: add_new: Lisää uusi välittäjä delete: Poista @@ -1418,7 +1418,7 @@ fi: notification_emails: favourite: sähköposti-ilmoituksia suosikkeihin lisäämisistä follow: sähköposti-ilmoituksia seuraamisista - follow_request: sähköposti-ilmoituksia seuraamispyynnöistä + follow_request: sähköposti-ilmoituksia seurantapyynnöistä mention: sähköposti-ilmoituksia maininnoista reblog: sähköposti-ilmoituksia tehostuksista resubscribe_html: Jos olet perunut tilauksen erehdyksessä, voit tilata ilmoitusviestejä uudelleen sähköposti-ilmoitusten asetuksista. @@ -1439,7 +1439,7 @@ fi: missing_also_known_as: ei ole tämän tilin alias move_to_self: ei voi olla nykyinen tili not_found: ei voitu löytää - on_cooldown: Sinä olet jäähyllä + on_cooldown: Olet jäähyllä followers_count: Seuraajat muuton aikana incoming_migrations: Muutto toiselta tililtä incoming_migrations_html: Muuttaaksesi toisesta tilistä tähän, sinun täytyy ensin luoda tilin alias. @@ -1483,10 +1483,10 @@ fi: subject: "%{name} seuraa nyt sinua" title: Uusi seuraaja follow_request: - action: Hallitse seuraamispyyntöjä - body: "%{name} haluaa seurata sinua" + action: Hallitse seurantapyyntöjä + body: "%{name} on pyytänyt lupaa seurata sinua" subject: 'Odottava seuraamispyyntö: %{name}' - title: Uusi seuraamispyyntö + title: Uusi seurantapyyntö mention: action: Vastaa body: "%{name} mainitsi sinut:" @@ -1580,7 +1580,7 @@ fi: moved: Muuttaneet mutual: Seuraatte toisianne primary: Ensisijaiset - relationship: Suhde + relationship: Seurantasuhde remove_selected_domains: Poista kaikki seuraajat valituista verkkotunnuksista remove_selected_followers: Poista valitut seuraajat remove_selected_follows: Lopeta valittujen käyttäjien seuraaminen @@ -1789,7 +1789,7 @@ fi: too_many_requests: Käännöspalvelulle on hiljattain esitetty liian monta pyyntöä. two_factor_authentication: add: Lisää - disable: Poista 2FA käytöstä + disable: Poista kaksivaiheinen todennus käytöstä disabled_success: Kaksivaiheisen todennuksen käytöstäpoisto onnistui edit: Muokkaa enabled: Kaksivaiheinen todennus käytössä @@ -1875,7 +1875,7 @@ fi: edit_profile_title: Mukauta profiiliasi explanation: Näillä vinkeillä pääset alkuun feature_action: Lue lisää - feature_audience: Mastodon tarjoaa sinulle ainutlaatuisen mahdollisuuden hallita yleisöäsi ilman välikäsiä. Omassa infrastruktuurissasi toimiva Mastodon on täysin hallinnassasi, ja mahdollistaa sinun seurata mitä tahansa Mastodon-palvelimia sekä niin ikään olla seurattu niiltä päin. + feature_audience: Mastodon tarjoaa sinulle ainutlaatuisen mahdollisuuden hallita yleisöäsi ilman välikäsiä. Omassa infrastruktuurissasi toimiva Mastodon on täysin hallinnassasi ja antaa sinun seurata ja tulla seuratuksi miltä tahansa verkon Mastodon-palvelimelta. feature_audience_title: Rakenna yleisöäsi luottavaisin mielin feature_control: Tiedät itse parhaiten, mitä haluat nähdä kotisyötteessäsi. Ei algoritmeja eikä mainoksia tuhlaamassa aikaasi. Seuraa yhdellä tilillä ketä tahansa, miltä tahansa Mastodon-palvelimelta, vastaanota heidän julkaisunsa aikajärjestyksessä ja tee omasta internetin nurkastasi hieman enemmän omanlaisesi. feature_control_title: Pidä aikajanasi hallussasi @@ -1884,14 +1884,14 @@ fi: feature_moderation: Mastodon palauttaa päätöksenteon käsiisi. Jokainen palvelin luo omat sääntönsä ja määräyksensä, joita valvotaan paikallisesti eikä ylhäältä alas kuten kaupallisessa sosiaalisessa mediassa, mikä tekee siitä joustavimman vastaamaan eri ihmisryhmien tarpeisiin. Liity palvelimelle, jonka säännöt sopivat sinulle, tai ylläpidä omaa palvelinta. feature_moderation_title: Moderointi juuri kuten sen pitäisi olla follow_action: Seuraa - follow_step: Mastodon perustuu sinua kiinnostavien henkilöjen julkaisujen seuraamiseen. + follow_step: Mastodonissa on kyse kiinnostavien ihmisten seuraamisesta. follow_title: Mukauta kotisyötettäsi follows_subtitle: Seuraa tunnettuja tilejä follows_title: Seurantaehdotuksia follows_view_more: Näytä lisää seurattavia henkilöitä hashtags_recent_count: - one: "%{people} henkilö viimeisen 2 päivän aikana" - other: "%{people} henkilöä viimeisen 2 päivän aikana" + one: "%{people} henkilö viimeisenä 2 päivänä" + other: "%{people} henkilöä viimeisenä 2 päivänä" hashtags_subtitle: Tutki, mikä on ollut suosittua viimeisenä 2 päivänä hashtags_title: Suositut aihetunnisteet hashtags_view_more: Näytä lisää suosittuja aihetunnisteita diff --git a/config/locales/lt.yml b/config/locales/lt.yml index eaeada4d1d..f8bbda2e96 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -348,7 +348,7 @@ lt: shortcode_hint: Bent du ženklai, tik raidiniai skaitmeniniai ženklai bei akcentai(_) title: Asmeniniai jaustukai uncategorized: Be kategorijos - unlist: Išbraukti iš sąrašo + unlist: Neįtraukti į sąrašą unlisted: Neįtrauktas į sąrašą update_failed_msg: Jaustukas negalėjo būti pakeistas updated_msg: Jaustukas sėkmingai pakeistas! @@ -446,6 +446,9 @@ lt: import: description_html: Netrukus importuosi domenų blokavimų sąrašą. Labai atidžiai peržiūrėk šį sąrašą, ypač jei ne tu jį sudarei. instances: + audit_log: + title: Naujausi audito žurnalai + view_all: Peržiūrėti visus audito žurnalus availability: title: Prieinamumas warning: Paskutinis bandymas prisijungti prie šio serverio buvo nesėkmingas @@ -1101,7 +1104,7 @@ lt: private_long: rodyti tik sekėjams public: Vieša public_long: visi gali matyti - unlisted: Neįtrauktas į sąrašus + unlisted: Neįtrauktas į sąrašą unlisted_long: matyti gali visi, bet nėra išvardyti į viešąsias laiko skales statuses_cleanup: enabled_hint: Automatiškai ištrina įrašus, kai jie pasiekia nustatytą amžiaus ribą, nebent jie atitinka vieną iš toliau nurodytų išimčių diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index cd5bc1add7..64c67a1463 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -211,6 +211,7 @@ cy: setting_default_privacy: Preifatrwydd cyhoeddi setting_default_sensitive: Marcio cyfryngau fel eu bod yn sensitif bob tro setting_delete_modal: Dangos deialog cadarnhau cyn dileu postiad + setting_disable_hover_cards: Analluogi rhagolwg proffil ar lusgo setting_disable_swiping: Analluogi cynigion llusgo setting_display_media: Dangos cyfryngau setting_display_media_default: Rhagosodiad diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 6bc7c6ac52..fee3a6151a 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -314,7 +314,7 @@ en: listable: Allow this hashtag to appear in searches and suggestions name: Hashtag trendable: Allow this hashtag to appear under trends - usable: Allow posts to use this hashtag + usable: Allow posts to use this hashtag locally user: role: Role time_zone: Time zone diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index a59368ca4e..80e08234f3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -9,7 +9,7 @@ fi: indexable: Julkiset julkaisusi voivat näkyä hakutuloksissa Mastodonissa. Ihmiset, jotka ovat olleet vuorovaikutuksessa julkaisujesi kanssa, voivat etsiä niitä asetuksesta riippumatta. note: 'Voit @mainita muita käyttäjiä tai #aihetunnisteita.' show_collections: Käyttäjät voivat selata seurattujasi ja seuraajiasi. Käyttäjät, joita seuraat, näkevät joka tapauksessa, että seuraat heitä. - unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntääsi. Poista valinta, jos haluat tarkistaa sekä hyväksyä tai hylätä vastaanottamasi seuraamispyynnöt. + unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntääsi. Poista valinta, jos haluat tarkistaa sekä hyväksyä tai hylätä vastaanottamasi seurantapyynnöt. account_alias: acct: Määrittele sen tilin käyttäjänimi@verkkotunnus, josta haluat muuttaa account_migration: @@ -292,7 +292,7 @@ fi: digest: Lähetä koosteviestejä sähköpostitse favourite: Joku lisäsi julkaisusi suosikkeihinsa follow: Joku seurasi sinua - follow_request: Joku pyysi saada seurata sinua + follow_request: Joku pyysi lupaa seurata sinua mention: Joku mainitsi sinut pending_account: Uusi tili tarvitsee tarkistuksen reblog: Joku tehosti julkaisuasi diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 2281e4b4ab..1e1aee5246 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -211,6 +211,7 @@ sv: setting_default_privacy: Inläggsintegritet setting_default_sensitive: Markera alltid media som känsligt setting_delete_modal: Visa bekräftelsedialog innan radering av inlägg + setting_disable_hover_cards: Inaktivera profilförhandsgranskning vid hovring setting_disable_swiping: Inaktivera svepande rörelser setting_display_media: Mediavisning setting_display_media_default: Standard diff --git a/config/locales/sv.yml b/config/locales/sv.yml index de2664f8b5..72eefe5632 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -471,6 +471,9 @@ sv: title: Följ rekommendationer unsuppress: Återställ följrekommendation instances: + audit_log: + title: Senaste revisionsloggar + view_all: Visa fullständiga revisionssloggar availability: description_html: one: Om leveranser till domänen misslyckas i %{count} dag kommer inga ytterligare leveransförsök att göras förrän en leverans från domänen tas emot. @@ -639,6 +642,7 @@ sv: report: 'Rapport #%{id}' reported_account: Anmält konto reported_by: Anmäld av + reported_with_application: Rapporterat med applikation resolved: Löst resolved_msg: Anmälan har lösts framgångsrikt! skip_to_actions: Hoppa till åtgärder diff --git a/config/navigation.rb b/config/navigation.rb index 55ab19cb56..3a3f5c9783 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -46,13 +46,14 @@ SimpleNavigation::Configuration.run do |navigation| n.item :trends, safe_join([fa_icon('fire fw'), t('admin.trends.title')]), admin_trends_statuses_path, if: -> { current_user.can?(:manage_taxonomies) && !self_destruct } do |s| s.item :statuses, safe_join([fa_icon('comments-o fw'), t('admin.trends.statuses.title')]), admin_trends_statuses_path, highlights_on: %r{/admin/trends/statuses} - s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.trends.tags.title')]), admin_trends_tags_path, highlights_on: %r{/admin/tags|/admin/trends/tags} + s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.trends.tags.title')]), admin_trends_tags_path, highlights_on: %r{/admin/trends/tags} s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links} end n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks) && !self_destruct } do |s| s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports|admin/report_notes}, if: -> { current_user.can?(:manage_reports) } s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|admin/account_moderation_notes|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) } + s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.tags.title')]), admin_tags_path, highlights_on: %r{/admin/tags}, if: -> { current_user.can?(:manage_taxonomies) } s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path, if: -> { current_user.can?(:manage_invites) } s.item :follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path, highlights_on: %r{/admin/follow_recommendations}, if: -> { current_user.can?(:manage_taxonomies) } s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_path(limited: limited_federation_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.can?(:manage_federation) } diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 14695c36c5..78194f5789 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -164,7 +164,7 @@ namespace :admin do resources :roles, except: [:show] resources :account_moderation_notes, only: [:create, :destroy] resource :follow_recommendations, only: [:show, :update] - resources :tags, only: [:show, :update] + resources :tags, only: [:index, :show, :update] namespace :trends do resources :links, only: [:index] do diff --git a/package.json b/package.json index 7659d38785..0052f10c07 100644 --- a/package.json +++ b/package.json @@ -183,7 +183,7 @@ "eslint-plugin-import": "~2.29.0", "eslint-plugin-jsdoc": "^48.0.0", "eslint-plugin-jsx-a11y": "~6.9.0", - "eslint-plugin-promise": "~6.4.0", + "eslint-plugin-promise": "~6.6.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "husky": "^9.0.11", diff --git a/spec/controllers/admin/tags_controller_spec.rb b/spec/controllers/admin/tags_controller_spec.rb index 4e06adaca6..1df2bc4003 100644 --- a/spec/controllers/admin/tags_controller_spec.rb +++ b/spec/controllers/admin/tags_controller_spec.rb @@ -9,6 +9,43 @@ RSpec.describe Admin::TagsController do sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')) end + describe 'GET #index' do + before do + Fabricate(:tag) + + tag_filter = instance_double(Admin::TagFilter, results: Tag.all) + allow(Admin::TagFilter).to receive(:new).and_return(tag_filter) + end + + let(:params) { { order: 'newest' } } + + it 'returns http success' do + get :index + + expect(response).to have_http_status(200) + expect(response).to render_template(:index) + + expect(Admin::TagFilter) + .to have_received(:new) + .with(hash_including(params)) + end + + describe 'with filters' do + let(:params) { { order: 'newest', name: 'test' } } + + it 'returns http success' do + get :index, params: { name: 'test' } + + expect(response).to have_http_status(200) + expect(response).to render_template(:index) + + expect(Admin::TagFilter) + .to have_received(:new) + .with(hash_including(params)) + end + end + end + describe 'GET #show' do let!(:tag) { Fabricate(:tag) } diff --git a/spec/models/admin/tag_filter_spec.rb b/spec/models/admin/tag_filter_spec.rb new file mode 100644 index 0000000000..21dc28affb --- /dev/null +++ b/spec/models/admin/tag_filter_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::TagFilter do + describe 'with invalid params' do + it 'raises with key error' do + filter = described_class.new(wrong: true) + + expect { filter.results }.to raise_error(/wrong/) + end + + it 'raises with status scope error' do + filter = described_class.new(status: 'unknown') + + expect { filter.results }.to raise_error(/Unknown status: unknown/) + end + + it 'raises with order value error' do + filter = described_class.new(order: 'unknown') + + expect { filter.results }.to raise_error(/Unknown order: unknown/) + end + end + + describe '#results' do + let(:listable_tag) { Fabricate(:tag, name: 'test1', listable: true) } + let(:not_listable_tag) { Fabricate(:tag, name: 'test2', listable: false) } + + it 'returns tags filtered by name' do + filter = described_class.new(name: 'test') + + expect(filter.results).to eq([listable_tag, not_listable_tag]) + end + end +end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index a3cae4a339..ff0a055113 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -112,6 +112,18 @@ RSpec.describe Tag do end end + describe '#formatted_name' do + it 'returns name with a proceeding hash symbol' do + tag = Fabricate(:tag, name: 'foo') + expect(tag.formatted_name).to eq '#foo' + end + + it 'returns display_name with a proceeding hash symbol, if display name present' do + tag = Fabricate(:tag, name: 'foobar', display_name: 'FooBar') + expect(tag.formatted_name).to eq '#FooBar' + end + end + describe '.recently_used' do let(:account) { Fabricate(:account) } let(:other_person_status) { Fabricate(:status) } @@ -240,5 +252,23 @@ RSpec.describe Tag do expect(results).to eq [tag, similar_tag] end + + it 'finds only listable tags' do + tag = Fabricate(:tag, name: 'match') + _miss_tag = Fabricate(:tag, name: 'matchunlisted', listable: false) + + results = described_class.search_for('match') + + expect(results).to eq [tag] + end + + it 'finds non-listable tags as well via option' do + tag = Fabricate(:tag, name: 'match') + unlisted_tag = Fabricate(:tag, name: 'matchunlisted', listable: false) + + results = described_class.search_for('match', 5, 0, exclude_unlistable: false) + + expect(results).to eq [tag, unlisted_tag] + end end end diff --git a/spec/support/stories/profile_stories.rb b/spec/support/stories/profile_stories.rb index f5fc9a441f..07eaaca9fb 100644 --- a/spec/support/stories/profile_stories.rb +++ b/spec/support/stories/profile_stories.rb @@ -3,6 +3,12 @@ module ProfileStories attr_reader :bob, :alice, :alice_bio + def fill_in_auth_details(email, password) + fill_in 'user_email', with: email + fill_in 'user_password', with: password + click_on I18n.t('auth.login') + end + def as_a_registered_user @bob = Fabricate( :user, @@ -16,9 +22,7 @@ module ProfileStories def as_a_logged_in_user as_a_registered_user visit new_user_session_path - fill_in 'user_email', with: email - fill_in 'user_password', with: password - click_on I18n.t('auth.login') + fill_in_auth_details(email, password) end def as_a_logged_in_admin diff --git a/spec/system/log_in_spec.rb b/spec/system/log_in_spec.rb index c64e19d2b7..8a73c42d2e 100644 --- a/spec/system/log_in_spec.rb +++ b/spec/system/log_in_spec.rb @@ -17,17 +17,13 @@ describe 'Log in' do end it 'A valid email and password user is able to log in' do - fill_in 'user_email', with: email - fill_in 'user_password', with: password - click_on I18n.t('auth.login') + fill_in_auth_details(email, password) expect(subject).to have_css('div.app-holder') end it 'A invalid email and password user is not able to log in' do - fill_in 'user_email', with: 'invalid_email' - fill_in 'user_password', with: 'invalid_password' - click_on I18n.t('auth.login') + fill_in_auth_details('invalid_email', 'invalid_password') expect(subject).to have_css('.flash-message', text: failure_message('invalid')) end @@ -36,9 +32,7 @@ describe 'Log in' do let(:confirmed_at) { nil } it 'A unconfirmed user is able to log in' do - fill_in 'user_email', with: email - fill_in 'user_password', with: password - click_on I18n.t('auth.login') + fill_in_auth_details(email, password) expect(subject).to have_css('div.admin-wrapper') end diff --git a/spec/system/oauth_spec.rb b/spec/system/oauth_spec.rb index 42ff4a48ac..5d06f6111c 100644 --- a/spec/system/oauth_spec.rb +++ b/spec/system/oauth_spec.rb @@ -3,6 +3,8 @@ require 'rails_helper' describe 'Using OAuth from an external app' do + include ProfileStories + subject { visit "/oauth/authorize?#{params.to_query}" } let(:client_app) { Doorkeeper::Application.create!(name: 'test', redirect_uri: about_url(host: Rails.application.config.x.local_domain), scopes: 'read') } @@ -246,12 +248,6 @@ describe 'Using OAuth from an external app' do private - def fill_in_auth_details(email, password) - fill_in 'user_email', with: email - fill_in 'user_password', with: password - click_on I18n.t('auth.login') - end - def fill_in_otp_details(value) fill_in 'user_otp_attempt', with: value click_on I18n.t('auth.login') diff --git a/streaming/Dockerfile b/streaming/Dockerfile index d9f7615fa8..938f1655d1 100644 --- a/streaming/Dockerfile +++ b/streaming/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.8 +# syntax=docker/dockerfile:1.9 # Please see https://docs.docker.com/engine/reference/builder for information about # the extended buildx capabilities used in this file. diff --git a/yarn.lock b/yarn.lock index dca36fc618..bb767cf333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2153,17 +2153,14 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.43.1": - version: 0.43.1 - resolution: "@es-joy/jsdoccomment@npm:0.43.1" +"@es-joy/jsdoccomment@npm:~0.46.0": + version: 0.46.0 + resolution: "@es-joy/jsdoccomment@npm:0.46.0" dependencies: - "@types/eslint": "npm:^8.56.5" - "@types/estree": "npm:^1.0.5" - "@typescript-eslint/types": "npm:^7.2.0" comment-parser: "npm:1.4.1" - esquery: "npm:^1.5.0" + esquery: "npm:^1.6.0" jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10c0/2a4842b0e37eb937d55e3028ab2cd7ece7097e1f8c878bb9e28c3309371844688c2869d25bb949e2664c9ba63e388ea09b769c9f42f77515d328ec40e6fcfed1 + checksum: 10c0/a7a67936ebf6d9aaf74af018c3ac744769af3552b05ad9b88fca96b2ffdca16e724b0ff497f53634ec4cca81e98d8c471b6b6bde0fa5b725af4222ad9a0707f0 languageName: node linkType: hard @@ -2846,7 +2843,7 @@ __metadata: eslint-plugin-import: "npm:~2.29.0" eslint-plugin-jsdoc: "npm:^48.0.0" eslint-plugin-jsx-a11y: "npm:~6.9.0" - eslint-plugin-promise: "npm:~6.4.0" + eslint-plugin-promise: "npm:~6.6.0" eslint-plugin-react: "npm:^7.33.2" eslint-plugin-react-hooks: "npm:^4.6.0" exif-js: "npm:^2.3.0" @@ -3541,7 +3538,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:7 || 8, @types/eslint@npm:^8.56.5": +"@types/eslint@npm:7 || 8": version: 8.56.10 resolution: "@types/eslint@npm:8.56.10" dependencies: @@ -3551,7 +3548,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": +"@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d @@ -4128,14 +4125,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^7.0.0": - version: 7.14.1 - resolution: "@typescript-eslint/eslint-plugin@npm:7.14.1" + version: 7.17.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.17.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.14.1" - "@typescript-eslint/type-utils": "npm:7.14.1" - "@typescript-eslint/utils": "npm:7.14.1" - "@typescript-eslint/visitor-keys": "npm:7.14.1" + "@typescript-eslint/scope-manager": "npm:7.17.0" + "@typescript-eslint/type-utils": "npm:7.17.0" + "@typescript-eslint/utils": "npm:7.17.0" + "@typescript-eslint/visitor-keys": "npm:7.17.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -4146,25 +4143,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/7c2b9b98a38d78326b0ff7348fe001203eda10817ca7834a7a01f492ae7c2508469bbafaa933208d6459f8ff6685277685983cf6f6843e556a6ab2aa5c05080c + checksum: 10c0/654d589531ae45b8ca8f3969e785926b2544100a985968d86c828e2a1ff50331250e19c8b4af83a4ba17847a0047479662eb317e4ad94f6279cac03acd5cda5a languageName: node linkType: hard "@typescript-eslint/parser@npm:^7.0.0": - version: 7.14.1 - resolution: "@typescript-eslint/parser@npm:7.14.1" + version: 7.17.0 + resolution: "@typescript-eslint/parser@npm:7.17.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.14.1" - "@typescript-eslint/types": "npm:7.14.1" - "@typescript-eslint/typescript-estree": "npm:7.14.1" - "@typescript-eslint/visitor-keys": "npm:7.14.1" + "@typescript-eslint/scope-manager": "npm:7.17.0" + "@typescript-eslint/types": "npm:7.17.0" + "@typescript-eslint/typescript-estree": "npm:7.17.0" + "@typescript-eslint/visitor-keys": "npm:7.17.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/db3169d4852685cfb27db741c557f58a3e52104bfacc7621beb7c94ec36ac2a08d4e410ac86745db52f482fbfc87e99fa0a26c1d7a10d37a215cce85e1661f0e + checksum: 10c0/0cf6922412517b4c005609b035119ddd2798e1b6e74e1bccd487aa53119d27067cfd89311f00b8e96b2b044a0fb7373418a16552be86079879158b260c397418 languageName: node linkType: hard @@ -4178,22 +4175,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.14.1": - version: 7.14.1 - resolution: "@typescript-eslint/scope-manager@npm:7.14.1" +"@typescript-eslint/scope-manager@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/scope-manager@npm:7.17.0" dependencies: - "@typescript-eslint/types": "npm:7.14.1" - "@typescript-eslint/visitor-keys": "npm:7.14.1" - checksum: 10c0/f8c05a0d6f8de4cc19b90a4da308817c66e53f36f7ec48f6cc23e93c7399bc418643d8135933aaf5fc013199cbef0e1ea4223f5147db5ca401b239eaf087011e + "@typescript-eslint/types": "npm:7.17.0" + "@typescript-eslint/visitor-keys": "npm:7.17.0" + checksum: 10c0/e1a693e19dc855fe6d04b46c6c205019bfc937eda5f8b255393f8267ebddd282165568336e37b04aab544b155a807784b9c4a92129dfc7c1eef5a9e9fe052685 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.14.1": - version: 7.14.1 - resolution: "@typescript-eslint/type-utils@npm:7.14.1" +"@typescript-eslint/type-utils@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/type-utils@npm:7.17.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.14.1" - "@typescript-eslint/utils": "npm:7.14.1" + "@typescript-eslint/typescript-estree": "npm:7.17.0" + "@typescript-eslint/utils": "npm:7.17.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -4201,7 +4198,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/bd1c4a8db6273e24156fb10da2cbeb52b4eb03f819da193d4b6bd5a95db3b5524c6fe00d088308d8855b9ae60a3b82afa3a06e89982a09a8573561da960758fd + checksum: 10c0/b415cf37c0922cded78735c5049cb5a5b0065e1c0ce4a81ca2a26422763ccacca8945efa45480f40530f2ec414a14d35a88a6798258aa889f7a9cf4ca4a240cd languageName: node linkType: hard @@ -4212,10 +4209,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.14.1, @typescript-eslint/types@npm:^7.2.0": - version: 7.14.1 - resolution: "@typescript-eslint/types@npm:7.14.1" - checksum: 10c0/5b7bda83c47a9b386482e63447c6b0ed7bd4e82eb43f11a180c6e2f3d2e7a2828f57bcbed82196ad761c49e363cccf4c81a89f1fc976e9f5f0a79dcc928fa2d2 +"@typescript-eslint/types@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/types@npm:7.17.0" + checksum: 10c0/8f734294d432b37c534f17eb2befdfe43b76874d09118d6adf7e308e5a586e9e11b7021abe4f6692a6e6226de58a15b3cfe1300939556ce1c908d9af627b7400 languageName: node linkType: hard @@ -4238,12 +4235,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.14.1": - version: 7.14.1 - resolution: "@typescript-eslint/typescript-estree@npm:7.14.1" +"@typescript-eslint/typescript-estree@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.17.0" dependencies: - "@typescript-eslint/types": "npm:7.14.1" - "@typescript-eslint/visitor-keys": "npm:7.14.1" + "@typescript-eslint/types": "npm:7.17.0" + "@typescript-eslint/visitor-keys": "npm:7.17.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -4253,21 +4250,21 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/a8da9bcc4de3334a225424946abd99374de05c42098455419224bc0f46bb1b66115f8bd6ae268461294b90943ed4a407bcd255c0fa60eb76ba4cdc5fc7c20855 + checksum: 10c0/10967823ce00c9f8cd4a8b56bed3524c098e38cc0e27aaa49ffd8fad4e671c00226bf0330ba858948750b88dc55527ebeb62c74be8a30bac18a106d6c033ab59 languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.14.1": - version: 7.14.1 - resolution: "@typescript-eslint/utils@npm:7.14.1" +"@typescript-eslint/utils@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/utils@npm:7.17.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.14.1" - "@typescript-eslint/types": "npm:7.14.1" - "@typescript-eslint/typescript-estree": "npm:7.14.1" + "@typescript-eslint/scope-manager": "npm:7.17.0" + "@typescript-eslint/types": "npm:7.17.0" + "@typescript-eslint/typescript-estree": "npm:7.17.0" peerDependencies: eslint: ^8.56.0 - checksum: 10c0/c7f635a3c2c6c085e1d51a52088e55cad9d7e1257b1f60378e5eeb6eb0871db027d42747e9ef60a2f557cf9dd68b2ce014d488d795db8f771506290b164b0e5a + checksum: 10c0/1f3e22820b3ab3e47809c45e576614ad4a965f5c8634856eca5c70981386b9351a77fb172ba32345e7c5667479cf9526c673699dd38dccd0616ad6db21704e72 languageName: node linkType: hard @@ -4298,13 +4295,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.14.1": - version: 7.14.1 - resolution: "@typescript-eslint/visitor-keys@npm:7.14.1" +"@typescript-eslint/visitor-keys@npm:7.17.0": + version: 7.17.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.17.0" dependencies: - "@typescript-eslint/types": "npm:7.14.1" + "@typescript-eslint/types": "npm:7.17.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/39ac489990fcfdcee442f27658431a0eb44ccf694f701a45df2a108c47cea9582e0955bff0d449047549149385f72895a5d7e6c1622ece1fe32594b7cecb85f3 + checksum: 10c0/fa6b339d51fc3710288bb2ffaa46d639551d77965cc42c36f96c4f43aed663ff12972e8a28652a280f6ce20b7a92dc2aea14b2b4049012799be2fc2d3cbb2c60 languageName: node linkType: hard @@ -4965,18 +4962,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.toreversed@npm:^1.1.2": - version: 1.1.2 - resolution: "array.prototype.toreversed@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10c0/2b7627ea85eae1e80ecce665a500cc0f3355ac83ee4a1a727562c7c2a1d5f1c0b4dd7b65c468ec6867207e452ba01256910a2c0b41486bfdd11acf875a7a3435 - languageName: node - linkType: hard - "array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 resolution: "array.prototype.tosorted@npm:1.1.4" @@ -7941,22 +7926,22 @@ __metadata: linkType: hard "eslint-plugin-jsdoc@npm:^48.0.0": - version: 48.5.0 - resolution: "eslint-plugin-jsdoc@npm:48.5.0" + version: 48.8.3 + resolution: "eslint-plugin-jsdoc@npm:48.8.3" dependencies: - "@es-joy/jsdoccomment": "npm:~0.43.1" + "@es-joy/jsdoccomment": "npm:~0.46.0" are-docs-informative: "npm:^0.0.2" comment-parser: "npm:1.4.1" - debug: "npm:^4.3.4" + debug: "npm:^4.3.5" escape-string-regexp: "npm:^4.0.0" - esquery: "npm:^1.5.0" - parse-imports: "npm:^2.1.0" - semver: "npm:^7.6.2" + esquery: "npm:^1.6.0" + parse-imports: "npm:^2.1.1" + semver: "npm:^7.6.3" spdx-expression-parse: "npm:^4.0.0" - synckit: "npm:^0.9.0" + synckit: "npm:^0.9.1" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/1c5eb83df06cb228e44ad2c9da5b31987347a45b99d9e7a68957d178487a81603ad3c4c7db1ecba7e8a62d7ae20d9de1aec18a8cf2aa0e9169731cec54f78ab7 + checksum: 10c0/78d893614b188617de5a03d8163406455e3b739fd7b86192eb05a29cf8e7f06909a6f6a1b9dc2acd31e5ae2bccd94600eaea247d277f58c3c946c0fdb36a57f7 languageName: node linkType: hard @@ -7986,12 +7971,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-promise@npm:~6.4.0": - version: 6.4.0 - resolution: "eslint-plugin-promise@npm:6.4.0" +"eslint-plugin-promise@npm:~6.6.0": + version: 6.6.0 + resolution: "eslint-plugin-promise@npm:6.6.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/5d07be976504f92d1d91756b0b0588a4c65e379af2520dd77c8655203085c0ab43e24d4698d1ac4b50926430cd8eb81cd1cc4c3653aae8386c805577bdf57b6c + checksum: 10c0/93a667dbc9ff15c4d586b0d40a31c7828314cbbb31b2b9a75802aa4ef536e9457bb3e1a89b384b07aa336dd61b315ae8b0aadc0870210378023dd018819b59b3 languageName: node linkType: hard @@ -8005,30 +7990,30 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.33.2": - version: 7.34.3 - resolution: "eslint-plugin-react@npm:7.34.3" + version: 7.35.0 + resolution: "eslint-plugin-react@npm:7.35.0" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" array.prototype.flatmap: "npm:^1.3.2" - array.prototype.toreversed: "npm:^1.1.2" array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" es-iterator-helpers: "npm:^1.0.19" estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" object.entries: "npm:^1.1.8" object.fromentries: "npm:^2.0.8" - object.hasown: "npm:^1.1.4" object.values: "npm:^1.2.0" prop-types: "npm:^15.8.1" resolve: "npm:^2.0.0-next.5" semver: "npm:^6.3.1" string.prototype.matchall: "npm:^4.0.11" + string.prototype.repeat: "npm:^1.0.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10c0/60717e32c9948e2b4ddc53dac7c4b62c68fc7129c3249079191c941c08ebe7d1f4793d65182922d19427c2a6634e05231a7b74ceee34169afdfd0e43d4a43d26 + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10c0/eedcc33de4b2cda91d56ae517a4f771a0c76da9c1e26c95543969012871381e11d4d6cffdf6fa8423036585c289eb3500f3f93fb1d314fb2624e0aa1e463305e languageName: node linkType: hard @@ -8128,12 +8113,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.4.2, esquery@npm:^1.6.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard @@ -9550,11 +9535,11 @@ __metadata: linkType: hard "husky@npm:^9.0.11": - version: 9.1.2 - resolution: "husky@npm:9.1.2" + version: 9.1.3 + resolution: "husky@npm:9.1.3" bin: husky: bin.js - checksum: 10c0/7e25c31ef98ac35d357147005d6e5d87db2abca7297e7c5aac931de3699acd32a3f1a9f8e53f101daeab818f0cfe9d18fa7e34f7cf5c9c4437c3665123456dea + checksum: 10c0/3fb8657ff97f529dab0b9a0afa6b818ec604f60c39abc13e8e3f4263ea30a3aa6fff7a1b625b8a53700899ce0ea2f5f656981c46b8f1837cfd84ddb6da883fb2 languageName: node linkType: hard @@ -12542,17 +12527,6 @@ __metadata: languageName: node linkType: hard -"object.hasown@npm:^1.1.4": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/f23187b08d874ef1aea060118c8259eb7f99f93c15a50771d710569534119062b90e087b92952b2d0fb1bb8914d61fb0b43c57fb06f622aaad538fe6868ab987 - languageName: node - linkType: hard - "object.pick@npm:^1.3.0": version: 1.3.0 resolution: "object.pick@npm:1.3.0" @@ -12798,13 +12772,13 @@ __metadata: languageName: node linkType: hard -"parse-imports@npm:^2.1.0": - version: 2.1.0 - resolution: "parse-imports@npm:2.1.0" +"parse-imports@npm:^2.1.1": + version: 2.1.1 + resolution: "parse-imports@npm:2.1.1" dependencies: es-module-lexer: "npm:^1.5.3" slashes: "npm:^3.0.12" - checksum: 10c0/18ef58008868d2d09e472bb540d63efc7cc27f2c33607e5d09c256ece7a30062cac292bda96d820438e94f3dbf558c85e4b084c10d238baa858796794e6cf628 + checksum: 10c0/c9bb0b4e1823f84f034d2d7bd2b37415b1715a5c963fda14968c706186b48b02c10e97d04bce042b9dcd679b42f29c391ea120799ddf581c7f54786edd99e3a9 languageName: node linkType: hard @@ -15598,12 +15572,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2": - version: 7.6.2 - resolution: "semver@npm:7.6.2" +"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" bin: semver: bin/semver.js - checksum: 10c0/97d3441e97ace8be4b1976433d1c32658f6afaff09f143e52c593bae7eef33de19e3e369c88bd985ce1042c6f441c80c6803078d1de2a9988080b66684cbb30c + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf languageName: node linkType: hard @@ -16389,6 +16363,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -16812,13 +16796,13 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.9.0": - version: 0.9.0 - resolution: "synckit@npm:0.9.0" +"synckit@npm:^0.9.1": + version: 0.9.1 + resolution: "synckit@npm:0.9.1" dependencies: "@pkgr/core": "npm:^0.1.0" tslib: "npm:^2.6.2" - checksum: 10c0/b5c1e7c03fefe3d36a9ab4e71dd21859cb32be4138712c31a893382a568fd00efc59ede8f521dd7e53d43a2fea92bdf717e987ea9ed6ad94f97ef28d71d0ba2f + checksum: 10c0/d8b89e1bf30ba3ffb469d8418c836ad9c0c062bf47028406b4d06548bc66af97155ea2303b96c93bf5c7c0f0d66153a6fbd6924c76521b434e6a9898982abc2e languageName: node linkType: hard @@ -17305,22 +17289,22 @@ __metadata: linkType: hard "typescript@npm:5, typescript@npm:^5.0.4": - version: 5.5.3 - resolution: "typescript@npm:5.5.3" + version: 5.5.4 + resolution: "typescript@npm:5.5.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/f52c71ccbc7080b034b9d3b72051d563601a4815bf3e39ded188e6ce60813f75dbedf11ad15dd4d32a12996a9ed8c7155b46c93a9b9c9bad1049766fe614bbdd + checksum: 10c0/422be60f89e661eab29ac488c974b6cc0a660fb2228003b297c3d10c32c90f3bcffc1009b43876a082515a3c376b1eefcce823d6e78982e6878408b9a923199c languageName: node linkType: hard "typescript@patch:typescript@npm%3A5#optional!builtin, typescript@patch:typescript@npm%3A^5.0.4#optional!builtin": - version: 5.5.3 - resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=379a07" + version: 5.5.4 + resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=379a07" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/911c7811d61f57f07df79c4a35f56a0f426a65426a020e5fcd792f66559f399017205f5f10255329ab5a3d8c2d1f1d19530aeceffda70758a521fae1d469432e + checksum: 10c0/73409d7b9196a5a1217b3aaad929bf76294d3ce7d6e9766dd880ece296ee91cf7d7db6b16c6c6c630ee5096eccde726c0ef17c7dfa52b01a243e57ae1f09ef07 languageName: node linkType: hard @@ -17559,11 +17543,11 @@ __metadata: linkType: hard "use-debounce@npm:^10.0.0": - version: 10.0.1 - resolution: "use-debounce@npm:10.0.1" + version: 10.0.2 + resolution: "use-debounce@npm:10.0.2" peerDependencies: react: ">=16.8.0" - checksum: 10c0/377a11814a708f5c392f465cbbe2d119a8a2635c8226cc5e30eba397c4436f8e8234385d069467b369d105ed0d3be733c6a08d8ae1004017c6d6f58f4d4c24d8 + checksum: 10c0/2d992108557a0ad3e59bc35028c0dbc6ad12088a08d992fd52aad3881dd24663606fe71f7fd925327fb98599c6252bfa4c143649351d48e6243d7a3332594fd6 languageName: node linkType: hard