From 8e0aed8ac73dda2138a71a090e1560ace9b9bcf1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 10:21:09 +0200 Subject: [PATCH 01/41] New Crowdin Translations (automated) (#31072) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/an.json | 1 - app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/ast.json | 45 ++++++----- app/javascript/mastodon/locales/be.json | 1 - app/javascript/mastodon/locales/bg.json | 1 - app/javascript/mastodon/locales/bn.json | 1 - app/javascript/mastodon/locales/br.json | 1 - app/javascript/mastodon/locales/ca.json | 1 - app/javascript/mastodon/locales/ckb.json | 1 - app/javascript/mastodon/locales/co.json | 1 - app/javascript/mastodon/locales/cs.json | 1 - app/javascript/mastodon/locales/cy.json | 1 - app/javascript/mastodon/locales/da.json | 20 ++++- app/javascript/mastodon/locales/de.json | 15 +++- app/javascript/mastodon/locales/el.json | 1 - app/javascript/mastodon/locales/en-GB.json | 1 - app/javascript/mastodon/locales/eo.json | 1 - app/javascript/mastodon/locales/es-AR.json | 13 ++++ app/javascript/mastodon/locales/es-MX.json | 15 +++- app/javascript/mastodon/locales/es.json | 15 +++- app/javascript/mastodon/locales/et.json | 1 - app/javascript/mastodon/locales/eu.json | 1 - app/javascript/mastodon/locales/fa.json | 1 - app/javascript/mastodon/locales/fi.json | 1 - app/javascript/mastodon/locales/fo.json | 15 +++- app/javascript/mastodon/locales/fr-CA.json | 1 - app/javascript/mastodon/locales/fr.json | 1 - app/javascript/mastodon/locales/fy.json | 1 - app/javascript/mastodon/locales/ga.json | 39 ++++++---- app/javascript/mastodon/locales/gd.json | 1 - app/javascript/mastodon/locales/gl.json | 1 - app/javascript/mastodon/locales/he.json | 1 - app/javascript/mastodon/locales/hr.json | 1 - app/javascript/mastodon/locales/hu.json | 15 +++- app/javascript/mastodon/locales/hy.json | 1 - app/javascript/mastodon/locales/ia.json | 1 - app/javascript/mastodon/locales/id.json | 1 - app/javascript/mastodon/locales/ie.json | 1 - app/javascript/mastodon/locales/io.json | 1 - app/javascript/mastodon/locales/is.json | 1 - app/javascript/mastodon/locales/it.json | 13 ++++ app/javascript/mastodon/locales/ja.json | 1 - app/javascript/mastodon/locales/kab.json | 1 - app/javascript/mastodon/locales/kk.json | 1 - app/javascript/mastodon/locales/ko.json | 1 - app/javascript/mastodon/locales/ku.json | 1 - app/javascript/mastodon/locales/kw.json | 1 - app/javascript/mastodon/locales/la.json | 1 - app/javascript/mastodon/locales/lad.json | 1 - app/javascript/mastodon/locales/lt.json | 1 - app/javascript/mastodon/locales/lv.json | 1 - app/javascript/mastodon/locales/ms.json | 1 - app/javascript/mastodon/locales/my.json | 1 - app/javascript/mastodon/locales/nl.json | 15 +++- app/javascript/mastodon/locales/nn.json | 1 - app/javascript/mastodon/locales/no.json | 1 - app/javascript/mastodon/locales/oc.json | 1 - app/javascript/mastodon/locales/pl.json | 15 +++- app/javascript/mastodon/locales/pt-BR.json | 1 - app/javascript/mastodon/locales/pt-PT.json | 1 - app/javascript/mastodon/locales/ro.json | 1 - app/javascript/mastodon/locales/ru.json | 1 - app/javascript/mastodon/locales/sa.json | 1 - app/javascript/mastodon/locales/sc.json | 1 - app/javascript/mastodon/locales/sco.json | 1 - app/javascript/mastodon/locales/si.json | 1 - app/javascript/mastodon/locales/sk.json | 1 - app/javascript/mastodon/locales/sl.json | 13 ++++ app/javascript/mastodon/locales/sq.json | 1 - app/javascript/mastodon/locales/sr-Latn.json | 1 - app/javascript/mastodon/locales/sr.json | 1 - app/javascript/mastodon/locales/sv.json | 6 +- app/javascript/mastodon/locales/ta.json | 1 - app/javascript/mastodon/locales/te.json | 1 - app/javascript/mastodon/locales/th.json | 1 - app/javascript/mastodon/locales/tok.json | 1 - app/javascript/mastodon/locales/tr.json | 1 - app/javascript/mastodon/locales/uk.json | 1 - app/javascript/mastodon/locales/ur.json | 1 - app/javascript/mastodon/locales/uz.json | 1 - app/javascript/mastodon/locales/vi.json | 1 - app/javascript/mastodon/locales/zh-CN.json | 15 +++- app/javascript/mastodon/locales/zh-HK.json | 1 - app/javascript/mastodon/locales/zh-TW.json | 13 ++++ config/locales/activerecord.ast.yml | 2 +- config/locales/ast.yml | 78 ++++++++++++-------- config/locales/devise.ast.yml | 22 +++--- config/locales/devise.ga.yml | 2 +- config/locales/doorkeeper.ast.yml | 10 +-- config/locales/en-GB.yml | 1 + config/locales/es-AR.yml | 1 + config/locales/es-MX.yml | 2 + config/locales/es.yml | 2 + config/locales/ga.yml | 8 +- config/locales/he.yml | 1 + config/locales/lt.yml | 1 + config/locales/pl.yml | 2 + config/locales/simple_form.ast.yml | 29 ++++---- config/locales/simple_form.kab.yml | 1 + 99 files changed, 336 insertions(+), 176 deletions(-) diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index 752b6c3564..d8f41b29bd 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -342,7 +342,6 @@ "notification.follow_request": "{name} ha solicitau seguir-te", "notification.mention": "{name} t'ha mencionau", "notification.own_poll": "La tuya enqüesta ha rematau", - "notification.poll": "Una enqüesta en a quala has votau ha rematau", "notification.reblog": "{name} ha retutau la tuya publicación", "notification.status": "{name} acaba de publicar", "notification.update": "{name} editó una publicación", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 5509769e04..9cfda3cbc2 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "لقد تم تقييد حسابك.", "notification.moderation_warning.action_suspend": "لقد تم تعليق حسابك.", "notification.own_poll": "انتهى استطلاعك للرأي", - "notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه", "notification.reblog": "قام {name} بمشاركة منشورك", "notification.relationships_severance_event": "فقدت الاتصالات مع {name}", "notification.relationships_severance_event.account_suspension": "قام مشرف من {from} بتعليق {target}، مما يعني أنك لم يعد بإمكانك تلقي التحديثات منهم أو التفاعل معهم.", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 3f32a8bf15..883737eb4a 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -1,7 +1,7 @@ { "about.blocks": "Sirvidores moderaos", "about.contact": "Contautu:", - "about.disclaimer": "Mastodon ye software gratuito ya de códigu llibre, ya una marca rexistrada de Mastodon gGmbH.", + "about.disclaimer": "Mastodon ye software gratuito y de códigu llibre, y una marca rexistrada de Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "El motivu nun ta disponible", "about.domain_blocks.preamble": "Polo xeneral, Mastodon permítete ver el conteníu ya interactuar colos perfiles d'otros sirvidores nel fediversu. Estes son les esceiciones que se ficieron nesti sirvidor.", "about.domain_blocks.silenced.explanation": "Polo xeneral, nun ves los perfiles ya'l conteníu d'esti sirvidor sacante que los busques o decidas siguilos.", @@ -37,15 +37,15 @@ "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}", "account.in_memoriam": "N'alcordanza.", "account.joined_short": "Data de xunión", - "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}", + "account.link_verified_on": "La propiedá d'esti enllaz comprobóse'l {date}", "account.media": "Multimedia", "account.mention": "Mentar a @{name}", "account.moved_to": "{name} indicó qu'agora la so cuenta nueva ye:", "account.mute": "Desactivar los avisos de @{name}", "account.open_original_page": "Abrir la páxina orixinal", "account.posts": "Artículos", - "account.posts_with_replies": "Artículos ya rempuestes", - "account.report": "Informar de: @{name}", + "account.posts_with_replies": "Artículos y rempuestes", + "account.report": "Informar de @{name}", "account.requested_follow": "{name} solicitó siguite", "account.show_reblogs": "Amosar los artículos compartíos de @{name}", "account.unblock": "Desbloquiar a @{name}", @@ -71,7 +71,7 @@ "bundle_column_error.routing.body": "Nun se pudo atopar la páxina solicitada. ¿De xuru que la URL de la barra de direiciones ta bien escrita?", "bundle_column_error.routing.title": "404", "bundle_modal_error.message": "Asocedió daqué malo mentanto se cargaba esti componente.", - "closed_registrations.other_server_instructions": "Darréu que Mastodon ye una rede social descentralizada, pues crear una cuenta n'otru sirvidor ya siguir interactuando con esti.", + "closed_registrations.other_server_instructions": "Darréu que Mastodon ye una rede social descentralizada, pues crear una cuenta n'otru sirvidor y siguir interactuando con esti.", "closed_registrations_modal.description": "Anguaño nun ye posible crear cuentes en {domain}, mas ten en cuenta que nun precises una cuenta nesti sirvidor pa usar Mastodon.", "closed_registrations_modal.find_another_server": "Atopar otru sirvidor", "closed_registrations_modal.preamble": "Mastodon ye una rede social descentralizada polo que nun importa ónde crees la cuenta, vas ser a siguir ya interactuar con persones d'esti sirvidor. ¡Ya tamién pues tener el to propiu sirvidor!", @@ -107,7 +107,7 @@ "compose_form.lock_disclaimer.lock": "privada", "compose_form.placeholder": "¿En qué pienses?", "compose_form.poll.option_placeholder": "Opción {number}", - "compose_form.poll.type": "Estilu", + "compose_form.poll.type": "Tipu", "compose_form.publish_form": "Artículu nuevu", "confirmation_modal.cancel": "Encaboxar", "confirmations.block.confirm": "Bloquiar", @@ -120,7 +120,7 @@ "confirmations.edit.message": "La edición va sobrescribir el mensaxe que tas escribiendo. ¿De xuru que quies siguir?", "confirmations.logout.confirm": "Zarrar la sesión", "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?", - "confirmations.redraft.confirm": "Desaniciar ya reeditar", + "confirmations.redraft.confirm": "Desaniciar y reeditar", "confirmations.reply.confirm": "Responder", "confirmations.unfollow.confirm": "Dexar de siguir", "confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?", @@ -140,7 +140,7 @@ "embed.preview": "Va apaecer asina:", "emoji_button.activity": "Actividá", "emoji_button.flags": "Banderes", - "emoji_button.food": "Comida ya bébora", + "emoji_button.food": "Comida y bébora", "emoji_button.nature": "Natura", "emoji_button.not_found": "Nun s'atoparon fustaxes que concasen", "emoji_button.objects": "Oxetos", @@ -149,7 +149,7 @@ "emoji_button.search": "Buscar…", "emoji_button.search_results": "Resultaos de la busca", "emoji_button.symbols": "Símbolos", - "emoji_button.travel": "Viaxes ya llugares", + "emoji_button.travel": "Viaxes y llugares", "empty_column.account_timeline": "¡Equí nun hai nengún artículu!", "empty_column.blocks": "Nun bloquiesti a nengún perfil.", "empty_column.bookmarked_statuses": "Nun tienes nengún artículu en Marcadores. Cuando amiestes dalgún, apaez equí.", @@ -168,7 +168,7 @@ "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.", "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti error.", "error.unexpected_crash.next_steps": "Prueba a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.", - "error.unexpected_crash.next_steps_addons": "Prueba a desactivalos ya a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.", + "error.unexpected_crash.next_steps_addons": "Prueba a desactivalos y a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.", "explore.search_results": "Resultaos de la busca", "explore.suggested_follows": "Perfiles", "explore.title": "Esploración", @@ -179,7 +179,7 @@ "filter_modal.added.context_mismatch_title": "¡El contestu nun coincide!", "filter_modal.added.expired_explanation": "Esta categoría de peñera caducó, tienes de camudar la so data de caducidá p'aplicala.", "filter_modal.added.expired_title": "¡La peñera caducó!", - "filter_modal.added.review_and_configure": "Pa revisar ya configurar a fondu esta categoría de peñera, vete a la {settings_link}.", + "filter_modal.added.review_and_configure": "Pa revisar y configurar a fondu esta categoría de peñera, vete a la {settings_link}.", "filter_modal.added.review_and_configure_title": "Configuración de la peñera", "filter_modal.added.settings_link": "páxina de configuración", "filter_modal.added.short_explanation": "Esti artículu amestóse a la categoría de peñera siguiente: {title}.", @@ -195,8 +195,10 @@ "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Magar que la to cuenta nun seya privada, el personal del dominiu «{domain}» pensó qu'a lo meyor quies revisar manualmente les solicitúes de siguimientu d'estes cuentes.", "follow_suggestions.dismiss": "Nun volver amosar", + "follow_suggestions.friends_of_friends_longer": "Ye popular ente los perfiles que sigues", "follow_suggestions.personalized_suggestion": "Suxerencia personalizada", "follow_suggestions.popular_suggestion": "Suxerencia popular", + "follow_suggestions.similar_to_recently_followed_longer": "Aseméyase a los perfiles que siguiesti apocayá", "follow_suggestions.view_all": "Ver too", "follow_suggestions.who_to_follow": "A quién siguir", "footer.about": "Tocante a", @@ -272,6 +274,8 @@ "lists.subheading": "Les tos llistes", "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}", "media_gallery.toggle_visible": "{number, plural, one {Anubrir la imaxe} other {Anubrir les imáxenes}}", + "name_and_others": "{name} y {count, plural, one {# más} other {# más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}}", "navigation_bar.about": "Tocante a", "navigation_bar.blocks": "Perfiles bloquiaos", "navigation_bar.bookmarks": "Marcadores", @@ -281,11 +285,11 @@ "navigation_bar.explore": "Esploración", "navigation_bar.filters": "Pallabres desactivaes", "navigation_bar.follow_requests": "Solicitúes de siguimientu", - "navigation_bar.follows_and_followers": "Perfiles que sigues ya te siguen", + "navigation_bar.follows_and_followers": "Perfiles que sigues y te siguen", "navigation_bar.lists": "Llistes", "navigation_bar.logout": "Zarrar la sesión", "navigation_bar.mutes": "Perfiles colos avisos desactivaos", - "navigation_bar.opened_in_classic_interface": "Los artículos, les cuentes ya otres páxines específiques ábrense por defeutu na interfaz web clásica.", + "navigation_bar.opened_in_classic_interface": "Los artículos, les cuentes y otres páxines específiques ábrense por defeutu na interfaz web clásica.", "navigation_bar.pins": "Artículos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia de tiempu federada", @@ -296,13 +300,13 @@ "notification.follow": "{name} siguióte", "notification.follow_request": "{name} solicitó siguite", "notification.mention": "{name} mentóte", - "notification.poll": "Finó una encuesta na que votesti", "notification.reblog": "{name} compartió'l to artículu", "notification.status": "{name} ta acabante d'espublizar", "notification.update": "{name} editó un artículu", "notifications.clear": "Borrar los avisos", "notifications.column_settings.admin.report": "Informes nuevos:", "notifications.column_settings.admin.sign_up": "Rexistros nuevos:", + "notifications.column_settings.beta.category": "Funciones esperimentales", "notifications.column_settings.follow": "Siguidores nuevos:", "notifications.column_settings.follow_request": "Solicitúes de siguimientu nueves:", "notifications.column_settings.mention": "Menciones:", @@ -319,7 +323,7 @@ "notifications.mark_as_read": "Marcar tolos avisos como lleíos", "notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.", "onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetes…", - "onboarding.start.lead": "Xá yes parte de Mastodon, una plataforma social multimedia descentralizada onde tu ya non un algoritmu, personalices la to esperiencia. Vamos presentate esti llugar social nuevu:", + "onboarding.start.lead": "Yá yes parte de Mastodon, una plataforma social multimedia descentralizada onde tu y non un algoritmu, personalices la to esperiencia. Vamos presentate esti llugar social nuevu:", "onboarding.start.skip": "¿Nun precises ayuda pa comenzar?", "onboarding.steps.follow_people.body": "Mastodon trata namás de siguir a cuentes interesantes.", "onboarding.steps.publish_status.body": "Saluda al mundu con semeyes, vídeos, testu o encuestes {emoji}", @@ -334,6 +338,8 @@ "poll_button.add_poll": "Amestar una encuesta", "poll_button.remove_poll": "Quitar la encuesta", "privacy.change": "Configurar la privacidá del artículu", + "privacy.direct.short": "Perfiles específicos", + "privacy.private.short": "Siguidores", "privacy.public.short": "Artículu públicu", "privacy_policy.last_updated": "Data del últimu anovamientu: {date}", "privacy_policy.title": "Política de privacidá", @@ -383,10 +389,11 @@ "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:", "report.thanks.take_action_actionable": "Mentanto revisamos esti informe, pues tomar midíes contra @{name}:", "report.thanks.title": "¿Nun quies ver esti conteníu?", - "report.thanks.title_actionable": "Gracies pol informe, el casu xá ta n'investigación.", + "report.thanks.title_actionable": "Gracies pol informe, el casu yá ta n'investigación.", "report.unfollow": "Dexar de siguir a @{name}", "report.unfollow_explanation": "Sigues a esta cuenta. Pa dexar de ver los sos artículos nel to feed d'aniciu, dexa de siguila.", "report_notification.attached_statuses": "{count, plural, one {Axuntóse {count} artículu} other {Axuntáronse {count} artículos}}", + "report_notification.categories.legal_sentence": "conteníu illegal", "report_notification.open": "Abrir l'informe", "search.no_recent_searches": "Nun hai nenguna busca recién", "search.placeholder": "Buscar", @@ -396,6 +403,7 @@ "search.quick_action.status_search": "Artículos que concasen con {x}", "search.search_or_paste": "Busca o apiega una URL", "search_popout.language_code": "códigu de llingua ISO", + "search_popout.options": "Opciones de busca", "search_popout.quick_actions": "Aiciones rápides", "search_popout.recent": "Busques de recién", "search_popout.specific_date": "data específica", @@ -440,12 +448,13 @@ "status.reblog": "Compartir", "status.reblogged_by": "{name} compartió", "status.reblogs.empty": "Naide nun compartió esti artículu. Cuando daquién lo faiga, apaez equí.", - "status.redraft": "Desaniciar ya reeditar", + "status.redraft": "Desaniciar y reeditar", "status.replied_to": "En rempuesta a {name}", "status.reply": "Responder", "status.replyAll": "Responder al filu", "status.report": "Informar de @{name}", "status.sensitive_warning": "Conteníu sensible", + "status.share": "Compartir", "status.show_filter_reason": "Amosar de toes toes", "status.show_less": "Amosar menos", "status.show_more": "Amosar más", @@ -472,7 +481,7 @@ "units.short.thousand": "{count} mil", "upload_button.label": "Amestar ficheros multimedia", "upload_error.poll": "La xuba de ficheros nun ta permitida coles encuestes.", - "upload_form.audio_description": "Describi'l conteníu pa persones sordes ya/o ciegues", + "upload_form.audio_description": "Describi'l conteníu pa persones sordes y/o ciegues", "upload_form.edit": "Editar", "upload_modal.analyzing_picture": "Analizando la semeya…", "upload_modal.apply": "Aplicar", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index df29fbd418..e2120d80d9 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.", "notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.", "notification.own_poll": "Ваша апытанне скончылася", - "notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася", "notification.reblog": "{name} пашырыў ваш допіс", "notification.relationships_severance_event": "Страціў сувязь з {name}", "notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 98e84c45d7..0e29f55e76 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Вашият акаунт е ограничен.", "notification.moderation_warning.action_suspend": "Вашият акаунт е спрян.", "notification.own_poll": "Анкетата ви приключи", - "notification.poll": "Анкета, в която гласувахте, приключи", "notification.reblog": "{name} подсили ваша публикация", "notification.relationships_severance_event": "Изгуби се връзката с {name}", "notification.relationships_severance_event.account_suspension": "Администратор от {from} спря {target}, което значи че повече не може да получавате новости от тях или да взаимодействате с тях.", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index a203c43f03..6d64c00a2f 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -320,7 +320,6 @@ "notification.follow_request": "{name} আপনাকে অনুসরণ করার জন্য অনুরধ করেছে", "notification.mention": "{name} আপনাকে উল্লেখ করেছেন", "notification.own_poll": "আপনার পোল শেষ হয়েছে", - "notification.poll": "আপনি ভোট দিয়েছিলেন এমন এক নির্বাচনের ভোটের সময় শেষ হয়েছে", "notification.reblog": "{name} আপনার কার্যক্রমে সমর্থন দেখিয়েছেন", "notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে", "notifications.clear_confirmation": "আপনি কি নির্চিত প্রজ্ঞাপনগুলো মুছে ফেলতে চান ?", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index a150fb4902..76cd9d4574 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -398,7 +398,6 @@ "notification.mention": "Gant {name} oc'h bet meneget", "notification.moderation-warning.learn_more": "Gouzout hiroc'h", "notification.own_poll": "Echu eo ho sontadeg", - "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", "notification.reblog": "Gant {name} eo bet skignet ho toud", "notification.status": "Emañ {name} o paouez toudañ", "notification.update": "Gant {name} ez eus bet kemmet un toud", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 3123e29d8d..1719b105f0 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "S'ha limitat el vostre compte.", "notification.moderation_warning.action_suspend": "S'ha suspès el vostre compte.", "notification.own_poll": "La teva enquesta ha finalitzat", - "notification.poll": "Ha finalitzat una enquesta en què has votat", "notification.reblog": "{name} t'ha impulsat", "notification.relationships_severance_event": "S'han perdut les connexions amb {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspès {target}; això vol dir que ja no en podreu rebre actualitzacions o interactuar-hi.", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 3ebf9391d2..379706a3e0 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -391,7 +391,6 @@ "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت", "notification.mention": "{name} باسی ئێوەی کرد", "notification.own_poll": "ڕاپرسیەکەت کۆتایی هات", - "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات", "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند", "notification.status": "{name} تازە بڵاوکرایەوە", "notification.update": "{name} پۆستێکی دەستکاریکرد", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 78f8e6fd78..4520663b52 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -240,7 +240,6 @@ "notification.follow_request": "{name} vole abbunassi à u vostru contu", "notification.mention": "{name} v'hà mintuvatu", "notification.own_poll": "U vostru scandagliu hè compiu", - "notification.poll": "Un scandagliu induve avete vutatu hè finitu", "notification.reblog": "{name} hà spartutu u vostru statutu", "notification.status": "{name} hà appena pubblicatu", "notifications.clear": "Purgà e nutificazione", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 12de5d5ecd..213fe5e530 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Váš účet byl omezen.", "notification.moderation_warning.action_suspend": "Váš účet byl pozastaven.", "notification.own_poll": "Vaše anketa skončila", - "notification.poll": "Anketa, ve které jste hlasovali, skončila", "notification.reblog": "Uživatel {name} boostnul váš příspěvek", "notification.relationships_severance_event": "Kontakt ztracen s {name}", "notification.relationships_severance_event.account_suspension": "Administrátor z {from} pozastavil {target}, což znamená, že již od nich nemůžete přijímat aktualizace nebo s nimi interagovat.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 9a3fab6155..e4c10cc142 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -481,7 +481,6 @@ "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 pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", "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.", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index d8c178d295..9316884d71 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -37,6 +37,7 @@ "account.followers.empty": "Ingen følger denne bruger endnu.", "account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}", "account.following": "Følger", + "account.following_counter": "{count, plural, one {{counter} følger} other {{counter} følger}}", "account.follows.empty": "Denne bruger følger ikke nogen endnu.", "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Skjul boosts fra @{name}", @@ -62,6 +63,7 @@ "account.requested_follow": "{name} har anmodet om at følge dig", "account.share": "Del @{name}s profil", "account.show_reblogs": "Vis fremhævelser fra @{name}", + "account.statuses_counter": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}}", "account.unblock": "Afblokér @{name}", "account.unblock_domain": "Afblokér domænet {domain}", "account.unblock_short": "Afblokér", @@ -441,6 +443,8 @@ "mute_modal.title": "Tavsgør bruger?", "mute_modal.you_wont_see_mentions": "Indlæg, som nævner vedkommende, vises ikke.", "mute_modal.you_wont_see_posts": "Vedkommende kan stadig se dine indlæg, med vedkommendes vise ikke.", + "name_and_others": "{name} og {count, plural, one {# anden} other {# andre}}", + "name_and_others_with_link": "{name} og {count, plural, one {# anden} other {# andre}}", "navigation_bar.about": "Om", "navigation_bar.advanced_interface": "Åbn i avanceret webgrænseflade", "navigation_bar.blocks": "Blokerede brugere", @@ -468,6 +472,10 @@ "navigation_bar.security": "Sikkerhed", "not_signed_in_indicator.not_signed_in": "Log ind for at tilgå denne ressource.", "notification.admin.report": "{name} anmeldte {target}", + "notification.admin.report_account": "{name} anmeldte {count, plural, one {et indlæg} other {# indlæg}} fra {target} angående {category}", + "notification.admin.report_account_other": "{name} anmeldte {count, plural, one {et indlæg} other {# indlæg}} fra {target}", + "notification.admin.report_statuses": "{name} anmeldte {target} angående {category}", + "notification.admin.report_statuses_other": "{name} anmeldte {target}", "notification.admin.sign_up": "{name} tilmeldte sig", "notification.favourite": "{name} favoritmarkerede dit indlæg", "notification.follow": "{name} begyndte at følge dig", @@ -483,7 +491,8 @@ "notification.moderation_warning.action_silence": "Din konto er blevet begrænset.", "notification.moderation_warning.action_suspend": "Din konto er suspenderet.", "notification.own_poll": "Din afstemning er afsluttet", - "notification.poll": "En afstemning, hvori du stemte, er slut", + "notification.poll": "En afstemning, hvori du har stemt, er slut", + "notification.private_mention": "{name} nævnte dig privat", "notification.reblog": "{name} boostede dit indlæg", "notification.relationships_severance_event": "Mistede forbindelser med {name}", "notification.relationships_severance_event.account_suspension": "En admin fra {from} har suspenderet {target}, hvofor opdateringer herfra eller interaktion hermed ikke længer er mulig.", @@ -501,6 +510,8 @@ "notifications.column_settings.admin.report": "Nye anmeldelser:", "notifications.column_settings.admin.sign_up": "Nye tilmeldinger:", "notifications.column_settings.alert": "Computernotifikationer", + "notifications.column_settings.beta.category": "Eksperimentelle funktioner", + "notifications.column_settings.beta.grouping": "Gruppér notifikationer", "notifications.column_settings.favourite": "Favoritter:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", "notifications.column_settings.filter_bar.category": "Hurtigfiltreringsbjælke", @@ -664,9 +675,13 @@ "report.unfollow_explanation": "Du følger denne konto. For ikke længere at se vedkommendes indlæg i dit hjemmefeed, kan du stoppe med at følge dem.", "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} poster}} vedhæftet", "report_notification.categories.legal": "Juridisk", + "report_notification.categories.legal_sentence": "ikke-tilladt indhold", "report_notification.categories.other": "Andre", + "report_notification.categories.other_sentence": "andet", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Regelovertrædelse", + "report_notification.categories.violation_sentence": "regelovertrædelse", "report_notification.open": "Åbn anmeldelse", "search.no_recent_searches": "Ingen seneste søgninger", "search.placeholder": "Søg", @@ -694,8 +709,11 @@ "server_banner.about_active_users": "Folk, som brugte denne server de seneste 30 dage (månedlige aktive brugere)", "server_banner.active_users": "aktive brugere", "server_banner.administered_by": "Håndteres af:", + "server_banner.is_one_of_many": "{domain} er en af de mange uafhængige Mastodon-servere, man kan bruge for at deltage i fediverset.", "server_banner.server_stats": "Serverstatstik:", "sign_in_banner.create_account": "Opret konto", + "sign_in_banner.follow_anyone": "Følg alle på tværs af fediverset og se alt i kronologisk rækkefølge. Ingen algoritmer, annoncer eller clickbait i syne.", + "sign_in_banner.mastodon_is": "Mastodon er den bedste måde at holde sig ajour med, hvad der sker.", "sign_in_banner.sign_in": "Log ind", "sign_in_banner.sso_redirect": "Log ind eller Tilmeld", "status.admin_account": "Åbn modereringsbrugerflade for @{name}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 0f3b3c91a9..3ba058b9a7 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -443,6 +443,8 @@ "mute_modal.title": "Profil stummschalten?", "mute_modal.you_wont_see_mentions": "Du wirst keine Beiträge sehen, die dieses Profil erwähnen.", "mute_modal.you_wont_see_posts": "Deine Beiträge können weiterhin angesehen werden, aber du wirst deren Beiträge nicht mehr sehen.", + "name_and_others": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}}", + "name_and_others_with_link": "{name} und {count, plural, one {# weitere Person} other {# weitere Personen}}", "navigation_bar.about": "Über", "navigation_bar.advanced_interface": "Im erweiterten Webinterface öffnen", "navigation_bar.blocks": "Blockierte Profile", @@ -470,6 +472,10 @@ "navigation_bar.security": "Sicherheit", "not_signed_in_indicator.not_signed_in": "Du musst dich anmelden, um auf diesen Inhalt zugreifen zu können.", "notification.admin.report": "{name} meldete {target}", + "notification.admin.report_account": "{name} meldete {count, plural, one {einen Beitrag} other {# Beiträge}} von {target} wegen {category}", + "notification.admin.report_account_other": "{name} meldete {count, plural, one {einen Beitrag} other {# Beiträge}} von {target}", + "notification.admin.report_statuses": "{name} meldete {target} wegen {category}", + "notification.admin.report_statuses_other": "{name} meldete {target}", "notification.admin.sign_up": "{name} registrierte sich", "notification.favourite": "{name} favorisierte deinen Beitrag", "notification.follow": "{name} folgt dir", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Dein Konto wurde gesperrt.", "notification.own_poll": "Deine Umfrage ist beendet", "notification.poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet", + "notification.private_mention": "{name} hat dich privat erwähnt", "notification.reblog": "{name} teilte deinen Beitrag", "notification.relationships_severance_event": "Verbindungen mit {name} verloren", "notification.relationships_severance_event.account_suspension": "Ein Admin von {from} hat {target} gesperrt. Du wirst von diesem Profil keine Updates mehr erhalten und auch nicht mit ihm interagieren können.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Neue Meldungen:", "notifications.column_settings.admin.sign_up": "Neue Registrierungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", + "notifications.column_settings.beta.category": "Experimentelle Funktionen", + "notifications.column_settings.beta.grouping": "Benachrichtigungen gruppieren", "notifications.column_settings.favourite": "Favoriten:", "notifications.column_settings.filter_bar.advanced": "Alle Filterkategorien anzeigen", "notifications.column_settings.filter_bar.category": "Filterleiste", @@ -644,7 +653,7 @@ "report.placeholder": "Ergänzende Hinweise", "report.reasons.dislike": "Das gefällt mir nicht", "report.reasons.dislike_description": "Das ist etwas, das du nicht sehen möchtest", - "report.reasons.legal": "Das ist illegal", + "report.reasons.legal": "Das ist rechtswidrig", "report.reasons.legal_description": "Du glaubst, dass es gegen die Gesetze deines Landes oder des Landes des Servers verstößt", "report.reasons.other": "Es ist etwas anderes", "report.reasons.other_description": "Der Vorfall passt zu keiner dieser Kategorien", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", "report_notification.attached_statuses": "{count, plural, one {{count} angehangener Beitrag} other {{count} angehängte Beiträge}}", "report_notification.categories.legal": "Rechtliches", + "report_notification.categories.legal_sentence": "rechtswidrigem Inhalt", "report_notification.categories.other": "Nicht aufgeführt", + "report_notification.categories.other_sentence": "etwas anderem", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "Spam", "report_notification.categories.violation": "Regelverstoß", + "report_notification.categories.violation_sentence": "Regelverletzung", "report_notification.open": "Meldung öffnen", "search.no_recent_searches": "Keine früheren Suchanfragen", "search.placeholder": "Suche", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 5442624b36..3c0ef467bf 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -389,7 +389,6 @@ "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.mention": "Ο/Η {name} σε επισήμανε", "notification.own_poll": "Η δημοσκόπησή σου έληξε", - "notification.poll": "Τελείωσε μια από τις δημοσκοπήσεις που συμμετείχες", "notification.reblog": "Ο/Η {name} ενίσχυσε τη δημοσίευσή σου", "notification.status": "Ο/Η {name} μόλις ανέρτησε κάτι", "notification.update": "ο/η {name} επεξεργάστηκε μια ανάρτηση", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 94d7defc7e..6143c6e1ca 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Your account has been limited.", "notification.moderation_warning.action_suspend": "Your account has been suspended.", "notification.own_poll": "Your poll has ended", - "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.relationships_severance_event": "Lost connections with {name}", "notification.relationships_severance_event.account_suspension": "An admin from {from} has suspended {target}, which means you can no longer receive updates from them or interact with them.", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index e7cfc03468..211f4ad8d9 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -405,7 +405,6 @@ "notification.follow_request": "{name} petis sekvi vin", "notification.mention": "{name} menciis vin", "notification.own_poll": "Via enketo finiĝis", - "notification.poll": "Partoprenita balotenketo finiĝis", "notification.reblog": "{name} diskonigis vian afiŝon", "notification.status": "{name} ĵus afiŝis", "notification.update": "{name} redaktis afiŝon", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 28e8de9237..2e22865493 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus mensajes, pero vos no verás los suyos.", + "name_and_others": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# cuenta más} other {# cuentas más}}", "navigation_bar.about": "Información", "navigation_bar.advanced_interface": "Abrir en interface web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitás iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", + "notification.admin.report_account": "{name} denunció {count, plural, one {un mensaje} other {# mensajes}} de {target} por {category}", + "notification.admin.report_account_other": "{name} denunció {count, plural, one {un mensaje} other {# mensajes}} de {target}", + "notification.admin.report_statuses": "{name} denunció a {target} por {category}", + "notification.admin.report_statuses_other": "{name} denunció a {target}", "notification.admin.sign_up": "Se registró {name}", "notification.favourite": "{name} marcó tu mensaje como favorito", "notification.follow": "{name} te empezó a seguir", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Tu cuenta fue suspendida.", "notification.own_poll": "Tu encuesta finalizó", "notification.poll": "Finalizó una encuesta en la que votaste", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} adhirió a tu mensaje", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} suspendió a {target}, lo que significa que ya no podés recibir actualizaciones de esa cuenta o interactuar con la misma.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Funciones experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo a esta cuenta. Para no ver sus mensajes en tu línea temporal principal, dejá de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} mensaje adjunto} other {{count} mensajes adjuntos}}", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "[otras categorías]", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violación de regla", + "report_notification.categories.violation_sentence": "violación de regla", "report_notification.open": "Abrir denuncia", "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c10a161015..837bbbc2ce 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las de ellos.", + "name_and_others": "{name} y {count, plural, one {# más} other {# más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}}", "navigation_bar.about": "Acerca de", "navigation_bar.advanced_interface": "Abrir en interfaz web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} denunció a {target}", + "notification.admin.report_account": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target} por {category}", + "notification.admin.report_account_other": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target}", + "notification.admin.report_statuses": "{name} informó de {target} por {category}", + "notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.sign_up": "{name} se unio", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.follow": "{name} te empezó a seguir", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tu cuenta ha sido limitada.", "notification.moderation_warning.action_suspend": "Tu cuenta ha sido suspendida.", "notification.own_poll": "Tu encuesta ha terminado", - "notification.poll": "Una encuesta en la que has votado ha terminado", + "notification.poll": "Una encuesta ha terminado", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} ha retooteado tu estado", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspendido {target}, lo que significa que ya no puedes recibir actualizaciones de sus cuentas o interactuar con ellas.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevas denuncias:", "notifications.column_settings.admin.sign_up": "Registros nuevos:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Características experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu inicio, deja de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otro", + "report_notification.categories.other_sentence": "otra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Infracción de regla", + "report_notification.categories.violation_sentence": "infracción de regla", "report_notification.open": "Abrir denuncia", "search.no_recent_searches": "Sin búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 259fc1795b..a6cecf1605 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -443,6 +443,8 @@ "mute_modal.title": "¿Silenciar usuario?", "mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.", "mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las suyas.", + "name_and_others": "{name} y {count, plural, one {# más} other {# más}}", + "name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}}", "navigation_bar.about": "Acerca de", "navigation_bar.advanced_interface": "Abrir en la interfaz web avanzada", "navigation_bar.blocks": "Usuarios bloqueados", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguridad", "not_signed_in_indicator.not_signed_in": "Necesitas iniciar sesión para acceder a este recurso.", "notification.admin.report": "{name} informó {target}", + "notification.admin.report_account": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target} por {category}", + "notification.admin.report_account_other": "{name} informó de {count, plural, one {una publicación} other {# publicaciones}} de {target}", + "notification.admin.report_statuses": "{name} informó de {target} por {category}", + "notification.admin.report_statuses_other": "{name} informó de {target}", "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó como favorita tu publicación", "notification.follow": "{name} te empezó a seguir", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tu cuenta ha sido limitada.", "notification.moderation_warning.action_suspend": "Tu cuenta ha sido suspendida.", "notification.own_poll": "Tu encuesta ha terminado", - "notification.poll": "Una encuesta en la que has votado ha terminado", + "notification.poll": "Una encuesta ha terminado", + "notification.private_mention": "{name} te mencionó en privado", "notification.reblog": "{name} ha impulsado tu publicación", "notification.relationships_severance_event": "Conexiones perdidas con {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspendido {target}, lo que significa que ya no puedes recibir actualizaciones de sus cuentas o interactuar con ellas.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuevos informes:", "notifications.column_settings.admin.sign_up": "Nuevos registros:", "notifications.column_settings.alert": "Notificaciones de escritorio", + "notifications.column_settings.beta.category": "Características experimentales", + "notifications.column_settings.beta.grouping": "Agrupar notificaciones", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.", "report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contenido ilegal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "otra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Infracción de regla", + "report_notification.categories.violation_sentence": "infracción de regla", "report_notification.open": "Abrir informe", "search.no_recent_searches": "No hay búsquedas recientes", "search.placeholder": "Buscar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 94f5ef5d9e..b07229adec 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Su kontole pandi piirang.", "notification.moderation_warning.action_suspend": "Su konto on peatatud.", "notification.own_poll": "Su küsitlus on lõppenud", - "notification.poll": "Küsitlus, milles osalesid, on lõppenud", "notification.reblog": "{name} jagas edasi postitust", "notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}", "notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 97c4250d22..bd1b51ba3e 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -480,7 +480,6 @@ "notification.moderation_warning.action_silence": "Kontua murriztu egin da.", "notification.moderation_warning.action_suspend": "Kontua itxi da.", "notification.own_poll": "Zure inkesta amaitu da", - "notification.poll": "Zuk erantzun duzun inkesta bat bukatu da", "notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari", "notification.relationships_severance_event": "{name} erabiltzailearekin galdutako konexioak", "notification.relationships_severance_event.account_suspension": "{from} zerbitzariko administratzaile batek {target} bertan behera utzi du, hau da, ezin izango dituzu jaso hango eguneratzerik edo hangoekin elkarreragin.", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 18f6466d48..9dc429f7de 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -424,7 +424,6 @@ "notification.follow_request": "{name} درخواست پی‌گیریتان را داد", "notification.mention": "‫{name}‬ به شما اشاره کرد", "notification.own_poll": "نظرسنجیتان پایان یافت", - "notification.poll": "نظرسنجی‌ای که در آن رأی دادید به پایان رسیده است", "notification.reblog": "‫{name}‬ فرسته‌تان را تقویت کرد", "notification.status": "{name} چیزی فرستاد", "notification.update": "{name} فرسته‌ای را ویرایش کرد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 0767dd5e37..4b330ec60b 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tiliäsi on rajoitettu.", "notification.moderation_warning.action_suspend": "Tilisi on jäädytetty.", "notification.own_poll": "Äänestyksesi on päättynyt", - "notification.poll": "Kysely, johon osallistuit, on päättynyt", "notification.reblog": "{name} tehosti julkaisuasi", "notification.relationships_severance_event": "Menetettiin yhteydet palvelimeen {name}", "notification.relationships_severance_event.account_suspension": "Palvelimen {from} ylläpitäjä on jäädyttänyt palvelimen {target} vuorovaikutuksen. Enää et voi siis vastaanottaa päivityksiä heiltä tai olla yhteyksissä heidän kanssaan.", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index c27ffe0aa7..dd3d448834 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -443,6 +443,8 @@ "mute_modal.title": "Sløkk brúkara?", "mute_modal.you_wont_see_mentions": "Tú sært ikki postar, sum nevna tey.", "mute_modal.you_wont_see_posts": "Tey síggja framvegis tínar postar, men tú sært ikki teirra.", + "name_and_others": "{name} og {count, plural, one {# annar} other {# onnur}}", + "name_and_others_with_link": "{name} og {count, plural, one {# annar} other {# onnur}}", "navigation_bar.about": "Um", "navigation_bar.advanced_interface": "Lat upp í framkomnum vevmarkamóti", "navigation_bar.blocks": "Bannaðir brúkarar", @@ -470,6 +472,10 @@ "navigation_bar.security": "Trygd", "not_signed_in_indicator.not_signed_in": "Tú mást rita inn fyri at fáa atgongd til hetta tilfarið.", "notification.admin.report": "{name} hevur meldað {target}", + "notification.admin.report_account": "{name} meldaði {count, plural, one {ein post} other {# postar}} frá {target} fyri {category}", + "notification.admin.report_account_other": "{name} meldaði {count, plural, one {ein post} other {# postar}} frá {target}", + "notification.admin.report_statuses": "{name} melaði {target} fyri {category}", + "notification.admin.report_statuses_other": "{name} meldaði {target}", "notification.admin.sign_up": "{name} meldaði seg til", "notification.favourite": "{name} dámdi postin hjá tær", "notification.follow": "{name} fylgdi tær", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Konta tín er avmarkað.", "notification.moderation_warning.action_suspend": "Konta tín er ógildað.", "notification.own_poll": "Tín atkvøðugreiðsla er endað", - "notification.poll": "Ein atkvøðugreiðsla, har tú hevur atkvøtt, er endað", + "notification.poll": "Ein atkvøðugreiðsla, har tú atkvøddi, er endað", + "notification.private_mention": "{name} nevndi teg í privatum boðum", "notification.reblog": "{name} lyfti tín post", "notification.relationships_severance_event": "Mist sambond við {name}", "notification.relationships_severance_event.account_suspension": "Ein umsitari frá {from} hevur gjørt {target} óvirkna, sum merkir, at tú ikki kanst móttaka dagføringar ella virka saman við teimum longur.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nýggjar fráboðanir:", "notifications.column_settings.admin.sign_up": "Nýggjar tilmeldingar:", "notifications.column_settings.alert": "Skriviborðsfráboðanir", + "notifications.column_settings.beta.category": "Royndarhentleikar", + "notifications.column_settings.beta.grouping": "Bólkafráboðanir", "notifications.column_settings.favourite": "Dámdir postar:", "notifications.column_settings.filter_bar.advanced": "Vís allar bólkar", "notifications.column_settings.filter_bar.category": "Skjótfilturbjálki", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Tú fylgir hesi kontuni. Gevst at fylgja henni, um tú ikki longur ynskir at síggja postarnar á heimarásini hjá tær.", "report_notification.attached_statuses": "{count, plural, one {{count} postur atknýttur} other {{count} postar atknýttir}}", "report_notification.categories.legal": "Løgfrøðisligt", + "report_notification.categories.legal_sentence": "ólógligt innihald", "report_notification.categories.other": "Aðrir", + "report_notification.categories.other_sentence": "aðrir", "report_notification.categories.spam": "Ruskpostur", + "report_notification.categories.spam_sentence": "ruskpostur", "report_notification.categories.violation": "Brotin regla", + "report_notification.categories.violation_sentence": "brot á reglu", "report_notification.open": "Opna melding", "search.no_recent_searches": "Ongar nýggjar leitingar", "search.placeholder": "Leita", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 4324855003..94b73bbf18 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -466,7 +466,6 @@ "notification.follow_request": "{name} a demandé à vous suivre", "notification.mention": "{name} vous a mentionné·e", "notification.own_poll": "Votre sondage est terminé", - "notification.poll": "Un sondage auquel vous avez participé est terminé", "notification.reblog": "{name} a boosté votre message", "notification.relationships_severance_event": "Connexions perdues avec {name}", "notification.relationships_severance_event.account_suspension": "Un·e administrateur·rice de {from} a suspendu {target}, ce qui signifie que vous ne pourrez plus recevoir de mises à jour ou interagir avec lui.", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index cd67cda539..fd256fe716 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -466,7 +466,6 @@ "notification.follow_request": "{name} a demandé à vous suivre", "notification.mention": "{name} vous a mentionné·e :", "notification.own_poll": "Votre sondage est terminé", - "notification.poll": "Un sondage auquel vous avez participé vient de se terminer", "notification.reblog": "{name} a partagé votre message", "notification.relationships_severance_event": "Connexions perdues avec {name}", "notification.relationships_severance_event.account_suspension": "Un·e administrateur·rice de {from} a suspendu {target}, ce qui signifie que vous ne pourrez plus recevoir de mises à jour ou interagir avec lui.", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index d787c16bf3..a04a5b25bf 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -455,7 +455,6 @@ "notification.follow_request": "{name} hat dy in folchfersyk stjoerd", "notification.mention": "{name} hat dy fermeld", "notification.own_poll": "Jo poll is beëinige", - "notification.poll": "In enkête dêr’t jo yn stimd hawwe is beëinige", "notification.reblog": "{name} hat jo berjocht boost", "notification.relationships_severance_event.learn_more": "Mear ynfo", "notification.status": "{name} hat in berjocht pleatst", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 8c5039e2a4..711c97f66c 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -207,7 +207,7 @@ "dismissable_banner.dismiss": "Diúltaigh", "dismissable_banner.explore_links": "Tá na scéalta nuachta seo á phlé anseo agus ar fhreastalaithe eile ar an líonra díláraithe faoi láthair.", "dismissable_banner.explore_statuses": "Is postálacha iad seo ó ar fud an ghréasáin shóisialta atá ag éirí níos tarraingtí inniu. Rangaítear poist níos nuaí le níos mó teanntáin agus ceanáin níos airde.", - "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.", + "dismissable_banner.explore_tags": "Is hashtags iad seo atá ag tarraingt ar an ngréasán sóisialta inniu. Tá na hashtags a úsáideann níos mó daoine difriúla rangaithe níos airde.", "dismissable_banner.public_timeline": "Seo iad na postálacha poiblí is déanaí ó dhaoine ar an ngréasán sóisialta a leanann daoine ar {domain}.", "domain_block_modal.block": "Bloc freastalaí", "domain_block_modal.block_account_instead": "Cuir bac ar @{name} ina ionad sin", @@ -263,7 +263,7 @@ "empty_column.followed_tags": "Níor lean tú aon hashtags fós. Nuair a dhéanann tú, beidh siad a thaispeáint suas anseo.", "empty_column.hashtag": "Níl rud ar bith faoin haischlib seo go fóill.", "empty_column.home": "Tá d'amlíne baile folamh! B'fhiú duit cúpla duine eile a leanúint lena líonadh! {suggestions}", - "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", + "empty_column.list": "Níl aon rud ar an liosta seo fós. Nuair a fhoilseoidh baill an liosta seo postálacha nua, beidh siad le feiceáil anseo.", "empty_column.lists": "Níl aon liostaí fós agat. Nuair a chruthaíonn tú ceann, feicfear anseo é.", "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.", "empty_column.notification_requests": "Gach soiléir! Níl aon rud anseo. Nuair a gheobhaidh tú fógraí nua, beidh siad le feiceáil anseo de réir do shocruithe.", @@ -298,7 +298,7 @@ "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo", "filter_modal.title.status": "Déan scagadh ar phostáil", "filtered_notifications_banner.mentions": "{count, plural, one {tagairt} other {tagairtí}}", - "filtered_notifications_banner.pending_requests": "Fógraí ó {count, plural, =0 {níl éinne} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b'fhéidir go mbeadh a fhios agat", + "filtered_notifications_banner.pending_requests": "Fógraí ó {count, plural, =0 {duine ar bith} one {duine amháin} two {# daoine} few {# daoine} many {# daoine} other {# daoine}} b'fhéidir go mbeadh a fhios agat", "filtered_notifications_banner.title": "Fógraí scagtha", "firehose.all": "Gach", "firehose.local": "An freastalaí seo", @@ -340,7 +340,7 @@ "hashtag.column_settings.tag_mode.all": "Iad seo go léir", "hashtag.column_settings.tag_mode.any": "Aon cheann díobh seo", "hashtag.column_settings.tag_mode.none": "Níl aon cheann díobh seo", - "hashtag.column_settings.tag_toggle": "Include additional tags in this column", + "hashtag.column_settings.tag_toggle": "Cuir clibeanna breise san áireamh don cholún seo", "hashtag.counter_by_accounts": "{count, plural, one {{counter} rannpháirtí} two {{counter} rannpháirtí} few {{counter} rannpháirtí} many {{counter} rannpháirtí} other {{counter} rannpháirtí}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} post} two {{counter} post} few {{counter} post} many {{counter} post} other {{counter} poist}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post inniu} other {{counter} poist inniu}} inniu", @@ -375,10 +375,10 @@ "keyboard_shortcuts.back": "Nasclean siar", "keyboard_shortcuts.blocked": "Oscail liosta na n-úsáideoirí bactha", "keyboard_shortcuts.boost": "Treisigh postáil", - "keyboard_shortcuts.column": "to focus a status in one of the columns", - "keyboard_shortcuts.compose": "to focus the compose textarea", + "keyboard_shortcuts.column": "Colún fócas", + "keyboard_shortcuts.compose": "Fócas a chumadh textarea", "keyboard_shortcuts.description": "Cur síos", - "keyboard_shortcuts.direct": "to open direct messages column", + "keyboard_shortcuts.direct": "chun colún lua príobháideach a oscailt", "keyboard_shortcuts.down": "Bog síos ar an liosta", "keyboard_shortcuts.enter": "Oscail postáil", "keyboard_shortcuts.favourite": "Postáil is fearr leat", @@ -387,12 +387,12 @@ "keyboard_shortcuts.heading": "Aicearraí méarchláir", "keyboard_shortcuts.home": "Oscail amlíne bhaile", "keyboard_shortcuts.hotkey": "Eochair aicearra", - "keyboard_shortcuts.legend": "to display this legend", + "keyboard_shortcuts.legend": "Taispeáin an finscéal seo", "keyboard_shortcuts.local": "Oscail an amlíne áitiúil", "keyboard_shortcuts.mention": "Luaigh údar", "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe", "keyboard_shortcuts.my_profile": "Oscail do phróifíl", - "keyboard_shortcuts.notifications": "to open notifications column", + "keyboard_shortcuts.notifications": "Oscail colún fógraí", "keyboard_shortcuts.open_media": "Oscail meáin", "keyboard_shortcuts.pinned": "Oscail liosta postálacha pinn", "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", @@ -443,6 +443,8 @@ "mute_modal.title": "An bhfuil fonn ort úsáideoir a bhalbhú?", "mute_modal.you_wont_see_mentions": "Ní fheicfidh tú postálacha a luann iad.", "mute_modal.you_wont_see_posts": "Is féidir leo do phoist a fheiceáil go fóill, ach ní fheicfidh tú a gcuid postanna.", + "name_and_others": "{name} and {count, plural, one {# eile} two {# eile} few {# eile} many {# eile} other {# eile}}", + "name_and_others_with_link": "{name} agus {count, plural, one {# eile} two {# eile} few {# eile} many {# eile} other {# eile}}", "navigation_bar.about": "Maidir le", "navigation_bar.advanced_interface": "Oscail i gcomhéadan gréasáin chun cinn", "navigation_bar.blocks": "Cuntais bhactha", @@ -468,8 +470,12 @@ "navigation_bar.public_timeline": "Amlíne cónaidhmithe", "navigation_bar.search": "Cuardaigh", "navigation_bar.security": "Slándáil", - "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", + "not_signed_in_indicator.not_signed_in": "Ní mór duit logáil isteach chun rochtain a fháil ar an acmhainn seo.", "notification.admin.report": "Tuairiscigh {name} {target}", + "notification.admin.report_account": "{name} thuairiscigh {count, plural, one {aon phost} two {# phost} few {# phost} many {# bpost} other {# bpost}} ó {target} do {category}", + "notification.admin.report_account_other": "{name} thuairiscigh {count, plural, one {aon phost} two {# phost} few {# phost} many {# bpost} other {# bpost}} ó {target}", + "notification.admin.report_statuses": "Thuairiscigh {name} {target} le haghaidh {category}", + "notification.admin.report_statuses_other": "{name} tuairiscithe {target}", "notification.admin.sign_up": "Chláraigh {name}", "notification.favourite": "Is fearr le {name} do phostáil", "notification.follow": "Lean {name} thú", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Tá do chuntas teoranta.", "notification.moderation_warning.action_suspend": "Cuireadh do chuntas ar fionraí.", "notification.own_poll": "Tá do suirbhé críochnaithe", - "notification.poll": "Tá suirbhé inar vótáil tú tar éis críochnú", + "notification.poll": "Tá deireadh le vótaíocht inar vótáil tú", + "notification.private_mention": "luaigh {name} tú go príobháideach", "notification.reblog": "Mhol {name} do phostáil", "notification.relationships_severance_event": "Cailleadh naisc le {name}", "notification.relationships_severance_event.account_suspension": "Chuir riarthóir ó {from} {target} ar fionraí, rud a chiallaíonn nach féidir leat nuashonruithe a fháil uathu a thuilleadh ná idirghníomhú leo.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Tuairiscí nua:", "notifications.column_settings.admin.sign_up": "Clárúcháin nua:", "notifications.column_settings.alert": "Fógraí deisce", + "notifications.column_settings.beta.category": "Gnéithe turgnamhacha", + "notifications.column_settings.beta.grouping": "Fógraí grúpa", "notifications.column_settings.favourite": "Ceanáin:", "notifications.column_settings.filter_bar.advanced": "Taispeáin gach catagóir", "notifications.column_settings.filter_bar.category": "Barra scagairí tapa", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Tá tú ag leanúint an chuntais seo. Chun nach bhfeicfidh tú a bpoist i do fhotha baile a thuilleadh, dílean ​​iad.", "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", "report_notification.categories.legal": "Dlíthiúil", + "report_notification.categories.legal_sentence": "ábhar mídhleathach", "report_notification.categories.other": "Eile", + "report_notification.categories.other_sentence": "eile", "report_notification.categories.spam": "Turscar", + "report_notification.categories.spam_sentence": "turscar", "report_notification.categories.violation": "Sárú rialach", + "report_notification.categories.violation_sentence": "sárú riail", "report_notification.open": "Oscail tuairisc", "search.no_recent_searches": "Níl aon chuardach le déanaí", "search.placeholder": "Cuardaigh", @@ -787,11 +800,11 @@ "upload_button.label": "Cuir íomhánna, físeán nó comhad fuaime leis", "upload_error.limit": "Sáraíodh an teorainn uaslódála comhaid.", "upload_error.poll": "Ní cheadaítear uaslódáil comhad le pobalbhreith.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.audio_description": "Déan cur síos ar dhaoine bodhra nó lagéisteachta", "upload_form.description": "Describe for the visually impaired", "upload_form.edit": "Cuir in eagar", "upload_form.thumbnail": "Athraigh mionsamhail", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_form.video_description": "Déan cur síos ar dhaoine atá bodhar, lagéisteachta, dall nó lagamhairc", "upload_modal.analyzing_picture": "Ag anailísiú íomhá…", "upload_modal.apply": "Cuir i bhFeidhm", "upload_modal.applying": "Á gcur i bhfeidhm…", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index fec025045c..93268c2715 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -470,7 +470,6 @@ "notification.mention": "Thug {name} iomradh ort", "notification.moderation-warning.learn_more": "Barrachd fiosrachaidh", "notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch", - "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", "notification.relationships_severance_event": "Chaill thu dàimhean le {name}", "notification.relationships_severance_event.account_suspension": "Chuir rianaire aig {from} {target} à rèim agus is ciall dha sin nach fhaigh thu naidheachdan uapa ’s nach urrainn dhut conaltradh leotha.", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index c1e0f97f80..1f76ae951d 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "A túa conta foi limitada.", "notification.moderation_warning.action_suspend": "A túa conta foi suspendida.", "notification.own_poll": "A túa enquisa rematou", - "notification.poll": "Rematou a enquisa na que votaches", "notification.reblog": "{name} compartiu a túa publicación", "notification.relationships_severance_event": "Perdeuse a conexión con {name}", "notification.relationships_severance_event.account_suspension": "A administración de {from} suspendeu a {target}, o que significa que xa non vas recibir actualizacións de esa conta ou interactuar con ela.", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 8111a56e89..148b3285dd 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "חשבונך הוגבל.", "notification.moderation_warning.action_suspend": "חשבונך הושעה.", "notification.own_poll": "הסקר שלך הסתיים", - "notification.poll": "סקר שהצבעת בו הסתיים", "notification.reblog": "הודעתך הודהדה על ידי {name}", "notification.relationships_severance_event": "אבד הקשר עם {name}", "notification.relationships_severance_event.account_suspension": "מנהל.ת משרת {from} השע(ת)ה את {target}, ולפיכך לא תעודכנו יותר על ידם ולא תוכלו להיות איתם בקשר.", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index c8f6f01862..5d087dae94 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -342,7 +342,6 @@ "notification.follow_request": "{name} zatražio/la je da Vas prati", "notification.mention": "{name} Vas je spomenuo", "notification.own_poll": "Vaša anketa je završila", - "notification.poll": "Anketa u kojoj ste glasali je završila", "notification.reblog": "{name} je boostao/la Vaš status", "notifications.clear": "Očisti obavijesti", "notifications.clear_confirmation": "Želite li zaista trajno očistiti sve Vaše obavijesti?", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 1fcadc8f9c..fd9ce38eb1 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -443,6 +443,8 @@ "mute_modal.title": "Elnémítsuk a felhasználót?", "mute_modal.you_wont_see_mentions": "Nem látsz majd őt említő bejegyzéseket.", "mute_modal.you_wont_see_posts": "Továbbra is látni fogja a bejegyzéseidet, de te nem fogod látni az övéit.", + "name_and_others": "{name} és {count, plural, one {# másik} other {# másik}}", + "name_and_others_with_link": "{name} és {count, plural, one {# másik} other {# másik}}", "navigation_bar.about": "Névjegy", "navigation_bar.advanced_interface": "Megnyitás a speciális webes felületben", "navigation_bar.blocks": "Letiltott felhasználók", @@ -470,6 +472,10 @@ "navigation_bar.security": "Biztonság", "not_signed_in_indicator.not_signed_in": "Az erőforrás eléréséhez be kell jelentkezned.", "notification.admin.report": "{name} jelentette: {target}", + "notification.admin.report_account": "{name} jelentett {count, plural, one {egy bejegyzést} other {# bejegyzést}} itt: {target}, ezért: {category}", + "notification.admin.report_account_other": "{name} jelentett {count, plural, one {egy bejegyzést} other {# bejegyzést}} itt: {target}", + "notification.admin.report_statuses": "{name} jelentette: {target}, ezért: {category}", + "notification.admin.report_statuses_other": "{name} jelentette: {target}", "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "A fiókod korlátozásra került.", "notification.moderation_warning.action_suspend": "A fiókod felfüggesztésre került.", "notification.own_poll": "A szavazásod véget ért", - "notification.poll": "Egy szavazás, melyben részt vettél, véget ért", + "notification.poll": "Véget ért egy szavazás, melyben részt vettél", + "notification.private_mention": "{name} privátban megemlített", "notification.reblog": "{name} megtolta a bejegyzésedet", "notification.relationships_severance_event": "Elvesztek a kapcsolatok vele: {name}", "notification.relationships_severance_event.account_suspension": "Egy admin a(z) {from} kiszolgálóról felfüggesztette {target} fiókját, ami azt jelenti, hogy mostantól nem fogsz róla értesítést kapni, és nem fogsz tudni vele kapcsolatba lépni.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Új jelentések:", "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", + "notifications.column_settings.beta.category": "Kísérleti funkciók", + "notifications.column_settings.beta.grouping": "Csoportértesítések", "notifications.column_settings.favourite": "Kedvencek:", "notifications.column_settings.filter_bar.advanced": "Minden kategória megjelenítése", "notifications.column_settings.filter_bar.category": "Gyorsszűrő sáv", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", "report_notification.attached_statuses": "{count} bejegyzés mellékelve", "report_notification.categories.legal": "Jogi", + "report_notification.categories.legal_sentence": "illegális tartalom", "report_notification.categories.other": "Egyéb", + "report_notification.categories.other_sentence": "egyéb", "report_notification.categories.spam": "Kéretlen üzenet", + "report_notification.categories.spam_sentence": "kéretlen üzenet", "report_notification.categories.violation": "Szabálysértés", + "report_notification.categories.violation_sentence": "szabálysértés", "report_notification.open": "Bejelentés megnyitása", "search.no_recent_searches": "Nincsenek keresési előzmények", "search.placeholder": "Keresés", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index b4abe9bf09..4a197185e3 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -324,7 +324,6 @@ "notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել", "notification.mention": "{name} նշեց քեզ", "notification.own_poll": "Հարցումդ աւարտուեց", - "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց գրառումդ", "notification.status": "{name} հենց նոր գրառում արեց", "notification.update": "{name}-ը փոխել է գրառումը", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index ace6402ee1..db1ead30c8 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tu conto ha essite limitate.", "notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.", "notification.own_poll": "Tu sondage ha finite", - "notification.poll": "Un sondage in le qual tu ha votate ha finite", "notification.reblog": "{name} ha impulsate tu message", "notification.relationships_severance_event": "Connexiones perdite con {name}", "notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index f4e5e1baea..e139796bf1 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -426,7 +426,6 @@ "notification.follow_request": "{name} ingin mengikuti Anda", "notification.mention": "{name} menyebut Anda", "notification.own_poll": "Japat Anda telah berakhir", - "notification.poll": "Japat yang Anda ikuti telah berakhir", "notification.reblog": "{name} mem-boost kiriman Anda", "notification.status": "{name} baru saja mengirim", "notification.update": "{name} mengedit kiriman", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index c75788c430..3ece43918b 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -480,7 +480,6 @@ "notification.moderation_warning.action_silence": "Tui conto ha esset limitat.", "notification.moderation_warning.action_suspend": "Tui conto ha esset suspendet.", "notification.own_poll": "Tui balotation ha finit", - "notification.poll": "Un balotation in quel tu votat ha finit", "notification.reblog": "{name} boostat tui posta", "notification.relationships_severance_event": "Perdit conexiones con {name}", "notification.relationships_severance_event.account_suspension": "Un admin de {from} ha suspendet {target}, dunc con ti person tu ne plu posse reciver actualisationes ni far interactiones.", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 6aa954ae57..839939687d 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -402,7 +402,6 @@ "notification.follow_request": "{name} demandas sequar vu", "notification.mention": "{name} mencionis tu", "notification.own_poll": "Vua votposto finigis", - "notification.poll": "Votposto quo havas vua voto finigis", "notification.reblog": "{name} repetis tua mesajo", "notification.status": "{name} nove postigis", "notification.update": "{name} modifikis posto", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 1a38591b85..733e2e541d 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Notandaaðgangurinn þinn hefur verið takmarkaður.", "notification.moderation_warning.action_suspend": "Notandaaðgangurinn þinn hefur verið settur í frysti.", "notification.own_poll": "Könnuninni þinni er lokið", - "notification.poll": "Könnun sem þú tókst þátt í er lokið", "notification.reblog": "{name} endurbirti færsluna þína", "notification.relationships_severance_event": "Missti tengingar við {name}", "notification.relationships_severance_event.account_suspension": "Stjórnandi á {from} hefur fryst {target}, sem þýðir að þú færð ekki lengur skilaboð frá viðkomandi né átt í samskiptum við viðkomandi.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 73c4f9ba60..419b6bcd9f 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -443,6 +443,8 @@ "mute_modal.title": "Silenziare l'utente?", "mute_modal.you_wont_see_mentions": "Non vedrai i post che li menzionano.", "mute_modal.you_wont_see_posts": "Possono ancora vedere i tuoi post, ma tu non vedrai i loro.", + "name_and_others": "{name} e {count, plural, one {# un altro} other {# altri}}", + "name_and_others_with_link": "{name} e {count, plural, one {# un altro} other {# altri}}", "navigation_bar.about": "Info", "navigation_bar.advanced_interface": "Apri nell'interfaccia web avanzata", "navigation_bar.blocks": "Utenti bloccati", @@ -470,6 +472,10 @@ "navigation_bar.security": "Sicurezza", "not_signed_in_indicator.not_signed_in": "Devi accedere per consultare questa risorsa.", "notification.admin.report": "{name} ha segnalato {target}", + "notification.admin.report_account": "{name} ha segnalato {count, plural, one {un post} other {# post}} da {target} per {category}", + "notification.admin.report_account_other": "{name} ha segnalato {count, plural, one {un post} other {# post}} da {target}", + "notification.admin.report_statuses": "{name} ha segnalato {target} per {category}", + "notification.admin.report_statuses_other": "{name} ha segnalato {target}", "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha aggiunto il tuo post ai preferiti", "notification.follow": "{name} ha iniziato a seguirti", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Il tuo account è stato sospeso.", "notification.own_poll": "Il tuo sondaggio è terminato", "notification.poll": "Un sondaggio in cui hai votato è terminato", + "notification.private_mention": "{name} ti ha citato privatamente", "notification.reblog": "{name} ha rebloggato il tuo post", "notification.relationships_severance_event": "Connessioni perse con {name}", "notification.relationships_severance_event.account_suspension": "Un amministratore da {from} ha sospeso {target}, il che significa che non puoi più ricevere aggiornamenti da loro o interagire con loro.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nuove segnalazioni:", "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", + "notifications.column_settings.beta.category": "Funzioni sperimentali", + "notifications.column_settings.beta.grouping": "Notifiche di gruppo", "notifications.column_settings.favourite": "Preferiti:", "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", "notifications.column_settings.filter_bar.category": "Barra del filtro veloce", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Segui questo profilo. Per non visualizzare più i suoi post nel feed della tua home, smetti di seguirlo.", "report_notification.attached_statuses": "{count, plural, one {{count} post allegato} other {{count} post allegati}}", "report_notification.categories.legal": "Legale", + "report_notification.categories.legal_sentence": "contenuti illegali", "report_notification.categories.other": "Altro", + "report_notification.categories.other_sentence": "altri", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violazione delle regole", + "report_notification.categories.violation_sentence": "violazione delle regole", "report_notification.open": "Apri segnalazione", "search.no_recent_searches": "Nessuna ricerca recente", "search.placeholder": "Cerca", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 36974c7602..13583bc1d8 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "あなたのアカウントは制限されています。", "notification.moderation_warning.action_suspend": "あなたのアカウントは停止されました。", "notification.own_poll": "アンケートが終了しました", - "notification.poll": "アンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", "notification.relationships_severance_event": "{name} との関係が失われました", "notification.relationships_severance_event.account_suspension": "{from} の管理者が {target} さんを停止したため、今後このユーザーとの交流や新しい投稿の受け取りができなくなりました。", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index ab0a6ce22b..d12cf04366 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -383,7 +383,6 @@ "notification.moderation-warning.learn_more": "Issin ugar", "notification.moderation_warning.action_suspend": "Yettwaseḥbes umiḍan-ik.", "notification.own_poll": "Tafrant-ik·im tfuk", - "notification.poll": "Tfukk tefrant ideg tettekkaḍ", "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen", "notification.relationships_severance_event.learn_more": "Issin ugar", "notification.status": "{name} akken i d-yessufeɣ", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index efeee16c65..74fb33a91a 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -248,7 +248,6 @@ "notification.follow_request": "{name} сізге жазылғысы келеді", "notification.mention": "{name} сізді атап өтті", "notification.own_poll": "Сауалнама аяқталды", - "notification.poll": "Бұл сауалнаманың мерзімі аяқталыпты", "notification.reblog": "{name} жазбаңызды бөлісті", "notifications.clear": "Ескертпелерді тазарт", "notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index fe3582c1d8..6619cdb2d6 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "계정이 제한되었습니다.", "notification.moderation_warning.action_suspend": "계정이 정지되었습니다.", "notification.own_poll": "설문을 마침", - "notification.poll": "참여한 설문이 종료됨", "notification.reblog": "{name} 님이 부스트했습니다", "notification.relationships_severance_event": "{name} 님과의 연결이 끊어졌습니다", "notification.relationships_severance_event.account_suspension": "{from}의 관리자가 {target}를 정지시켰기 때문에 그들과 더이상 상호작용 할 수 없고 정보를 받아볼 수 없습니다.", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 5248cdfa51..3821216a9a 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -349,7 +349,6 @@ "notification.follow_request": "{name} dixwazê te bişopîne", "notification.mention": "{name} qale te kir", "notification.own_poll": "Rapirsîya te qediya", - "notification.poll": "Rapirsiyeke ku te deng daye qediya", "notification.reblog": "{name} şandiya te bilind kir", "notification.status": "{name} niha şand", "notification.update": "{name} şandiyek serrast kir", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 1afcf645cf..f59f342cbe 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -239,7 +239,6 @@ "notification.follow_request": "{name} a bysis agas holya", "notification.mention": "{name} a wrug agas meneges", "notification.own_poll": "Agas sondyans a worfennas", - "notification.poll": "An sondyans may hwrussowgh ragleva a worfennas", "notification.reblog": "{name} a generthas agas post", "notification.status": "{name} a wrug nowydh postya", "notifications.clear": "Dilea gwarnyansow", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index aa209fcc00..e35e7112be 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -150,7 +150,6 @@ "notification.moderation_warning.action_silence": "Ratio tua est limitata.", "notification.moderation_warning.action_suspend": "Ratio tua suspensus est.", "notification.own_poll": "Suffragium tuum terminatum est.", - "notification.poll": "Electione in quam suffragium dedisti finita est.", "notification.reblog": "{name} tuum nuntium amplificavit.", "notification.relationships_severance_event.account_suspension": "Admin ab {from} {target} suspendit, quod significat nōn iam posse tē novitātēs ab eīs accipere aut cum eīs interagere.", "notification.relationships_severance_event.domain_block": "Admin ab {from} {target} obsēcāvit, includēns {followersCount} ex tuīs sectātōribus et {followingCount, plural, one {# ratione} other {# rationibus}} quās sequeris.", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 292f00818c..ee45e09ad1 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -457,7 +457,6 @@ "notification.moderation_warning.action_silence": "Tu kuento tiene sido limitado.", "notification.moderation_warning.action_suspend": "Tu kuento tiene sido suspendido.", "notification.own_poll": "Tu anketa eskapo", - "notification.poll": "Anketa en ke votates eskapo", "notification.reblog": "{name} repartajo tu publikasyon", "notification.relationships_severance_event": "Koneksyones pedridas kon {name}", "notification.relationships_severance_event.learn_more": "Ambezate mas", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 258e8ce08e..f8a2995c57 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tavo paskyra buvo apribota.", "notification.moderation_warning.action_suspend": "Tavo paskyra buvo sustabdyta.", "notification.own_poll": "Tavo apklausa baigėsi", - "notification.poll": "Apklausa, kurioje balsavai, pasibaigė", "notification.reblog": "{name} pakėlė tavo įrašą", "notification.relationships_severance_event": "Prarasti sąryšiai su {name}", "notification.relationships_severance_event.learn_more": "Sužinoti daugiau", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 701569fa05..d4623a8b31 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -440,7 +440,6 @@ "notification.moderation_warning.action_silence": "Tavs konts tika ierobežots.", "notification.moderation_warning.action_suspend": "Tava konta darbība tika apturēta.", "notification.own_poll": "Tava aptauja ir noslēgusies", - "notification.poll": "Aptauja, kurā tu piedalījies, ir noslēgusies", "notification.reblog": "{name} pastiprināja Tavu ierakstu", "notification.relationships_severance_event": "Zaudēti savienojumi ar {name}", "notification.relationships_severance_event.learn_more": "Uzzināt vairāk", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 88c093bdee..dc34867106 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -421,7 +421,6 @@ "notification.follow_request": "{name} meminta untuk mengikuti anda", "notification.mention": "{name} menyebut anda", "notification.own_poll": "Undian anda telah tamat", - "notification.poll": "Sebuah undian yang anda undi telah tamat", "notification.reblog": "{name} menggalak hantaran anda", "notification.status": "{name} baru sahaja mengirim hantaran", "notification.update": "{name} menyunting hantaran", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 46c8d18069..cb3ea9723b 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -402,7 +402,6 @@ "notification.follow_request": "{name} က သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုထားသည်", "notification.mention": "{name} က သင့်ကို ဖော်ပြခဲ့သည်", "notification.own_poll": "စစ်တမ်းကောက်မှု ပြီးဆုံးပါပြီ", - "notification.poll": "သင်ပါဝင်ခဲ့သော စစ်တမ်းပြီးပါပြီ", "notification.reblog": "{name} boosted your status", "notification.status": "{name} က အခုလေးတင် ပို့စ်တင်လိုက်ပါပြီ", "notification.update": "{name} က ပို့စ်တစ်ခုကို ပြင်ဆင်ခဲ့သည်", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 8246d8dfd2..05c8aa4e26 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Gebruiker negeren?", "mute_modal.you_wont_see_mentions": "Je ziet geen berichten meer die dit account vermelden.", "mute_modal.you_wont_see_posts": "De persoon kan nog steeds jouw berichten zien, maar diens berichten zie je niet meer.", + "name_and_others": "{name} en {count, plural, one {# ander} other {# anderen}}", + "name_and_others_with_link": "{name} en {count, plural, one {# ander} other {# anderen}}", "navigation_bar.about": "Over", "navigation_bar.advanced_interface": "In geavanceerde webinterface openen", "navigation_bar.blocks": "Geblokkeerde gebruikers", @@ -470,6 +472,10 @@ "navigation_bar.security": "Beveiliging", "not_signed_in_indicator.not_signed_in": "Je moet inloggen om toegang tot deze informatie te krijgen.", "notification.admin.report": "{name} heeft {target} geapporteerd", + "notification.admin.report_account": "{name} rapporteerde {count, plural, one {een bericht} other {# berichten}} van {target} voor {category}", + "notification.admin.report_account_other": "{name} rapporteerde {count, plural, one {een bericht} other {# berichten}} van {target}", + "notification.admin.report_statuses": "{name} rapporteerde {target} voor {category}", + "notification.admin.report_statuses_other": "{name} rapporteerde {target}", "notification.admin.sign_up": "{name} heeft zich geregistreerd", "notification.favourite": "{name} markeerde jouw bericht als favoriet", "notification.follow": "{name} volgt jou nu", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Jouw account is beperkt.", "notification.moderation_warning.action_suspend": "Jouw account is opgeschort.", "notification.own_poll": "Jouw peiling is beëindigd", - "notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd", + "notification.poll": "Een peiling waaraan je hebt deelgenomen, is verlopen", + "notification.private_mention": "{name} heeft je privé genoemd", "notification.reblog": "{name} boostte jouw bericht", "notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nieuwe rapportages:", "notifications.column_settings.admin.sign_up": "Nieuwe registraties:", "notifications.column_settings.alert": "Desktopmeldingen", + "notifications.column_settings.beta.category": "Experimentele functies", + "notifications.column_settings.beta.grouping": "Groepsmeldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", "notifications.column_settings.filter_bar.category": "Snelle filterbalk", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Je volgt dit account. Om diens berichten niet meer op jouw starttijdlijn te zien, kun je diegene ontvolgen.", "report_notification.attached_statuses": "{count, plural, one {{count} bericht} other {{count} berichten}} toegevoegd", "report_notification.categories.legal": "Juridisch", + "report_notification.categories.legal_sentence": "illegale inhoud", "report_notification.categories.other": "Overig", + "report_notification.categories.other_sentence": "overig", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Overtreden regel(s)", + "report_notification.categories.violation_sentence": "regel overtreden", "report_notification.open": "Rapportage openen", "search.no_recent_searches": "Geen recente zoekopdrachten", "search.placeholder": "Zoeken", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 0fb0edf0a0..f5efedb1ae 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Kontoen din har blitt avgrensa.", "notification.moderation_warning.action_suspend": "Kontoen din har blitt suspendert.", "notification.own_poll": "Rundspørjinga di er ferdig", - "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva innlegget ditt", "notification.relationships_severance_event": "Tapte samband med {name}", "notification.relationships_severance_event.account_suspension": "Ein administrator på {from} har utvist {target}, som tyder at du ikkje lenger får oppdateringar frå dei eller kan samhandla med dei.", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2bda373404..f2476bf14c 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -414,7 +414,6 @@ "notification.follow_request": "{name} har bedt om å få følge deg", "notification.mention": "{name} nevnte deg", "notification.own_poll": "Avstemningen din er ferdig", - "notification.poll": "En avstemning du stemte på har avsluttet", "notification.reblog": "{name} fremhevet ditt innlegg", "notification.status": "{name} la nettopp ut", "notification.update": "{name} redigerte et innlegg", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index d977eed4af..c02c821afc 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -357,7 +357,6 @@ "notification.follow_request": "{name} a demandat a vos sègre", "notification.mention": "{name} vos a mencionat", "notification.own_poll": "Vòstre sondatge es acabat", - "notification.poll": "Avètz participat a un sondatge que ven de s’acabar", "notification.reblog": "{name} a partejat vòstre estatut", "notification.status": "{name} ven de publicar", "notification.update": "{name} modiquè sa publicacion", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index ddfe1d4fbc..75987f5d29 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Wyciszyć użytkownika?", "mute_modal.you_wont_see_mentions": "Nie zobaczysz wpisów, które wspominają tego użytkownika.", "mute_modal.you_wont_see_posts": "Użytkownik dalej będzie widzieć Twoje posty, ale Ty nie będziesz widzieć jego.", + "name_and_others": "{name} i {count, plural, one {# inny} few {# inne} many {# innych} other {# innych}}", + "name_and_others_with_link": "{name} i {count, plural, one {# inny} few {# inne} many {# innych} other {# innych}}", "navigation_bar.about": "O serwerze", "navigation_bar.advanced_interface": "Otwórz w zaawansowanym interfejsie użytkownika", "navigation_bar.blocks": "Zablokowani użytkownicy", @@ -470,6 +472,10 @@ "navigation_bar.security": "Bezpieczeństwo", "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby uzyskać dostęp do tego zasobu.", "notification.admin.report": "{name} zgłosił {target}", + "notification.admin.report_account": "{name} zgłosił(a) {count, plural, one {1 wpis} few {# wpisy} other {# wpisów}} z {target} w kategorii {category}", + "notification.admin.report_account_other": "{name} zgłosił(a) {count, plural, one {1 wpis} few {# wpisy} other {# wpisów}} z {target}", + "notification.admin.report_statuses": "{name} zgłosił(a) {target} w kategorii {category}", + "notification.admin.report_statuses_other": "{name} zgłosił(a) {target}", "notification.admin.sign_up": "Użytkownik {name} zarejestrował się", "notification.favourite": "{name} dodaje Twój wpis do ulubionych", "notification.follow": "{name} obserwuje Cię", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "Twoje konto zostało ograniczone.", "notification.moderation_warning.action_suspend": "Twoje konto zostało zawieszone.", "notification.own_poll": "Twoje głosowanie zakończyło się", - "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się", + "notification.poll": "Głosowanie, w którym brałeś(-aś) udział, zostało zakończone", + "notification.private_mention": "{name} prywatnie o tobie wspomniał(a)", "notification.reblog": "Twój post został podbity przez {name}", "notification.relationships_severance_event": "Utracone związki z {name}", "notification.relationships_severance_event.account_suspension": "Administrator z {from} zawiesił {target}, więc nie dostaniesz wieści ani nie wejdziesz w interakcje z użytkownikami z tego serwera.", @@ -502,6 +509,8 @@ "notifications.column_settings.admin.report": "Nowe zgłoszenia:", "notifications.column_settings.admin.sign_up": "Nowe rejestracje:", "notifications.column_settings.alert": "Powiadomienia na pulpicie", + "notifications.column_settings.beta.category": "Funkcje eksperymentalne", + "notifications.column_settings.beta.grouping": "Powiadomienia grupowe", "notifications.column_settings.favourite": "Ulubione:", "notifications.column_settings.filter_bar.advanced": "Wyświetl wszystkie kategorie", "notifications.column_settings.filter_bar.category": "Szybkie filtrowanie", @@ -665,9 +674,13 @@ "report.unfollow_explanation": "Obserwujesz to konto. Jeśli nie chcesz już widzieć postów z tego konta w swojej głównej osi czasu, przestań je obserwować.", "report_notification.attached_statuses": "{count, plural, one {{count} wpis} few {{count} wpisy} many {{counter} wpisów} other {{counter} wpisów}}", "report_notification.categories.legal": "Prawne", + "report_notification.categories.legal_sentence": "treść nielegalna", "report_notification.categories.other": "Inne", + "report_notification.categories.other_sentence": "inne", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Naruszenie zasad", + "report_notification.categories.violation_sentence": "naruszenie zasad", "report_notification.open": "Otwórz zgłoszenie", "search.no_recent_searches": "Brak ostatnich wyszukiwań", "search.placeholder": "Szukaj", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 34d0ba36e6..9ebde4e6a4 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Sua conta foi limitada.", "notification.moderation_warning.action_suspend": "Sua conta foi suspensa.", "notification.own_poll": "Sua enquete terminou", - "notification.poll": "Uma enquete que você votou terminou", "notification.reblog": "{name} deu boost no teu toot", "notification.relationships_severance_event": "Conexões perdidas com {name}", "notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que você não pode mais receber atualizações deles ou interagir com eles.", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 6a6feca309..a0359fd868 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "A sua conta foi limitada.", "notification.moderation_warning.action_suspend": "A sua conta foi suspensa.", "notification.own_poll": "A sua votação terminou", - "notification.poll": "Uma votação em que participaste chegou ao fim", "notification.reblog": "{name} reforçou a tua publicação", "notification.relationships_severance_event": "Perdeu as ligações com {name}", "notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que já não pode receber atualizações dele ou interagir com ele.", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 35abf1b021..bbae711269 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -393,7 +393,6 @@ "notification.follow_request": "{name} a trimis o cerere de abonare", "notification.mention": "{name} te-a menționat", "notification.own_poll": "Sondajul tău s-a încheiat", - "notification.poll": "Un sondaj pentru care ai votat s-a încheiat", "notification.reblog": "{name} ți-a distribuit postarea", "notification.status": "{name} tocmai a postat", "notification.update": "{name} și-a modificat o postare", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 97a1f0b09c..971d6c77ca 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -482,7 +482,6 @@ "notification.moderation_warning.action_silence": "Ваша учётная запись была ограничена.", "notification.moderation_warning.action_suspend": "Действие вашей учётной записи приостановлено.", "notification.own_poll": "Ваш опрос закончился", - "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.relationships_severance_event": "Потеряно соединение с {name}", "notification.relationships_severance_event.account_suspension": "Администратор {from} заблокировал {target}, что означает, что вы больше не сможете получать обновления от них или взаймодествовать с ними.", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index c3880a6b03..7f8dae326e 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -355,7 +355,6 @@ "notification.follow_request": "{name} त्वामनुसर्तुमयाचीत्", "notification.mention": "{name} त्वामुल्लिलेख", "notification.own_poll": "तव निर्वाचनं समाप्तम्", - "notification.poll": "यस्मिन्निर्वाचने मतमदास्तन्निर्वाचनं समाप्तम्", "notification.reblog": "{name} तव पत्रं बुस्तिमिति अकार्षीत्", "notification.status": "{name} अधुना अस्थापयिष्ट", "notification.update": "{name} पत्रमेकं समपादयिष्ट", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 8955573737..f13514fd02 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -282,7 +282,6 @@ "notification.follow_request": "{name} at dimandadu de ti sighire", "notification.mention": "{name} t'at mentovadu", "notification.own_poll": "Sondàgiu acabbadu", - "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.reblog": "{name} at cumpartzidu sa publicatzione tua", "notification.status": "{name} at publicadu cosa", "notifications.clear": "Lìmpia notìficas", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index 397f63fed4..7c4d1db60e 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -338,7 +338,6 @@ "notification.follow_request": "{name} is wantin tae follae ye", "notification.mention": "{name} menshied ye", "notification.own_poll": "Yer poll is duin", - "notification.poll": "A poll thit ye votit in is duin", "notification.reblog": "{name} heezed yer post", "notification.status": "{name} juist postit", "notification.update": "{name} editit a post", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 3a67beed52..c4f82c4133 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -289,7 +289,6 @@ "notification.follow": "{name} ඔබව අනුගමනය කළා", "notification.mention": "{name} ඔබව සඳහන් කර ඇත", "notification.own_poll": "ඔබගේ මත විමසුම නිමයි", - "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් නිමයි", "notification.status": "{name} දැන් පළ කළා", "notification.update": "{name} ලිපියක් සංස්කරණය කළා", "notifications.clear": "දැනුම්දීම් මකන්න", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index ed877f7667..cff79c6b9b 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -452,7 +452,6 @@ "notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.", "notification.moderation_warning.action_suspend": "Tvoj účet bol pozastavený.", "notification.own_poll": "Vaša anketa sa skončila", - "notification.poll": "Anketa, v ktorej ste hlasovali, sa skončila", "notification.reblog": "{name} zdieľa váš príspevok", "notification.relationships_severance_event": "Stratené prepojenia s {name}", "notification.relationships_severance_event.account_suspension": "Správca z {from} pozastavil/a {target}, čo znamená, že od nich viac nemôžeš dostávať aktualizácie, alebo s nimi interaktovať.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 2a3d74a80f..b8c995b8d1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Utišaj uporabnika?", "mute_modal.you_wont_see_mentions": "Objav, ki jih omenjajo, ne boste videli.", "mute_modal.you_wont_see_posts": "Še vedno vidijo vaše objave, vi pa ne njihovih.", + "name_and_others": "{name} in {count, plural, one {# drug} two {# druga} few {# drugi} other {# drugih}}", + "name_and_others_with_link": "{name} in {count, plural, one {# drug} two {# druga} few {# drugi} other {# drugih}}", "navigation_bar.about": "O Mastodonu", "navigation_bar.advanced_interface": "Odpri v naprednem spletnem vmesniku", "navigation_bar.blocks": "Blokirani uporabniki", @@ -470,6 +472,10 @@ "navigation_bar.security": "Varnost", "not_signed_in_indicator.not_signed_in": "Za dostop do tega vira se morate prijaviti.", "notification.admin.report": "{name} je prijavil/a {target}", + "notification.admin.report_account": "{name} je prijavil/a {count, plural, one {# objavo} two {# objavi} few {# objave} other {# objav}} od {target} zaradi {category}", + "notification.admin.report_account_other": "{name} je prijavil/a {count, plural, one {# objavo} two {# objavi} few {# objave} other {# objav}} od {target}", + "notification.admin.report_statuses": "{name} je prijavil/a {target} zaradi {category}", + "notification.admin.report_statuses_other": "{name} je prijavil/a {target}", "notification.admin.sign_up": "{name} se je vpisal/a", "notification.favourite": "{name} je vzljubil/a vašo objavo", "notification.follow": "{name} vam sledi", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "Vaš račun je bil suspendiran.", "notification.own_poll": "Vaša anketa je zaključena", "notification.poll": "Anketa, v kateri ste sodelovali, je zaključena", + "notification.private_mention": "{name} vas je zasebno omenil/a", "notification.reblog": "{name} je izpostavila/a vašo objavo", "notification.relationships_severance_event": "Povezave z {name} prekinjene", "notification.relationships_severance_event.account_suspension": "Skrbnik na {from} je suspendiral račun {target}, kar pomeni, da od računa ne morete več prejemati posodobitev ali imeti z njim interakcij.", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "Nove prijave:", "notifications.column_settings.admin.sign_up": "Novi vpisi:", "notifications.column_settings.alert": "Namizna obvestila", + "notifications.column_settings.beta.category": "Poskusne funkcionalnosti", + "notifications.column_settings.beta.grouping": "Skupine obvestil", "notifications.column_settings.favourite": "Priljubljeni:", "notifications.column_settings.filter_bar.advanced": "Prikaži vse kategorije", "notifications.column_settings.filter_bar.category": "Vrstica za hitro filtriranje", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.", "report_notification.attached_statuses": "{count, plural, one {{count} objava pripeta} two {{count} objavi pripeti} few {{count} objave pripete} other {{count} objav pripetih}}", "report_notification.categories.legal": "Legalno", + "report_notification.categories.legal_sentence": "nedovoljena vsebina", "report_notification.categories.other": "Drugo", + "report_notification.categories.other_sentence": "drugo", "report_notification.categories.spam": "Neželeno", + "report_notification.categories.spam_sentence": "neželeno", "report_notification.categories.violation": "Kršitev pravila", + "report_notification.categories.violation_sentence": "kršitev pravila", "report_notification.open": "Odpri prijavo", "search.no_recent_searches": "Ni nedavnih iskanj", "search.placeholder": "Iskanje", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 96b7b3fefc..219561688b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Llogaria juaj është kufizuar.", "notification.moderation_warning.action_suspend": "Llogaria juaj është pezulluar.", "notification.own_poll": "Pyetësori juaj ka përfunduar", - "notification.poll": "Ka përfunduar një pyetësor ku keni votuar", "notification.reblog": "{name} përforcoi mesazhin tuaj", "notification.relationships_severance_event": "Lidhje të humbura me {name}", "notification.relationships_severance_event.account_suspension": "Një përgjegjës nga {from} ka pezulluar {target}, që do të thotë se s’mund të merrni më përditësime prej tij, apo të ndërveproni me të.", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 71b69d428a..38ff12bdcf 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Vaš nalog je ograničen.", "notification.moderation_warning.action_suspend": "Vaš nalog je suspendovan.", "notification.own_poll": "Vaša anketa je završena", - "notification.poll": "Završena je anketa u kojoj ste glasali", "notification.reblog": "{name} je podržao vašu objavu", "notification.relationships_severance_event": "Izgubljena veza sa {name}", "notification.relationships_severance_event.account_suspension": "Administrator sa {from} je suspendovao {target}, što znači da više ne možete da primate ažuriranja od njih niti da komunicirate sa njima.", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index 2c4649f9d0..047e8cf3a8 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Ваш налог је ограничен.", "notification.moderation_warning.action_suspend": "Ваш налог је суспендован.", "notification.own_poll": "Ваша анкета је завршена", - "notification.poll": "Завршена је анкета у којој сте гласали", "notification.reblog": "{name} је подржао вашу објаву", "notification.relationships_severance_event": "Изгубљена веза са {name}", "notification.relationships_severance_event.account_suspension": "Администратор са {from} је суспендовао {target}, што значи да више не можете да примате ажурирања од њих нити да комуницирате са њима.", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 1833a2cfde..ba07d5a1c7 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -469,6 +469,7 @@ "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_statuses_other": "{name} rapporterade {target}", "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoritmarkerade ditt inlägg", "notification.follow": "{name} följer dig", @@ -484,7 +485,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 omröstning 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}", "notification.relationships_severance_event.account_suspension": "En administratör från {from} har stängt av {target}, vilket innebär att du inte längre kan ta emot uppdateringar från dem eller interagera med dem.", @@ -502,6 +503,7 @@ "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.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", "notifications.column_settings.filter_bar.category": "Snabbfilter", @@ -666,7 +668,9 @@ "report_notification.attached_statuses": "bifogade {count, plural, one {{count} inlägg} other {{count} inlägg}}", "report_notification.categories.legal": "Rättsligt", "report_notification.categories.other": "Övrigt", + "report_notification.categories.other_sentence": "övrigt", "report_notification.categories.spam": "Skräppost", + "report_notification.categories.spam_sentence": "skräppost", "report_notification.categories.violation": "Regelöverträdelse", "report_notification.open": "Öppna rapport", "search.no_recent_searches": "Inga sökningar nyligen", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index d44ac424f4..bb26986b81 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -278,7 +278,6 @@ "notification.follow_request": "{name} உங்களைப் பின்தொடரக் கோருகிறார்", "notification.mention": "{name} நீங்கள் குறிப்பிட்டுள்ளீர்கள்", "notification.own_poll": "கருத்துக்கணிப்பு நிறைவடைந்தது", - "notification.poll": "நீங்கள் வாக்களித்த வாக்கெடுப்பு முடிவடைந்தது", "notification.reblog": "{name} உங்கள் நிலை அதிகரித்தது", "notifications.clear": "அறிவிப்புகளை அழிக்கவும்", "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index c06472561f..471890b9a3 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -187,7 +187,6 @@ "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు", "notification.mention": "{name} మిమ్మల్ని ప్రస్తావించారు", - "notification.poll": "మీరు పాల్గొనిన ఎన్సిక ముగిసినది", "notification.reblog": "{name} మీ స్టేటస్ ను బూస్ట్ చేసారు", "notifications.clear": "ప్రకటనలను తుడిచివేయు", "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 64abb394bf..083a0eb33f 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "จำกัดบัญชีของคุณแล้ว", "notification.moderation_warning.action_suspend": "ระงับบัญชีของคุณแล้ว", "notification.own_poll": "การสำรวจความคิดเห็นของคุณได้สิ้นสุดแล้ว", - "notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว", "notification.reblog": "{name} ได้ดันโพสต์ของคุณ", "notification.relationships_severance_event": "สูญเสียการเชื่อมต่อกับ {name}", "notification.relationships_severance_event.account_suspension": "ผู้ดูแลจาก {from} ได้ระงับ {target} ซึ่งหมายความว่าคุณจะไม่สามารถรับการอัปเดตจากเขาหรือโต้ตอบกับเขาได้อีกต่อไป", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index fcdef5f32c..e581978f24 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -294,7 +294,6 @@ "notification.follow_request": "{name} li wile kute e sina", "notification.mention": "jan {name} li toki e sina", "notification.moderation-warning.learn_more": "o kama sona e ijo ante", - "notification.poll": "sina pana lon pana la pana ni li pini", "notification.reblog": "{name} li wawa e toki sina", "notification.status": "{name} li toki", "notification.update": "{name} li ante e toki", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ac39a3fd7b..0b20b60f9e 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Hesabınız sınırlandırıldı.", "notification.moderation_warning.action_suspend": "Hesabınız askıya alındı.", "notification.own_poll": "Anketiniz sona erdi", - "notification.poll": "Oy verdiğiniz bir anket sona erdi", "notification.reblog": "{name} gönderini yeniden paylaştı", "notification.relationships_severance_event": "{name} ile bağlantılar koptu", "notification.relationships_severance_event.account_suspension": "{from} yöneticisi, {target} askıya aldı, bunun anlamı onlardan artık güncelleme alamayacak veya etkileşemeyeceksiniz demektir.", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 67ebb031ae..76abe8d299 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Ваш обліковий запис було обмежено.", "notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.", "notification.own_poll": "Ваше опитування завершилося", - "notification.poll": "Опитування, у якому ви голосували, скінчилося", "notification.reblog": "{name} поширює ваш допис", "notification.relationships_severance_event": "Втрачено з'єднання з {name}", "notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index cf53eb6fe8..3c61846e9c 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -240,7 +240,6 @@ "notification.follow_request": "{name} نے آپ کی پیروی کی درخواست کی", "notification.mention": "{name} نے آپ کا تذکرہ کیا", "notification.own_poll": "آپ کا پول ختم ہو گیا ہے", - "notification.poll": "آپ کا ووٹ دیا گیا ایک پول ختم ہو گیا ہے", "notification.reblog": "{name} boosted your status", "notification.status": "{name} نے ابھی ابھی پوسٹ کیا", "notifications.clear": "اطلاعات ہٹائیں", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 4824b1d332..90ad67d287 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -328,7 +328,6 @@ "navigation_bar.security": "Xavfsizlik", "not_signed_in_indicator.not_signed_in": "Ushbu manbaga kirish uchun tizimga kirishingiz kerak.", "notification.own_poll": "So‘rovingiz tugadi", - "notification.poll": "Siz ovoz bergan soʻrovnoma yakunlandi", "notification.reblog": "{name} boosted your status", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Go to your home feed", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 70932d10be..7a88bee364 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -485,7 +485,6 @@ "notification.moderation_warning.action_silence": "Tài khoản của bạn đã bị hạn chế.", "notification.moderation_warning.action_suspend": "Tài khoản của bạn đã bị vô hiệu hóa.", "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc", - "notification.poll": "Cuộc bình chọn đã kết thúc", "notification.reblog": "{name} đăng lại tút của bạn", "notification.relationships_severance_event": "Mất kết nối với {name}", "notification.relationships_severance_event.account_suspension": "Quản trị viên {from} đã vô hiệu hóa {target}, điều này có nghĩa là bạn không còn có thể nhận được cập nhật từ họ hoặc tương tác với họ nữa.", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index f2accae0d0..f6c0feecfd 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -443,6 +443,8 @@ "mute_modal.title": "隐藏用户?", "mute_modal.you_wont_see_mentions": "你看不到提及他们的嘟文。", "mute_modal.you_wont_see_posts": "他们可以看到你的嘟文,但是你看不到他们的。", + "name_and_others": "{name} 和其它 {count, plural, other {# 人}}", + "name_and_others_with_link": "{name} 和其它 {count, plural, other {# 人}}", "navigation_bar.about": "关于", "navigation_bar.advanced_interface": "在高级网页界面中打开", "navigation_bar.blocks": "已屏蔽的用户", @@ -470,6 +472,10 @@ "navigation_bar.security": "安全", "not_signed_in_indicator.not_signed_in": "您需要登录才能访问此资源。", "notification.admin.report": "{name} 举报了 {target}", + "notification.admin.report_account": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}},原因为 {category}", + "notification.admin.report_account_other": "{name} 举报了来自 {target} 的 {count, plural, other {# 条嘟文}}", + "notification.admin.report_statuses": "{name} 举报了 {target},原因为 {category}", + "notification.admin.report_statuses_other": "{name} 举报了 {target}", "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", @@ -485,7 +491,8 @@ "notification.moderation_warning.action_silence": "你的账号已被限制。", "notification.moderation_warning.action_suspend": "你的账号已被封禁.", "notification.own_poll": "你的投票已经结束", - "notification.poll": "你参与的一个投票已经结束", + "notification.poll": "你参与的一项投票已结束", + "notification.private_mention": "{name} 私下提及了你", "notification.reblog": "{name} 转发了你的嘟文", "notification.relationships_severance_event": "与 {name} 的联系已断开", "notification.relationships_severance_event.account_suspension": "一名来自 {from} 的管理员已经封禁了{target},这意味着你将无法再收到他们的更新或与他们互动。", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "新举报:", "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", + "notifications.column_settings.beta.category": "实验性功能", + "notifications.column_settings.beta.grouping": "通知分组", "notifications.column_settings.favourite": "喜欢:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", "notifications.column_settings.filter_bar.category": "快速筛选栏", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "你正在关注此账户。如果不想继续在主页看到他们的嘟文,取消对他们的关注即可。", "report_notification.attached_statuses": "附上 {count} 条嘟文", "report_notification.categories.legal": "法律义务", + "report_notification.categories.legal_sentence": "非法内容", "report_notification.categories.other": "其他", + "report_notification.categories.other_sentence": "其它", "report_notification.categories.spam": "骚扰", + "report_notification.categories.spam_sentence": "骚扰", "report_notification.categories.violation": "违反规则", + "report_notification.categories.violation_sentence": "违反规则", "report_notification.open": "打开举报", "search.no_recent_searches": "无最近搜索", "search.placeholder": "搜索", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 09a497e889..4b717a77da 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -479,7 +479,6 @@ "notification.moderation_warning.action_silence": "你的帳號已受到限制。", "notification.moderation_warning.action_suspend": "你的帳號已被停權。", "notification.own_poll": "你的投票已結束", - "notification.poll": "你參與過的一個投票已經結束", "notification.reblog": "{name} 轉推你的文章", "notification.relationships_severance_event": "失去與 {name} 的連結", "notification.relationships_severance_event.account_suspension": "{from} 的管理員已將 {target} 停權,這表示你無法再收到他們的更新或與他們互動。", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index b9a5fc0714..dca4cd134a 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -443,6 +443,8 @@ "mute_modal.title": "是否靜音該使用者?", "mute_modal.you_wont_see_mentions": "您不會見到提及他們的嘟文。", "mute_modal.you_wont_see_posts": "他們仍可讀取您的嘟文,但您不會見到他們的。", + "name_and_others": "{name} 與 {count, plural, other {# 個人}}", + "name_and_others_with_link": "{name} 與 {count, plural, other {# 個人}}", "navigation_bar.about": "關於", "navigation_bar.advanced_interface": "以進階網頁介面開啟", "navigation_bar.blocks": "已封鎖的使用者", @@ -470,6 +472,10 @@ "navigation_bar.security": "安全性", "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。", "notification.admin.report": "{name} 已檢舉 {target}", + "notification.admin.report_account": "{name} 已檢舉來自 {target} 關於 {category} 之 {count, plural, other {# 則嘟文}} ", + "notification.admin.report_account_other": "{name} 已檢舉來自 {target} 之 {count, plural, other {# 則嘟文}} ", + "notification.admin.report_statuses": "{name} 已檢舉 {target} 關於 {category}", + "notification.admin.report_statuses_other": "{name} 已檢舉 {target}", "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 已將您的嘟文加入最愛", "notification.follow": "{name} 已跟隨您", @@ -486,6 +492,7 @@ "notification.moderation_warning.action_suspend": "您的帳號已被停權。", "notification.own_poll": "您的投票已結束", "notification.poll": "您曾投過的投票已經結束", + "notification.private_mention": "{name} 私訊您", "notification.reblog": "{name} 已轉嘟您的嘟文", "notification.relationships_severance_event": "與 {name} 失去連結", "notification.relationships_severance_event.account_suspension": "{from} 之管理員已將 {target} 停權,意味著您將不再收到來自他們的更新或與之互動。", @@ -503,6 +510,8 @@ "notifications.column_settings.admin.report": "新檢舉報告:", "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", + "notifications.column_settings.beta.category": "實驗性功能", + "notifications.column_settings.beta.grouping": "分組通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", "notifications.column_settings.filter_bar.category": "快速過濾器", @@ -666,9 +675,13 @@ "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。", "report_notification.attached_statuses": "{count, plural, one {{count} 則} other {{count} 則}} 嘟文", "report_notification.categories.legal": "合法性", + "report_notification.categories.legal_sentence": "違法內容", "report_notification.categories.other": "其他", + "report_notification.categories.other_sentence": "其他", "report_notification.categories.spam": "垃圾訊息", + "report_notification.categories.spam_sentence": "垃圾訊息", "report_notification.categories.violation": "違反規則", + "report_notification.categories.violation_sentence": "違反規則", "report_notification.open": "開啟檢舉報告", "search.no_recent_searches": "尚無最近的搜尋紀錄", "search.placeholder": "搜尋", diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 2d532071a9..d139a32570 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -18,7 +18,7 @@ ast: account: attributes: username: - invalid: ha contener namás lletres, númberos ya guiones baxos + invalid: ha contener namás lletres, númberos y guiones baxos reserved: ta acutáu admin/webhook: attributes: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 9e6ec6d233..567e5357eb 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -1,7 +1,7 @@ --- ast: about: - about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu ya descentralizáu! Controla los tos datos con Mastodon.' + about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.' contact_unavailable: N/D hosted_on: 'Mastodon ta agospiáu en: %{domain}' title: Tocante a @@ -45,11 +45,12 @@ ast: title: Moderación most_recent_activity: L'actividá más recién most_recent_ip: La IP más recién + no_limits_imposed: S'impunxo nenguna llende perform_full_suspension: Suspender protocol: Protocolu rejected_msg: Refugóse correutamente la solicitú de rexistru de «%{username}» resend_confirmation: - already_confirmed: Esti perfil xá ta confirmáu + already_confirmed: Esti perfil yá ta confirmáu role: Rol search: Buscar search_same_email_domain: Otros perfiles col mesmu dominiu de corréu electrónicu @@ -125,7 +126,7 @@ ast: no_emoji_selected: Nun camudó nengún fustaxe darréu que nun se seleicionó nengún not_permitted: Nun tienes permisu pa facer esta aición shortcode: Códigu curtiu - shortcode_hint: De 2 caráuteres como muncho, namás caráuteres alfanumbéricos ya guiones baxos + shortcode_hint: De 2 caráuteres como muncho, namás caráuteres alfanumbéricos y guiones baxos title: Fustaxes personalizaos uncategorized: Ensin categoría update_failed_msg: Nun se pudo anovar esi fustaxe @@ -176,7 +177,7 @@ ast: export_domain_allows: no_file: Nun se seleicionó nengún ficheru follow_recommendations: - description_html: "La recomendación de cuentes ayuda a que los perfiles nuevos atopen aína conteníu interesante. Cuando una cuenta nun interactuó abondo con otros perfiles como pa formar recomendaciones personalizaes, estes cuentes van ser les que se recomienden. Recalcúlense caldía a partir d'un mecíu de cuentes con más actividá recién ya mayor númberu de siguidores llocales pa una llingua determinada." + description_html: "La recomendación de cuentes ayuda a que los perfiles nuevos atopen aína conteníu interesante. Cuando una cuenta nun interactuó abondo con otros perfiles como pa formar recomendaciones personalizaes, estes cuentes van ser les que se recomienden. Recalcúlense caldía a partir d'un mecíu de cuentes con más actividá recién y mayor númberu de siguidores llocales pa una llingua determinada." language: Pa la llingua status: Estáu title: Recomendación de cuentes @@ -240,7 +241,7 @@ ast: one: "%{count} nota" other: "%{count} notes" actions: - silence_description_html: La cuenta va ser visible namás pa quien xá la siguiere o la buscare manualmente, lo que llenda'l so algame. Esta decisión pue desfacese en cualesquier momentu. Si escueyes esta opción, zárrense tolos informes escontra esta cuenta. + silence_description_html: La cuenta va ser visible namás pa quien yá la siguiere o la buscare manualmente, lo que llenda'l so algame. Esta decisión pue desfacese en cualesquier momentu. Si escueyes esta opción, zárrense tolos informes escontra esta cuenta. actions_description_html: Decidi qué aición tomar pa resolver esti informe. Si tomes una aición punitiva escontra la cuenta de la que s'informó, va unviase un avisu per corréu electrónicu a esa cuenta, esceuto cuando se seleiciona la categoría Puxarra. add_to_report: Amestar más al informe are_you_sure: "¿De xuru que quies facer esta aición?" @@ -314,7 +315,7 @@ ast: preamble: Personaliza la interfaz web de Mastodon. title: Aspeutu branding: - preamble: La marca del to sirvidor estrémalu d'otros sirvidores de la rede. Ye posible qu'esta información apaeza nuna variedá d'entornos, como la interfaz web de Mastodon, les aplicaciones natives, nes previsualizaciones de los enllaces d'otros sitios web, dientro de les aplicaciones de mensaxería, etc. Por esti motivu, lo meyor ye qu'esta información seya clara, curtia ya concisa. + preamble: La marca del to sirvidor estrémalu d'otros sirvidores de la rede. Ye posible qu'esta información apaeza nuna variedá d'entornos, como la interfaz web de Mastodon, les aplicaciones natives, nes previsualizaciones de los enllaces d'otros sitios web, dientro de les aplicaciones de mensaxería, etc. Por esti motivu, lo meyor ye qu'esta información seya clara, curtia y concisa. title: Marca content_retention: preamble: Controla cómo s'atroxa'l conteníu xeneráu polos perfiles en Mastodon. @@ -438,8 +439,8 @@ ast: empty: Nun tienes nengún nomatu. appearance: advanced_web_interface: Interfaz web avanzada - advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol llargor de la pantalla, la interfaz web avanzada permítete configurar columnes estremaes pa ver muncha más información al empar: Aniciu, avisos, llinia de tiempu federada ya cualesquier cantidá de llistes ya etiquetes.' - animations_and_accessibility: Animaciones ya accesibilidá + advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol llargor de la pantalla, la interfaz web avanzada permítete configurar columnes estremaes pa ver muncha más información al empar: Aniciu, avisos, llinia de tiempu federada y cualesquier cantidá de llistes y etiquetes.' + animations_and_accessibility: Animaciones y accesibilidá confirmation_dialogs: Diálogos de confirmación discovery: Descubrimientu localization: @@ -470,7 +471,7 @@ ast: logout: Zarrar la sesión migrate_account: Cambéu de cuenta migrate_account_html: Si quies redirixir esta cuenta a otra diferente, pues configurar esta opción equí. - privacy_policy_agreement_html: Lleí ya acepto la política de privacidá + privacy_policy_agreement_html: Lleí y acepto la política de privacidá providers: cas: CAS saml: SAML @@ -491,7 +492,7 @@ ast: status: account_status: Estáu de la cuenta functional: La cuenta ta completamente operativa. - pending: La to solicitú ta pendiente de que la revise'l nuesu personal ya ye posible que tarde tiempu. Vas recibir un mensaxe si s'aprueba. + pending: La to solicitú ta pendiente de que la revise'l nuesu personal y ye posible que tarde tiempu. Vas recibir un mensaxe si s'aprueba. too_fast: El formulariu xubióse mui rápido, volvi tentalo. challenge: confirm: Siguir @@ -536,7 +537,7 @@ ast: recipient: Dirixóse a reject_appeal: Refugar l'apellación status: 'Artículu #%{id}' - status_removed: L'artículu xá se quitó del sistema + status_removed: L'artículu yá se quitó del sistema your_appeal_approved: Aprobóse la to apellación your_appeal_pending: Unviesti una apellación your_appeal_rejected: Refugóse la to apellación @@ -548,7 +549,7 @@ ast: '403': Nun tienes permisu pa ver esta páxina. '404': La páxina que busques nun ta equí. '406': Esta páxina nun ta disponible nel formatu solicitáu. - '410': La páxina que busques xá nun esiste. + '410': La páxina que busques yá nun esiste. '422': content: La verificación de seguranza falló. ¿Tas bloquiando les cookies? title: La verificación de seguranza falló @@ -561,7 +562,7 @@ ast: exports: archive_takeout: date: Data - hint_html: Pues solicitar un archivu colos tos artículos ya ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes. + hint_html: Pues solicitar un archivu colos tos artículos y ficheros xubíos. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes. in_progress: Compilando l'archivu... request: Solicitar l'archivu size: Tamañu @@ -576,7 +577,7 @@ ast: filters: contexts: account: Perfiles - home: Aniciu ya llistes + home: Aniciu y llistes notifications: Avisos public: Llinies de tiempu públiques thread: Conversaciones @@ -617,7 +618,7 @@ ast: over_rows_processing_limit: contién más de %{count} fileres modes: merge: Mecíu - merge_long: Caltién los rexistros esistentes ya amiesta otros nuevos + merge_long: Caltién los rexistros esistentes y amiesta otros nuevos overwrite: Sobrescritura overwrite_long: Troca los rexistros actuales por otros nuevos preface: Pues importar los datos qu'esportares dende otru sirvidor, como la llista de perfiles bloquiaos o que sigas. @@ -645,7 +646,7 @@ ast: max_uses: one: 1 usu other: "%{count} usos" - prompt: Xenera ya comparti enllaces con otres persones pa conceder l'accesu a esti sirvidor + prompt: Xenera y comparti enllaces con otres persones pa conceder l'accesu a esti sirvidor table: expires_at: Data de caducidá uses: Usos @@ -657,7 +658,7 @@ ast: successful_sign_in_html: Anicióse correutamente la sesión col métodu «%{method}» dende %{ip} (%{browser}) media_attachments: validations: - images_and_video: Nun se pue axuntar nengún videu a un artículu que xá contién imáxenes + images_and_video: Nun se pue axuntar nengún videu a un artículu que yá contién imáxenes too_many: Nun se puen axuntar más de 4 ficheros migrations: errors: @@ -707,16 +708,16 @@ ast: description_html: Si actives l'autenticación en dos pasos con una aplicación autenticadora, al aniciar la sesión va ser obligatorio que tengas el teléfonu a mano, preséu que xenera los pases que tienes d'introducir. enable: Activar instructions_html: "Escania esti códigu QR con Google Authenticator o otra aplicación asemeyada nel móvil. Dende agora, esa aplicación va xenerar los pases que tienes d'introducir cuando anicies la sesión." - manual_instructions: 'Si nun pues escaniar el códigu QR ya tienes d''introducilu manualmente, equí tienes el secretu en testu ensin formatu:' + manual_instructions: 'Si nun pues escaniar el códigu QR y tienes d''introducilu manualmente, equí tienes el secretu en testu ensin formatu:' setup: Configurar - wrong_code: "¡El códigu introducíu nun yera válidu! ¿La hora del sirvidor ya la del preséu son correutes?" + wrong_code: "¡El códigu introducíu nun yera válidu! ¿La hora del sirvidor y la del preséu son correutes?" pagination: next: Siguiente truncate: "…" polls: errors: - already_voted: Xá votesti nesta encuesta - expired: La encuesta xá finó + already_voted: Yá votesti nesta encuesta + expired: La encuesta yá finó invalid_choice: La opción de votu escoyida nun esiste too_many_options: nun pue contener más de %{max} elementos preferences: @@ -724,13 +725,13 @@ ast: posting_defaults: Configuración predeterminada del espublizamientu d'artículos public_timelines: Llinies de tiempu públiques privacy: - hint_html: "Personaliza cómo quies s'atope esti perfil ya los sos artículos. Hai una variedá de funciones de Mastodon que puen ayudate a algamar audiencies más grandes cuando s'activen. Dedica un momentu pa revisar estes opciones y asegurate de que s'axusten al to casu." + hint_html: "Personaliza cómo quies que s'atope esti perfil y los sos artículos. Hai una variedá de funciones de Mastodon que puen ayudate a algamar audiencies más grandes cuando s'activen. Dedica un momentu pa revisar estes opciones y asegurate de que s'axusten al to casu." privacy: Privacidá reach: Algame - reach_hint_html: Controla si quies que te descubran ya te sigan perfiles nuevos. ¿Quies que los tos artículos apaezan na pantalla «Esploración»? ¿Quies qu'otres persones te vean na recomendación de cuentes? ¿Quies aceptar toles solicitúes de siguimientu automáticamente o tener un control minuciosu de caúna? + reach_hint_html: Controla si quies que te descubran y te sigan perfiles nuevos. ¿Quies que los tos artículos apaezan na pantalla «Esploración»? ¿Quies qu'otres persones te vean na recomendación de cuentes? ¿Quies aceptar toles solicitúes de siguimientu automáticamente o tener un control minuciosu de caúna? search: Busca search_hint_html: Controla cómo quies que t'atopen. ¿Quies que la xente t'atope polo qu'espublices públicamente? ¿Quies que la xente fuera de Mástodon atope esti perfil cuando busque na web? Ten en cuenta que nun se pue garantizar la esclusión total de tolos motores de busca. - title: Privacidá ya algame + title: Privacidá y algame privacy_policy: title: Política de privacidá relationships: @@ -797,11 +798,11 @@ ast: export: Esportación de datos featured_tags: Etiquetes destacaes import: Importación - import_and_export: Importación ya esportación + import_and_export: Importación y esportación migrate: Migración de la cuenta preferences: Preferencies profile: Perfil públicu - relationships: Perfiles que sigues ya te siguen + relationships: Perfiles que sigues y te siguen statuses_cleanup: Desaniciu automáticu d'artículos two_factor_authentication: Autenticación en dos pasos webauthn_authentication: Llaves de seguranza @@ -822,7 +823,7 @@ ast: open_in_web: Abrir na web pin_errors: direct: Nun se puen fixar los artículos que son visibles namás pa los usuarios mentaos - limit: Xá fixesti'l númberu máximu d'artículos + limit: Yá fixesti'l númberu máximu d'artículos ownership: Nun se pue fixar l'artículu d'otru perfil reblog: Nun se pue fixar un artículu compartíu poll: @@ -877,15 +878,15 @@ ast: webauthn: Llaves de seguranza user_mailer: suspicious_sign_in: - explanation: Detectemos un aniciu de sesión a la to cuenta dende una direición IP nueva. + explanation: Detectemos un aniciu de sesión na to cuenta dende una direición IP nueva. subject: Accedióse a la to cuenta dende una direición IP nueva warning: appeal: Unviar una apellación appeal_description: Si te paez que ye un error, pues unviar una apellación al personal de %{instance}. explanation: - disable: Xá nun pues usar la cuenta mas el perfil ya otros datos siguen intautos. Pues solicitar una copia de seguranza de los datos, camudar la configuración de la cuenta o desaniciar la cuenta. - silence: Pues siguir usando la cuenta mas namás vas ver los artículos de los perfiles que xá siguieres nesti sirvidor ya ye posible que se t'escluya de dalgunes funciones de descubrimientu. Por embargu, otros perfiles entá puen siguite manualmente. - suspend: Xá nun pues usar la cuenta nin se pue acceder a los datos del to perfil. Pues aniciar la sesión pa pidir una copia de seguranza de los tos datos hasta que se desanicien en 30 díes, mas vamos caltener dalgunos datos básicos pa evitar que te saltes la suspensión. + disable: Yá nun pues usar la cuenta mas el perfil y otros datos siguen intautos. Pues solicitar una copia de seguranza de los datos, camudar la configuración de la cuenta o desaniciar la cuenta. + silence: Pues siguir usando la cuenta mas namás vas ver los artículos de los perfiles que yá siguieres nesti sirvidor y ye posible que se t'escluya de dalgunes funciones de descubrimientu. Por embargu, otros perfiles entá puen siguite manualmente. + suspend: Yá nun pues usar la cuenta nin se pue acceder a los datos del to perfil. Pues aniciar la sesión pa pidir una copia de seguranza de los tos datos hasta que se desanicien en 30 díes, mas vamos caltener dalgunos datos básicos pa evitar que te saltes la suspensión. reason: 'Motivu:' statuses: 'Artículos citaos:' subject: @@ -896,14 +897,27 @@ ast: none: Alvertencia suspend: Cuenta suspendida welcome: + apps_title: Aplicaciones de Mastodon + edit_profile_title: Personalización del perfil explanation: Equí tienes dalgunos conseyos pa que comiences + feature_action: Saber más + follows_title: A quién siguir + follows_view_more: Ver más perfiles a los que siguir + hashtags_recent_count: + one: "%{people} persona nos últimos 2 díes" + other: "%{people} persones nos últimos 2 díes" + hashtags_subtitle: Esplora qué ta en tendencia dende hai 2 díes + hashtags_title: Etiquetes en tendencia + hashtags_view_more: Ver más etiquetes en tendencia + post_step: Saluda al mundu con semeyes, vídeos, testu o encuestes. + sign_in_action: Aniciar la sesión subject: Afáyate en Mastodon title: "¡Afáyate, %{name}!" users: follow_limit_reached: Nun pues siguir a más de %{limit} persones invalid_otp_token: El códigu de l'autenticación en dos pasos nun ye válidu rate_limited: Fixéronse milenta intentos d'autenticación. Volvi tentalo dempués. - seamless_external_login: Aniciesti la sesión pente un serviciu esternu, polo que la configuración de la contraseña ya de la direición de corréu electrónicu nun tán disponibles. + seamless_external_login: Aniciesti la sesión pente un serviciu esternu, polo que la configuración de la contraseña y de la direición de corréu electrónicu nun tán disponibles. signed_in_as: 'Aniciesti la sesión como:' verification: verification: Verificación diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml index 47372c2f07..c353607043 100644 --- a/config/locales/devise.ast.yml +++ b/config/locales/devise.ast.yml @@ -6,7 +6,7 @@ ast: send_instructions: Nunos minutos vas recibir un mensaxe coles instrucciones pa saber cómo confirmar la direición de corréu electrónicu. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. send_paranoid_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un mensaxe coles instrucciones pa saber cómo confirmala. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. failure: - already_authenticated: Xá aniciesti la sesión. + already_authenticated: Yá aniciesti la sesión. last_attempt: Quédate un intentu más enantes de bloquiar la cuenta. locked: La cuenta ta bloquiada. pending: La cuenta sigue en revisión. @@ -16,9 +16,9 @@ ast: mailer: confirmation_instructions: action: Verificar la direición de corréu electrónicu - explanation: Creesti una cuenta en %{host} con esta direición de corréu electrónicu ya tas a un calcu d'activala. Si nun fixesti esta aición, inora esti mensaxe. - explanation_when_pending: Solicitesti una invitación a %{host} con esta direición de corréu electrónicu. Namás que confirmes la direición de corréu electrónicu, vamos revisar la solicitú. Entrín ya non, pues aniciar la sesión pa camudar los detalles o desaniciar la cuenta, mas nun pues acceder a la mayoría de funciones hasta que la cuenta nun tea aprobada. Si se refuga la solicitú, nun ye necesario que faigas nada más o si, per otra parte, tu nun fixesti esta aición, inora esti mensaxe. - extra_html: Revisa tamién les normes del sirvidor ya los nuesos términos del serviciu. + explanation: Creesti una cuenta en %{host} con esta direición de corréu electrónicu y tas a un calcu d'activala. Si nun fixesti esta aición, inora esti mensaxe. + explanation_when_pending: Solicitesti una invitación a %{host} con esta direición de corréu electrónicu. Namás que confirmes la direición de corréu electrónicu, vamos revisar la solicitú. Entrín y non, pues aniciar la sesión pa camudar los detalles o desaniciar la cuenta, mas nun pues acceder a la mayoría de funciones hasta que la cuenta nun tea aprobada. Si se refuga la solicitú, nun ye necesario que faigas nada más o si, per otra parte, tu nun fixesti esta aición, inora esti mensaxe. + extra_html: Revisa tamién les normes del sirvidor y los nuesos términos del serviciu. subject: 'Mastodon: instrucciones de confirmación de «%{instance}»' title: Verificación de la direición de corréu electrónicu email_changed: @@ -38,7 +38,7 @@ ast: reset_password_instructions: action: Camudar la contraseña explanation: Solicitesti una contraseña nueva pa la to cuenta. - extra: Si nun solicitesti esta aición, inora esti mensaxe. La contraseña nun va camudar hasta que nun accedas al enllaz d'arriba ya crees una. + extra: Si nun solicitesti esta aición, inora esti mensaxe. La contraseña nun va camudar hasta que nun accedas al enllaz d'arriba y crees una. subject: 'Mastodon: instrucciones pa camudar la contraseña' title: Cambéu de la contaseña two_factor_disabled: @@ -48,7 +48,7 @@ ast: subject: 'Mastodon: activóse l''autenticación en dos pasos' title: Autenticación de dos pasos desactivada two_factor_recovery_codes_changed: - explanation: Invalidáronse los códigos de recuperación anteriores ya xeneráronse otros nuevos. + explanation: Invalidáronse los códigos de recuperación anteriores y xeneráronse otros nuevos. subject: 'Mastodon: volvieron xenerase los códigos de recuperación de l''autenticación en dos pasos' unlock_instructions: subject: 'Mastodon: instrucciones de desbloquéu' @@ -68,16 +68,16 @@ ast: passwords: send_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. send_paranoid_instructions: Si la direición de corréu electrónicu esiste na nuesa base de datos, nunos minutos vas recibir un enllaz pa recuperar la contraseña. Revisa la carpeta Puxarra si nun recibiesti esti mensaxe. - updated: La contraseña camudó correutamente. Xá aniciesti la sesión. + updated: La contraseña camudó correutamente. yá aniciesti la sesión. updated_not_active: La contraseña camudó correutamente. registrations: destroyed: "¡Ta llueu! La cuenta anulóse correutamente. Esperamos volver vete pronto." signed_up: "¡Afáyate! Rexistréstite correutamente." signed_up_but_inactive: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta entá nun s'activó. signed_up_but_locked: Rexistréstite correutamente. Por embargu, nun se pudo aniciar la sesión porque la cuenta ta bloquiada. - signed_up_but_pending: Unvióse un mensaxe a la direición de corréu electrónicu que contién un enllaz de confirmación. Darréu de calcar nel enllaz, vamos revisar la solicitú ya si s'aprueba, avisámoste. - signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la to direición de corréu electrónicu. Sigui l'enllaz p'activar la cuenta ya revisa la carpeta Puxarra si nun recibiesti esti mensaxe. - update_needs_confirmation: Anovesti la cuenta correutamente, mas tenemos de verificar la direición de corréu electrónicu nueva. Revisa'l to corréu electrónicu ya sigui l'enllaz de confirmación pa confirmar esta direición. Si nun recibiesti'l mensaxe, revisa la carpeta Puxarra. + signed_up_but_pending: Unvióse un mensaxe a la direición de corréu electrónicu que contién un enllaz de confirmación. Darréu de calcar nel enllaz, vamos revisar la solicitú y si s'aprueba, avisámoste. + signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la to direición de corréu electrónicu. Sigui l'enllaz p'activar la cuenta y revisa la carpeta Puxarra si nun recibiesti esti mensaxe. + update_needs_confirmation: Anovesti la cuenta correutamente, mas tenemos de verificar la direición de corréu electrónicu nueva. Revisa'l to corréu electrónicu y sigui l'enllaz de confirmación pa confirmar esta direición. Si nun recibiesti'l mensaxe, revisa la carpeta Puxarra. updated: La cuenta anovóse correutamente. sessions: already_signed_out: Zarresti la sesión correutamente. @@ -89,7 +89,7 @@ ast: unlocked: La cuenta desbloquióse correutamente. Anicia la sesión pa siguir. errors: messages: - already_confirmed: xá se confirmó, prueba a aniciar la sesión + already_confirmed: yá se confirmó, prueba a aniciar la sesión not_saved: one: '1 error torgó que «%{resource}» se guardare:' other: "%{count} errores torgaron que «%{resource}» se guardaren:" diff --git a/config/locales/devise.ga.yml b/config/locales/devise.ga.yml index cc8ae0874e..ca51bb9467 100644 --- a/config/locales/devise.ga.yml +++ b/config/locales/devise.ga.yml @@ -91,7 +91,7 @@ ga: send_instructions: Má tá do sheoladh ríomhphoist inár mbunachar sonraí, gheobhaidh tú nasc athshlánaithe pasfhocail ag do sheoladh ríomhphoist i gceann cúpla nóiméad. Seiceáil d'fhillteán turscair mura bhfuair tú an ríomhphost seo. send_paranoid_instructions: Má tá do sheoladh ríomhphoist inár mbunachar sonraí, gheobhaidh tú nasc athshlánaithe pasfhocail ag do sheoladh ríomhphoist i gceann cúpla nóiméad. Seiceáil d'fhillteán turscair mura bhfuair tú an ríomhphost seo. updated: Athraíodh do phasfhocal go rathúil. Tá tú sínithe isteach anois. - updated_not_active: Your password has been changed successfully. + updated_not_active: Athraíodh do phasfhocal go rathúil. registrations: destroyed: Slán! Cealaíodh do chuntas go rathúil. Tá súil againn tú a fheiceáil arís go luath. signed_up: Fáilte romhat! D'éirigh leat síniú suas. diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index 0564e49dac..0df15a07b6 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -44,7 +44,7 @@ ast: prompt_html: "%{client_name}, que ye una aplicación de terceros, quier tener accesu a la cuenta. Si nun t'enfotes nella, nun habríes autorizala." review_permissions: Revisión de los permisos show: - title: Copia esti códigu d'autorización ya apiégalu na aplicación. + title: Copia esti códigu d'autorización y apiégalu na aplicación. authorized_applications: buttons: revoke: Revocar @@ -67,7 +67,7 @@ ast: grouped_scopes: access: read: Accesu de namás llectura - read/write: Accesu de llectura ya escritura + read/write: Accesu de llectura y escritura write: Accesu de namás escritura title: accounts: Cuentes @@ -111,14 +111,14 @@ ast: read:statuses: mira tolos artículos write: modifica los datos de les cuentes write:accounts: modifica los perfiles - write:blocks: bloquia cuentes ya dominios + write:blocks: bloquia cuentes y dominios write:bookmarks: meter artículos en Marcadores - write:conversations: desaniciar ya desactivar los avisos de conversaciones + write:conversations: desaniciar y desactivar los avisos de conversaciones write:filters: crea peñeres write:follows: sigue a perfiles write:lists: crea llistes write:media: xube ficheros multimedia - write:mutes: desactiva los avisos de perfiles ya de conversaciones + write:mutes: desactiva los avisos de perfiles y de conversaciones write:notifications: borra los avisos write:reports: informa d'otros perfiles write:statuses: espubliza artículos diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index a45ba290b7..fecdab4c7d 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -639,6 +639,7 @@ en-GB: report: 'Report #%{id}' reported_account: Reported account reported_by: Reported by + reported_with_application: Reported with application resolved: Resolved resolved_msg: Report successfully resolved! skip_to_actions: Skip to actions diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 8c55551ce0..5add90ae62 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -639,6 +639,7 @@ es-AR: report: 'Denuncia #%{id}' reported_account: Cuenta denunciada reported_by: Denunciada por + reported_with_application: Informado a través de la aplicación resolved: Resueltas resolved_msg: "¡Denuncia exitosamente resuelta!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 976b7a4f30..22531d2403 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -226,6 +226,7 @@ es-MX: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_ip_block: Actualizar regla IP + update_report: Actualizar informe update_status: Actualizar Estado update_user_role: Actualizar Rol actions: @@ -638,6 +639,7 @@ es-MX: report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por + reported_with_application: Informado a través de la aplicación resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/es.yml b/config/locales/es.yml index aef5100a6d..567526fe8b 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -226,6 +226,7 @@ es: update_custom_emoji: Actualizar Emoji Personalizado update_domain_block: Actualizar el Bloqueo de Dominio update_ip_block: Actualizar regla IP + update_report: Actualizar informe update_status: Actualizar Publicación update_user_role: Actualizar Rol actions: @@ -638,6 +639,7 @@ es: report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por + reported_with_application: Informado a través de la aplicación resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" skip_to_actions: Ir directamente a las acciones diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 370f3e82e6..647c46d7cf 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -1656,7 +1656,7 @@ ga: mutual: Frithpháirteach primary: Príomha relationship: Gaol - remove_selected_domains: Remove all followers from the selected domains + remove_selected_domains: Bain gach leantóir ó na fearainn roghnaithe remove_selected_followers: Bain leantóirí roghnaithe remove_selected_follows: Dí-lean úsáideoirí roghnaithe status: Stádas cuntais @@ -2029,6 +2029,6 @@ ga: invalid_credential: Eochair shlándála neamhbhailí nickname_hint: Cuir isteach leasainm d'eochair shlándála nua not_enabled: Níl WebAuthn cumasaithe agat fós - not_supported: This browser doesn't support security keys - otp_required: To use security keys please enable two-factor authentication first. - registered_on: Registered on %{date} + not_supported: Ní thacaíonn an brabhsálaí seo le heochracha slándála + otp_required: Chun eochracha slándála a úsáid cumasaigh fíordheimhniú dhá fhachtóir ar dtús. + registered_on: Cláraithe ar %{date} diff --git a/config/locales/he.yml b/config/locales/he.yml index ecafbec960..105bd059f2 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -663,6 +663,7 @@ he: report: 'דווח על #%{id}' reported_account: חשבון מדווח reported_by: דווח על ידי + reported_with_application: דיווחים באמצעות יישומון resolved: פתור resolved_msg: הדו"ח נפתר בהצלחה! skip_to_actions: דלג/י לפעולות diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 004f5b4d04..1e717b6c20 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -232,6 +232,7 @@ lt: update_custom_emoji: Atnaujinti pasirinktinį jaustuką update_domain_block: Atnaujinti domeno bloką update_ip_block: Atnaujinti IP taisyklę + update_report: Atnaujinti ataskaitą update_status: Atnaujinti įrašą update_user_role: Atnaujinti vaidmenį actions: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 7497f17843..b0c733102e 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -232,6 +232,7 @@ pl: update_custom_emoji: Aktualizuj niestandardowe emoji update_domain_block: Zaktualizuj blokadę domeny update_ip_block: Aktualizuj regułę IP + update_report: Wiadomości or raporcie update_status: Aktualizuj wpis update_user_role: Aktualizuj rolę actions: @@ -662,6 +663,7 @@ pl: report: 'Zgłoszenie #%{id}' reported_account: Zgłoszone konto reported_by: Zgłaszający + reported_with_application: Zareportowano przez aplikację resolved: Rozwiązane resolved_msg: Pomyślnie rozwiązano zgłoszenie. skip_to_actions: Przejdź do akcji diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index d1950ab15f..c222c9aef5 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -6,7 +6,7 @@ ast: note: 'Pues @mentar a otros perfiles o poner #etiquetes.' unlocked: Los perfiles van ser a siguite ensin solicitar la to aprobación. Desmarca esta opción si quies revisar les solicitúes de siguimientu y escoyer si aceptales o refugales. admin_account_action: - text_html: Opcional. Pues usar la sintaxis de los artículos ya amestar alvertencies preconfiguraes p'aforrar tiempu + text_html: Opcional. Pues usar la sintaxis de los artículos y amestar alvertencies preconfiguraes p'aforrar tiempu type_html: Escueyi qué facer con %{acct} types: none: Usa esta opción pa unviar una alvertencia al perfil, ensin aicionar nenguna otra aición. @@ -18,14 +18,14 @@ ast: text: Pues usar la sintaxis de los artículos. Ten en cuenta l'espaciu que l'anunciu va ocupar na pantalla del usuariu/a defaults: autofollow: Les persones que se rexistren pente la invitación van siguite automáticamente - bot: Avisa a otres persones de qu'esta cuenta fai principalmente aiciones automatizaes ya de que ye posible que nun tean supervisaes - digest: Namás s'unvia dempués d'un periodu llongu d'inactividá ya namás si recibiesti dalgún mensaxe personal demientres la to ausencia + bot: Avisa a otres persones de qu'esta cuenta fai principalmente aiciones automatizaes y de que ye posible que nun tean supervisaes + digest: Namás s'unvia dempués d'un periodu llongu d'inactividá y namás si recibiesti dalgún mensaxe personal demientres la to ausencia irreversible: Los artículos peñeraos desapaecen de forma irreversible, magar que la peñera se quite dempués - locale: La llingua de la interfaz, los mensaxes per corréu electrónicu ya los avisos push + locale: La llingua de la interfaz, los mensaxes per corréu electrónicu y los avisos push password: Usa polo menos 8 caráuteres - setting_aggregate_reblogs: Nun amuesa los artículos compartíos nuevos que xá se compartieren de recién (namás afeuta a los artículos compartíos d'agora) + setting_aggregate_reblogs: Nun amuesa los artículos compartíos nuevos que yá se compartieren de recién (namás afeuta a los artículos compartíos d'agora) setting_always_send_emails: Los avisos nun se suelen unviar per corréu electrónicu si uses activamente Mastodon - setting_default_sensitive: El conteníu multimedia sensible anúbrese por defeutu ya pue amosase al calcar nelli + setting_default_sensitive: El conteníu multimedia sensible anúbrese por defeutu y pue amosase al calcar nelli setting_display_media_default: Anubrilu cuando se marque como sensible setting_display_media_hide_all: Anubrilu siempres setting_display_media_show_all: Amosalu siempres @@ -37,10 +37,10 @@ ast: custom_css: Pues aplicar estilos personalizaos a la versión web de Mastodon. mascot: Anula la ilustración na interfaz web avanzada. require_invite_text: Cuando los rexistros riquen una aprobación manual, el campu «¿Por qué quies xunite?» vuélvese obligatoriu - site_extended_description: Cualesquier tipu d'información adicional que pueda ser útil pa visitantes ya pa perfiles rexistraos. El testu pue estructurase cola sintaxis de Mastodon. + site_extended_description: Cualesquier tipu d'información adicional que pueda ser útil pa visitantes y pa perfiles rexistraos. El testu pue estructurase cola sintaxis de Mastodon. site_short_description: Un descripción curtia qu'ayuda a identificar de forma única al sirvidor. ¿Quién lu lleva?, ¿pa quién ye? - theme: L'estilu que los visitantes ya los perfiles nuevos usen. - trends: Les tendencies amuesen artículos, etiquetes ya noticies que tean ganando popularidá nesti sirvidor. + theme: L'estilu que los visitantes y los perfiles nuevos usen. + trends: Les tendencies amuesen artículos, etiquetes y noticies que tean ganando popularidá nesti sirvidor. form_challenge: current_password: Tas entrando a una área segura imports: @@ -49,7 +49,7 @@ ast: text: Esto va ayudanos a revisar la to solicitú ip_block: comment: Opcional. Un recordatoriu de por qué amestesti esta norma. - expires_in: Les direiciones IP son un recursu finitu, suelen compartise ya cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos indefiníos de direiciones IP. + expires_in: Les direiciones IP son un recursu finitu, suelen compartise y cambiar de manes. Por esti motivu, nun s'aconseyen los bloqueos indefiníos de direiciones IP. severities: no_access: Bloquia l'accesu a tolos recursos sign_up_block: Fai que nun se puedan rexistrar cuentes nueves @@ -58,11 +58,12 @@ ast: chosen_languages: Namás los artículos de les llingües que marques son los que van apaecer nes llinies de tiempu públiques labels: account: - discoverable: Destacar el perfil ya los artículos nos algoritmos de descubrimientu + discoverable: Destacar el perfil y los artículos nos algoritmos de descubrimientu fields: name: Etiqueta value: Conteníu indexable: Incluyir los artículos públicos nos resultaos de busca + show_collections: Amosar los perfiles a los que sigues y los que te siguen account_warning_preset: title: Títulu admin_account_action: @@ -109,10 +110,11 @@ ast: setting_default_privacy: Privacidá de los artículos setting_default_sensitive: Marcar siempres tol conteníu como sensible setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un artículu + setting_disable_hover_cards: Desactivar la previsualización de perfiles al pasar el mur penriba setting_disable_swiping: Desactivar el movimientu de desplazamientu setting_display_media: Conteníu multimedia setting_expand_spoilers: Espander siempres los artículos marcaos con alvertencies de conteníu - setting_hide_network: Anubrir les cuentes que sigas ya te sigan + setting_hide_network: Anubrir les cuentes que sigas y te sigan setting_reduce_motion: Amenorgar el movimientu de les animaciones setting_system_font_ui: Usar la fonte predeterminada del sistema setting_theme: Estilu del sitiu @@ -173,8 +175,9 @@ ast: text: Norma settings: indexable: Incluyir la páxina del perfil nos motores de busca + show_application: Amosar l'aplicación dende la que s'unvien los artículos tag: - listable: Permitir qu'esta etiqueta apaeza nes busques ya nes suxerencies + listable: Permitir qu'esta etiqueta apaeza nes busques y nes suxerencies name: Etiqueta trendable: Permitir qu'esta etiqueta apaeza nes tendencies usable: Permitir que los artículos usen esta etiqueta diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 63e2b9aacf..e68355da6a 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -86,6 +86,7 @@ kab: setting_advanced_layout: Rmed agrudem n web leqqayen setting_default_language: Tutlayt n tira setting_default_privacy: Tabaḍnit n tira + setting_display_media: Askanay n imidyaten setting_display_media_default: Akk-a kan setting_display_media_hide_all: Ffer-iten akk setting_display_media_show_all: Sken-iten-id akk From 784e0885333769b47c8a94fde0c34bb14b1b93bb Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Fri, 19 Jul 2024 03:30:26 -0500 Subject: [PATCH 02/41] Fix double border on column filter on narrow screens (#31068) --- app/javascript/styles/mastodon/components.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5a0a41c978..adcbad202d 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -7380,6 +7380,11 @@ a.status-card { display: flex; flex-shrink: 0; + @media screen and (max-width: $no-gap-breakpoint) { + border-right: 0; + border-left: 0; + } + button { background: transparent; border: 0; From 05342529dd5ecdd6a737451f5c3ca55de24af3e9 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 19 Jul 2024 04:31:34 -0400 Subject: [PATCH 03/41] Reduce factory creation in AP activity move spec (#31064) --- spec/lib/activitypub/activity/move_spec.rb | 67 +++++++++------------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb index d69ef21516..02c3380ab3 100644 --- a/spec/lib/activitypub/activity/move_spec.rb +++ b/spec/lib/activitypub/activity/move_spec.rb @@ -3,6 +3,9 @@ require 'rails_helper' RSpec.describe ActivityPub::Activity::Move do + RSpec::Matchers.define_negated_matcher :not_be_following, :be_following + RSpec::Matchers.define_negated_matcher :not_be_requested, :be_requested + let(:follower) { Fabricate(:account) } let(:old_account) { Fabricate(:account, uri: 'https://example.org/alice', domain: 'example.org', protocol: :activitypub, inbox_url: 'https://example.org/inbox') } let(:new_account) { Fabricate(:account, uri: 'https://example.com/alice', domain: 'example.com', protocol: :activitypub, inbox_url: 'https://example.com/inbox', also_known_as: also_known_as) } @@ -39,48 +42,36 @@ RSpec.describe ActivityPub::Activity::Move do end context 'when all conditions are met', :inline_jobs do - it 'sets moved account on old account' do - expect(old_account.reload.moved_to_account_id).to eq new_account.id - end - - it 'makes followers unfollow old account' do - expect(follower.following?(old_account)).to be false - end - - it 'makes followers follow-request the new account' do - expect(follower.requested?(new_account)).to be true + it 'sets moved on old account, followers unfollow old account, followers request the new account' do + expect(old_account.reload.moved_to_account_id) + .to eq new_account.id + expect(follower) + .to not_be_following(old_account) + .and be_requested(new_account) end end context "when the new account can't be resolved" do let(:returned_account) { nil } - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end context 'when the new account does not references the old account' do let(:also_known_as) { [] } - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end @@ -91,16 +82,12 @@ RSpec.describe ActivityPub::Activity::Move do redis.del("move_in_progress:#{old_account.id}") end - it 'does not set moved account on old account' do - expect(old_account.reload.moved_to_account_id).to be_nil - end - - it 'does not make followers unfollow old account' do - expect(follower.following?(old_account)).to be true - end - - it 'does not make followers follow-request the new account' do - expect(follower.requested?(new_account)).to be false + it 'does not set moved on old account, does not unfollow old, does not follow request new' do + expect(old_account.reload.moved_to_account_id) + .to be_nil + expect(follower) + .to be_following(old_account) + .and not_be_requested(new_account) end end end From adadfdbc0355d9195815d25ad22fdee96e13ce6c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 19 Jul 2024 04:32:43 -0400 Subject: [PATCH 04/41] Update `strong_migrations` to version 2.0.0 (#31061) --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index ef52d50cac..135b94c773 100644 --- a/Gemfile +++ b/Gemfile @@ -88,7 +88,7 @@ gem 'sidekiq-unique-jobs', '~> 7.1' gem 'simple_form', '~> 5.2' gem 'simple-navigation', '~> 4.4' gem 'stoplight', '~> 4.1' -gem 'strong_migrations', '1.8.0' +gem 'strong_migrations' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2023' diff --git a/Gemfile.lock b/Gemfile.lock index c9781a4050..c08c14cb5c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -821,8 +821,8 @@ GEM stoplight (4.1.0) redlock (~> 1.0) stringio (3.1.1) - strong_migrations (1.8.0) - activerecord (>= 5.2) + strong_migrations (2.0.0) + activerecord (>= 6.1) strscan (3.1.0) swd (1.3.0) activesupport (>= 3) @@ -1046,7 +1046,7 @@ DEPENDENCIES simplecov-lcov (~> 0.8) stackprof stoplight (~> 4.1) - strong_migrations (= 1.8.0) + strong_migrations test-prof thor (~> 1.2) tty-prompt (~> 0.23) From 2e63e802b32599537d80f524628a5affeb089df5 Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 19 Jul 2024 12:13:50 +0200 Subject: [PATCH 05/41] Fix inconsistent padding in glitch-soc's grouped notifications (#2784) --- app/javascript/flavours/glitch/styles/components.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/components.scss b/app/javascript/flavours/glitch/styles/components.scss index bcc3655155..0bc63e247a 100644 --- a/app/javascript/flavours/glitch/styles/components.scss +++ b/app/javascript/flavours/glitch/styles/components.scss @@ -11046,7 +11046,7 @@ noscript { } .notification-ungrouped { - padding: 16px 24px; + padding: 10px 14px; // glitch: reduced padding border-bottom: 1px solid var(--background-border-color); &__header { From e768b23aa995130c14a7160165eabcf1e8570dfd Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 19 Jul 2024 17:26:44 +0200 Subject: [PATCH 06/41] Remove routerHistory parameters from composer actions (#31077) --- app/javascript/mastodon/actions/compose.js | 29 ++++++++++--------- app/javascript/mastodon/actions/statuses.js | 8 ++--- app/javascript/mastodon/components/router.tsx | 2 +- app/javascript/mastodon/components/status.jsx | 4 +-- .../mastodon/components/status_action_bar.jsx | 12 ++++---- .../mastodon/containers/status_container.jsx | 26 ++++++++--------- .../account_timeline/components/header.jsx | 11 +++---- .../containers/header_container.jsx | 8 ++--- .../compose/components/compose_form.jsx | 7 ++--- .../containers/compose_form_container.js | 4 +-- .../components/conversation.jsx | 6 ++-- .../notifications/components/notification.jsx | 2 +- .../containers/notification_container.js | 4 +-- .../mastodon/features/onboarding/index.jsx | 7 ++--- .../picture_in_picture/components/footer.jsx | 4 +-- .../features/status/components/action_bar.jsx | 15 ++++------ .../containers/detailed_status_container.js | 20 ++++++------- .../mastodon/features/status/index.jsx | 22 +++++++------- 18 files changed, 91 insertions(+), 100 deletions(-) diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 0bcba7d57f..4f2ed450dd 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -4,6 +4,7 @@ import axios from 'axios'; import { throttle } from 'lodash'; import api from 'mastodon/api'; +import { browserHistory } from 'mastodon/components/router'; import { search as emojiSearch } from 'mastodon/features/emoji/emoji_mart_search_light'; import { tagHistory } from 'mastodon/settings'; @@ -88,9 +89,9 @@ const messages = defineMessages({ saved: { id: 'compose.saved.body', defaultMessage: 'Post saved.' }, }); -export const ensureComposeIsVisible = (getState, routerHistory) => { +export const ensureComposeIsVisible = (getState) => { if (!getState().getIn(['compose', 'mounted'])) { - routerHistory.push('/publish'); + browserHistory.push('/publish'); } }; @@ -110,14 +111,14 @@ export function changeCompose(text) { }; } -export function replyCompose(status, routerHistory) { +export function replyCompose(status) { return (dispatch, getState) => { dispatch({ type: COMPOSE_REPLY, status: status, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } @@ -133,38 +134,38 @@ export function resetCompose() { }; } -export const focusCompose = (routerHistory, defaultText) => (dispatch, getState) => { +export const focusCompose = (defaultText) => (dispatch, getState) => { dispatch({ type: COMPOSE_FOCUS, defaultText, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; -export function mentionCompose(account, routerHistory) { +export function mentionCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_MENTION, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function directCompose(account, routerHistory) { +export function directCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_DIRECT, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function submitCompose(routerHistory) { +export function submitCompose() { return function (dispatch, getState) { const status = getState().getIn(['compose', 'text'], ''); const media = getState().getIn(['compose', 'media_attachments']); @@ -214,8 +215,8 @@ export function submitCompose(routerHistory) { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, }).then(function (response) { - if (routerHistory && (routerHistory.location.pathname === '/publish' || routerHistory.location.pathname === '/statuses/new') && window.history.state) { - routerHistory.goBack(); + if ((browserHistory.location.pathname === '/publish' || browserHistory.location.pathname === '/statuses/new') && window.history.state) { + browserHistory.goBack(); } dispatch(insertIntoTagHistory(response.data.tags, status)); @@ -249,7 +250,7 @@ export function submitCompose(routerHistory) { message: statusId === null ? messages.published : messages.saved, action: messages.open, dismissAfter: 10000, - onClick: () => routerHistory.push(`/@${response.data.account.username}/${response.data.id}`), + onClick: () => browserHistory.push(`/@${response.data.account.username}/${response.data.id}`), })); }).catch(function (error) { dispatch(submitComposeFail(error)); diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index a60b80dc2c..1907d3aa91 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -93,7 +93,7 @@ export function redraft(status, raw_text) { }; } -export const editStatus = (id, routerHistory) => (dispatch, getState) => { +export const editStatus = (id) => (dispatch, getState) => { let status = getState().getIn(['statuses', id]); if (status.get('poll')) { @@ -104,7 +104,7 @@ export const editStatus = (id, routerHistory) => (dispatch, getState) => { api().get(`/api/v1/statuses/${id}/source`).then(response => { dispatch(fetchStatusSourceSuccess()); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); dispatch(setComposeToStatus(status, response.data.text, response.data.spoiler_text)); }).catch(error => { dispatch(fetchStatusSourceFail(error)); @@ -124,7 +124,7 @@ export const fetchStatusSourceFail = error => ({ error, }); -export function deleteStatus(id, routerHistory, withRedraft = false) { +export function deleteStatus(id, withRedraft = false) { return (dispatch, getState) => { let status = getState().getIn(['statuses', id]); @@ -141,7 +141,7 @@ export function deleteStatus(id, routerHistory, withRedraft = false) { if (withRedraft) { dispatch(redraft(status, response.data.text)); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); } }).catch(error => { dispatch(deleteStatusFail(id, error)); diff --git a/app/javascript/mastodon/components/router.tsx b/app/javascript/mastodon/components/router.tsx index 42b926659c..33fb60abb7 100644 --- a/app/javascript/mastodon/components/router.tsx +++ b/app/javascript/mastodon/components/router.tsx @@ -22,7 +22,7 @@ type LocationState = MastodonLocationState | null | undefined; type HistoryPath = Path | LocationDescriptor; -const browserHistory = createBrowserHistory(); +export const browserHistory = createBrowserHistory(); const originalPush = browserHistory.push.bind(browserHistory); const originalReplace = browserHistory.replace.bind(browserHistory); diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 1723080e95..fe5f38889b 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -268,7 +268,7 @@ class Status extends ImmutablePureComponent { handleHotkeyReply = e => { e.preventDefault(); - this.props.onReply(this._properStatus(), this.props.history); + this.props.onReply(this._properStatus()); }; handleHotkeyFavourite = () => { @@ -281,7 +281,7 @@ class Status extends ImmutablePureComponent { handleHotkeyMention = e => { e.preventDefault(); - this.props.onMention(this._properStatus().get('account'), this.props.history); + this.props.onMention(this._properStatus().get('account')); }; handleHotkeyOpen = () => { diff --git a/app/javascript/mastodon/components/status_action_bar.jsx b/app/javascript/mastodon/components/status_action_bar.jsx index c79eae8460..2a7bd0a305 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -118,7 +118,7 @@ class StatusActionBar extends ImmutablePureComponent { const { signedIn } = this.props.identity; if (signedIn) { - this.props.onReply(this.props.status, this.props.history); + this.props.onReply(this.props.status); } else { this.props.onInteractionModal('reply', this.props.status); } @@ -157,15 +157,15 @@ class StatusActionBar extends ImmutablePureComponent { }; handleDeleteClick = () => { - this.props.onDelete(this.props.status, this.props.history); + this.props.onDelete(this.props.status); }; handleRedraftClick = () => { - this.props.onDelete(this.props.status, this.props.history, true); + this.props.onDelete(this.props.status, true); }; handleEditClick = () => { - this.props.onEdit(this.props.status, this.props.history); + this.props.onEdit(this.props.status); }; handlePinClick = () => { @@ -173,11 +173,11 @@ class StatusActionBar extends ImmutablePureComponent { }; handleMentionClick = () => { - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleDirectClick = () => { - this.props.onDirect(this.props.status.get('account'), this.props.history); + this.props.onDirect(this.props.status.get('account')); }; handleMuteClick = () => { diff --git a/app/javascript/mastodon/containers/status_container.jsx b/app/javascript/mastodon/containers/status_container.jsx index 4a9b525777..e2c0af3533 100644 --- a/app/javascript/mastodon/containers/status_container.jsx +++ b/app/javascript/mastodon/containers/status_container.jsx @@ -76,7 +76,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ - onReply (status, router) { + onReply (status) { dispatch((_, getState) => { let state = getState(); @@ -86,10 +86,10 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(status, router)) }, + onConfirm: () => dispatch(replyCompose(status)) }, })); } else { - dispatch(replyCompose(status, router)); + dispatch(replyCompose(status)); } }); }, @@ -144,22 +144,22 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ })); }, - onDelete (status, history, withRedraft = false) { + onDelete (status, withRedraft = false) { if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }, - onEdit (status, history) { + onEdit (status) { dispatch((_, getState) => { let state = getState(); if (state.getIn(['compose', 'text']).trim().length !== 0) { @@ -168,11 +168,11 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ modalProps: { message: intl.formatMessage(messages.editMessage), confirm: intl.formatMessage(messages.editConfirm), - onConfirm: () => dispatch(editStatus(status.get('id'), history)), + onConfirm: () => dispatch(editStatus(status.get('id'))), }, })); } else { - dispatch(editStatus(status.get('id'), history)); + dispatch(editStatus(status.get('id'))); } }); }, @@ -185,12 +185,12 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ } }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, onOpenMedia (statusId, media, index, lang) { diff --git a/app/javascript/mastodon/features/account_timeline/components/header.jsx b/app/javascript/mastodon/features/account_timeline/components/header.jsx index a2463b8764..403c423025 100644 --- a/app/javascript/mastodon/features/account_timeline/components/header.jsx +++ b/app/javascript/mastodon/features/account_timeline/components/header.jsx @@ -2,13 +2,11 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { NavLink, withRouter } from 'react-router-dom'; +import { NavLink } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { WithRouterPropTypes } from 'mastodon/utils/react_router'; - import InnerHeader from '../../account/components/header'; import MemorialNote from './memorial_note'; @@ -36,7 +34,6 @@ class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, - ...WithRouterPropTypes, }; handleFollow = () => { @@ -48,11 +45,11 @@ class Header extends ImmutablePureComponent { }; handleMention = () => { - this.props.onMention(this.props.account, this.props.history); + this.props.onMention(this.props.account); }; handleDirect = () => { - this.props.onDirect(this.props.account, this.props.history); + this.props.onDirect(this.props.account); }; handleReport = () => { @@ -155,4 +152,4 @@ class Header extends ImmutablePureComponent { } -export default withRouter(Header); +export default Header; diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx b/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx index d55d8c58e4..90298879d7 100644 --- a/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx +++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.jsx @@ -77,12 +77,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, onReblogToggle (account) { diff --git a/app/javascript/mastodon/features/compose/components/compose_form.jsx b/app/javascript/mastodon/features/compose/components/compose_form.jsx index 9b4d3dfeb5..b5e8dabb7b 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.jsx +++ b/app/javascript/mastodon/features/compose/components/compose_form.jsx @@ -10,8 +10,6 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import { length } from 'stringz'; -import { WithOptionalRouterPropTypes, withOptionalRouter } from 'mastodon/utils/react_router'; - import AutosuggestInput from '../../../components/autosuggest_input'; import AutosuggestTextarea from '../../../components/autosuggest_textarea'; import { Button } from '../../../components/button'; @@ -71,7 +69,6 @@ class ComposeForm extends ImmutablePureComponent { singleColumn: PropTypes.bool, lang: PropTypes.string, maxChars: PropTypes.number, - ...WithOptionalRouterPropTypes }; static defaultProps = { @@ -120,7 +117,7 @@ class ComposeForm extends ImmutablePureComponent { return; } - this.props.onSubmit(this.props.history || null); + this.props.onSubmit(); if (e) { e.preventDefault(); @@ -317,4 +314,4 @@ class ComposeForm extends ImmutablePureComponent { } -export default withOptionalRouter(injectIntl(ComposeForm)); +export default injectIntl(ComposeForm); diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js index b5e5300334..bda2edba60 100644 --- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js @@ -37,8 +37,8 @@ const mapDispatchToProps = (dispatch) => ({ dispatch(changeCompose(text)); }, - onSubmit (router) { - dispatch(submitCompose(router)); + onSubmit () { + dispatch(submitCompose()); }, onClearSuggestions () { diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx index a2b72f7162..63dc705e40 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx @@ -108,14 +108,14 @@ export const Conversation = ({ conversation, scrollKey, onMoveUp, onMoveDown }) modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(lastStatus, history)), + onConfirm: () => dispatch(replyCompose(lastStatus)), }, })); } else { - dispatch(replyCompose(lastStatus, history)); + dispatch(replyCompose(lastStatus)); } }); - }, [dispatch, lastStatus, history, intl]); + }, [dispatch, lastStatus, intl]); const handleDelete = useCallback(() => { dispatch(deleteConversation(id)); diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 70a3252509..f1eada1359 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -101,7 +101,7 @@ class Notification extends ImmutablePureComponent { e.preventDefault(); const { notification, onMention } = this.props; - onMention(notification.get('account'), this.props.history); + onMention(notification.get('account')); }; handleHotkeyFavourite = () => { diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js index 650acf4ccd..7b7e6e919c 100644 --- a/app/javascript/mastodon/features/notifications/containers/notification_container.js +++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js @@ -34,8 +34,8 @@ const makeMapStateToProps = () => { }; const mapDispatchToProps = dispatch => ({ - onMention: (account, router) => { - dispatch(mentionCompose(account, router)); + onMention: (account) => { + dispatch(mentionCompose(account)); }, onModalReblog (status, privacy) { diff --git a/app/javascript/mastodon/features/onboarding/index.jsx b/app/javascript/mastodon/features/onboarding/index.jsx index 529d53f257..d100a1c3d5 100644 --- a/app/javascript/mastodon/features/onboarding/index.jsx +++ b/app/javascript/mastodon/features/onboarding/index.jsx @@ -3,7 +3,7 @@ import { useCallback } from 'react'; import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; import { Helmet } from 'react-helmet'; -import { Link, Switch, Route, useHistory } from 'react-router-dom'; +import { Link, Switch, Route } from 'react-router-dom'; import { useDispatch } from 'react-redux'; @@ -35,11 +35,10 @@ const Onboarding = () => { const account = useAppSelector(state => state.getIn(['accounts', me])); const dispatch = useDispatch(); const intl = useIntl(); - const history = useHistory(); const handleComposeClick = useCallback(() => { - dispatch(focusCompose(history, intl.formatMessage(messages.template))); - }, [dispatch, intl, history]); + dispatch(focusCompose(intl.formatMessage(messages.template))); + }, [dispatch, intl]); return ( diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index ba0642da28..8404bf61b7 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -61,13 +61,13 @@ class Footer extends ImmutablePureComponent { }; _performReply = () => { - const { dispatch, status, onClose, history } = this.props; + const { dispatch, status, onClose } = this.props; if (onClose) { onClose(true); } - dispatch(replyCompose(status, history)); + dispatch(replyCompose(status)); }; handleReplyClick = () => { diff --git a/app/javascript/mastodon/features/status/components/action_bar.jsx b/app/javascript/mastodon/features/status/components/action_bar.jsx index d610539987..d90ca464a7 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -4,7 +4,6 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; import classNames from 'classnames'; -import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { connect } from 'react-redux'; @@ -23,7 +22,6 @@ import RepeatPrivateIcon from '@/svg-icons/repeat_private.svg?react'; import RepeatPrivateActiveIcon from '@/svg-icons/repeat_private_active.svg?react'; import { identityContextPropShape, withIdentity } from 'mastodon/identity_context'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/permissions'; -import { WithRouterPropTypes } from 'mastodon/utils/react_router'; import { IconButton } from '../../../components/icon_button'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; @@ -91,7 +89,6 @@ class ActionBar extends PureComponent { onPin: PropTypes.func, onEmbed: PropTypes.func, intl: PropTypes.object.isRequired, - ...WithRouterPropTypes, }; handleReplyClick = () => { @@ -111,23 +108,23 @@ class ActionBar extends PureComponent { }; handleDeleteClick = () => { - this.props.onDelete(this.props.status, this.props.history); + this.props.onDelete(this.props.status); }; handleRedraftClick = () => { - this.props.onDelete(this.props.status, this.props.history, true); + this.props.onDelete(this.props.status, true); }; handleEditClick = () => { - this.props.onEdit(this.props.status, this.props.history); + this.props.onEdit(this.props.status); }; handleDirectClick = () => { - this.props.onDirect(this.props.status.get('account'), this.props.history); + this.props.onDirect(this.props.status.get('account')); }; handleMentionClick = () => { - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleMuteClick = () => { @@ -323,4 +320,4 @@ class ActionBar extends PureComponent { } -export default withRouter(connect(mapStateToProps)(withIdentity(injectIntl(ActionBar)))); +export default connect(mapStateToProps)(withIdentity(injectIntl(ActionBar))); diff --git a/app/javascript/mastodon/features/status/containers/detailed_status_container.js b/app/javascript/mastodon/features/status/containers/detailed_status_container.js index c3d4fec4db..f85c3822d7 100644 --- a/app/javascript/mastodon/features/status/containers/detailed_status_container.js +++ b/app/javascript/mastodon/features/status/containers/detailed_status_container.js @@ -55,7 +55,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ - onReply (status, router) { + onReply (status) { dispatch((_, getState) => { let state = getState(); if (state.getIn(['compose', 'text']).trim().length !== 0) { @@ -64,11 +64,11 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(status, router)), + onConfirm: () => dispatch(replyCompose(status)), }, })); } else { - dispatch(replyCompose(status, router)); + dispatch(replyCompose(status)); } }); }, @@ -115,27 +115,27 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ })); }, - onDelete (status, history, withRedraft = false) { + onDelete (status, withRedraft = false) { if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, onOpenMedia (media, index, lang) { diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index 7f37cb50d2..b0fbea9e22 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -280,11 +280,11 @@ class Status extends ImmutablePureComponent { modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(status, this.props.history)), + onConfirm: () => dispatch(replyCompose(status)), }, })); } else { - dispatch(replyCompose(status, this.props.history)); + dispatch(replyCompose(status)); } } else { dispatch(openModal({ @@ -336,33 +336,33 @@ class Status extends ImmutablePureComponent { } }; - handleDeleteClick = (status, history, withRedraft = false) => { + handleDeleteClick = (status, withRedraft = false) => { const { dispatch, intl } = this.props; if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }; - handleEditClick = (status, history) => { - this.props.dispatch(editStatus(status.get('id'), history)); + handleEditClick = (status) => { + this.props.dispatch(editStatus(status.get('id'))); }; - handleDirectClick = (account, router) => { - this.props.dispatch(directCompose(account, router)); + handleDirectClick = (account) => { + this.props.dispatch(directCompose(account)); }; - handleMentionClick = (account, router) => { - this.props.dispatch(mentionCompose(account, router)); + handleMentionClick = (account) => { + this.props.dispatch(mentionCompose(account)); }; handleOpenMedia = (media, index, lang) => { From 3a00f89aa1f2280b995512cd5f91568e6d349cc6 Mon Sep 17 00:00:00 2001 From: kyori19 Date: Sat, 20 Jul 2024 00:31:48 +0900 Subject: [PATCH 07/41] Respect `Account::DISPLAY_NAME_LENGTH_LIMIT` in account spec correctly (#31075) --- spec/models/account_spec.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index dfb1f5bc61..5f918f159a 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -775,7 +775,7 @@ RSpec.describe Account do end it 'is invalid if the display name is longer than the character limit' do - account = Fabricate.build(:account, display_name: username_over_limit) + account = Fabricate.build(:account, display_name: display_name_over_limit) account.valid? expect(account).to model_have_error_on_field(:display_name) end @@ -821,7 +821,7 @@ RSpec.describe Account do end it 'is valid even if the display name is longer than the character limit' do - account = Fabricate.build(:account, domain: 'domain', display_name: username_over_limit) + account = Fabricate.build(:account, domain: 'domain', display_name: display_name_over_limit) account.valid? expect(account).to_not model_have_error_on_field(:display_name) end @@ -837,6 +837,10 @@ RSpec.describe Account do 'a' * described_class::USERNAME_LENGTH_LIMIT * 2 end + def display_name_over_limit + 'a' * described_class::DISPLAY_NAME_LENGTH_LIMIT * 2 + end + def account_note_over_limit 'a' * described_class::NOTE_LENGTH_LIMIT * 2 end From 65a8dc7869360bd4e4fb45d876f7a2bd019d16c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 17:32:06 +0200 Subject: [PATCH 08/41] chore(deps): update dependency selenium-webdriver to v4.23.0 (#31073) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c08c14cb5c..006a918446 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -781,7 +781,7 @@ GEM scenic (1.8.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.22.0) + selenium-webdriver (4.23.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -894,7 +894,7 @@ GEM railties (>= 5.2) semantic_range (>= 2.3.0) webrick (1.8.1) - websocket (1.2.10) + websocket (1.2.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) From 0397df9bef82042221f35e9938ad5b917fa1d4fc Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 19 Jul 2024 11:32:42 -0400 Subject: [PATCH 09/41] Resolve `TODO` in `api/v1/admin/domain_*` controllers (#31067) --- app/controllers/api/v1/admin/domain_allows_controller.rb | 7 +------ app/controllers/api/v1/admin/domain_blocks_controller.rb | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index 9801d832b8..0cd5aebd53 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -47,18 +47,13 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController private def set_domain_allows - @domain_allows = filtered_domain_allows.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + @domain_allows = DomainAllow.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end def set_domain_allow @domain_allow = DomainAllow.find(params[:id]) end - def filtered_domain_allows - # TODO: no filtering yet - DomainAllow.all - end - def next_path api_v1_admin_domain_allows_url(pagination_params(max_id: pagination_max_id)) if records_continue? end diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index a20a4a9c7f..28d91ef93c 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -59,18 +59,13 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController end def set_domain_blocks - @domain_blocks = filtered_domain_blocks.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) + @domain_blocks = DomainBlock.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end def set_domain_block @domain_block = DomainBlock.find(params[:id]) end - def filtered_domain_blocks - # TODO: no filtering yet - DomainBlock.all - end - def domain_block_params params.permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) end From 9f05a06dee264a80827a03569664931f8d443588 Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Fri, 19 Jul 2024 03:30:26 -0500 Subject: [PATCH 10/41] [Glitch] Fix double border on column filter on narrow screens Port 784e0885333769b47c8a94fde0c34bb14b1b93bb to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/components.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/components.scss b/app/javascript/flavours/glitch/styles/components.scss index 0bc63e247a..cb22ca3674 100644 --- a/app/javascript/flavours/glitch/styles/components.scss +++ b/app/javascript/flavours/glitch/styles/components.scss @@ -7933,6 +7933,11 @@ img.modal-warning { display: flex; flex-shrink: 0; + @media screen and (max-width: $no-gap-breakpoint) { + border-right: 0; + border-left: 0; + } + button { background: transparent; border: 0; From 95984b729a8465da36c51182e0fe5a8e518475cb Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 19 Jul 2024 17:26:44 +0200 Subject: [PATCH 11/41] [Glitch] Remove routerHistory parameters from composer actions Port e768b23aa995130c14a7160165eabcf1e8570dfd to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/compose.js | 30 +++++++++---------- .../flavours/glitch/actions/statuses.js | 8 ++--- .../flavours/glitch/components/router.tsx | 2 +- .../flavours/glitch/components/status.jsx | 4 +-- .../glitch/components/status_action_bar.jsx | 12 ++++---- .../glitch/containers/status_container.js | 26 ++++++++-------- .../account_timeline/components/header.jsx | 11 +++---- .../containers/header_container.jsx | 8 ++--- .../compose/components/compose_form.jsx | 9 ++---- .../containers/compose_form_container.js | 8 ++--- .../components/conversation.jsx | 6 ++-- .../notifications/components/notification.jsx | 2 +- .../containers/notification_container.js | 4 +-- .../glitch/features/onboarding/index.jsx | 7 ++--- .../picture_in_picture/components/footer.jsx | 4 +-- .../features/status/components/action_bar.jsx | 15 ++++------ .../containers/detailed_status_container.js | 20 ++++++------- .../flavours/glitch/features/status/index.jsx | 22 +++++++------- 18 files changed, 94 insertions(+), 104 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js index 8eab532f55..2041278a1c 100644 --- a/app/javascript/flavours/glitch/actions/compose.js +++ b/app/javascript/flavours/glitch/actions/compose.js @@ -4,6 +4,7 @@ import axios from 'axios'; import { throttle } from 'lodash'; import api from 'flavours/glitch/api'; +import { browserHistory } from 'flavours/glitch/components/router'; import { search as emojiSearch } from 'flavours/glitch/features/emoji/emoji_mart_search_light'; import { tagHistory } from 'flavours/glitch/settings'; import { recoverHashtags } from 'flavours/glitch/utils/hashtag'; @@ -94,9 +95,9 @@ const messages = defineMessages({ saved: { id: 'compose.saved.body', defaultMessage: 'Post saved.' }, }); -export const ensureComposeIsVisible = (getState, routerHistory) => { +export const ensureComposeIsVisible = (getState) => { if (!getState().getIn(['compose', 'mounted'])) { - routerHistory.push('/publish'); + browserHistory.push('/publish'); } }; @@ -117,7 +118,7 @@ export function changeCompose(text) { }; } -export function replyCompose(status, routerHistory) { +export function replyCompose(status) { return (dispatch, getState) => { const prependCWRe = getState().getIn(['local_settings', 'prepend_cw_re']); dispatch({ @@ -126,7 +127,7 @@ export function replyCompose(status, routerHistory) { prependCWRe: prependCWRe, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } @@ -142,38 +143,38 @@ export function resetCompose() { }; } -export const focusCompose = (routerHistory, defaultText) => (dispatch, getState) => { +export const focusCompose = (defaultText) => (dispatch, getState) => { dispatch({ type: COMPOSE_FOCUS, defaultText, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; -export function mentionCompose(account, routerHistory) { +export function mentionCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_MENTION, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function directCompose(account, routerHistory) { +export function directCompose(account) { return (dispatch, getState) => { dispatch({ type: COMPOSE_DIRECT, account: account, }); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); }; } -export function submitCompose(routerHistory, overridePrivacy = null) { +export function submitCompose(overridePrivacy = null) { return function (dispatch, getState) { let status = getState().getIn(['compose', 'text'], ''); const media = getState().getIn(['compose', 'media_attachments']); @@ -230,11 +231,10 @@ export function submitCompose(routerHistory, overridePrivacy = null) { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, }).then(function (response) { - if (routerHistory - && (routerHistory.location.pathname === '/publish' || routerHistory.location.pathname === '/statuses/new') + if ((browserHistory.location.pathname === '/publish' || browserHistory.location.pathname === '/statuses/new') && window.history.state && !getState().getIn(['compose', 'advanced_options', 'threaded_mode'])) { - routerHistory.goBack(); + browserHistory.goBack(); } dispatch(insertIntoTagHistory(response.data.tags, status)); @@ -272,7 +272,7 @@ export function submitCompose(routerHistory, overridePrivacy = null) { message: statusId === null ? messages.published : messages.saved, action: messages.open, dismissAfter: 10000, - onClick: () => routerHistory.push(`/@${response.data.account.username}/${response.data.id}`), + onClick: () => browserHistory.push(`/@${response.data.account.username}/${response.data.id}`), })); } }).catch(function (error) { diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index c4d292567d..054626bda0 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -94,7 +94,7 @@ export function redraft(status, raw_text, content_type) { }; } -export const editStatus = (id, routerHistory) => (dispatch, getState) => { +export const editStatus = (id) => (dispatch, getState) => { let status = getState().getIn(['statuses', id]); if (status.get('poll')) { @@ -105,7 +105,7 @@ export const editStatus = (id, routerHistory) => (dispatch, getState) => { api().get(`/api/v1/statuses/${id}/source`).then(response => { dispatch(fetchStatusSourceSuccess()); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); dispatch(setComposeToStatus(status, response.data.text, response.data.spoiler_text, response.data.content_type)); }).catch(error => { dispatch(fetchStatusSourceFail(error)); @@ -125,7 +125,7 @@ export const fetchStatusSourceFail = error => ({ error, }); -export function deleteStatus(id, routerHistory, withRedraft = false) { +export function deleteStatus(id, withRedraft = false) { return (dispatch, getState) => { let status = getState().getIn(['statuses', id]); @@ -142,7 +142,7 @@ export function deleteStatus(id, routerHistory, withRedraft = false) { if (withRedraft) { dispatch(redraft(status, response.data.text, response.data.content_type)); - ensureComposeIsVisible(getState, routerHistory); + ensureComposeIsVisible(getState); } }).catch(error => { dispatch(deleteStatusFail(id, error)); diff --git a/app/javascript/flavours/glitch/components/router.tsx b/app/javascript/flavours/glitch/components/router.tsx index 0637c35ada..48f35d8aed 100644 --- a/app/javascript/flavours/glitch/components/router.tsx +++ b/app/javascript/flavours/glitch/components/router.tsx @@ -22,7 +22,7 @@ type LocationState = MastodonLocationState | null | undefined; type HistoryPath = Path | LocationDescriptor; -const browserHistory = createBrowserHistory(); +export const browserHistory = createBrowserHistory(); const originalPush = browserHistory.push.bind(browserHistory); const originalReplace = browserHistory.replace.bind(browserHistory); diff --git a/app/javascript/flavours/glitch/components/status.jsx b/app/javascript/flavours/glitch/components/status.jsx index c115251d65..e002e4df8c 100644 --- a/app/javascript/flavours/glitch/components/status.jsx +++ b/app/javascript/flavours/glitch/components/status.jsx @@ -442,7 +442,7 @@ class Status extends ImmutablePureComponent { handleHotkeyReply = e => { e.preventDefault(); - this.props.onReply(this.props.status, this.props.history); + this.props.onReply(this.props.status); }; handleHotkeyFavourite = (e) => { @@ -459,7 +459,7 @@ class Status extends ImmutablePureComponent { handleHotkeyMention = e => { e.preventDefault(); - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleHotkeyOpen = () => { diff --git a/app/javascript/flavours/glitch/components/status_action_bar.jsx b/app/javascript/flavours/glitch/components/status_action_bar.jsx index 3dfe403987..7b00f84f1b 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.jsx +++ b/app/javascript/flavours/glitch/components/status_action_bar.jsx @@ -108,7 +108,7 @@ class StatusActionBar extends ImmutablePureComponent { const { signedIn } = this.props.identity; if (signedIn) { - this.props.onReply(this.props.status, this.props.history); + this.props.onReply(this.props.status); } else { this.props.onInteractionModal('reply', this.props.status); } @@ -145,15 +145,15 @@ class StatusActionBar extends ImmutablePureComponent { }; handleDeleteClick = () => { - this.props.onDelete(this.props.status, this.props.history); + this.props.onDelete(this.props.status); }; handleRedraftClick = () => { - this.props.onDelete(this.props.status, this.props.history, true); + this.props.onDelete(this.props.status, true); }; handleEditClick = () => { - this.props.onEdit(this.props.status, this.props.history); + this.props.onEdit(this.props.status); }; handlePinClick = () => { @@ -161,11 +161,11 @@ class StatusActionBar extends ImmutablePureComponent { }; handleMentionClick = () => { - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleDirectClick = () => { - this.props.onDirect(this.props.status.get('account'), this.props.history); + this.props.onDirect(this.props.status.get('account')); }; handleMuteClick = () => { diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index 1430a0c845..a05ed5fe4f 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -93,7 +93,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ - onReply (status, router) { + onReply (status) { dispatch((_, getState) => { let state = getState(); @@ -104,11 +104,11 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)), - onConfirm: () => dispatch(replyCompose(status, router)), + onConfirm: () => dispatch(replyCompose(status)), }, })); } else { - dispatch(replyCompose(status, router)); + dispatch(replyCompose(status)); } }); }, @@ -182,22 +182,22 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ })); }, - onDelete (status, history, withRedraft = false) { + onDelete (status, withRedraft = false) { if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }, - onEdit (status, history) { + onEdit (status) { dispatch((_, getState) => { let state = getState(); if (state.getIn(['compose', 'text']).trim().length !== 0) { @@ -206,11 +206,11 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ modalProps: { message: intl.formatMessage(messages.editMessage), confirm: intl.formatMessage(messages.editConfirm), - onConfirm: () => dispatch(editStatus(status.get('id'), history)), + onConfirm: () => dispatch(editStatus(status.get('id'))), }, })); } else { - dispatch(editStatus(status.get('id'), history)); + dispatch(editStatus(status.get('id'))); } }); }, @@ -223,12 +223,12 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ } }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, onOpenMedia (statusId, media, index, lang) { diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx b/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx index 37258d9d83..10a035a0fc 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx +++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx @@ -2,13 +2,11 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -import { NavLink, withRouter } from 'react-router-dom'; +import { NavLink } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; - import ActionBar from '../../account/components/action_bar'; import InnerHeader from '../../account/components/header'; @@ -36,7 +34,6 @@ class Header extends ImmutablePureComponent { hideTabs: PropTypes.bool, domain: PropTypes.string.isRequired, hidden: PropTypes.bool, - ...WithRouterPropTypes, }; handleFollow = () => { @@ -48,11 +45,11 @@ class Header extends ImmutablePureComponent { }; handleMention = () => { - this.props.onMention(this.props.account, this.props.history); + this.props.onMention(this.props.account); }; handleDirect = () => { - this.props.onDirect(this.props.account, this.props.history); + this.props.onDirect(this.props.account); }; handleReport = () => { @@ -158,4 +155,4 @@ class Header extends ImmutablePureComponent { } -export default withRouter(Header); +export default Header; diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.jsx b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.jsx index 1e85a08cd9..ba1241d829 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.jsx +++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.jsx @@ -75,12 +75,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ } }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, onReblogToggle (account) { diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx index 6f16abfc7f..ffed051c37 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx @@ -10,8 +10,6 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import { length } from 'stringz'; -import { WithOptionalRouterPropTypes, withOptionalRouter } from 'flavours/glitch/utils/react_router'; - import AutosuggestInput from '../../../components/autosuggest_input'; import AutosuggestTextarea from '../../../components/autosuggest_textarea'; import { Button } from '../../../components/button'; @@ -81,7 +79,6 @@ class ComposeForm extends ImmutablePureComponent { singleColumn: PropTypes.bool, lang: PropTypes.string, maxChars: PropTypes.number, - ...WithOptionalRouterPropTypes }; static defaultProps = { @@ -141,9 +138,9 @@ class ComposeForm extends ImmutablePureComponent { // Submit unless there are media with missing descriptions if (this.props.mediaDescriptionConfirmation && this.props.media && this.props.media.some(item => !item.get('description'))) { const firstWithoutDescription = this.props.media.find(item => !item.get('description')); - this.props.onMediaDescriptionConfirm(this.props.history || null, firstWithoutDescription.get('id'), overridePrivacy); + this.props.onMediaDescriptionConfirm(firstWithoutDescription.get('id'), overridePrivacy); } else { - this.props.onSubmit(this.props.history || null, overridePrivacy); + this.props.onSubmit(overridePrivacy); } }; @@ -351,4 +348,4 @@ class ComposeForm extends ImmutablePureComponent { } -export default withOptionalRouter(injectIntl(ComposeForm)); +export default injectIntl(ComposeForm); diff --git a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js index 067621c84b..227e793869 100644 --- a/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js +++ b/app/javascript/flavours/glitch/features/compose/containers/compose_form_container.js @@ -82,8 +82,8 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(changeCompose(text)); }, - onSubmit (router, overridePrivacy = null) { - dispatch(submitCompose(router, overridePrivacy)); + onSubmit (overridePrivacy = null) { + dispatch(submitCompose(overridePrivacy)); }, onClearSuggestions () { @@ -110,14 +110,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(insertEmojiCompose(position, data, needsSpace)); }, - onMediaDescriptionConfirm (routerHistory, mediaId, overridePrivacy = null) { + onMediaDescriptionConfirm (mediaId, overridePrivacy = null) { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(messages.missingDescriptionMessage), confirm: intl.formatMessage(messages.missingDescriptionConfirm), onConfirm: () => { - dispatch(submitCompose(routerHistory, overridePrivacy)); + dispatch(submitCompose(overridePrivacy)); }, secondary: intl.formatMessage(messages.missingDescriptionEdit), onSecondary: () => dispatch(openModal({ diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx index 7071c8719d..839de34dd4 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx @@ -126,14 +126,14 @@ export const Conversation = ({ conversation, scrollKey, onMoveUp, onMoveDown }) modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(lastStatus, history)), + onConfirm: () => dispatch(replyCompose(lastStatus)), }, })); } else { - dispatch(replyCompose(lastStatus, history)); + dispatch(replyCompose(lastStatus)); } }); - }, [dispatch, lastStatus, history, intl]); + }, [dispatch, lastStatus, intl]); const handleDelete = useCallback(() => { dispatch(deleteConversation(id)); diff --git a/app/javascript/flavours/glitch/features/notifications/components/notification.jsx b/app/javascript/flavours/glitch/features/notifications/components/notification.jsx index 0751258be9..1a049847d5 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notification.jsx +++ b/app/javascript/flavours/glitch/features/notifications/components/notification.jsx @@ -92,7 +92,7 @@ class Notification extends ImmutablePureComponent { e.preventDefault(); const { notification, onMention } = this.props; - onMention(notification.get('account'), this.props.history); + onMention(notification.get('account')); }; handleHotkeyFavourite = () => { diff --git a/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js b/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js index 338d27d8d6..b4df05b828 100644 --- a/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js +++ b/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js @@ -31,8 +31,8 @@ const makeMapStateToProps = () => { }; const mapDispatchToProps = dispatch => ({ - onMention: (account, router) => { - dispatch(mentionCompose(account, router)); + onMention: (account) => { + dispatch(mentionCompose(account)); }, onModalReblog (status, privacy) { diff --git a/app/javascript/flavours/glitch/features/onboarding/index.jsx b/app/javascript/flavours/glitch/features/onboarding/index.jsx index 187ee3b770..7922b61677 100644 --- a/app/javascript/flavours/glitch/features/onboarding/index.jsx +++ b/app/javascript/flavours/glitch/features/onboarding/index.jsx @@ -3,7 +3,7 @@ import { useCallback } from 'react'; import { FormattedMessage, useIntl, defineMessages } from 'react-intl'; import { Helmet } from 'react-helmet'; -import { Link, Switch, Route, useHistory } from 'react-router-dom'; +import { Link, Switch, Route } from 'react-router-dom'; import { useDispatch } from 'react-redux'; @@ -34,11 +34,10 @@ const Onboarding = () => { const account = useAppSelector(state => state.getIn(['accounts', me])); const dispatch = useDispatch(); const intl = useIntl(); - const history = useHistory(); const handleComposeClick = useCallback(() => { - dispatch(focusCompose(history, intl.formatMessage(messages.template))); - }, [dispatch, intl, history]); + dispatch(focusCompose(intl.formatMessage(messages.template))); + }, [dispatch, intl]); return ( diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx index 13ad86f801..2b27070007 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx @@ -63,13 +63,13 @@ class Footer extends ImmutablePureComponent { }; _performReply = () => { - const { dispatch, status, onClose, history } = this.props; + const { dispatch, status, onClose } = this.props; if (onClose) { onClose(true); } - dispatch(replyCompose(status, history)); + dispatch(replyCompose(status)); }; handleReplyClick = () => { diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx index 808712b021..3377019bdc 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.jsx +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.jsx @@ -4,7 +4,6 @@ import { PureComponent } from 'react'; import { defineMessages, injectIntl } from 'react-intl'; import classNames from 'classnames'; -import { withRouter } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; @@ -23,7 +22,6 @@ import RepeatPrivateActiveIcon from '@/svg-icons/repeat_private_active.svg?react import { identityContextPropShape, withIdentity } from 'flavours/glitch/identity_context'; import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'flavours/glitch/permissions'; import { accountAdminLink, statusAdminLink } from 'flavours/glitch/utils/backend_links'; -import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; import { IconButton } from '../../../components/icon_button'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; @@ -78,7 +76,6 @@ class ActionBar extends PureComponent { onPin: PropTypes.func, onEmbed: PropTypes.func, intl: PropTypes.object.isRequired, - ...WithRouterPropTypes, }; handleReplyClick = () => { @@ -98,23 +95,23 @@ class ActionBar extends PureComponent { }; handleDeleteClick = () => { - this.props.onDelete(this.props.status, this.props.history); + this.props.onDelete(this.props.status); }; handleRedraftClick = () => { - this.props.onDelete(this.props.status, this.props.history, true); + this.props.onDelete(this.props.status, true); }; handleEditClick = () => { - this.props.onEdit(this.props.status, this.props.history); + this.props.onEdit(this.props.status); }; handleDirectClick = () => { - this.props.onDirect(this.props.status.get('account'), this.props.history); + this.props.onDirect(this.props.status.get('account')); }; handleMentionClick = () => { - this.props.onMention(this.props.status.get('account'), this.props.history); + this.props.onMention(this.props.status.get('account')); }; handleMuteClick = () => { @@ -262,4 +259,4 @@ class ActionBar extends PureComponent { } -export default withRouter(withIdentity(injectIntl(ActionBar))); +export default withIdentity(injectIntl(ActionBar)); diff --git a/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js b/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js index 7cb9735cfe..9663f7ca4e 100644 --- a/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js +++ b/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js @@ -52,7 +52,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch, { intl }) => ({ - onReply (status, router) { + onReply (status) { dispatch((_, getState) => { let state = getState(); if (state.getIn(['compose', 'text']).trim().length !== 0) { @@ -61,11 +61,11 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ modalProps: { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: () => dispatch(replyCompose(status, router)), + onConfirm: () => dispatch(replyCompose(status)), }, })); } else { - dispatch(replyCompose(status, router)); + dispatch(replyCompose(status)); } }); }, @@ -112,27 +112,27 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ })); }, - onDelete (status, history, withRedraft = false) { + onDelete (status, withRedraft = false) { if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }, - onDirect (account, router) { - dispatch(directCompose(account, router)); + onDirect (account) { + dispatch(directCompose(account)); }, - onMention (account, router) { - dispatch(mentionCompose(account, router)); + onMention (account) { + dispatch(mentionCompose(account)); }, onOpenMedia (media, index, lang) { diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx index 00639a667e..eb965046d1 100644 --- a/app/javascript/flavours/glitch/features/status/index.jsx +++ b/app/javascript/flavours/glitch/features/status/index.jsx @@ -324,11 +324,11 @@ class Status extends ImmutablePureComponent { message: intl.formatMessage(messages.replyMessage), confirm: intl.formatMessage(messages.replyConfirm), onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)), - onConfirm: () => dispatch(replyCompose(status, this.props.history)), + onConfirm: () => dispatch(replyCompose(status)), }, })); } else { - dispatch(replyCompose(status, this.props.history)); + dispatch(replyCompose(status)); } } else { dispatch(openModal({ @@ -384,33 +384,33 @@ class Status extends ImmutablePureComponent { } }; - handleDeleteClick = (status, history, withRedraft = false) => { + handleDeleteClick = (status, withRedraft = false) => { const { dispatch, intl } = this.props; if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); + dispatch(deleteStatus(status.get('id'), withRedraft)); } else { dispatch(openModal({ modalType: 'CONFIRM', modalProps: { message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), + onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), }, })); } }; - handleEditClick = (status, history) => { - this.props.dispatch(editStatus(status.get('id'), history)); + handleEditClick = (status) => { + this.props.dispatch(editStatus(status.get('id'))); }; - handleDirectClick = (account, history) => { - this.props.dispatch(directCompose(account, history)); + handleDirectClick = (account) => { + this.props.dispatch(directCompose(account)); }; - handleMentionClick = (account, history) => { - this.props.dispatch(mentionCompose(account, history)); + handleMentionClick = (account) => { + this.props.dispatch(mentionCompose(account)); }; handleOpenMedia = (media, index, lang) => { From 2774980589fd5d95a2a812527c269a4368e6889e Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 09:37:27 +0200 Subject: [PATCH 12/41] Fix syntax error in grouped notifications CTE on some PostgreSQL versions (#31098) --- app/models/notification.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/notification.rb b/app/models/notification.rb index 6d40411478..8b77b2a03b 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -149,7 +149,7 @@ class Notification < ApplicationRecord .with_recursive( grouped_notifications: [ query - .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups") + .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] AS groups") .limit(1), query .joins('CROSS JOIN grouped_notifications') @@ -177,7 +177,7 @@ class Notification < ApplicationRecord .with_recursive( grouped_notifications: [ query - .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] groups") + .select('notifications.*', "ARRAY[COALESCE(notifications.group_key, 'ungrouped-' || notifications.id)] AS groups") .limit(1), query .joins('CROSS JOIN grouped_notifications') From 77ec5e11e4385546e9b10c597c0b40002a809082 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 07:38:52 +0000 Subject: [PATCH 13/41] chore(deps): update dependency email_spec to v2.3.0 (#31097) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 006a918446..3815e6960c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -222,9 +222,9 @@ GEM elasticsearch-transport (7.17.10) faraday (>= 1, < 3) multi_json - email_spec (2.2.2) + email_spec (2.3.0) htmlentities (~> 4.3.3) - launchy (~> 2.1) + launchy (>= 2.1, < 4.0) mail (~> 2.7) erubi (1.13.0) et-orbi (1.2.11) @@ -440,7 +440,7 @@ GEM uri net-http-persistent (4.0.2) connection_pool (~> 2.2) - net-imap (0.4.12) + net-imap (0.4.14) date net-protocol net-ldap (0.19.0) From 22d2fba2790e258096334d13e4688ae7810ebb4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 07:39:38 +0000 Subject: [PATCH 14/41] chore(deps): update definitelytyped types (non-major) (#31095) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1a17c5862f..7ffd614f68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3737,9 +3737,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.195": - version: 4.17.6 - resolution: "@types/lodash@npm:4.17.6" - checksum: 10c0/3b197ac47af9443fee8c4719c5ffde527d7febc018b827d44a6bc2523c728c7adfdd25196fdcfe3eed827993e0c41a917d0da6e78938b18b2be94164789f1117 + version: 4.17.7 + resolution: "@types/lodash@npm:4.17.7" + checksum: 10c0/40c965b5ffdcf7ff5c9105307ee08b782da228c01b5c0529122c554c64f6b7168fc8f11dc79aa7bae4e67e17efafaba685dc3a47e294dbf52a65ed2b67100561 languageName: node linkType: hard @@ -4117,11 +4117,11 @@ __metadata: linkType: hard "@types/ws@npm:^8.5.9": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" + version: 8.5.11 + resolution: "@types/ws@npm:8.5.11" dependencies: "@types/node": "npm:*" - checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 + checksum: 10c0/50bd2e1a12659fa024a97d7e8c267fbf2a2c2251f1edf2057aa7dfc99682f5c025a188df9e27414675c78d3b189346a3567e1e4c218ad79a9d2b0f1f2b860c3a languageName: node linkType: hard From 6ee5d3b5591d96c492035274e4668cfa7891fe70 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:39:56 +0200 Subject: [PATCH 15/41] fix(deps): update dependency jsdom to v24.1.1 (#31088) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7ffd614f68..bd6efa72fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9518,13 +9518,13 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.4": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" dependencies: agent-base: "npm:^7.0.2" debug: "npm:4" - checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c languageName: node linkType: hard @@ -11095,8 +11095,8 @@ __metadata: linkType: hard "jsdom@npm:^24.0.0": - version: 24.1.0 - resolution: "jsdom@npm:24.1.0" + version: 24.1.1 + resolution: "jsdom@npm:24.1.1" dependencies: cssstyle: "npm:^4.0.1" data-urls: "npm:^5.0.0" @@ -11104,11 +11104,11 @@ __metadata: form-data: "npm:^4.0.0" html-encoding-sniffer: "npm:^4.0.0" http-proxy-agent: "npm:^7.0.2" - https-proxy-agent: "npm:^7.0.4" + https-proxy-agent: "npm:^7.0.5" is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.10" + nwsapi: "npm:^2.2.12" parse5: "npm:^7.1.2" - rrweb-cssom: "npm:^0.7.0" + rrweb-cssom: "npm:^0.7.1" saxes: "npm:^6.0.0" symbol-tree: "npm:^3.2.4" tough-cookie: "npm:^4.1.4" @@ -11117,14 +11117,14 @@ __metadata: whatwg-encoding: "npm:^3.1.1" whatwg-mimetype: "npm:^4.0.0" whatwg-url: "npm:^14.0.0" - ws: "npm:^8.17.0" + ws: "npm:^8.18.0" xml-name-validator: "npm:^5.0.0" peerDependencies: canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true - checksum: 10c0/34eadd8a7ae20c1505abe7a0f3988b2f0881cce7e27d75c4f5224f440f81f8ac08f4f449695b0f4178f048ed1c1709f3594e9d3f2fe0406c28e8da6eddd44f5a + checksum: 10c0/02d6bfe32f09f26329c0e53ad9f9883a3c671fc1f75725167d2089ca412f5b7ca85ff8aa62327d1cc6fc70ffbb3b18dfc7642c4b2096c2c8b19aaf9a48473eb3 languageName: node linkType: hard @@ -12417,10 +12417,10 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.10, nwsapi@npm:^2.2.2": - version: 2.2.10 - resolution: "nwsapi@npm:2.2.10" - checksum: 10c0/43dfa150387bd2a578e37556d0ae3330d5617f99e5a7b64e3400d4c2785620762aa6169caf8f5fbce17b7ef29c372060b602594320c374fba0a39da4163d77ed +"nwsapi@npm:^2.2.12, nwsapi@npm:^2.2.2": + version: 2.2.12 + resolution: "nwsapi@npm:2.2.12" + checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e languageName: node linkType: hard @@ -15361,10 +15361,10 @@ __metadata: languageName: node linkType: hard -"rrweb-cssom@npm:^0.7.0": - version: 0.7.0 - resolution: "rrweb-cssom@npm:0.7.0" - checksum: 10c0/278350b1f383f76db20e37394361b709740bd4f5f27f924e1c3c3fdd7112b2ae37ed9bc7cee63776f7df395b9b0f644d1f8be104990e3028d276a3288cd7e564 +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 10c0/127b8ca6c8aac45e2755abbae6138d4a813b1bedc2caabf79466ae83ab3cfc84b5bfab513b7033f0aa4561c7753edf787d0dd01163ceacdee2e8eb1b6bf7237e languageName: node linkType: hard @@ -18515,7 +18515,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.17.0": +"ws@npm:^8.11.0, ws@npm:^8.12.1, ws@npm:^8.18.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: From ef796446e5b0827bc73a27d573b930b27efef579 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 22 Jul 2024 03:46:41 -0400 Subject: [PATCH 16/41] Ignore manifest JS parse/interrupt error on CI (#31080) --- spec/support/javascript_errors.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/support/javascript_errors.rb b/spec/support/javascript_errors.rb index 7645285362..ef5945f37d 100644 --- a/spec/support/javascript_errors.rb +++ b/spec/support/javascript_errors.rb @@ -5,6 +5,7 @@ RSpec.configure do |config| # Classes of intermittent ignorable errors ignored_errors = [ /Error while trying to use the following icon from the Manifest/, # https://github.com/mastodon/mastodon/pull/30793 + /Manifest: Line: 1, column: 1, Syntax error/, # Similar parsing/interruption issue as above ] errors = page.driver.browser.logs.get(:browser).reject do |error| ignored_errors.any? { |pattern| pattern.match(error.message) } From 5a60a3b80c8fe1769ba737a286169636476e686c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 10:01:24 +0200 Subject: [PATCH 17/41] New Crowdin Translations (automated) (#31087) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 14 ++ app/javascript/mastodon/locales/ca.json | 14 ++ app/javascript/mastodon/locales/el.json | 164 +++++++++++++++++++++++ app/javascript/mastodon/locales/fi.json | 26 +++- app/javascript/mastodon/locales/fy.json | 1 + app/javascript/mastodon/locales/gl.json | 14 ++ app/javascript/mastodon/locales/he.json | 14 ++ app/javascript/mastodon/locales/is.json | 14 ++ app/javascript/mastodon/locales/ja.json | 2 + app/javascript/mastodon/locales/kab.json | 43 +++--- app/javascript/mastodon/locales/lad.json | 10 ++ app/javascript/mastodon/locales/nl.json | 8 +- app/javascript/mastodon/locales/sq.json | 14 ++ app/javascript/mastodon/locales/sv.json | 3 + app/javascript/mastodon/locales/th.json | 6 + app/javascript/mastodon/locales/tr.json | 14 ++ app/javascript/mastodon/locales/uk.json | 14 ++ app/javascript/mastodon/locales/vi.json | 14 ++ config/locales/activerecord.el.yml | 4 +- config/locales/doorkeeper.el.yml | 107 ++++++++------- config/locales/doorkeeper.kab.yml | 10 +- config/locales/el.yml | 11 +- config/locales/fi.yml | 6 +- config/locales/is.yml | 2 + config/locales/kab.yml | 2 +- config/locales/nl.yml | 1 + config/locales/simple_form.ja.yml | 2 + config/locales/simple_form.kab.yml | 10 +- config/locales/simple_form.lad.yml | 1 + config/locales/uk.yml | 1 + 30 files changed, 442 insertions(+), 104 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 0e29f55e76..b2dff17407 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -443,6 +443,8 @@ "mute_modal.title": "Заглушавате ли потребител?", "mute_modal.you_wont_see_mentions": "Няма да виждате споменаващите ги публикации.", "mute_modal.you_wont_see_posts": "Още могат да виждат публикациите ви, но вие техните не.", + "name_and_others": "{name} и {count, plural, one {# друг} other {# други}}", + "name_and_others_with_link": "{name} и {count, plural, one {# друг} other {# други}}", "navigation_bar.about": "Относно", "navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс", "navigation_bar.blocks": "Блокирани потребители", @@ -470,6 +472,10 @@ "navigation_bar.security": "Сигурност", "not_signed_in_indicator.not_signed_in": "Трябва ви вход за достъп до ресурса.", "notification.admin.report": "{name} докладва {target}", + "notification.admin.report_account": "{name} докладва {count, plural, one {публикация} other {# публикации}} от {target} за {category}", + "notification.admin.report_account_other": "{name} докладва {count, plural, one {публикация} other {# публикации}} от {target}", + "notification.admin.report_statuses": "{name} докладва {target} за {category}", + "notification.admin.report_statuses_other": "{name} докладва {target}", "notification.admin.sign_up": "{name} се регистрира", "notification.favourite": "{name} направи любима публикацията ви", "notification.follow": "{name} ви последва", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Вашият акаунт е ограничен.", "notification.moderation_warning.action_suspend": "Вашият акаунт е спрян.", "notification.own_poll": "Анкетата ви приключи", + "notification.poll": "Анкета, в която гласувахте, приключи", + "notification.private_mention": "{name} лично ви спомена", "notification.reblog": "{name} подсили ваша публикация", "notification.relationships_severance_event": "Изгуби се връзката с {name}", "notification.relationships_severance_event.account_suspension": "Администратор от {from} спря {target}, което значи че повече не може да получавате новости от тях или да взаимодействате с тях.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Нови доклади:", "notifications.column_settings.admin.sign_up": "Нови регистрации:", "notifications.column_settings.alert": "Известия на работния плот", + "notifications.column_settings.beta.category": "Експериментални функции", + "notifications.column_settings.beta.grouping": "Групови известия", "notifications.column_settings.favourite": "Любими:", "notifications.column_settings.filter_bar.advanced": "Показване на всички категории", "notifications.column_settings.filter_bar.category": "Лента за бърз филтър", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Последвали сте този акаунт. За да не виждате повече публикациите му в началния си инфопоток, спрете да го следвате.", "report_notification.attached_statuses": "{count, plural, one {прикаченa {count} публикация} other {прикачени {count} публикации}}", "report_notification.categories.legal": "Правни въпроси", + "report_notification.categories.legal_sentence": "незаконно съдържание", "report_notification.categories.other": "Друго", + "report_notification.categories.other_sentence": "друго", "report_notification.categories.spam": "Спам", + "report_notification.categories.spam_sentence": "спам", "report_notification.categories.violation": "Нарушение на правилото", + "report_notification.categories.violation_sentence": "нарушение на правило", "report_notification.open": "Отваряне на доклада", "search.no_recent_searches": "Няма скорошни търсения", "search.placeholder": "Търсене", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1719b105f0..80c85ce178 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -443,6 +443,8 @@ "mute_modal.title": "Silenciem l'usuari?", "mute_modal.you_wont_see_mentions": "No veureu publicacions que els esmentin.", "mute_modal.you_wont_see_posts": "Encara poden veure les vostres publicacions, però no veureu les seves.", + "name_and_others": "{name} i {count, plural, one {# altre} other {# altres}}", + "name_and_others_with_link": "{name} i {count, plural, one {# altre} other {# altres}}", "navigation_bar.about": "Quant a", "navigation_bar.advanced_interface": "Obre en la interfície web avançada", "navigation_bar.blocks": "Usuaris blocats", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguretat", "not_signed_in_indicator.not_signed_in": "Cal que iniciïs la sessió per a accedir a aquest recurs.", "notification.admin.report": "{name} ha reportat {target}", + "notification.admin.report_account": "{name} ha reportat {count, plural, one {una publicació} other {# publicacions}} de {target} per {category}", + "notification.admin.report_account_other": "{name} ha reportat {count, plural, one {una publicació} other {# publicacions}} de {target}", + "notification.admin.report_statuses": "{name} ha reportat {target} per {category}", + "notification.admin.report_statuses_other": "{name} ha reportat {target}", "notification.admin.sign_up": "{name} s'ha registrat", "notification.favourite": "{name} ha afavorit el teu tut", "notification.follow": "{name} et segueix", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "S'ha limitat el vostre compte.", "notification.moderation_warning.action_suspend": "S'ha suspès el vostre compte.", "notification.own_poll": "La teva enquesta ha finalitzat", + "notification.poll": "Ha finalitzat una enquesta que heu respost", + "notification.private_mention": "{name} us ha esmentat en privat", "notification.reblog": "{name} t'ha impulsat", "notification.relationships_severance_event": "S'han perdut les connexions amb {name}", "notification.relationships_severance_event.account_suspension": "Un administrador de {from} ha suspès {target}; això vol dir que ja no en podreu rebre actualitzacions o interactuar-hi.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Nous informes:", "notifications.column_settings.admin.sign_up": "Registres nous:", "notifications.column_settings.alert": "Notificacions d'escriptori", + "notifications.column_settings.beta.category": "Característiques experimentals", + "notifications.column_settings.beta.grouping": "Notificacions de grup", "notifications.column_settings.favourite": "Favorits:", "notifications.column_settings.filter_bar.advanced": "Mostra totes les categories", "notifications.column_settings.filter_bar.category": "Barra ràpida de filtres", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Estàs seguint aquest compte. Per no veure els seus tuts a la teva línia de temps d'Inici, deixa de seguir-lo.", "report_notification.attached_statuses": "{count, plural, one {{count} tut} other {{count} tuts}} adjunts", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contingut no permès", "report_notification.categories.other": "Altres", + "report_notification.categories.other_sentence": "altres", "report_notification.categories.spam": "Brossa", + "report_notification.categories.spam_sentence": "brossa", "report_notification.categories.violation": "Violació de norma", + "report_notification.categories.violation_sentence": "violació de normes", "report_notification.open": "Obre l'informe", "search.no_recent_searches": "No hi ha cerques recents", "search.placeholder": "Cerca", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 3c0ef467bf..cba2525f37 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -35,7 +35,9 @@ "account.follow_back": "Ακολούθησε και εσύ", "account.followers": "Ακόλουθοι", "account.followers.empty": "Κανείς δεν ακολουθεί αυτόν τον χρήστη ακόμα.", + "account.followers_counter": "{count, plural, one {{counter} ακόλουθος} other {{counter} ακόλουθοι}}", "account.following": "Ακολουθείτε", + "account.following_counter": "{count, plural, one {{counter} ακολουθεί} other {{counter} ακολουθούν}}", "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.", "account.go_to_profile": "Μετάβαση στο προφίλ", "account.hide_reblogs": "Απόκρυψη ενισχύσεων από @{name}", @@ -61,6 +63,7 @@ "account.requested_follow": "Ο/Η {name} αιτήθηκε να σε ακολουθήσει", "account.share": "Κοινοποίηση του προφίλ @{name}", "account.show_reblogs": "Εμφάνιση ενισχύσεων από @{name}", + "account.statuses_counter": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", "account.unblock": "Άρση αποκλεισμού @{name}", "account.unblock_domain": "Άρση αποκλεισμού του τομέα {domain}", "account.unblock_short": "Άρση αποκλεισμού", @@ -75,6 +78,10 @@ "admin.dashboard.retention.average": "Μέσος όρος", "admin.dashboard.retention.cohort": "Μήνας εγγραφής", "admin.dashboard.retention.cohort_size": "Νέοι χρήστες", + "admin.impact_report.instance_accounts": "Προφίλ λογαριασμών που θα διαγράψει", + "admin.impact_report.instance_followers": "Ακόλουθοι που θα χάσουν οι χρήστες μας", + "admin.impact_report.instance_follows": "Ακόλουθοι που θα χάσουν οι χρήστες τους", + "admin.impact_report.title": "Περίληψη επιπτώσεων", "alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά μετά τις {retry_time, time, medium}", "alert.rate_limited.title": "Περιορισμός συχνότητας", "alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.", @@ -82,6 +89,14 @@ "announcement.announcement": "Ανακοίνωση", "attachments_list.unprocessed": "(μη επεξεργασμένο)", "audio.hide": "Απόκρυψη αρχείου ήχου", + "block_modal.remote_users_caveat": "Θα ζητήσουμε από τον διακομιστή {domain} να σεβαστεί την απόφασή σου. Ωστόσο, η συμμόρφωση δεν είναι εγγυημένη δεδομένου ότι ορισμένοι διακομιστές ενδέχεται να χειρίζονται τους αποκλεισμούς διαφορετικά. Οι δημόσιες αναρτήσεις ενδέχεται να είναι ορατές σε μη συνδεδεμένους χρήστες.", + "block_modal.show_less": "Εμφάνιση λιγότερων", + "block_modal.show_more": "Εμφάνιση περισσότερων", + "block_modal.they_cant_mention": "Δεν μπορεί να σε επισημάνει ή να σε ακολουθήσει.", + "block_modal.they_cant_see_posts": "Δεν μπορεί να δει τις αναρτήσεις σου και δε θα δεις τις δικές του.", + "block_modal.they_will_know": "Μπορούν να δει ότι έχει αποκλειστεί.", + "block_modal.title": "Αποκλεισμός χρήστη;", + "block_modal.you_wont_see_mentions": "Δε θα βλέπεις τις αναρτήσεις που τον αναφέρουν.", "boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις την επόμενη φορά", "bundle_column_error.copy_stacktrace": "Αντιγραφή αναφοράς σφάλματος", "bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζήτησες. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.", @@ -108,6 +123,7 @@ "column.directory": "Περιήγηση στα προφίλ", "column.domain_blocks": "Αποκλεισμένοι τομείς", "column.favourites": "Αγαπημένα", + "column.firehose": "Ζωντανές ροές", "column.follow_requests": "Αιτήματα ακολούθησης", "column.home": "Αρχική", "column.lists": "Λίστες", @@ -140,6 +156,7 @@ "compose_form.poll.duration": "Διάρκεια δημοσκόπησης", "compose_form.poll.multiple": "Πολλαπλή επιλογή", "compose_form.poll.option_placeholder": "Επιλογή {number}", + "compose_form.poll.single": "Διάλεξε ένα", "compose_form.poll.switch_to_multiple": "Ενημέρωση δημοσκόπησης με πολλαπλές επιλογές", "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.poll.type": "Στυλ", @@ -160,6 +177,7 @@ "confirmations.delete_list.message": "Σίγουρα θες να διαγράψεις οριστικά αυτή τη λίστα;", "confirmations.discard_edit_media.confirm": "Απόρριψη", "confirmations.discard_edit_media.message": "Έχεις μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απόρριψη ούτως ή άλλως;", + "confirmations.domain_block.confirm": "Αποκλεισμός διακομιστή", "confirmations.domain_block.message": "Σίγουρα θες να αποκλείσεις ολόκληρο τον {domain}; Συνήθως μερικοί συγκεκρίμένοι αποκλεισμοί ή σιγάσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον τομέα σε καμία δημόσια ροή ή στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον τομέα θα αφαιρεθούν.", "confirmations.edit.confirm": "Επεξεργασία", "confirmations.edit.message": "Αν το επεξεργαστείς τώρα θα αντικατασταθεί το μήνυμα που συνθέτεις. Είσαι σίγουρος ότι θέλεις να συνεχίσεις;", @@ -190,6 +208,28 @@ "dismissable_banner.explore_links": "Αυτές οι ειδήσεις συζητούνται σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.", "dismissable_banner.explore_statuses": "Αυτές είναι οι αναρτήσεις που έχουν απήχηση στο κοινωνικό δίκτυο σήμερα. Οι νεώτερες αναρτήσεις με περισσότερες προωθήσεις και προτιμήσεις κατατάσσονται ψηλότερα.", "dismissable_banner.explore_tags": "Αυτές οι ετικέτες αποκτούν απήχηση σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.", + "dismissable_banner.public_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις από άτομα στον κοινωνικό ιστό που ακολουθούν άτομα από το {domain}.", + "domain_block_modal.block": "Αποκλεισμός διακομιστή", + "domain_block_modal.block_account_instead": "Αποκλεισμός @{name} αντ' αυτού", + "domain_block_modal.they_can_interact_with_old_posts": "Άτομα από αυτόν τον διακομιστή μπορούν να αλληλεπιδράσουν με τις παλιές αναρτήσεις σου.", + "domain_block_modal.they_cant_follow": "Κανείς από αυτόν τον διακομιστή δεν μπορεί να σε ακολουθήσει.", + "domain_block_modal.they_wont_know": "Δεν θα ξέρουν ότι έχουν αποκλειστεί.", + "domain_block_modal.title": "Αποκλεισμός τομέα;", + "domain_block_modal.you_will_lose_followers": "Οι ακόλουθοί σου από αυτόν τον διακομιστή θα αφαιρεθούν.", + "domain_block_modal.you_wont_see_posts": "Δεν θα βλέπεις αναρτήσεις ή ειδοποιήσεις από χρήστες σε αυτόν το διακομιστή.", + "domain_pill.activitypub_lets_connect": "Σού επιτρέπει να συνδεθείς και να αλληλεπιδράσεις με τους ανθρώπους όχι μόνο στο Mastodon, αλλά και σε διαφορετικές κοινωνικές εφαρμογές.", + "domain_pill.activitypub_like_language": "Το ActivityPub είναι σαν τη γλώσσα Mastodon μιλάει με άλλα κοινωνικά δίκτυα.", + "domain_pill.server": "Διακομιστής", + "domain_pill.their_handle": "Το πλήρες όνομα χρήστη:", + "domain_pill.their_server": "Το ψηφιακό του σπίτι, όπου ζουν όλες οι αναρτήσεις του.", + "domain_pill.their_username": "Το μοναδικό του αναγνωριστικό στο διακομιστή του. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.", + "domain_pill.username": "Όνομα χρήστη", + "domain_pill.whats_in_a_handle": "Τί υπάρχει σε ένα πλήρες όνομα χρήστη;", + "domain_pill.who_they_are": "Από τη στιγμή που τα πλήρη ονόματα λένε ποιος είναι κάποιος και πού είναι, μπορείς να αλληλεπιδράσεις με άτομα απ' όλο τον κοινωνικό ιστό των .", + "domain_pill.who_you_are": "Επειδή το πλήρες όνομα χρήστη σου λέει ποιος είσαι και πού βρίσκεσαι, άτομα μπορούν να αλληλεπιδράσουν μαζί σου στον κοινωνικό ιστό των .", + "domain_pill.your_handle": "Το πλήρες όνομα χρήστη σου:", + "domain_pill.your_server": "Το ψηφιακό σου σπίτι, όπου ζουν όλες σου οι αναρτήσεις. Δε σ' αρέσει αυτός; Μετακινήσου σε διακομιστές ανά πάσα στιγμή και πάρε και τους ακόλουθούς σου.", + "domain_pill.your_username": "Το μοναδικό σου αναγνωριστικό σε τούτο τον διακομιστή. Είναι πιθανό να βρεις χρήστες με το ίδιο όνομα χρήστη σε διαφορετικούς διακομιστές.", "embed.instructions": "Ενσωμάτωσε αυτή την ανάρτηση στην ιστοσελίδα σου αντιγράφοντας τον παρακάτω κώδικα.", "embed.preview": "Ορίστε πως θα φαίνεται:", "emoji_button.activity": "Δραστηριότητα", @@ -207,6 +247,7 @@ "emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.symbols": "Σύμβολα", "emoji_button.travel": "Ταξίδια & Τοποθεσίες", + "empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες", "empty_column.account_suspended": "Λογαριασμός σε αναστολή", "empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!", "empty_column.account_unavailable": "Μη διαθέσιμο προφίλ", @@ -216,6 +257,8 @@ "empty_column.direct": "Δεν έχεις καμία προσωπική επισήμανση ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.", "empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.", "empty_column.explore_statuses": "Τίποτα δεν βρίσκεται στις τάσεις αυτή τη στιγμή. Έλεγξε αργότερα!", + "empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμα. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.", + "empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.", "empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.", "empty_column.followed_tags": "Δεν έχετε παρακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.", "empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.", @@ -223,6 +266,7 @@ "empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.", "empty_column.lists": "Δεν έχεις καμία λίστα ακόμα. Μόλις φτιάξεις μια, θα εμφανιστεί εδώ.", "empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμα.", + "empty_column.notification_requests": "Όλα καθαρά! Δεν υπάρχει τίποτα εδώ. Όταν λαμβάνεις νέες ειδοποιήσεις, αυτές θα εμφανίζονται εδώ σύμφωνα με τις ρυθμίσεις σου.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.", "empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο ή ακολούθησε χειροκίνητα χρήστες από άλλους διακομιστές για να τη γεμίσεις", "error.unexpected_crash.explanation": "Είτε λόγω σφάλματος στον κώδικά μας ή λόγω ασυμβατότητας με τον περιηγητή, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.", @@ -253,12 +297,30 @@ "filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα", "filter_modal.select_filter.title": "Φιλτράρισμα αυτής της ανάρτησης", "filter_modal.title.status": "Φιλτράρισμα μιας ανάρτησης", + "filtered_notifications_banner.mentions": "{count, plural, one {επισήμανση} other {επισημάνσεις}}", + "filtered_notifications_banner.pending_requests": "Ειδοποιήσεις από {count, plural, =0 {κανένα} one {ένα άτομο} other {# άτομα}} που μπορεί να ξέρεις", + "filtered_notifications_banner.title": "Φιλτραρισμένες ειδοποιήσεις", "firehose.all": "Όλα", "firehose.local": "Αυτός ο διακομιστής", "firehose.remote": "Άλλοι διακομιστές", "follow_request.authorize": "Εξουσιοδότησε", "follow_request.reject": "Απέρριψε", "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, το προσωπικό του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.", + "follow_suggestions.curated_suggestion": "Επιλογή προσωπικού", + "follow_suggestions.dismiss": "Να μην εμφανιστεί ξανά", + "follow_suggestions.featured_longer": "Προσεκτικά επιλεγμένα απ' την ομάδα του {domain}", + "follow_suggestions.friends_of_friends_longer": "Δημοφιλή μεταξύ των ατόμων που ακολουθείς", + "follow_suggestions.hints.featured": "Αυτό το προφίλ έχει επιλεγεί προσεκτικά από την ομάδα του {domain}.", + "follow_suggestions.hints.friends_of_friends": "Αυτό το προφίλ είναι δημοφιλές μεταξύ των ατόμων που ακολουθείς.", + "follow_suggestions.hints.most_followed": "Αυτό το προφίλ είναι ένα από τα πιο ακολουθούμενα στο {domain}.", + "follow_suggestions.hints.most_interactions": "Αυτό το προφίλ έχει πάρει πρόσφατα μεγάλη προσοχή στο {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Αυτό το προφίλ είναι παρόμοιο με τα προφίλ που έχεις ακολουθήσει πρόσφατα.", + "follow_suggestions.personalized_suggestion": "Εξατομικευμένη πρόταση", + "follow_suggestions.popular_suggestion": "Δημοφιλής πρόταση", + "follow_suggestions.popular_suggestion_longer": "Δημοφιλή στο {domain}", + "follow_suggestions.similar_to_recently_followed_longer": "Παρόμοια με προφίλ που ακολούθησες πρόσφατα", + "follow_suggestions.view_all": "Εμφάνιση όλων", + "follow_suggestions.who_to_follow": "Ποιον να ακολουθήσεις", "followed_tags": "Ετικέτες που ακολουθούνται", "footer.about": "Σχετικά με", "footer.directory": "Κατάλογος προφίλ", @@ -279,21 +341,30 @@ "hashtag.column_settings.tag_mode.any": "Οποιοδήποτε από αυτά", "hashtag.column_settings.tag_mode.none": "Κανένα από αυτά", "hashtag.column_settings.tag_toggle": "Προσθήκη επιπλέον ταμπελών για την κολώνα", + "hashtag.counter_by_accounts": "{count, plural, one {{counter} συμμετέχων} other {{counter} συμμετέχοντες}}", + "hashtag.counter_by_uses": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", + "hashtag.counter_by_uses_today": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}} σήμερα", "hashtag.follow": "Παρακολούθηση ετικέτας", "hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας", + "hashtags.and_other": "…και {count, plural, one {}other {# ακόμη}}", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", "home.hide_announcements": "Απόκρυψη ανακοινώσεων", + "home.pending_critical_update.body": "Παρακαλούμε ενημέρωσε τον διακομιστή Mastodon σου το συντομότερο δυνατόν!", "home.pending_critical_update.link": "Δείτε ενημερώσεις", "home.pending_critical_update.title": "Κρίσιμη ενημέρωση ασφαλείας διαθέσιμη!", "home.show_announcements": "Εμφάνιση ανακοινώσεων", + "interaction_modal.description.favourite": "Με ένα συντάκτη στο Mastodon μπορείς να αγαπήσεις αυτή την ανάρτηση, για να ενημερώσεις τον συγγραφέα ότι την εκτιμάς και να την αποθηκεύσεις για αργότερα.", "interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.", "interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.", "interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.", "interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα", + "interaction_modal.login.prompt": "Τομέας του οικιακού σου διακομιστή, πχ. mastodon.social", "interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;", "interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή", "interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή", + "interaction_modal.sign_in": "Δεν είσαι συνδεδεμένος σε αυτόν το διακομιστή. Πού φιλοξενείται ο λογαριασμός σου;", + "interaction_modal.sign_in_hint": "Συμβουλή: Αυτή είναι η ιστοσελίδα όπου έχεις εγγραφεί. Αν δεν θυμάσαι, αναζήτησε το καλώς ήρθες e-mail στα εισερχόμενά σου. Μπορείς επίσης να εισάγεις το πλήρες όνομα χρήστη! (πχ. @Mastodon@mastodon.social)", "interaction_modal.title.favourite": "Favorite {name}'s post\nΠροτίμησε την ανάρτηση της/του {name}", "interaction_modal.title.follow": "Ακολούθησε {name}", "interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}", @@ -311,6 +382,7 @@ "keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα", "keyboard_shortcuts.enter": "Εμφάνιση ανάρτησης", "keyboard_shortcuts.favourite": "Αγαπημένη δημοσίευση", + "keyboard_shortcuts.favourites": "Άνοιγμα λίστας αγαπημένων", "keyboard_shortcuts.federated": "Άνοιγμα ροής συναλλαγών", "keyboard_shortcuts.heading": "Συντομεύσεις πληκτρολογίου", "keyboard_shortcuts.home": "Άνοιγμα ροής αρχικής σελίδας", @@ -341,11 +413,15 @@ "lightbox.previous": "Προηγούμενο", "limited_account_hint.action": "Εμφάνιση προφίλ ούτως ή άλλως", "limited_account_hint.title": "Αυτό το προφίλ έχει αποκρυφτεί από τους διαχειριστές του διακομιστή {domain}.", + "link_preview.author": "Από {name}", + "link_preview.more_from_author": "Περισσότερα από {name}", + "link_preview.shares": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", "lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.remove": "Βγάλε από τη λίστα", "lists.delete": "Διαγραφή λίστας", "lists.edit": "Επεξεργασία λίστας", "lists.edit.submit": "Αλλαγή τίτλου", + "lists.exclusive": "Απόκρυψη αυτών των αναρτήσεων από την αρχική", "lists.new.create": "Προσθήκη λίστας", "lists.new.title_placeholder": "Τίτλος νέας λίστα", "lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς", @@ -358,7 +434,19 @@ "loading_indicator.label": "Φόρτωση…", "media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}", "moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.", + "mute_modal.hide_from_notifications": "Απόκρυψη από ειδοποιήσεις", + "mute_modal.hide_options": "Απόκρυψη επιλογών", + "mute_modal.indefinite": "Μέχρι να κάνω άρση σίγασης", + "mute_modal.show_options": "Εμφάνιση επιλογών", + "mute_modal.they_can_mention_and_follow": "Μπορεί να σε αναφέρει και να σε ακολουθήσει, αλλά δε θα τον βλέπεις.", + "mute_modal.they_wont_know": "Δε θα ξέρει ότι είναι σε σίγαση.", + "mute_modal.title": "Σίγαση χρήστη;", + "mute_modal.you_wont_see_mentions": "Δε θα βλέπεις τις αναρτήσεις που τον αναφέρουν.", + "mute_modal.you_wont_see_posts": "Μπορεί ακόμα να δει τις αναρτήσεις σου, αλλά δε θα βλέπεις τις δικές του.", + "name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}}", + "name_and_others_with_link": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}}", "navigation_bar.about": "Σχετικά με", + "navigation_bar.advanced_interface": "Άνοιγμα σε προηγμένη διεπαφή ιστού", "navigation_bar.blocks": "Αποκλεισμένοι χρήστες", "navigation_bar.bookmarks": "Σελιδοδείκτες", "navigation_bar.community_timeline": "Τοπική ροή", @@ -367,6 +455,7 @@ "navigation_bar.discover": "Ανακάλυψη", "navigation_bar.domain_blocks": "Αποκλεισμένοι τομείς", "navigation_bar.explore": "Εξερεύνηση", + "navigation_bar.favourites": "Αγαπημένα", "navigation_bar.filters": "Αποσιωπημένες λέξεις", "navigation_bar.follow_requests": "Αιτήματα ακολούθησης", "navigation_bar.followed_tags": "Ετικέτες που ακολουθούνται", @@ -383,21 +472,49 @@ "navigation_bar.security": "Ασφάλεια", "not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.", "notification.admin.report": "Ο/Η {name} ανέφερε τον {target}", + "notification.admin.report_account": "Ο χρήστης {name} ανέφερε {count, plural, one {μία ανάρτηση} other {# αναρτήσεις}} από {target} για {category}", + "notification.admin.report_account_other": "Ο χρήστης {name} ανέφερε {count, plural, one {μία ανάρτηση} other {# αναρτήσεις}} από {target}", + "notification.admin.report_statuses": "Ο χρήστης {name} ανέφερε τον χρήστη {target} για {category}", + "notification.admin.report_statuses_other": "Ο χρήστης {name} ανέφερε τον χρήστη {target}", "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει", "notification.mention": "Ο/Η {name} σε επισήμανε", + "notification.moderation-warning.learn_more": "Μάθε περισσότερα", + "notification.moderation_warning": "Έχετε λάβει μία προειδοποίηση συντονισμού", + "notification.moderation_warning.action_delete_statuses": "Ορισμένες από τις αναρτήσεις σου έχουν αφαιρεθεί.", + "notification.moderation_warning.action_disable": "Ο λογαριασμός σου έχει απενεργοποιηθεί.", + "notification.moderation_warning.action_mark_statuses_as_sensitive": "Μερικές από τις αναρτήσεις σου έχουν επισημανθεί ως ευαίσθητες.", + "notification.moderation_warning.action_none": "Ο λογαριασμός σου έχει λάβει προειδοποίηση συντονισμού.", + "notification.moderation_warning.action_sensitive": "Οι αναρτήσεις σου θα επισημαίνονται, από εδώ και στο εξής, ως ευαίσθητες.", + "notification.moderation_warning.action_silence": "Ο λογαριασμός σου έχει περιοριστεί.", + "notification.moderation_warning.action_suspend": "Ο λογαριασμός σου έχει ανασταλεί.", "notification.own_poll": "Η δημοσκόπησή σου έληξε", + "notification.poll": "Μία ψηφοφορία στην οποία συμμετείχες έχει τελειώσει", + "notification.private_mention": "{name} σέ επισήμανε ιδιωτικά", "notification.reblog": "Ο/Η {name} ενίσχυσε τη δημοσίευσή σου", + "notification.relationships_severance_event": "Χάθηκε η σύνδεση με το {name}", + "notification.relationships_severance_event.account_suspension": "Ένας διαχειριστής από το {from} ανέστειλε το {target}, πράγμα που σημαίνει ότι δεν μπορείς πλέον να λαμβάνεις ενημερώσεις από αυτούς ή να αλληλεπιδράς μαζί τους.", + "notification.relationships_severance_event.domain_block": "Ένας διαχειριστής από {from} έχει μπλοκάρει το {target}, συμπεριλαμβανομένων {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.", + "notification.relationships_severance_event.learn_more": "Μάθε περισσότερα", + "notification.relationships_severance_event.user_domain_block": "Έχεις αποκλείσει τον λογαριασμό {target}, αφαιρώντας {followersCount} από τους ακόλουθούς σου και {followingCount, plural, one {# λογαριασμό} other {# λογαριασμοί}} που ακολουθείς.", "notification.status": "Ο/Η {name} μόλις ανέρτησε κάτι", "notification.update": "ο/η {name} επεξεργάστηκε μια ανάρτηση", + "notification_requests.accept": "Αποδοχή", + "notification_requests.dismiss": "Απόρριψη", + "notification_requests.notifications_from": "Ειδοποιήσεις από {name}", + "notification_requests.title": "Φιλτραρισμένες ειδοποιήσεις", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις μόνιμα όλες τις ειδοποιήσεις σου;", "notifications.column_settings.admin.report": "Νέες αναφορές:", "notifications.column_settings.admin.sign_up": "Νέες εγγραφές:", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", + "notifications.column_settings.beta.category": "Πειραματικές λειτουργίες", + "notifications.column_settings.beta.grouping": "Ομαδοποίηση ειδοποιήσεων", "notifications.column_settings.favourite": "Αγαπημένα:", + "notifications.column_settings.filter_bar.advanced": "Εμφάνιση όλων των κατηγοριών", + "notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου", "notifications.column_settings.follow": "Νέοι ακόλουθοι:", "notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:", "notifications.column_settings.mention": "Επισημάνσεις:", @@ -412,6 +529,7 @@ "notifications.column_settings.update": "Επεξεργασίες:", "notifications.filter.all": "Όλες", "notifications.filter.boosts": "Προωθήσεις", + "notifications.filter.favourites": "Αγαπημένα", "notifications.filter.follows": "Ακολουθείς", "notifications.filter.mentions": "Επισημάνσεις", "notifications.filter.polls": "Αποτελέσματα δημοσκόπησης", @@ -422,6 +540,15 @@ "notifications.permission_denied": "Οι ειδοποιήσεις στην επιφάνεια εργασίας δεν είναι διαθέσιμες διότι έχει απορριφθεί κάποιο προηγούμενο αίτημα άδειας", "notifications.permission_denied_alert": "Δεν είναι δυνατή η ενεργοποίηση των ειδοποιήσεων της επιφάνειας εργασίας, καθώς η άδεια του προγράμματος περιήγησης έχει απορριφθεί νωρίτερα", "notifications.permission_required": "Οι ειδοποιήσεις δεν είναι διαθέσιμες επειδή δεν έχει δοθεί η απαιτούμενη άδεια.", + "notifications.policy.filter_new_accounts.hint": "Δημιουργήθηκε εντός {days, plural, one {της τελευταίας ημέρας} other {των τελευταίων # ημερών}}", + "notifications.policy.filter_new_accounts_title": "Νέοι λογαριασμοί", + "notifications.policy.filter_not_followers_hint": "Συμπεριλαμβανομένων των ατόμων που σας έχουν ακολουθήσει λιγότερο από {days, plural, one {μια ημέρα} other {# ημέρες}} πριν", + "notifications.policy.filter_not_followers_title": "Άτομα που δε σε ακολουθούν", + "notifications.policy.filter_not_following_hint": "Μέχρι να τους εγκρίνεις χειροκίνητα", + "notifications.policy.filter_not_following_title": "Άτομα που δεν ακολουθείς", + "notifications.policy.filter_private_mentions_hint": "Φιλτραρισμένο εκτός αν είναι απάντηση σε δική σου αναφορά ή αν ακολουθείς τον αποστολέα", + "notifications.policy.filter_private_mentions_title": "Μη συναινετικές ιδιωτικές αναφορές", + "notifications.policy.title": "Φιλτράρισμα ειδοποιήσεων από…", "notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας", "notifications_permission_banner.how_to_control": "Για να λαμβάνεις ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποίησε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείς να ελέγξεις με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.", "notifications_permission_banner.title": "Μη χάσεις στιγμή", @@ -429,8 +556,15 @@ "onboarding.actions.back": "Επιστροφή", "onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή", + "onboarding.compose.template": "Γειά σου #Mastodon!", + "onboarding.follows.empty": "Δυστυχώς, δεν μπορούν να εμφανιστούν αποτελέσματα αυτή τη στιγμή. Μπορείς να προσπαθήσεις να χρησιμοποιήσεις την αναζήτηση ή να περιηγηθείς στη σελίδα εξερεύνησης για να βρεις άτομα να ακολουθήσεις ή να δοκιμάσεις ξανά αργότερα.", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.title": "Δημοφιλή στο Mastodon", + "onboarding.profile.discoverable": "Κάνε το προφίλ μου ανακαλύψιμο", + "onboarding.profile.discoverable_hint": "Όταν επιλέγεις την δυνατότητα ανακάλυψης στο Mastodon, οι αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης και τις τάσεις, και το προφίλ σου μπορεί να προτείνεται σε άτομα με παρόμοια ενδιαφέροντα με εσένα.", + "onboarding.profile.display_name": "Εμφανιζόμενο όνομα", + "onboarding.profile.display_name_hint": "Το πλήρες ή το διασκεδαστικό σου όνομα…", + "onboarding.profile.lead": "Μπορείς πάντα να το ολοκληρώσεις αργότερα στις ρυθμίσεις, όπου είναι διαθέσιμες ακόμα περισσότερες επιλογές προσαρμογής.", "onboarding.profile.note": "Βιογραφικό", "onboarding.profile.note_hint": "Μπορείτε να @αναφέρετε άλλα άτομα ή #hashtags…", "onboarding.profile.save_and_continue": "Αποθήκευση και συνέχεια", @@ -438,7 +572,9 @@ "onboarding.profile.upload_avatar": "Μεταφόρτωση εικόνας προφίλ", "onboarding.profile.upload_header": "Μεταφόρτωση κεφαλίδας προφίλ", "onboarding.share.lead": "Let people know how they can find you on Mastodon!\nΕνημερώστε άλλα άτομα πώς μπορούν να σας βρουν στο Mastodon!", + "onboarding.share.message": "Με λένε {username} στο #Mastodon! Έλα να με ακολουθήσεις στο {url}", "onboarding.share.next_steps": "Πιθανά επόμενα βήματα:", + "onboarding.share.title": "Κοινοποίηση του προφίλ σου", "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:", "onboarding.start.skip": "Want to skip right ahead?", "onboarding.start.title": "You've made it!\nΤα καταφέρατε!", @@ -450,6 +586,10 @@ "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.tips.2fa": "Το ήξερες; Μπορείς να ασφαλίσεις το λογαριασμό σου ρυθμίζοντας ταυτότητα δύο παραγόντων στις ρυθμίσεις του λογαριασμού σου. Λειτουργεί με οποιαδήποτε εφαρμογή TOTP της επιλογής σας, δεν απαιτείται αριθμός τηλεφώνου!", + "onboarding.tips.accounts_from_other_servers": "Το ήξερες; Από τη στιγμή που το Mastodon είναι αποκεντρωμένο, κάποια προφίλ που συναντάς θα φιλοξενούνται σε διακομιστές διαφορετικούς από τον δικό σου. Και παρόλα αυτά μπορείς να αλληλεπιδράσεις μαζί τους απρόσκοπτα! Ο διακομιστής τους είναι στο δεύτερο μισό του ονόματος χρήστη!", + "onboarding.tips.migration": "Το ήξερες; Αν αισθάνεσαι ότι το {domain} δεν είναι η κατάλληλη επιλογή διακομιστή για σένα στο μέλλον, μπορείς να μετακινηθείς σε άλλο διακομιστή Mastodon χωρίς να χάσεις τους ακόλουθούς σου. Μπορείς να κάνεις ακόμα και τον δικό σου διακομιστή!", + "onboarding.tips.verification": "Το ήξερες; Μπορείς να επαληθεύσεις τον λογαριασμό σου βάζοντας έναν σύνδεσμο του προφίλ σου στο Mastodon στην ιστοσελίδα σου και να προσθέσεις την ιστοσελίδα στο προφίλ σου. Χωρίς έξοδα ή έγγραφα!", "password_confirmation.exceeds_maxlength": "Η επιβεβαίωση κωδικού πρόσβασης υπερβαίνει το μέγιστο μήκος κωδικού πρόσβασης", "password_confirmation.mismatching": "Η επιβεβαίωση του κωδικού πρόσβασης δε συμπίπτει", "picture_in_picture.restore": "Βάλε το πίσω", @@ -468,7 +608,11 @@ "privacy.direct.short": "Συγκεκριμένα άτομα", "privacy.private.long": "Μόνο οι ακόλουθοί σας", "privacy.private.short": "Ακόλουθοι", + "privacy.public.long": "Όλοι εντός και εκτός του Mastodon", "privacy.public.short": "Δημόσιο", + "privacy.unlisted.additional": "Αυτό συμπεριφέρεται ακριβώς όπως το δημόσιο, εκτός από το ότι η ανάρτηση δεν θα εμφανιστεί σε ζωντανές ροές ή ετικέτες, εξερεύνηση ή αναζήτηση στο Mastodon, ακόμη και αν το έχεις επιλέξει για τον λογαριασμό σου.", + "privacy.unlisted.long": "Λιγότερα αλγοριθμικά κόλπα", + "privacy.unlisted.short": "Ήσυχα δημόσια", "privacy_policy.last_updated": "Τελευταία ενημέρωση {date}", "privacy_policy.title": "Πολιτική Απορρήτου", "recommended": "Προτεινόμενα", @@ -486,6 +630,7 @@ "relative_time.minutes": "{number}λ", "relative_time.seconds": "{number}δ", "relative_time.today": "σήμερα", + "reply_indicator.attachments": "{count, plural, one {# συνημμένο} other {# συνημμένα}}", "reply_indicator.cancel": "Άκυρο", "reply_indicator.poll": "Δημοσκόπηση", "report.block": "Αποκλεισμός", @@ -529,9 +674,14 @@ "report.unfollow": "Κατάργηση ακολούθησης του @{name}", "report.unfollow_explanation": "Ακολουθείς αυτό τον λογαριασμό. Για να μη βλέπεις τις αναρτήσεις τους στη δική σου ροή, πάψε να τον ακολουθείς.", "report_notification.attached_statuses": "{count, plural, one {{count} ανάρτηση} other {{count} αναρτήσεις}} επισυνάπτονται", + "report_notification.categories.legal": "Νομικά", + "report_notification.categories.legal_sentence": "παράνομο περιεχόμενο", "report_notification.categories.other": "Άλλες", + "report_notification.categories.other_sentence": "άλλο", "report_notification.categories.spam": "Ανεπιθύμητα", + "report_notification.categories.spam_sentence": "ανεπιθύμητα", "report_notification.categories.violation": "Παραβίαση κανόνα", + "report_notification.categories.violation_sentence": "παραβίαση κανόνα", "report_notification.open": "Ανοιχτή αναφορά", "search.no_recent_searches": "Καμία πρόσφατη αναζήτηση", "search.placeholder": "Αναζήτηση", @@ -541,8 +691,13 @@ "search.quick_action.open_url": "Άνοιγμα διεύθυνσης URL στο Mastodon", "search.quick_action.status_search": "Αναρτήσεις που ταιριάζουν με {x}", "search.search_or_paste": "Αναζήτηση ή εισαγωγή URL", + "search_popout.full_text_search_disabled_message": "Μη διαθέσιμο στο {domain}.", + "search_popout.full_text_search_logged_out_message": "Διαθέσιμο μόνο όταν συνδεθείς.", + "search_popout.language_code": "Κωδικός γλώσσας ISO", + "search_popout.options": "Επιλογές αναζήτησης", "search_popout.quick_actions": "Γρήγορες ενέργειες", "search_popout.recent": "Πρόσφατες αναζητήσεις", + "search_popout.specific_date": "συγκεκριμένη ημερομηνία", "search_popout.user": "χρήστης", "search_results.accounts": "Προφίλ", "search_results.all": "Όλα", @@ -554,8 +709,11 @@ "server_banner.about_active_users": "Άτομα που χρησιμοποιούν αυτόν τον διακομιστή κατά τις τελευταίες 30 ημέρες (Μηνιαία Ενεργοί Χρήστες)", "server_banner.active_users": "ενεργοί χρήστες", "server_banner.administered_by": "Διαχειριστής:", + "server_banner.is_one_of_many": "Το {domain} είναι ένας από τους πολλούς ανεξάρτητους διακομιστές Mastodon που μπορείς να χρησιμοποιήσεις για να συμμετάσχεις στο fediverse.", "server_banner.server_stats": "Στατιστικά διακομιστή:", "sign_in_banner.create_account": "Δημιουργία λογαριασμού", + "sign_in_banner.follow_anyone": "Ακολούθησε οποιονδήποτε κατά μήκος του fediverse και δες τα όλα με χρονολογική σειρά. Δεν υπάρχουν αλγόριθμοι, διαφημίσεις ή clickbait ούτε για δείγμα.", + "sign_in_banner.mastodon_is": "Το Mastodon είναι ο καλύτερος τρόπος για να συμβαδίσεις με τα γεγονότα.", "sign_in_banner.sign_in": "Σύνδεση", "sign_in_banner.sso_redirect": "Συνδεθείτε ή Εγγραφείτε", "status.admin_account": "Άνοιγμα διεπαφής συντονισμού για τον/την @{name}", @@ -571,15 +729,19 @@ "status.direct": "Ιδιωτική επισήμανση @{name}", "status.direct_indicator": "Ιδιωτική επισήμανση", "status.edit": "Επεξεργασία", + "status.edited": "Τελευταία επεξεργασία {date}", "status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Αγαπημένα", + "status.favourites": "{count, plural, one {# αγαπημένο} other {# αγαπημένα}}", "status.filter": "Φιλτράρισμα αυτής της ανάρτησης", "status.filtered": "Φιλτραρισμένα", "status.hide": "Απόκρυψη ανάρτησης", "status.history.created": "{name} δημιούργησε στις {date}", "status.history.edited": "{name} επεξεργάστηκε στις {date}", "status.load_more": "Φόρτωσε περισσότερα", + "status.media.open": "Κάνε κλικ για άνοιγμα", + "status.media.show": "Κάνε κλικ για εμφάνιση", "status.media_hidden": "Κρυμμένο πολυμέσο", "status.mention": "Επισήμανε @{name}", "status.more": "Περισσότερα", @@ -592,6 +754,7 @@ "status.reblog": "Ενίσχυση", "status.reblog_private": "Ενίσχυση με αρχική ορατότητα", "status.reblogged_by": "{name} προώθησε", + "status.reblogs": "{count, plural, one {# ενίσχυση} other {# ενισχύσεις}}", "status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.", "status.redraft": "Σβήσε & ξαναγράψε", "status.remove_bookmark": "Αφαίρεση σελιδοδείκτη", @@ -610,6 +773,7 @@ "status.title.with_attachments": "{user} δημοσίευσε {attachmentCount, plural, one {ένα συνημμένο} other {{attachmentCount} συνημμένα}}", "status.translate": "Μετάφραση", "status.translated_from_with": "Μεταφράστηκε από {lang} χρησιμοποιώντας {provider}", + "status.uncached_media_warning": "Μη διαθέσιμη προεπισκόπηση", "status.unmute_conversation": "Αναίρεση σίγασης συνομιλίας", "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "subscribed_languages.lead": "Μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σου και θα παραθέτονται χρονοδιαγράμματα μετά την αλλαγή. Επέλεξε καμία για να λαμβάνεις αναρτήσεις σε όλες τις γλώσσες.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 4b330ec60b..5ba77dd72e 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -157,8 +157,8 @@ "compose_form.poll.multiple": "Monivalinta", "compose_form.poll.option_placeholder": "Vaihtoehto {number}", "compose_form.poll.single": "Valitse yksi", - "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi", - "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", + "compose_form.poll.switch_to_multiple": "Muuta äänestys monivalinnaksi", + "compose_form.poll.switch_to_single": "Muuta äänestys yksittäisvalinnaksi", "compose_form.poll.type": "Tyyli", "compose_form.publish": "Julkaise", "compose_form.publish_form": "Uusi julkaisu", @@ -443,6 +443,8 @@ "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_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}}", "navigation_bar.about": "Tietoja", "navigation_bar.advanced_interface": "Avaa edistyneessä selainkäyttöliittymässä", "navigation_bar.blocks": "Estetyt käyttäjät", @@ -469,7 +471,11 @@ "navigation_bar.search": "Hae", "navigation_bar.security": "Turvallisuus", "not_signed_in_indicator.not_signed_in": "Sinun on kirjauduttava sisään käyttääksesi resurssia.", - "notification.admin.report": "{name} teki ilmoituksen käytäjästä {target}", + "notification.admin.report": "{name} raportoi käyttäjän {target}", + "notification.admin.report_account": "{name} raportoi {count, plural, one {julkaisun} other {# julkaisua}} käyttäjältä {target}, syynä {category}", + "notification.admin.report_account_other": "{name} raportoi {count, plural, one {julkaisun} other {# julkaisua}} käyttäjältä {target}", + "notification.admin.report_statuses": "{name} raportoi käyttäjän {target}, syynä {category}", + "notification.admin.report_statuses_other": "{name} raportoi käyttäjän {target}", "notification.admin.sign_up": "{name} rekisteröityi", "notification.favourite": "{name} lisäsi julkaisusi suosikkeihinsa", "notification.follow": "{name} seurasi sinua", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Tiliäsi on rajoitettu.", "notification.moderation_warning.action_suspend": "Tilisi on jäädytetty.", "notification.own_poll": "Äänestyksesi on päättynyt", + "notification.poll": "Äänestys, johon osallistuit, on päättynyt", + "notification.private_mention": "{name} mainitsi sinut yksityisesti", "notification.reblog": "{name} tehosti julkaisuasi", "notification.relationships_severance_event": "Menetettiin yhteydet palvelimeen {name}", "notification.relationships_severance_event.account_suspension": "Palvelimen {from} ylläpitäjä on jäädyttänyt palvelimen {target} vuorovaikutuksen. Enää et voi siis vastaanottaa päivityksiä heiltä tai olla yhteyksissä heidän kanssaan.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Uudet ilmoitukset:", "notifications.column_settings.admin.sign_up": "Uudet rekisteröitymiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", + "notifications.column_settings.beta.category": "Kokeelliset ominaisuudet", + "notifications.column_settings.beta.grouping": "Ryhmittele ilmoitukset", "notifications.column_settings.favourite": "Suosikit:", "notifications.column_settings.filter_bar.advanced": "Näytä kaikki luokat", "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki", @@ -591,8 +601,8 @@ "poll.vote": "Äänestä", "poll.voted": "Äänestit tätä vastausta", "poll.votes": "{votes, plural, one {# ääni} other {# ääntä}}", - "poll_button.add_poll": "Lisää kysely", - "poll_button.remove_poll": "Poista kysely", + "poll_button.add_poll": "Lisää äänestys", + "poll_button.remove_poll": "Poista äänestys", "privacy.change": "Muuta julkaisun näkyvyyttä", "privacy.direct.long": "Kaikki tässä julkaisussa mainitut", "privacy.direct.short": "Tietyt henkilöt", @@ -622,7 +632,7 @@ "relative_time.today": "tänään", "reply_indicator.attachments": "{count, plural, one {# liite} other {# liitettä}}", "reply_indicator.cancel": "Peruuta", - "reply_indicator.poll": "Kysely", + "reply_indicator.poll": "Äänestys", "report.block": "Estä", "report.block_explanation": "Et näe hänen viestejään, eikä hän voi nähdä viestejäsi tai seurata sinua. Hän näkee, että olet estänyt hänet.", "report.categories.legal": "Juridiset tiedot", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Seuraat tätä tiliä. Estääksesi tilin viestejä näykymästä kotisyötteessäsi, lopeta sen seuraaminen.", "report_notification.attached_statuses": "{count, plural, one {{count} julkaisu} other {{count} julkaisua}} liitteenä", "report_notification.categories.legal": "Laillinen", + "report_notification.categories.legal_sentence": "laiton sisältö", "report_notification.categories.other": "Muu", + "report_notification.categories.other_sentence": "jokin muu", "report_notification.categories.spam": "Roskaposti", + "report_notification.categories.spam_sentence": "roskaposti", "report_notification.categories.violation": "Sääntörikkomus", + "report_notification.categories.violation_sentence": "sääntörikkomus", "report_notification.open": "Avaa raportti", "search.no_recent_searches": "Ei viimeaikaisia hakuja", "search.placeholder": "Hae", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index a04a5b25bf..e3b3a96568 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -422,6 +422,7 @@ "mute_modal.hide_options": "Opsjes ferstopje", "mute_modal.indefinite": "Oant ik se net mear negearje", "mute_modal.show_options": "Opsjes toane", + "mute_modal.title": "Brûker negearje?", "navigation_bar.about": "Oer", "navigation_bar.advanced_interface": "Yn avansearre webomjouwing iepenje", "navigation_bar.blocks": "Blokkearre brûkers", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1f76ae951d..d64789b86c 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -443,6 +443,8 @@ "mute_modal.title": "Acalar usuaria?", "mute_modal.you_wont_see_mentions": "Non verás as publicacións que a mencionen.", "mute_modal.you_wont_see_posts": "Seguirá podendo ler as túas publicacións, pero non verás as súas.", + "name_and_others": "{name} e {count, plural, one {outra máis} other {# máis}}", + "name_and_others_with_link": "{name} e {count, plural, one {outra máis} other {# máis}}", "navigation_bar.about": "Sobre", "navigation_bar.advanced_interface": "Abrir coa interface web avanzada", "navigation_bar.blocks": "Usuarias bloqueadas", @@ -470,6 +472,10 @@ "navigation_bar.security": "Seguranza", "not_signed_in_indicator.not_signed_in": "Debes acceder para ver este recurso.", "notification.admin.report": "{name} denunciou a {target}", + "notification.admin.report_account": "{name} denunciou {count, plural, one {unha publicación} other {# publicacións}} de {target} por {category}", + "notification.admin.report_account_other": "{name} denunciou {count, plural, one {unha publicación} other {# publicacións}} de {target}", + "notification.admin.report_statuses": "{name} deununciou a {target} por {category}", + "notification.admin.report_statuses_other": "{name} denunciou a {target}", "notification.admin.sign_up": "{name} rexistrouse", "notification.favourite": "{name} marcou como favorita a túa publicación", "notification.follow": "{name} comezou a seguirte", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "A túa conta foi limitada.", "notification.moderation_warning.action_suspend": "A túa conta foi suspendida.", "notification.own_poll": "A túa enquisa rematou", + "notification.poll": "Rematou a enquisa na que votaches", + "notification.private_mention": "{name} mencionoute de xeito privado", "notification.reblog": "{name} compartiu a túa publicación", "notification.relationships_severance_event": "Perdeuse a conexión con {name}", "notification.relationships_severance_event.account_suspension": "A administración de {from} suspendeu a {target}, o que significa que xa non vas recibir actualizacións de esa conta ou interactuar con ela.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Novas denuncias:", "notifications.column_settings.admin.sign_up": "Novas usuarias:", "notifications.column_settings.alert": "Notificacións de escritorio", + "notifications.column_settings.beta.category": "Características experimentais", + "notifications.column_settings.beta.grouping": "Notificacións de grupo", "notifications.column_settings.favourite": "Favoritas:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorías", "notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.", "report_notification.attached_statuses": "Achegou {count, plural, one {{count} publicación} other {{count} publicacións}}", "report_notification.categories.legal": "Legal", + "report_notification.categories.legal_sentence": "contido ilegal", "report_notification.categories.other": "Outro", + "report_notification.categories.other_sentence": "outra", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Faltou ás regras", + "report_notification.categories.violation_sentence": "violación das regras", "report_notification.open": "Abrir a denuncia", "search.no_recent_searches": "Non hai buscas recentes", "search.placeholder": "Procurar", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 148b3285dd..3687df7b87 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -443,6 +443,8 @@ "mute_modal.title": "להשתיק משתמש?", "mute_modal.you_wont_see_mentions": "לא תראה הודעות שמאזכרות אותם.", "mute_modal.you_wont_see_posts": "הם יכולים לראות את הודעותכם, אבל אתם לא תוכלו לראות את שלהם.", + "name_and_others": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}}", + "name_and_others_with_link": "{name} ועוד {count, plural,one {אחד נוסף}other {# נוספים}}", "navigation_bar.about": "אודות", "navigation_bar.advanced_interface": "פתח במנשק ווב מתקדם", "navigation_bar.blocks": "משתמשים חסומים", @@ -470,6 +472,10 @@ "navigation_bar.security": "אבטחה", "not_signed_in_indicator.not_signed_in": "יש להיות מאומת כדי לגשת למשאב זה.", "notification.admin.report": "{name} דיווח.ה על {target}", + "notification.admin.report_account": "{name} דווחו על {count, plural, one {הודעה אחת} two {הודעותיים} many {# הודעות} other {# הודעות}} מאת {target} בגין {category}", + "notification.admin.report_account_other": "{name} דווחו על {count, plural, one {הודעה אחת} two {הודעותיים} many {# הודעות} other {# הודעות}} מאת {target}", + "notification.admin.report_statuses": "{name} דווחו על {target} בגין {category}", + "notification.admin.report_statuses_other": "{name} דיווח.ה על {target}", "notification.admin.sign_up": "{name} נרשמו", "notification.favourite": "הודעתך חובבה על ידי {name}", "notification.follow": "{name} במעקב אחרייך", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "חשבונך הוגבל.", "notification.moderation_warning.action_suspend": "חשבונך הושעה.", "notification.own_poll": "הסקר שלך הסתיים", + "notification.poll": "סקר שהצבעת בו הסתיים", + "notification.private_mention": "{name} פנה/פנתה אליך בפרטיות", "notification.reblog": "הודעתך הודהדה על ידי {name}", "notification.relationships_severance_event": "אבד הקשר עם {name}", "notification.relationships_severance_event.account_suspension": "מנהל.ת משרת {from} השע(ת)ה את {target}, ולפיכך לא תעודכנו יותר על ידם ולא תוכלו להיות איתם בקשר.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "דו\"חות חדשים", "notifications.column_settings.admin.sign_up": "הרשמות חדשות:", "notifications.column_settings.alert": "התראות לשולחן העבודה", + "notifications.column_settings.beta.category": "יכולות ניסיוניות", + "notifications.column_settings.beta.grouping": "התראות קבוצה", "notifications.column_settings.favourite": "חיבובים:", "notifications.column_settings.filter_bar.advanced": "להציג את כל הקטגוריות", "notifications.column_settings.filter_bar.category": "שורת סינון מהיר", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריו.", "report_notification.attached_statuses": "{count, plural, one {הודעה מצורפת} two {הודעותיים מצורפות} many {{count} הודעות מצורפות} other {{count} הודעות מצורפות}}", "report_notification.categories.legal": "חוקי", + "report_notification.categories.legal_sentence": "תוכן בלתי חוקי", "report_notification.categories.other": "שונות", + "report_notification.categories.other_sentence": "אחר", "report_notification.categories.spam": "ספאם (דואר זבל)", + "report_notification.categories.spam_sentence": "ספאם (דואר זבל)", "report_notification.categories.violation": "הפרת כלל", + "report_notification.categories.violation_sentence": "הפרת כלל", "report_notification.open": "פתח דו\"ח", "search.no_recent_searches": "לא נמצאו חיפושים אחרונים", "search.placeholder": "חיפוש", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 733e2e541d..27d23aafd0 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -443,6 +443,8 @@ "mute_modal.title": "Þagga niður í notanda?", "mute_modal.you_wont_see_mentions": "Þú munt ekki sjá færslur sem minnast á viðkomandi aðila.", "mute_modal.you_wont_see_posts": "Viðkomandi geta áfram séð færslurnar þínar en þú munt ekki sjá færslurnar þeirra.", + "name_and_others": "{name} og {count, plural, one {# annar} other {# aðrir}}", + "name_and_others_with_link": "{name} og {count, plural, one {# annar} other {# aðrir}}", "navigation_bar.about": "Um hugbúnaðinn", "navigation_bar.advanced_interface": "Opna í ítarlegu vefviðmóti", "navigation_bar.blocks": "Útilokaðir notendur", @@ -470,6 +472,10 @@ "navigation_bar.security": "Öryggi", "not_signed_in_indicator.not_signed_in": "Þú þarft að skrá þig inn til að nota þetta tilfang.", "notification.admin.report": "{name} kærði {target}", + "notification.admin.report_account": "{name} kærði {count, plural, one {eina færslu} other {# færslur}} frá {target} fyrir {category}", + "notification.admin.report_account_other": "{name} kærði {count, plural, one {eina færslu} other {# færslur}} frá {target}", + "notification.admin.report_statuses": "{name} kærði {target} fyrir {category}", + "notification.admin.report_statuses_other": "{name} kærði {target}", "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færsluna þína í eftirlæti", "notification.follow": "{name} fylgist með þér", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Notandaaðgangurinn þinn hefur verið takmarkaður.", "notification.moderation_warning.action_suspend": "Notandaaðgangurinn þinn hefur verið settur í frysti.", "notification.own_poll": "Könnuninni þinni er lokið", + "notification.poll": "Könnun sem þú greiddir atkvæði í er lokið", + "notification.private_mention": "{name} minntist á þig í einrúmi", "notification.reblog": "{name} endurbirti færsluna þína", "notification.relationships_severance_event": "Missti tengingar við {name}", "notification.relationships_severance_event.account_suspension": "Stjórnandi á {from} hefur fryst {target}, sem þýðir að þú færð ekki lengur skilaboð frá viðkomandi né átt í samskiptum við viðkomandi.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Nýjar kærur:", "notifications.column_settings.admin.sign_up": "Nýjar skráningar:", "notifications.column_settings.alert": "Tilkynningar á skjáborði", + "notifications.column_settings.beta.category": "Eiginleikar á tilraunastigi", + "notifications.column_settings.beta.grouping": "Tilkynningar hópa", "notifications.column_settings.favourite": "Eftirlæti:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", "notifications.column_settings.filter_bar.category": "Skyndisíustika", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Þú ert að fylgjast með þessum aðgangi. Til að hætta að sjá viðkomandi færslur á streyminu þínu, skaltu hætta að fylgjast með viðkomandi.", "report_notification.attached_statuses": "{count, plural, one {{count} færsla} other {{count} færslur}} viðhengdar", "report_notification.categories.legal": "Löglegt", + "report_notification.categories.legal_sentence": "ólöglegt efni", "report_notification.categories.other": "Annað", + "report_notification.categories.other_sentence": "annað", "report_notification.categories.spam": "Ruslpóstur", + "report_notification.categories.spam_sentence": "ruslpóstur", "report_notification.categories.violation": "Brot á reglum", + "report_notification.categories.violation_sentence": "brot á reglum", "report_notification.open": "Opin kæra", "search.no_recent_searches": "Engar nýlegar leitir", "search.placeholder": "Leita", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 13583bc1d8..5168c1c0c0 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -502,6 +502,8 @@ "notifications.column_settings.admin.report": "新しい通報:", "notifications.column_settings.admin.sign_up": "新規登録:", "notifications.column_settings.alert": "デスクトップ通知", + "notifications.column_settings.beta.category": "実験段階の機能", + "notifications.column_settings.beta.grouping": "通知をグループにまとめる", "notifications.column_settings.favourite": "お気に入り:", "notifications.column_settings.filter_bar.advanced": "すべてのカテゴリを表示", "notifications.column_settings.filter_bar.category": "クイックフィルターバー:", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d12cf04366..776b3446a2 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -20,10 +20,10 @@ "account.cancel_follow_request": "Sefsex taḍfart", "account.copy": "Nɣel assaɣ ɣer umaɣnu", "account.direct": "Bder-d @{name} weḥd-s", - "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", + "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara alɣuten mi ara d-isuffeɣ @{name}", "account.domain_blocked": "Taɣult yeffren", "account.edit_profile": "Ẓreg amaɣnu", - "account.enable_notifications": "Azen-iyi-d ilɣa mi ara d-isuffeɣ @{name}", + "account.enable_notifications": "Azen-iyi-d alɣuten mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", "account.featured_tags.last_status_at": "Tasuffeɣt taneggarut ass n {date}", "account.featured_tags.last_status_never": "Ulac tisuffaɣ", @@ -45,7 +45,7 @@ "account.mention": "Bder-d @{name}", "account.moved_to": "{name} yenna-d dakken amiḍan-is amaynut yuɣal :", "account.mute": "Sgugem @{name}", - "account.mute_notifications_short": "Susem ilɣa", + "account.mute_notifications_short": "Susem alɣuten", "account.mute_short": "Sgugem", "account.muted": "Yettwasgugem", "account.no_bio": "Ulac aglam i d-yettunefken.", @@ -103,7 +103,7 @@ "column.home": "Agejdan", "column.lists": "Tibdarin", "column.mutes": "Imiḍanen yettwasgugmen", - "column.notifications": "Tilɣa", + "column.notifications": "Alɣuten", "column.pins": "Tisuffaɣ yettwasenṭḍen", "column.public": "Tasuddemt tamatut", "column_back_button.label": "Tuɣalin", @@ -210,7 +210,7 @@ "empty_column.list": "Ar tura ur yelli kra deg umuɣ-a. Ad d-yettwasken da ticki iɛeggalen n wumuɣ-a suffɣen-d kra.", "empty_column.lists": "Ulac ɣur-k·m kra n wumuɣ yakan. Ad d-tettwasken da ticki tesluleḍ-d yiwet.", "empty_column.mutes": "Ulac ɣur-k·m imseqdacen i yettwasgugmen.", - "empty_column.notifications": "Ulac ɣur-k·m tilɣa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.", + "empty_column.notifications": "Ulac ɣur-k·m alɣuten. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.", "empty_column.public": "Ulac kra da! Aru kra, neɣ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt", "error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Maṣṭudun deg yiminig-nniḍen neɣ deg usnas anaṣli.", "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus", @@ -247,7 +247,7 @@ "footer.keyboard_shortcuts": "Inegzumen n unasiw", "footer.privacy_policy": "Tasertit tabaḍnit", "footer.source_code": "Wali tangalt taɣbalut", - "footer.status": "N tsuffeɣt", + "footer.status": "Addad", "generic.saved": "Yettwasekles", "getting_started.heading": "Bdu", "hashtag.column_header.tag_mode.all": "d {additional}", @@ -305,7 +305,7 @@ "keyboard_shortcuts.mention": "akken ad d-bedreḍ ameskar", "keyboard_shortcuts.muted": "akken ad teldiḍ tabdart n yimseqdacen yettwasgugmen", "keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaɣnu-ik", - "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n tilɣa", + "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n walɣuten", "keyboard_shortcuts.open_media": "i tiɣwalin yeldin", "keyboard_shortcuts.pinned": "akken ad teldiḍ tabdart n tjewwiqin yettwasentḍen", "keyboard_shortcuts.profile": "akken ad d-teldiḍ amaɣnu n umeskar", @@ -327,7 +327,7 @@ "limited_account_hint.action": "Wali amaɣnu akken yebɣu yili", "link_preview.author": "S-ɣur {name}", "link_preview.more_from_author": "Ugar sɣur {name}", - "link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}", + "link_preview.shares": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", "lists.account.add": "Rnu ɣer tebdart", "lists.account.remove": "Kkes seg tebdart", "lists.delete": "Kkes tabdart", @@ -388,11 +388,12 @@ "notification.status": "{name} akken i d-yessufeɣ", "notification_requests.accept": "Qbel", "notification_requests.dismiss": "Agi", - "notification_requests.notifications_from": "Ilɣa sɣur {name}", - "notifications.clear": "Sfeḍ tilɣa", - "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", + "notification_requests.notifications_from": "Alɣuten sɣur {name}", + "notifications.clear": "Sfeḍ alɣuten", + "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?", "notifications.column_settings.admin.report": "Ineqqisen imaynuten:", - "notifications.column_settings.alert": "Tilɣa n tnarit", + "notifications.column_settings.alert": "Alɣuten n tnarit", + "notifications.column_settings.beta.grouping": "Segrew alɣuten", "notifications.column_settings.favourite": "Imenyafen:", "notifications.column_settings.filter_bar.advanced": "Sken-d akk taggayin", "notifications.column_settings.filter_bar.category": "Iri n usizdeg uzrib", @@ -400,12 +401,12 @@ "notifications.column_settings.follow_request": "Isuturen imaynuten n teḍfeṛt:", "notifications.column_settings.mention": "Abdar:", "notifications.column_settings.poll": "Igemmaḍ n usenqed:", - "notifications.column_settings.push": "Tilɣa yettudemmren", + "notifications.column_settings.push": "Alɣuten yettudemmren", "notifications.column_settings.reblog": "Seǧhed:", "notifications.column_settings.show": "Ssken-d tilɣa deg ujgu", "notifications.column_settings.sound": "Rmed imesli", "notifications.column_settings.status": "Tisuffaɣ timaynutin :", - "notifications.column_settings.unread_notifications.category": "Ilɣa ur nettwaɣra", + "notifications.column_settings.unread_notifications.category": "Alɣuten ur nettwaɣra", "notifications.column_settings.update": "Iẓreg:", "notifications.filter.all": "Akk", "notifications.filter.boosts": "Seǧhed", @@ -415,9 +416,9 @@ "notifications.filter.polls": "Igemmaḍ n usenqed", "notifications.filter.statuses": "Ileqman n yimdanen i teṭṭafareḍ", "notifications.grant_permission": "Mudd tasiregt.", - "notifications.group": "{count} n tilɣa", - "notifications.mark_as_read": "Creḍ meṛṛa iilɣa am wakken ttwaɣran", - "notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel.", + "notifications.group": "{count} n walɣuten", + "notifications.mark_as_read": "Creḍ meṛṛa alɣuten am wakken ttwaɣran", + "notifications.permission_denied": "D awezɣi ad yili wermad n walɣuten n tnarit axateṛ turagt tettwagdel", "notifications.policy.filter_new_accounts.hint": "Imiḍanen imaynuten i d-yennulfan deg {days, plural, one {yiwen n wass} other {# n wussan}} yezrin", "notifications.policy.filter_new_accounts_title": "Imiḍan imaynuten", "notifications.policy.filter_not_followers_hint": "Ula d wid akked tid i k·m-id-iḍefren, ur wwiḍen ara {days, plural, one {yiwen n wass} other {# n wussan}}", @@ -425,8 +426,8 @@ "notifications.policy.filter_not_following_hint": "Alamma tqebleḍ-ten s ufus", "notifications.policy.filter_not_following_title": "Wid akked tid ur tettḍafareḍ ara", "notifications.policy.filter_private_mentions_title": "Abdar uslig ur yettwasferken ara", - "notifications.policy.title": "Sizdeg ilɣa sɣur …", - "notifications_permission_banner.enable": "Rmed talɣutin n tnarit", + "notifications.policy.title": "Sizdeg alɣuten sɣur …", + "notifications_permission_banner.enable": "Rmed alɣuten n tnarit", "notifications_permission_banner.title": "Ur zeggel acemma", "onboarding.action.back": "Tuɣalin ɣer deffir", "onboarding.actions.back": "Tuɣalin ɣer deffir", @@ -521,7 +522,7 @@ "report.thanks.title": "Ur tebɣiḍ ara ad twaliḍ aya?", "report.thanks.title_actionable": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "report.unfollow": "Seḥbes aḍfar n @{name}", - "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached", + "report_notification.attached_statuses": "{count, plural, one {{count} n tsuffeɣt} other {{count} n tsuffiɣin}} ttwaqnent", "report_notification.categories.legal": "Azerfan", "report_notification.categories.other": "Ayen nniḍen", "report_notification.categories.spam": "Aspam", @@ -608,7 +609,7 @@ "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.save": "Sekles ibeddilen", "tabs_bar.home": "Agejdan", - "tabs_bar.notifications": "Tilɣa", + "tabs_bar.notifications": "Alɣuten", "time_remaining.days": "Mazal {number, plural, one {# n wass} other {# n wussan}}", "time_remaining.hours": "Mazal {number, plural, one {# n usrag} other {# n yesragen}}", "time_remaining.minutes": "Mazal {number, plural, one {# n tesdat} other {# n tesdatin}}", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index ee45e09ad1..2dc360f9ed 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -300,6 +300,7 @@ "follow_suggestions.hints.similar_to_recently_followed": "Este profil es similar a otros ke tienes segido resientemente.", "follow_suggestions.personalized_suggestion": "Sujestion personalizada", "follow_suggestions.popular_suggestion": "Sujestion populara", + "follow_suggestions.popular_suggestion_longer": "Popular en {domain}", "follow_suggestions.view_all": "Ve todos", "follow_suggestions.who_to_follow": "A ken segir", "followed_tags": "Etiketas segidas", @@ -396,6 +397,7 @@ "limited_account_hint.title": "Este profil fue eskondido por los moderadores de {domain}.", "link_preview.author": "Publikasyon de {name}", "link_preview.more_from_author": "Mas de {name}", + "link_preview.shares": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}", "lists.account.add": "Adjusta a lista", "lists.account.remove": "Kita de lista", "lists.delete": "Efasa lista", @@ -448,15 +450,20 @@ "navigation_bar.security": "Segurita", "not_signed_in_indicator.not_signed_in": "Nesesitas konektarse kon tu kuento para akseder este rekurso.", "notification.admin.report": "{name} raporto {target}", + "notification.admin.report_statuses_other": "{name} raporto {target}", "notification.admin.sign_up": "{name} kriyo un konto", "notification.favourite": "A {name} le plaze tu publikasyon", "notification.follow": "{name} te ampeso a segir", "notification.follow_request": "{name} tiene solisitado segirte", "notification.mention": "{name} te enmento", "notification.moderation-warning.learn_more": "Ambezate mas", + "notification.moderation_warning.action_disable": "Tu kuento tiene sido inkapasitado.", + "notification.moderation_warning.action_mark_statuses_as_sensitive": "Algunas de tus publikasyones tienen sido markadas komo sensivles.", + "notification.moderation_warning.action_sensitive": "Tus publikasyones seran markadas komo sensivles dizde agora.", "notification.moderation_warning.action_silence": "Tu kuento tiene sido limitado.", "notification.moderation_warning.action_suspend": "Tu kuento tiene sido suspendido.", "notification.own_poll": "Tu anketa eskapo", + "notification.poll": "Anketa en ke votates eskapo", "notification.reblog": "{name} repartajo tu publikasyon", "notification.relationships_severance_event": "Koneksyones pedridas kon {name}", "notification.relationships_severance_event.learn_more": "Ambezate mas", @@ -633,8 +640,11 @@ "report_notification.attached_statuses": "{count, plural, one {{count} publikasyon} other {{count} publikasyones}} atadas", "report_notification.categories.legal": "Legal", "report_notification.categories.other": "Otros", + "report_notification.categories.other_sentence": "otros", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Violasyon de reglas", + "report_notification.categories.violation_sentence": "violasyon de reglas", "report_notification.open": "Avre raporto", "search.no_recent_searches": "No ay bushkedas resientes", "search.placeholder": "Bushka", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 05c8aa4e26..027c09280c 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -491,8 +491,8 @@ "notification.moderation_warning.action_silence": "Jouw account is beperkt.", "notification.moderation_warning.action_suspend": "Jouw account is opgeschort.", "notification.own_poll": "Jouw peiling is beëindigd", - "notification.poll": "Een peiling waaraan je hebt deelgenomen, is verlopen", - "notification.private_mention": "{name} heeft je privé genoemd", + "notification.poll": "Een peiling waaraan jij hebt meegedaan is beëindigd", + "notification.private_mention": "{name} heeft je een privébericht gestuurd", "notification.reblog": "{name} boostte jouw bericht", "notification.relationships_severance_event": "Verloren verbindingen met {name}", "notification.relationships_severance_event.account_suspension": "Een beheerder van {from} heeft {target} geschorst, wat betekent dat je geen updates meer van hen kunt ontvangen of met hen kunt communiceren.", @@ -511,7 +511,7 @@ "notifications.column_settings.admin.sign_up": "Nieuwe registraties:", "notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.beta.category": "Experimentele functies", - "notifications.column_settings.beta.grouping": "Groepsmeldingen", + "notifications.column_settings.beta.grouping": "Gegroepeerde meldingen", "notifications.column_settings.favourite": "Favorieten:", "notifications.column_settings.filter_bar.advanced": "Alle categorieën tonen", "notifications.column_settings.filter_bar.category": "Snelle filterbalk", @@ -681,7 +681,7 @@ "report_notification.categories.spam": "Spam", "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Overtreden regel(s)", - "report_notification.categories.violation_sentence": "regel overtreden", + "report_notification.categories.violation_sentence": "serverregel overtreden", "report_notification.open": "Rapportage openen", "search.no_recent_searches": "Geen recente zoekopdrachten", "search.placeholder": "Zoeken", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 219561688b..6f378b145e 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -443,6 +443,8 @@ "mute_modal.title": "Të heshtohet përdoruesi?", "mute_modal.you_wont_see_mentions": "S’do të shihni postime ku përmenden.", "mute_modal.you_wont_see_posts": "Ata munden ende të shohin postimet tuaja, por ju s’do të shihni të tyret.", + "name_and_others": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", + "name_and_others_with_link": "{name} dhe {count, plural, one {# tjetër} other {# të tjerë}}", "navigation_bar.about": "Mbi", "navigation_bar.advanced_interface": "Hape në ndërfaqe web të thelluar", "navigation_bar.blocks": "Përdorues të bllokuar", @@ -470,6 +472,10 @@ "navigation_bar.security": "Siguri", "not_signed_in_indicator.not_signed_in": "Që të përdorni këtë burim, lypset të bëni hyrjen.", "notification.admin.report": "{name} raportoi {target}", + "notification.admin.report_account": "{name} raportoi për {count, plural, one {një postim} other {# postime}} nga {target} për {category}", + "notification.admin.report_account_other": "{name} raportoi për {count, plural, one {një postim} other {# postime}} nga {target}", + "notification.admin.report_statuses": "{name} raportoi {target} për {category}", + "notification.admin.report_statuses_other": "{name} raportoi {target}", "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} i vuri shenjë postimit tuaj si të parapëlqyer", "notification.follow": "{name} zuri t’ju ndjekë", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Llogaria juaj është kufizuar.", "notification.moderation_warning.action_suspend": "Llogaria juaj është pezulluar.", "notification.own_poll": "Pyetësori juaj ka përfunduar", + "notification.poll": "Ka përfunduar një pyetësor në të cilin keni marrë pjesë", + "notification.private_mention": "{name} ju përmendi privatisht", "notification.reblog": "{name} përforcoi mesazhin tuaj", "notification.relationships_severance_event": "Lidhje të humbura me {name}", "notification.relationships_severance_event.account_suspension": "Një përgjegjës nga {from} ka pezulluar {target}, që do të thotë se s’mund të merrni më përditësime prej tij, apo të ndërveproni me të.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Raportime të reja:", "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", + "notifications.column_settings.beta.category": "Veçori eksperimentale", + "notifications.column_settings.beta.grouping": "Njoftime grupi", "notifications.column_settings.favourite": "Të parapëlqyer:", "notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë", "notifications.column_settings.filter_bar.category": "Shtyllë filtrimesh të shpejta", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Po e ndiqni këtë llogari. Për të mos parë më postimet e tyre te prurja juaj e kreut, ndalni ndjekjen e tyre.", "report_notification.attached_statuses": "{count, plural, one {{count} postim} other {{count} postime}} bashkëngjitur", "report_notification.categories.legal": "Ligjore", + "report_notification.categories.legal_sentence": "lëndë e paligjshme", "report_notification.categories.other": "Tjetër", + "report_notification.categories.other_sentence": "tjetër", "report_notification.categories.spam": "I padëshiruar", + "report_notification.categories.spam_sentence": "mesazh i padëshiruar", "report_notification.categories.violation": "Cenim rregullash", + "report_notification.categories.violation_sentence": "cenim rregullash", "report_notification.open": "Hape raportimin", "search.no_recent_searches": "Pa kërkime së fundi", "search.placeholder": "Kërkoni", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index ba07d5a1c7..53e2dde42e 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -442,6 +442,8 @@ "mute_modal.title": "Tysta användare?", "mute_modal.you_wont_see_mentions": "Du kommer inte att se inlägg som nämner dem.", "mute_modal.you_wont_see_posts": "De kan fortfarande se dina inlägg, men du kan inte se deras.", + "name_and_others": "{name} och {count, plural, one {# annan} other {# andra}}", + "name_and_others_with_link": "{name} och {count, plural, one {# annan} other {# andra}}", "navigation_bar.about": "Om", "navigation_bar.advanced_interface": "Öppna i avancerat webbgränssnitt", "navigation_bar.blocks": "Blockerade användare", @@ -672,6 +674,7 @@ "report_notification.categories.spam": "Skräppost", "report_notification.categories.spam_sentence": "skräppost", "report_notification.categories.violation": "Regelöverträdelse", + "report_notification.categories.violation_sentence": "regelöverträdelse", "report_notification.open": "Öppna rapport", "search.no_recent_searches": "Inga sökningar nyligen", "search.placeholder": "Sök", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 083a0eb33f..ab8179863c 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -443,6 +443,7 @@ "mute_modal.title": "ซ่อนผู้ใช้?", "mute_modal.you_wont_see_mentions": "คุณจะไม่เห็นโพสต์ที่กล่าวถึงเขา", "mute_modal.you_wont_see_posts": "เขายังคงสามารถเห็นโพสต์ของคุณ แต่คุณจะไม่เห็นโพสต์ของเขา", + "name_and_others": "{name} และ {count, plural, one {# อื่น ๆ } other {# อื่น ๆ}}", "navigation_bar.about": "เกี่ยวกับ", "navigation_bar.advanced_interface": "เปิดในส่วนติดต่อเว็บขั้นสูง", "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่", @@ -470,6 +471,7 @@ "navigation_bar.security": "ความปลอดภัย", "not_signed_in_indicator.not_signed_in": "คุณจำเป็นต้องเข้าสู่ระบบเพื่อเข้าถึงทรัพยากรนี้", "notification.admin.report": "{name} ได้รายงาน {target}", + "notification.admin.report_statuses_other": "{name} รายงาน {target}", "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", @@ -485,6 +487,7 @@ "notification.moderation_warning.action_silence": "จำกัดบัญชีของคุณแล้ว", "notification.moderation_warning.action_suspend": "ระงับบัญชีของคุณแล้ว", "notification.own_poll": "การสำรวจความคิดเห็นของคุณได้สิ้นสุดแล้ว", + "notification.poll": "โพลที่คุณโหวตได้จบลงแล้ว", "notification.reblog": "{name} ได้ดันโพสต์ของคุณ", "notification.relationships_severance_event": "สูญเสียการเชื่อมต่อกับ {name}", "notification.relationships_severance_event.account_suspension": "ผู้ดูแลจาก {from} ได้ระงับ {target} ซึ่งหมายความว่าคุณจะไม่สามารถรับการอัปเดตจากเขาหรือโต้ตอบกับเขาได้อีกต่อไป", @@ -666,8 +669,11 @@ "report_notification.attached_statuses": "{count, plural, other {{count} โพสต์}}ที่แนบมา", "report_notification.categories.legal": "กฎหมาย", "report_notification.categories.other": "อื่น ๆ", + "report_notification.categories.other_sentence": "อื่น ๆ", "report_notification.categories.spam": "สแปม", + "report_notification.categories.spam_sentence": "สแปม", "report_notification.categories.violation": "การละเมิดกฎ", + "report_notification.categories.violation_sentence": "ละเมิดกฎ", "report_notification.open": "รายงานที่เปิด", "search.no_recent_searches": "ไม่มีการค้นหาล่าสุด", "search.placeholder": "ค้นหา", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 0b20b60f9e..ae7b5ba25d 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -443,6 +443,8 @@ "mute_modal.title": "Kullanıcıyı sustur?", "mute_modal.you_wont_see_mentions": "Onlardan bahseden gönderiler göremezsiniz.", "mute_modal.you_wont_see_posts": "Onlar sizin gönderilerinizi görmeye devam edebilir, ancak siz onlarınkini göremezsiniz.", + "name_and_others": "{name} ve {count, plural, one {# diğer} other {# diğerleri}}", + "name_and_others_with_link": "{name} ve {count, plural, one {# diğer} other {# diğerleri}}", "navigation_bar.about": "Hakkında", "navigation_bar.advanced_interface": "Gelişmiş web arayüzünde aç", "navigation_bar.blocks": "Engellenen kullanıcılar", @@ -470,6 +472,10 @@ "navigation_bar.security": "Güvenlik", "not_signed_in_indicator.not_signed_in": "Bu kaynağa erişmek için oturum açmanız gerekir.", "notification.admin.report": "{name}, {target} kişisini bildirdi", + "notification.admin.report_account": "{name}, {category} kategorisi için {target} kişisini {count, plural, one {bir gönderi} other {# gönderi}} bildirdi", + "notification.admin.report_account_other": "{name}, {target} kişisinden {count, plural, one {bir gönderi} other {# gönderi}} bildirdi", + "notification.admin.report_statuses": "{name}, {category} kategorisi için {target} kişisini bildirdi", + "notification.admin.report_statuses_other": "{name}, {target} kişisini bildirdi", "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderinizi beğendi", "notification.follow": "{name} seni takip etti", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Hesabınız sınırlandırıldı.", "notification.moderation_warning.action_suspend": "Hesabınız askıya alındı.", "notification.own_poll": "Anketiniz sona erdi", + "notification.poll": "Oy verdiğiniz bir anket sona erdi", + "notification.private_mention": "{name} gizlice sizden bahsetti", "notification.reblog": "{name} gönderini yeniden paylaştı", "notification.relationships_severance_event": "{name} ile bağlantılar koptu", "notification.relationships_severance_event.account_suspension": "{from} yöneticisi, {target} askıya aldı, bunun anlamı onlardan artık güncelleme alamayacak veya etkileşemeyeceksiniz demektir.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Yeni bildirimler:", "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", + "notifications.column_settings.beta.category": "Deneysel özellikler", + "notifications.column_settings.beta.grouping": "Grup bildirimleri", "notifications.column_settings.favourite": "Favorilerin:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", "notifications.column_settings.filter_bar.category": "Hızlı filtre çubuğu", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Bu hesabı takip ediyorsunuz. Ana akışınızda gönderilerini görmek istemiyorsanız, onu takip etmeyi bırakın.", "report_notification.attached_statuses": "{count, plural, one {{count} gönderi} other {{count} gönderi}} eklendi", "report_notification.categories.legal": "Yasal", + "report_notification.categories.legal_sentence": "yasadışı içerik", "report_notification.categories.other": "Diğer", + "report_notification.categories.other_sentence": "diğer", "report_notification.categories.spam": "İstenmeyen", + "report_notification.categories.spam_sentence": "i̇stenmeyen", "report_notification.categories.violation": "Kural ihlali", + "report_notification.categories.violation_sentence": "kural ihlali", "report_notification.open": "Bildirim aç", "search.no_recent_searches": "Son arama yok", "search.placeholder": "Ara", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 76abe8d299..b5cd1f7b28 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -443,6 +443,8 @@ "mute_modal.title": "Ігнорувати користувача?", "mute_modal.you_wont_see_mentions": "Ви не бачитимете дописів, де їх згадано.", "mute_modal.you_wont_see_posts": "Вони все ще можуть бачити ваші дописи, але ви не бачитимете їхніх.", + "name_and_others": "{name} і {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}", + "name_and_others_with_link": "{name} і {count, plural, one {# інший} few {# інших} many {# інших} other {# інший}}", "navigation_bar.about": "Про застосунок", "navigation_bar.advanced_interface": "Відкрити в розширеному вебінтерфейсі", "navigation_bar.blocks": "Заблоковані користувачі", @@ -470,6 +472,10 @@ "navigation_bar.security": "Безпека", "not_signed_in_indicator.not_signed_in": "Ви повинні увійти, щоб отримати доступ до цього ресурсу.", "notification.admin.report": "Скарга від {name} на {target}", + "notification.admin.report_account": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target} в категорії {category}", + "notification.admin.report_account_other": "{name} повідомив(ла) про {count, plural, one {один допис} few {# дописи} many {# дописів} other {# дописів}} від {target}", + "notification.admin.report_statuses": "{name} повідомив(ла) про {target} в категорії {category}", + "notification.admin.report_statuses_other": "{name} повідомив(ла) про {target}", "notification.admin.sign_up": "{name} приєдналися", "notification.favourite": "Ваш допис сподобався {name}", "notification.follow": "{name} підписалися на вас", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Ваш обліковий запис було обмежено.", "notification.moderation_warning.action_suspend": "Ваш обліковий запис було заблоковано.", "notification.own_poll": "Ваше опитування завершилося", + "notification.poll": "Опитування, в якому ви проголосували, завершено", + "notification.private_mention": "{name} приватно згадав(ла) вас", "notification.reblog": "{name} поширює ваш допис", "notification.relationships_severance_event": "Втрачено з'єднання з {name}", "notification.relationships_severance_event.account_suspension": "Адміністратор з {from} призупинив {target}, що означає, що ви більше не можете отримувати оновлення від них або взаємодіяти з ними.", @@ -502,6 +510,8 @@ "notifications.column_settings.admin.report": "Нові скарги:", "notifications.column_settings.admin.sign_up": "Нові реєстрації:", "notifications.column_settings.alert": "Сповіщення стільниці", + "notifications.column_settings.beta.category": "Експериментальні функції", + "notifications.column_settings.beta.grouping": "Групові сповіщення", "notifications.column_settings.favourite": "Уподобане:", "notifications.column_settings.filter_bar.advanced": "Показати всі категорії", "notifications.column_settings.filter_bar.category": "Панель швидкого фільтра", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Ви підписані на цього користувача. Щоб більше не бачити їхні дописи у вашій стрічці, відпишіться від них.", "report_notification.attached_statuses": "{count, plural, one {{count} допис} few {{count} дописи} many {{count} дописів} other {{count} дописи}} прикріплено", "report_notification.categories.legal": "Правові", + "report_notification.categories.legal_sentence": "незаконний контент", "report_notification.categories.other": "Інше", + "report_notification.categories.other_sentence": "інше", "report_notification.categories.spam": "Спам", + "report_notification.categories.spam_sentence": "спам", "report_notification.categories.violation": "Порушення правил", + "report_notification.categories.violation_sentence": "порушення правил", "report_notification.open": "Відкрити скаргу", "search.no_recent_searches": "Немає останніх пошуків", "search.placeholder": "Пошук", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 7a88bee364..0f2cc996a2 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -443,6 +443,8 @@ "mute_modal.title": "Ẩn người này?", "mute_modal.you_wont_see_mentions": "Bạn sẽ không nhìn thấy tút có nhắc đến họ.", "mute_modal.you_wont_see_posts": "Bạn sẽ không nhìn thấy tút của họ.", + "name_and_others": "{name} và {count, plural, other {# người khác}}", + "name_and_others_with_link": "{name} và {count, plural, other {# người khác}}", "navigation_bar.about": "Giới thiệu", "navigation_bar.advanced_interface": "Dùng bố cục nhiều cột", "navigation_bar.blocks": "Người đã chặn", @@ -470,6 +472,10 @@ "navigation_bar.security": "Bảo mật", "not_signed_in_indicator.not_signed_in": "Bạn cần đăng nhập để truy cập mục này.", "notification.admin.report": "{name} báo cáo {target}", + "notification.admin.report_account": "{name} báo cáo {count, plural, other {# tút}} của {target} vì {category}", + "notification.admin.report_account_other": "{name} báo cáo {count, plural, other {# tút}} của {target}", + "notification.admin.report_statuses": "{name} báo cáo {target} vì {category}", + "notification.admin.report_statuses_other": "{name} báo cáo {target}", "notification.admin.sign_up": "{name} tham gia máy chủ của bạn", "notification.favourite": "{name} thích tút của bạn", "notification.follow": "{name} theo dõi bạn", @@ -485,6 +491,8 @@ "notification.moderation_warning.action_silence": "Tài khoản của bạn đã bị hạn chế.", "notification.moderation_warning.action_suspend": "Tài khoản của bạn đã bị vô hiệu hóa.", "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc", + "notification.poll": "Cuộc bình chọn có bạn tham gia đã kết thúc", + "notification.private_mention": "{name} nhắn riêng đến bạn", "notification.reblog": "{name} đăng lại tút của bạn", "notification.relationships_severance_event": "Mất kết nối với {name}", "notification.relationships_severance_event.account_suspension": "Quản trị viên {from} đã vô hiệu hóa {target}, điều này có nghĩa là bạn không còn có thể nhận được cập nhật từ họ hoặc tương tác với họ nữa.", @@ -502,6 +510,8 @@ "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", + "notifications.column_settings.beta.category": "Tính năng thử nghiệm", + "notifications.column_settings.beta.grouping": "Gộp thông báo theo loại", "notifications.column_settings.favourite": "Lượt thích:", "notifications.column_settings.filter_bar.advanced": "Toàn bộ", "notifications.column_settings.filter_bar.category": "Thanh lọc nhanh", @@ -665,9 +675,13 @@ "report.unfollow_explanation": "Bạn đang theo dõi người này. Để không thấy tút của họ trên trang chủ nữa, hãy bỏ theo dõi.", "report_notification.attached_statuses": "{count, plural, other {{count} tút}} đính kèm", "report_notification.categories.legal": "Pháp lý", + "report_notification.categories.legal_sentence": "nội dung bất hợp pháp", "report_notification.categories.other": "Khác", + "report_notification.categories.other_sentence": "khác", "report_notification.categories.spam": "Spam", + "report_notification.categories.spam_sentence": "spam", "report_notification.categories.violation": "Vi phạm nội quy", + "report_notification.categories.violation_sentence": "vi phạm nội quy", "report_notification.open": "Mở báo cáo", "search.no_recent_searches": "Không có tìm kiếm gần đây", "search.placeholder": "Tìm kiếm", diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 01e9a75f98..1c3bcc6ebf 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -36,14 +36,14 @@ el: status: attributes: reblog: - taken: της κατάστασης ήδη υπάρχει + taken: της ανάρτησης υπάρχει ήδη user: attributes: email: blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail unreachable: δεν φαίνεται να υπάρχει role_id: - elevated: δεν μπορεί να είναι μεγαλύτερο από τον τρέχοντα ρόλο σας + elevated: δεν μπορεί να είναι υψηλότερο από τον τρέχοντα ρόλο σου user_role: attributes: permissions_as_keys: diff --git a/config/locales/doorkeeper.el.yml b/config/locales/doorkeeper.el.yml index 1cb9b3513b..167cc6bd44 100644 --- a/config/locales/doorkeeper.el.yml +++ b/config/locales/doorkeeper.el.yml @@ -4,7 +4,7 @@ el: attributes: doorkeeper/application: name: Όνομα εφαρμογής - redirect_uri: URI Ανακατεύθυνσης (Ενιαίο Αναγνωριστικό Πόρων) + redirect_uri: URI Ανακατεύθυνσης scopes: Εύρος εφαρμογής website: Ιστότοπος εφαρμογής errors: @@ -13,21 +13,21 @@ el: attributes: redirect_uri: fragment_present: δεν μπορεί να περιέχει τμήμα διεύθυνσης. - invalid_uri: πρέπει να είναι έγκυρο URI (Ενιαίο Αναγνωριστικό Πόρων). - relative_uri: πρέπει να είναι απόλυτο URI (Ενιαίο Αναγνωριστικό Πόρων). - secured_uri: πρέπει να είναι HTTPS/SSL URI (Ενιαίο Αναγνωριστικό Πόρων). + invalid_uri: πρέπει να είναι έγκυρο URI. + relative_uri: πρέπει να είναι απόλυτο URI. + secured_uri: πρέπει να είναι HTTPS/SSL URI. doorkeeper: applications: buttons: - authorize: Ενέκρινε + authorize: Έγκριση cancel: Άκυρο destroy: Καταστροφή - edit: Αλλαγή + edit: Επεξεργασία submit: Υποβολή confirmations: destroy: Σίγουρα; edit: - title: Αλλαγή εφαρμογής + title: Επεξεργασία εφαρμογής form: error: Ώπα! Έλεγξε τη φόρμα σου για πιθανά λάθη help: @@ -36,9 +36,9 @@ el: scopes: Διαχώρησε το κάθε εύρος εφαρμογής με κενά. Άστο κενό για χρήση των προεπιλεγμένων ευρών εφαρμογής. index: application: Εφαρμογή - callback_url: URL επιστροφής (Callback) + callback_url: Callback URL delete: Διαγραφή - empty: Δεν έχετε αιτήσεις. + empty: Δεν έχεις εφαρμογές. name: Όνομα new: Νέα εφαρμογή scopes: Εύρος εφαρμογής @@ -49,32 +49,32 @@ el: show: actions: Ενέργειες application_id: Κλειδί πελάτη - callback_urls: URL επιστροφής (Callback) + callback_urls: Callback URLs scopes: Εύρος εφαρμογής secret: Μυστικό πελάτη title: 'Εφαρμογή: %{name}' authorizations: buttons: - authorize: Ενέκρινε - deny: Απόρριψε + authorize: Έγκριση + deny: Απόρριψη error: title: Εμφανίστηκε σφάλμα new: - prompt_html: Ο/Η %{client_name} θα ήθελε άδεια πρόσβασης στο λογαριασμό σας. Είναι μια εφαρμογή από τρίτους. Αν δεν το εμπιστεύεστε, τότε δεν πρέπει να το εξουσιοδοτήσετε. - review_permissions: Αναθεώρηση δικαιωμάτων + prompt_html: Το %{client_name} θα ήθελε άδεια πρόσβασης στο λογαριασμό σου. Είναι μια εφαρμογή τρίτων. Αν δεν το εμπιστεύεσαι, τότε δεν πρέπει να το εγκρίνεις. + review_permissions: Ανασκόπηση δικαιωμάτων title: Απαιτείται έγκριση show: title: Αντέγραψε αυτό τον κωδικό έγκρισης στην εφαρμογή. authorized_applications: buttons: - revoke: Ανακάλεσε + revoke: Ανάκληση confirmations: revoke: Σίγουρα; index: authorized_at: Εξουσιοδοτήθηκε στις %{date} - description_html: Αυτές είναι εφαρμογές που μπορούν να έχουν πρόσβαση στο λογαριασμό σας χρησιμοποιώντας το API. Αν υπάρχουν εφαρμογές που δεν αναγνωρίζετε εδώ ή μια εφαρμογή δεν συμπεριφέρεται σωστά, μπορείτε να ανακαλέσετε την πρόσβασή της. + description_html: Αυτές είναι εφαρμογές που μπορούν να έχουν πρόσβαση στο λογαριασμό σου χρησιμοποιώντας το API. Αν υπάρχουν εφαρμογές που δεν αναγνωρίζεις εδώ ή μια εφαρμογή δεν συμπεριφέρεται σωστά, μπορείς να ανακαλέσεις την πρόσβασή της. last_used_at: Τελευταία χρήση στις %{date} - never_used: Ποτέ σε χρήση + never_used: Δεν έχει χρησιμοποιηθεί scopes: Δικαιώματα superapp: Εσωτερική title: Οι εφαρμογές που έχεις εγκρίνει @@ -84,23 +84,23 @@ el: credential_flow_not_configured: Η ροή Resource Owner Password Credentials απέτυχε επειδή το Doorkeeper.configure.resource_owner_from_credentials δεν έχει ρυθμιστεί. invalid_client: Η ταυτοποίηση του πελάτη απέτυχε είτε λόγω άγνωστου πελάτη, είτε λόγω έλλειψης ταυτοποιημένου πελάτη ή λόγω μη υποστηριζόμενης μεθόδου ταυτοποίησης. invalid_grant: Η άδεια πιστοποίησης που δόθηκε είναι άκυρη, ληγμένη, έχει ανακληθεί, δεν συμφωνεί με το URI ανακατεύθυνσης που δόθηκε στο αίτημα πιστοποίησης ή εκδόθηκε προς άλλο πελάτη. - invalid_redirect_uri: Το URI ανακατεύθυνσης που δόθηκε δεν είναι έγκυρο. + invalid_redirect_uri: Το uri ανακατεύθυνσης που δόθηκε δεν είναι έγκυρο. invalid_request: - missing_param: 'Λείπει η απαιτούμενη παράμετρος: %{value}.' + missing_param: 'Λείπει απαιτούμενη παράμετρος: %{value}.' request_not_authorized: Το αίτημα πρέπει να είναι εξουσιοδοτημένο. Η απαιτούμενη παράμετρος για την έγκριση της αίτησης λείπει ή είναι άκυρη. unknown: Από το αίτημα λείπει μία υποχρεωτική παράμετρος ή περιλαμβάνει μια μη υποστηριζόμενη τιμή ή έχει λανθασμένη μορφή με κάποιο άλλο τρόπο. - invalid_resource_owner: Τα διαπιστευτήρια που έδωσε ο ιδιοκτήτης του πόρου δεν είναι έγκυρα, ή δεν βρέθηκε ο ιδιοκτήτης του πόρου + invalid_resource_owner: Τα διαπιστευτήρια που έδωσε ο ιδιοκτήτης του πόρου δεν είναι έγκυρα ή δεν βρέθηκε ο ιδιοκτήτης του πόρου invalid_scope: Το αιτούμενο εύρος εφαρμογής είναι άκυρο, άγνωστο ή λάθος διατυπωμένο. invalid_token: expired: Το διακριτικό πρόσβασης έληξε revoked: Το διακριτικό πρόσβασης ανακλήθηκε unknown: Το διακριτικό πρόσβασης δεν είναι έγκυρο resource_owner_authenticator_not_configured: Η αναζήτηση του ιδιοκτήτη του πόρου απέτυχε επειδή το Doorkeeper.configure.resource_owner_authenticator δεν έχει ρυθμιστεί. - server_error: Ο εξυπηρετητής έγκρισης (authorization server) αντιμετώπισε μια απροσδόκητη συνθήκη που τον απέτρεψε να ικανοποιήσει το αίτημα. - temporarily_unavailable: Ο εξυπηρετητής έγκρισης (authorization server) προς το παρόν δεν είναι διαθέσιμος να αναλάβει το αίτημα λόγω προσωρινής υπερφόρτωσης ή συντήρησής του. + server_error: Ο εξυπηρετητής έγκρισης αντιμετώπισε μια απροσδόκητη συνθήκη που τον απέτρεψε να ικανοποιήσει το αίτημα. + temporarily_unavailable: Ο εξυπηρετητής έγκρισης προς το παρόν δεν είναι δυνατό να αναλάβει το αίτημα λόγω προσωρινής υπερφόρτωσης ή συντήρησής του. unauthorized_client: Ο πελάτης δεν έχει άδεια να εκτελέσει αυτό το αίτημα χρησιμοποιώντας αυτή τη μέθοδο. - unsupported_grant_type: Το είδος άδειας έγκρισης δεν υποστηρίζεται από τον εξυπηρετητή έγκρισης (authorization server). - unsupported_response_type: Ο εξυπηρετητής έγκρισης (authorization server) δεν υποστηρίζει αυτό το είδος απάντησης. + unsupported_grant_type: Το είδος άδειας έγκρισης δεν υποστηρίζεται από τον εξυπηρετητή έγκρισης. + unsupported_response_type: Ο εξυπηρετητής έγκρισης δεν υποστηρίζει αυτό το είδος απάντησης. flash: applications: create: @@ -122,19 +122,20 @@ el: admin/accounts: Διαχείριση λογαριασμών admin/all: Όλες οι λειτουργίες διαχείρησης admin/reports: Διαχείριση αναφορών - all: Πλήρης πρόσβαση στο λογαριασμό σας στο Mastodon + all: Πλήρης πρόσβαση στο λογαριασμό σου στο Mastodon blocks: Αποκλεισμοί bookmarks: Σελιδοδείκτες conversations: Συνομιλίες crypto: Κρυπτογράφηση από άκρο σε άκρο favourites: Αγαπημένα filters: Φίλτρα - follow: Ακολουθείτε, σε Σίγαση και Αποκλεισμοί - follows: Ακολουθείτε + follow: Ακολουθείς, σε Σίγαση και Αποκλεισμοί + follows: Ακολουθείς lists: Λίστες media: Συνημμένα πολυμέσα - mutes: Αποσιωπήσεις + mutes: Σιγάσεις notifications: Ειδοποιήσεις + profile: Το προφίλ σου στο Mastodon push: Άμεσες ειδοποιήσεις reports: Αναφορές search: Αναζήτηση @@ -147,43 +148,45 @@ el: application: title: Απαιτείται έγκριση OAuth scopes: - admin:read: ανάγνωση δεδομένων στον διακομιστή + admin:read: ανάγνωση όλων των δεδομένων στον διακομιστή admin:read:accounts: ανάγνωση ευαίσθητων πληροφοριών όλων των λογαριασμών admin:read:canonical_email_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων email admin:read:domain_allows: ανάγνωση ευαίσθητων πληροφοριών όλων των επιτρεπόμενων τομέων admin:read:domain_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων τομέων admin:read:email_domain_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων τομέων email admin:read:ip_blocks: ανάγνωση ευαίσθητων πληροφοριών όλων των αποκλεισμένων IP - admin:read:reports: ανάγνωση ευαίσθητων πληροφοριών όλων των καταγγελιών και των καταγγελλομένων λογαριασμών - admin:write: αλλαγή δεδομένων στον διακομιστή - admin:write:accounts: εκτέλεση διαχειριστικών ενεργειών σε λογαριασμούς - admin:write:canonical_email_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένα email - admin:write:domain_allows: εκτέλεση ενεργειών διαχείρισης σε επιτρεπτούς τομείς - admin:write:domain_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένους τομείς - admin:write:email_domain_blocks: εκτελέστε ενέργειες διαχείρισης σε αποκλεισμένους τομείς email - admin:write:ip_blocks: εκτέλεση ενεργειών διαχείρισης σε αποκλεισμένες IP - admin:write:reports: εκτέλεση διαχειριστικών ενεργειών σε καταγγελίες + admin:read:reports: ανάγνωση ευαίσθητων πληροφοριών όλων των αναφορών και των αναφερομένων λογαριασμών + admin:write: τροποποίηση όλων των δεδομένων στον διακομιστή + admin:write:accounts: εκτέλεση συντονιστικών ενεργειών σε λογαριασμούς + admin:write:canonical_email_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένα email + admin:write:domain_allows: εκτέλεση ενεργειών συντονισμού σε επιτρεπτούς τομείς + admin:write:domain_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένους τομείς + admin:write:email_domain_blocks: εκτέλεση ενέργειες συντονισμού σε αποκλεισμένους τομείς email + admin:write:ip_blocks: εκτέλεση ενεργειών συντονισμού σε αποκλεισμένες IP + admin:write:reports: εκτέλεση ενεργειών συντονισμού σε αναφορές crypto: χρήση κρυπτογράφησης από άκρο σε άκρο - follow: να αλλάζει τις σχέσεις με λογαριασμούς - push: να λαμβάνει τις ειδοποιήσεις σου - read: να διαβάζει όλα τα στοιχεία του λογαριασμού σου - read:accounts: να βλέπει τα στοιχεία λογαριασμών - read:blocks: να βλέπει τους αποκλεισμένους σου - read:bookmarks: εμφάνιση των σελιδοδεικτών σας - read:favourites: δείτε τα αγαπημένα σας - read:filters: να βλέπει τα φίλτρα σου - read:follows: δές ποιους ακολουθείς - read:lists: δές τις λίστες σου - read:mutes: να βλέπει ποιους αποσιωπείς - read:notifications: να βλέπει τις ειδοποιήσεις σου - read:reports: να βλέπει τις καταγγελίες σου - read:search: να ψάχνει για εσένα + follow: τροποποίηση σχέσεων λογαριασμών + profile: ανάγνωση μόνο των πληροφοριών προφίλ του λογαριασμού σου + push: λήψη των ειδοποιήσεων σου + read: ανάγνωση όλων των στοιχείων του λογαριασμού σου + read:accounts: προβολή πληροφοριών λογαριασμών + read:blocks: προβολή των αποκλεισμών σου + read:bookmarks: προβολή των σελιδοδεικτών σου + read:favourites: προβολή των αγαπημένα σου + read:filters: προβολή των φίλτρων σου + read:follows: προβολή αυτών που ακολουθείς + read:lists: προβολή των λιστών σου + read:mutes: προβολή των σιγάσεων σου + read:notifications: προβολή των ειδοποιήσεων σου + read:reports: προβολή των αναφορών σου + read:search: αναζήτηση εκ μέρους σου read:statuses: να βλέπει όλες τις δημοσιεύσεις σου write: να αλλάζει όλα τα στοιχεία του λογαριασμού σου write:accounts: να αλλάζει το προφίλ σου write:blocks: να μπλοκάρει λογαριασμούς και τομείς write:bookmarks: προσθήκη σελιδοδεικτών write:conversations: σίγαση και διαγραφή συνομιλιών + write:favourites: αγαπημένες αναρτήσεις write:filters: να δημιουργεί φίλτρα write:follows: ακολουθήστε ανθρώπους write:lists: δημιουργία λιστών diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml index 33aecd8c6f..d79c711e60 100644 --- a/config/locales/doorkeeper.kab.yml +++ b/config/locales/doorkeeper.kab.yml @@ -111,9 +111,9 @@ kab: lists: Tibdarin media: Imeddayen n umidya mutes: Yeggugem - notifications: Tilɣa + notifications: Alɣuten profile: Amaɣnu-k Mastodon - push: Tilɣa yettudemmren + push: Alɣuten yettudemmren reports: Ineqqisen search: Nadi statuses: Tisuffaɣ @@ -127,7 +127,7 @@ kab: admin:read: ad iɣeṛ akk isefka ɣef uqeddac admin:write: ẓreg akk isefka γef uqeddac follow: beddel assaγen n umiḍan - push: ṭṭef-d tilγa-ik yettwademren + push: ṭṭef-d alɣuten-ik·im yettwademren read: γeṛ akk isefka n umiḍan-ik read:accounts: ẓer isallen n yimiḍanen read:blocks: ẓer imiḍanen i tesḥebseḍ @@ -136,7 +136,7 @@ kab: read:follows: ẓer imeḍfaṛen-ik read:lists: ẓer tibdarin-ik·im read:mutes: ẓer wid i tesgugmeḍ - read:notifications: ad ẓer tilɣa-inek·inem + read:notifications: ad iẓer alɣuten-inek·inem read:reports: ẓer ineqqisen-ik·im read:search: anadi deg umkan-ik·im read:statuses: ẓer meṛṛa tisuffaɣ @@ -148,4 +148,4 @@ kab: write:follows: ḍfeṛ imdanen write:lists: ad yesnulfu tibdarin write:media: ad yessali ifuyla n umidya - write:notifications: sfeḍ tilɣa-k·m + write:notifications: sfeḍ alɣuten-ik·im diff --git a/config/locales/el.yml b/config/locales/el.yml index 47b2250f0e..e177bf342a 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -5,14 +5,14 @@ el: contact_missing: Δεν έχει οριστεί contact_unavailable: Μη διαθέσιμο hosted_on: Το Mastodon φιλοξενείται στο %{domain} - title: Σχετικά με + title: Σχετικά accounts: follow: Ακολούθησε followers: one: Ακόλουθος other: Ακόλουθοι following: Ακολουθείτε - instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον διακομιστή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για σκοπούς συναλλαγών και δεν πρέπει να ανασταλεί. + instance_actor_flash: Αυτός ο λογαριασμός είναι εικονικός και χρησιμοποιείται για να αντιπροσωπεύει τον ίδιο τον διακομιστή και όχι κάποιον μεμονωμένο χρήστη. Χρησιμοποιείται για σκοπούς ομοσπονδίας και δεν πρέπει να ανασταλεί. last_active: τελευταία ενεργός/ή link_verified_on: Η ιδιοκτησία αυτού του συνδέσμου ελέγχθηκε στις %{date} nothing_here: Δεν υπάρχει τίποτα εδώ! @@ -159,7 +159,7 @@ el: unconfirmed_email: Ανεπιβεβαίωτο email undo_sensitized: Άρση ευαίσθητου undo_silenced: Άρση περιορισμού - undo_suspension: Αναίρεση παύσης + undo_suspension: Αναίρεση αναστολής unsilenced_msg: Επιτυχής άρση περιορισμών λογαριασμού του/της %{username} unsubscribe: Κατάργηση εγγραφής unsuspended_msg: Επιτυχής άρση αναστολής λογαριασμού του/της %{username} @@ -167,7 +167,7 @@ el: view_domain: Προβολή περίληψης τομέα warn: Προειδοποίηση web: Διαδίκτυο - whitelisted: Εγκεκριμένοι για συναλλαγές + whitelisted: Εγκεκριμένοι για ομοσπονδία action_logs: action_types: approve_appeal: Έγκριση Έφεσης @@ -185,7 +185,7 @@ el: create_email_domain_block: Δημουργία Αποκλεισμού Τομέα email create_ip_block: Δημιουργία κανόνα IP create_unavailable_domain: Δημιουργία Μη Διαθέσιμου Τομέα - create_user_role: Δημιουργία ρόλου + create_user_role: Δημιουργία Ρόλου demote_user: Υποβιβασμός Χρήστη destroy_announcement: Διαγραφή Ανακοίνωσης destroy_canonical_email_block: Διαγραφή Αποκλεισμού email @@ -226,6 +226,7 @@ el: update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji update_domain_block: Ενημέρωση Αποκλεισμού Τομέα update_ip_block: Ενημέρωση κανόνα IP + update_report: Ενημέρωση Αναφοράς update_status: Ενημέρωση Ανάρτησης update_user_role: Ενημέρωση ρόλου actions: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 2d10250f68..c93c5edc0e 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -606,7 +606,7 @@ fi: are_you_sure: Oletko varma? assign_to_self: Ota tehtäväksi assigned: Määritetty valvoja - by_target_domain: Ilmoitetun tilin verkkotunnus + by_target_domain: Raportoidun tilin verkkotunnus cancel: Peruuta category: Luokka category_description_html: Syy siihen, miksi tämä tili ja/tai sisältö raportoitiin, mainitaan ilmoitetun tilin kanssa viestiessä @@ -638,13 +638,13 @@ fi: reopen: Avaa raportti uudestaan report: Raportti nro %{id} reported_account: Raportoitu tili - reported_by: Raportoija + reported_by: Raportoinut resolved: Ratkaistut resolved_msg: Raportti onnistuneesti ratkaistu! skip_to_actions: Siirry toimintoihin status: Tila statuses: Raportoitu sisältö - statuses_description_html: Loukkaava sisältö mainitaan ilmoitetun tilin yhteydessä + statuses_description_html: Loukkaava sisältö mainitaan raportoidun tilin yhteydessä summary: action_preambles: delete_html: 'Olet aikeissa poistaa käyttäjän @%{acct} julkaisuja. Tästä seuraa:' diff --git a/config/locales/is.yml b/config/locales/is.yml index 7ac50cd572..a4cc282d1d 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -226,6 +226,7 @@ is: update_custom_emoji: Uppfæra sérsniðið tjáningartákn update_domain_block: Uppfæra útilokun léns update_ip_block: Uppfæra reglu IP-vistfangs + update_report: Uppfæra kæru update_status: Uppfæra færslu update_user_role: Uppfæra hlutverk actions: @@ -638,6 +639,7 @@ is: report: 'Kæra #%{id}' reported_account: Kærður notandaaðgangur reported_by: Kært af + reported_with_application: Kærði með forritinu resolved: Leyst resolved_msg: Það tókst að leysa kæruna! skip_to_actions: Sleppa og fara í aðgerðir diff --git a/config/locales/kab.yml b/config/locales/kab.yml index b2fc9d8477..a094936aaf 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -604,7 +604,7 @@ kab: filters: contexts: account: Imeɣna - notifications: Ilɣa + notifications: Alɣuten thread: Idiwenniyen edit: add_keyword: Rnu awal tasarut diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 3b88dd9528..91872754f5 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -639,6 +639,7 @@ nl: report: 'Rapportage #%{id}' reported_account: Gerapporteerde account reported_by: Gerapporteerd door + reported_with_application: Gerapporteerd met applicatie resolved: Opgelost resolved_msg: Rapportage succesvol opgelost! skip_to_actions: Ga direct naar de maatregelen diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 56b17ab000..a4bd956508 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -243,11 +243,13 @@ ja: warn: 警告付きで隠す form_admin_settings: activity_api_enabled: APIでユーザーアクティビティに関する集計統計を公開する + app_icon: アプリアイコン backups_retention_period: ユーザーアーカイブの保持期間 bootstrap_timeline_accounts: おすすめユーザーに常に表示するアカウント closed_registrations_message: アカウント作成を停止している時のカスタムメッセージ content_cache_retention_period: リモートコンテンツの保存期間 custom_css: カスタムCSS + favicon: ブックマークアイコン mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 peers_api_enabled: 発見したサーバーのリストをAPIで公開する diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index e68355da6a..b4c0e0032b 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -11,14 +11,14 @@ kab: account_migration: acct: Sekcem isem n umseqdac@taγult n umiḍan anida itebγiḍ ad gujjeḍ admin_account_action: - send_email_notification: Amseqdac ad t-id-yewweḍ usefhem γef wayen yeḍran akked umiḍan-is + send_email_notification: Amseqdac ad t-id-yewweḍ usefhem ɣef wayen yeḍran akked umiḍan-is type_html: Fren d acu ara txedmeḍ s %{acct} defaults: autofollow: Imdanen ara ijerrden s usnebgi-inek, ad k-ḍefṛen s wudem awurman bot: Smekti-d wiyaḍ dakken amiḍan-a ixeddem s wudem amezwer tigawin tiwurmanin yernu ur yezmir ara ad yettwaɛass email: Ad n-teṭṭfeḍ imayl i usentem irreversible: Tisuffaɣ i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat - locale: Tutlayt n ugrudem, imaylen d tilγa + locale: Tutlayt n ugrudem, imaylen d walɣuten yettudemren password: Seqdec ma drus 8 n yisekkilen setting_display_media_default: Ffer teywalt yettwacreḍ d tanafrit setting_display_media_hide_all: Ffer yal tikkelt akk taywalt @@ -29,7 +29,7 @@ kab: imports: data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun invite_request: - text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k•m + text: Aya ad aɣ-iɛiwen ad nessenqed tuttra-k·m ip_block: comment: D afrayan. Cfu ɣef wayɣer i terniḍ alugen-a. severities: @@ -112,8 +112,8 @@ kab: theme: Asentel amezwer thumbnail: Tanfult n uqeddac interactions: - must_be_follower: Ssewḥel ilɣa sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im - must_be_following: Ssewḥel ilɣa sɣur wid akked tid ur tettḍafareḍ ara + must_be_follower: Ssewḥel alɣuten sɣur wid akked tid ur yellin ara d imeḍfaren-ik·im + must_be_following: Ssewḥel alɣuten sɣur wid akked tid ur tettḍafareḍ ara must_be_following_dm: Sewḥel iznan usriden sɣur wid akked tid ur tettḍafareḍ ara invite: comment: Awennit diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml index cef58e4601..65647a77db 100644 --- a/config/locales/simple_form.lad.yml +++ b/config/locales/simple_form.lad.yml @@ -241,6 +241,7 @@ lad: bootstrap_timeline_accounts: Rekomenda siempre estos kuentos a muevos utilizadores closed_registrations_message: Mesaj personalizado kuando las enrejistrasyones no estan desponivles custom_css: CSS personalizado + favicon: Ikona de favoritos mascot: Maskota personalizada (legado) media_cache_retention_period: Periodo de retensyon de kashe multimedia peers_api_enabled: Publika lista de sirvidores diskuviertos en la API diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 69f5ca665c..a5cdcfefb4 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -663,6 +663,7 @@ uk: report: 'Скарга #%{id}' reported_account: Обліковий запис порушника reported_by: Відправник скарги + reported_with_application: Повідомлено через застосунок resolved: Вирішено resolved_msg: Скаргу успішно вирішено! skip_to_actions: Перейти до дій From 6e4305de69bb3356d5d0038611052490527d3325 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 22 Jul 2024 04:02:31 -0400 Subject: [PATCH 18/41] Fix spec descriptions around configurable limit values (#31079) --- spec/models/account_spec.rb | 2 +- spec/validators/note_length_validator_spec.rb | 18 +++++++++++++----- spec/validators/reaction_validator_spec.rb | 5 +++-- .../validators/status_length_validator_spec.rb | 18 +++++++++++++----- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 5f918f159a..7153c7466e 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -592,7 +592,7 @@ RSpec.describe Account do expect(results).to eq [match] end - it 'limits by 10 by default' do + it 'limits result count by default value' do stub_const('Account::Search::DEFAULT_LIMIT', 1) 2.times { Fabricate(:account, display_name: 'Display Name') } results = described_class.advanced_search_for('display', account) diff --git a/spec/validators/note_length_validator_spec.rb b/spec/validators/note_length_validator_spec.rb index 66fccad3ec..3bca93a283 100644 --- a/spec/validators/note_length_validator_spec.rb +++ b/spec/validators/note_length_validator_spec.rb @@ -6,7 +6,7 @@ describe NoteLengthValidator do subject { described_class.new(attributes: { note: true }, maximum: 500) } describe '#validate' do - it 'adds an error when text is over 500 characters' do + it 'adds an error when text is over configured character limit' do text = 'a' * 520 account = instance_double(Account, note: text, errors: activemodel_errors) @@ -14,16 +14,16 @@ describe NoteLengthValidator do expect(account.errors).to have_received(:add) end - it 'counts URLs as 23 characters flat' do - text = ('a' * 476) + " http://#{'b' * 30}.com/example" + it 'reduces calculated length of auto-linkable space-separated URLs' do + text = [starting_string, example_link].join(' ') account = instance_double(Account, note: text, errors: activemodel_errors) subject.validate_each(account, 'note', text) expect(account.errors).to_not have_received(:add) end - it 'does not count non-autolinkable URLs as 23 characters flat' do - text = ('a' * 476) + "http://#{'b' * 30}.com/example" + it 'does not reduce calculated length of non-autolinkable URLs' do + text = [starting_string, example_link].join account = instance_double(Account, note: text, errors: activemodel_errors) subject.validate_each(account, 'note', text) @@ -32,6 +32,14 @@ describe NoteLengthValidator do private + def starting_string + 'a' * 476 + end + + def example_link + "http://#{'b' * 30}.com/example" + end + def activemodel_errors instance_double(ActiveModel::Errors, add: nil) end diff --git a/spec/validators/reaction_validator_spec.rb b/spec/validators/reaction_validator_spec.rb index d73104cb69..f99c1cb5f9 100644 --- a/spec/validators/reaction_validator_spec.rb +++ b/spec/validators/reaction_validator_spec.rb @@ -19,8 +19,9 @@ describe ReactionValidator do expect(reaction.errors).to be_empty end - it 'adds error when 8 reactions already exist' do - %w(🐘 ❤️ 🙉 😍 😋 😂 😞 👍).each do |name| + it 'adds error when reaction limit count has already been reached' do + stub_const 'ReactionValidator::LIMIT', 2 + %w(🐘 ❤️).each do |name| announcement.announcement_reactions.create!(name: name, account: Fabricate(:account)) end diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb index ead69dfe21..249b90f490 100644 --- a/spec/validators/status_length_validator_spec.rb +++ b/spec/validators/status_length_validator_spec.rb @@ -42,23 +42,23 @@ describe StatusLengthValidator do expect(status.errors).to have_received(:add) end - it 'counts URLs as 23 characters flat' do - text = ('a' * 476) + " http://#{'b' * 30}.com/example" + it 'reduces calculated length of auto-linkable space-separated URLs' do + text = [starting_string, example_link].join(' ') status = status_double(text: text) subject.validate(status) expect(status.errors).to_not have_received(:add) end - it 'does not count non-autolinkable URLs as 23 characters flat' do - text = ('a' * 476) + "http://#{'b' * 30}.com/example" + it 'does not reduce calculated length of non-autolinkable URLs' do + text = [starting_string, example_link].join status = status_double(text: text) subject.validate(status) expect(status.errors).to have_received(:add) end - it 'does not count overly long URLs as 23 characters flat' do + it 'does not reduce calculated length of count overly long URLs' do text = "http://example.com/valid?#{'#foo?' * 1000}" status = status_double(text: text) subject.validate(status) @@ -84,6 +84,14 @@ describe StatusLengthValidator do private + def starting_string + 'a' * 476 + end + + def example_link + "http://#{'b' * 30}.com/example" + end + def status_double(spoiler_text: '', text: '') instance_double( Status, From ced5e853c7d7c7f2b849d904964ef92e93ad27c8 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 10:56:05 +0200 Subject: [PATCH 19/41] Fix duplicate `orderedItems` in user archive's `outbox.json` (#31099) --- app/lib/activitypub/adapter.rb | 2 +- app/services/backup_service.rb | 6 +++--- spec/lib/activitypub/adapter_spec.rb | 10 +++++----- spec/services/backup_service_spec.rb | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb index 098b6296fb..5b9437eb8d 100644 --- a/app/lib/activitypub/adapter.rb +++ b/app/lib/activitypub/adapter.rb @@ -20,6 +20,6 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base serialized_hash = serialized_hash.select { |k, _| options[:fields].include?(k) } if options[:fields] serialized_hash = self.class.transform_key_casing!(serialized_hash, instance_options) - { '@context' => serialized_context(named_contexts, context_extensions) }.merge(serialized_hash) + { '@context': serialized_context(named_contexts, context_extensions) }.merge(serialized_hash) end end diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb index 1e90184376..133a764873 100644 --- a/app/services/backup_service.rb +++ b/app/services/backup_service.rb @@ -19,8 +19,8 @@ class BackupService < BaseService def build_outbox_json!(file) skeleton = serialize(collection_presenter, ActivityPub::CollectionSerializer) - skeleton['@context'] = full_context - skeleton['orderedItems'] = ['!PLACEHOLDER!'] + skeleton[:@context] = full_context + skeleton[:orderedItems] = ['!PLACEHOLDER!'] skeleton = Oj.dump(skeleton) prepend, append = skeleton.split('"!PLACEHOLDER!"') add_comma = false @@ -33,7 +33,7 @@ class BackupService < BaseService file.write(statuses.map do |status| item = serialize_payload(ActivityPub::ActivityPresenter.from_status(status), ActivityPub::ActivitySerializer) - item.delete('@context') + item.delete(:@context) unless item[:type] == 'Announce' || item[:object][:attachment].blank? item[:object][:attachment].each do |attachment| diff --git a/spec/lib/activitypub/adapter_spec.rb b/spec/lib/activitypub/adapter_spec.rb index 7d8d703ec2..5ecdfe8120 100644 --- a/spec/lib/activitypub/adapter_spec.rb +++ b/spec/lib/activitypub/adapter_spec.rb @@ -59,7 +59,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithBasicContextSerializer } it 'renders a basic @context' do - expect(subject).to include({ '@context' => 'https://www.w3.org/ns/activitystreams' }) + expect(subject).to include({ '@context': 'https://www.w3.org/ns/activitystreams' }) end end @@ -67,7 +67,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNamedContextSerializer } it 'renders a @context with both items' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) end end @@ -75,7 +75,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNestedNamedContextSerializer } it 'renders a @context with both items' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1'] }) end end @@ -83,7 +83,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithContextExtensionSerializer } it 'renders a @context with the extension' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', { 'sensitive' => 'as:sensitive' }] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', { 'sensitive' => 'as:sensitive' }] }) end end @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::Adapter do let(:serializer_class) { TestWithNestedContextExtensionSerializer } it 'renders a @context with both extensions' do - expect(subject).to include({ '@context' => ['https://www.w3.org/ns/activitystreams', { 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'sensitive' => 'as:sensitive' }] }) + expect(subject).to include({ '@context': ['https://www.w3.org/ns/activitystreams', { 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', 'sensitive' => 'as:sensitive' }] }) end end end diff --git a/spec/services/backup_service_spec.rb b/spec/services/backup_service_spec.rb index 145b06e372..878405a0fe 100644 --- a/spec/services/backup_service_spec.rb +++ b/spec/services/backup_service_spec.rb @@ -60,6 +60,7 @@ RSpec.describe BackupService do aggregate_failures do expect(body.scan('@context').count).to eq 1 + expect(body.scan('orderedItems').count).to eq 1 expect(json['@context']).to_not be_nil expect(json['type']).to eq 'OrderedCollection' expect(json['totalItems']).to eq 2 From 80d9bff6df137afc3376f47b62d10a2e3e9456e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:39:37 +0200 Subject: [PATCH 20/41] fix(deps): update dependency immutable to v4.3.7 (#31100) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bd6efa72fe..04e233c3c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9621,9 +9621,9 @@ __metadata: linkType: hard "immutable@npm:^4.0.0, immutable@npm:^4.0.0-rc.1, immutable@npm:^4.3.0": - version: 4.3.6 - resolution: "immutable@npm:4.3.6" - checksum: 10c0/7d0952a768b4fadcee47230ed86dc9505a4517095eceaf5a47e65288571c42400c6e4a2ae21eca4eda957cb7bc50720213135b62cf6a181639111f8acae128c3 + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 10c0/9b099197081b22f6433003e34929da8ecddbbdc1474cdc8aa3b7669dee4adda349c06143de22def36016d1b6de5322b043eccd7a11db1dad2ca85dad4fff5435 languageName: node linkType: hard From 03dea64b794f3e6cd1e03df72578ed0004a4d84c Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 17:45:07 +0200 Subject: [PATCH 21/41] Refactor code for reblogging and favouriting (#31102) --- .../mastodon/actions/interactions.js | 50 +++++++++++++++++++ .../mastodon/containers/status_container.jsx | 28 ++--------- .../containers/notification_container.js | 28 ++--------- .../picture_in_picture/components/footer.jsx | 23 ++------- .../containers/detailed_status_container.js | 28 ++--------- .../mastodon/features/status/index.jsx | 28 ++--------- 6 files changed, 73 insertions(+), 112 deletions(-) diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js index 57f2459c01..9d39b7a57f 100644 --- a/app/javascript/mastodon/actions/interactions.js +++ b/app/javascript/mastodon/actions/interactions.js @@ -1,7 +1,11 @@ +import { boostModal } from 'mastodon/initial_state'; + import api, { getLinks } from '../api'; import { fetchRelationships } from './accounts'; import { importFetchedAccounts, importFetchedStatus } from './importer'; +import { unreblog, reblog } from './interactions_typed'; +import { openModal } from './modal'; export const REBLOGS_EXPAND_REQUEST = 'REBLOGS_EXPAND_REQUEST'; export const REBLOGS_EXPAND_SUCCESS = 'REBLOGS_EXPAND_SUCCESS'; @@ -432,3 +436,49 @@ export function unpinFail(status, error) { skipLoading: true, }; } + +function toggleReblogWithoutConfirmation(status, privacy) { + return (dispatch) => { + if (status.get('reblogged')) { + dispatch(unreblog({ statusId: status.get('id') })); + } else { + dispatch(reblog({ statusId: status.get('id'), privacy })); + } + }; +} + +export function toggleReblog(statusId, skipModal = false) { + return (dispatch, getState) => { + const state = getState(); + let status = state.statuses.get(statusId); + + if (!status) + return; + + // The reblog modal expects a pre-filled account in status + // TODO: fix this by having the reblog modal get a statusId and do the work itself + status = status.set('account', state.accounts.get(status.get('account'))); + + if (boostModal && !skipModal) { + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation } })); + } else { + toggleReblogWithoutConfirmation(status); + } + }; +} + +export function toggleFavourite(statusId) { + return (dispatch, getState) => { + const state = getState(); + const status = state.statuses.get(statusId); + + if (!status) + return; + + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + dispatch(favourite(status)); + } + }; +} diff --git a/app/javascript/mastodon/containers/status_container.jsx b/app/javascript/mastodon/containers/status_container.jsx index e2c0af3533..8e34ace873 100644 --- a/app/javascript/mastodon/containers/status_container.jsx +++ b/app/javascript/mastodon/containers/status_container.jsx @@ -21,11 +21,9 @@ import { initAddFilter, } from '../actions/filters'; import { - reblog, - favourite, + toggleReblog, + toggleFavourite, bookmark, - unreblog, - unfavourite, unbookmark, pin, unpin, @@ -46,7 +44,7 @@ import { undoStatusTranslation, } from '../actions/statuses'; import Status from '../components/status'; -import { boostModal, deleteModal } from '../initial_state'; +import { deleteModal } from '../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../selectors'; const messages = defineMessages({ @@ -94,28 +92,12 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ }); }, - onModalReblog (status, privacy) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - } - }, - onReblog (status, e) { - if ((e && e.shiftKey) || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, onFavourite (status) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'))); }, onBookmark (status) { diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js index 7b7e6e919c..98a3cf8b1e 100644 --- a/app/javascript/mastodon/features/notifications/containers/notification_container.js +++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js @@ -2,17 +2,13 @@ import { connect } from 'react-redux'; import { mentionCompose } from '../../../actions/compose'; import { - reblog, - favourite, - unreblog, - unfavourite, + toggleFavourite, + toggleReblog, } from '../../../actions/interactions'; -import { openModal } from '../../../actions/modal'; import { hideStatus, revealStatus, } from '../../../actions/statuses'; -import { boostModal } from '../../../initial_state'; import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; import Notification from '../components/notification'; @@ -38,28 +34,12 @@ const mapDispatchToProps = dispatch => ({ dispatch(mentionCompose(account)); }, - onModalReblog (status, privacy) { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }, - onReblog (status, e) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } - } + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, onFavourite (status) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'))); }, onToggleHidden (status) { diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx index 8404bf61b7..d5226eb346 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.jsx @@ -15,11 +15,11 @@ import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { replyCompose } from 'mastodon/actions/compose'; -import { reblog, favourite, unreblog, unfavourite } from 'mastodon/actions/interactions'; +import { toggleReblog, toggleFavourite } from 'mastodon/actions/interactions'; import { openModal } from 'mastodon/actions/modal'; import { IconButton } from 'mastodon/components/icon_button'; import { identityContextPropShape, withIdentity } from 'mastodon/identity_context'; -import { me, boostModal } from 'mastodon/initial_state'; +import { me } from 'mastodon/initial_state'; import { makeGetStatus } from 'mastodon/selectors'; import { WithRouterPropTypes } from 'mastodon/utils/react_router'; @@ -104,11 +104,7 @@ class Footer extends ImmutablePureComponent { const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'))); } else { dispatch(openModal({ modalType: 'INTERACTION', @@ -121,23 +117,12 @@ class Footer extends ImmutablePureComponent { } }; - _performReblog = (status, privacy) => { - const { dispatch } = this.props; - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }; - handleReblogClick = e => { const { dispatch, status } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else if ((e && e.shiftKey) || !boostModal) { - this._performReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this._performReblog } })); - } + dispatch(toggleReblog(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', diff --git a/app/javascript/mastodon/features/status/containers/detailed_status_container.js b/app/javascript/mastodon/features/status/containers/detailed_status_container.js index f85c3822d7..f37860d25c 100644 --- a/app/javascript/mastodon/features/status/containers/detailed_status_container.js +++ b/app/javascript/mastodon/features/status/containers/detailed_status_container.js @@ -10,10 +10,8 @@ import { directCompose, } from '../../../actions/compose'; import { - reblog, - favourite, - unreblog, - unfavourite, + toggleReblog, + toggleFavourite, pin, unpin, } from '../../../actions/interactions'; @@ -27,7 +25,7 @@ import { hideStatus, revealStatus, } from '../../../actions/statuses'; -import { boostModal, deleteModal } from '../../../initial_state'; +import { deleteModal } from '../../../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors'; import DetailedStatus from '../components/detailed_status'; @@ -73,28 +71,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }); }, - onModalReblog (status, privacy) { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }, - onReblog (status, e) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } - } + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, onFavourite (status) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'))); }, onPin (status) { diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index b0fbea9e22..e9df3697a2 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -38,12 +38,10 @@ import { unblockDomain, } from '../../actions/domain_blocks'; import { - favourite, - unfavourite, + toggleFavourite, bookmark, unbookmark, - reblog, - unreblog, + toggleReblog, pin, unpin, } from '../../actions/interactions'; @@ -64,7 +62,7 @@ import { import ColumnHeader from '../../components/column_header'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import StatusContainer from '../../containers/status_container'; -import { boostModal, deleteModal } from '../../initial_state'; +import { deleteModal } from '../../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../../selectors'; import Column from '../ui/components/column'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; @@ -244,11 +242,7 @@ class Status extends ImmutablePureComponent { const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'))); } else { dispatch(openModal({ modalType: 'INTERACTION', @@ -298,24 +292,12 @@ class Status extends ImmutablePureComponent { } }; - handleModalReblog = (status, privacy) => { - this.props.dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }; - handleReblogClick = (status, e) => { const { dispatch } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - if ((e && e.shiftKey) || !boostModal) { - this.handleModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.handleModalReblog } })); - } - } + dispatch(toggleReblog(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', From 9cb94271333ccfe488fa84d49e3351f18594e480 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 18:03:58 +0200 Subject: [PATCH 22/41] Refactor CW handling in an action (#31103) --- app/javascript/mastodon/actions/statuses.js | 15 +++++++++++++++ .../mastodon/containers/status_container.jsx | 9 ++------- .../direct_timeline/components/conversation.jsx | 8 ++------ .../containers/notification_container.js | 9 ++------- .../containers/detailed_status_container.js | 9 ++------- 5 files changed, 23 insertions(+), 27 deletions(-) diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 1907d3aa91..26abaf1bcc 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -308,6 +308,21 @@ export function revealStatus(ids) { }; } +export function toggleStatusSpoilers(statusId) { + return (dispatch, getState) => { + const status = getState().statuses.get(statusId); + + if (!status) + return; + + if (status.get('hidden')) { + dispatch(revealStatus(statusId)); + } else { + dispatch(hideStatus(statusId)); + } + }; +} + export function toggleStatusCollapse(id, isCollapsed) { return { type: STATUS_COLLAPSE, diff --git a/app/javascript/mastodon/containers/status_container.jsx b/app/javascript/mastodon/containers/status_container.jsx index 8e34ace873..c803822dc0 100644 --- a/app/javascript/mastodon/containers/status_container.jsx +++ b/app/javascript/mastodon/containers/status_container.jsx @@ -36,8 +36,7 @@ import { muteStatus, unmuteStatus, deleteStatus, - hideStatus, - revealStatus, + toggleStatusSpoilers, toggleStatusCollapse, editStatus, translateStatus, @@ -223,11 +222,7 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ }, onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } + dispatch(toggleStatusSpoilers(status.get('id'))); }, onToggleCollapsed (status, isCollapsed) { diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx index 63dc705e40..326ea3e5ac 100644 --- a/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.jsx @@ -18,7 +18,7 @@ import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import { replyCompose } from 'mastodon/actions/compose'; import { markConversationRead, deleteConversation } from 'mastodon/actions/conversations'; import { openModal } from 'mastodon/actions/modal'; -import { muteStatus, unmuteStatus, revealStatus, hideStatus } from 'mastodon/actions/statuses'; +import { muteStatus, unmuteStatus, toggleStatusSpoilers } from 'mastodon/actions/statuses'; import AttachmentList from 'mastodon/components/attachment_list'; import AvatarComposite from 'mastodon/components/avatar_composite'; import { IconButton } from 'mastodon/components/icon_button'; @@ -138,11 +138,7 @@ export const Conversation = ({ conversation, scrollKey, onMoveUp, onMoveDown }) }, [dispatch, lastStatus]); const handleShowMore = useCallback(() => { - if (lastStatus.get('hidden')) { - dispatch(revealStatus(lastStatus.get('id'))); - } else { - dispatch(hideStatus(lastStatus.get('id'))); - } + dispatch(toggleStatusSpoilers(lastStatus.get('id'))); }, [dispatch, lastStatus]); if (!lastStatus) { diff --git a/app/javascript/mastodon/features/notifications/containers/notification_container.js b/app/javascript/mastodon/features/notifications/containers/notification_container.js index 98a3cf8b1e..d64f2a679c 100644 --- a/app/javascript/mastodon/features/notifications/containers/notification_container.js +++ b/app/javascript/mastodon/features/notifications/containers/notification_container.js @@ -6,8 +6,7 @@ import { toggleReblog, } from '../../../actions/interactions'; import { - hideStatus, - revealStatus, + toggleStatusSpoilers, } from '../../../actions/statuses'; import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; import Notification from '../components/notification'; @@ -43,11 +42,7 @@ const mapDispatchToProps = dispatch => ({ }, onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } + dispatch(toggleStatusSpoilers(status.get('id'))); }, }); diff --git a/app/javascript/mastodon/features/status/containers/detailed_status_container.js b/app/javascript/mastodon/features/status/containers/detailed_status_container.js index f37860d25c..5ab1013700 100644 --- a/app/javascript/mastodon/features/status/containers/detailed_status_container.js +++ b/app/javascript/mastodon/features/status/containers/detailed_status_container.js @@ -22,8 +22,7 @@ import { muteStatus, unmuteStatus, deleteStatus, - hideStatus, - revealStatus, + toggleStatusSpoilers, } from '../../../actions/statuses'; import { deleteModal } from '../../../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors'; @@ -156,11 +155,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }, onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } + dispatch(toggleStatusSpoilers(status.get('id'))); }, }); From 55705d8191f31c1089095956fb4124f7505b4bd7 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 21:30:06 +0200 Subject: [PATCH 23/41] Fix reblogging after refactor (#31105) --- app/javascript/mastodon/actions/interactions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js index 9d39b7a57f..b296a5006a 100644 --- a/app/javascript/mastodon/actions/interactions.js +++ b/app/javascript/mastodon/actions/interactions.js @@ -460,9 +460,9 @@ export function toggleReblog(statusId, skipModal = false) { status = status.set('account', state.accounts.get(status.get('account'))); if (boostModal && !skipModal) { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation } })); + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: (status, privacy) => dispatch(toggleReblogWithoutConfirmation(status, privacy)) } })); } else { - toggleReblogWithoutConfirmation(status); + dispatch(toggleReblogWithoutConfirmation(status)); } }; } From f13a231b3980f76fc5b105ac8e430599df19e956 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 17:45:07 +0200 Subject: [PATCH 24/41] [Glitch] Refactor code for reblogging and favouriting Port 03dea64b794f3e6cd1e03df72578ed0004a4d84c to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/interactions.js | 62 +++++++++++++++++++ .../glitch/containers/status_container.js | 47 ++------------ .../containers/notification_container.js | 30 ++------- .../picture_in_picture/components/footer.jsx | 25 ++------ .../containers/detailed_status_container.js | 30 ++------- .../flavours/glitch/features/status/index.jsx | 47 ++------------ 6 files changed, 89 insertions(+), 152 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/interactions.js b/app/javascript/flavours/glitch/actions/interactions.js index 57f2459c01..6790d3313b 100644 --- a/app/javascript/flavours/glitch/actions/interactions.js +++ b/app/javascript/flavours/glitch/actions/interactions.js @@ -1,7 +1,11 @@ +import { boostModal, favouriteModal } from 'flavours/glitch/initial_state'; + import api, { getLinks } from '../api'; import { fetchRelationships } from './accounts'; import { importFetchedAccounts, importFetchedStatus } from './importer'; +import { unreblog, reblog } from './interactions_typed'; +import { openModal } from './modal'; export const REBLOGS_EXPAND_REQUEST = 'REBLOGS_EXPAND_REQUEST'; export const REBLOGS_EXPAND_SUCCESS = 'REBLOGS_EXPAND_SUCCESS'; @@ -432,3 +436,61 @@ export function unpinFail(status, error) { skipLoading: true, }; } + +function toggleReblogWithoutConfirmation(status, privacy) { + return (dispatch) => { + if (status.get('reblogged')) { + dispatch(unreblog({ statusId: status.get('id') })); + } else { + dispatch(reblog({ statusId: status.get('id'), privacy })); + } + }; +} + +export function toggleReblog(statusId, skipModal = false) { + return (dispatch, getState) => { + const state = getState(); + let status = state.statuses.get(statusId); + + if (!status) + return; + + // The reblog modal expects a pre-filled account in status + // TODO: fix this by having the reblog modal get a statusId and do the work itself + status = status.set('account', state.accounts.get(status.get('account'))); + + const missing_description_setting = state.getIn(['local_settings', 'confirm_boost_missing_media_description']); + const missing_description = status.get('media_attachments').some(item => !item.get('description')); + if (missing_description_setting && missing_description && !status.get('reblogged')) { + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation, missingMediaDescription: true } })); + } else if (boostModal && !skipModal) { + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation } })); + } else { + toggleReblogWithoutConfirmation(status); + } + }; +} + +export function toggleFavourite(statusId, skipModal = false) { + return (dispatch, getState) => { + const state = getState(); + let status = state.statuses.get(statusId); + + if (!status) + return; + + // The favourite modal expects a pre-filled account in status + // TODO: fix this by having the reblog modal get a statusId and do the work itself + status = status.set('account', state.accounts.get(status.get('account'))); + + if (status.get('favourited')) { + dispatch(unfavourite(status)); + } else { + if (favouriteModal && !skipModal) { + dispatch(openModal({ modalType: 'FAVOURITE', modalProps: { status, onFavourite: (status) => dispatch(favourite(status)) } })); + } else { + dispatch(favourite(status)); + } + } + }; +} diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index a05ed5fe4f..aac18eac0d 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -12,11 +12,9 @@ import { initAddFilter, } from 'flavours/glitch/actions/filters'; import { - reblog, - favourite, + toggleReblog, + toggleFavourite, bookmark, - unreblog, - unfavourite, unbookmark, pin, unpin, @@ -37,7 +35,7 @@ import { undoStatusTranslation, } from 'flavours/glitch/actions/statuses'; import Status from 'flavours/glitch/components/status'; -import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/initial_state'; +import { deleteModal } from 'flavours/glitch/initial_state'; import { makeGetStatus, makeGetPictureInPicture } from 'flavours/glitch/selectors'; import { showAlertForError } from '../actions/alerts'; @@ -113,25 +111,8 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ }); }, - onModalReblog (status, privacy) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - } - }, - onReblog (status, e) { - dispatch((_, getState) => { - let state = getState(); - if (state.getIn(['local_settings', 'confirm_boost_missing_media_description']) && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog, missingMediaDescription: true } })); - } else if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } - }); + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, onBookmark (status) { @@ -142,26 +123,8 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ } }, - onModalFavourite (status) { - dispatch(favourite(status)); - }, - onFavourite (status, e) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - if (e.shiftKey || !favouriteModal) { - this.onModalFavourite(status); - } else { - dispatch(openModal({ - modalType: 'FAVOURITE', - modalProps: { - status, - onFavourite: this.onModalFavourite, - }, - })); - } - } + dispatch(toggleFavourite(status.get('id'), e.shiftKey)); }, onPin (status) { diff --git a/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js b/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js index b4df05b828..8ecea4bc73 100644 --- a/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js +++ b/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js @@ -2,13 +2,9 @@ import { connect } from 'react-redux'; import { mentionCompose } from '../../../actions/compose'; import { - reblog, - favourite, - unreblog, - unfavourite, + toggleReblog, + toggleFavourite, } from '../../../actions/interactions'; -import { openModal } from '../../../actions/modal'; -import { boostModal } from '../../../initial_state'; import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors'; import Notification from '../components/notification'; @@ -35,28 +31,12 @@ const mapDispatchToProps = dispatch => ({ dispatch(mentionCompose(account)); }, - onModalReblog (status, privacy) { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }, - onReblog (status, e) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } - } + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, - onFavourite (status) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + onFavourite (status, e) { + dispatch(toggleFavourite(status.get('id'), e.shiftKey)); }, }); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx index 2b27070007..3e26d84069 100644 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx +++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx @@ -15,11 +15,11 @@ import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react'; import StarIcon from '@/material-icons/400-24px/star.svg?react'; import { replyCompose } from 'flavours/glitch/actions/compose'; -import { reblog, favourite, unreblog, unfavourite } from 'flavours/glitch/actions/interactions'; +import { toggleReblog, toggleFavourite } from 'flavours/glitch/actions/interactions'; import { openModal } from 'flavours/glitch/actions/modal'; import { IconButton } from 'flavours/glitch/components/icon_button'; import { identityContextPropShape, withIdentity } from 'flavours/glitch/identity_context'; -import { me, boostModal } from 'flavours/glitch/initial_state'; +import { me } from 'flavours/glitch/initial_state'; import { makeGetStatus } from 'flavours/glitch/selectors'; import { WithRouterPropTypes } from 'flavours/glitch/utils/react_router'; @@ -101,16 +101,12 @@ class Footer extends ImmutablePureComponent { } }; - handleFavouriteClick = () => { + handleFavouriteClick = e => { const { dispatch, status } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + dispatch(toggleFavourite(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', @@ -123,23 +119,12 @@ class Footer extends ImmutablePureComponent { } }; - _performReblog = (status, privacy) => { - const { dispatch } = this.props; - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }; - handleReblogClick = e => { const { dispatch, status } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else if ((e && e.shiftKey) || !boostModal) { - this._performReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this._performReblog } })); - } + dispatch(toggleReblog(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', diff --git a/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js b/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js index 9663f7ca4e..1c9e3ccce1 100644 --- a/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js +++ b/app/javascript/flavours/glitch/features/status/containers/detailed_status_container.js @@ -10,10 +10,8 @@ import { directCompose, } from '../../../actions/compose'; import { - reblog, - favourite, - unreblog, - unfavourite, + toggleReblog, + toggleFavourite, pin, unpin, } from '../../../actions/interactions'; @@ -25,7 +23,7 @@ import { unmuteStatus, deleteStatus, } from '../../../actions/statuses'; -import { boostModal, deleteModal } from '../../../initial_state'; +import { deleteModal } from '../../../initial_state'; import { makeGetStatus } from '../../../selectors'; import DetailedStatus from '../components/detailed_status'; @@ -70,28 +68,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ }); }, - onModalReblog (status, privacy) { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - }, - onReblog (status, e) { - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } })); - } - } + dispatch(toggleReblog(status.get('id'), e.shiftKey)); }, - onFavourite (status) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } + onFavourite (status, e) { + dispatch(toggleFavourite(status.get('id'), e.shiftKey)); }, onPin (status) { diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx index eb965046d1..2fca4b61b6 100644 --- a/app/javascript/flavours/glitch/features/status/index.jsx +++ b/app/javascript/flavours/glitch/features/status/index.jsx @@ -32,12 +32,10 @@ import { directCompose, } from '../../actions/compose'; import { - favourite, - unfavourite, + toggleFavourite, bookmark, unbookmark, - reblog, - unreblog, + toggleReblog, pin, unpin, } from '../../actions/interactions'; @@ -59,7 +57,7 @@ import { import ColumnHeader from '../../components/column_header'; import { textForScreenReader, defaultMediaVisibility } from '../../components/status'; import StatusContainer from '../../containers/status_container'; -import { boostModal, favouriteModal, deleteModal } from '../../initial_state'; +import { deleteModal } from '../../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../../selectors'; import Column from '../ui/components/column'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; @@ -268,30 +266,13 @@ class Status extends ImmutablePureComponent { this.setState({ showMedia: !this.state.showMedia }); }; - handleModalFavourite = (status) => { - this.props.dispatch(favourite(status)); - }; handleFavouriteClick = (status, e) => { const { dispatch } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - if ((e && e.shiftKey) || !favouriteModal) { - this.handleModalFavourite(status); - } else { - dispatch(openModal({ - modalType: 'FAVOURITE', - modalProps: { - status, - onFavourite: this.handleModalFavourite, - }, - })); - } - } + dispatch(toggleFavourite(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', @@ -342,28 +323,12 @@ class Status extends ImmutablePureComponent { } }; - handleModalReblog = (status, privacy) => { - const { dispatch } = this.props; - - if (status.get('reblogged')) { - dispatch(unreblog({ statusId: status.get('id') })); - } else { - dispatch(reblog({ statusId: status.get('id'), visibility: privacy })); - } - }; - handleReblogClick = (status, e) => { - const { settings, dispatch } = this.props; + const { dispatch } = this.props; const { signedIn } = this.props.identity; if (signedIn) { - if (settings.get('confirm_boost_missing_media_description') && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.handleModalReblog, missingMediaDescription: true } })); - } else if ((e && e.shiftKey) || !boostModal) { - this.handleModalReblog(status); - } else { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.handleModalReblog } })); - } + dispatch(toggleReblog(status.get('id'), e && e.shiftKey)); } else { dispatch(openModal({ modalType: 'INTERACTION', From 643b1ef3e97684da49879f9ca7e8781b2f1b3b00 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 18:03:58 +0200 Subject: [PATCH 25/41] [Glitch] Refactor CW handling in an action Port 9cb94271333ccfe488fa84d49e3351f18594e480 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/actions/statuses.js | 15 +++++++++++++++ .../glitch/containers/status_container.js | 9 ++------- .../direct_timeline/components/conversation.jsx | 8 ++------ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js index 054626bda0..2ebe0bf96a 100644 --- a/app/javascript/flavours/glitch/actions/statuses.js +++ b/app/javascript/flavours/glitch/actions/statuses.js @@ -309,6 +309,21 @@ export function revealStatus(ids) { }; } +export function toggleStatusSpoilers(statusId) { + return (dispatch, getState) => { + const status = getState().statuses.get(statusId); + + if (!status) + return; + + if (status.get('hidden')) { + dispatch(revealStatus(statusId)); + } else { + dispatch(hideStatus(statusId)); + } + }; +} + export function toggleStatusCollapse(id, isCollapsed) { return { type: STATUS_COLLAPSE, diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js index aac18eac0d..955adc5fa7 100644 --- a/app/javascript/flavours/glitch/containers/status_container.js +++ b/app/javascript/flavours/glitch/containers/status_container.js @@ -28,8 +28,7 @@ import { muteStatus, unmuteStatus, deleteStatus, - hideStatus, - revealStatus, + toggleStatusSpoilers, editStatus, translateStatus, undoStatusTranslation, @@ -234,11 +233,7 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ }, onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } + dispatch(toggleStatusSpoilers(status.get('id'))); }, deployPictureInPicture (status, type, mediaProps) { diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx index 839de34dd4..2c70f48a37 100644 --- a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx +++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.jsx @@ -18,7 +18,7 @@ import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; import { replyCompose } from 'flavours/glitch/actions/compose'; import { markConversationRead, deleteConversation } from 'flavours/glitch/actions/conversations'; import { openModal } from 'flavours/glitch/actions/modal'; -import { muteStatus, unmuteStatus, revealStatus, hideStatus } from 'flavours/glitch/actions/statuses'; +import { muteStatus, unmuteStatus, toggleStatusSpoilers } from 'flavours/glitch/actions/statuses'; import AttachmentList from 'flavours/glitch/components/attachment_list'; import AvatarComposite from 'flavours/glitch/components/avatar_composite'; import { IconButton } from 'flavours/glitch/components/icon_button'; @@ -156,11 +156,7 @@ export const Conversation = ({ conversation, scrollKey, onMoveUp, onMoveDown }) }, [dispatch, lastStatus]); const handleShowMore = useCallback(() => { - if (lastStatus.get('hidden')) { - dispatch(revealStatus(lastStatus.get('id'))); - } else { - dispatch(hideStatus(lastStatus.get('id'))); - } + dispatch(toggleStatusSpoilers(lastStatus.get('id'))); if (lastStatus.get('spoiler_text')) { setExpanded(!expanded); From cbf25634a9144bb6420fb0350d7ea64bed4f763f Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 22 Jul 2024 21:30:06 +0200 Subject: [PATCH 26/41] [Glitch] Fix reblogging after refactor Port 55705d8191f31c1089095956fb4124f7505b4bd7 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/actions/interactions.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/flavours/glitch/actions/interactions.js b/app/javascript/flavours/glitch/actions/interactions.js index 6790d3313b..43673642f5 100644 --- a/app/javascript/flavours/glitch/actions/interactions.js +++ b/app/javascript/flavours/glitch/actions/interactions.js @@ -462,11 +462,11 @@ export function toggleReblog(statusId, skipModal = false) { const missing_description_setting = state.getIn(['local_settings', 'confirm_boost_missing_media_description']); const missing_description = status.get('media_attachments').some(item => !item.get('description')); if (missing_description_setting && missing_description && !status.get('reblogged')) { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation, missingMediaDescription: true } })); + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: (status, privacy) => dispatch(toggleReblogWithoutConfirmation(status, privacy)), missingMediaDescription: true } })); } else if (boostModal && !skipModal) { - dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation } })); + dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: (status, privacy) => dispatch(toggleReblogWithoutConfirmation(status, privacy)) } })); } else { - toggleReblogWithoutConfirmation(status); + dispatch(toggleReblogWithoutConfirmation(status)); } }; } From af06d74574745deb738e6f526f4d74c31760102d Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 23 Jul 2024 08:20:17 +0200 Subject: [PATCH 27/41] Fix keyboard shortcuts and navigation in grouped notifications (#31076) --- app/javascript/mastodon/actions/accounts.js | 12 +++ app/javascript/mastodon/actions/compose.js | 18 ++++ app/javascript/mastodon/actions/statuses.js | 14 +++ app/javascript/mastodon/components/status.jsx | 15 +-- .../components/notification_group.tsx | 21 ++++- .../notification_group_with_status.tsx | 80 ++++++++++------ .../components/notification_with_status.tsx | 94 +++++++++++++------ 7 files changed, 188 insertions(+), 66 deletions(-) diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index cea915e5f1..9144235195 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -1,3 +1,5 @@ +import { browserHistory } from 'mastodon/components/router'; + import api, { getLinks } from '../api'; import { @@ -676,3 +678,13 @@ export const updateAccount = ({ displayName, note, avatar, header, discoverable, dispatch(importFetchedAccount(response.data)); }); }; + +export const navigateToProfile = (accountId) => { + return (_dispatch, getState) => { + const acct = getState().accounts.getIn([accountId, 'acct']); + + if (acct) { + browserHistory.push(`/@${acct}`); + } + }; +}; diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 4f2ed450dd..aa1c6de20e 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -122,6 +122,18 @@ export function replyCompose(status) { }; } +export function replyComposeById(statusId) { + return (dispatch, getState) => { + const state = getState(); + const status = state.statuses.get(statusId); + + if (status) { + const account = state.accounts.get(status.get('account')); + dispatch(replyCompose(status.set('account', account))); + } + }; +} + export function cancelReplyCompose() { return { type: COMPOSE_REPLY_CANCEL, @@ -154,6 +166,12 @@ export function mentionCompose(account) { }; } +export function mentionComposeById(accountId) { + return (dispatch, getState) => { + dispatch(mentionCompose(getState().accounts.get(accountId))); + }; +} + export function directCompose(account) { return (dispatch, getState) => { dispatch({ diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 26abaf1bcc..340cee8024 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -1,3 +1,5 @@ +import { browserHistory } from 'mastodon/components/router'; + import api from '../api'; import { ensureComposeIsVisible, setComposeToStatus } from './compose'; @@ -363,3 +365,15 @@ export const undoStatusTranslation = (id, pollId) => ({ id, pollId, }); + +export const navigateToStatus = (statusId) => { + return (_dispatch, getState) => { + const state = getState(); + const accountId = state.statuses.getIn([statusId, 'account']); + const acct = state.accounts.getIn([accountId, 'acct']); + + if (acct) { + browserHistory.push(`/@${acct}/${statusId}`); + } + }; +}; diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index fe5f38889b..6e3792d7dc 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -119,6 +119,7 @@ class Status extends ImmutablePureComponent { skipPrepend: PropTypes.bool, avatarSize: PropTypes.number, deployPictureInPicture: PropTypes.func, + unfocusable: PropTypes.bool, pictureInPicture: ImmutablePropTypes.contains({ inUse: PropTypes.bool, available: PropTypes.bool, @@ -355,7 +356,7 @@ class Status extends ImmutablePureComponent { }; render () { - const { intl, hidden, featured, unread, showThread, scrollKey, pictureInPicture, previousId, nextInReplyToId, rootId, skipPrepend, avatarSize = 46 } = this.props; + const { intl, hidden, featured, unfocusable, unread, showThread, scrollKey, pictureInPicture, previousId, nextInReplyToId, rootId, skipPrepend, avatarSize = 46 } = this.props; let { status, account, ...other } = this.props; @@ -381,8 +382,8 @@ class Status extends ImmutablePureComponent { if (hidden) { return ( - -
+ +
{status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} {status.get('content')}
@@ -402,8 +403,8 @@ class Status extends ImmutablePureComponent { }; return ( - -
+ +
: {matchedFilters.join(', ')}. {' '}