From 233f7e6174947c28ee2d388713c0a58ca9ebb21e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 10:38:36 +0100 Subject: [PATCH 001/143] New Crowdin updates (#17628) * New translations en.yml (Swedish) * New translations en.yml (French) * New translations en.yml (French) * New translations en.yml (French) * New translations en.yml (French) * New translations en.yml (French) * New translations en.yml (Turkish) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Latvian) * New translations en.yml (Turkish) * New translations en.yml (Latvian) * New translations simple_form.en.yml (Turkish) * New translations en.yml (Indonesian) * New translations en.yml (Indonesian) * New translations en.yml (Indonesian) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Portuguese) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Portuguese) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Turkish) * New translations en.yml (Italian) * New translations en.json (Spanish, Argentina) * New translations en.yml (Welsh) * New translations simple_form.en.yml (Welsh) * New translations activerecord.en.yml (Welsh) * New translations en.yml (Welsh) * New translations en.json (Welsh) * New translations activerecord.en.yml (Welsh) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Portuguese, Brazilian) * New translations en.json (Portuguese, Brazilian) * New translations en.yml (Finnish) * New translations en.yml (Finnish) * New translations simple_form.en.yml (Portuguese, Brazilian) * New translations en.yml (Finnish) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Kabyle) * New translations en.json (Kabyle) * New translations en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations simple_form.en.yml (Vietnamese) * New translations en.yml (Vietnamese) * New translations en.yml (Indonesian) * New translations en.yml (Chinese Simplified) * New translations en.yml (Standard Moroccan Tamazight) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Spanish, Mexico) * New translations en.yml (Greek) * New translations en.yml (Turkish) * New translations en.yml (Latvian) * New translations en.yml (Catalan) * New translations en.yml (Portuguese) * New translations en.yml (Italian) * New translations en.yml (Russian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Russian) * New translations en.yml (Russian) * New translations en.json (Russian) * New translations en.yml (Kurmanji (Kurdish)) * New translations en.yml (Japanese) * New translations en.yml (Chinese Traditional) * New translations en.yml (Italian) * New translations en.yml (Vietnamese) * New translations en.yml (Galician) * New translations en.yml (Spanish) * New translations en.yml (Thai) * New translations en.yml (French) * New translations en.yml (Thai) * New translations en.yml (Indonesian) * New translations en.yml (Danish) * New translations en.yml (Indonesian) * New translations simple_form.en.yml (Indonesian) * New translations en.yml (German) * New translations en.yml (Thai) * New translations en.yml (Icelandic) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations simple_form.en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Thai) * New translations en.yml (Hungarian) * New translations en.json (Norwegian) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Catalan) * New translations en.json (Slovenian) * New translations en.json (Persian) * New translations en.json (Occitan) * New translations en.json (Arabic) * New translations en.json (Thai) * New translations en.json (Hebrew) * New translations en.json (Greek) * New translations en.json (Dutch) * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Bulgarian) * New translations en.json (Czech) * New translations en.yml (Spanish, Argentina) * New translations en.yml (Spanish, Mexico) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Latvian) * New translations en.json (Indonesian) * New translations en.json (Tamil) * New translations en.json (Spanish, Argentina) * New translations en.json (Spanish, Mexico) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Croatian) * New translations en.json (Kazakh) * New translations en.json (Estonian) * New translations en.json (Hindi) * New translations en.json (Icelandic) * New translations en.json (Malay) * New translations en.json (Telugu) * New translations en.json (Welsh) * New translations en.json (Esperanto) * New translations en.json (Uyghur) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Tatar) * New translations en.json (Malayalam) * New translations en.json (Breton) * New translations en.json (Sinhala) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Galician) * New translations en.json (Basque) * New translations en.json (Polish) * New translations en.json (Finnish) * New translations en.json (Hungarian) * New translations en.json (Armenian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Georgian) * New translations en.json (Korean) * New translations en.json (Lithuanian) * New translations en.json (Macedonian) * New translations en.json (Punjabi) * New translations en.json (Portuguese) * New translations en.json (Vietnamese) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Albanian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Urdu (Pakistan)) * New translations en.json (Cornish) * New translations en.json (Kannada) * New translations en.json (Scottish Gaelic) * New translations en.json (Asturian) * New translations en.json (Serbian (Latin)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Sorani (Kurdish)) * New translations en.json (Corsican) * New translations en.json (Sardinian) * New translations en.json (Sanskrit) * New translations en.json (Ido) * New translations en.json (Taigi) * New translations en.json (Silesian) * New translations en.json (Standard Moroccan Tamazight) * New translations en.json (Catalan) * New translations en.json (French) * New translations en.json (Catalan) * New translations en.json (French) * New translations en.json (Albanian) * New translations en.json (Catalan) * New translations en.yml (Albanian) * New translations en.json (French) * New translations en.json (French) * New translations en.yml (French) * New translations en.json (French) * New translations en.json (French) * New translations en.json (Danish) * New translations en.json (Danish) * New translations en.json (Icelandic) * New translations en.json (Danish) * New translations en.json (Italian) * New translations en.json (Italian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hungarian) * New translations en.json (Ukrainian) * New translations en.json (Kurmanji (Kurdish)) * New translations en.json (Hungarian) * New translations en.json (Greek) * New translations en.json (Finnish) * New translations en.json (Russian) * New translations en.json (Greek) * New translations en.json (Hungarian) * New translations en.json (Finnish) * New translations en.json (Hungarian) * New translations en.json (Finnish) * New translations en.json (Chinese Traditional) * New translations en.json (Finnish) * New translations en.json (Chinese Traditional) * New translations en.yml (Finnish) * New translations en.json (Finnish) * New translations en.json (Chinese Traditional) * New translations en.json (German) * New translations en.json (German) * New translations en.json (Chinese Simplified) * New translations en.yml (Thai) * New translations en.json (Thai) * New translations en.yml (Scottish Gaelic) * New translations en.json (Thai) * New translations en.json (Turkish) * New translations en.json (Scottish Gaelic) * New translations doorkeeper.en.yml (Scottish Gaelic) * New translations activerecord.en.yml (Scottish Gaelic) * New translations devise.en.yml (Scottish Gaelic) * New translations simple_form.en.yml (Thai) * New translations en.json (Spanish) * New translations en.json (Spanish) * New translations en.json (Latvian) * New translations en.json (Latvian) * New translations en.json (Latvian) * New translations en.yml (Swedish) * New translations en.json (Swedish) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Asturian) * New translations en.yml (Asturian) * New translations en.json (Asturian) * New translations activerecord.en.yml (Asturian) * New translations en.json (Asturian) * New translations doorkeeper.en.yml (Asturian) * New translations simple_form.en.yml (Asturian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Simplified) * New translations en.yml (Chinese Simplified) * New translations en.yml (Danish) * New translations en.json (Turkish) * New translations en.json (Turkish) * New translations en.yml (French) * New translations en.yml (French) * New translations en.yml (French) * Run `bundle exec i18n-tasks normalize` * Fix Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/af.json | 4 +- app/javascript/mastodon/locales/ast.json | 26 ++-- app/javascript/mastodon/locales/ca.json | 80 ++++++------ app/javascript/mastodon/locales/cy.json | 38 +++--- app/javascript/mastodon/locales/da.json | 78 ++++++------ app/javascript/mastodon/locales/de.json | 82 ++++++------ app/javascript/mastodon/locales/el.json | 32 ++--- app/javascript/mastodon/locales/es-AR.json | 2 +- app/javascript/mastodon/locales/es-MX.json | 4 +- app/javascript/mastodon/locales/es.json | 94 +++++++------- app/javascript/mastodon/locales/fi.json | 80 ++++++------ app/javascript/mastodon/locales/fr.json | 78 ++++++------ app/javascript/mastodon/locales/gd.json | 116 ++++++++--------- app/javascript/mastodon/locales/hi.json | 2 +- app/javascript/mastodon/locales/hu.json | 80 ++++++------ app/javascript/mastodon/locales/is.json | 80 ++++++------ app/javascript/mastodon/locales/it.json | 78 ++++++------ app/javascript/mastodon/locales/ja.json | 2 +- app/javascript/mastodon/locales/kab.json | 2 +- app/javascript/mastodon/locales/kmr.json | 80 ++++++------ app/javascript/mastodon/locales/kn.json | 4 +- app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/lt.json | 4 +- app/javascript/mastodon/locales/lv.json | 80 ++++++------ app/javascript/mastodon/locales/mr.json | 4 +- app/javascript/mastodon/locales/pa.json | 4 +- app/javascript/mastodon/locales/pt-BR.json | 20 +-- app/javascript/mastodon/locales/ru.json | 24 ++-- app/javascript/mastodon/locales/sa.json | 4 +- app/javascript/mastodon/locales/sl.json | 4 +- app/javascript/mastodon/locales/sq.json | 80 ++++++------ app/javascript/mastodon/locales/sv.json | 34 ++--- app/javascript/mastodon/locales/szl.json | 4 +- app/javascript/mastodon/locales/tai.json | 4 +- app/javascript/mastodon/locales/th.json | 34 ++--- app/javascript/mastodon/locales/tr.json | 80 ++++++------ app/javascript/mastodon/locales/tt.json | 2 +- app/javascript/mastodon/locales/ug.json | 4 +- app/javascript/mastodon/locales/uk.json | 22 ++-- app/javascript/mastodon/locales/ur.json | 4 +- app/javascript/mastodon/locales/zgh.json | 2 +- app/javascript/mastodon/locales/zh-CN.json | 80 ++++++------ app/javascript/mastodon/locales/zh-TW.json | 80 ++++++------ config/locales/activerecord.ast.yml | 15 ++- config/locales/activerecord.cy.yml | 15 +++ config/locales/ar.yml | 3 - config/locales/ast.yml | 50 +++++++- config/locales/br.yml | 1 - config/locales/ca.yml | 51 ++++++-- config/locales/co.yml | 3 - config/locales/cs.yml | 13 -- config/locales/cy.yml | 9 +- config/locales/da.yml | 53 +++++--- config/locales/de.yml | 79 ++++++++++-- config/locales/doorkeeper.ast.yml | 4 + config/locales/el.yml | 13 +- config/locales/eo.yml | 3 - config/locales/es-AR.yml | 51 ++++++-- config/locales/es-MX.yml | 79 ++++++++++-- config/locales/es.yml | 61 ++++++--- config/locales/et.yml | 3 - config/locales/eu.yml | 13 -- config/locales/fa.yml | 3 - config/locales/fi.yml | 140 ++++++++++++++++++--- config/locales/fr.yml | 99 +++++++++------ config/locales/gd.yml | 51 ++++++-- config/locales/gl.yml | 51 ++++++-- config/locales/he.yml | 3 + config/locales/hu.yml | 51 ++++++-- config/locales/hy.yml | 3 - config/locales/id.yml | 49 ++++++-- config/locales/is.yml | 51 ++++++-- config/locales/it.yml | 52 ++++++-- config/locales/ja.yml | 53 +++++--- config/locales/ka.yml | 1 - config/locales/kab.yml | 4 +- config/locales/kk.yml | 2 - config/locales/kmr.yml | 51 ++++++-- config/locales/ko.yml | 21 ++-- config/locales/ku.yml | 3 - config/locales/lt.yml | 1 - config/locales/lv.yml | 53 ++++++-- config/locales/ms.yml | 3 - config/locales/nl.yml | 3 - config/locales/nn.yml | 3 - config/locales/no.yml | 3 - config/locales/oc.yml | 3 - config/locales/pl.yml | 33 +++-- config/locales/pt-BR.yml | 17 +-- config/locales/pt-PT.yml | 51 ++++++-- config/locales/ru.yml | 21 ++-- config/locales/sc.yml | 3 - config/locales/simple_form.ar.yml | 1 - config/locales/simple_form.ast.yml | 2 + config/locales/simple_form.ca.yml | 2 +- config/locales/simple_form.co.yml | 1 - config/locales/simple_form.cs.yml | 1 - config/locales/simple_form.cy.yml | 2 +- config/locales/simple_form.da.yml | 2 +- config/locales/simple_form.de.yml | 2 +- config/locales/simple_form.el.yml | 1 - config/locales/simple_form.es-AR.yml | 2 +- config/locales/simple_form.es-MX.yml | 8 +- config/locales/simple_form.es.yml | 2 +- config/locales/simple_form.et.yml | 1 - config/locales/simple_form.eu.yml | 1 - config/locales/simple_form.fa.yml | 1 - config/locales/simple_form.fi.yml | 2 +- config/locales/simple_form.fr.yml | 2 +- config/locales/simple_form.gd.yml | 1 - config/locales/simple_form.gl.yml | 2 +- config/locales/simple_form.hu.yml | 2 +- config/locales/simple_form.hy.yml | 1 - config/locales/simple_form.id.yml | 2 +- config/locales/simple_form.is.yml | 2 +- config/locales/simple_form.it.yml | 2 +- config/locales/simple_form.ja.yml | 1 - config/locales/simple_form.kmr.yml | 2 +- config/locales/simple_form.ko.yml | 19 ++- config/locales/simple_form.ku.yml | 1 - config/locales/simple_form.lv.yml | 2 +- config/locales/simple_form.nl.yml | 1 - config/locales/simple_form.nn.yml | 1 - config/locales/simple_form.no.yml | 1 - config/locales/simple_form.oc.yml | 1 - config/locales/simple_form.pl.yml | 2 +- config/locales/simple_form.pt-BR.yml | 6 +- config/locales/simple_form.pt-PT.yml | 2 +- config/locales/simple_form.ro.yml | 1 - config/locales/simple_form.ru.yml | 2 +- config/locales/simple_form.sc.yml | 1 - config/locales/simple_form.sl.yml | 2 + config/locales/simple_form.sq.yml | 2 +- config/locales/simple_form.ta.yml | 1 - config/locales/simple_form.th.yml | 3 +- config/locales/simple_form.tr.yml | 2 +- config/locales/simple_form.uk.yml | 1 - config/locales/simple_form.vi.yml | 2 +- config/locales/simple_form.zh-CN.yml | 2 +- config/locales/simple_form.zh-HK.yml | 1 - config/locales/simple_form.zh-TW.yml | 2 +- config/locales/sk.yml | 3 - config/locales/sl.yml | 7 +- config/locales/sq.yml | 31 +++-- config/locales/sr-Latn.yml | 1 - config/locales/sr.yml | 1 - config/locales/sv.yml | 8 +- config/locales/ta.yml | 3 - config/locales/th.yml | 49 ++++++-- config/locales/tr.yml | 52 ++++++-- config/locales/uk.yml | 13 -- config/locales/vi.yml | 49 ++++++-- config/locales/zgh.yml | 3 + config/locales/zh-CN.yml | 41 ++++-- config/locales/zh-HK.yml | 3 - config/locales/zh-TW.yml | 49 ++++++-- 156 files changed, 2077 insertions(+), 1361 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index dbde323ba..a7e5313a3 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index b104f0e6b..0627f57e1 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -153,7 +153,7 @@ "emoji_button.nature": "Natura", "emoji_button.not_found": "¡Nun hai fustaxes! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Oxetos", - "emoji_button.people": "Xente", + "emoji_button.people": "Persones", "emoji_button.recent": "Úsase davezu", "emoji_button.search": "Guetar…", "emoji_button.search_results": "Search results", @@ -334,7 +334,7 @@ "notifications.column_settings.show": "Amosar en columna", "notifications.column_settings.sound": "Reproducir un soníu", "notifications.column_settings.status": "New toots:", - "notifications.column_settings.unread_notifications.category": "Unread notifications", + "notifications.column_settings.unread_notifications.category": "Avisos ensin lleer", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Too", @@ -362,7 +362,7 @@ "poll.voted": "You voted for this answer", "poll.votes": "{votes, plural, one {# vote} other {# votes}}", "poll_button.add_poll": "Amestar una encuesta", - "poll_button.remove_poll": "Desaniciar la encuesta", + "poll_button.remove_poll": "Quitar la encuesta", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -375,16 +375,16 @@ "refresh": "Refresh", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tamos tresnando'l feed d'Aniciu!", - "relative_time.days": "{number}d", + "relative_time.days": "{number} d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "puramente agora", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", - "relative_time.hours": "{number}h", + "relative_time.hours": "{number} h", "relative_time.just_now": "agora", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", + "relative_time.minutes": "{number} m", + "relative_time.seconds": "{number} s", "relative_time.today": "güei", "reply_indicator.cancel": "Encaboxar", "report.block": "Block", @@ -399,7 +399,7 @@ "report.close": "Done", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Forward to {target}", - "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", + "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar ellí tamién una copia anónima del informe?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", @@ -504,9 +504,9 @@ "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.trending_now": "Trending now", "ui.beforeunload": "El borrador va perdese si coles de Mastodon.", - "units.short.billion": "{count}B", - "units.short.million": "{count}M", - "units.short.thousand": "{count}K", + "units.short.billion": "{count} B", + "units.short.million": "{count} M", + "units.short.thousand": "{count} K", "upload_area.title": "Arrastra y suelta pa xubir", "upload_button.label": "Add images, a video or an audio file", "upload_error.limit": "File upload limit exceeded.", @@ -519,7 +519,7 @@ "upload_form.video_description": "Descripción pa persones con perda auditiva o discapacidá visual", "upload_modal.analyzing_picture": "Analizando la semeya…", "upload_modal.apply": "Aplicar", - "upload_modal.applying": "Applying…", + "upload_modal.applying": "Aplicando…", "upload_modal.choose_image": "Choose image", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Detectar el testu de la semeya", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 1859eed88..915278f95 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -167,7 +167,7 @@ "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!", "empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.", "empty_column.domain_blocks": "Encara no hi ha dominis ocults.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Verifica-ho més tard!", "empty_column.favourited_statuses": "Encara no has marcat com a favorit cap tut. Quan en facis, apareixerà aquí.", "empty_column.favourites": "Ningú no ha marcat aquest tut com a preferit encara. Quan algú ho faci, apareixerà aquí.", "empty_column.follow_recommendations": "Sembla que no es poden generar sugerencies per a tu. Pots provar d'emprar la cerca per a trobar gent que voldries conèixer o explorar les etiquetes en tendència.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Prova de desactivar-les i refrescant la pàgina. Si això no ajuda, encara pots ser capaç d’utilitzar Mastodon amb un altre navegador o aplicació nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls", "errors.unexpected_crash.report_issue": "Informa d'un problema", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Resultats de la cerca", + "explore.suggested_follows": "Per a tu", + "explore.title": "Explora", + "explore.trending_links": "Notícies", + "explore.trending_statuses": "Publicacions", + "explore.trending_tags": "Etiquetes", "follow_recommendations.done": "Fet", "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure els seus tuts! Aquí hi ha algunes recomanacions.", "follow_recommendations.lead": "Els tuts del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} s'ha registrat", "notification.favourite": "{name} ha afavorit el teu estat", "notification.follow": "{name} et segueix", "notification.follow_request": "{name} ha sol·licitat seguir-te", @@ -319,7 +319,7 @@ "notification.update": "{name} ha editat una publicació", "notifications.clear": "Netejar notificacions", "notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nous registres:", "notifications.column_settings.alert": "Notificacions d'escriptori", "notifications.column_settings.favourite": "Preferits:", "notifications.column_settings.filter_bar.advanced": "Mostra totes les categories", @@ -387,43 +387,43 @@ "relative_time.seconds": "fa {number} segons", "relative_time.today": "avui", "reply_indicator.cancel": "Cancel·lar", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Bloqueja", + "report.block_explanation": "No veuràs les seves publicacions. Ell no podran veure les teves publicacions ni seguir-te. Ell podran dir que estan bloquejats.", "report.categories.other": "Altres", "report.categories.spam": "Contingut brossa", "report.categories.violation": "El contingut viola una o més regles del servidor", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Tria la millor combinació", + "report.category.title": "Digue'ns què està passant amb aquest {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicació", + "report.close": "Fet", + "report.comment.title": "Hi ha res més que penses hauriem de saber?", "report.forward": "Reenvia a {target}", "report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Silencia", + "report.mute_explanation": "No veuràs les seves publicacions. Ells encara poden seguir-te i veure les teves publicacions però no sabran que han estat silenciats.", + "report.next": "Següent", "report.placeholder": "Comentaris addicionals", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "No m'agrada", + "report.reasons.dislike_description": "Això no és quelcom que vulguis veure", + "report.reasons.other": "Això és una altre cosa", + "report.reasons.other_description": "El problema no encaixa en altres categories", + "report.reasons.spam": "Això és brossa", + "report.reasons.spam_description": "Enllaços maliciosos, compromís falç o respostes repetitives", + "report.reasons.violation": "Viola les regles del servidor", + "report.reasons.violation_description": "Ets conscient que trenca regles especifiques", + "report.rules.subtitle": "Selecciona totes les aplicables", + "report.rules.title": "Quines regles han estat violades?", + "report.statuses.subtitle": "Selecciona tots els aplicables", + "report.statuses.title": "Hi ha alguna publicació que recolzi aquest informe?", "report.submit": "Enviar", "report.target": "Informes {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Aquestes son les teves opcions per a controlar el que veus a Mastodon:", + "report.thanks.take_action_actionable": "Mentre ho revisem, pots pendre mesures contra @{name}:", + "report.thanks.title": "No vols veure això?", + "report.thanks.title_actionable": "Gràcies per informar, ho investigarem.", + "report.unfollow": "Deixar de seguir @{name}", + "report.unfollow_explanation": "Estàs seguint aquest compte. Per a no veure més les seves publicacions en la teva línia de temps Inici, deixa de seguir-lo.", "search.placeholder": "Cercar", "search_popout.search_format": "Format de cerca avançada", "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a preferides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes", "search_popout.tips.user": "usuari", "search_results.accounts": "Gent", - "search_results.all": "All", + "search_results.all": "Tots", "search_results.hashtags": "Etiquetes", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca", "search_results.statuses": "Tuts", "search_results.statuses_fts_disabled": "La cerca de tuts pel seu contingut no està habilitada en aquest servidor Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 621ff4530..ad7316865 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -51,7 +51,7 @@ "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Average", "admin.dashboard.retention.cohort": "Sign-up month", - "admin.dashboard.retention.cohort_size": "New users", + "admin.dashboard.retention.cohort_size": "Defnyddwyr newydd", "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.", "alert.rate_limited.title": "Cyfradd gyfyngedig", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.", @@ -192,7 +192,7 @@ "explore.trending_links": "News", "explore.trending_statuses": "Posts", "explore.trending_tags": "Hashtags", - "follow_recommendations.done": "Done", + "follow_recommendations.done": "Wedi gorffen", "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", "follow_request.authorize": "Caniatau", @@ -259,8 +259,8 @@ "keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio", "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr", "lightbox.close": "Cau", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Cywasgu blwch gweld delwedd", + "lightbox.expand": "Ehangu blwch gweld delwedd", "lightbox.next": "Nesaf", "lightbox.previous": "Blaenorol", "lists.account.add": "Ychwanegwch at restr", @@ -270,10 +270,10 @@ "lists.edit.submit": "Newid teitl", "lists.new.create": "Ychwanegu rhestr", "lists.new.title_placeholder": "Teitl rhestr newydd", - "lists.replies_policy.followed": "Any followed user", - "lists.replies_policy.list": "Members of the list", + "lists.replies_policy.followed": "Unrhyw ddefnyddiwr a ddilynir", + "lists.replies_policy.list": "Aelodau'r rhestr", "lists.replies_policy.none": "Neb", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.title": "Dangos ymatebion i:", "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitemau newydd}}", @@ -315,7 +315,7 @@ "notification.own_poll": "Mae eich pôl wedi diweddu", "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", "notification.reblog": "Hysbysebodd {name} eich tŵt", - "notification.status": "{name} just posted", + "notification.status": "{name} newydd ei bostio", "notification.update": "{name} edited a post", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", @@ -343,17 +343,17 @@ "notifications.filter.follows": "Yn dilyn", "notifications.filter.mentions": "Crybwylliadau", "notifications.filter.polls": "Canlyniadau pleidlais", - "notifications.filter.statuses": "Updates from people you follow", - "notifications.grant_permission": "Grant permission.", + "notifications.filter.statuses": "Diweddariadau gan bobl rydych chi'n eu dilyn", + "notifications.grant_permission": "Caniatáu.", "notifications.group": "{count} o hysbysiadau", - "notifications.mark_as_read": "Mark every notification as read", - "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", - "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", - "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.", + "notifications.mark_as_read": "Marciwch bob hysbysiad fel y'i darllenwyd", + "notifications.permission_denied": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd cais am ganiatâd porwr a wrthodwyd yn flaenorol", + "notifications.permission_denied_alert": "Ni ellir galluogi hysbysiadau bwrdd gwaith, gan fod caniatâd porwr wedi'i wrthod o'r blaen", + "notifications.permission_required": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd na roddwyd y caniatâd gofynnol.", "notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith", - "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", - "notifications_permission_banner.title": "Never miss a thing", - "picture_in_picture.restore": "Put it back", + "notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogi hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithio sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddant wedi'u galluogi.", + "notifications_permission_banner.title": "Peidiwch byth â cholli peth", + "picture_in_picture.restore": "Rhowch ef yn ôl", "poll.closed": "Ar gau", "poll.refresh": "Adnewyddu", "poll.total_people": "{count, plural, one {# berson} other {# o bobl}}", @@ -389,8 +389,8 @@ "reply_indicator.cancel": "Canslo", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.other": "Arall", + "report.categories.spam": "Sbam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index d15bda603..3c7a658a3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -167,7 +167,7 @@ "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", "empty_column.direct": "Du har ingen direkte beskeder endnu. Hvis du sender eller modtager en, bliver den vist hér.", "empty_column.domain_blocks": "Der er ingen skjulte domæner endnu.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Intet nye tendensen pt. Tjek igen senere!", "empty_column.favourited_statuses": "Du har ikke markeret nogle indlæg som favorit. Når du markerer ét, bliver det vist hér.", "empty_column.favourites": "Ingen har markeret indlægget som favorit endnu. Hvis der er nogen der gør, bliver det vist hér.", "empty_column.follow_recommendations": "Det ser ud til, at der ikke kunne blive lavet forslag til dig. Du kan prøve med Søg for at finde personer, du kender, eller udforske hashtags.", @@ -186,11 +186,11 @@ "error.unexpected_crash.next_steps_addons": "Prøv at deaktivere dem og genindlæse siden. Hvis det ikke hjælper, kan Mastodon muligvis stadig bruges via en anden browser eller app.", "errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen", "errors.unexpected_crash.report_issue": "Anmeld problem", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Søgeresultater", + "explore.suggested_follows": "Til dig", + "explore.title": "Udforsk", + "explore.trending_links": "Nyheder", + "explore.trending_statuses": "Indlæg", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Udført", "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} tilmeldte sig", "notification.favourite": "{name} favoriserede dit trut", "notification.follow": "{name} fulgte dig", "notification.follow_request": "{name} har anmodet om at følge dig", @@ -319,7 +319,7 @@ "notification.update": "{name} redigerede et indlæg", "notifications.clear": "Ryd notifikationer", "notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nye tilmeldinger:", "notifications.column_settings.alert": "Skrivebordsnotifikationer", "notifications.column_settings.favourite": "Favoritter:", "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Afbryd", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Blokér", + "report.block_explanation": "Du vil ikke se vedkommendes indlæg, og vedkommende vil ikke kunne se dine eller følge dig. Vedkommende vil være bekendt med blokeringen.", "report.categories.other": "Andre", "report.categories.spam": "Spam", "report.categories.violation": "Indhold overtræder en eller flere serverregler", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Vælg den bedste match", + "report.category.title": "Fortæl os, hvad der foregår med denne {type}", + "report.category.title_account": "profil", + "report.category.title_status": "indlæg", + "report.close": "Udført", + "report.comment.title": "Findes der noget andet, som vi burde vide?", "report.forward": "Videresend til {target}", "report.forward_hint": "Kontoen er fra en anden server. Send en anonymiseret kopi af anmeldelsen dertil også?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Tavsgør", + "report.mute_explanation": "Du vil ikke se vedkommendes indlæg, men vedkommende kan stadig se dine/følge dig. Vedkommende vil ikke være bekendt med tavsgørelsen.", + "report.next": "Næste", "report.placeholder": "Yderligere kommentarer", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Synes ikke om den/dem", + "report.reasons.dislike_description": "Det er ikke noget, man ønsker at se", + "report.reasons.other": "Det er noget andet", + "report.reasons.other_description": "Problemet passer ikke ind i andre kategorier", + "report.reasons.spam": "Det er spam", + "report.reasons.spam_description": "Ondsindede links, falsk engagement eller repetitive svar", + "report.reasons.violation": "Overtræder serverregler", + "report.reasons.violation_description": "Det står klart, at det bryder bestemte regler", + "report.rules.subtitle": "Vælg alle relevante", + "report.rules.title": "Hvilke regler brydes?", + "report.statuses.subtitle": "Vælg alle relevante", + "report.statuses.title": "Er der indlæg, som kan bekræfte denne anmeldelse?", "report.submit": "Indsend", "report.target": "Anmelder {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Her er mulighederne styring af, hvad man ses på Mastodon:", + "report.thanks.take_action_actionable": "Mens dette gennemgås, kan der skrides til handling mod @{name}:", + "report.thanks.title": "Ønsker ikke at se dette?", + "report.thanks.title_actionable": "Tak for anmeldelsen, der vil set nærmere på dette.", + "report.unfollow": "Følg ikke længere @{name}", + "report.unfollow_explanation": "Denne konto følges. For at ophøre medat se vedkommendes indlæg i hjemmefeedet, vælg Følg ikke længere.", "search.placeholder": "Søg", "search_popout.search_format": "Avanceret søgeformat", "search_popout.tips.full_text": "Simpel tekst returnerer trut, du har skrevet, favoriseret, fremhævede eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Simpel tekst returnerer matchende visnings- og brugernavne samt hashtags", "search_popout.tips.user": "bruger", "search_results.accounts": "Personer", - "search_results.all": "All", + "search_results.all": "Alle", "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Ingen resultater for disse søgeord", "search_results.statuses": "Indlæg", "search_results.statuses_fts_disabled": "På denne Mastodon-server er trutsøgning efter deres indhold ikke aktiveret.", "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 30aa53620..46bd3e07e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -167,7 +167,7 @@ "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!", "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.", "empty_column.domain_blocks": "Es sind noch keine Domains versteckt.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder!", "empty_column.favourited_statuses": "Du hast noch keine favorisierten Tröts. Wenn du einen favorisierst, wird er hier erscheinen.", "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.", "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen nach Leuten zu suchen, die du vielleicht kennst oder du kannst angesagte Hashtags erkunden.", @@ -186,11 +186,11 @@ "error.unexpected_crash.next_steps_addons": "Versuche sie zu deaktivieren und lade dann die Seite neu. Wenn das Problem weiterhin besteht, solltest du Mastodon über einen anderen Browser oder eine native App nutzen.", "errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren", "errors.unexpected_crash.report_issue": "Problem melden", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Suchergebnisse", + "explore.suggested_follows": "Für dich", + "explore.title": "Entdecken", + "explore.trending_links": "Nachrichten", + "explore.trending_statuses": "Beiträge", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Fertig", "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} hat sich registriert", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", "notification.follow_request": "{name} möchte dir folgen", @@ -316,10 +316,10 @@ "notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", - "notification.update": "{name} edited a post", + "notification.update": "{name} bearbeitete einen Beitrag", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Neue Anmeldungen:", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", "notifications.column_settings.favourite": "Favorisierungen:", "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", @@ -336,7 +336,7 @@ "notifications.column_settings.status": "Neue Beiträge:", "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", "notifications.column_settings.unread_notifications.highlight": "Ungelesene Benachrichtigungen hervorheben", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Bearbeitungen:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "heute", "reply_indicator.cancel": "Abbrechen", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Blockieren", + "report.block_explanation": "Du wirst die Beiträge von diesem Konto nicht sehen. Das Konto wird nicht in der Lage sein, deine Beiträge zu sehen oder dir zu folgen. Die Person hinter dem Konto wird wissen, dass du das Konto blockiert hast.", "report.categories.other": "Andere", "report.categories.spam": "Spam", "report.categories.violation": "Inhalt verletzt ein oder mehrere Server-Regeln", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Wähle die beste Zugehörigkeit", + "report.category.title": "Sag uns, was mit diesem {type} vor sich geht", + "report.category.title_account": "Profil", + "report.category.title_status": "Beitrag", + "report.close": "Fertig", + "report.comment.title": "Gibt es etwas anderes, was wir wissen sollten?", "report.forward": "An {target} weiterleiten", "report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Stummschalten", + "report.mute_explanation": "Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immernoch folgen und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stumm geschaltet hast.", + "report.next": "Weiter", "report.placeholder": "Zusätzliche Kommentare", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Das gefällt mir nicht", + "report.reasons.dislike_description": "Das ist nicht etwas, was ihr nicht sehen wollt", + "report.reasons.other": "Da ist was anderes", + "report.reasons.other_description": "Das Problem passt nicht in eine der Kategorien", + "report.reasons.spam": "Das ist Spam", + "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten", + "report.reasons.violation": "Es verstößt gegen Serverregeln", + "report.reasons.violation_description": "Du weißt, welche Regeln verletzt werden", + "report.rules.subtitle": "Alles Zutreffende auswählen", + "report.rules.title": "Welche Regeln werden verletzt?", + "report.statuses.subtitle": "Alles Zutreffende auswählen", + "report.statuses.title": "Gibt es Beiträge, die diesen Bericht unterstützen?", "report.submit": "Absenden", "report.target": "{target} melden", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Hier sind deine Optionen, die es dir erlauben zu kontrollieren, was du auf Mastodon sehen möchtest:", + "report.thanks.take_action_actionable": "Während wir dies überprüfen, kannst du gegen @{name} vorgehen:", + "report.thanks.title": "Möchtest du das nicht sehen?", + "report.thanks.title_actionable": "Vielen Dank für die Berichterstattung, wir werden uns damit befassen.", + "report.unfollow": "@{name} entfolgen", + "report.unfollow_explanation": "Du folgst diesem Konto. Um die Beiträge nicht mehr auf deiner Startseite zu sehen, entfolge dem Konto.", "search.placeholder": "Suche", "search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", "search_popout.tips.user": "Nutzer", "search_results.accounts": "Personen", - "search_results.all": "All", + "search_results.all": "Alle", "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden", "search_results.statuses": "Beiträge", "search_results.statuses_fts_disabled": "Die Suche für Beiträge nach ihrem Inhalt ist auf diesem Mastodon-Server deaktiviert.", "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index c3dc136ae..96fe6c609 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -187,11 +187,11 @@ "errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο", "errors.unexpected_crash.report_issue": "Αναφορά προβλήματος", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.suggested_follows": "Για σένα", + "explore.title": "Εξερεύνηση", + "explore.trending_links": "Νέα", + "explore.trending_statuses": "Αναρτήσεις", + "explore.trending_tags": "Ετικέτες", "follow_recommendations.done": "Ολοκληρώθηκε", "follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.", "follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} έχει εγγραφεί", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow_request": "Ο/H {name} ζήτησε να σε παρακολουθεί", @@ -319,7 +319,7 @@ "notification.update": "{name} επεξεργάστηκε μια δημοσίευση", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Νέες εγγραφές:", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", "notifications.column_settings.favourite": "Αγαπημένα:", "notifications.column_settings.filter_bar.advanced": "Εμφάνιση όλων των κατηγοριών", @@ -387,24 +387,24 @@ "relative_time.seconds": "{number}δ", "relative_time.today": "σήμερα", "reply_indicator.cancel": "Άκυρο", - "report.block": "Block", + "report.block": "Αποκλεισμός", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Άλλες", "report.categories.spam": "Ανεπιθύμητα", "report.categories.violation": "Το περιεχόμενο παραβιάζει έναν ή περισσότερους κανόνες διακομιστή", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.title_account": "προφίλ", + "report.category.title_status": "ανάρτηση", + "report.close": "Τέλος", + "report.comment.title": "Υπάρχει κάτι άλλο που νομίζετε ότι θα πρέπει να γνωρίζουμε;", "report.forward": "Προώθηση προς {target}", "report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;", - "report.mute": "Mute", + "report.mute": "Σίγαση", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Επόμενη", "report.placeholder": "Επιπλέον σχόλια", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Δεν μου αρέσει", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", @@ -432,7 +432,7 @@ "search_popout.tips.text": "Απλό κείμενο που επιστρέφει ονόματα και ετικέτες που ταιριάζουν", "search_popout.tips.user": "χρήστης", "search_results.accounts": "Άνθρωποι", - "search_results.all": "All", + "search_results.all": "Όλα", "search_results.hashtags": "Ετικέτες", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Τουτ", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 569496c01..cfda3360f 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -34,7 +34,7 @@ "account.muted": "Silenciado", "account.never_active": "Nunca", "account.posts": "Mensajes", - "account.posts_with_replies": "Mensajes y respuestas", + "account.posts_with_replies": "Mensajes y respuestas públicas", "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento", "account.share": "Compartir el perfil de @{name}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 517e72147..e243bb8d8 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -316,7 +316,7 @@ "notification.poll": "Una encuesta en la que has votado ha terminado", "notification.reblog": "{name} ha retooteado tu estado", "notification.status": "{name} acaba de publicar", - "notification.update": "{name} edited a post", + "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -336,7 +336,7 @@ "notifications.column_settings.status": "Nuevos toots:", "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Ediciones:", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 37cce12ff..5725a0637 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -167,13 +167,13 @@ "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Nada está en tendencia en este momento. ¡Revisa más tarde!", "empty_column.favourited_statuses": "Aún no tienes publicaciones favoritas. Cuando marques una como favorita, aparecerá aquí.", "empty_column.favourites": "Nadie ha marcado esta publicación como favorita. Cuando alguien lo haga, aparecerá aquí.", "empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.", "empty_column.follow_requests": "No tienes ninguna petición de seguidor. Cuando recibas una, se mostrará aquí.", "empty_column.hashtag": "No hay nada en este hashtag aún.", - "empty_column.home": "¡Tu línea temporal está vacía! Sigue a más personas para rellenarla. {suggestions}", + "empty_column.home": "¡Tu línea de tiempo está vacía! Sigue a más personas para rellenarla. {suggestions}", "empty_column.home.suggestions": "Ver algunas sugerencias", "empty_column.list": "No hay nada en esta lista aún. Cuando miembros de esta lista publiquen nuevos estatus, estos aparecerán qui.", "empty_column.lists": "No tienes ninguna lista. cuando crees una, se mostrará aquí.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Intenta deshabilitarlos y recarga la página. Si eso no ayuda, podrías usar Mastodon a través de un navegador web diferente o aplicación nativa.", "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles", "errors.unexpected_crash.report_issue": "Informar de un problema/error", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Resultados de búsqueda", + "explore.suggested_follows": "Para ti", + "explore.title": "Explorar", + "explore.trending_links": "Noticias", + "explore.trending_statuses": "Publicaciones", + "explore.trending_tags": "Etiquetas", "follow_recommendations.done": "Hecho", "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.", "follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!", @@ -235,12 +235,12 @@ "keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.favourite": "añadir a favoritos", "keyboard_shortcuts.favourites": "abrir la lista de favoritos", - "keyboard_shortcuts.federated": "abrir el timeline federado", + "keyboard_shortcuts.federated": "Abrir la línea de tiempo federada", "keyboard_shortcuts.heading": "Keyboard Shortcuts", - "keyboard_shortcuts.home": "abrir el timeline propio", + "keyboard_shortcuts.home": "Abrir línea de tiempo", "keyboard_shortcuts.hotkey": "Tecla caliente", "keyboard_shortcuts.legend": "para mostrar esta leyenda", - "keyboard_shortcuts.local": "abrir el timeline local", + "keyboard_shortcuts.local": "Abrir línea de tiempo local", "keyboard_shortcuts.mention": "para mencionar al autor", "keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados", "keyboard_shortcuts.my_profile": "abrir tu perfil", @@ -287,7 +287,7 @@ "navigation_bar.apps": "Aplicaciones móviles", "navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.bookmarks": "Marcadores", - "navigation_bar.community_timeline": "Historia local", + "navigation_bar.community_timeline": "Línea de tiempo local", "navigation_bar.compose": "Escribir nueva publicación", "navigation_bar.direct": "Mensajes directos", "navigation_bar.discover": "Descubrir", @@ -305,9 +305,9 @@ "navigation_bar.personal": "Personal", "navigation_bar.pins": "Publicaciones fijadas", "navigation_bar.preferences": "Preferencias", - "navigation_bar.public_timeline": "Historia federada", + "navigation_bar.public_timeline": "Línea de tiempo federada", "navigation_bar.security": "Seguridad", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} se registró", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", "notification.follow_request": "{name} ha solicitado seguirte", @@ -319,7 +319,7 @@ "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nuevas inscripciones:", "notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number} s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Bloquear", + "report.block_explanation": "No verás sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán decir que están bloqueados.", "report.categories.other": "Otros", "report.categories.spam": "Spam", "report.categories.violation": "El contenido viola una o más reglas del servidor", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Elige la mejor coincidencia", + "report.category.title": "Cuéntanos lo que está pasando con este {type}", + "report.category.title_account": "perfil", + "report.category.title_status": "publicacion", + "report.close": "Hecho", + "report.comment.title": "¿Hay algo más que creas que deberíamos saber?", "report.forward": "Reenviar a {target}", "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Silenciar", + "report.mute_explanation": "No verás sus publicaciones. Todavía pueden seguirte y ver tus mensajes y no sabrán que están silenciados.", + "report.next": "Siguiente", "report.placeholder": "Comentarios adicionales", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "No me gusta", + "report.reasons.dislike_description": "No es algo que quieras ver", + "report.reasons.other": "Es otra cosa", + "report.reasons.other_description": "El problema no encaja en otras categorías", + "report.reasons.spam": "Es spam", + "report.reasons.spam_description": "Enlaces maliciosos, compromisos falsos o respuestas repetitivas", + "report.reasons.violation": "Viola las reglas del servidor", + "report.reasons.violation_description": "Usted es consciente de que infringe las normas específicas", + "report.rules.subtitle": "Selecciona todos los que aplica", + "report.rules.title": "¿Qué normas se están violando?", + "report.statuses.subtitle": "Selecciona todos los que aplican", + "report.statuses.title": "¿Hay alguna publicación que respalde este informe?", "report.submit": "Publicar", "report.target": "Reportando", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Aquí están tus opciones para controlar lo que ves en Mastodon:", + "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:", + "report.thanks.title": "¿No quieres esto?", + "report.thanks.title_actionable": "Gracias por reportar, estudiaremos esto.", + "report.unfollow": "Dejar de seguir a @{name}", + "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirlas.", "search.placeholder": "Buscar", "search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag", "search_popout.tips.user": "usuario", "search_results.accounts": "Gente", - "search_results.all": "All", + "search_results.all": "Todos", "search_results.hashtags": "Etiquetas", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda", "search_results.statuses": "Publicaciones", "search_results.statuses_fts_disabled": "Buscar publicaciones por su contenido no está disponible en este servidor de Mastodon.", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", @@ -487,7 +487,7 @@ "status.unpin": "Dejar de fijar", "suggestions.dismiss": "Descartar sugerencia", "suggestions.header": "Es posible que te interese…", - "tabs_bar.federated_timeline": "Federado", + "tabs_bar.federated_timeline": "Federada", "tabs_bar.home": "Inicio", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificaciones", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index c5952c41d..eaad6e358 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -167,7 +167,7 @@ "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", "empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.", "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä estetty.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Mikään ei ole nyt trendi. Tarkista myöhemmin!", "empty_column.favourited_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.favourites": "Kukaan ei ole vielä lisännyt tätä viestiä suosikkeihinsa. Kun joku tekee niin, näkyy kyseinen henkilö tässä.", "empty_column.follow_recommendations": "Näyttää siltä, että sinulle ei voi luoda ehdotuksia. Voit yrittää etsiä ihmisiä, jotka saatat tuntea tai tutkia trendaavia aihesanoja.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Yritä poistaa ne käytöstä ja päivittää sivu. Jos se ei auta, voit silti käyttää Mastodonia eri selaimen tai sovelluksen kautta.", "errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle", "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Hakutulokset", + "explore.suggested_follows": "Sinulle", + "explore.title": "Selaa", + "explore.trending_links": "Uutiset", + "explore.trending_statuses": "Viestit", + "explore.trending_tags": "Aihetunnisteet", "follow_recommendations.done": "Valmis", "follow_recommendations.heading": "Seuraa ihmisiä, joilta haluaisit nähdä julkaisuja! Tässä on muutamia ehdotuksia.", "follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Turvallisuus", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} rekisteröitynyt", "notification.favourite": "{name} tykkäsi viestistäsi", "notification.follow": "{name} seurasi sinua", "notification.follow_request": "{name} haluaa seurata sinua", @@ -319,7 +319,7 @@ "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Uudet kirjautumiset:", "notifications.column_settings.alert": "Työpöytäilmoitukset", "notifications.column_settings.favourite": "Tykkäykset:", "notifications.column_settings.filter_bar.advanced": "Näytä kaikki kategoriat", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number} sek", "relative_time.today": "tänään", "reply_indicator.cancel": "Peruuta", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Estä", + "report.block_explanation": "Et näe heidän viestejään. He eivät voi nähdä viestejäsi tai seurata sinua. He voivat kertoa, että heidät on estetty.", "report.categories.other": "Muu", "report.categories.spam": "Roskaposti", "report.categories.violation": "Sisältö rikkoo yhden tai useamman palvelimen sääntöjä", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Valitse paras osuma", + "report.category.title": "Kerro meille mitä tämän {type} kanssa tapahtuu", + "report.category.title_account": "profiili", + "report.category.title_status": "viesti", + "report.close": "Valmis", + "report.comment.title": "Pitäisikö meidän tietää jotain muuta?", "report.forward": "Välitä kohteeseen {target}", "report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Mykistä", + "report.mute_explanation": "Et näe heidän viestejään. He voivat silti seurata sinua ja nähdä viestisi eivätkä tiedä, että heidät on mykistetty.", + "report.next": "Seuraava", "report.placeholder": "Lisäkommentit", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "En pidä siitä", + "report.reasons.dislike_description": "Et halua nähdä sitä", + "report.reasons.other": "Se on jotain muuta", + "report.reasons.other_description": "Ongelma ei sovi muihin kategorioihin", + "report.reasons.spam": "Se on roskapostia", + "report.reasons.spam_description": "Haitalliset linkit, väärennetyt sitoutumiset tai toistuvat vastaukset", + "report.reasons.violation": "Se rikkoo palvelimen sääntöjä", + "report.reasons.violation_description": "Tiedät, että se rikkoo tiettyjä sääntöjä", + "report.rules.subtitle": "Valitse kaikki jotka sopivat", + "report.rules.title": "Mitä sääntöjä rikotaan?", + "report.statuses.subtitle": "Valitse kaikki jotka sopivat", + "report.statuses.title": "Onko olemassa yhtään viestiä, jotka tukevat tätä raporttia?", "report.submit": "Lähetä", "report.target": "Raportoidaan {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Tässä on vaihtoehtosi hallita näkemääsi Mastodonissa:", + "report.thanks.take_action_actionable": "Kun tarkistamme tämän, voit ryhtyä toimiin @{name} vastaan:", + "report.thanks.title": "Etkö halua nähdä tätä?", + "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.", + "report.unfollow": "Lopeta seuraaminen @{name}", + "report.unfollow_explanation": "Seuraat tätä tiliä. Jotta et enää näkisi heidän kirjoituksiaan, lopeta niiden seuraaminen.", "search.placeholder": "Hae", "search_popout.search_format": "Tarkennettu haku", "search_popout.tips.full_text": "Tekstihaku listaa tilapäivitykset, jotka olet kirjoittanut, lisännyt suosikkeihisi, boostannut tai joissa sinut mainitaan, sekä tekstin sisältävät käyttäjänimet, nimimerkit ja hastagit.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Tekstihaku listaa hakua vastaavat nimimerkit, käyttäjänimet ja hastagit", "search_popout.tips.user": "käyttäjä", "search_results.accounts": "Ihmiset", - "search_results.all": "All", + "search_results.all": "Kaikki", "search_results.hashtags": "Aihetunnisteet", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään", "search_results.statuses": "Viestit", "search_results.statuses_fts_disabled": "Viestien haku sisällön perusteella ei ole käytössä tällä Mastodon-palvelimella.", "search_results.total": "{count, number} {count, plural, one {tulos} other {tulokset}}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 786e0b535..f85662775 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -167,7 +167,7 @@ "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !", "empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.", "empty_column.domain_blocks": "Il n’y a aucun domaine bloqué pour le moment.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !", "empty_column.favourited_statuses": "Vous n’avez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.favourites": "Personne n’a encore ajouté ce message à ses favoris. Lorsque quelqu’un le fera, il apparaîtra ici.", "empty_column.follow_recommendations": "Il semble qu’aucune suggestion n’ait pu être générée pour vous. Vous pouvez essayer d’utiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags tendance.", @@ -186,11 +186,11 @@ "error.unexpected_crash.next_steps_addons": "Essayez de les désactiver et de rafraîchir la page. Si cela ne vous aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.", "errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier", "errors.unexpected_crash.report_issue": "Signaler le problème", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Résultats de la recherche", + "explore.suggested_follows": "Pour vous", + "explore.title": "Explorer", + "explore.trending_links": "Actualité", + "explore.trending_statuses": "Messages", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Terminé", "follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} s'est inscrit·e", "notification.favourite": "{name} a ajouté le message à ses favoris", "notification.follow": "{name} vous suit", "notification.follow_request": "{name} a demandé à vous suivre", @@ -319,7 +319,7 @@ "notification.update": "{name} a modifié un message", "notifications.clear": "Effacer les notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nouvelles inscriptions :", "notifications.column_settings.alert": "Notifications du navigateur", "notifications.column_settings.favourite": "Favoris :", "notifications.column_settings.filter_bar.advanced": "Afficher toutes les catégories", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number} s", "relative_time.today": "aujourd’hui", "reply_indicator.cancel": "Annuler", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Bloquer", + "report.block_explanation": "Vous ne verrez plus les messages de ce profil, et il ne pourra ni vous suivre ni voir vos messages. Il pourra savoir qu'il a été bloqué.", "report.categories.other": "Autre", "report.categories.spam": "Spam", "report.categories.violation": "Le contenu enfreint une ou plusieurs règles du serveur", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Sélctionnez ce qui correspond le mieux", + "report.category.title": "Dites-nous ce qu'il se passe avec {type}", + "report.category.title_account": "ce profil", + "report.category.title_status": "ce message", + "report.close": "Terminé", + "report.comment.title": "Y a-t-il autre chose que nous devrions savoir ?", "report.forward": "Transférer à {target}", "report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Masquer", + "report.mute_explanation": "Vous ne verrez plus les messages de ce compte, mais il pourra toujours vous suivre et voir vos messages. Il ne pourra pas savoir qu'il a été masqué.", + "report.next": "Suivant", "report.placeholder": "Commentaires additionnels", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Cela ne me plaît pas", + "report.reasons.dislike_description": "Ce n'est pas quelque chose que vous voulez voir", + "report.reasons.other": "Pour une autre raison", + "report.reasons.other_description": "Le problème ne correspond pas aux autres catégories", + "report.reasons.spam": "C'est du spam", + "report.reasons.spam_description": "Liens malveillants, engagement mensonger ou réponses répétitives", + "report.reasons.violation": "Infraction des règles du serveur", + "report.reasons.violation_description": "Vous savez que des règles précises sont enfreintes", + "report.rules.subtitle": "Sélectionnez toutes les réponses appropriées", + "report.rules.title": "Quelles règles sont enfreintes ?", + "report.statuses.subtitle": "Sélectionnez toutes les réponses appropriées", + "report.statuses.title": "Existe-t-il des messages pour étayer ce rapport ?", "report.submit": "Envoyer", "report.target": "Signalement de {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Voici les possibilités que vous avez pour contrôler ce que vous voyez sur Mastodon :", + "report.thanks.take_action_actionable": "Pendant que nous étudions votre requête, vous pouvez prendre des mesures contre @{name} :", + "report.thanks.title": "Vous ne voulez pas voir cela ?", + "report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.", + "report.unfollow": "Ne plus suivre @{name}", + "report.unfollow_explanation": "Vous suivez ce compte. Désabonnez-vous pour ne plus en voir les messages sur votre fil principal.", "search.placeholder": "Rechercher", "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants", "search_popout.tips.user": "utilisateur·ice", "search_results.accounts": "Comptes", - "search_results.all": "All", + "search_results.all": "Tous les résultats", "search_results.hashtags": "Hashtags", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Aucun résultat avec ces mots-clefs", "search_results.statuses": "Messages", "search_results.statuses_fts_disabled": "La recherche de messages par leur contenu n'est pas activée sur ce serveur Mastodon.", "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index ba3adfcea..35ab5e83e 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -47,8 +47,8 @@ "account.unmute": "Dì-mhùch @{name}", "account.unmute_notifications": "Dì-mhùch na brathan o @{name}", "account_note.placeholder": "Briog airson nòta a chur ris", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha", + "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos", "admin.dashboard.retention.average": "Cuibheasach", "admin.dashboard.retention.cohort": "Mìos a’ chlàraidh", "admin.dashboard.retention.cohort_size": "Cleachdaichean ùra", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh", "compose_form.publish": "Postaich", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Sàbhail na h-atharraichean", "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}", "compose_form.sensitive.marked": "{count, plural, one {Tha comharra ris a’ mheadhan gu bheil e frionasach} two {Tha comharra ris na meadhanan gu bheil iad frionasach} few {Tha comharra ris na meadhanan gu bheil iad frionasach} other {Tha comharra ris na meadhanan gu bheil iad frionasach}}", "compose_form.sensitive.unmarked": "{count, plural, one {Chan eil comharra ris a’ mheadhan gun robh e frionasach} two {Chan eil comharra ris na meadhanan gun robh iad frionasach} few {Chan eil comharra ris na meadhanan gun robh iad frionasach} other {Chan eil comharra ris na meadhanan gun robh iad frionasach}}", @@ -167,7 +167,7 @@ "empty_column.community": "Tha an loidhne-ama ionadail falamh. Sgrìobh rudeigin gu poblach airson toiseach-tòiseachaidh a dhèanamh!", "empty_column.direct": "Chan eil teachdaireachd dhìreach agad fhathast. Nuair a chuireas no a gheibh thu tè, nochdaidh i an-seo.", "empty_column.domain_blocks": "Cha deach àrainn sam bith a bhacadh fhathast.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Chan eil dad a’ treandadh an-dràsta fhèin. Thoir sùil a-rithist an ceann greis!", "empty_column.favourited_statuses": "Chan eil annsachd air post agad fhathast. Nuair a nì thu annsachd de dh’fhear, nochdaidh e an-seo.", "empty_column.favourites": "Chan eil am post seo ’na annsachd aig duine sam bith fhathast. Nuair a nì daoine annsachd dheth, nochdaidh iad an-seo.", "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Feuch an cuir thu à comas iad ’s gun ath-nuadhaich thu an duilleag seo. Mura cuidich sin, dh’fhaoidte gur urrainn dhut Mastodon a chleachdadh fhathast le brabhsair eile no le aplacaid thùsail.", "errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd", "errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Toraidhean an luirg", + "explore.suggested_follows": "Dhut-sa", + "explore.title": "Rùraich", + "explore.trending_links": "Naidheachdan", + "explore.trending_statuses": "Postaichean", + "explore.trending_tags": "Tagaichean hais", "follow_recommendations.done": "Deiseil", "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.", "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air inbhir na dachaighe agad. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.security": "Tèarainteachd", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "Chlàraich {name}", "notification.favourite": "Is annsa le {name} am post agad", "notification.follow": "Tha {name} a’ leantainn ort a-nis", "notification.follow_request": "Dh’iarr {name} leantainn ort", @@ -316,10 +316,10 @@ "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", "notification.status": "Tha {name} air rud a phostadh", - "notification.update": "{name} edited a post", + "notification.update": "Dheasaich {name} post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Clàraidhean ùra:", "notifications.column_settings.alert": "Brathan deasga", "notifications.column_settings.favourite": "Na h-annsachdan:", "notifications.column_settings.filter_bar.advanced": "Seall a h-uile roinn-seòrsa", @@ -336,7 +336,7 @@ "notifications.column_settings.status": "Postaichean ùra:", "notifications.column_settings.unread_notifications.category": "Brathan nach deach a leughadh", "notifications.column_settings.unread_notifications.highlight": "Soillsich na brathan nach deach a leughadh", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Deasachaidhean:", "notifications.filter.all": "Na h-uile", "notifications.filter.boosts": "Brosnachaidhean", "notifications.filter.favourites": "Na h-annsachdan", @@ -376,54 +376,54 @@ "regeneration_indicator.label": "’Ga luchdadh…", "regeneration_indicator.sublabel": "Tha inbhir na dachaigh agad ’ga ullachadh!", "relative_time.days": "{number}l", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{count, plural, one {# latha} two {# latha} few {# làithean} other {# latha}} air ais", + "relative_time.full.hours": "{count, plural, one {# uair a thìde} two {# uair a thìde} few {# uairean a thìde} other {# uair a thìde}} air ais", + "relative_time.full.just_now": "an-dràsta fhèin", + "relative_time.full.minutes": "{count, plural, one {# mhionaid} two {# mhionaid} few {# mionaidean} other {# mionaid}} air ais", + "relative_time.full.seconds": "{count, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air ais", "relative_time.hours": "{number}u", "relative_time.just_now": "an-dràsta", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}d", "relative_time.today": "an-diugh", "reply_indicator.cancel": "Sguir dheth", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.block": "Bac", + "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh leantainn ort. Mothaichidh iad gun deach am bacadh.", + "report.categories.other": "Eile", + "report.categories.spam": "Spama", + "report.categories.violation": "Tha an t-susbaint a’ briseadh riaghailt no dhà an fhrithealaiche", + "report.category.subtitle": "Tagh an roghainn as iomchaidhe", + "report.category.title": "Innis dhuinn dè tha a’ dol leis a’ {type}", + "report.category.title_account": "phròifil", + "report.category.title_status": "phost", + "report.close": "Deiseil", + "report.comment.title": "A bheil rud sam bith eile a bu toigh leat innse dhuinn?", "report.forward": "Sìn air adhart gu {target}", "report.forward_hint": "Chaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Mùch", + "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh leantainn ort fhathast. Cha bhi fios aca gun deach am mùchadh.", + "report.next": "Air adhart", "report.placeholder": "Beachdan a bharrachd", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Cha toigh leam e", + "report.reasons.dislike_description": "Chan eil thu airson seo fhaicinn", + "report.reasons.other": "Adhbhar eile", + "report.reasons.other_description": "Chan eil na roinnean-seòrsa eile iomchaidh dhan chùis", + "report.reasons.spam": "’S e spama a th’ ann", + "report.reasons.spam_description": "Ceanglaichean droch-rùnach, conaltradh fuadain no an dearbh fhreagairt a-rithist ’s a-rithist", + "report.reasons.violation": "Tha e a’ briseadh riaghailtean an fhrithealaiche", + "report.reasons.violation_description": "Mhothaich thu gu bheil e a’ briseadh riaghailtean sònraichte", + "report.rules.subtitle": "Tagh a h-uile gin a tha iomchaidh", + "report.rules.title": "Dè na riaghailtean a tha ’gam briseadh?", + "report.statuses.subtitle": "Tagh a h-uile gin a tha iomchaidh", + "report.statuses.title": "A bheil postaichean sam bith ann a tha ’nam fianais dhan ghearan seo?", "report.submit": "Cuir a-null", "report.target": "A’ gearan mu {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Seo na roghainnean a th’ agad airson stiùireadh na chì thu air Mastodon:", + "report.thanks.take_action_actionable": "Fhad ’s a bhios sinn a’ toirt sùil air, seo nas urrainn dhut dèanamh an aghaidh @{name}:", + "report.thanks.title": "Nach eil thu airson seo fhaicinn?", + "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", + "report.unfollow": "Na lean air @{name} tuilleadh", + "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca air inbhir na dachaigh agad.", "search.placeholder": "Lorg", "search_popout.search_format": "Fòrmat adhartach an luirg", "search_popout.tips.full_text": "Bheir teacsa sìmplidh dhut na postaichean a sgrìobh thu, a tha nan annsachdan dhut, a bhrosnaich thu no san deach iomradh a thoirt ort cho math ri ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Bheir teacsa sìmplidh dhut na h-ainmean-cleachdaiche, ainmean taisbeanaidh agus tagaichean hais a mhaidsicheas", "search_popout.tips.user": "cleachdaiche", "search_results.accounts": "Daoine", - "search_results.all": "All", + "search_results.all": "Na h-uile", "search_results.hashtags": "Tagaichean hais", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Cha do lorg sinn dad dha na h-abairtean-luirg seo", "search_results.statuses": "Postaichean", "search_results.statuses_fts_disabled": "Chan eil lorg phostaichean a-rèir an susbaint an comas air an fhrithealaiche Mastodon seo.", "search_results.total": "{count, number} {count, plural, one {toradh} two {thoradh} few {toraidhean} other {toradh}}", @@ -448,14 +448,14 @@ "status.delete": "Sguab às", "status.detailed_status": "Mion-shealladh a’ chòmhraidh", "status.direct": "Cuir teachdaireachd dhìreach gu @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Deasaich", + "status.edited": "Air a dheasachadh {date}", + "status.edited_x_times": "Chaidh a dheasachadh {count, plural, one {{counter} turas} two {{counter} thuras} few {{counter} tursan} other {{counter} turas}}", "status.embed": "Leabaich", "status.favourite": "Cuir ris na h-annsachdan", "status.filtered": "Criathraichte", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Chruthaich {name} {date} e", + "status.history.edited": "Dheasaich {name} {date} e", "status.load_more": "Luchdaich barrachd dheth", "status.media_hidden": "Meadhanan falaichte", "status.mention": "Thoir iomradh air @{name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 69c0f5398..b5d731ac4 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 3c20ec1be..107b47b73 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -167,7 +167,7 @@ "empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!", "empty_column.direct": "Még nincs egy közvetlen üzeneted sem. Ha küldesz vagy kapsz egyet, itt fog megjelenni.", "empty_column.domain_blocks": "Még nem rejtettél el egyetlen domaint sem.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Jelenleg semmi sem felkapott. Nézz vissza később!", "empty_column.favourited_statuses": "Még nincs egyetlen kedvenc bejegyzésed sem. Ha kedvencnek jelölsz egyet, itt fog megjelenni.", "empty_column.favourites": "Még senki sem jelölte ezt a bejegyzést kedvencnek. Ha valaki mégis megteszi, itt fogjuk mutatni.", "empty_column.follow_recommendations": "Úgy tűnik, neked nem tudunk javaslatokat adni. Próbáld a keresést használni olyanok megtalálására, akiket ismerhetsz, vagy fedezd fel a felkapott hastageket.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Próbáld letiltani őket és frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.", "errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása", "errors.unexpected_crash.report_issue": "Probléma jelentése", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Keresési találatok", + "explore.suggested_follows": "Neked", + "explore.title": "Felfedezés", + "explore.trending_links": "Hírek", + "explore.trending_statuses": "Bejegyzések", + "explore.trending_tags": "Hashtagek", "follow_recommendations.done": "Kész", "follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.", "follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} regisztrált", "notification.favourite": "{name} kedvencnek jelölte a bejegyzésedet", "notification.follow": "{name} követ téged", "notification.follow_request": "{name} követni szeretne téged", @@ -319,7 +319,7 @@ "notification.update": "{name} szerkesztett egy bejegyzést", "notifications.clear": "Értesítések törlése", "notifications.clear_confirmation": "Biztos, hogy véglegesen törölni akarod az összes értesítésed?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Új regisztrálók:", "notifications.column_settings.alert": "Asztali értesítések", "notifications.column_settings.favourite": "Kedvencek:", "notifications.column_settings.filter_bar.advanced": "Minden kategória mutatása", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}mp", "relative_time.today": "ma", "reply_indicator.cancel": "Mégsem", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Letiltás", + "report.block_explanation": "Nem fogod látni a bejegyzéseit. Nem fogja tudni megnézni a bejegyzéseidet és nem követni sem fog tudni. Azt is meg fogja tudni mondani, hogy letiltottad.", "report.categories.other": "Egyéb", "report.categories.spam": "Kéretlen üzenet", "report.categories.violation": "A tartalom a kiszolgáló egy vagy több szabályát sérti", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Válaszd ki a legjobb találatot", + "report.category.title": "Mondd el, hogy mi van ezzel a {type}", + "report.category.title_account": "profillal", + "report.category.title_status": "bejegyzéssel", + "report.close": "Kész", + "report.comment.title": "Van valami, amiről tudnunk kellene?", "report.forward": "Továbbítás: {target}", "report.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldöd a jelentés egy anonimizált másolatát?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Némítás", + "report.mute_explanation": "Nem fogod látni a bejegyzéseit. Továbbra is fog tudni követni, és látni fogja a bejegyzéseidet, és nem fogja tudni, hogy némítottad.", + "report.next": "Következő", "report.placeholder": "További megjegyzések", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Nem tetszik", + "report.reasons.dislike_description": "Ezt nem szeretném látni", + "report.reasons.other": "Valami más", + "report.reasons.other_description": "Az eset nem illik egyik kategóriába sem", + "report.reasons.spam": "Ez kéretlen tartalom", + "report.reasons.spam_description": "Rosszindulatú hivatkozások, hamis interakció vagy ismétlődő válaszok", + "report.reasons.violation": "Sérti a kiszolgáló szabályait", + "report.reasons.violation_description": "Tudod, hogy mely konkrét szabályokat sért meg", + "report.rules.subtitle": "Válaszd ki az összes megfelelőt", + "report.rules.title": "Mely szabályok lettek megsértve?", + "report.statuses.subtitle": "Válaszd ki az összes megfelelőt", + "report.statuses.title": "Vannak olyan bejegyzések, amelyek alátámasztják ezt a jelentést?", "report.submit": "Küldés", "report.target": "{target} jelentése", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Itt vannak a beállítások, melyek szabályozzák, hogy mit látsz a Mastodonon:", + "report.thanks.take_action_actionable": "Míg átnézzük, a következőket tehet @{name} ellen:", + "report.thanks.title": "Nem akarod ezt látni?", + "report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.", + "report.unfollow": "@{name} követésének leállítása", + "report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.", "search.placeholder": "Keresés", "search_popout.search_format": "Speciális keresés", "search_popout.tips.full_text": "Egyszerű szöveg, mely általad írt, kedvencnek jelölt vagy megtolt bejegyzéseket, rólad szóló megemlítéseket, felhasználói neveket, megjelenített neveket, hashtageket ad majd vissza.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Egyszerű szöveg. Illeszkedő megjelenített nevet, felhasználói nevet, hashtageket ad majd vissza", "search_popout.tips.user": "felhasználó", "search_results.accounts": "Emberek", - "search_results.all": "All", + "search_results.all": "Összes", "search_results.hashtags": "Hashtagek", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Nincs találat erre a keresési kifejezésekre", "search_results.statuses": "Bejegyzések", "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.", "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 7b112ad0f..34e539360 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -167,7 +167,7 @@ "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.", "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ekkert er á uppleið í augnablikinu. Athugaðu aftur síðar!", "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", "empty_column.favourites": "Enginn hefur ennþá sett þessa færslu í eftirlæti. Þegar einhver gerir það, mun það birtast hér.", "empty_column.follow_recommendations": "Það lítur út fyrir að ekki hafi verið hægt að útbúa neinar tillögur fyrir þig. Þú getur reynt að leita að fólki sem þú gætir þekkt eða skoðað myllumerki sem eru í umræðunni.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Prófaðu að gera þau óvirk og svo endurlesa síðuna. Ef það hjálpar ekki til, má samt vera að þú getir notað Mastodon í gegnum annan vafra eða forrit.", "errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald", "errors.unexpected_crash.report_issue": "Tilkynna vandamál", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Leitarniðurstöður", + "explore.suggested_follows": "Fyrir þig", + "explore.title": "Kanna", + "explore.trending_links": "Fréttir", + "explore.trending_statuses": "Færslur", + "explore.trending_tags": "Myllumerki", "follow_recommendations.done": "Lokið", "follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.", "follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} skráði sig", "notification.favourite": "{name} setti færslu þína í eftirlæti", "notification.follow": "{name} fylgist með þér", "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", @@ -319,7 +319,7 @@ "notification.update": "{name} breytti færslu", "notifications.clear": "Hreinsa tilkynningar", "notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nýjar skráningar:", "notifications.column_settings.alert": "Tilkynningar á skjáborði", "notifications.column_settings.favourite": "Eftirlæti:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "í dag", "reply_indicator.cancel": "Hætta við", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Útiloka", + "report.block_explanation": "Þú munt ekki sjá færslurnar þeirra. Þeir munu ekki geta séð færslurnar þínar eða fylgst með þér. Þeir munu ekki geta séð að lokað sé á þá.", "report.categories.other": "Annað", "report.categories.spam": "Ruslpóstur", "report.categories.violation": "Efnið brýtur gegn einni eða fleiri reglum netþjónsins", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Veldu hvað samsvarar best", + "report.category.title": "Segðu okkur hvað er í gangi með þetta {type}-atriði", + "report.category.title_account": "notandasnið", + "report.category.title_status": "færsla", + "report.close": "Lokið", + "report.comment.title": "Er eitthvað annað sem þú heldur að við ættum að vita?", "report.forward": "Áframsenda til {target}", "report.forward_hint": "Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Þagga niður", + "report.mute_explanation": "Þú munt ekki sjá færslurnar þeirra. Þeir munu samt geta séð færslurnar þínar eða fylgst með þér, en munu ekki geta séð að þaggað sé niður í þeim.", + "report.next": "Næsta", "report.placeholder": "Viðbótarathugasemdir", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Mér líkar það ekki", + "report.reasons.dislike_description": "Þetta er ekki eitthvað sem þið viljið sjá", + "report.reasons.other": "Það er eitthvað annað", + "report.reasons.other_description": "Vandamálið fellur ekki í aðra flokka", + "report.reasons.spam": "Þetta er ruslpóstur", + "report.reasons.spam_description": "Slæmir tenglar, fölsk samskipti eða endurtekin svör", + "report.reasons.violation": "Það gengur þvert á reglur fyrir netþjóninn", + "report.reasons.violation_description": "Þið eruð meðvituð um að þetta brýtur sértækar reglur", + "report.rules.subtitle": "Veldu allt sem á við", + "report.rules.title": "Hvaða reglur eru brotnar?", + "report.statuses.subtitle": "Veldu allt sem á við", + "report.statuses.title": "Eru einhverjar færslur sem styðja þessa kæru?", "report.submit": "Senda inn", "report.target": "Kæri {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Hér eru nokkrir valkostir til að stýra hvað þú sérð á Mastodon:", + "report.thanks.take_action_actionable": "Á meðan við yfirförum þetta, geturðu tekið til aðgerða gegn @{name}:", + "report.thanks.title": "Viltu ekki sjá þetta?", + "report.thanks.title_actionable": "Takk fyrir tilkynninguna, við munum skoða málið.", + "report.unfollow": "Hætta að fylgjast með @{name}", + "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.", "search.placeholder": "Leita", "search_popout.search_format": "Snið ítarlegrar leitar", "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Einfaldur texti skilar samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum", "search_popout.tips.user": "notandi", "search_results.accounts": "Fólk", - "search_results.all": "All", + "search_results.all": "Allt", "search_results.hashtags": "Myllumerki", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Gat ekki fundið neitt sem samsvarar þessum leitarorðum", "search_results.statuses": "Færslur", "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index e96e43308..5530c5abf 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -167,7 +167,7 @@ "empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!", "empty_column.direct": "Non hai ancora nessun messaggio privato. Quando ne manderai o riceverai qualcuno, apparirà qui.", "empty_column.domain_blocks": "Non vi sono domini nascosti.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Nulla è in tendenza in questo momento. Riprova più tardi!", "empty_column.favourited_statuses": "Non hai ancora segnato nessun post come apprezzato. Quando lo farai, comparirà qui.", "empty_column.favourites": "Nessuno ha ancora segnato questo post come apprezzato. Quando qualcuno lo farà, apparirà qui.", "empty_column.follow_recommendations": "Sembra che nessun suggerimento possa essere generato per te. Puoi provare a usare la ricerca per cercare persone che potresti conoscere o esplorare hashtag di tendenza.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Prova a disabilitarli e ad aggiornare la pagina. Se questo non funziona, potresti ancora essere in grado di utilizzare Mastodon attraverso un browser o un'app diversi.", "errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti", "errors.unexpected_crash.report_issue": "Segnala il problema", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Risultati della ricerca", + "explore.suggested_follows": "Per te", + "explore.title": "Esplora", + "explore.trending_links": "Novità", + "explore.trending_statuses": "Post", + "explore.trending_tags": "Hashtag", "follow_recommendations.done": "Fatto", "follow_recommendations.heading": "Segui le persone da cui vuoi vedere i messaggi! Ecco alcuni suggerimenti.", "follow_recommendations.lead": "I messaggi da persone che segui verranno visualizzati in ordine cronologico nel tuo home feed. Non abbiate paura di commettere errori, potete smettere di seguire le persone altrettanto facilmente in qualsiasi momento!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} si è iscritto", "notification.favourite": "{name} ha apprezzato il tuo post", "notification.follow": "{name} ha iniziato a seguirti", "notification.follow_request": "{name} ti ha mandato una richiesta di follow", @@ -319,7 +319,7 @@ "notification.update": "{name} ha modificato un post", "notifications.clear": "Cancella notifiche", "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nuove iscrizioni:", "notifications.column_settings.alert": "Notifiche desktop", "notifications.column_settings.favourite": "Apprezzati:", "notifications.column_settings.filter_bar.advanced": "Mostra tutte le categorie", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number} secondi", "relative_time.today": "oggi", "reply_indicator.cancel": "Annulla", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Blocca", + "report.block_explanation": "Non vedrai i loro post. Non saranno in grado di vedere i tuoi post o di seguirti. Potranno sapere che sono bloccati.", "report.categories.other": "Altro", "report.categories.spam": "Spam", "report.categories.violation": "Il contenuto viola una o più regole del server", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", + "report.category.subtitle": "Scegli la migliore corrispondenza", + "report.category.title": "Dicci cosa sta succedendo con questo {type}", + "report.category.title_account": "profilo", "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.close": "Fatto", + "report.comment.title": "C'è altro che pensi che dovremmo sapere?", "report.forward": "Inoltra a {target}", "report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Silenzia", + "report.mute_explanation": "Non vedrai i loro post. Potranno ancora seguirti e vedere i tuoi post e non sapranno che sono stati silenziati.", + "report.next": "Successivo", "report.placeholder": "Commenti aggiuntivi", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Non mi piace", + "report.reasons.dislike_description": "Non è qualcosa che vuoi vedere", + "report.reasons.other": "È qualcos'altro", + "report.reasons.other_description": "Il problema non rientra in altre categorie", + "report.reasons.spam": "È spam", + "report.reasons.spam_description": "Collegamenti malevoli, false interazioni, o risposte ripetitive", + "report.reasons.violation": "Viola le regole del server", + "report.reasons.violation_description": "Siete consapevoli che viola regole specifiche", + "report.rules.subtitle": "Seleziona tutte le risposte pertinenti", + "report.rules.title": "Quali regole vengono violate?", + "report.statuses.subtitle": "Seleziona tutte le risposte pertinenti", + "report.statuses.title": "Ci sono post a sostegno di questa segnalazione?", "report.submit": "Invia", "report.target": "Invio la segnalazione {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Ecco le tue opzioni per controllare quello che vedi su Mastodon:", + "report.thanks.take_action_actionable": "Mentre controlliamo, puoi fare questo contro @{name}:", + "report.thanks.title": "Non vuoi vedere questo?", + "report.thanks.title_actionable": "Grazie per la segnalazione, controlleremo il problema.", + "report.unfollow": "Non seguire più @{name}", + "report.unfollow_explanation": "Stai seguendo questo account. Per non vedere più i suoi post nel tuo feed home, smetti di seguirlo.", "search.placeholder": "Cerca", "search_popout.search_format": "Formato di ricerca avanzato", "search_popout.tips.full_text": "Testo semplice per trovare gli status che hai scritto, segnato come apprezzati, condiviso o in cui sei stato citato, e inoltre i nomi utente, nomi visualizzati e hashtag che lo contengono.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Testo semplice per trovare nomi visualizzati, nomi utente e hashtag che lo contengono", "search_popout.tips.user": "utente", "search_results.accounts": "Gente", - "search_results.all": "All", + "search_results.all": "Tutto", "search_results.hashtags": "Hashtag", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Impossibile trovare qualcosa per questi termini di ricerca", "search_results.statuses": "Post", "search_results.statuses_fts_disabled": "La ricerca di post per il loro contenuto non è abilitata su questo server Mastodon.", "search_results.total": "{count} {count, plural, one {risultato} other {risultati}}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index c1418459e..c0a57a309 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -336,7 +336,7 @@ "notifications.column_settings.status": "新しい投稿:", "notifications.column_settings.unread_notifications.category": "未読の通知:", "notifications.column_settings.unread_notifications.highlight": "未読の通知を強調表示", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "編集:", "notifications.filter.all": "すべて", "notifications.filter.boosts": "ブースト", "notifications.filter.favourites": "お気に入り", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 9d5536c6c..0f0880100 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -389,7 +389,7 @@ "reply_indicator.cancel": "Sefsex", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Tiyyaḍ", "report.categories.spam": "Aspam", "report.categories.violation": "Content violates one or more server rules", "report.category.subtitle": "Choose the best match", diff --git a/app/javascript/mastodon/locales/kmr.json b/app/javascript/mastodon/locales/kmr.json index bb8650f03..84c8978a4 100644 --- a/app/javascript/mastodon/locales/kmr.json +++ b/app/javascript/mastodon/locales/kmr.json @@ -167,7 +167,7 @@ "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!", "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.", "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!", "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.", "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.", "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Ne çalak kirin û nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.", "errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire", "errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Encamên lêgerînê", + "explore.suggested_follows": "Ji bo te", + "explore.title": "Vekole", + "explore.trending_links": "Nûçe", + "explore.trending_statuses": "Şandî", + "explore.trending_tags": "Hashtag", "follow_recommendations.done": "Qediya", "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.", "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameyê federalîkirî", "navigation_bar.security": "Ewlehî", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} tomar bû", "notification.favourite": "{name} şandiya te hez kir", "notification.follow": "{name} te şopand", "notification.follow_request": "{name} dixwazê te bişopîne", @@ -319,7 +319,7 @@ "notification.update": "{name} şandiyek serrast kir", "notifications.clear": "Agahdariyan pak bike", "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:", "notifications.column_settings.alert": "Agahdariyên sermaseyê", "notifications.column_settings.favourite": "Bijarte:", "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}ç", "relative_time.today": "îro", "reply_indicator.cancel": "Dev jê berde", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Asteng bike", + "report.block_explanation": "Tu yê şandiyên wan nebînî. Ew ê nikaribin şandiyên te bibînin an jî te bişopînin. Ew ê bizanibin ku ew hatine astengkirin.", "report.categories.other": "Yên din", "report.categories.spam": "Nexwestî (Spam)", "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Baştirîn lihevhatin hilbijêre", + "report.category.title": "Ji me re bêje ka çi diqewime bi vê {type} re", + "report.category.title_account": "profîl", + "report.category.title_status": "şandî", + "report.close": "Qediya", + "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?", "report.forward": "Biçe bo {target}", "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Bêdeng bike", + "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.", + "report.next": "Pêş", "report.placeholder": "Şiroveyên zêde", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Ez jê hez nakim", + "report.reasons.dislike_description": "Ew ne tiştek e ku tu dixwazî bibînî", + "report.reasons.other": "Tiştekî din e", + "report.reasons.other_description": "Pirsgirêk di kategoriyên din de cih nagire", + "report.reasons.spam": "Ew spam e", + "report.reasons.spam_description": "Girêdanên xerab, tevlêbûna sexte, an jî bersivên dubarekirî", + "report.reasons.violation": "Ew rêzikên rajekar binpê dike", + "report.reasons.violation_description": "Tu dizanî ku ew rêzikên taybetiyê binpê dike", + "report.rules.subtitle": "Hemûyên ku têne sepandin hibijêre", + "report.rules.title": "Kîjan rêzik têne binpêkirin?", + "report.statuses.subtitle": "Hemûyên ku têne sepandin hibijêre", + "report.statuses.title": "Tu şandiyên ku vê ragihandinê piştgirî dikin hene?", "report.submit": "Bişîne", "report.target": "Ragihandin {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Li vir vebijêrkên te hene ji bo kontrolkirina tiştê ku tu li se Mastodon dibînî:", + "report.thanks.take_action_actionable": "Dema ku em vê yekê dinirxînin, tu dikarî li dijî @{name} tedbîran bigirî:", + "report.thanks.title": "Tu naxwazî vê bibînî?", + "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.", + "report.unfollow": "@{name} neşopîne", + "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.", "search.placeholder": "Bigere", "search_popout.search_format": "Dirûva lêgerîna pêşketî", "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Nivîsên hêsan, navên xûya ên ku li hev hatî, bikarhêner û hashtagan vedigerîne", "search_popout.tips.user": "bikarhêner", "search_results.accounts": "Mirov", - "search_results.all": "All", + "search_results.all": "Hemû", "search_results.hashtags": "Hashtag", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin", "search_results.statuses": "Şandî", "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.", "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 8e24cc3c5..9da0f8c57 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index e5130b24a..767fd8d46 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -417,7 +417,7 @@ "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", "report.submit": "신고하기", - "report.target": "문제가 된 사용자", + "report.target": "{target} 신고하기", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index c65985894..600f4249e 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index ded8907c0..07d93f563 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -167,7 +167,7 @@ "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!", "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.", "empty_column.favourites": "Neviens šo ziņojumu vel nav izcēlis. Kad būs, tie parādīsies šeit.", "empty_column.follow_recommendations": "Šķiet, ka tev nevarēja ģenerēt ieteikumus. Vari mēģināt izmantot meklēšanu, lai meklētu cilvēkus, kurus tu varētu pazīt, vai izpētīt populārākās atsauces.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Mēģini tos atspējot un atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.", "errors.unexpected_crash.copy_stacktrace": "Iekopēt starpliktuvē", "errors.unexpected_crash.report_issue": "Ziņot par problēmu", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Meklēšanas rezultāti", + "explore.suggested_follows": "Tev", + "explore.title": "Pārlūkot", + "explore.trending_links": "Jaunumi", + "explore.trending_statuses": "Ziņas", + "explore.trending_tags": "Tēmturi", "follow_recommendations.done": "Izpildīts", "follow_recommendations.heading": "Seko cilvēkiem, no kuriem vēlies redzēt ziņas! Šeit ir daži ieteikumi.", "follow_recommendations.lead": "Ziņas no cilvēkiem, kuriem seko, mājas plūsmā tiks parādītas hronoloģiskā secībā. Nebaidies kļūdīties, tu tikpat viegli vari pārtraukt sekot cilvēkiem jebkurā laikā!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā ziņu lenta", "navigation_bar.security": "Drošība", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} ir pierakstījies", "notification.favourite": "{name} izcēla tavu ziņu", "notification.follow": "{name} uzsāka tev sekot", "notification.follow_request": "{name} vēlas tev sekot", @@ -319,7 +319,7 @@ "notification.update": "{name} ir rediģējis rakstu", "notifications.clear": "Notīrīt paziņojumus", "notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:", "notifications.column_settings.alert": "Darbvirsmas paziņojumi", "notifications.column_settings.favourite": "Izlases:", "notifications.column_settings.filter_bar.advanced": "Rādīt visas kategorijas", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "šodien", "reply_indicator.cancel": "Atcelt", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Bloķēt", + "report.block_explanation": "Tu neredzēsi viņu ziņas. Viņi nevarēs redzēt tavas ziņas vai sekot tev. Viņi varēs pateikt, ka ir bloķēti.", "report.categories.other": "Citi", "report.categories.spam": "Spams", "report.categories.violation": "Saturs pārkāpj vienu vai vairākus servera noteikumus", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Izvēlieties labāko atbilstību", + "report.category.title": "Pastāsti mums, kas notiek ar šo {type}", + "report.category.title_account": "profils", + "report.category.title_status": "ziņa", + "report.close": "Izpildīts", + "report.comment.title": "Vai ir vēl kas, tavuprāt, mums būtu jāzina?", "report.forward": "Pārsūtīt {target}", "report.forward_hint": "Konts ir no cita servera. Vai nosūtīt anonimizētu ziņojuma kopiju arī tam?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Apklusināt", + "report.mute_explanation": "Tu neredzēsi viņu ziņas. Viņi joprojām var tev sekot un redzēt tavas ziņas un nezinās, ka viņiem ir izslēgta skaņa.", + "report.next": "Nākamais", "report.placeholder": "Papildu komentāri", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Man tas nepatīk", + "report.reasons.dislike_description": "Tas nav kaut kas, ko tu vēlies redzēt", + "report.reasons.other": "Tas ir kaut kas cits", + "report.reasons.other_description": "Šis jautājums neietilpst citās kategorijās", + "report.reasons.spam": "Tas ir spams", + "report.reasons.spam_description": "Ļaunprātīgas saites, viltus iesaistīšana vai atkārtotas atbildes", + "report.reasons.violation": "Tas pārkāpj servera noteikumus", + "report.reasons.violation_description": "Tu zini, ka tas pārkāpj īpašus noteikumus", + "report.rules.subtitle": "Atlasi visus atbilstošos", + "report.rules.title": "Kuri noteikumi tiek pārkāpti?", + "report.statuses.subtitle": "Atlasi visus atbilstošos", + "report.statuses.title": "Vai ir kādas ziņas, kas atbalsta šo ziņojumu?", "report.submit": "Iesniegt", "report.target": "Ziņošana par: {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Tālāk ir norādītas iespējas, kā kontrolēt Mastodon redzamo saturu:", + "report.thanks.take_action_actionable": "Kamēr mēs to izskatām, tu vari veikt darbības pret @{name}:", + "report.thanks.title": "Vai nevēlies to redzēt?", + "report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.", + "report.unfollow": "Pārtraukt sekošanu @{name}", + "report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu viņu ziņas savā ziņu plūsmā, pārtrauc viņiem sekot.", "search.placeholder": "Meklēšana", "search_popout.search_format": "Paplašināts meklēšanas formāts", "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, iecienījis, paaugstinājis vai pieminējis, kā arī atbilstošie lietotājvārdi, parādāmie vārdi un tēmturi.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un mirkļbirkas", "search_popout.tips.user": "lietotājs", "search_results.accounts": "Cilvēki", - "search_results.all": "All", + "search_results.all": "Visi", "search_results.hashtags": "Tēmturi", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Nevarēja atrast neko šiem meklēšanas vienumiem", "search_results.statuses": "Ziņas", "search_results.statuses_fts_disabled": "Šajā Mastodon serverī nav iespējota ziņu meklēšana pēc to satura.", "search_results.total": "{count, number} {count, plural, one {rezultāts} other {rezultāti}}", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 83d2bb168..9bbd24777 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index dbde323ba..a7e5313a3 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 5c61de999..66410b252 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -48,7 +48,7 @@ "account.unmute_notifications": "Mostrar notificações de @{name}", "account_note.placeholder": "Nota pessoal sobre este perfil aqui", "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição", "admin.dashboard.retention.average": "Média", "admin.dashboard.retention.cohort": "Mês de inscrição", "admin.dashboard.retention.cohort_size": "Novos usuários", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Opção única", "compose_form.publish": "TOOT", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salvar alterações", "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}", "compose_form.sensitive.marked": "{count, plural, one {Mídia marcada como sensível} other {Mídias marcadas como sensível}}", "compose_form.sensitive.unmarked": "{count, plural, one {Mídia não está marcada como sensível} other {Mídias não estão marcadas como sensível}}", @@ -316,7 +316,7 @@ "notification.poll": "Uma enquete que você votou terminou", "notification.reblog": "{name} deu boost no teu toot", "notification.status": "{name} acabou de tootar", - "notification.update": "{name} edited a post", + "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -378,7 +378,7 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "agora mesmo", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}h", @@ -389,9 +389,9 @@ "reply_indicator.cancel": "Cancelar", "report.block": "Block", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", - "report.categories.other": "Other", + "report.categories.other": "Outro", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", "report.category.title_account": "profile", @@ -448,14 +448,14 @@ "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", "status.direct": "Enviar toot direto para @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Editar", + "status.edited": "Editado em {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Incorporar", "status.favourite": "Favoritar", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} criou {date}", + "status.history.edited": "{name} editou {date}", "status.load_more": "Ver mais", "status.media_hidden": "Mídia sensível", "status.mention": "Mencionar @{name}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 01c699f86..9cbd82f5c 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -94,7 +94,7 @@ "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.", "compose_form.direct_message_warning_learn_more": "Подробнее", "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.", - "compose_form.lock_disclaimer": "Ваша учётная запись {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", + "compose_form.lock_disclaimer": "Ваша учётная запись не {locked}. Любой пользователь сможет подписаться на вас и просматривать посты для подписчиков.", "compose_form.lock_disclaimer.lock": "не закрыта", "compose_form.placeholder": "О чём думаете?", "compose_form.poll.add_option": "Добавить вариант", @@ -187,11 +187,11 @@ "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию", "errors.unexpected_crash.report_issue": "Сообщить о проблеме", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.suggested_follows": "Для вас", + "explore.title": "Обзор", + "explore.trending_links": "Новости", + "explore.trending_statuses": "Посты", + "explore.trending_tags": "Хэштеги", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Подпишитесь на людей, чьи посты вы бы хотели видеть. Вот несколько предложений.", "follow_recommendations.lead": "Посты от людей, на которых вы подписаны, будут отображаться в вашей домашней ленте в хронологическом порядке. Не бойтесь ошибиться — вы так же легко сможете отписаться от них в любое время!", @@ -202,10 +202,10 @@ "getting_started.developers": "Разработчикам", "getting_started.directory": "Каталог профилей", "getting_started.documentation": "Документация", - "getting_started.heading": "Добро пожаловать", + "getting_started.heading": "Начать", "getting_started.invite": "Пригласить людей", "getting_started.open_source_notice": "Mastodon — сервис с открытым исходным кодом. Вы можете внести вклад или сообщить о проблемах на GitHub: {github}.", - "getting_started.security": "Безопасность", + "getting_started.security": "Настройки учётной записи", "getting_started.terms": "Условия использования", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", @@ -252,9 +252,9 @@ "keyboard_shortcuts.requests": "перейти к запросам на подписку", "keyboard_shortcuts.search": "перейти к поиску", "keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании", - "keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"", + "keyboard_shortcuts.start": "Перейти к разделу \"Начать\"", "keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением", - "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы", + "keyboard_shortcuts.toggle_sensitivity": "Показать/скрыть медиафайлы", "keyboard_shortcuts.toot": "начать писать новый пост", "keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска", "keyboard_shortcuts.up": "вверх по списку", @@ -316,7 +316,7 @@ "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.status": "{name} только что запостил", - "notification.update": "{name} edited a post", + "notification.update": "{name} изменил(а) пост", "notifications.clear": "Очистить уведомления", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -387,7 +387,7 @@ "relative_time.seconds": "{number} с", "relative_time.today": "сегодня", "reply_indicator.cancel": "Отмена", - "report.block": "Block", + "report.block": "Заблокировать", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Другое", "report.categories.spam": "Спам", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 79b5e54b5..3be5b5012 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 98405984a..d4475760b 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -316,7 +316,7 @@ "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", "notification.reblog": "{name} je spodbudil/a vaš status", "notification.status": "{name} je pravkar objavil/a", - "notification.update": "{name} edited a post", + "notification.update": "{name} je uredil(a) objavo", "notifications.clear": "Počisti obvestila", "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?", "notifications.column_settings.admin.sign_up": "New sign-ups:", @@ -336,7 +336,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Neprebrana obvestila", "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "Urejanja:", "notifications.filter.all": "Vse", "notifications.filter.boosts": "Spodbude", "notifications.filter.favourites": "Priljubljeni", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 6bef2e09b..b3a70dd27 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -167,7 +167,7 @@ "empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që t’i hyhet valles!", "empty_column.direct": "S’keni ende ndonjë mesazh të drejtpërdrejt. Kur dërgoni ose merrni një të tillë, ai do të shfaqet këtu.", "empty_column.domain_blocks": "Ende s’ka përkatësi të fshehura.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Asgjë në modë tani. Kontrolloni më vonë!", "empty_column.favourited_statuses": "S’keni ende ndonjë mesazh të parapëlqyer. Kur parapëlqeni një të tillë, ai do të shfaqet këtu.", "empty_column.favourites": "Askush s’e ka parapëlqyer ende këtë mesazh. Kur e bën dikush, ai do të shfaqet këtu.", "empty_column.follow_recommendations": "Duket se s’u prodhuan dot sugjerime për ju. Mund të provoni të kërkoni për persona që mund të njihni, ose të eksploroni hashtag-ë që janë në modë.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Provoni t’i çaktivizoni dhe të rifreskoni faqen. Nëse kjo s’bën punë, mundeni prapë të jeni në gjendje të përdorni Mastodon-in përmes një shfletuesi tjetër, apo një aplikacioni prej Mastodon-it.", "errors.unexpected_crash.copy_stacktrace": "Kopjo stacktrace-in në të papastër", "errors.unexpected_crash.report_issue": "Raportoni problemin", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Përfundime kërkimi", + "explore.suggested_follows": "Për ju", + "explore.title": "Eksploroni", + "explore.trending_links": "Lajme", + "explore.trending_statuses": "Postime", + "explore.trending_tags": "Hashtagë", "follow_recommendations.done": "U bë", "follow_recommendations.heading": "Ndiqni persona prej të cilëve doni të shihni postime! Ja ca sugjerime.", "follow_recommendations.lead": "Postimet prej personash që ndiqni do të shfaqen në rend kohor te prurja juaj kryesore. Mos kini frikë të bëni gabime, mund të ndalni po aq kollaj ndjekjen e dikujt, në çfarëdo kohe!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} u regjistrua", "notification.favourite": "{name} pëlqeu mesazhin tuaj", "notification.follow": "{name} zuri t’ju ndjekë", "notification.follow_request": "{name} ka kërkuar t’ju ndjekë", @@ -319,7 +319,7 @@ "notification.update": "{name} përpunoi një postim", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Regjistrime të reja:", "notifications.column_settings.alert": "Njoftime desktopi", "notifications.column_settings.favourite": "Të parapëlqyer:", "notifications.column_settings.filter_bar.advanced": "Shfaq krejt kategoritë", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}s", "relative_time.today": "sot", "reply_indicator.cancel": "Anuloje", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Bllokoje", + "report.block_explanation": "S’do të shihni postime prej tyre. S’do të jenë në gjendje të shohin postimet tuaja, apo t’ju ndjekin. Do të jenë në gjendje të shohin se janë bllokuar.", "report.categories.other": "Tjetër", "report.categories.spam": "I padëshiruar", "report.categories.violation": "Lënda shkel një ose disa rregulla shërbyesi", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "Zgjidhni përputhjen më të mirë", + "report.category.title": "Tregonani se ç’po ndodh me këtë {type}", + "report.category.title_account": "profil", + "report.category.title_status": "postim", + "report.close": "U bë", + "report.comment.title": "Ka ndonjë gjë tjetër që do të duhej ta dinim?", "report.forward": "Përcillja {target}", "report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Heshtoje", + "report.mute_explanation": "S’do të shihni postimet e tyre. Ende mund t’ju ndjekin dhe të shohin postimet tuaja dhe s’do ta dinë që janë heshtuar.", + "report.next": "Pasuesi", "report.placeholder": "Komente shtesë", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "S’më pëlqen", + "report.reasons.dislike_description": "S’është gjë që do të doja ta shihja", + "report.reasons.other": "Është tjetër gjë", + "report.reasons.other_description": "Problemi nuk hyn te kategoritë e tjera", + "report.reasons.spam": "Është mesazh i padëshiruar", + "report.reasons.spam_description": "Lidhje dashakeqe, angazhim i rremë, ose përgjigje të përsëritura", + "report.reasons.violation": "Cenon rregulla shërbyesi", + "report.reasons.violation_description": "Jeni i ndërgjegjshëm që cenon rregulla specifike", + "report.rules.subtitle": "Përzgjidhni gjithçka që ka vend", + "report.rules.title": "Cilat rregulla po cenohen?", + "report.statuses.subtitle": "Përzgjidhni gjithçka që ka vend", + "report.statuses.title": "A ka postime që dëshmojnë problemet e këtij raporti?", "report.submit": "Parashtroje", "report.target": "Raportim i {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Ja mundësitë tuaja për të kontrolluar ç’shihni në Mastodon:", + "report.thanks.take_action_actionable": "Teksa e shqyrtojmë, mund të ndërmerrni veprim kundër @{name}:", + "report.thanks.title": "S’doni të shihni këtë?", + "report.thanks.title_actionable": "Faleminderit për raportimin, do ta shohim.", + "report.unfollow": "Mos e ndiq më @{name}", + "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.", "search.placeholder": "Kërkoni", "search_popout.search_format": "Format kërkimi të mëtejshëm", "search_popout.tips.full_text": "Kërkimi për tekst të thjeshtë përgjigjet me mesazhe që keni shkruar, parapëlqyer, përforcuar, ose ku jeni përmendur, si dhe emra përdoruesish, emra ekrani dhe hashtag-ë që kanë përputhje me termin e kërkimit.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Kërkim për tekst të thjeshtë përgjigjet me emra, emra përdoruesish dhe hashtag-ë që kanë përputhje me termin e kërkimit", "search_popout.tips.user": "përdorues", "search_results.accounts": "Persona", - "search_results.all": "All", + "search_results.all": "Krejt", "search_results.hashtags": "Hashtag-ë", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "S’u gjet gjë për këto terma kërkimi", "search_results.statuses": "Mesazhe", "search_results.statuses_fts_disabled": "Kërkimi i mesazheve sipas lëndës së tyre s’është i aktivizuar në këtë shërbyes Mastodon.", "search_results.total": "{count, number} {count, plural, one {përfundim} other {përfundime}}", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index d219d498e..09a2f5176 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -167,7 +167,7 @@ "empty_column.community": "Den lokala tidslinjen är tom. Skriv något offentligt för att sätta bollen i rullning!", "empty_column.direct": "Du har inga direktmeddelanden än. När du skickar eller tar emot ett kommer det att visas här.", "empty_column.domain_blocks": "Det finns ännu inga dolda domäner.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Ingenting är trendigt just nu. Kom tillbaka senare!", "empty_column.favourited_statuses": "Du har inga favoritmarkerade toots än. När du favoritmarkerar en kommer den visas här.", "empty_column.favourites": "Ingen har favoritmarkerat den här tooten än. När någon gör det kommer den visas här.", "empty_column.follow_recommendations": "Det ser ut som om inga förslag kan genereras till dig. Du kan prova att använda sök för att leta efter personer som du kanske känner eller utforska trendande hash-taggar.", @@ -186,11 +186,11 @@ "error.unexpected_crash.next_steps_addons": "Prova att avaktivera dem och uppdatera sidan. Om detta inte hjälper kan du försöka använda Mastodon med en annan webbläsare eller en app.", "errors.unexpected_crash.copy_stacktrace": "Kopiera stacktrace till urklipp", "errors.unexpected_crash.report_issue": "Rapportera problem", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", + "explore.search_results": "Sökresultat", + "explore.suggested_follows": "För dig", + "explore.title": "Utforska", + "explore.trending_links": "Nyheter", + "explore.trending_statuses": "Inlägg", "explore.trending_tags": "Hashtags", "follow_recommendations.done": "Klar", "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Förenad tidslinje", "navigation_bar.security": "Säkerhet", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} registrerade sig", "notification.favourite": "{name} favoriserade din status", "notification.follow": "{name} följer dig", "notification.follow_request": "{name} har begärt att följa dig", @@ -319,7 +319,7 @@ "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Nya registreringar:", "notifications.column_settings.alert": "Skrivbordsaviseringar", "notifications.column_settings.favourite": "Favoriter:", "notifications.column_settings.filter_bar.advanced": "Visa alla kategorier", @@ -378,7 +378,7 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sedan", "relative_time.full.hours": "{number, plural, one {# timme} other {# timmar}} sedan", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "just nu", "relative_time.full.minutes": "{number, plural, one {# minut} other {# minuter}} sedan", "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekunder}} sedan", "relative_time.hours": "{number}tim", @@ -387,22 +387,22 @@ "relative_time.seconds": "{number}sek", "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", - "report.block": "Block", + "report.block": "Blockera", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "Övrigt", "report.categories.spam": "Skräppost", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Innehåll bryter mot en eller flera serverregler", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", + "report.category.title_account": "profil", + "report.category.title_status": "inlägg", "report.close": "Done", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", - "report.mute": "Mute", + "report.mute": "Tysta", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Nästa", "report.placeholder": "Ytterligare kommentarer", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", @@ -422,7 +422,7 @@ "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.unfollow": "Sluta följ @{username}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "Sök", "search_popout.search_format": "Avancerat sökformat", @@ -432,7 +432,7 @@ "search_popout.tips.text": "Enkel text returnerar matchande visningsnamn, användarnamn och hashtags", "search_popout.tips.user": "användare", "search_results.accounts": "Människor", - "search_results.all": "All", + "search_results.all": "Alla", "search_results.hashtags": "Hashtaggar", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Tutor", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index dbde323ba..a7e5313a3 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 9771d5b84..55a62bb55 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index eaae23445..1b276c467 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "ลองปิดใช้งานส่วนเสริมหรือเครื่องมือแล้วรีเฟรชหน้า หากนั่นไม่ช่วย คุณอาจยังสามารถใช้ Mastodon ได้ผ่านเบราว์เซอร์อื่นหรือแอป", "errors.unexpected_crash.copy_stacktrace": "คัดลอกการติดตามสแตกไปยังคลิปบอร์ด", "errors.unexpected_crash.report_issue": "รายงานปัญหา", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "ผลลัพธ์การค้นหา", + "explore.suggested_follows": "สำหรับคุณ", + "explore.title": "สำรวจ", + "explore.trending_links": "ข่าว", + "explore.trending_statuses": "โพสต์", + "explore.trending_tags": "แฮชแท็ก", "follow_recommendations.done": "เสร็จสิ้น", "follow_recommendations.heading": "ติดตามผู้คนที่คุณต้องการเห็นโพสต์! นี่คือข้อเสนอแนะบางส่วน", "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} ได้ลงทะเบียน", "notification.favourite": "{name} ได้ชื่นชอบโพสต์ของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", "notification.follow_request": "{name} ได้ขอติดตามคุณ", @@ -319,7 +319,7 @@ "notification.update": "{name} ได้แก้ไขโพสต์", "notifications.clear": "ล้างการแจ้งเตือน", "notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "การลงทะเบียนใหม่:", "notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป", "notifications.column_settings.favourite": "รายการโปรด:", "notifications.column_settings.filter_bar.advanced": "แสดงหมวดหมู่ทั้งหมด", @@ -387,22 +387,22 @@ "relative_time.seconds": "{number} วินาที", "relative_time.today": "วันนี้", "reply_indicator.cancel": "ยกเลิก", - "report.block": "Block", + "report.block": "ปิดกั้น", "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", "report.categories.other": "อื่น ๆ", "report.categories.spam": "สแปม", "report.categories.violation": "เนื้อหาละเมิดหนึ่งกฎของเซิร์ฟเวอร์หรือมากกว่า", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "โปรไฟล์", + "report.category.title_status": "โพสต์", + "report.close": "เสร็จสิ้น", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "ส่งต่อไปยัง {target}", "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?", - "report.mute": "Mute", + "report.mute": "ซ่อน", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "ถัดไป", "report.placeholder": "ความคิดเห็นเพิ่มเติม", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", @@ -421,8 +421,8 @@ "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", + "report.thanks.title_actionable": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้", + "report.unfollow": "เลิกติดตาม @{name}", "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", "search.placeholder": "ค้นหา", "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง", @@ -432,7 +432,7 @@ "search_popout.tips.text": "ข้อความแบบง่ายส่งคืนชื่อที่แสดง, ชื่อผู้ใช้ และแฮชแท็กที่ตรงกัน", "search_popout.tips.user": "ผู้ใช้", "search_results.accounts": "ผู้คน", - "search_results.all": "All", + "search_results.all": "ทั้งหมด", "search_results.hashtags": "แฮชแท็ก", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "โพสต์", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 17df66e77..0d7c92f05 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -167,7 +167,7 @@ "empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!", "empty_column.direct": "Henüz direkt mesajın yok. Bir tane gönderdiğinde veya aldığında burada görünür.", "empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "Şu an öne çıkan birşey yok. Daha sonra tekrar bakın!", "empty_column.favourited_statuses": "Favori tootun yok. Favori tootun olduğunda burada görünür.", "empty_column.favourites": "Kimse bu gönderiyi favorilerine eklememiş. Biri eklediğinde burada görünecek.", "empty_column.follow_recommendations": "Öyle görünüyor ki sizin için hiçbir öneri oluşturulamıyor. Tanıdığınız kişileri aramak için aramayı kullanabilir veya öne çıkanlara bakabilirsiniz.", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "Bunları devre dışı bırakmayı ve sayfayı yenilemeyi deneyin. Bu yardımcı olmazsa, Mastodon'u başka bir tarayıcı veya yerel uygulama aracılığıyla kullanabilirsiniz.", "errors.unexpected_crash.copy_stacktrace": "Yığın izlemeyi (stacktrace) panoya kopyala", "errors.unexpected_crash.report_issue": "Sorun bildir", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "Arama sonuçları", + "explore.suggested_follows": "Sizin için", + "explore.title": "Keşfet", + "explore.trending_links": "Haberler", + "explore.trending_statuses": "Gönderiler", + "explore.trending_tags": "Etiketler", "follow_recommendations.done": "Tamam", "follow_recommendations.heading": "Gönderilerini görmek isteyeceğiniz kişileri takip edin! Burada bazı öneriler bulabilirsiniz.", "follow_recommendations.lead": "Takip ettiğiniz kişilerin gönderileri anasayfa akışınızda kronolojik sırada görünmeye devam edecek. Hata yapmaktan çekinmeyin, kişileri istediğiniz anda kolayca takipten çıkabilirsiniz!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} kaydoldu", "notification.favourite": "{name} gönderini beğendi", "notification.follow": "{name} seni takip etti", "notification.follow_request": "{name} size takip isteği gönderdi", @@ -319,7 +319,7 @@ "notification.update": "{name} bir gönderiyi düzenledi", "notifications.clear": "Bildirimleri temizle", "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "Yeni kayıtlar:", "notifications.column_settings.alert": "Masaüstü bildirimleri", "notifications.column_settings.favourite": "Beğeniler:", "notifications.column_settings.filter_bar.advanced": "Tüm kategorileri görüntüle", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}sn", "relative_time.today": "bugün", "reply_indicator.cancel": "İptal", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "Engelle", + "report.block_explanation": "Gönderilerini göremeyeceksiniz. Gönderilerinizi göremezler veya sizi takip edemezler. Engelli olduklarını anlayabilecekler.", "report.categories.other": "Diğer", "report.categories.spam": "İstenmeyen", "report.categories.violation": "İçerik bir veya daha fazla sunucu kuralını ihlal ediyor", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "En uygun eşleşmeyi seçin", + "report.category.title": "Bu {type} ile ilgili neler oluyor bize söyleyin", + "report.category.title_account": "profil", + "report.category.title_status": "gönderi", + "report.close": "Tamam", + "report.comment.title": "Bilmemizi istediğiniz başka bir şey var mı?", "report.forward": "{target} ilet", "report.forward_hint": "Hesap başka bir sunucudan. Raporun anonim bir kopyası da oraya gönderilsin mi?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "Sessiz", + "report.mute_explanation": "Gönderilerini göremeyeceksiniz. Sizi takip etmeyi sürdürebilir ve gönderilerinizi görebilirler ama sessize alındıklarını anlamayacaklar.", + "report.next": "Sonraki", "report.placeholder": "Ek yorumlar", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "Beğenmedim", + "report.reasons.dislike_description": "Görmek isteyeceğiniz bir şey değil", + "report.reasons.other": "Başka bir şey", + "report.reasons.other_description": "Sorun başka kategorilere uymuyor", + "report.reasons.spam": "İstenmeyen", + "report.reasons.spam_description": "Kötü niyetli bağlantılar, sahte etkileşim veya tekrarlayan yanıtlar", + "report.reasons.violation": "Sunucu kurallarını ihlal ediyor", + "report.reasons.violation_description": "Belirli kuralları ihlal ettiğinin farkındasınız", + "report.rules.subtitle": "Geçerli olanların hepsini seçin", + "report.rules.title": "Hangi kurallar ihlal ediliyor?", + "report.statuses.subtitle": "Geçerli olanların hepsini seçin", + "report.statuses.title": "Bu bildirimi destekleyecek herhangi bir gönderi var mı?", "report.submit": "Gönder", "report.target": "{target} Bildiriliyor", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "Mastodon'da ne görebileceğinizi denetlemeye ilişkin seçenekler şunlardır:", + "report.thanks.take_action_actionable": "Biz değerlendirirken, @{name} hesabına yönelik bir şeyler yapabilirsiniz:", + "report.thanks.title": "Bunu görmek istemiyor musunuz?", + "report.thanks.title_actionable": "Bildirdiğiniz için teşekkürler, konuyu araştıracağız.", + "report.unfollow": "@{name} takip etmeyi bırak", + "report.unfollow_explanation": "Bu hesabı takip ediyorsunuz. Ana akışınızda gönderilerini görmek istemiyorsanız, onu takip etmeyi bırakın.", "search.placeholder": "Ara", "search_popout.search_format": "Gelişmiş arama biçimi", "search_popout.tips.full_text": "Basit metin yazdığınız, beğendiğiniz, teşvik ettiğiniz veya söz edilen gönderilerin yanı sıra kullanıcı adlarını, görünen adları ve hashtag'leri eşleştiren gönderileri de döndürür.", @@ -432,9 +432,9 @@ "search_popout.tips.text": "Basit metin, eşleşen görünen adları, kullanıcı adlarını ve hashtag'leri döndürür", "search_popout.tips.user": "kullanıcı", "search_results.accounts": "İnsanlar", - "search_results.all": "All", + "search_results.all": "Tümü", "search_results.hashtags": "Etiketler", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "Bu arama seçenekleriyle bir sonuç bulunamadı", "search_results.statuses": "Gönderiler", "search_results.statuses_fts_disabled": "Bu Mastodon sunucusunda gönderi içeriğine göre arama etkin değil.", "search_results.total": "{count, number} {count, plural, one {sonuç} other {sonuç}}", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index b1e5b2d96..ebdbdbd6e 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index dbde323ba..a7e5313a3 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 1b4b1bc0f..e27eb5c21 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -187,11 +187,11 @@ "errors.unexpected_crash.copy_stacktrace": "Скопіювати трасування стека у буфер обміну", "errors.unexpected_crash.report_issue": "Повідомити про проблему", "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.suggested_follows": "Для вас", + "explore.title": "Огляд", + "explore.trending_links": "Новини", + "explore.trending_statuses": "Дописи", + "explore.trending_tags": "Хештеґи", "follow_recommendations.done": "Готово", "follow_recommendations.heading": "Підпишіться на людей, чиї дописи ви хочете бачити! Ось деякі пропозиції.", "follow_recommendations.lead": "Дописи від людей, за якими ви стежите, з'являться в хронологічному порядку у вашій домашній стрічці. Не бійся помилятися, ви можете відписатися від людей так само легко в будь-який час!", @@ -394,17 +394,17 @@ "report.categories.violation": "Контент порушує одне або кілька правил сервера", "report.category.subtitle": "Choose the best match", "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", + "report.category.title_account": "профіль", + "report.category.title_status": "допис", + "report.close": "Готово", "report.comment.title": "Is there anything else you think we should know?", "report.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.next": "Далі", "report.placeholder": "Додаткові коментарі", - "report.reasons.dislike": "I don't like it", + "report.reasons.dislike": "Мені це не подобається", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", @@ -432,7 +432,7 @@ "search_popout.tips.text": "Пошук за текстом знаходить імена користувачів, реальні імена та хештеґи", "search_popout.tips.user": "користувач", "search_results.accounts": "Люди", - "search_results.all": "All", + "search_results.all": "Усе", "search_results.hashtags": "Хештеґи", "search_results.nothing_found": "Could not find anything for these search terms", "search_results.statuses": "Дмухів", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 7f074d63e..3e71bcc06 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", @@ -416,7 +416,7 @@ "report.rules.title": "Which rules are being violated?", "report.statuses.subtitle": "Select all that apply", "report.statuses.title": "Are there any posts that back up this report?", - "report.submit": "Submit", + "report.submit": "Submit report", "report.target": "Report {target}", "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 149aeacbf..df307d439 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -403,7 +403,7 @@ "report.mute": "Mute", "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", "report.next": "Next", - "report.placeholder": "Additional comments", + "report.placeholder": "Type or paste additional comments", "report.reasons.dislike": "I don't like it", "report.reasons.dislike_description": "It is not something you want to see", "report.reasons.other": "It's something else", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 56aba036d..7f6743e62 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -167,7 +167,7 @@ "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!", "empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。", "empty_column.domain_blocks": "目前没有被隐藏的站点。", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!", "empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。", "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。", "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "请尝试禁用它们并刷新页面。如果没有帮助,你仍可以尝试使用其他浏览器或原生应用来使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "把堆栈跟踪信息复制到剪贴板", "errors.unexpected_crash.report_issue": "报告问题", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "搜索结果", + "explore.suggested_follows": "为您推荐", + "explore.title": "探索", + "explore.trending_links": "最新消息", + "explore.trending_statuses": "嘟文", + "explore.trending_tags": "话题标签", "follow_recommendations.done": "完成", "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。", "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} 注册了", "notification.favourite": "{name} 喜欢了你的嘟文", "notification.follow": "{name} 开始关注你", "notification.follow_request": "{name} 向你发送了关注请求", @@ -319,7 +319,7 @@ "notification.update": "{name} 编辑了嘟文", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "新注册:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "当你的嘟文被喜欢时:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", @@ -336,7 +336,7 @@ "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", - "notifications.column_settings.update": "Edits:", + "notifications.column_settings.update": "编辑:", "notifications.filter.all": "全部", "notifications.filter.boosts": "转嘟", "notifications.filter.favourites": "喜欢", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number}秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "屏蔽", + "report.block_explanation": "你不会看到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。", "report.categories.other": "其他", "report.categories.spam": "垃圾信息", "report.categories.violation": "内容违反一条或多条服务器规则", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "选择最佳匹配", + "report.category.title": "告诉我们这个 {type} 的情况", + "report.category.title_account": "个人资料", + "report.category.title_status": "嘟文", + "report.close": "完成", + "report.comment.title": "还有什么你认为我们应该知道的吗?", "report.forward": "转发举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", + "report.mute": "静音", + "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的嘟文,但他们不会知道他们被静音了。", "report.next": "Next", "report.placeholder": "备注", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "我不喜欢它", + "report.reasons.dislike_description": "这不是你想看到的东西", + "report.reasons.other": "其他原因", + "report.reasons.other_description": "该问题不符合其他类别", + "report.reasons.spam": "它是垃圾信息", + "report.reasons.spam_description": "恶意链接、虚假参与或重复性回复", + "report.reasons.violation": "它违反了服务器规则", + "report.reasons.violation_description": "你清楚它违反了特定的规则", + "report.rules.subtitle": "选择所有适用选项", + "report.rules.title": "哪些规则被违反了?", + "report.statuses.subtitle": "选择所有适用选项", + "report.statuses.title": "是否有任何嘟文可以支持这一报告?", "report.submit": "提交", "report.target": "举报 {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "以下是您控制您在 Mastodon 上能看到哪些内容的选项:", + "report.thanks.take_action_actionable": "在我们审阅这个问题时,你可以对 @{name} 采取行动", + "report.thanks.title": "不想看到这个内容?", + "report.thanks.title_actionable": "感谢提交举报,我们将会进行处理。", + "report.unfollow": "取消关注 @{name}", + "report.unfollow_explanation": "你正在关注这个账户。如果要想在你的主页上不再看到他们的嘟文,请取消对他们的关注。", "search.placeholder": "搜索", "search_popout.search_format": "高级搜索格式", "search_popout.tips.full_text": "输入关键词检索所有你发送、喜欢、转嘟过或提及到你的嘟文,以及其他用户公开的用户名、昵称和话题标签。", @@ -432,9 +432,9 @@ "search_popout.tips.text": "输入关键词检索昵称、用户名和话题标签", "search_popout.tips.user": "用户", "search_results.accounts": "用户", - "search_results.all": "All", + "search_results.all": "全部", "search_results.hashtags": "话题标签", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "无法找到符合这些搜索词的任何内容", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "此Mastodon服务器未启用嘟文内容搜索。", "search_results.total": "共 {count, number} 个结果", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 9eff43307..4da14a475 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -167,7 +167,7 @@ "empty_column.community": "本機時間軸是空的。快公開嘟些文搶頭香啊!", "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.domain_blocks": "尚未封鎖任何網域。", - "empty_column.explore_statuses": "Nothing is trending right now. Check back later!", + "empty_column.explore_statuses": "目前沒有熱門討論,請稍候再回來看看!", "empty_column.favourited_statuses": "您還沒加過任何嘟文至最愛。當您收藏嘟文時,它將於此顯示。", "empty_column.favourites": "還沒有人加過這則嘟文至最愛。當有人收藏嘟文時,它將於此顯示。", "empty_column.follow_recommendations": "似乎未能為您產生任何建議。您可以嘗試使用搜尋來尋找您可能認識的人,或是探索熱門主題標籤。", @@ -186,12 +186,12 @@ "error.unexpected_crash.next_steps_addons": "請嘗試關閉他們然後重新整理頁面。如果狀況沒有改善,您可以使用不同的瀏覽器或應用程式來檢視來使用 Mastodon。", "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿", "errors.unexpected_crash.report_issue": "回報問題", - "explore.search_results": "Search results", - "explore.suggested_follows": "For you", - "explore.title": "Explore", - "explore.trending_links": "News", - "explore.trending_statuses": "Posts", - "explore.trending_tags": "Hashtags", + "explore.search_results": "搜尋結果", + "explore.suggested_follows": "為您推薦", + "explore.title": "探索", + "explore.trending_links": "最新消息", + "explore.trending_statuses": "嘟文", + "explore.trending_tags": "主題標籤", "follow_recommendations.done": "完成", "follow_recommendations.heading": "跟隨您想檢視其貼文的人!這裡有一些建議。", "follow_recommendations.lead": "來自您跟隨的人的貼文將會按時間順序顯示在您的家 feed 上。不要害怕犯錯,您隨時都可以取消跟隨其他人!", @@ -307,7 +307,7 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", - "notification.admin.sign_up": "{name} signed up", + "notification.admin.sign_up": "{name} 已經註冊", "notification.favourite": "{name} 把您的嘟文加入了最愛", "notification.follow": "{name} 跟隨了您", "notification.follow_request": "{name} 要求跟隨您", @@ -319,7 +319,7 @@ "notification.update": "{name} 編輯了嘟文", "notifications.clear": "清除通知", "notifications.clear_confirmation": "確定要永久清除您的通知嗎?", - "notifications.column_settings.admin.sign_up": "New sign-ups:", + "notifications.column_settings.admin.sign_up": "新註冊帳號:", "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "最愛:", "notifications.column_settings.filter_bar.advanced": "顯示所有分類", @@ -387,43 +387,43 @@ "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", - "report.block": "Block", - "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.", + "report.block": "封鎖", + "report.block_explanation": "您將不再看到他們的嘟文。他們將無法看到您的嘟文或是跟隨您。他們會被告知他們已被封鎖。", "report.categories.other": "其他", "report.categories.spam": "垃圾訊息", "report.categories.violation": "內容違反一項或多項伺服器條款", - "report.category.subtitle": "Choose the best match", - "report.category.title": "Tell us what's going on with this {type}", - "report.category.title_account": "profile", - "report.category.title_status": "post", - "report.close": "Done", - "report.comment.title": "Is there anything else you think we should know?", + "report.category.subtitle": "選擇最佳條件符合", + "report.category.title": "告訴我們這個 {type} 發生了什麼事", + "report.category.title_account": "個人檔案", + "report.category.title_status": "嘟文", + "report.close": "已完成", + "report.comment.title": "有什麼其他您想讓我們知道的嗎?", "report.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", - "report.mute": "Mute", - "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.", - "report.next": "Next", + "report.mute": "靜音", + "report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。", + "report.next": "繼續", "report.placeholder": "其他備註", - "report.reasons.dislike": "I don't like it", - "report.reasons.dislike_description": "It is not something you want to see", - "report.reasons.other": "It's something else", - "report.reasons.other_description": "The issue does not fit into other categories", - "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", - "report.reasons.violation": "It violates server rules", - "report.reasons.violation_description": "You are aware that it breaks specific rules", - "report.rules.subtitle": "Select all that apply", - "report.rules.title": "Which rules are being violated?", - "report.statuses.subtitle": "Select all that apply", - "report.statuses.title": "Are there any posts that back up this report?", + "report.reasons.dislike": "我不喜歡", + "report.reasons.dislike_description": "這是您不想看到的", + "report.reasons.other": "其他原因", + "report.reasons.other_description": "這個問題不屬於其他分類", + "report.reasons.spam": "垃圾訊息", + "report.reasons.spam_description": "有害連結,假造的互動,或是重複性回覆", + "report.reasons.violation": "違反伺服器規則", + "report.reasons.violation_description": "您知道它違反特定規則", + "report.rules.subtitle": "請選擇所有適用的選項", + "report.rules.title": "違反了哪些規則?", + "report.statuses.subtitle": "請選擇所有適用的選項", + "report.statuses.title": "是否有能佐證這份檢舉之嘟文?", "report.submit": "送出", "report.target": "檢舉 {target}", - "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:", - "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:", - "report.thanks.title": "Don't want to see this?", - "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.", - "report.unfollow": "Unfollow @{name}", - "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.", + "report.thanks.take_action": "以下是控制您想於 Mastodon 看到什麼內容之選項:", + "report.thanks.take_action_actionable": "當我們正在審核期間,您可以對 @{name} 採取以下措施:", + "report.thanks.title": "不想再看到這個?", + "report.thanks.title_actionable": "感謝您的檢舉,我們將會著手處理。", + "report.unfollow": "取消跟隨 @{name}", + "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁再見到他們的嘟文,請取消跟隨。", "search.placeholder": "搜尋", "search_popout.search_format": "進階搜尋格式", "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。", @@ -432,9 +432,9 @@ "search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳戶名稱與標籤", "search_popout.tips.user": "使用者", "search_results.accounts": "使用者", - "search_results.all": "All", + "search_results.all": "全部", "search_results.hashtags": "主題標籤", - "search_results.nothing_found": "Could not find anything for these search terms", + "search_results.nothing_found": "無法找到符合搜尋條件之結果", "search_results.statuses": "嘟文", "search_results.statuses_fts_disabled": "「依內容搜尋嘟文」未在此 Mastodon 伺服器啟用。", "search_results.total": "{count, number} 項結果", diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml index 4dfa507fc..4f7c734d9 100644 --- a/config/locales/activerecord.ast.yml +++ b/config/locales/activerecord.ast.yml @@ -2,11 +2,10 @@ ast: activerecord: attributes: - poll: - options: Escoyetes - errors: - models: - account: - attributes: - username: - invalid: namái lletres, númberos y guiones baxos + user: + locale: Locale + password: Contraseña + user/account: + username: Nome d'usuariu + user/invite_request: + text: Motivu diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index 92fba043f..b007364df 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -5,13 +5,28 @@ cy: poll: expires_at: Terfyn amser options: Dewisiadau + user: + agreement: Cytundeb gwasanaeth + email: Cyfeiriad e-bost + locale: Locale + password: Cyfrinair + user/account: + username: Enw defnyddiwr + user/invite_request: + text: Rheswm errors: models: account: attributes: username: invalid: dim ond llythrennau, rhifau a tanlinellau + reserved: yn neilltuedig status: attributes: reblog: taken: o'r statws yn bodoli'n barod + user: + attributes: + email: + blocked: yn defnyddio darparwr e-bost nas caniateir + unreachable: nid yw'n bodoli diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 4501b39e8..62822b0b2 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -452,10 +452,7 @@ ar: add_new: إضافة created_msg: لقد دخل حظر نطاق البريد الإلكتروني حيّز الخدمة delete: حذف - destroyed_msg: تم حذف نطاق البريد الإلكتروني من اللائحة السوداء بنجاح domain: النطاق - empty: ليس هناك أية نطاقات للبريد الإلكتروني مُدرَجة في القائمة السوداء. - from_html: مِن %{domain} new: create: إضافة نطاق title: إضافة نطاق بريد جديد إلى اللائحة السوداء diff --git a/config/locales/ast.yml b/config/locales/ast.yml index a10bd5f2f..2a76b8773 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -5,6 +5,7 @@ ast: 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.' about_this: Tocante a administered_by: 'Alministráu por:' + api: API apps: Aplicaciones pa móviles apps_platforms: Usa Mastodon dende Android, iOS y otres plataformes contact: Contautu @@ -27,7 +28,7 @@ ast: terms: Términos del serviciu unavailable_content_description: domain: Sirvidor - reason: Razón + reason: Motivu user_count_after: one: usuariu other: usuarios @@ -92,12 +93,22 @@ ast: domain: Dominiu instances: by_domain: Dominiu + private_comment: Comentariu priváu + public_comment: Comentariu públicu title: Federación invites: filter: available: Disponible expired: Caducó title: Invitaciones + ip_blocks: + expires_in: + '1209600': 2 selmanes + '15778476': 6 meses + '2629746': 1 mes + '31556952': 1 añu + '86400': 1 día + '94670856': 3 años relays: save_and_enable: Guardar y activar status: Estáu @@ -164,8 +175,8 @@ ast: web: Dir a la web datetime: distance_in_words: - half_a_minute: Púramente agora - less_than_x_seconds: Púramente agora + half_a_minute: Puramente agora + less_than_x_seconds: Puramente agora deletes: challenge_not_passed: La información qu'introduxesti nun yera correuta confirm_password: Introduz la contraseña pa verificar la to identidá @@ -176,6 +187,9 @@ ast: directory: Direutoriu de perfiles explanation: y descubri a usuarios según los sos intereses explore_mastodon: Esplora %{title} + disputes: + strikes: + appeal_rejected: Refugóse l'apellación errors: '400': The request you submitted was invalid or malformed. '403': Nun tienes permisu pa ver esta páxina. @@ -326,12 +340,31 @@ ast: sessions: browser: Restolador browsers: + alipay: Alipay + blackberry: Blackberry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox generic: Restolador desconocíu + ie: Internet Explorer + micro_messenger: MicroMessenger current_session: Sesión actual description: "%{browser} en %{platform}" + ip: IP platforms: - mac: Mac + adobe_air: Adobe Air + android: Android + blackberry: Blackberry + chrome_os: Chrome OS + firefox_os: Firefox OS + ios: iOS + linux: GNU/Linux + mac: macOS other: plataforma desconocida + windows: Windows + windows_mobile: Windows Mobile + windows_phone: Windows Phone revoke: Revocar revoke_success: La sesión revocóse correutamente title: Sesiones @@ -383,6 +416,15 @@ ast: public_long: Tol mundu puen velos unlisted: Nun llistar unlisted_long: Tol mundu puen velos pero nun se llisten nes llinies temporales públiques + statuses_cleanup: + min_age: + '1209600': 2 selmanes + '15778476': 6 meses + '2629746': 1 mes + '31556952': 1 añu + '5259492': 2 meses + '63113904': 2 años + '7889238': 3 meses stream_entries: pinned: Barritu fixáu reblogged: compartió diff --git a/config/locales/br.yml b/config/locales/br.yml index 5d482b503..0f66b6fbc 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -126,7 +126,6 @@ br: add_new: Ouzhpenniñ unan nevez delete: Dilemel domain: Domani - from_html: eus %{domain} new: create: Ouzhpenniñ un domani instances: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 6cec7b3f8..11cd14566 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -467,15 +467,22 @@ ca: view: Veure el bloqueig del domini email_domain_blocks: add_new: Afegir nou + attempts_over_week: + one: "%{count} intent en la darrera setmana" + other: "%{count} intents de registre en la darrera setmana" created_msg: S'ha creat el bloc de domini de correu electrònic delete: Suprimeix - destroyed_msg: S'ha eliminat correctament el bloc del domini de correu + dns: + types: + mx: Registre MX domain: Domini - empty: Cap domini de correu a la llista negre. - from_html: des de %{domain} new: create: Afegir un domini + resolve: Resol domini title: Nova adreça de correu en la llista negra + no_email_domain_block_selected: No s'han canviat els bloquejos de domini perquè cap s'ha seleccionat + resolved_dns_records_hint_html: El nom del domini resol als següents dominis MX, els quals son els responsables finals per a acceptar els correus. Bloquejar un domini MX bloquejarà els registres des de qualsevol adreça de correu que utilitzi el mateix domini MX, encara que el nom visible del domini sigui diferent. Ves amb compte no bloquegis els grans proveïdors de correu electrònic. + resolved_through_html: Resolt mitjançant %{domain} title: Llista negra de correus electrònics follow_recommendations: description_html: "Seguir les recomanacions ajuda als nous usuaris a trobar ràpidament contingut interessant. Quan un usuari no ha interactuat prou amb d'altres com per a formar a qui seguir personalment, aquests comptes li seran recomanats. Es recalculen a diari a partir d'una barreja de comptes amb els compromisos recents més alts i el nombre més alt de seguidors locals per a un idioma determinat." @@ -610,6 +617,7 @@ ca: title: Notes notes_description_html: Veu i deixa notes als altres moderadors i a tu mateix quick_actions_description_html: 'Pren una acció ràpida o desplaça''t avall per a veure el contingut reportat:' + remote_user_placeholder: l'usuari remot des de %{instance} reopen: Reobre l'informe report: 'Informe #%{id}' reported_account: Compte reportat @@ -780,6 +788,15 @@ ca: rejected: Els enllaços d'aquest mitjà no poden estar en tendència title: Mitjans rejected: Rebutjat + statuses: + allow: Permet publicació + allow_account: Permet autor + disallow: Rebutja publicació + disallow_account: Rebutja autor + shared_by: + one: Compartit o afavorit una vegada + other: Compartit i afavorit %{friendly_count} vegades + title: Publicacions en tendència tags: current_score: Puntuació actual %{score} dashboard: @@ -828,16 +845,21 @@ ca: body: "%{reporter} ha informat de %{target}" body_remote: Algú des de el domini %{domain} ha informat sobre %{target} subject: Informe nou per a %{instance} (#%{id}) - new_trending_links: - body: Els enllaços següents son tendència avui però els seus mitjans no han estat verificats. No seran mostrats públicament fins que els aprovis. No es generaran noves notificacions dels mateixos mitjans. - no_approved_links: Actualment no hi ha enllaços en tendència aprovats. - requirements: L'enllaç en tendència més baixa aprovat és actualment "%{lowest_link_title}" amb una puntuació de %{lowest_link_score}. - subject: Nou enllaços en tendència pendents de revisar a %{instance} - new_trending_tags: - body: 'Les següents etiquetes son tendència avui però no han estat prèviament revisades. No seran mostrades públicament fins que les aprovis:' - no_approved_tags: Actualment no hi ha etiquetes en tendència aprovades. - requirements: L'etiqueta en tendència més baixa aprovada és actualment "%{lowest_tag_name}" amb una puntuació de %{lowest_tag_score}. - subject: Noves etiquetes en tendència pendents de ser revisades a %{instance} + new_trends: + body: 'Els següents elements necessiten una revisió abans de que puguin ser mostrats públicament:' + new_trending_links: + no_approved_links: Actualment no hi ha enllaços en tendència aprovats. + requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} del enllaç en tendència aprovat, que actualment és "%{lowest_link_title}" amb una puntuació de %{lowest_link_score}.' + title: Enllaços en tendència + new_trending_statuses: + no_approved_statuses: Actualment no hi ha etiquetes en tendència aprovades. + requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} de la publicació en tendència aprovada, que actualment és "%{lowest_status_url}" amb una puntuació de %{lowest_status_score}.' + title: Publicacions en tendència + new_trending_tags: + no_approved_tags: Actualment no hi ha etiquetes en tendència aprovades. + requirements: 'Qualsevol d''aquests candidats podria superar el #%{rank} de la etiqueta en tendència aprovada, que actualment és "%{lowest_tag_name}" amb una puntuació de %{lowest_tag_score}.' + title: Etiquetes en tendència + subject: Noves tendències pendents de revisar a %{instance} aliases: add_new: Crea un àlies created_msg: Nou àlies creat amb èxit. Ara pots iniciar el moviment des de'l compte vell. @@ -1176,6 +1198,9 @@ ca: carry_mutes_over_text: Aquest usuari s’ha mogut des de %{acct}, que havies silenciat. copy_account_note_text: 'Aquest usuari s’ha mogut des de %{acct}, aquí estaven les teves notes prèvies sobre ell:' notification_mailer: + admin: + sign_up: + subject: "%{name} s'ha registrat" digest: action: Mostra totes les notificacions body: Un resum del que et vas perdre des de la darrera visita el %{since} diff --git a/config/locales/co.yml b/config/locales/co.yml index 8a6051d05..4d5327aef 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -426,10 +426,7 @@ co: add_new: Aghjunghje created_msg: U blucchime di u duminiu d’e-mail hè attivu delete: Toglie - destroyed_msg: U blucchime di u duminiu d’e-mail ùn hè più attivu domain: Duminiu - empty: Ùn c'hè manc'un duminiu d'email in lista nera. - from_html: da %{domain} new: create: Creà un blucchime title: Nova iscrizzione nant’a lista nera e-mail diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 7762890e6..0db4bd7e5 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -445,10 +445,7 @@ cs: add_new: Přidat created_msg: E-mailová doména úspěšně zablokována delete: Smazat - destroyed_msg: E-mailová doména úspěšně odblokována domain: Doména - empty: Žádné e-mailové domény nejsou aktuálně blokovány. - from_html: z domény %{domain} new: create: Přidat doménu title: Blokovat novou e-mailovou doménu @@ -749,16 +746,6 @@ cs: body: Uživatel %{reporter} nahlásil uživatele %{target} body_remote: Někdo z domény %{domain} nahlásil uživatele %{target} subject: Nové hlášení pro %{instance} (#%{id}) - new_trending_links: - body: Následující odkazy jsou dnes populární, ale jejich vydavatelé zatím nebyli posouzeni. Nebudou veřejně zobrazeny, pokud je neschválíte. Pro stejné vydavatele už další upozornění nedostanete. - no_approved_links: Momentálně nejsou žádné schválené populární odkazy. - requirements: Nejnižší schválený populární odkaz je momentálně "%{lowest_link_title}" se skóre %{lowest_link_score}. - subject: Nové populární odkazy k posouzení na %{instance} - new_trending_tags: - body: 'Následující hashtagy jsou dnes populární, ale nebyly dříve přezkoumány. Nebudou zobrazeny veřejně, pokud je neschválíte:' - no_approved_tags: Momentálně nejsou žádné schválené populární hashtagy. - requirements: Nejnižší schválený populární hashtag je momentálně "%{lowest_tag_name}" se skóre %{lowest_tag_score}. - subject: Nové populární hashtagy k posouzení na %{instance} aliases: add_new: Vytvořit alias created_msg: Nový alias byl úspěšně vytvořen. Nyní můžete zahájit přesun ze starého účtu. diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 0af3f175d..066a54cbc 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -140,6 +140,7 @@ cy: header: Pennawd inbox_url: URL Mewnflwch invited_by: Gwahoddwyd gan + ip: IP joined: Ymunodd location: all: Popeth @@ -194,6 +195,7 @@ cy: silenced: Tawelwyd statuses: Statysau subscribe: Tanysgrifio + suspend: Atal suspended: Ataliwyd title: Cyfrifon unconfirmed_email: E-bost heb ei gadarnhau @@ -221,6 +223,7 @@ cy: destroy_domain_allow: Dileu Alluogiad Parth destroy_domain_block: Dileu Gwaharddiad Parth destroy_email_domain_block: Dileu gwaharddiad parth ebost + destroy_ip_block: Dileu rheol IP destroy_status: Dileu Statws disable_2fa_user: Diffodd 2FA disable_custom_emoji: Analluogi Emoji Addasiedig @@ -342,10 +345,10 @@ cy: add_new: Ychwanegu created_msg: Llwyddwyd i ychwanegu parth e-bost i'r gosbrestr delete: Dileu - destroyed_msg: Llwyddwyd i ddileu parth e-bost o'r gosbrestr + dns: + types: + mx: Cofnod MX domain: Parth - empty: Dim parthiau ebost ar y rhestr rhwystro. - from_html: o %{domain} new: create: Ychwanegu parth title: Cofnod newydd yng nghosbrestr e-byst diff --git a/config/locales/da.yml b/config/locales/da.yml index d1bc57a88..8d9be5f18 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -464,15 +464,22 @@ da: view: Vis domæneblokering email_domain_blocks: add_new: Tilføj ny + attempts_over_week: + one: "%{count} tilmeldingsforsøg over den seneste uge" + other: "%{count} tilmeldingsforsøg over den seneste uge" created_msg: E-maildomæne blokeret delete: Slet - destroyed_msg: E-maildomæne afblokeret + dns: + types: + mx: MX-post domain: Domæne - empty: Ingen e-maildomæner er pt. blokeret. - from_html: fra %{domain} new: create: Tilføj domæne + resolve: Opløs domæne title: Blokere nyt e-maildomæne + no_email_domain_block_selected: Ingen e-mailblokeringer ændret, da ingen var valgt + resolved_dns_records_hint_html: Domænenavnet opløses til flg. MX-domæner, som i sidste ende er ansvarlige for e-mailmodtagelse. Blokering af et MX-domæne blokerer også tilmeldinger fra enhver e-mailadresse på det pågældende MX-domæne, selv hvis det synlige domænenavn er et andet. Pas på ikke ikke at blokere store e-mailudbydere. + resolved_through_html: Opløst via %{domain} title: Blokerede e-maildomæner follow_recommendations: description_html: "Følg-anbefalinger hjælpe nye brugere til hurtigt at finde interessant indhold. Når en bruger ikke har interageret nok med andre til at danne personlige følg-anbefalinger, anbefales disse konti i stedet. De genberegnes dagligt baseret på en blanding af konti med de fleste nylige engagementer og fleste lokale følger-antal for et givet sprog." @@ -605,6 +612,7 @@ da: title: Notater notes_description_html: Se og skriv notater til andre moderatorer og dit fremtid selv quick_actions_description_html: 'Træf en hurtig foranstaltning eller rul ned for at se anmeldt indhold:' + remote_user_placeholder: fjernbrugeren fra %{instance} reopen: Genåbn anmeldelse report: 'Anmeldelse #%{id}' reported_account: Anmeldt konto @@ -775,6 +783,15 @@ da: rejected: Links fra denne udgiver vil ikke trende title: Udgivere rejected: Afvist + statuses: + allow: Tillad indlæg + allow_account: Tillad forfatter + disallow: Forbyd indlæg + disallow_account: Forbyd forfatter + shared_by: + one: Delt eller favoriseret én gang + other: Delt eller favoriseret %{friendly_count} gange + title: Populære opslag tags: current_score: Aktuel score %{score} dashboard: @@ -813,7 +830,7 @@ da: sensitive: for markering af vedkommendes konto som sensitiv silence: for begrænsning af vedkommendes konto suspend: for suspendering af vedkommendes konto - body: "%{target} appellerer en moderationsbeslutning fra %{action_taken_by} pr. %{date}, der var %{type}. Vedkommende skrev:" + body: "%{target} appellerer en moderationsbeslutning fra %{action_taken_by} pr. %{date} om at %{type}. Vedkommende skrev:" next_steps: Appellen kan godkendes for at fortryde moderationsbeslutningen eller den ignoreres. subject: "%{username} appellerer en moderationsbeslutning for %{instance}" new_pending_account: @@ -823,16 +840,21 @@ da: body: "%{reporter} har anmeldt %{target}" body_remote: Nogen fra %{domain} har anmeldt %{target} subject: Ny anmeldelse for %{instance} (#%{id}) - new_trending_links: - body: De flg. links er populære i dag, men deres udgivere er ikke tidligere blevet revideret. De vil ikke blive vist offentligt, medmindre du godkender dem. Yderligere notifikationer fra de samme udgivere genereres ikke. - no_approved_links: Der er i pt. ingen godkendte populære links. - requirements: Det laveste godkendte populære link er pt. "%{lowest_link_title}" med en score på %{lowest_link_score}. - subject: Nye populære links er klar til revidering på %{instance} - new_trending_tags: - body: 'Flg. hashtags er populære i dag, men de er ikke tidligere revideret. De vises ikke offentligt, medmindre du godkender dem:' - no_approved_tags: Der er pt. ingen godkendte populære hashtags. - requirements: 'Det laveste godkendte populære hashtags er pt. #%{lowest_tag_name} med en score på %{lowest_tag_score}.' - subject: Nye populære hashtags er klar til revidering på %{instance} + new_trends: + body: 'Flg. emner kræver revision, inden de kan vises offentligt:' + new_trending_links: + no_approved_links: Der er i pt. ingen godkendte populære links. + requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære link, der med en score på %{lowest_link_score} pt. er "%{lowest_link_title}".' + title: Populære links + new_trending_statuses: + no_approved_statuses: Der er i pt. ingen godkendte populære opslag. + requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære opslag, der med en score på %{lowest_status_score} pt. er %{lowest_status_url}.' + title: Populære opslag + new_trending_tags: + no_approved_tags: Der er pt. ingen godkendte populære hashtags. + requirements: 'Enhver af disse kandidater vil kunne overgå #%{rank} godkendte populære hastag, der med en score på #%{lowest_tag_score} pt. er %{lowest_tag_name}.' + title: Populære hashtags + subject: Nye tendenser klar til revision på %{instance} aliases: add_new: Opret alias created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto. @@ -1170,6 +1192,9 @@ da: carry_mutes_over_text: Denne bruger er flyttet fra %{acct}, som du har haft tavsgjort. copy_account_note_text: 'Denne bruger er flyttet fra %{acct}, her er dine tidligere noter om dem:' notification_mailer: + admin: + sign_up: + subject: "%{name} tilmeldte sig" digest: action: Se alle notifikationer body: Her er et kort resumé af de beskeder, du er gået glip af siden dit seneste besøg d. %{since} diff --git a/config/locales/de.yml b/config/locales/de.yml index edb918e67..33e2e648b 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -393,6 +393,18 @@ de: media_storage: Medienspeicher new_users: Neue Benutzer opened_reports: Erstellte Meldungen + pending_appeals_html: + one: "%{count} ausstehender Einspruch" + other: "%{count} ausstehende Einsprüche" + pending_reports_html: + one: "%{count} ausstehende Meldung" + other: "%{count} ausstehende Meldungen" + pending_tags_html: + one: "%{count} ausstehender Hashtag" + other: "%{count} ausstehende Hashtags" + pending_users_html: + one: "%{count} ausstehender Benutzer" + other: "%{count} ausstehende Benutzer" resolved_reports: Gelöste Meldungen software: Software sources: Registrierungsquellen @@ -442,6 +454,10 @@ de: silence: stummgeschaltet suspend: gesperrt show: + affected_accounts: + one: Ein Konto in der Datenbank betroffen + other: "%{count} Konten in der Datenbank betroffen" + zero: Kein Konto in der Datenbank ist betroffen retroactive: silence: Alle existierenden Konten dieser Domain nicht mehr stummschalten suspend: Alle existierenden Konten dieser Domain entsperren @@ -451,15 +467,22 @@ de: view: Zeige Domain-Blockade email_domain_blocks: add_new: Neue hinzufügen + attempts_over_week: + one: "%{count} Registrierungsversuch in der letzten Woche" + other: "%{count} Registrierungsversuche in der letzten Woche" created_msg: E-Mail-Domain-Blockade erfolgreich erstellt delete: Löschen - destroyed_msg: E-Mail-Domain-Blockade erfolgreich gelöscht + dns: + types: + mx: MX-Record domain: Domain - empty: Keine E-Mail-Domains sind momentan auf der Blacklist. - from_html: von %{domain} new: create: Blockade erstellen + resolve: Domain auflösen title: Neue E-Mail-Domain-Blockade + no_email_domain_block_selected: Es wurden keine E-Mail-Domain-Blockierungen geändert, da keine ausgewählt wurden + resolved_dns_records_hint_html: Der Domain-Name wird an die folgenden MX-Domains aufgelöst, die letztendlich für die Annahme von E-Mails verantwortlich sind. Das Blockieren einer MX-Domain blockiert Anmeldungen von jeder E-Mail-Adresse, die dieselbe MX-Domain verwendet, auch wenn der sichtbare Domainname anders ist. Achte darauf große E-Mail-Anbieter nicht zu blockieren. + resolved_through_html: Durch %{domain} aufgelöst title: E-Mail-Domain-Blockade follow_recommendations: description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basiert auf einer Mischung aus am meisten interagierenden Benutzerkonten und solchen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet." @@ -492,6 +515,10 @@ de: delivery_error_hint: Wenn eine Lieferung für %{count} Tage nicht möglich ist, wird sie automatisch als nicht lieferbar markiert. destroyed_msg: Daten von %{domain} sind nun in der Warteschlange für die bevorstehende Löschung. empty: Keine Domains gefunden. + known_accounts: + one: "%{count} bekanntes Konto" + other: "%{count} bekannte Konten" + zero: Kein bekanntes Konto moderation: all: Alle limited: Beschränkt @@ -590,6 +617,7 @@ de: title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderatoren und dein zukünftiges Selbst quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' + remote_user_placeholder: der entfernte Benutzer von %{instance} reopen: Meldung wieder eröffnen report: 'Meldung #%{id}' reported_account: Gemeldetes Konto @@ -748,6 +776,10 @@ de: allow_provider: Erlaube Herausgeber disallow: Verbiete Link disallow_provider: Verbiete Herausgeber + shared_by_over_week: + one: In der letzten Woche geteilt von einer Person + other: In der letzten Woche geteilt von %{count} Personen + zero: Geteilt von niemandem in der letzten Woche title: Angesagte Links usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal pending_review: Überprüfung ausstehend @@ -756,6 +788,15 @@ de: rejected: Links von diesem Herausgeber können nicht angesagt sein title: Herausgeber rejected: Abgelehnt + statuses: + allow: Beitrag erlauben + allow_account: Autor erlauben + disallow: Beitrag verbieten + disallow_account: Autor verbieten + shared_by: + one: Einmal geteilt oder favorisiert + other: "%{friendly_count} mal geteilt oder favorisiert" + title: Angesagte Beiträge tags: current_score: Aktuelle Punktzahl %{score} dashboard: @@ -774,6 +815,10 @@ de: trending_rank: 'Trend #%{rank}' usable: Kann verwendet werden usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal + used_by_over_week: + one: In der letzten Woche genutzt von einer Person + other: In der letzten Woche genutzt von %{count} Personen + zero: Genutzt von niemandem in der letzten Woche title: Trends warning_presets: add_new: Neu hinzufügen @@ -800,16 +845,21 @@ de: body: "%{reporter} hat %{target} gemeldet" body_remote: Jemand von %{domain} hat %{target} gemeldet subject: Neue Meldung auf %{instance} (#%{id}) - new_trending_links: - body: Die folgenden Links sind heute in den Trends, aber der Ursprung wurde bisher nicht überprüft. Sie werden nicht öffentlich angezeigt, es sei denn, du genehmigst sie. Sollten weitere Links vom selben Ursprung trenden, müssen sie nicht vorher überprüft werden. - no_approved_links: Derzeit sind keine Links hinterlegt, die genehmigt wurden. - requirements: Der am wenigsten genehmigte Trend-Link ist derzeit "%{lowest_link_title}" mit einer Punktzahl von %{lowest_link_score}. - subject: Neue Trend-Links zur Überprüfung auf %{instance} - new_trending_tags: - body: 'Die folgenden Hashtags trenden heute, aber sie wurden bisher nicht überprüft. Sie werden nicht öffentlich angezeigt, es sei denn, du genehmigst sie:' - no_approved_tags: Derzeit gibt es keine genehmigten trendene Hashtags. - requirements: 'Der am wenigsten genehmigte trendene Hashtag ist derzeit #%{lowest_tag_name} mit einer Punktzahl von %{lowest_tag_score}.' - subject: Neuer Hashtag zur Überprüfung auf %{instance} verfügbar + new_trends: + body: 'Die folgenden Einträge müssen überprüft werden, bevor sie öffentlich angezeigt werden können:' + new_trending_links: + no_approved_links: Derzeit sind keine trendenen Links hinterlegt, die genehmigt wurden. + requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten trendenen Link übertreffen, der derzeit "%{lowest_link_title}" mit einer Punktzahl von %{lowest_link_score} ist.' + title: Angesagte Links + new_trending_statuses: + no_approved_statuses: Derzeit sind keine trendenen Beiträge hinterlegt, die genehmigt wurden. + requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten trendenen Beitrag übertreffen, der derzeit "%{lowest_status_url}" mit einer Punktzahl von %{lowest_status_score} ist.' + title: Angesagte Beiträge + new_trending_tags: + no_approved_tags: Derzeit gibt es keine genehmigten trendenen Hashtags. + requirements: 'Jeder dieser Kandidaten könnte den #%{rank} genehmigten trendenen Hashtag übertreffen, der derzeit "%{lowest_tag_name}" mit einer Punktzahl von %{lowest_tag_score} ist.' + title: Angesagte Hashtags + subject: Neue Trends zur Überprüfung auf %{instance} aliases: add_new: Alias erstellen created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. @@ -1148,6 +1198,9 @@ de: carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast. copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:' notification_mailer: + admin: + sign_up: + subject: "%{name} registrierte sich" digest: action: Zeige alle Benachrichtigungen body: Hier ist eine kurze Zusammenfassung der Nachrichten, die du seit deinem letzten Besuch am %{since} verpasst hast diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index b9ab81618..6d12751d7 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -17,6 +17,7 @@ ast: doorkeeper: applications: buttons: + authorize: Autorizar cancel: Encaboxar destroy: Destruyir edit: Editar @@ -40,6 +41,9 @@ ast: scopes: Ámbitos title: 'Aplicación: %{name}' authorizations: + buttons: + authorize: Autorizar + deny: Negar error: title: Asocedió un fallu new: diff --git a/config/locales/el.yml b/config/locales/el.yml index 8bc71c0b7..328c28186 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -373,12 +373,15 @@ el: view: Εμφάνιση αποκλεισμού τομέα email_domain_blocks: add_new: Πρόσθεση νέου + attempts_over_week: + one: "%{count} προσπάθεια την τελευταία εβδομάδα" + other: "%{count} προσπάθειες εγγραφής την τελευταία εβδομάδα" created_msg: Επιτυχής πρόσθεση email τομέα σε μαύρη λίστα delete: Διαγραφή - destroyed_msg: Επιτυχής διαγραφή email τομέα από τη μαύρη λίστα + dns: + types: + mx: Εγγραφή MX domain: Τομέας - empty: Δεν έχουν οριστεί αποκλεισμένοι τομείς email. - from_html: από %{domain} new: create: Πρόσθεση τομέα title: Νέα εγγραφή email στη μαύρη λίστα @@ -481,6 +484,7 @@ el: placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη ενημέρωση... title: Σημειώσεις quick_actions_description_html: 'Κάντε μια γρήγορη ενέργεια ή μετακινηθείτε προς τα κάτω για να δείτε το αναφερόμενο περιεχόμενο:' + remote_user_placeholder: ο απομακρυσμένος χρήστης από %{instance} reopen: Ξανάνοιξε την καταγγελία report: 'Καταγγελία #%{id}' reported_account: Αναφερόμενος λογαριασμός @@ -925,6 +929,9 @@ el: carry_mutes_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποσιωπήσει. copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:' notification_mailer: + admin: + sign_up: + subject: "%{name} έχει εγγραφεί" digest: action: Δες όλες τις ειδοποιήσεις body: Μια σύνοψη των μηνυμάτων που έχασες από την τελευταία επίσκεψή σου στις %{since} diff --git a/config/locales/eo.yml b/config/locales/eo.yml index e44496f05..5a922e6a4 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -379,10 +379,7 @@ eo: add_new: Aldoni novan created_msg: Retadreso sukcese aldonita al la nigra listo delete: Forigi - destroyed_msg: Retadreso sukcese forigita de la nigra listo domain: Domajno - empty: Neniu retadresa domajno nune estas en la nigra listo. - from_html: de %{domain} new: create: Aldoni domajnon title: Nova blokado de retadresa domajno diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index c901394bb..8956f8dd7 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -467,15 +467,22 @@ es-AR: view: Ver bloqueo de dominio email_domain_blocks: add_new: Agregar nuevo + attempts_over_week: + one: "%{count} intento durante la última semana" + other: "%{count} intentos durante la última semana" created_msg: Se bloqueó el dominio de correo electrónico exitosamente delete: Eliminar - destroyed_msg: Se desbloqueó el dominio de correo electrónico exitosamente + dns: + types: + mx: Registro MX domain: Dominio - empty: Actualmente no hay dominios de correo electrónico bloqueados. - from_html: de %{domain} new: create: Agregar dominio + resolve: Resolver dominio title: Bloquear nuevo dominio de correo electrónico + no_email_domain_block_selected: No se cambiaron bloques de dominio ya que no se seleccionó ninguno + resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. Tené cuidado de no bloquear los principales proveedores de correo electrónico. + resolved_through_html: Resuelto a través de %{domain} title: Dominios bloqueados de correo electrónico follow_recommendations: description_html: "Las recomendaciones de cuentas para seguir ayudan a los nuevos usuarios a encontrar rápidamente contenido interesante. Cuando un usuario no ha interactuado con otros lo suficiente como para formar recomendaciones personalizadas de seguimiento, se recomiendan estas cuentas, en su lugar. Se recalculan diariamente a partir de una mezcla de cuentas con las interacciones más recientes y el mayor número de seguidores para un idioma determinado." @@ -610,6 +617,7 @@ es-AR: title: Notas notes_description_html: Ver y dejar notas para otros moderadores y como referencia futura quick_actions_description_html: 'Tomá una acción rápida o desplazate hacia abajo para ver el contenido denunciado:' + remote_user_placeholder: el usuario remoto de %{instance} reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Cuenta denunciada @@ -780,6 +788,15 @@ es-AR: rejected: Los enlaces de este medio no serán tendencia title: Medios rejected: Rechazadas + statuses: + allow: Permitir mensaje + allow_account: Permitir autor + disallow: Rechazar mensaje + disallow_account: Rechazar autor + shared_by: + one: Compartido o marcado como favorito una vez + other: Compartido y marcado como favorito %{friendly_count} veces + title: Mensajes en tendencia tags: current_score: Puntuación actual %{score} dashboard: @@ -828,16 +845,21 @@ es-AR: body: "%{reporter} denunció a %{target}" body_remote: Alguien de %{domain} denunció a %{target} subject: Nueva denuncia para %{instance} (#%{id}) - new_trending_links: - body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los aprobés. No se generarán más notificaciones de estos medios. - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. - subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} - new_trending_tags: - body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las aprobés:' - no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. - requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. - subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} + new_trends: + body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' + new_trending_links: + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado de #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' + title: Enlaces en tendencia + new_trending_statuses: + no_approved_statuses: Actualmente no hay mensajes en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar el mensaje de tendencia aprobado de #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' + title: Mensajes en tendencia + new_trending_tags: + no_approved_tags: Actualmente no hay etiquetas en tendencia aprobadas. + requirements: 'Cualquiera de estos candidatos podría superar la etiqueta en tendencia aprobada de #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' + title: Etiquetas en tendencia + subject: Nuevas tendencias para revisar en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se creó exitosamente. Ahora podés empezar la mudanza desde la cuenta vieja. @@ -1176,6 +1198,9 @@ es-AR: carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, acá están tus notas previas sobre él/ella:' notification_mailer: + admin: + sign_up: + subject: Se registró %{name} digest: action: Ver todas las notificaciones body: Acá tenés un resumen de los mensajes que te perdiste desde tu última visita, el %{since} diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 06716034b..707e279c4 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -393,6 +393,18 @@ es-MX: media_storage: Almacenamiento multimedia new_users: nuevos usuarios opened_reports: informes abiertos + pending_appeals_html: + one: "%{count} apelación pendiente" + other: "%{count} apelaciones pendientes" + pending_reports_html: + one: "%{count} informe pendiente" + other: "%{count} informes pendientes" + pending_tags_html: + one: "%{count} etiqueta pendiente" + other: "%{count} etiquetas pendientes" + pending_users_html: + one: "%{count} usuario pendiente" + other: "%{count} usuarios pendientes" resolved_reports: informes resueltos software: Software sources: Fuentes de registro @@ -442,6 +454,10 @@ es-MX: silence: silenciado suspend: suspendido show: + affected_accounts: + one: Una cuenta en la base de datos afectada + other: "%{count} cuentas en la base de datos afectada" + zero: Ninguna cuenta en la base de datos está afectada retroactive: silence: Des-silenciar todas las cuentas existentes de este dominio suspend: Des-suspender todas las cuentas existentes de este dominio @@ -451,15 +467,22 @@ es-MX: view: Ver dominio bloqueado email_domain_blocks: add_new: Añadir nuevo + attempts_over_week: + one: "%{count} intento durante la última semana" + other: "%{count} intentos de registro durante la última semana" created_msg: Dominio de correo añadido a la lista negra con éxito delete: Borrar - destroyed_msg: Dominio de correo borrado de la lista negra con éxito + dns: + types: + mx: Registro MX domain: Dominio - empty: Actualmente no hay dominios de correo electrónico en la lista negra. - from_html: de %{domain} new: create: Añadir dominio + resolve: Resolver dominio title: Nueva entrada en la lista negra de correo + no_email_domain_block_selected: No se han cambiado bloqueos de dominio ya que ninguno ha sido seleccionado + resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. Tenga cuidado de no bloquear los principales proveedores de correo electrónico. + resolved_through_html: Resuelto a través de %{domain} title: Lista negra de correo follow_recommendations: description_html: "Las recomendaciones de cuentas ayudan a los nuevos usuarios a encontrar rápidamente contenido interesante. Cuando un usuario no ha interactuado con otros lo suficiente como para suscitar recomendaciones personalizadas de cuentas a las que seguir, en su lugar se le recomiendan estas cuentas. Se recalculan diariamente a partir de una mezcla de cuentas con el mayor número de interacciones recientes y con el mayor número de seguidores locales con un idioma determinado." @@ -492,6 +515,10 @@ es-MX: delivery_error_hint: Si la entrega no es posible a lo largo de %{count} días, se marcará automáticamente como no entregable. destroyed_msg: Los datos de %{domain} están ahora en cola para su inminente eliminación. empty: No se encontraron dominios. + known_accounts: + one: "%{count} cuenta conocida" + other: "%{count} cuentas conocidas" + zero: Ninguna cuenta conocida moderation: all: Todos limited: Limitado @@ -590,6 +617,7 @@ es-MX: title: Notas notes_description_html: Ver y dejar notas a otros moderadores y a tu yo futuro quick_actions_description_html: 'Toma una acción rápida o desplázate hacia abajo para ver el contenido denunciado:' + remote_user_placeholder: el usuario remoto de %{instance} reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada @@ -748,6 +776,10 @@ es-MX: allow_provider: Permitir medio disallow: Rechazar enlace disallow_provider: Rechazar medio + shared_by_over_week: + one: Compartido por una persona en la última semana + other: Compartido por %{count} personas durante la última semana + zero: Compartido por nadie en la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer pending_review: Revisión pendiente @@ -756,6 +788,15 @@ es-MX: rejected: Los enlaces de este medio no pueden ser tendencia title: Medios rejected: Rechazadas + statuses: + allow: Permitir publicación + allow_account: Permitir autor + disallow: No permitir publicación + disallow_account: No permitir autor + shared_by: + one: Compartido o marcado como favorito una vez + other: Compatido o marcado como favorito %{friendly_count} veces + title: Publicaciones destacadas tags: current_score: Puntuación actual %{score} dashboard: @@ -774,6 +815,10 @@ es-MX: trending_rank: Tendencia n.º %{rank} usable: Pueden usarse usage_comparison: Usada %{today} veces hoy, comparado con %{yesterday} ayer + used_by_over_week: + one: Usada por una persona durante la última semana + other: Usada por %{count} personas durante la última semana + zero: Usada por nadie en la última semana title: Tendencias warning_presets: add_new: Añadir nuevo @@ -800,16 +845,21 @@ es-MX: body: "%{reporter} ha reportado a %{target}" body_remote: Alguien de %{domain} a reportado a %{target} subject: Nuevo reporte para la %{instance} (#%{id}) - new_trending_links: - body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los apruebes. No se generarán más notificaciones de estos medios. - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. - subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} - new_trending_tags: - body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las apruebes:' - no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. - requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. - subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} + new_trends: + body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' + new_trending_links: + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado por #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' + title: Enlaces en tendencia + new_trending_statuses: + no_approved_statuses: Actualmente no hay enlaces en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar la publicación en tendencia aprobado por #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' + title: Publicaciones en tendencia + new_trending_tags: + no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. + requirements: 'Cualquiera de estos candidatos podría superar el hashtag en tendencia aprobado por #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' + title: Etiquetas en tendencia + subject: Nuevas tendencias esperando ser revisadas en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. @@ -1148,6 +1198,9 @@ es-MX: carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' notification_mailer: + admin: + sign_up: + subject: "%{name} se registró" digest: action: Ver todas las notificaciones body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} diff --git a/config/locales/es.yml b/config/locales/es.yml index cc2cad8e5..1202b2d9e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -20,7 +20,7 @@ es: documentation: Documentación federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. get_apps: Probar una aplicación móvil - hosted_on: Mastodon hosteado en %{domain} + hosted_on: Mastodon alojado en %{domain} instance_actor_flash: | Esta cuenta es un actor virtual usado para representar al servidor y no a ningún usuario individual. Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio. @@ -467,15 +467,22 @@ es: view: Ver dominio bloqueado email_domain_blocks: add_new: Añadir nuevo + attempts_over_week: + one: "%{count} intento durante la última semana" + other: "%{count} intentos de registro durante la última semana" created_msg: Dominio de correo añadido a la lista negra con éxito delete: Borrar - destroyed_msg: Dominio de correo borrado de la lista negra con éxito + dns: + types: + mx: Registro MX domain: Dominio - empty: Actualmente no hay dominios de correo electrónico en la lista negra. - from_html: de %{domain} new: create: Añadir dominio + resolve: Resolver dominio title: Nueva entrada en la lista negra de correo + no_email_domain_block_selected: No se han cambiado bloqueos de dominio ya que ninguno ha sido seleccionado + resolved_dns_records_hint_html: El nombre de dominio resuelve los siguientes dominios MX, los cuales son responsables en última instancia de aceptar el correo electrónico. Bloquear un dominio MX bloqueará los registros de cualquier dirección de correo electrónico que utilice el mismo dominio MX, incluso si el nombre de dominio visible es diferente. Tenga cuidado de no bloquear los principales proveedores de correo electrónico. + resolved_through_html: Resuelto a través de %{domain} title: Lista negra de correo follow_recommendations: description_html: "Las recomendaciones de cuentas ayudan a los nuevos usuarios a encontrar rápidamente contenido interesante. Cuando un usuario no ha interactuado con otros lo suficiente como para suscitar recomendaciones personalizadas de cuentas a las que seguir, en su lugar se le recomiendan estas cuentas. Se recalculan diariamente a partir de una mezcla de cuentas con el mayor número de interacciones recientes y con el mayor número de seguidores locales con un idioma determinado." @@ -610,6 +617,7 @@ es: title: Notas notes_description_html: Ver y dejar notas a otros moderadores y a tu yo futuro quick_actions_description_html: 'Toma una acción rápida o desplázate hacia abajo para ver el contenido denunciado:' + remote_user_placeholder: el usuario remoto de %{instance} reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada @@ -692,7 +700,7 @@ es: title: Modo de registros show_known_fediverse_at_about_page: desc_html: Cuando esté desactivado, se mostrarán solamente publicaciones locales en la línea temporal pública - title: Mostrar fediverso conocido en la vista previa de la historia + title: Incluye contenido federado en la página de línea de tiempo pública no autenticada show_staff_badge: desc_html: Mostrar un parche de staff en la página de un usuario title: Mostrar parche de staff @@ -780,6 +788,15 @@ es: rejected: Los enlaces de este medio no pueden ser tendencia title: Medios rejected: Rechazadas + statuses: + allow: Permitir publicación + allow_account: Permitir autor + disallow: No permitir publicación + disallow_account: No permitir autor + shared_by: + one: Compartido o marcado como favorito una vez + other: Compatido o marcado como favorito %{friendly_count} veces + title: Publicaciones destacadas tags: current_score: Puntuación actual %{score} dashboard: @@ -828,16 +845,21 @@ es: body: "%{reporter} ha reportado a %{target}" body_remote: Alguien de %{domain} a reportado a %{target} subject: Nuevo reporte para la %{instance} (#%{id}) - new_trending_links: - body: Los siguientes enlaces están en tendencia hoy, pero sus medios de origen no han sido revisados previamente. No se mostrarán públicamente a menos que los apruebes. No se generarán más notificaciones de estos medios. - no_approved_links: Actualmente no hay enlaces en tendencia aprobados. - requirements: El enlace en tendencia aprobado más bajo actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}. - subject: Nuevos enlaces en tendencia esperando ser revisados en %{instance} - new_trending_tags: - body: 'Las siguientes etiquetas están en tendencia hoy, pero no han sido revisadas previamente. No se mostrarán públicamente a menos que las apruebes:' - no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. - requirements: La etiqueta en tendencia aprobada más baja actualmente es "%{lowest_tag_name}" con una puntuación de %{lowest_tag_score}. - subject: Nuevas etiquetas en tendencia esperando ser revisadas en %{instance} + new_trends: + body: 'Los siguientes elementos necesitan una revisión antes de que se puedan mostrar públicamente:' + new_trending_links: + no_approved_links: Actualmente no hay enlaces en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar el enlace de tendencia aprobado por #%{rank}, que actualmente es "%{lowest_link_title}" con una puntuación de %{lowest_link_score}.' + title: Enlaces en tendencia + new_trending_statuses: + no_approved_statuses: Actualmente no hay enlaces en tendencia aprobados. + requirements: 'Cualquiera de estos candidatos podría superar la publicación en tendencia aprobado por #%{rank}, que actualmente es %{lowest_status_url} con una puntuación de %{lowest_status_score}.' + title: Publicaciones en tendencia + new_trending_tags: + no_approved_tags: Actualmente no hay ninguna etiqueta en tendencia aprobada. + requirements: 'Cualquiera de estos candidatos podría superar el hashtag en tendencia aprobado por #%{rank}, que actualmente es #%{lowest_tag_name} con una puntuación de %{lowest_tag_score}.' + title: Etiquetas en tendencia + subject: Nuevas tendencias esperando ser revisadas en %{instance} aliases: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. @@ -1045,9 +1067,9 @@ es: filters: contexts: account: Perfiles - home: Timeline propio + home: Inicio y listas notifications: Notificaciones - public: Timeline público + public: Líneas de tiempo públicas thread: Conversaciones edit: title: Editar filtro @@ -1176,6 +1198,9 @@ es: carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado. copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:' notification_mailer: + admin: + sign_up: + subject: "%{name} se registró" digest: action: Ver todas las notificaciones body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since} @@ -1626,7 +1651,7 @@ es: subject: Bienvenido a Mastodon tip_federated_timeline: La línea de tiempo federada es una vista de la red de Mastodon. Pero solo incluye gente que tus vecinos están siguiendo, así que no está completa. tip_following: Sigues a tus administradores de servidor por defecto. Para encontrar más gente interesante, revisa las lineas de tiempo local y federada. - tip_local_timeline: La linea de tiempo local is una vista de la gente en %{instance}. Estos son tus vecinos inmediatos! + tip_local_timeline: La línea de tiempo local es una vista de la gente en %{instance}. ¡Estos son tus vecinos inmediatos! tip_mobile_webapp: Si el navegador de tu dispositivo móvil ofrece agregar Mastodon a tu página de inicio, puedes recibir notificaciones. Actúa como una aplicación nativa en muchas formas! tips: Consejos title: Te damos la bienvenida a bordo, %{name}! diff --git a/config/locales/et.yml b/config/locales/et.yml index 7c7b4eb51..fdf5081d5 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -328,10 +328,7 @@ et: add_new: Lisa uus created_msg: E-posti aadressi keelunimekirja lisamine õnnestus delete: Kustuta - destroyed_msg: E-posti aadressi keelunimekirjast kustutamine õnnestus domain: Domeen - empty: Ühtegi e-postidomeeni pole blokeeritud. - from_html: "%{domain}-ist" new: create: Lisa domeen title: Uus e-posti keelunimekirja sisend diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 785cf14d2..6b07e3a03 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -449,10 +449,7 @@ eu: add_new: Gehitu berria created_msg: Ongi gehitu da e-mail helbidea domeinuen zerrenda beltzera delete: Ezabatu - destroyed_msg: Ongi ezabatu da e-mail domeinua zerrenda beltzetik domain: Domeinua - empty: Ez dago e-mail domeinurik zerrenda beltzean. - from_html: "%{domain} domeinutik" new: create: Gehitu domeinua title: Sarrera berria e-mail zerrenda beltzean @@ -782,16 +779,6 @@ eu: body: "%{reporter}(e)k %{target} salatu du" body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) - new_trending_links: - body: Ondorengo estekak dira joera gaur, baina beren argitaratzaileak ez dira berrikusi aurretik. Ez dira bistaratuko publikoki onartu ezean. Ez da sortuko argitaratzaile hauen jakinarazpen gehiago. - no_approved_links: Ez dago onartutako esteken joerarik une honetan. - requirements: Onartutako esteken joera baxuena %{lowest_link_title} da une honetan %{lowest_link_score} emaitzarekin. - subject: Esteken joera gehiago daude berrikusteko %{instance} instantzian - new_trending_tags: - body: 'Ondorengo traolak dira joera gaur, baina ez dira berrikusi aurretik. Ez dira bistaratuko publikoki onartzen ez badituzu:' - no_approved_tags: Ez dago onartutako traolen joerarik une honetan. - requirements: Onartutako traolen joera baxuena %{lowest_tag_name} da une honetan %{lowest_tag_score} emaitzarekin. - subject: Traolen joera gehiago daude berrikusteko %{instance} instantzian aliases: add_new: Sortu ezizena created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 933bc3610..48b1f095b 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -439,10 +439,7 @@ fa: add_new: افزودن تازه created_msg: مسدودسازی دامین ایمیل با موفقیت ساخته شد delete: پاک‌کردن - destroyed_msg: مسدودسازی دامین ایمیل با موفقیت پاک شد domain: دامین - empty: هیچ دامنه ایمیلی در حال حاضر در لیست‌سیاه قرار نگرفته است. - from_html: از %{domain} new: create: ساختن مسدودسازی title: مسدودسازی دامین ایمیل تازه diff --git a/config/locales/fi.yml b/config/locales/fi.yml index f438552ce..878a1fac0 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -407,7 +407,7 @@ fi: other: "%{count} odottavat käyttäjät" resolved_reports: raportit ratkaistu software: Ohjelmisto - sources: Kirjautumisen lähteet + sources: Rekisteröitymisen lähteet space: Tilankäyttö title: Hallintapaneeli top_languages: Aktiiviset kielet @@ -467,15 +467,22 @@ fi: view: Näytä verkkotunnuksen esto email_domain_blocks: add_new: Lisää uusi + attempts_over_week: + one: "%{count} yritystä viimeisen viikon aikana" + other: "%{count} rekisteröitymisyritystä viimeisen viikon aikana" created_msg: Sähköpostiverkkotunnuksen lisäys estolistalle onnistui delete: Poista - destroyed_msg: Sähköpostiverkkotunnuksen poisto estolistalta onnistui + dns: + types: + mx: MX tietue domain: Verkkotunnus - empty: Sähköpostiosoitteita ei ole tällä hetkellä estetty. - from_html: käyttäjältä %{domain} new: create: Lisää verkkotunnus + resolve: Ratkaise verkkotunnus title: Uusi sähköpostiestolistan merkintä + no_email_domain_block_selected: Sähköpostin verkkotunnuksia ei muutettu, koska yhtään ei valittu + resolved_dns_records_hint_html: Verkkotunnuksen nimi määräytyy seuraaviin MX-verkkotunnuksiin, jotka ovat viime kädessä vastuussa sähköpostin vastaanottamisesta. MX-verkkotunnuksen estäminen estää kirjautumisen mistä tahansa sähköpostiosoitteesta, joka käyttää samaa MX-verkkotunnusta, vaikka näkyvä verkkotunnuksen nimi olisikin erilainen. Varo estämästä suuria sähköpostin palveluntarjoajia. + resolved_through_html: Ratkaistu %{domain} kautta title: Sähköpostiestolista follow_recommendations: description_html: "Suositusten noudattaminen auttaa uusia käyttäjiä löytämään nopeasti mielenkiintoista sisältöä.. Jos käyttäjä ei ole ollut vuorovaikutuksessa tarpeeksi muiden kanssa luodakseen henkilökohtaisia seuraajia, näitä muita tilejä suositellaan sen sijaan. Ne lasketaan uudelleen päivittäin yhdistelmästä tilejä, joilla on korkein viimeaikainen käyttö ja korkein paikallinen seuraajien määrä tietyllä kielellä." @@ -580,14 +587,20 @@ fi: actions: delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista. other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi. + resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan. + silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa. + suspend_description_html: Profiili ja sen koko sisältö eivät ole käytettävissä, kunnes se lopulta poistetaan. Vuorovaikutus tilin kanssa on mahdotonta. Palautettavissa 30 päivän kuluessa. + actions_description_html: Päätä, mihin toimiin ryhdyt tämän ilmoituksen ratkaisemiseksi. Jos ryhdyt rangaistustoimeen ilmoitettua tiliä vastaan, heille lähetetään sähköposti-ilmoitus, paitsi jos Roskaposti luokka on valittuna. add_to_report: Lisää raporttiin are_you_sure: Oletko varma? assign_to_self: Ota tehtäväksi assigned: Määritetty valvoja by_target_domain: Ilmoitetun tilin verkkotunnus category: Kategoria + category_description_html: Syy, miksi tämä tili ja/tai sisältö ilmoitettiin, mainitaan yhteydenotossa ilmoitettuun tiliin comment: none: Ei mitään + comment_description_html: 'Antaakseen lisätietoja %{name} kirjoitti:' created_at: Raportoitu delete_and_resolve: Poista viestejä forwarded: Välitetty @@ -604,6 +617,7 @@ fi: title: Merkinnät notes_description_html: Tarkastele ja jätä merkintöjä muille valvojille ja itsellesi tulevaisuuteen quick_actions_description_html: 'Suorita nopea toiminto tai vieritä alas nähdäksesi raportoitu sisältö:' + remote_user_placeholder: etäkäyttäjä paikasta %{instance} reopen: Avaa raportti uudestaan report: Raportti nro %{id} reported_account: Raportoitu tili @@ -731,6 +745,16 @@ fi: no_status_selected: Viestejä ei muutettu, koska yhtään ei ole valittuna title: Tilin tilat with_media: Sisältää mediaa + strikes: + actions: + delete_statuses: "%{name} poisti käyttäjän %{target} viestit" + disable: "%{name} jäädytti %{target} tilin" + none: "%{name} lähetti varoituksen henkilölle %{target}" + sensitive: "%{name} merkitsi käyttäjän %{target} tilin arkaluonteiseksi" + silence: "%{name} rajoitti käyttäjän %{target} tilin" + suspend: "%{name} keskeytti käyttäjän %{target} tilin" + appeal_approved: Valitti + appeal_pending: Valitus vireillä system_checks: database_schema_check: message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla @@ -752,6 +776,10 @@ fi: allow_provider: Salli julkaisija disallow: Hylkää linkki disallow_provider: Estä julkaisija + shared_by_over_week: + one: Jakanut yksi henkilö viimeisen viikon aikana + other: Jakanut %{count} henkilöä viimeisen viikon aikana + zero: Kukaan ei ole jakanut viimeisen viikon aikana title: Suositut linkit usage_comparison: Jaettu %{today} kertaa tänään verrattuna eilen %{yesterday} pending_review: Odottaa tarkistusta @@ -760,6 +788,15 @@ fi: rejected: Tämän julkaisijan linkit eivät voi trendata title: Julkaisijat rejected: Hylätty + statuses: + allow: Salli viesti + allow_account: Salli tekijä + disallow: Estä viesti + disallow_account: Estä tekijä + shared_by: + one: Jaettu tai suosikki kerran + other: Jaettu ja lisätty suosikkeihin %{friendly_count} kertaa + title: Suositut viestit tags: current_score: Nykyinen tulos %{score} dashboard: @@ -778,6 +815,10 @@ fi: trending_rank: 'Nousussa #%{rank}' usable: Voidaan käyttää usage_comparison: Käytetty %{today} kertaa tänään, verrattuna %{yesterday} eiliseen + used_by_over_week: + one: Yhden henkilön käyttämä viimeisen viikon aikana + other: Käyttänyt %{count} henkilöä viimeisen viikon aikana + zero: Ei kenenkään käytössä viimeisen viikon aikana title: Trendit warning_presets: add_new: Lisää uusi @@ -786,6 +827,17 @@ fi: empty: Et ole vielä määrittänyt yhtään varoitusesiasetusta. title: Hallinnoi varoitusesiasetuksia admin_mailer: + new_appeal: + actions: + delete_statuses: poistaa heidän viestit + disable: jäädyttää heidän tilinsä + none: varoitus + sensitive: merkitä heidän tilinsä arkaluonteiseksi + silence: rajoittaa heidän tilinsä + suspend: keskeyttää heidän tilinsä + body: "%{target} on valittanut valvojan päätöksestä %{action_taken_by} aika %{date}, joka oli %{type}. He kirjoittivat:" + next_steps: Voit hyväksyä vetoomuksen ja kumota päätöksen tai jättää sen huomiotta. + subject: "%{username} valittaa valvojan päätöksestä, joka koskee %{instance}" new_pending_account: body: Uuden tilin tiedot ovat alla. Voit hyväksyä tai hylätä tämän hakemuksen. subject: Uusi tili tarkastettavana %{instance} (%{username}) @@ -793,16 +845,21 @@ fi: body: "%{reporter} on raportoinut kohteen %{target}" body_remote: Joku osoitteesta %{domain} on raportoinut kohteen %{target} subject: Uusi raportti instanssista %{instance} (nro %{id}) - new_trending_links: - body: Seuraavat linkit trendaavat tänään, mutta niiden julkaisijoita ei ole aiemmin tarkistettu. Niitä ei näytetä julkisesti, ellet hyväksy niitä. Uusia ilmoituksia samoilta julkaisijoilta ei luoda. - no_approved_links: Tällä hetkellä ei ole hyväksyttyjä trendaavia linkkejä. - requirements: Alin hyväksytty trendilinkki on tällä hetkellä "%{lowest_link_title}" pisteillä %{lowest_link_score}. - subject: Uudet trendikkäät linkit tarkistettavaksi %{instance} - new_trending_tags: - body: 'Seuraavat hashtagit ovat trendejä tänään, mutta niitä ei ole aiemmin tarkistettu. Niitä ei näytetä julkisesti, ellet hyväksy niitä:' - no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä hashtageja. - requirements: Alin hyväksytty trendikäs hashtag on tällä hetkellä "%{lowest_tag_name}" pisteillä %{lowest_tag_score}. - subject: Uusia trendikkäitä hashtageja tarkistettavaksi %{instance} + new_trends: + body: 'Seuraavat kohteet on tarkistettava ennen kuin ne voidaan näyttää julkisesti:' + new_trending_links: + no_approved_links: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä linkkejä. + requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään linkin, joka on tällä hetkellä "%{lowest_link_title}" arvosanalla %{lowest_link_score}.' + title: Suositut linkit + new_trending_statuses: + no_approved_statuses: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä viestejä. + requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään julkaisun, joka on tällä hetkellä %{lowest_status_url} arvosanalla %{lowest_status_score}.' + title: Suositut viestit + new_trending_tags: + no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä hashtageja. + requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään hashtagin, joka on tällä hetkellä #%{lowest_tag_name} arvosanalla %{lowest_tag_score}.' + title: Suositut hashtagit + subject: Uusia trendejä tarkistettavaksi %{instance} aliases: add_new: Luo alias created_msg: Uusi alias luotiin onnistuneesti. Voit nyt aloittaa siirron vanhasta tilistä. @@ -943,10 +1000,30 @@ fi: explore_mastodon: Tutki %{title}ia disputes: strikes: + action_taken: Toteutetut toimet + appeal: Vetoomus + appeal_approved: Tähän valitukseen on haettu muutosta, eikä se ole enää voimassa + appeal_rejected: Valitus on hylätty + appeal_submitted_at: Valitus lähetetty + appealed_msg: Valituksesi on lähetetty. Jos se hyväksytään, sinulle ilmoitetaan. + appeals: + submit: Lähetä valitus + associated_report: Liittyvä raportti created_at: Päivätty recipient: Osoitettu status: 'Viesti #%{id}' status_removed: Viesti on jo poistettu järjestelmästä + title: "%{action} alkaen %{date}" + title_actions: + delete_statuses: Viestin poisto + disable: Tilin jäädyttäminen + none: Varoitus + sensitive: Merkintä tilille arkaluonteisena + silence: Tilin rajoittaminen + suspend: Tilin keskeyttäminen + your_appeal_approved: Valituksesi on hyväksytty + your_appeal_pending: Olet lähettänyt valituksen + your_appeal_rejected: Valituksesi on hylätty domain_validator: invalid_domain: ei ole kelvollinen toimialueen nimi errors: @@ -1121,6 +1198,9 @@ fi: carry_mutes_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka mykistit. copy_account_note_text: 'Tämä käyttäjä siirtyi paikasta %{acct}, tässä olivat aiemmat muistiinpanosi niistä:' notification_mailer: + admin: + sign_up: + subject: "%{name} kirjautunut" digest: action: Näytä kaikki ilmoitukset body: Tässä lyhyt yhteenveto viime käyntisi (%{since}) jälkeen tulleista viesteistä @@ -1158,6 +1238,8 @@ fi: title: Uusi buustaus status: subject: "%{name} julkaisi juuri" + update: + subject: "%{name} muokkasi viestiä" notifications: email_events: Sähköposti-ilmoitusten tapahtumat email_events_hint: 'Valitse tapahtumat, joista haluat saada ilmoituksia:' @@ -1391,10 +1473,15 @@ fi: '7889238': 3 kuukautta min_age_label: Ikäraja min_favs: Pidä viestit suosikeissa vähintään + min_favs_hint: Ei poista yhtään julkaisuasi, jotka ovat saaneet vähintään tämän määrän tykkäyksiä. Jätä tyhjäksi, jos haluat poistaa julkaisuja tykkäyksien määrästä riippumatta + min_reblogs: Pidä viestit tehostettuna vähintään + min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä stream_entries: pinned: Kiinnitetty tuuttaus reblogged: buustasi sensitive_content: Arkaluontoista sisältöä + tags: + does_not_match_previous_name: ei vastaa edellistä nimeä terms: title: "%{instance}, käyttöehdot ja tietosuojakäytäntö" themes: @@ -1409,6 +1496,7 @@ fi: two_factor_authentication: add: Lisää disable: Poista käytöstä + disabled_success: Kaksivaiheinen todennus on poistettu käytöstä edit: Muokkaa enabled: Kaksivaiheinen todentaminen käytössä enabled_success: Kaksivaiheisen todentamisen käyttöönotto onnistui @@ -1421,6 +1509,15 @@ fi: recovery_instructions_html: Jos menetät puhelimesi, voit kirjautua tilillesi jollakin alla olevista palautuskoodeista. Pidä palautuskoodit hyvässä tallessa. Voit esimerkiksi tulostaa ne ja säilyttää muiden tärkeiden papereiden joukossa. webauthn: Suojausavaimet user_mailer: + appeal_approved: + action: Siirry tilillesi + explanation: Valitus tiliäsi koskevasta varoituksesta %{strike_date} jonka lähetit %{appeal_date} on hyväksytty. Tilisi on jälleen hyvässä kunnossa. + subject: Valituksesi %{date} on hyväksytty + title: Valitus hyväksytty + appeal_rejected: + explanation: Valitus tiliäsi koskevasta varoituksesta %{strike_date} jonka lähetit %{appeal_date} on hylätty. + subject: Valituksesi %{date} on hylätty + title: Valitus hylätty backup_ready: explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen! subject: Arkisto on valmiina ladattavaksi @@ -1432,12 +1529,27 @@ fi: subject: Ole hyvä ja vahvista sisäänkirjautumisyritys title: Sisäänkirjautumisyritys warning: + appeal: Lähetä valitus + appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}. categories: spam: Roskaposti + violation: Sisältö rikkoo seuraavia yhteisön sääntöjä + explanation: + delete_statuses: Joitakin viestejäsi on havaittu rikkovan yhtä tai useampaa yhteisön sääntöä ja %{instance} valvojat ovat poistaneet ne. Tulevat rikkomukset voivat johtaa ankarampiin rangaistuksiin tiliäsi vastaan. + disable: Et voi enää käyttää tiliäsi, mutta profiilisi ja muut tiedot pysyvät muuttumattomina. Voit pyytää varmuuskopiota tiedoistasi, vaihtaa tilin asetuksia tai poistaa tilisi. + sensitive: Tästä lähtien kaikki ladatut mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse. + silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat ihmiset näkevät viestisi tällä palvelimella ja sinut voidaan sulkea pois erilaisista hakuominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti. + suspend: Et voi enää käyttää tiliäsi ja profiilisi ja muut tiedot eivät ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi varmuuskopiota tiedoistasi, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme joitakin perustietoja, jotka estävät sinua kiertämästä keskeyttämistä. + get_in_touch: Jos uskot, että tämä on virhe, voit vastata tähän sähköpostiin ottaaksesi yhteyttä %{instance} henkilökuntaan. reason: 'Syy:' + statuses: 'Viestit, joiden on havaittu rikkovan sääntöjä:' subject: + delete_statuses: Viestisi %{acct} on poistettu disable: Tilisi %{acct} on jäädytetty none: Varoitus %{acct} + sensitive: Sinun mediatiedostosi %{acct} merkitään tästä lähtien arkaluonteisiksi + silence: Tilisi %{acct} on rajoitettu + suspend: Tilisi %{acct} on keskeytetty title: delete_statuses: Viestit poistettu disable: Tili jäädytetty diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2673b25cb..208c4c342 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -44,7 +44,7 @@ fr: rejecting_media: 'Les fichiers média de ces serveurs ne seront ni traités ni stockés, et aucune miniature ne sera affichée, rendant nécessaire de cliquer vers le fichier d’origine :' rejecting_media_title: Médias filtrés silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·rice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :' - silenced_title: Serveurs masqués + silenced_title: Serveurs limités suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant impossible toute interaction ou communication avec les utilisateur·rice·s de ces serveurs :' suspended_title: Serveurs suspendus unavailable_content_html: Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur·rice·s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier. @@ -117,19 +117,19 @@ fr: deleted: Supprimé demote: Rétrograder destroyed_msg: Les données de %{username} sont maintenant en file d’attente pour être supprimées imminemment - disable: Désactiver + disable: Geler disable_sign_in_token_auth: Désactiver l'authentification basée sur les jetons envoyés par courriel disable_two_factor_authentication: Désactiver l’authentification à deux facteurs - disabled: Désactivé + disabled: Gelé display_name: Nom affiché domain: Domaine edit: Éditer email: Courriel email_status: État du courriel - enable: Activer + enable: Dégeler enable_sign_in_token_auth: Activer l'authentification basée sur les jetons envoyés par courriel enabled: Activé - enabled_msg: Le compte de %{username} a été débloqué avec succès + enabled_msg: Le compte de %{username} a été dégelé avec succès followers: Abonné·e·s follows: Abonnements header: Entête @@ -205,8 +205,8 @@ fr: show: created_reports: Signalements faits targeted_reports: Signalés par d’autres - silence: Masquer - silenced: Masqué + silence: Limiter + silenced: Limité statuses: Messages strikes: Punitions précédentes subscribe: S’abonner @@ -219,9 +219,9 @@ fr: unblocked_email_msg: L'adresse courriel de %{username} a été débloquée avec succès unconfirmed_email: Courriel non confirmé undo_sensitized: Annuler sensible - undo_silenced: Ne plus masquer + undo_silenced: Annuler la limitation undo_suspension: Annuler la suspension - unsilenced_msg: Le compte de %{username} a été illimité avec succès + unsilenced_msg: La limitation du compte de %{username} a été annulée avec succès unsubscribe: Se désabonner unsuspended_msg: Le compte de %{username} a été réactivé avec succès username: Nom d’utilisateur·ice @@ -270,12 +270,12 @@ fr: reset_password_user: Réinitialiser le mot de passe resolve_report: Résoudre le signalement sensitive_account: Marquer les médias de votre compte comme sensibles - silence_account: Masque le compte + silence_account: Limiter le compte suspend_account: Suspendre le compte unassigned_report: Ne plus assigner le signalement unblock_email_account: Débloquer l'adresse courriel unsensitive_account: Ne pas marquer les médias de votre compte comme sensibles - unsilence_account: Ne plus masquer le compte + unsilence_account: Annuler la limitation du compte unsuspend_account: Annuler la suspension du compte update_announcement: Modifier l’annonce update_custom_emoji: Mettre à jour les émojis personnalisés @@ -321,12 +321,12 @@ fr: reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur·rice %{target}" resolve_report_html: "%{name} a résolu le signalement %{target}" sensitive_account_html: "%{name} a marqué le média de %{target} comme sensible" - silence_account_html: "%{name} a masqué le compte de %{target}" + silence_account_html: "%{name} a limité le compte de %{target}" suspend_account_html: "%{name} a suspendu le compte de %{target}" unassigned_report_html: "%{name} a désassigné le signalement %{target}" unblock_email_account_html: "%{name} a débloqué l'adresse courriel de %{target}" unsensitive_account_html: "%{name} a enlevé le marquage comme sensible du média de %{target}" - unsilence_account_html: "%{name} a enlevé le masquage du compte de %{target}" + unsilence_account_html: "%{name} a annulé la limitation du compte de %{target}" unsuspend_account_html: "%{name} a réactivé le compte de %{target}" update_announcement_html: "%{name} a mis à jour l'annonce %{target}" update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" @@ -428,7 +428,7 @@ fr: destroyed_msg: Le blocage de domaine a été désactivé domain: Domaine edit: Modifier le blocage de domaine - existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le débloquer. + existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le/la débloquer. new: create: Créer le blocage hint: Le blocage de domaine n’empêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes. @@ -439,7 +439,7 @@ fr: suspend: Suspendre title: Nouveau blocage de domaine obfuscate: Obfusquer le nom de domaine - obfuscate_hint: Obfusquer partiellement le nom de domaine dans la liste si la liste des limitations de domaine est activée + obfuscate_hint: Obfusquer partiellement le nom de domaine dans la liste si la publication de la liste des limitations de domaine est activée private_comment: Commentaire privé private_comment_hint: Commentaire sur cette limitation de domaine pour informer en interne les modérateurs. public_comment: Commentaire public @@ -451,7 +451,7 @@ fr: rejecting_media: rejet des fichiers multimédia rejecting_reports: rejet des signalements severity: - silence: masqué + silence: limité suspend: suspendu show: affected_accounts: @@ -459,7 +459,7 @@ fr: other: "%{count} comptes affectés dans la base de données" zero: Pas de compte affecté dans la base de données retroactive: - silence: Ne plus masquer les comptes existants affectés de ce domaine + silence: Ne plus limiter les comptes existants affectés de ce domaine suspend: Annuler la suspension des comptes existants affectés pour ce domaine title: Annuler le blocage du domaine %{domain} undo: Annuler @@ -467,15 +467,22 @@ fr: view: Afficher les blocages de domaines email_domain_blocks: add_new: Ajouter + attempts_over_week: + one: "%{count} tentative au cours de la dernière semaine" + other: "%{count} tentatives au cours de la dernière semaine" created_msg: Le blocage de domaine de courriel est désormais activé delete: Supprimer - destroyed_msg: Le blocage de domaine de courriel a été désactivé + dns: + types: + mx: Enregistrement MX domain: Domaine - empty: Aucun domaine de courriel n’est actuellement sur liste noire. - from_html: de %{domain} new: create: Créer le blocage + resolve: Résoudre le domaine title: Nouveau blocage de domaine de courriel + no_email_domain_block_selected: Aucun blocage de domaine de courriel n'a été modifié car aucun n'a été sélectionné + resolved_dns_records_hint_html: Le nom de domaine est relié aux domaines MX suivants, qui ont la responsabilité ultime d'accepter les courriels. Bloquer un domaine MX empêchera les inscriptions à partir de toute adresse courriel utilisant le même domaine MX, même si le nom de domaine affiché est différent. Veillez à ne pas bloquer les fournisseurs de messagerie d'envergure. + resolved_through_html: Résolu par %{domain} title: Blocage de domaines de courriel follow_recommendations: description_html: "Les recommandations d'abonnement aident les nouvelles personnes à trouver rapidement du contenu intéressant. Si un·e utilisateur·rice n'a pas assez interagi avec les autres pour avoir des recommandations personnalisées, ces comptes sont alors recommandés. La sélection est mise à jour quotidiennement depuis un mélange de comptes ayant le plus d'interactions récentes et le plus grand nombre d'abonné·e·s locaux pour une langue donnée." @@ -610,6 +617,7 @@ fr: title: Remarques notes_description_html: Voir et laisser des notes aux autres modérateurs et à votre futur moi-même quick_actions_description_html: 'Faites une action rapide ou faites défiler vers le bas pour voir le contenu signalé :' + remote_user_placeholder: l'utilisateur·rice distant·e de %{instance} reopen: Ré-ouvrir le signalement report: 'Signalement #%{id}' reported_account: Compte signalé @@ -697,7 +705,7 @@ fr: desc_html: Montrer un badge de responsable sur une page utilisateur·rice title: Montrer un badge de responsable site_description: - desc_html: Paragraphe introductif sur la page d’accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. + desc_html: Paragraphe introductif sur l'API. Décrivez les particularités de ce serveur Mastodon et précisez toute autre chose qui vous semble importante. Vous pouvez utiliser des balises HTML, en particulier <a> et <em>. title: Description du serveur site_description_extended: desc_html: L’endroit idéal pour afficher votre code de conduite, les règles, les guides et autres choses qui rendent votre serveur différent. Vous pouvez utiliser des balises HTML @@ -740,7 +748,7 @@ fr: strikes: actions: delete_statuses: "%{name} a supprimé les messages de %{target}" - disable: "%{name} a bloqué le compte de %{target}" + disable: "%{name} a gelé le compte de %{target}" none: "%{name} a envoyé un avertissement à %{target}" sensitive: "%{name} a marqué le compte de %{target} comme sensible" silence: "%{name} a limité le compte de %{target}" @@ -780,6 +788,15 @@ fr: rejected: Les liens de cet éditeur ne seront pas considérés tendance title: Éditeurs rejected: Rejeté + statuses: + allow: Autoriser le message + allow_account: Autoriser l'auteur·rice + disallow: Proscrire le message + disallow_account: Proscrire l'auteur·rice + shared_by: + one: Partagé ou ajouté aux favoris une fois + other: Partagé et ajouté aux favoris %{friendly_count} fois + title: Messages tendance tags: current_score: Score actuel %{score} dashboard: @@ -813,7 +830,7 @@ fr: new_appeal: actions: delete_statuses: effacer les messages - disable: bloquer le compte + disable: geler le compte none: un avertissement sensitive: marquer le compte comme sensible silence: limiter le compte @@ -828,16 +845,21 @@ fr: body: "%{reporter} a signalé %{target}" body_remote: Quelqu’un de %{domain} a signalé %{target} subject: Nouveau signalement sur %{instance} (#%{id}) - new_trending_links: - body: Les liens suivants sont tendance aujourd'hui, mais leurs éditeurs n'ont pas été révisés auparavant. Ils ne seront pas affichés publiquement à moins que vous ne les approuviez. De nouvelles notifications provenant des mêmes éditeurs ne seront pas générées. - no_approved_links: Il n'y a actuellement aucun lien tendance approuvé. - requirements: Le lien tendance le plus bas est actuellement "%{lowest_link_title}" avec un score de %{lowest_link_score}. - subject: Nouveaux liens tendance à examiner sur %{instance} - new_trending_tags: - body: 'Les hashtags suivants sont tendances aujourd''hui, mais ils n''ont pas été examinés précédemment. Ils ne seront pas affichés publiquement à moins que vous ne les approuviez :' - no_approved_tags: Il n'y a actuellement aucun hashtag tendance approuvé. - requirements: 'Le hashtag tendance le plus bas est actuellement #%{lowest_tag_name} avec un score de %{lowest_tag_score}.' - subject: Nouveaux hashtags tendance à réviser sur %{instance} + new_trends: + body: 'Les éléments suivants doivent être approuvés avant de pouvoir être affichés publiquement :' + new_trending_links: + no_approved_links: Il n'y a pas de lien tendance approuvé actuellement. + requirements: N'importe quel élément de la sélection pourrait surpasser le lien tendance approuvé n°%{rank}, qui est actuellement « %{lowest_link_title} » avec un résultat de %{lowest_link_score}. + title: Liens tendance + new_trending_statuses: + no_approved_statuses: Il n'y a pas de message tendance approuvé actuellement. + requirements: N'importe quel élément de la sélection pourrait surpasser le message tendance approuvé n°%{rank}, qui est actuellement « %{lowest_status_url} » avec un résultat de %{lowest_status_score}. + title: Messages tendance + new_trending_tags: + no_approved_tags: Il n'y a pas de hashtag tendance approuvé actuellement. + requirements: 'N''importe quel élément de la sélection pourrait surpasser le hashtag tendance approuvé n°%{rank}, qui est actuellement #%{lowest_tag_name} avec un résultat de %{lowest_tag_score}.' + title: Hashtags tendance + subject: Nouvelles tendances à examiner sur %{instance} aliases: add_new: Créer un alias created_msg: Un nouvel alias a été créé avec succès. Vous pouvez maintenant déménager depuis l'ancien compte. @@ -993,7 +1015,7 @@ fr: title: "%{action} du %{date}" title_actions: delete_statuses: Suppression de message - disable: Suspension de compte + disable: Gel du compte none: Avertissement sensitive: Marquage d'un compte comme sensible silence: Limitation du compte @@ -1030,7 +1052,7 @@ fr: request: Demandez vos archives size: Taille blocks: Vous bloquez - bookmarks: Signets + bookmarks: Marque-pages csv: CSV domain_blocks: Blocages de domaine lists: Listes @@ -1090,7 +1112,7 @@ fr: success: Vos données ont été importées avec succès et seront traitées en temps et en heure types: blocking: Liste de comptes bloqués - bookmarks: Signets + bookmarks: Marque-pages domain_blocking: Liste des serveurs bloqués following: Liste d’utilisateur·rice·s suivi·e·s muting: Liste d’utilisateur·rice·s que vous masquez @@ -1175,6 +1197,9 @@ fr: carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}. copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :' notification_mailer: + admin: + sign_up: + subject: "%{name} s'est inscrit·e" digest: action: Voir toutes les notifications body: Voici un bref résumé des messages que vous avez raté depuis votre dernière visite le %{since} @@ -1391,7 +1416,7 @@ fr: over_character_limit: limite de %{max} caractères dépassée pin_errors: direct: Les messages qui ne sont visibles que pour les utilisateurs mentionnés ne peuvent pas être épinglés - limit: Vous avez déjà épinglé le nombre maximum de pouets + limit: Vous avez déjà épinglé le nombre maximum de messages ownership: Vous ne pouvez pas épingler un statut ne vous appartenant pas reblog: Un partage ne peut pas être épinglé poll: diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 9f7044517..92ed02398 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -170,6 +170,11 @@ gd: not_subscribed: Gun fho-sgrìobhadh pending: A’ feitheamh air lèirmheas perform_full_suspension: Cuir à rèim + previous_strikes: Rabhaidhean roimhe + previous_strikes_description_html: + one: Fhuair an cunntas seo aon rabhadh. + other: Fhuair an cunntas seo %{count} rabhaidhean. + zero: Tha deagh chliù aig a’ chunntas seo. promote: Àrdaich protocol: Pròtacal public: Poblach @@ -213,6 +218,7 @@ gd: statuses: Postaichean strikes: Rabhaidhean roimhe subscribe: Fo-sgrìobh + suspend: Cuir à rèim suspended: À rèim suspension_irreversible: Chaidh dàta a’ chunntais seo a sguabadh às gu buan. ’S urrainn an cunntas a chur ann an rèim a-rithist ach an gabh a chleachdadh ach chan fhaigh thu gin dhen dàta air ais a b’ àbhaist a bhith aige. suspension_reversible_hint_html: Chaidh an cunntas a chur à rèim agus thèid an dàta aige a sguabadh às gu buan %{date}. Gus an dig an t-àm ud, gabhaidh an cunntas aiseag fhathast gun droch bhuaidh sam bith air. Nam bu toigh leat gach dàta a’ chunntais a thoirt air falbh sa bhad, ’s urrainn dhut sin a dhèanamh gu h-ìosal. @@ -233,6 +239,7 @@ gd: whitelisted: Ceadaichte a chùm co-nasgaidh action_logs: action_types: + approve_appeal: Thoir aonta ris an ath-thagradh approve_user: Aontaich ris a’ chleachdaiche assigned_to_self_report: Iomruin an gearan change_email_user: Atharraich post-d a’ chleachdaiche @@ -264,6 +271,7 @@ gd: enable_user: Cuir an cleachdaiche an comas memorialize_account: Dèan cuimhneachan dhen chunntas promote_user: Àrdaich an cleachdaiche + reject_appeal: Diùlt an t-ath-thagradh reject_user: Diùlt an cleachdaiche remove_avatar_user: Thoir air falbh an t-avatar reopen_report: Fosgail an gearan a-rithist @@ -282,6 +290,7 @@ gd: update_domain_block: Ùraich bacadh na h-àrainne update_status: Ùraich am post actions: + approve_appeal_html: Dh’aontaich %{name} ri ath-thagradh air co-dhùnadh na maorsainneachd o %{target} approve_user_html: Dh’aontaich %{name} ri clàradh o %{target} assigned_to_self_report_html: Dh’iomruin %{name} an gearan %{target} dhaibh fhèin change_email_user_html: Dh’atharraich %{name} seòladh puist-d a’ chleachdaiche %{target} @@ -313,6 +322,7 @@ gd: enable_user_html: Chuir %{name} an clàradh a-steach an comas dhan chleachdaiche %{target} memorialize_account_html: Rinn %{name} duilleag cuimhneachain dhen chunntas aig %{target} promote_user_html: Dh’àrdaich %{name} an cleachdaiche %{target} + reject_appeal_html: Dhiùlt %{name} an t-ath-thagradh air co-dhùnadh na maorsainneachd o %{target} reject_user_html: Dhiùlt %{name} an clàradh o %{target} remove_avatar_user_html: Thug %{name} avatar aig %{target} air falbh reopen_report_html: Dh’fhosgail %{name} an gearan %{target} a-rithist @@ -391,6 +401,11 @@ gd: media_storage: Stòras mheadhanan new_users: cleachdaichean ùra opened_reports: gearanan air am fosgladh + pending_appeals_html: + few: "%{count} ath-thagraidhean ri dhèiligeadh" + one: "%{count} ath-thagradh ri dhèiligeadh" + other: "%{count} ath-thagradh ri dhèiligeadh" + two: "%{count} ath-thagradh ri dhèiligeadh" resolved_reports: gearanan air am fuasgladh software: Bathar-bog sources: Tùsan clàraidh @@ -399,6 +414,10 @@ gd: top_languages: Brod nan cànan gnìomhach top_servers: Brod nam frithealaichean gnìomhach website: Làrach-lìn + disputes: + appeals: + empty: Cha deach ath-thagradh a lorg. + title: Ath-thagraidhean domain_allows: add_new: Ceadaich co-nasgadh le àrainn created_msg: Chaidh an àrainn a cheadachadh a chùm co-nasgaidh @@ -447,10 +466,7 @@ gd: add_new: Cuir tè ùr ris created_msg: Chaidh àrainn a’ phuist-d a bhacadh delete: Sguab às - destroyed_msg: Chaidh àrainn a’ phuist-d a dhì-bhacadh domain: Àrainn - empty: Chan eil àrainn puist-d sam bith ’ga bhacadh aig an àm seo. - from_html: o %{domain} new: create: Cuir àrainn ris title: Bac àrainn puist-d ùr @@ -709,6 +725,9 @@ gd: no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh title: Postaichean a’ chunntais with_media: Le meadhanan riutha + strikes: + appeal_approved: Air ath-thagradh + appeal_pending: "’Ga ath-thagradh" system_checks: database_schema_check: message_html: Tha imrichean stòir-dhàta ri dhèiligeadh ann. Ruith iad a dhèanamh cinnteach gum bi giùlan na h-aplacaid mar a bhiodhte ’n dùil @@ -764,6 +783,10 @@ gd: empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast. title: Stiùirich na rabhaidhean ro-shuidhichte admin_mailer: + new_appeal: + body: 'Tha %{target} ag ath-thagradh co-dhùnadh na maorsainneachd a thug %{action_taken_by} %{date} agus ’s e %{type} a bh’ ann. Sgrìobh iad:' + next_steps: "’S urrainn dhut aontachadh ris an ath-thagradh air co-dhùnadh na maorsainneachd no a leigeil seachad." + subject: Tha %{username} ag ath-thagradh co-dhùnadh na maorsainneachd air %{instance} new_pending_account: body: Chì thu mion-fhiosrachadh a’ chunntais ùir gu h-ìosal. ’S urrainn dhut gabhail ris an iarrtas seo no a dhiùltadh. subject: Tha cunntas ùr air %{instance} a’ feitheamh air lèirmheas (%{username}) @@ -771,16 +794,6 @@ gd: body: Rinn %{reporter} gearan air %{target} body_remote: Rinn cuideigin o %{domain} gearan air %{target} subject: Tha gearan ùr aig %{instance} (#%{id}) - new_trending_links: - body: Tha na ceanglaichean a leanas a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh air na foillsichearan aca fhathast. Cha nochd iad gu poblach mur aontaich thu riutha. Chan fhaic thu brathan eile mu na h-aon fhoillsichearan. - no_approved_links: Chan eil ceangal a’ treandadh le aontachadh ann. - requirements: "’S e “%{lowest_link_title}” a tha sa cheangal a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_link_score} air." - subject: Tha ceanglaichean ùra a’ trèanadh feumach air lèirmheas air %{instance} - new_trending_tags: - body: 'Tha na tagaichean hais a leanas a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh orra fhathast. Cha nochd iad gu poblach mur aontaich thu riutha:' - no_approved_tags: Chan eil tagaichean hais a’ treandadh le aontachadh ann. - requirements: "’S e #%{lowest_tag_name} a tha san taga hais a’ treandadh as ìsle le aontachadh agus sgòr de %{lowest_tag_score} air." - subject: Tha tagaichean hais ùra a’ trèanadh feumach air lèirmheas air %{instance} aliases: add_new: Cruthaich alias created_msg: Chaidh an t-alias ùr a chruthachadh. ’S urrainn dhut tòiseachadh air imrich on seann-chunntas a-nis. @@ -919,6 +932,18 @@ gd: directory: Eòlaire nam pròifil explanation: Lorg cleachdaichean stèidhichte air an ùidhean explore_mastodon: Rùraich %{title} + disputes: + strikes: + appeal: Ath-thagair + appeal_approved: Chaidh le ath-thagradh an rabhaidh is chan eil e dligheach tuilleadh + appeal_rejected: Chaidh an t-ath-thagradh a dhiùltadh + appeal_submitted_at: Chaidh an t-ath-thagradh a chur a-null + appealed_msg: Chaidh an t-ath-thagradh agad a chur a-null. Ma thèid aontachadh ris, gheibh thu brath mu dhèidhinn. + appeals: + submit: Cuir a-null an t-ath-thagradh + your_appeal_approved: Chaidh aontachadh ris an ath-thagradh agad + your_appeal_pending: Chuir thu ath-thagradh a-null + your_appeal_rejected: Chaidh an t-ath-thagradh agad a dhiùltadh domain_validator: invalid_domain: "– chan eil seo ’na ainm àrainne dligheach" errors: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index d2c323fb4..84acfefe6 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -467,15 +467,22 @@ gl: view: Ollar dominios bloqueados email_domain_blocks: add_new: Engadir novo + attempts_over_week: + one: "%{count} intento na última semana" + other: "%{count} intentos de conexión na última semana" created_msg: Engadiuse de xeito correcto o dominio de email á listaxe negra delete: Eliminar - destroyed_msg: Eliminouse de xeito correcto o dominio de email da listaxe negra + dns: + types: + mx: Rexistro MX domain: Dominio - empty: Actualmente non hai dominios de email na listaxe negra. - from_html: desde %{domain} new: create: Engadir dominio + resolve: Resolver dominio title: Nova entrada na listaxe negra de email + no_email_domain_block_selected: Non se cambiou ningún bloqueo de dominio de email porque non se seleccionou ningún + resolved_dns_records_hint_html: O nome de dominio resolve os seguintes rexistros MX, que son os últimos responsables da aceptación de emails. Bloqueando un dominio MX rexeitarás calquera enderezo de email que use este dominio MX, incluso se o nome de dominio visible é outro. Ten coidado de non bloquear os principais provedores. + resolved_through_html: Resolto a través de %{domain} title: Listaxe negra de email follow_recommendations: description_html: "As recomendacións de seguimento son útiles para que as novas usuarias atopen contidos interesantes. Cando unha usuaria aínda non interactuou con outras para obter recomendacións de seguimento, estas contas serán recomendadas. Variarán a diario xa que se escollen en base ao maior número de interaccións e ao contador local de seguimentos para un idioma dado." @@ -610,6 +617,7 @@ gl: title: Notas notes_description_html: Ver e deixar unha nota para ti no futuro e outras moderadoras quick_actions_description_html: 'Tomar unha acción rápida ou desprázate abaixo para ver o contido denunciado:' + remote_user_placeholder: a usuaria remota desde %{instance} reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Conta denunciada @@ -780,6 +788,15 @@ gl: rejected: As ligazóns desta orixe non poden estar en voga title: Orixes rejected: Rexeitado + statuses: + allow: Permitir publicación + allow_account: Permitir autora + disallow: Rexeitar publicación + disallow_account: Rexeitar autora + shared_by: + one: Compartida ou favorecida unha vez + other: Compartida ou favorecida %{friendly_count} veces + title: Publicacións en voga tags: current_score: Puntuación actual %{score} dashboard: @@ -828,16 +845,21 @@ gl: body: "%{reporter} informou sobre %{target}" body_remote: Alguén desde %{domain} informou sobre %{target} subject: Novo informe sobre %{instance} (#%{id}) - new_trending_links: - body: As seguintes ligazóns están hoxe en voga, pero as súas orixes non foron anteriormente revisadas. Non se van amosar públicamente ata que as aprobes. Non se crearán novas notificacións acerca destas orixes. - no_approved_links: Actualmente non hai ligazóns en voga aprobadas. - requirements: A ligazón en voga aprobada con menor rango é "%{lowest_link_title}" cunha puntuación de %{lowest_link_score}. - subject: Novas ligazóns en voga para revisión en %{instance} - new_trending_tags: - body: 'Os seguintes cancelos son tendencia hoxe, pero non foron previamente revisados. Non aparecerán públicamente a menos que os aprobes:' - no_approved_tags: Non hai cancelos en voga aprobados. - requirements: 'O cancelo aprobado con menor rango é #%{lowest_tag_name} cunha puntuación de %{lowest_tag_score}.' - subject: Hai novos cancelos pendentes de revisión en %{instance} + new_trends: + body: 'Os seguintes elementos precisan revisión antes de ser mostrados públicamente:' + new_trending_links: + no_approved_links: Actualmente non hai ligazóns en voga aprobadas. + requirements: 'Calquera destos candidatos podería superar o #%{rank} das ligazóns en voga aprobadas, que actualmente é "%{lowest_link_title}" cunha puntuación de %{lowest_link_score}.' + title: Ligazóns en voga + new_trending_statuses: + no_approved_statuses: Actualmente non hai publicacións en voga aprobadas. + requirements: 'Calquera destos candidatos podería superar o #%{rank} nas publicacións en boga aprobadas, que actualmente é %{lowest_status_url} cunha puntuación de %{lowest_status_score}.' + title: Publicacións en voga + new_trending_tags: + no_approved_tags: Non hai etiquetas en voga aprobadas. + requirements: 'Calquera destos candidatos podería superar o #%{rank} dos cancelos en voga aprobados, que actualmente é #%{lowest_tag_name} cunha puntuación de %{lowest_tag_score}.' + title: Cancelos en voga + subject: Novas tendencias para revisar en %{instance} aliases: add_new: Crear alcume created_msg: Creou un novo alcume correctamente. Pode iniciar o movemento desde a conta antiga. @@ -1176,6 +1198,9 @@ gl: carry_mutes_over_text: Esta usuaria chegou desde %{acct}, que ti tes acalada. copy_account_note_text: 'Esta usuaria chegou desde %{acct}, aquí están as túas notas previas acerca dela:' notification_mailer: + admin: + sign_up: + subject: "%{name} rexistrouse" digest: action: Ver todas as notificacións body: Aquí ten un breve resumo das mensaxes publicadas desde a súa última visita en %{since} diff --git a/config/locales/he.yml b/config/locales/he.yml index 454a48e09..e0068d5bc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -263,6 +263,9 @@ he: redirecting_to: חשבונכם מפנה ל%{acct}. set_redirect: הגדר הפניה notification_mailer: + admin: + sign_up: + subject: "%{name} נרשמו" digest: body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since} mention: "%{name} פנה אליך ב:" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 672a08e54..224bcc986 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -469,15 +469,22 @@ hu: view: Domain tiltásának megtekintése email_domain_blocks: add_new: Új hozzáadása + attempts_over_week: + one: "%{count} próbálkozás a múlt héten" + other: "%{count} próbálkozás feliratkozásra a múlt héten" created_msg: E-mail domain sikeresen letiltva delete: Törlés - destroyed_msg: E-mail domain sikeresen engedélyezve + dns: + types: + mx: MX rekord domain: Domain - empty: Nincs letiltott email domain. - from_html: "%{domain}-ról" new: create: Domain hozzáadása + resolve: Domain feloldása title: Új e-mail domain tiltása + no_email_domain_block_selected: Nem változott meg egyetlen e-mail domain tiltás sem, mert nem volt egy sem kiválasztva + resolved_dns_records_hint_html: A domain név a következő MX domain-ekre oldódik fel, melyek valójában fogadják az e-mailt. Az MX domain letiltása minden olyan feliratkozást tiltani fog, melyben az e-mailcím ugyanazt az MX domaint használja, még akkor is, ha a látható domain név más. Légy óvatos, hogy ne tilts le nagy e-mail szolgáltatókat. + resolved_through_html: Feloldva %{domain}-n keresztül title: Tiltott e-mail domainek follow_recommendations: description_html: "A követési ajánlatok segítik az új felhasználókat az érdekes tartalmak gyors megtalálásában. Ha egy felhasználó még nem érintkezett eleget másokkal ahhoz, hogy személyre szabott ajánlatokat kapjon, ezeket a fiókokat ajánljuk helyette. Ezeket naponta újraszámítjuk a nemrég legtöbb embert foglalkoztató, illetve legtöbb helyi követővel rendelkező fiókok alapján." @@ -612,6 +619,7 @@ hu: title: Megjegyzések notes_description_html: Megtekintés, és megjegyzések hagyása más moderátoroknak quick_actions_description_html: 'Hozz egy gyors intézkedést, vagy görgess le a bejelentett tartalomhoz:' + remote_user_placeholder: 'a távoli felhasználó innen: %{instance}' reopen: Bejelentés újranyitása report: "#%{id} számú jelentés" reported_account: Bejelentett fiók @@ -782,6 +790,15 @@ hu: rejected: A közzétevő hivatkozásai nem lesznek felkapottak title: Közzétévők rejected: Elutasított + statuses: + allow: Bejegyzés engedélyezése + allow_account: Szerző engedélyezése + disallow: Bejegyzés tiltása + disallow_account: Szerző tiltása + shared_by: + one: Megosztva vagy kedvencnek jelölve egy alkalommal + other: Megosztva és kedvencnek jelölve %{friendly_count} alkalommal + title: Felkapott bejegyzések tags: current_score: 'Jelenlegi pontszám: %{score}' dashboard: @@ -830,16 +847,21 @@ hu: body: "%{reporter} jelentette: %{target}" body_remote: Valaki a %{domain} domainről jelentette %{target} subject: 'Új jelentés az alábbi szerveren: %{instance} (#%{id})' - new_trending_links: - body: A következő hivatkozások ma felkapottak, de a közzétevőjük eddig még nem lett ellenőrizve. Nem fognak nyilvánosan megjelenni, hacsak nem hagyod jóvá őket. További értesítések nem lesznek előállítva ugyanahhoz a közzétevőhöz. - no_approved_links: Jelenleg nincsenek jóváhagyott felkapott hivatkozások. - requirements: 'A legkisebb pontszámú jóváhagyott felkapott hivatkozás jelenleg ez: „%{lowest_link_title}”, pontszáma %{lowest_link_score}.' - subject: 'Új jóváhagyandó felkapott hivatkozások ezen: %{instance}' - new_trending_tags: - body: 'A következő hashtagek ma felkapottak, de a eddig még nem lettek ellenőrizve. Nem fognak nyilvánosan megjelenni, hacsak nem hagyod jóvá őket:' - no_approved_tags: Jelenleg nincsenek jóváhagyott felkapott hashtagek. - requirements: 'A legkisebb pontszámú jóváhagyott felkapott hashtag jelenleg ez: #%{lowest_tag_name}, pontszáma %{lowest_tag_score}.' - subject: 'Új jóváhagyandó felkapott hashtagek ezen: %{instance}' + new_trends: + body: 'A következő elemeket ellenőrizni kell, mielőtt nyilvánosan megjelennének:' + new_trending_links: + no_approved_links: Jelenleg nincsenek jóváhagyott felkapott hivatkozások. + requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott hivatkozást, amely jelenleg a(z) „%{lowest_link_title}” ezzel a pontszámmal: %{lowest_link_score}.' + title: Felkapott hivatkozások + new_trending_statuses: + no_approved_statuses: Jelenleg nincsenek jóváhagyott felkapott bejegyzések. + requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott bejegyzést, amely jelenleg a(z) „%{lowest_status_url}” ezzel a pontszámmal: %{lowest_status_score}.' + title: Felkapott bejegyzések + new_trending_tags: + no_approved_tags: Jelenleg nincsenek jóváhagyott felkapott hashtagek. + requirements: 'Ezek közül bármelyik jelölt lehagyná a %{rank}. jóváhagyott felkapott hashtaget, amely jelenleg a(z) #%{lowest_tag_name} ezzel a pontszámmal: %{lowest_tag_score}.' + title: Felkapott hashtagek + subject: 'Új jóváhagyandó trendek ezen: %{instance}' aliases: add_new: Alias készítése created_msg: Elkészült az új aliasod. Most már elkezdheted a költöztetést a régi fiókból. @@ -1178,6 +1200,9 @@ hu: carry_mutes_over_text: Ez a fiók elköltözött innen %{acct}, melyet lenémítottatok. copy_account_note_text: 'Ez a fiók elköltözött innen %{acct}, itt vannak a bejegyzéseitek róla:' notification_mailer: + admin: + sign_up: + subject: "%{name} feliratkozott" digest: action: Összes értesítés megtekintése body: Itt a legutóbbi látogatásod (%{since}) óta írott üzenetek rövid összefoglalása diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 70f775cf0..0739f3879 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -351,10 +351,7 @@ hy: add_new: Ավելացնել նորը created_msg: Բարեյաջող արգելափակուեց էլ․ փոստի տիրոյթ delete: Ջնջել - destroyed_msg: Բարեյաջող ապաարգելափակուեց էլ․ փոստի տիրոյթ domain: Դոմեն - empty: Ոչ մի էլ․ փոստի տիրոյթ այժմ արգելափակուած չէ։ - from_html: "%{domain}ից" new: create: Ավելացնել դոմեն title: Արգելափակել էլ․ փոստի նոր տիրոյթ diff --git a/config/locales/id.yml b/config/locales/id.yml index 76e91c9d2..4e94de090 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -457,15 +457,21 @@ id: view: Lihat blokir domain email_domain_blocks: add_new: Tambah baru + attempts_over_week: + other: "%{count} upaya mendaftar selama seminggu terakhir" created_msg: Berhasil memblokir domain email delete: Hapus - destroyed_msg: Berhasil membuka blokiran domain email + dns: + types: + mx: Data MX domain: Domain - empty: Tidak ada domain email yang diblokir. - from_html: dari %{domain} new: create: Tambah domain + resolve: Pembaruan domain title: Blokir domain email baru + no_email_domain_block_selected: Tidak ada blokir domain email yang diubah sebab tidak ada yang dipilih + resolved_dns_records_hint_html: Pembaruan nama domain mengikuti domain MX, yang bertanggung jawab menerima email. Memblokir domain MX akan memblokir pendaftaran dari alamat email apapun yang menggunakan domain MX sama, meskipun nama domainnya beda. Hati-hati untuk tidak memblokir layanan email besar. + resolved_through_html: Diperbarui melalui %{domain} title: Domain email terblokir follow_recommendations: description_html: "Rekomendasi untuk diikuti" membantu pengguna baru untuk secara cepat menemukan konten yang menarik. Ketika pengguna belum cukup berinteraksi dengan lainnya sehingga belum memunculkan rekomendasi, akun-akun ini akan direkomendasikan. Mereka dihitung ulang secara harian dari campuran akun-akun dengan keterlibatan tertinggi baru-baru ini dan jumlah pengikut lokal tertinggi untuk bahasa tertentu. @@ -598,6 +604,7 @@ id: title: Catatan notes_description_html: Lihat dan tinggalkan catatan kepada moderator lain dan Anda di masa depan quick_actions_description_html: 'Lakukan tindakan cepat atau gulir ke bawah untuk melihat konten yang dilaporkan:' + remote_user_placeholder: pengguna jarak jauh dari %{instance} reopen: Buka lagi laporan report: 'Laporkan #%{id}' reported_account: Akun yang dilaporkan @@ -768,6 +775,14 @@ id: rejected: Tautan dari penerbit ini tidak dapat menjadi tren title: Penerbit rejected: Ditolak + statuses: + allow: Izinkan kiriman + allow_account: Izinkan penulis + disallow: Jangan beri izin kiriman + disallow_account: Jangan beri izin penulis + shared_by: + other: Dibagikan dan difavoritkan %{friendly_count} kali + title: Kiriman yang sedang tren tags: current_score: Skor saat ini %{score} dashboard: @@ -816,16 +831,21 @@ id: body: "%{reporter} telah melaporkan %{target}" body_remote: Seseorang dari %{domain} telah melaporkan %{target} subject: Laporan baru untuk %{instance} (#%{id}) - new_trending_links: - body: Tautan berikut sedang tren hari ini, tetapi penerbit sebelumnya belum ditinjau. Mereka tidak akan ditampilkan secara publik kecuali Anda menyetujuinya. Notifikasi berikutnya dari penerbit yang sama tidak akan dibuat. - no_approved_links: Saat ini tidak akan tautan tren yang disetujui. - requirements: Tautan tren yang disetujui peringkat terendah saat ini "%{lowest_link_title}" dengan skor %{lowest_link_score}. - subject: Tautan tren baru mulai ditinjau di %{instance} - new_trending_tags: - body: 'Tagar berikut sedang tren hari ini, tetapi mereka sebelumnya belum ditinjau. Mereka tidak akan muncul secara publik kecuali Anda menyetujuinya:' - no_approved_tags: Saat ini tidak ada tagar tren yang disetujui. - requirements: 'Tagar tren yang disetujui peringkat terendah saat ini #%{lowest_tag_name} dengan skor %{lowest_tag_score}.' - subject: Tagar tren baru mulai ditinjau di %{instance} + new_trends: + body: 'Item berikut harus ditinjau sebelum ditampilkan secara publik:' + new_trending_links: + no_approved_links: Saat ini tidak ada tautan tren yang disetujui. + requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} tautan tren yang disetujui, yang kini "%{lowest_link_title}" memiliki nilai %{lowest_link_score}.' + title: Tautan sedang tren + new_trending_statuses: + no_approved_statuses: Tidak ada kiriman sedang tren yang disetujui. + requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} kiriman tren yang disetujui, yang kini %{lowest_status_url} memiliki nilai %{lowest_status_score}.' + title: Kiriman yang sedang tren + new_trending_tags: + no_approved_tags: Saat ini tidak ada tagar tren yang disetujui. + requirements: 'Kandidat yang ada di sini bisa saja melewati peringkat #%{rank} tagar sedang tren yang disetujui, yang kini #%{lowest_tag_name} memiliki nilai %{lowest_tag_score}.' + title: Tagar sedang tren + subject: Tren baru yang perlu ditinjau di %{instance} aliases: add_new: Buat alias created_msg: Berhasil membuat alias baru. Sekarang Anda dapat memulai pindah dari akun lama. @@ -1162,6 +1182,9 @@ id: carry_mutes_over_text: Pengguna ini pindah dari %{acct}, yang telah Anda bisukan sebelumnya. copy_account_note_text: 'Pengguna ini pindah dari %{acct}, ini dia pesan Anda sebelumnya tentang mereka:' notification_mailer: + admin: + sign_up: + subject: "%{name} mendaftar" digest: action: Lihat semua notifikasi body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since} diff --git a/config/locales/is.yml b/config/locales/is.yml index 3d073e158..38c31d12f 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -467,15 +467,22 @@ is: view: Skoða útilokun á léni email_domain_blocks: add_new: Bæta við nýju + attempts_over_week: + one: "%{count} tilraun síðustu viku" + other: "%{count} tilraunir til nýskráningar í síðustu viku" created_msg: Tókst að útiloka póstlén delete: Eyða - destroyed_msg: Tókst að aflétta útilokun af póstléni + dns: + types: + mx: MX-færsla domain: Lén - empty: Engin tölvupóstlén eru útilokuð. - from_html: frá %{domain} new: create: Bæta við léni + resolve: Leysa lén title: Útiloka nýtt tölvupóstlén + no_email_domain_block_selected: Engum útilokunum tölvupóstléna var breytt þar sem ekkert var valið + resolved_dns_records_hint_html: Heiti lénsins vísar til eftirfarandi MX-léna, sem bera endanlega ábyrgð á að tölvupóstur skili sér. Útilokun á MX-léni mun koma í veg fyrir nýskráningar með hverju því tölvupóstfangi sem notar sama MX-lén, jafnvel þótt sýnilega lénsheitið sé frábrugðið. Farðu varlega svo þú útilokir ekki algengar tölvupóstþjónustur. + resolved_through_html: Leyst í gegnum %{domain} title: Útilokuð tölvupóstlén follow_recommendations: description_html: "Að fylgja meðmælum hjálpar nýjum notendum að finna áhugavert efni á einfaldan máta. Þegar notandi hefur ekki átt í nægilegum samskiptum við aðra til að vera farinn að móta sér skoðanir á hverju hann vill fylgjast með, er mælt með að fylgjast með þessum aðgöngum. Þeir eru endurreiknaðir daglega út frá blöndu þeirra aðganga sem eru með hvað mestri þáttöku í umræðum og mesta fylgjendafjölda út frá hverju tungumáli." @@ -610,6 +617,7 @@ is: title: Minnispunktar notes_description_html: Skoðaðu og skrifaðu minnispunkta til annarra stjórnenda og sjálfs þín quick_actions_description_html: 'Beittu flýtiaðgerð eða skrunaðu niður til að skoða kært efni:' + remote_user_placeholder: fjartengda notandann frá %{instance} reopen: Enduropna kæru report: 'Kæra #%{id}' reported_account: Kærður notandaaðgangur @@ -780,6 +788,15 @@ is: rejected: Tenglar frá þessum útgefanda verða ekki með í vinsældum title: Útgefendur rejected: Hafnað + statuses: + allow: Leyfa færslu + allow_account: Leyfa höfund + disallow: Ekki leyfa færslu + disallow_account: Ekki leyfa höfund + shared_by: + one: ShaDeilt eða gert að eftirlæti einu sinni + other: Deilt eða gert að eftirlæti %{friendly_count} sinnum + title: Vinsælar færslur tags: current_score: Núverandi stig %{score} dashboard: @@ -828,16 +845,21 @@ is: body: "%{reporter} hefur kært %{target}" body_remote: Einhver frá %{domain} hefur kært %{target} subject: Ný kæra vegna %{instance} (#%{id}) - new_trending_links: - body: Eftirfarandi tenglar eru vinsælir í dag, en ekki er búið að yfirfara útgefendur þeirra. Þeir munu ekki birtast opinberlega nema þú samþykkir þá. Ekki verða útbúnar frekari tilkynningar frá sömu útgefendum. - no_approved_links: Í augnablikinu eru engir samþykktir vinsælir tenglar. - requirements: Minnst vinsæli tengillinn sem búið er að samþykkja er núna "%{lowest_link_title}" með stigaskorið %{lowest_link_score}. - subject: Nýir vinsælir tenglar eru tilbúnir til yfirferðar á %{instance} - new_trending_tags: - body: 'Eftirfarandi myllumerki eru vinsæl í dag, en ekki er búið að yfirfara þau. Þau munu ekki birtast opinberlega nema þú samþykkir þau:' - no_approved_tags: Í augnablikinu eru engin samþykkt vinsæl myllumerki. - requirements: Minnst vinsæla myllumerkið sem búið er að samþykkja er núna %{lowest_tag_name} með stigaskorið %{lowest_tag_score}. - subject: Ný vinsæl myllumerki eru tilbúin til yfirferðar á %{instance} + new_trends: + body: 'Eftirfarandi atriði þarfnast yfirferðar áður en hægt er að birta þau opinberlega:' + new_trending_links: + no_approved_links: Það eru í augnablikinu engir samþykktir vinsælir tenglar. + requirements: 'Hver af þessum tillögum gætu farið yfir samþykkta vinsæla tengilinn númer #%{rank}, sem í augnablikinu er "%{lowest_link_title}" með %{lowest_link_score} stig.' + title: Vinsælir tenglar + new_trending_statuses: + no_approved_statuses: Það eru í augnablikinu engar samþykktar vinsælar færslur. + requirements: 'Hver af þessum tillögum gætu farið yfir samþykktu vinsælu færsluna númer #%{rank}, sem í augnablikinu er %{lowest_status_url} með %{lowest_status_score} stig' + title: Vinsælar færslur + new_trending_tags: + no_approved_tags: Það eru í augnablikinu engin samþykkt vinsæl myllumerki. + requirements: 'Hver af þessum tillögum gætu farið yfir samþykkta vinsæla myllumerkið númer #%{rank}, sem í augnablikinu er %{lowest_tag_name} með %{lowest_tag_score} stig' + title: Vinsæl myllumerki + subject: Nýtt vinsælt til yfirferðar á %{instance} aliases: add_new: Búa til samnefni (alias) created_msg: Tókst að búa til samnefni. Þú getur núna byrjað að færa gögn af gamla aðgangnum. @@ -1176,6 +1198,9 @@ is: carry_mutes_over_text: Þessi notandi fluttist frá %{acct}, sem þú hafðir þaggað niður í. copy_account_note_text: 'Þessi notandi fluttist frá %{acct}, hér eru fyrri minnispunktar þínir um hann:' notification_mailer: + admin: + sign_up: + subject: "%{name} nýskráði sig" digest: action: Skoða allar tilkynningar body: Hér er stutt yfirlit yfir þau skilaboð sem þú gætir hafa misst af síðan þú leist inn síðast %{since} diff --git a/config/locales/it.yml b/config/locales/it.yml index 18281a67d..a5cab56a1 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -467,15 +467,22 @@ it: view: Visualizza blocco di dominio email_domain_blocks: add_new: Aggiungi nuovo + attempts_over_week: + one: "%{count} tentativo nell'ultima settimana" + other: "%{count} tentativi di registrazione nell'ultima settimana" created_msg: Dominio email aggiunto con successo alla lista nera delete: Elimina - destroyed_msg: Dominio email cancellato con successo dalla lista nera + dns: + types: + mx: Record MX domain: Dominio - empty: Nessun dominio di posta elettronica attualmente in blacklist. - from_html: da %{domain} new: create: Aggiungi dominio + resolve: Risolvi dominio title: Nuova voce della lista nera delle email + no_email_domain_block_selected: Nessun blocco di dominio di posta elettronica è stato modificato in quanto nessuno è stato selezionato + resolved_dns_records_hint_html: Il nome di dominio si risolve ai seguenti domini MX, che sono in ultima analisi responsabili per l'accettazione di e-mail. Il blocco di un dominio MX bloccherà le iscrizioni da qualsiasi indirizzo e-mail che utilizza lo stesso dominio MX, anche se il nome di dominio visibile è diverso. Fai attenzione a non bloccare i principali provider di posta elettronica. + resolved_through_html: Risolto attraverso %{domain} title: Lista nera email follow_recommendations: description_html: "I consigli su chi seguire aiutano i nuovi utenti a trovare rapidamente dei contenuti interessanti. Quando un utente non ha interagito abbastanza con altri per avere dei consigli personalizzati, vengono consigliati questi account. Sono ricalcolati ogni giorno da un misto di account con le più alte interazioni recenti e con il maggior numero di seguaci locali per una data lingua." @@ -575,6 +582,7 @@ it: notes: one: "%{count} nota" other: "%{count} note" + action_log: Registro di controllo action_taken_by: Azione intrapresa da actions: delete_description_html: I post segnalati saranno eliminati e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. @@ -609,6 +617,7 @@ it: title: Note notes_description_html: Visualizza e lascia note ad altri moderatori e al tuo futuro sé quick_actions_description_html: 'Fai un''azione rapida o scorri verso il basso per vedere il contenuto segnalato:' + remote_user_placeholder: l'utente remoto da %{instance} reopen: Riapri rapporto report: 'Rapporto #%{id}' reported_account: Account segnalato @@ -779,6 +788,15 @@ it: rejected: I link da questa fonte non possono essere in tendenza title: Editori rejected: Rifiutato + statuses: + allow: Consenti post + allow_account: Consenti autore + disallow: Non consentire post + disallow_account: Non consentire autore + shared_by: + one: Condiviso o preferito una volta + other: Condiviso e preferito %{friendly_count} volte + title: Post di tendenza tags: current_score: Punteggio corrente %{score} dashboard: @@ -827,16 +845,21 @@ it: body: "%{reporter} ha segnalato %{target}" body_remote: Qualcuno da %{domain} ha segnalato %{target} subject: Nuova segnalazione per %{instance} (#%{id}) - new_trending_links: - body: I seguenti link sono in tendenza oggi, ma i loro editori non sono stati revisionati precedentemente. Non saranno mostrati pubblicamente a meno che tu non li approvi. Ulteriori notifiche dagli stessi editori non saranno generate. - no_approved_links: Nessun link in tendenza correntemente approvato. - requirements: Il link in tendenza più basso approvato è correntemente "%{lowest_link_title}" con un punteggio di %{lowest_link_score}. - subject: Nuovi link in tendenza in attesa di revisione su %{instance} - new_trending_tags: - body: 'I seguenti hashtag sono in tendenza oggi, ma non sono stati precedentemente revisionati. Non saranno visualizzati pubblicamente a meno che non li approvi:' - no_approved_tags: Nessun hashtag in tendenza correntemente approvato. - requirements: 'L''hashtag in tendenza approvato con punteggio più basso è al momento #%{lowest_tag_name} con un punteggio di %{lowest_tag_score}.' - subject: I nuovi hashtag in tendenza in attesa di revisione su %{instance} + new_trends: + body: 'I seguenti elementi necessitano di un controllo prima che possano essere visualizzati pubblicamente:' + new_trending_links: + no_approved_links: Attualmente non ci sono link in tendenza approvati. + requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} link di tendenza approvato, che è attualmente "%{lowest_link_title}" con un punteggio di %{lowest_link_score}.' + title: Link di tendenza + new_trending_statuses: + no_approved_statuses: Attualmente non ci sono post di tendenza approvati. + requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} post di tendenza approvato, che è attualmente "%{lowest_status_url}" con un punteggio di %{lowest_status_score}.' + title: Post di tendenza + new_trending_tags: + no_approved_tags: Attualmente non ci sono hashtag di tendenza approvati. + requirements: 'Ognuno di questi candidati potrebbe superare il #%{rank} hashtag di tendenza approvato, che è attualmente "%{lowest_tag_name}" con un punteggio di %{lowest_tag_score}.' + title: Hashtag di tendenza + subject: Nuove tendenze in attesa di controllo su %{instance} aliases: add_new: Crea alias created_msg: Hai creato un nuovo alias. Ora puoi iniziare lo spostamento dal vecchio account. @@ -1177,6 +1200,9 @@ it: carry_mutes_over_text: Questo utente si è spostato da %{acct} che hai silenziato. copy_account_note_text: 'Questo utente si è spostato da %{acct}, ecco le tue note precedenti su di loro:' notification_mailer: + admin: + sign_up: + subject: "%{name} si è iscritto" digest: action: Vedi tutte le notifiche body: Ecco un breve riassunto di quello che ti sei perso dalla tua ultima visita del %{since} diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 1b79cd7f9..99428d7de 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -449,12 +449,13 @@ ja: add_new: 新規追加 created_msg: メールドメインブロックに追加しました delete: 消去 - destroyed_msg: メールドメインブロックから外しました + dns: + types: + mx: MXレコード domain: ドメイン - empty: メールドメインブロックには現在何も登録されていません。 - from_html: "%{domain} から" new: create: ドメインを追加 + resolve: ドメイン解決 title: 新規メールドメインブロック title: メールドメインブロック follow_recommendations: @@ -487,6 +488,10 @@ ja: delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。" destroyed_msg: "%{domain} からのデータは、すぐに削除されるように、キューに追加されました。" empty: ドメインが見つかりませんでした。 + known_accounts: + one: 既知のアカウントが%{count}件あります + other: 既知のアカウントが%{count}件あります + zero: 既知のアカウントはありません moderation: all: すべて limited: 制限あり @@ -561,6 +566,7 @@ ja: comment: none: なし created_at: 通報日時 + delete_and_resolve: 投稿を削除 forwarded: 転送済み forwarded_to: "%{domain} に転送されました" mark_as_resolved: 解決済みとしてマーク @@ -574,6 +580,7 @@ ja: placeholder: どのような措置が取られたか、または関連する更新を記述してください… title: メモ notes_description_html: 他のモデレーターと将来の自分にメモを残してください + remote_user_placeholder: "%{instance} からのリモートユーザー" reopen: 未解決に戻す report: 通報#%{id} reported_account: 報告対象アカウント @@ -701,6 +708,9 @@ ja: no_status_selected: 何も選択されていないため、変更されていません title: 投稿一覧 with_media: メディアあり + strikes: + appeal_approved: 抗議済み + appeal_pending: 保留中の抗議 system_checks: database_schema_check: message_html: 未実行のデータベースマイグレーションがあります。実行して正常に動作するようにしてください。 @@ -756,6 +766,9 @@ ja: empty: まだプリセット警告文が作成されていません。 title: プリセット警告文を管理 admin_mailer: + new_appeal: + actions: + none: 警告 new_pending_account: body: 新しいアカウントの詳細は以下の通りです。この申請を承認または却下することができます。 subject: "%{instance} で新しいアカウント (%{username}) が承認待ちです" @@ -763,16 +776,13 @@ ja: body: "%{reporter} が %{target} を通報しました" body_remote: "%{domain} の誰かが %{target} を通報しました" subject: "%{instance} の新しい通報 (#%{id})" - new_trending_links: - body: 以下のリンクは今日のトレンドですが、これらの発行者はまだレビューされていません。承認するまでは、このリンクは公開されず、通知も生成されません。 - no_approved_links: 承認済みのトレンドはありません。 - requirements: '承認された最低のトレンドは現在 %{lowest_link_title} です。(スコア: %{lowest_link_score} )' - subject: 新しいトレンドを %{instance} で確認してください。 - new_trending_tags: - body: 以下のハッシュタグは今日のトレンドですが、これらの発行者はまだレビューされていません。承認するまでは、このハッシュタグは公開されず、通知も生成されません。 - no_approved_tags: 承認済みのハッシュタグはありません。 - requirements: '承認された最低のトレンドハッシュタグは現在 %{lowest_tag_name} です。(スコア: %{lowest_tag_score} )' - subject: 新しいトレンドハッシュタグを %{instance} で確認してください。 + new_trends: + new_trending_links: + title: トレンドリンク + new_trending_statuses: + title: トレンド投稿 + new_trending_tags: + title: トレンドハッシュタグ aliases: add_new: エイリアスを作成 created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。 @@ -913,6 +923,16 @@ ja: disputes: strikes: appeal: 抗議 + appeal_submitted_at: 抗議が送信されました + appeals: + submit: 抗議を送信 + associated_report: 関連する通報 + created_at: 日時 + recipient: 送信元 + title: "%{date}に%{action}" + title_actions: + disable: アカウント凍結 + none: 警告 domain_validator: invalid_domain: は無効なドメイン名です errors: @@ -1302,8 +1322,8 @@ ja: other: "%{count}票" vote: 投票 show_more: もっと見る - show_newer: 新しいものから表示 - show_older: 古いものから表示 + show_newer: 新しいものを表示 + show_older: 古いものを表示 show_thread: スレッドを表示 sign_in_to_participate: ログインして会話に参加 title: '%{name}: "%{quote}"' @@ -1463,6 +1483,8 @@ ja: recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。リカバリーコードは大切に保全してください。たとえば印刷してほかの重要な書類と一緒に保管することができます。 webauthn: セキュリティキー user_mailer: + appeal_rejected: + title: 却下された抗議 backup_ready: explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます! subject: アーカイブの準備ができました @@ -1474,6 +1496,7 @@ ja: subject: ログイン試行を確認してください title: ログインを検出しました warning: + appeal: 抗議を送信 categories: spam: スパム violation: コンテンツは以下のコミュニティガイドラインに違反しています diff --git a/config/locales/ka.yml b/config/locales/ka.yml index d942048b6..48b3c227d 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -182,7 +182,6 @@ ka: add_new: ახლის დამატება created_msg: ელ-ფოსტის დომენი წარმატებით დაემატა შავ სიას delete: გაუქმება - destroyed_msg: ელ-ფოსტის დომენი წარმატებით ამოიშალა შავი სიიდან domain: დომენი new: create: დომენის დამატება diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 57d1c9d33..169f69492 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -343,7 +343,6 @@ kab: add_new: Rnu amaynut delete: Kkes domain: Taγult - from_html: seg %{domain} new: create: Rnu taγult title: Timerna n taɣult tamaynut n imayl ɣer tebdart taberkant @@ -416,6 +415,8 @@ kab: save_and_enable: Sekles rnu rmed-it status: Addad title: Imnegliyen + report_notes: + today_at: Ass-a ɣef %{time} reports: account: notes: @@ -433,6 +434,7 @@ kab: create_and_resolve: Fru s tamawt create_and_unresolve: Alew alday s tamawt delete: Kkes + title: Tizmilin reopen: Allus n ulday n uneqqis report: 'Aneqqis #%{id}' reported_account: Amiḍan yettumlen diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 319531cc1..3e6615956 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -277,9 +277,7 @@ kk: add_new: Жаңасын қосу created_msg: Қаратізімге email домені қосылды delete: Өшіру - destroyed_msg: Successfully deletеd e-mail domain from blacklist domain: Домен - empty: Ешқандай e-mail домені қаратізімге алынбапты. new: create: Add dоmain title: New e-mail blаcklist entry diff --git a/config/locales/kmr.yml b/config/locales/kmr.yml index 8e40d8e2f..6ee62729c 100644 --- a/config/locales/kmr.yml +++ b/config/locales/kmr.yml @@ -469,15 +469,22 @@ kmr: view: Astengkirina navperê nîşan bike email_domain_blocks: add_new: Nû tevlî bike + attempts_over_week: + one: "%{count} hewldan di hefteya borî de" + other: "%{count} hewldanên tomarkirinê di hefteya borî de" created_msg: Bi serkeftî navpera e-name hat asteng kirin delete: Jê bibe - destroyed_msg: Bi serkeftî navpera e-name yê ji asteng kirinê derket + dns: + types: + mx: Tomarkerê MX domain: Navper - empty: Tu navperên e-nameyê astengkirî bo niha tune ne. - from_html: ji %{domain} new: create: Navper tevlî bike + resolve: Navparê çareser bike title: Navparê e-nameyê nû asteng bike + no_email_domain_block_selected: Tu astengên navparê e-nameyê nehatin guhertin ji ber ku tu yek nehatine hilbijartin + resolved_dns_records_hint_html: Navê navparê ji MX ên jêrîn re çareser dike, ên ku di dawiyê de berpirsiyarin ji pejirandina e-nameyê. Astengkirina navparek MX wê tomarkirina ji her navnîşana e-nameyê ya ku heman navpara MX bi kar tîne asteng bike, tevlî ku navê navparê xuya cûda be. Hişyar be ku peydekarên sereke yên e-nameyê asteng nekî. + resolved_through_html: Bi riya %{domain} ve hate çareserkirin title: Navparên e-nameyê astengkirî follow_recommendations: description_html: "Şopandina pêşniyaran ji bo bikarhênerên nû re dibe alîkar ku zû naveroka balkêş bibînin. Gava ku bikarhênerek têra xwe bi kesên din re têkildar nebê da ku pêşnîyarên şopandina yên kesane bo xwe çêbike, li şûna van ajimêran têne pêşniyarkirin. Ew her roj ji tevliheviya ajimêrên bi tevlêbûnên herî dawîn ên herî bilind û jimara şopdarên herêmî yên herî pir ji bo zimaneke diyarkirî ji nû ve têne pêşniyarkirin." @@ -612,6 +619,7 @@ kmr: title: Nîşe notes_description_html: Nîşeyan ji çavdêrên din û ji xwe re di pêşerojê de bibîne û bihêle quick_actions_description_html: 'Ji bo dîtina naveroka ragihandî çalakiyeke bilez bavêje an jî li jêr bigere:' + remote_user_placeholder: bikarhênerê ji dûr ve ji %{instance} reopen: Ragihandina ji nû ve veke report: "@%{id} Ragihîne" reported_account: Ajimêra ragihandî @@ -782,6 +790,15 @@ kmr: rejected: Girêdanên ji vê weşangerê nikarin bibin rojev title: Weşanger rejected: Nepejirand + statuses: + allow: Mafê bide şandiyê + allow_account: Mafê bide nivîskar + disallow: Mafê nede şandiyê + disallow_account: Mafê nede nivîskar + shared_by: + one: Yek carî parvekirî an bijartî + other: "%{friendly_count} carên parvekirî û bijartî" + title: Şandiyên rojevê tags: current_score: Encama niha %{score} dashboard: @@ -830,16 +847,21 @@ kmr: body: "%{reporter} ji %{target} ê ragihand" body_remote: Kesekî bi navê %{domain} ji %{target} ê ragihand subject: Ragihandinek nû ji bo %{instance} (#%{id}) - new_trending_links: - body: Girêdanên li jêr îro rojev in, lê weşangerên wan berê nehatine nirxandin. Heya ku tu wan nepejirînî ew dê bi awayekî giştî neyên nîşandan. Ji heman weşangeran agahdarîyên bêtir nayên çêkirin. - no_approved_links: Niha tu girêdanên rojeva pejirandî tune ne. - requirements: Girêdanên rojevê ya herî kêm pejirandî niha "%{lowest_link_title}" e bi rêjeyek %{lowest_link_score}. - subject: Girêdanên rojevê yên nû ji bo nirxandinê li ser %{instance} derdikevin - new_trending_tags: - body: 'Hashtagên li jêr îro trojev in, lê ew berê nehatine nirxandin. Heya ku tu wan nepejirînî, ew dê bi awayekî gelemperî neyên nîşandan:' - no_approved_tags: Niha hashtagên rojevê pejirandî tune ne. - requirements: 'Hashtagên rojevê ya herî kêm pejirandî niha #%{lowest_tag_name} e bi rêjeyek %{lowest_tag_score}.' - subject: Hashtagên rojevê yên nû ji bo nirxandinê li ser %{instance} derdikevin + new_trends: + body: 'Tiştên jêrîn berî ku ew bi gelemperî werin xuyakirin divê werin nirxandin:' + new_trending_links: + no_approved_links: Niha tu girêdanên rojeva pejirandî tune ne. + requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} girêdana diyarkirî ya pejirandî derbas bibe, niha ku "%{lowest_link_title}" bi %{lowest_link_score} puan e.' + title: Girêdanên rojevê + new_trending_statuses: + no_approved_statuses: Niha tu şandiyên rojeva pejirandî tune ne. + requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} şandiyaa diyarkirî ya pejirandî derbas bibe, niha ku %{lowest_status_url} bi %{lowest_status_score} puan e.' + title: Şandiyên rojevê + new_trending_tags: + no_approved_tags: Niha hashtagên rojevê pejirandî tune ne. + requirements: 'Yek ji namzedên li jêr dikare ji #%{rank} hashtagaa diyarkirî ya pejirandî derbas bibe, niha ku #%{lowest_tag_name} bi %{lowest_tag_score} puan e.' + title: Hashtagên rojevê + subject: Rojevên nû ji bo nirxandinê li ser %{instance} derdikevin aliases: add_new: Naveke sexte çê bike created_msg: Bi serkeftî nûçikê nû hat çêkirin. Tu niha dikarî di ajimêrê xwe kevn bar bikî. @@ -1178,6 +1200,9 @@ kmr: carry_mutes_over_text: Ev bikarhêner ji %{acct}, ku te bê deng kirbû, bar kir. copy_account_note_text: 'Ev bikarhêner ji %{acct} livî ye, li vir nîşeyên te yên berê ku te di derbarê wî/ê de nivîsandiye:' notification_mailer: + admin: + sign_up: + subject: "%{name} tomar bû" digest: action: Hemû agahdariyan nîşan bide body: Li vir kurteyeke peyamên ku li te derbasbûnd ji serdana te ya dawîn di %{since} de diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 9efdeb751..d905fb606 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -463,10 +463,7 @@ ko: add_new: 새로 추가 created_msg: 이메일 도메인 차단 규칙을 생성했습니다 delete: 삭제 - destroyed_msg: 이메일 도메인 차단 규칙을 삭제했습니다 domain: 도메인 - empty: 현재 블랙리스트에 등록한 이메일 도메인이 없습니다 - from_html: "%{domain}에서" new: create: 차단 규칙 생성 title: 새 이메일 도메인 차단 @@ -809,16 +806,6 @@ ko: body: "%{reporter} 가 %{target} 를 신고했습니다" body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다" subject: "%{instance} 에 새 신고 등록됨 (#%{id})" - new_trending_links: - body: 아래에 있는 링크들이 오늘 유행 중입니다, 하지만 이 링크들의 출처는 전에 심사를 받은 적이 없습니다. 이 링크들은 승인하기 전까지는 공개적으로 표시되지 않을 것입니다. 동일한 출처에 대한 알림은 더 생성되지 않습니다. - no_approved_links: 현재 승인된 유행 중인 링크가 없습니다. - requirements: 현재 승인된 유행하는 링크 중 가장 낮은 것은 %{lowest_link_score}점을 가진 "%{lowest_link_title}" 입니다 - subject: 새 유행하는 링크가 %{instance}에서 심사 대기 중입니다 - new_trending_tags: - body: '아래에 있는 해시태그들이 오늘 유행 중입니다, 하지만 전에 심사를 받은 적이 없습니다. 이 해시태그들은 승인하기 전까지는 공개적으로 표시되지 않을 것입니다:' - no_approved_tags: 현재 승인된 유행 중인 해시태그가 없습니다. - requirements: '현재 승인된 유행하는 해시태그 중 가장 낮은 것은 %{lowest_tag_score}점을 가진 #%{lowest_tag_name} 입니다' - subject: 새 유행하는 해시태그가 %{instance}에서 심사 대기 중입니다 aliases: add_new: 별칭 만들기 created_msg: 새 별칭이 성공적으로 만들어졌습니다. 이제 기존 계정에서 이주를 시작할 수 있습니다. @@ -976,6 +963,7 @@ ko: none: 경고 sensitive: 계정을 민감함으로 표시 silence: 계정의 제한 + suspend: 계정 정지 domain_validator: invalid_domain: 올바른 도메인 네임이 아닙니다 errors: @@ -1148,6 +1136,9 @@ ko: carry_mutes_over_text: 이 사용자는 당신이 뮤트한 %{acct}로부터 이주 했습니다. copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:' notification_mailer: + admin: + sign_up: + subject: "%{name} 님이 가입했습니다" digest: action: 모든 알림 보기 body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약 @@ -1528,6 +1519,8 @@ ko: user_mailer: appeal_approved: action: 내 계정으로 가기 + appeal_rejected: + title: 이의제기가 거절되었습니다 backup_ready: explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다! subject: 당신의 아카이브를 다운로드 가능합니다 @@ -1539,6 +1532,8 @@ ko: subject: 로그인 시도를 확인해 주십시오 title: 로그인 시도 warning: + appeal: 이의 제출하기 + appeal_description: 이것이 오류라고 생각한다면, %{instance}의 중재자에게 이의신청을 할 수 있습니다. categories: spam: 스팸 violation: 컨텐츠가 다음의 커뮤니티 규정을 위반합니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index bcf71682a..4fb522d09 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -352,10 +352,7 @@ ku: add_new: زیادکردنی نوێ created_msg: بە سەرکەوتوویی دۆمەینی ئیمەیڵ بلۆک کرا delete: سڕینەوە - destroyed_msg: بە سەرکەوتوویی دۆمەینی ئیمەیڵ لە بلۆک لاچوو domain: دۆمەین - empty: هیچ دۆمەینێک لە ئێستادا بلۆک نەکراوە. - from_html: لە %{domain} new: create: زیادکردنی دۆمەین title: بلۆککردنی دۆمەینی ئیمەیڵی نوێ diff --git a/config/locales/lt.yml b/config/locales/lt.yml index bf7166b4f..838eccc15 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -203,7 +203,6 @@ lt: add_new: Pridėti naują created_msg: El pašto domenas sėkmingai pridėtas į juodąjį sąrašą delete: Ištrinti - destroyed_msg: El pašto adresas sėkmingai pašalintas iš juodojo sąrašo domain: Domenas new: create: Pridėto domeną diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 808cc567e..8e1a831dd 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -475,15 +475,23 @@ lv: view: Skatīt domēna bloķēšanu email_domain_blocks: add_new: Pievienot jaunu + attempts_over_week: + one: "%{count} mēģinājums pagājušajā nedēļā" + other: "%{count} reģistrēšanās mēģinājumi pagājušajā nedēļā" + zero: "%{count} mēģinājumu pagājušajā nedēļā" created_msg: E-pasta domēns ir veiksmīgi bloķēts delete: Dzēst - destroyed_msg: E-pasta domēns ir veiksmīgi atbloķēts + dns: + types: + mx: MX ieraksts domain: Domēns - empty: Pašlaik nav bloķēts neviens e-pasta domēns. - from_html: no %{domain} new: create: Pievienot domēnu + resolve: Atrisināt domēnu title: Bloķēt jaunu e-pasta domēnu + no_email_domain_block_selected: Neviens e-pasta domēna bloks netika mainīts, jo neviens netika atlasīts + resolved_dns_records_hint_html: Domēna nosaukums tiek izmantots tālāk norādītajos MX domēnos, kas galu galā ir atbildīgi par e-pasta pieņemšanu. Bloķējot MX domēnu, tiks bloķēta reģistrēšanās no jebkuras e-pasta adreses, kas izmanto vienu un to pašu MX domēnu, pat ja redzamais domēna nosaukums atšķiras. Esi uzmanīgs, lai nebloķētu lielākos e-pasta pakalpojumu sniedzējus. + resolved_through_html: Atrisināts, izmantojot %{domain} title: Bloķētie e-pasta domēni follow_recommendations: description_html: "Sekošana rekomendācijām palīdz jaunajiem lietotājiem ātri atrast interesantu saturu. Ja lietotājs nav pietiekami mijiedarbojies ar citiem, lai izveidotu personalizētus ieteikumus, ieteicams izmantot šos kontus. Tie tiek pārrēķināti katru dienu, izmantojot vairākus kontus ar visaugstākajām pēdējā laika saistībām un vislielāko vietējo sekotāju skaitu noteiktā valodā." @@ -620,6 +628,7 @@ lv: title: Piezīmes notes_description_html: Skati un atstāj piezīmes citiem moderatoriem un sev nākotnei quick_actions_description_html: 'Veic ātro darbību vai ritini uz leju, lai skatītu saturu, par kuru ziņots:' + remote_user_placeholder: attālais lietotājs no %{instance} reopen: Atkārtoti atvērt ziņojumu report: 'Ziņojums #%{id}' reported_account: Ziņotais konts @@ -790,6 +799,16 @@ lv: rejected: Saites no šī publicētāja nebūs tendence title: Publicētāji rejected: Noraidīts + statuses: + allow: Atļaut publicēt + allow_account: Atļaut autoru + disallow: Neatļaut publicēt + disallow_account: Neatļaut autoru + shared_by: + one: Vienreiz kopīgots vai pievienots izlasei + other: Kopīgots un pievienots izlasei %{friendly_count} reizes + zero: "%{friendly_count} reižu kopīgots vai pievienots izlasei" + title: Populārākās ziņas tags: current_score: Pašreizējais rezultāts %{score} dashboard: @@ -838,16 +857,21 @@ lv: body: "%{reporter} ziņoja par %{target}" body_remote: Kāds no %{domain} ziņoja par %{target} subject: Jauns ziņojums par %{instance} (#%{id}) - new_trending_links: - body: Tālāk norādītās saites šodien ir populāras, taču to publicētāji iepriekš nav pārskatīti. Tie netiks rādīti publiski, ja vien tu tos neapstiprināsi. Turpmāki paziņojumi no tiem pašiem publicētājiem netiks ģenerēti. - no_approved_links: Pašlaik nav apstiprinātu tendenču saišu. - requirements: Viszemāk apstiprinātā populārā saite pašlaik ir “%{lowest_link_title}” ar rezultātu %{lowest_link_score}. - subject: Jaunas populāras saites ir pieejamas pārskatīšanai vietnē %{instance} - new_trending_tags: - body: 'Tālāk norādītās atsauces ir populāras, taču tās iepriekš nav pārskatītas. Tie netiks rādīti publiski, ja vien tu tās neapstiprināsi:' - no_approved_tags: Pašlaik nav apstiprinātu tendenču tēmturu. - requirements: 'Viszemāk apstiprinātais populārais tēmturis pašlaik ir #%{lowest_tag_name} ar rezultātu %{lowest_tag_score}.' - subject: Jauni populāri tēmturi ir pieejami pārskatīšanai vietnē %{instance} + new_trends: + body: 'Tālāk norādītie vienumi ir jāpārskata, lai tos varētu parādīt publiski:' + new_trending_links: + no_approved_links: Pašlaik nav apstiprinātu tendenču saišu. + requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro saiti, kas pašlaik ir "%{lowest_link_title}" ar rezultātu %{lowest_link_score}.' + title: Populārākās saites + new_trending_statuses: + no_approved_statuses: Pašlaik nav apstiprinātu tendenču saišu. + requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro ziņu, kas pašlaik ir %{lowest_status_url} ar rezultātu %{lowest_status_score}.' + title: Populārākās ziņas + new_trending_tags: + no_approved_tags: Pašlaik nav apstiprinātu tendenču tēmturu. + requirements: 'Jebkurš no šiem kandidātiem varētu pārspēt #%{rank} apstiprināto populāro tēmturi, kas pašlaik ir #%{lowest_tag_name} ar rezultātu %{lowest_tag_score}.' + title: Populārākie tēmturi + subject: Tiek pārskatītas jaunas tendences %{instance} aliases: add_new: Izveidot aizstājvārdu created_msg: Veiksmīgi izveidots jauns aizstājvārds. Tagad vari sākt pārvietošanu no vecā konta. @@ -1188,6 +1212,9 @@ lv: carry_mutes_over_text: Šis lietotājs pārcēlās no %{acct}, kuru tu biji apklusinājis. copy_account_note_text: 'Šis lietotājs pārcēlās no %{acct}, šeit bija tavas iepriekšējās piezīmes par viņu:' notification_mailer: + admin: + sign_up: + subject: "%{name} ir pierakstījies" digest: action: Rādīt visus paziņojumus body: Šeit ir īss kopsavilkums par ziņojumiem, kurus tu esi palaidis garām kopš pēdējā apmeklējuma %{since} diff --git a/config/locales/ms.yml b/config/locales/ms.yml index 0cd87686e..9a9b92d3c 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -403,10 +403,7 @@ ms: add_new: Tambah baharu created_msg: Telah berjaya menyekat domain e-mel delete: Padam - destroyed_msg: Telah berjaya menyahsekat domain e-mel domain: Domain - empty: Tiada domain e-mel sedang disekat. - from_html: dari %{domain} new: create: Tambah domain title: Sekat domain e-mel baharu diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 22084fa29..f1cbecbc0 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -406,10 +406,7 @@ nl: add_new: Nieuwe toevoegen created_msg: Blokkeren e-maildomein geslaagd delete: Verwijderen - destroyed_msg: Deblokkeren e-maildomein geslaagd domain: Domein - empty: Momenteel worden er geen e-maildomeinen geblokkeerd. - from_html: van %{domain} new: create: Blokkeren title: Nieuw e-maildomein blokkeren diff --git a/config/locales/nn.yml b/config/locales/nn.yml index eae87f41e..14cd5a1c7 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -379,10 +379,7 @@ nn: add_new: Lag ny created_msg: E-postdomenet ble lagt til i blokkeringslisten uten problemer delete: Slett - destroyed_msg: E-postdomenet har blitt fjernet fra blokkeringslisten uten problemer domain: Domene - empty: Ingen e-mail-domener er sortelistet på dette tidspunkt. - from_html: frå %{domain} new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene diff --git a/config/locales/no.yml b/config/locales/no.yml index 7019b2457..3e6b49524 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -376,10 +376,7 @@ add_new: Lag ny created_msg: E-postdomenet ble lagt til i blokkeringslisten uten problemer delete: Fjern - destroyed_msg: E-postdomenet har blitt fjernet fra blokkeringslisten uten problemer domain: Domene - empty: Ingen e-mail-domener er sortelistet på dette tidspunkt. - from_html: fra %{domain} new: create: Legg til domene title: Ny blokkeringsoppføring av e-postdomene diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 844a8b256..79b73d12f 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -339,10 +339,7 @@ oc: add_new: Ajustar created_msg: Blocatge del domeni de corrièl ben plaçat delete: Suprimir - destroyed_msg: Blocatge del domeni de corrièl ben levat domain: Domeni - empty: Cap de domeni de corrièl es pas en lista negra actualament. - from_html: de %{domain} new: create: Crear un blocatge title: Nòu blocatge de domeni de corrièl diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 6a48cb840..b953b44e3 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -481,13 +481,17 @@ pl: add_new: Dodaj nową created_msg: Pomyślnie utworzono blokadę domeny e-mail delete: Usuń - destroyed_msg: Pomyślnie usunięto blokadę domeny e-mail + dns: + types: + mx: Rekord MX domain: Domena - empty: Żadna domena e-mail nie znajduje się obecnie na czarnej liście. - from_html: z %{domain} new: create: Utwórz blokadę + resolve: Rozwiąż domenę title: Nowa blokada domeny e-mail + no_email_domain_block_selected: Żadne blokady domeny e-mail nie zostały zmienione, ponieważ żadne z nich nie zostały wybrane + resolved_dns_records_hint_html: Nazwa domeny rozwiązuje się do następujących domen MX, które są ostatecznie odpowiedzialne za przyjmowanie wiadomości e-mail. Blokowanie domeny MX spowoduje zablokowanie rejestracji z dowolnego adresu e-mail, który używa tej samej domeny MX, nawet jeśli widoczna nazwa domeny jest inna. Uważaj, aby nie blokować głównych dostawców poczty elektronicznej. + resolved_through_html: Rozwiązano przez %{domain} title: Blokowanie domen e-mail follow_recommendations: description_html: "Polecane śledzenia pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka." @@ -788,6 +792,12 @@ pl: rejected: Linki od tego wydawcy nie mogą podlegać trendom title: Wydawcy rejected: Odrzucono + statuses: + allow: Zezwól na post + allow_account: Zezwól na autora + disallow: Nie zezwalaj na post + disallow_account: Nie zezwalaj na autora + title: Popularne teraz tags: current_score: Bieżący wynik %{score} dashboard: @@ -832,16 +842,10 @@ pl: body: Użytkownik %{reporter} zgłosił(a) %{target} body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target} subject: Nowe zgłoszenie na %{instance} (#%{id}) - new_trending_links: - body: Poniższe linki są dziś popularne, ale ich wydawcy nie byli wcześniej sprawdzeni. Nie będą one wyświetlane publicznie dopóki ich nie zatwierdzisz. Kolejne powiadomienia od tych samych wydawców nie zostaną wygenerowane. - no_approved_links: Obecnie nie ma zatwierdzonych linków trendów. - requirements: Najniższy zatwierdzony link trendu to "%{lowest_link_title}" z wynikiem %{lowest_link_score}. - subject: Nowe popularne linki do przeglądu na %{instance} - new_trending_tags: - body: 'Następujące hashtagi są dziś popularne, ale nie zostały wcześniej sprawdzone. Nie będą one wyświetlane publicznie, chyba że je zatwierdzisz:' - no_approved_tags: Obecnie nie ma zatwierdzonych popularnych hashtagów. - requirements: 'Najniższy zatwierdzony popularny hashtag to obecnie #%{lowest_tag_name} z wynikiem %{lowest_tag_score}.' - subject: Nowy popularny hashtag do zatwierdzenia na %{instance} + new_trends: + body: 'Następujące elementy potrzebują recenzji zanim będą mogły być wyświetlane publicznie:' + new_trending_links: + no_approved_links: Obecnie nie ma zatwierdzonych linków trendów. aliases: add_new: Utwórz alias created_msg: Pomyślnie utworzono nowy alias. Możesz teraz rozpocząć przenoszenie ze starego konta. @@ -1184,6 +1188,9 @@ pl: carry_mutes_over_text: Ten użytkownik przeniósł się z konta %{acct}, które wyciszyłeś(-aś). copy_account_note_text: 'Ten użytkownik przeniósł się z konta %{acct}, oto Twoje poprzednie notatki o nim:' notification_mailer: + admin: + sign_up: + subject: "%{name} zarejestrował(-a) się" digest: action: Wyświetl wszystkie powiadomienia body: Oto krótkie podsumowanie wiadomości, które ominęły Cię od Twojej ostatniej wizyty (%{since}) diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 547fbabab..e9f1f6350 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -255,6 +255,7 @@ pt-BR: enable_user: Ativar usuário memorialize_account: Converter conta em memorial promote_user: Promover usuário + reject_appeal: Rejeitar recurso reject_user: Rejeitar Usuário remove_avatar_user: Remover Avatar reopen_report: Reabrir Relatório @@ -273,6 +274,7 @@ pt-BR: update_domain_block: Atualizar bloqueio de domínio update_status: Editar Status actions: + approve_appeal_html: "%{name} aprovou o recurso de decisão de moderação de %{target}" assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} para si" change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}" confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}" @@ -388,6 +390,9 @@ pt-BR: top_languages: Línguas mais ativas top_servers: Servidores mais ativos website: Site + disputes: + appeals: + title: Apelações domain_allows: add_new: Permitir domínio created_msg: Domínio foi permitido @@ -425,6 +430,8 @@ pt-BR: silence: silenciado suspend: banido show: + affected_accounts: + one: Uma conta no banco de dados foi afetada retroactive: silence: Dessilenciar contas existentes afetadas deste domínio suspend: Remover a suspensão das contas afetadas deste domínio @@ -436,12 +443,10 @@ pt-BR: add_new: Adicionar novo created_msg: Domínio de e-mail adicionado à lista negra com sucesso delete: Excluir - destroyed_msg: Domínio de e-mail excluído da lista negra com sucesso domain: Domínio - empty: Nenhum domínio de e-mail atualmente bloqueado. - from_html: de %{domain} new: create: Adicionar domínio + resolve: Resolver domínio title: Nova entrada de lista negra de e-mail title: Lista de negra de e-mail follow_recommendations: @@ -715,6 +720,8 @@ pt-BR: rejected: Links deste editor não vão tender title: Editor rejected: Rejeitado + statuses: + title: Publicações em alta tags: current_score: Pontuação atual %{score} dashboard: @@ -746,10 +753,6 @@ pt-BR: body: "%{reporter} denunciou %{target}" body_remote: Alguém da instância %{domain} reportou %{target} subject: Nova denúncia sobre %{instance} (#%{id}) - new_trending_links: - no_approved_links: Atualmente, não há links de tendência aprovados. - new_trending_tags: - body: 'As seguintes hashtags estão em alta hoje, mas não foram avaliadas anteriormente. Elas não serão exibidas publicamente, a menos que você as aprove:' aliases: add_new: Criar alias created_msg: Um novo alias foi criado com sucesso. Agora você pode iniciar a mudança da conta antiga. diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 0626b8be9..743758cca 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -467,15 +467,22 @@ pt-PT: view: Ver domínios bloqueados email_domain_blocks: add_new: Adicionar novo + attempts_over_week: + one: "%{count} tentativa na última semana" + other: "%{count} tentativas de inscrição na última semana" created_msg: Bloqueio de domínio de e-mail criado com sucesso delete: Eliminar - destroyed_msg: Bloqueio de domínio de e-mail excluído com sucesso + dns: + types: + mx: Registo MX domain: Domínio - empty: Nenhum domínio de e-mail atualmente na lista negra. - from_html: de %{domain} new: create: Adicionar domínio + resolve: Domínio de resolução title: Novo bloqueio de domínio de e-mail + no_email_domain_block_selected: Nenhum bloqueio de domínio de e-mail foi alterado pois nenhum foi selecionado + resolved_dns_records_hint_html: O nome de domínio resolve para os seguintes domínios MX, que são, em última análise, responsáveis por aceitar o e-mail. Bloquear um domínio MX irá bloquear as inscrições de qualquer endereço de e-mail que use o mesmo domínio MX, mesmo quando o nome de domínio visível é diferente. Cuidado para não bloquear os principais provedores de e-mail. + resolved_through_html: Resolvido através de %{domain} title: Domínios de e-mail bloqueados follow_recommendations: description_html: "Recomendações de quem seguir ajudam novos utilizadores a encontrar conteúdo interessante rapidamente.. Quando um utilizador não interage com outros o suficiente para formar recomendações personalizadas, estas contas são recomendadas. Elas são recalculadas diariamente a partir de uma mistura de contas com mais atividade recente e maior número de seguidores locais para um determinado idioma." @@ -610,6 +617,7 @@ pt-PT: title: Notas notes_description_html: Visualize e deixe anotações para outros moderadores e para sí no futuro quick_actions_description_html: 'Tome uma ação rápida ou role para baixo para ver o conteúdo denunciado:' + remote_user_placeholder: o utilizador remoto de %{instance} reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada @@ -780,6 +788,15 @@ pt-PT: rejected: Links deste editor não serão incluídos nos destaques title: Editores rejected: Rejeitado + statuses: + allow: Permitir publicação + allow_account: Permitir autor + disallow: Não permitir publicação + disallow_account: Não permitir autor + shared_by: + one: Partilhado ou adicionado aos favoritos uma vez + other: Partilhado e adicionado aos favoritos %{friendly_count} vezes + title: Publicações em destaque tags: current_score: Pontuação atual %{score} dashboard: @@ -828,16 +845,21 @@ pt-PT: body: "%{reporter} denunciou %{target}" body_remote: Alguém de %{domain} denunciou %{target} subject: Nova denúncia para %{instance} (#%{id}) - new_trending_links: - body: Os seguintes links estão hoje em destaque, mas os seus editores não foram previamente revistos. Eles não serão exibidos publicamente a menos que você os aprove. Outras notificações dos mesmos editores não serão geradas. - no_approved_links: Não existem, atualmente, links aprovados em destaque. - requirements: O link em destaque, com pontuação mais baixa, aprovado atualmente é "%{lowest_link_title}" com uma pontuação de %{lowest_link_score}. - subject: Novos links em destaque para revisão em %{instance} - new_trending_tags: - body: 'As seguintes hashtags estão hoje em tendência, mas não foram revistas anteriormente. Elas não serão exibidas publicamente, a menos que você as aprove:' - no_approved_tags: Não existem, atualmente, hashtags aprovados em tendência. - requirements: 'A hashtag em tendência, com pontuação mais baixa, aprovado atualmente é #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' - subject: Novas hashtags em tendência para revisão em %{instance} + new_trends: + body: 'Os seguintes itens precisam ser revistos antes de poderem ser exibidos publicamente:' + new_trending_links: + no_approved_links: Não existem, atualmente, links aprovados em destaque. + requirements: 'Qualquer um destes candidatos pode ultrapassar o #%{rank} link aprovado em destaque, que é atualmente "%{lowest_link_title}" com uma pontuação de %{lowest_link_score}.' + title: Links em destaque + new_trending_statuses: + no_approved_statuses: Não existem, atualmente, publicações aprovadas em destaque. + requirements: 'Qualquer um destes candidatos pode ultrapassar a #%{rank} publicação aprovada em destaque, que é atualmente %{lowest_status_url} com uma pontuação de %{lowest_status_score}.' + title: Publicações em destaque + new_trending_tags: + no_approved_tags: Não existem, atualmente, hashtags aprovadas em destaque. + requirements: 'Qualquer um destes candidatos pode ultrapassar a #%{rank} hashtag aprovada em destaque, que é atualmente #%{lowest_tag_name} com uma pontuação de %{lowest_tag_score}.' + title: Hashtags em destaque + subject: Novas tendências para revisão em %{instance} aliases: add_new: Criar pseudónimo created_msg: Criou com sucesso um novo pseudónimo. Pode agora iniciar a migração da conta antiga. @@ -1176,6 +1198,9 @@ pt-PT: carry_mutes_over_text: Este utilizador migrou de %{acct}, que você tinha silenciado. copy_account_note_text: 'Este utilizador migrou de %{acct}, aqui estão as suas notas anteriores sobre ele:' notification_mailer: + admin: + sign_up: + subject: "%{name} inscreveu-se" digest: action: Ver todas as notificações body: Aqui tens um breve resumo do que perdeste desde o último acesso a %{since} diff --git a/config/locales/ru.yml b/config/locales/ru.yml index f99d8962a..745ef5430 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -174,6 +174,7 @@ ru: previous_strikes_description_html: one: У этой учетной записи одно замечание. other: У этой учетной записи %{count} замечания. + zero: У этой учетной записи хорошая репутация. promote: Повысить protocol: Протокол public: Публичный @@ -462,13 +463,14 @@ ru: add_new: Добавить новую created_msg: E-mail домен внесён в список блокировки delete: Удалить - destroyed_msg: Домен убран из списка e-mail блокировки + dns: + types: + mx: Запись MX domain: Домен - empty: Никакие e-mail домены не блокируются. - from_html: с %{domain} new: create: Создать блокировку title: Новая блокировка по домену + resolved_through_html: Разрешено через %{domain} title: Блокировка e-mail доменов follow_recommendations: description_html: "Следуйте рекомендациям, чтобы помочь новым пользователям быстро находить интересный контент. Если пользователь не взаимодействовал с другими в достаточной степени, чтобы сформировать персонализированные рекомендации, вместо этого рекомендуется использовать эти учетные записи. Они пересчитываются на ежедневной основе на основе комбинации аккаунтов с наибольшим количеством недавних взаимодействий и наибольшим количеством местных подписчиков для данного языка." @@ -603,6 +605,7 @@ ru: placeholder: Опишите, какие действия были приняты, или любые другие подробности… title: Примечания notes_description_html: Просмотрите или оставьте примечания для остальных модераторов и себя в будущем + remote_user_placeholder: удаленный пользователь из %{instance} reopen: Переоткрыть жалобу report: Жалоба №%{id} reported_account: Учётная запись нарушителя @@ -731,6 +734,8 @@ ru: title: Посты пользователя with_media: С файлами strikes: + actions: + delete_statuses: "%{name} удалил(а) посты %{target}" appeal_pending: Обжалование в обработке system_checks: database_schema_check: @@ -751,6 +756,7 @@ ru: links: allow: Разрешить ссылку allow_provider: Разрешить издание + disallow: Запретить ссылку disallow_provider: Отклонить издание title: Актуальные ссылки pending_review: Ожидает рассмотрения @@ -762,7 +768,7 @@ ru: tags: dashboard: tag_accounts_measure: уникальных использований - tag_languages_dimension: Самые популярные языки + tag_languages_dimension: Популярные языки tag_servers_dimension: Самые популярные серверы tag_uses_measure: всего использований listable: Может предлагаться @@ -787,8 +793,6 @@ ru: body: "%{reporter} подал(а) жалобу на %{target}" body_remote: Кто-то с узла %{domain} пожаловался на %{target} subject: Новая жалоба, узел %{instance} (№%{id}) - new_trending_links: - body: Следующие ссылки на неподтверждённых издателей сегодня актуальны. Они не будут отображаться пока вы их не подтвердите. Дальнейшие уведомления для тех же издателей не будут созданы. aliases: add_new: Создать псевдоним created_msg: Новый псевдоним установлен. Теперь мы можете начать миграцию со старой учётной записи. @@ -1117,6 +1121,9 @@ ru: carry_mutes_over_text: Этот пользователь переехал с учётной записи %{acct}, которую вы добавили в список игнорирования. copy_account_note_text: 'Этот пользователь переехал с %{acct}, вот ваша предыдущая заметка о нём:' notification_mailer: + admin: + sign_up: + subject: "%{name} зарегистрирован" digest: action: Просмотреть все уведомления body: Вот краткая сводка сообщений, которые вы пропустили с последнего захода %{since} @@ -1566,7 +1573,7 @@ ru: welcome: edit_profile_action: Настроить профиль edit_profile_step: Настройте свой профиль, загрузив аватарку, шапку, изменив отображаемое имя и ещё много чего. Если вы хотите вручную рассматривать и подтверждать подписчиков, можно закрыть свою учётную запись. - explanation: Несколько советов для новичков + explanation: Вот несколько советов для новичков final_action: Начать постить final_step: 'Начните постить! Ваши публичные посты могут видеть другие, например, в локальной ленте или по хэштегам, даже если у вас нет подписчиков. Вы также можете поздороваться с остальными и представиться, используя хэштег #приветствие.' full_handle: Ваше обращение diff --git a/config/locales/sc.yml b/config/locales/sc.yml index ce9d35ac3..15e305cb5 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -403,10 +403,7 @@ sc: add_new: Agiunghe nou created_msg: Domìniu de posta eletrònica blocadu delete: Cantzella - destroyed_msg: Domìniu de posta eletrònica isblocadu domain: Domìniu - empty: Perunu domìniu de posta eletrònica blocadu. - from_html: dae %{domain} new: create: Agiunghe unu domìniu title: Bloca su domìniu de posta eletrònica nou diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 7c122495a..643ee8891 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -62,7 +62,6 @@ ar: domain_allow: domain: سيكون بإمكان هذا النطاق جلب البيانات من هذا الخادم ومعالجة وتخزين البيانات الواردة منه email_domain_block: - domain: يمكن لهذا أن يكون اسم النطاق الذي يظهر في عنوان البريد الإلكتروني، سجل MX الذي يُقرر هذا النطاق إليه، أو IP الخادم الذي يقرره سجل MX. وسيتم التحقق من ذلك عند تسجيل المستخدم وسيتم رفض التسجيل. with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج featured_tag: name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:' diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 7339f17df..93b88a618 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -86,6 +86,8 @@ ast: must_be_following_dm: Bloquiar los mensaxes direutos de persones que nun sigues invite_request: text: "¿Por qué quies xunite?" + ip_block: + ip: IP notification_emails: favourite: Daquién marcó como favoritu un estáu de to follow: Daquién te sigue diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 42c241cab..7f9d838ba 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -64,7 +64,7 @@ ca: domain_allow: domain: Aquest domini podrà obtenir dades d’aquest servidor i les dades entrants d’aquests seran processades i emmagatzemades email_domain_block: - domain: Això pot ser el nom del domini que es veu en l’adreça de correu electrònic, el registre MX al que resol el domini o l’IP del servidor al que resol el registre MX. Es comprovaran amb el registre d’usuari i es rebutjarà la inscripció. + domain: Aquest pot ser el nom del domini que es mostra en l'adreça de correu o el registre MX que utilitza. Es revisaran ql registrar-se. with_dns_records: Es procurarà resoldre els registres DNS del domini determinat i els resultats també es llistaran a la llista negra featured_tag: name: 'És possible que vulguis utilitzar una d''aquestes:' diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index b350ab447..cf938f0c7 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -55,7 +55,6 @@ co: domain_allow: domain: Stu duminiu puderà ricuperà i dati di stu servore è i dati ch'affaccanu da quallà saranu trattati è cunservati email_domain_block: - domain: Pò esse u duminiu affissatu nant'à l'indirizzu e-mail, l'intrata MX assuciata à u duminiu, o l'IP di u servore assuciatu à l'intrata MX. Quessi anu da esse verificati durante l'arregistramente di l'utilizatore, chì sarà righjittatu. with_dns_records: Un tintativu di cunsultà i dati DNS di u duminiu sarà fattu, è i risultati saranu ancu messi nant'à a lista nera featured_tag: name: 'Pudete vulè utilizà unu di quelli:' diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 4d0e7d068..74bfa1bfb 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -62,7 +62,6 @@ cs: domain_allow: domain: Tato doména bude moci stahovat data z tohoto serveru a příchozí data z ní budou zpracována a uložena email_domain_block: - domain: Toto může být název domény v e-mailové adresy, její MX záznam nebo IP adresa odpovídající MX záznamu. Při registraci uživatele dojde k jejich kontrole a registrace bude zamítnuta. with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány featured_tag: name: 'Nejspíš budete chtít použít jeden z těchto:' diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 966bcab00..6cdada6f3 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -55,7 +55,7 @@ cy: domain_allow: domain: Bydd y parth hwn yn gallu nôl data o'r gweinydd hwn a bydd data sy'n dod i mewn ohono yn cael ei brosesu a'i storio email_domain_block: - domain: Gall hyn fod yr enw parth sy'n dangos yn yr ebost, y cofnod MX mae'r parth yn adfer i, neu'r cyfeiriad IP o'r gweinydd mae'r cofnod MX yn adfer i. Bydd y rhain yn cael eu gwirio wrth i defnyddiwr cofrestru, a chaiff y cofrestriad ei wrthod. + domain: Gall hwn fod yr enw parth sy'n ymddangos yn y cyfeiriad e-bost neu'r cofnod MX y mae'n ei ddefnyddio. Byddant yn cael eu gwirio wrth gofrestru. with_dns_records: Bydd ceisiad i adfer cofnodau DNS y parth penodol yn cael ei wneud, a bydd y canlyniadau hefyd yn cael ei gosbrestru featured_tag: name: 'Efallai hoffech defnyddio un o''r rhain:' diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index f732427b3..f55d63912 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -62,7 +62,7 @@ da: domain_allow: domain: Dette domæne vil kunne hente data, og dermed behandle og gemme indgående data, fra denne server email_domain_block: - domain: Dette kan være det domænenavn, der vises i e-mailadressen, MX-posten domænet opløser til eller IP'en på den server, som MX-posten opløser til. Disse tjekkes ved brugertilmelding, og tilmeldingen afvises. + domain: Dette kan være domænenavnet i e-mailadressen eller MX-posten, den bruger. Begge tjekkes ved tilmelding. with_dns_records: Et forsøg på at løse det givne domænes DNS-poster foretages og resultaterne blokeres ligeledes featured_tag: name: 'Du vil formentlig ønske at bruge en af flg.:' diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 116783056..8b7a02b18 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -64,7 +64,7 @@ de: domain_allow: domain: Diese Domain kann Daten von diesem Server abrufen und eingehende Daten werden verarbeitet und gespeichert email_domain_block: - domain: Dies kann der Domainname sein, der in der E-Mail-Adresse angezeigt wird, den MX-Datensatz, der aufgelöst wird oder die IP des Servers, auf dem der MX-Eintrag aufgelöst wird. Diese werden bei der Registrierung überprüft und die Registrierung wird abgelehnt. + domain: Dies kann der Domänenname sein, der in der E-Mail-Adresse oder dem von ihm verwendeten MX-Eintrag angezeigt wird. Er wird bei der Anmeldung überprüft. with_dns_records: Ein Versuch die DNS-Einträge der Domain aufzulösen wurde unternommen und diese Ergebnisse werden unter anderem auch geblockt featured_tag: name: 'Du möchtest vielleicht einen von diesen benutzen:' diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 74edc2b70..3396a32a9 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -61,7 +61,6 @@ el: domain_allow: domain: Ο τομέας αυτός θα επιτρέπεται να ανακτά δεδομένα από αυτό τον διακομιστή και τα εισερχόμενα δεδομένα θα επεξεργάζονται και θα αποθηκεύονται email_domain_block: - domain: Αυτό μπορεί να είναι το όνομα του τομέα που εμφανίζεται στη διεύθυνση email, στην εγγραφή MX στην οποία δείχνει ο τομέας ή την διεύθυνση IP του σέρβερ που δείχνει η εγγραφή MX. Αυτά θα ελεγχθούν κατά την εγγραφή του χρήστη και η εγγραφή θα απορριφθεί αναλόγως. with_dns_records: Θα γίνει απόπειρα ανάλυσης των εγγραφών DNS του τομέα και τα αποτελέσματα θα μπουν και αυτά σε μαύρη λίστα featured_tag: name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:' diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 676cebfb8..17a7594f5 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -64,7 +64,7 @@ es-AR: domain_allow: domain: Este dominio podrá recolectar datos de este servidor, y los datos entrantes serán procesados y archivados email_domain_block: - domain: Puede ser el nombre de dominio que aparece en la dirección de correo electrónico, el registro MX hacia el cual resuelve el dominio, o la dirección IP del servidor hacia el cual resuelve ese registro MX. Esto se comprobará en el momento del registro del usuario, y el registro será rechazado. + domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que se use. Se revisarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también bloqueados featured_tag: name: 'Puede que quieras usar una de estas:' diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index e679e5498..9c06e59ba 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -27,6 +27,8 @@ es-MX: scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente starts_at: Opcional. En caso de que su anuncio esté vinculado a un intervalo de tiempo específico text: Puedes usar la sintaxis toot. Por favor ten en cuenta el espacio que ocupará el anuncio en la pantalla del usuario + appeal: + text: Sólo puedes apelar una amonestación una vez defaults: autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px @@ -62,7 +64,6 @@ es-MX: domain_allow: domain: Este dominio podrá obtener datos de este servidor y los datos entrantes serán procesados y archivados email_domain_block: - domain: Puede ser el nombre de dominio que aparece en la dirección de correo, el registro MX hacia el cual resuelve el dominio, o la IP del servidor hacia el cual resuelve ese registro MX. Esto se comprobará en el momento del alta del usuario y el alta se rechazará. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra featured_tag: name: 'Puede que quieras usar uno de estos:' @@ -119,6 +120,8 @@ es-MX: scheduled_at: Programar publicación starts_at: Comienzo del evento text: Anuncio + appeal: + text: Explica por qué esta decisión debe ser revertida defaults: autofollow: Invitar a seguir tu cuenta avatar: Foto de perfil @@ -197,6 +200,7 @@ es-MX: sign_up_requires_approval: Limitar registros severity: Regla notification_emails: + appeal: Alguien ha apelado una decisión de moderación digest: Enviar resumen de correos electrónicos favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación follow: Enviar correo electrónico cuando alguien te siga @@ -204,6 +208,8 @@ es-MX: mention: Enviar correo electrónico cuando alguien te mencione pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión reblog: Enviar correo electrónico cuando alguien comparta su publicación + report: Nuevo informe enviado + trending_tag: Una nueva tendencia requiere revisión rule: text: Norma tag: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 9578ff13e..0663571ab 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -64,7 +64,7 @@ es: domain_allow: domain: Este dominio podrá obtener datos de este servidor y los datos entrantes serán procesados y archivados email_domain_block: - domain: Puede ser el nombre de dominio que aparece en la dirección de correo, el registro MX hacia el cual resuelve el dominio, o la IP del servidor hacia el cual resuelve ese registro MX. Esto se comprobará en el momento del alta del usuario y el alta se rechazará. + domain: Este puede ser el nombre de dominio que aparece en la dirección de correo electrónico o el registro MX que utiliza. Se comprobarán al registrarse. with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra featured_tag: name: 'Puede que quieras usar uno de estos:' diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index b6e4908c1..96a1ed3e4 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -55,7 +55,6 @@ et: domain_allow: domain: See domeen saab tõmmata andmeid sellelt serverilt ning sissetulevad andmed sellelt domeenilt töödeldakse ning salvestatakse email_domain_block: - domain: See võib olla domeeninimi, mis esineb e-posti aadressil, MX kirjele vastav domeen või serveri IP. Neid kontrollitakse, kui kasutaja loob konto ning seejärel konto loomine keelatakse. with_dns_records: Proovitakse ka üles vaadata selle domeeni DNS kirjed ning selle vastused samuti keelatakse featured_tag: name: 'Äkki soovite kasutada mõnda neist:' diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 145791566..09bf37920 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -62,7 +62,6 @@ eu: domain_allow: domain: Domeinu honek zerbitzari honetatik datuak hartu ahal izango ditu eta bertatik jasotako informazioa prozesatu eta gordeko da email_domain_block: - domain: Hau e-mail helbidean agertzen den domeinua izan daiteke, honen MX erregistroa, edo MX erregistroaren IP helbidea. Hauek erabiltzaileak izena ematean egiaztatuko dira eta atzera botako da. with_dns_records: Emandako domeinuaren DNS erregistroak ebazteko saiakera bat egingo da eta emaitzak ere zerrenda beltzean sartuko dira featured_tag: name: 'Hauetakoren bat erabili zenezake:' diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 435493302..b5f023d86 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -62,7 +62,6 @@ fa: domain_allow: domain: این دامین خواهد توانست داده‌ها از این سرور را دریافت کند و داده‌های از این دامین در این‌جا پردازش و ذخیره خواهند شد email_domain_block: - domain: می‌تواند نام دامنه که در نشانی رایانامه ظاهر می‌شود، رکورد MX که دامنه به آن resolve می‌شود یا IP کارسازی که رکورد MX به آن resolve می‌شود باشد. این موارد هنگام ثبت‌نام کاربر بررسی شده و ثبت‌نام رد می‌شود. with_dns_records: تلاشی برای resolve کردن رکوردهای ساناد دامنهٔ داده‌شده انجام شده و نتیجه نیز مسدود خواهد شد featured_tag: name: 'شاید بخواهید چنین چیزهایی را به کار ببرید:' diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 25ff3a162..279d55d8c 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -64,7 +64,7 @@ fi: domain_allow: domain: Tämä verkkotunnus voi noutaa tietoja tältä palvelimelta ja sieltä saapuvat tiedot käsitellään ja tallennetaan email_domain_block: - domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa, MX-tietue, johon verkkotunnus ratkaistaan tai IP-osoitteessa, johon MX tietue päättää. Ne tarkistetaan käyttäjän kirjautumisen yhteydessä ja kirjautuminen hylätään. + domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa tai MX tietueessa jota se käyttää. Ne tarkistetaan rekisteröitymisen yhteydessä. with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään featured_tag: name: 'Voit halutessasi käyttää jotakin näistä:' diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 8aa4af15e..0e44dad0a 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -64,7 +64,7 @@ fr: domain_allow: domain: Ce domaine pourra récupérer des données de ce serveur et les données entrantes seront traitées et stockées email_domain_block: - domain: Ceci peut être le nom de domaine qui apparaît dans le courriel, l’enregistrement MX que le domaine résout, ou l’IP du serveur auquel l’enregistrement MX résout. Celles-ci seront vérifiées lors de l’inscription de l’utilisateur et l’inscription sera rejetée. + domain: Cela peut être le nom de domaine qui apparaît dans l'adresse courriel ou l'enregistrement MX qu'il utilise. Une vérification sera faite à l'inscription. with_dns_records: Une tentative de résolution des enregistrements DNS du domaine donné sera effectuée et les résultats seront également mis sur liste noire featured_tag: name: 'Vous pourriez vouloir utiliser l’un d’entre eux :' diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index bc2cb5b62..2ca13642a 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -62,7 +62,6 @@ gd: domain_allow: domain: "’S urrainn dhan àrainn seo dàta fhaighinn on fhrithealaiche seo agus thèid an dàta a thig a-steach uaithe a phròiseasadh ’s a stòradh" email_domain_block: - domain: Gabhaidh an t-ainm àrainne a nochdas san t-seòladh puist-d a chleachdadh no an clàr MX dhan dèid an àrainn fhuasgladh no IP an fhrithealaiche dhan dèid an clàr MX fuasgladh. Thèid an dearbhadh nuair a chlàraicheas cleachdaiche ùr leinn is thèid an clàradh a dhiùltadh. with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd featured_tag: name: 'Mholamaid fear dhe na tagaichean seo:' diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 58945edbb..4d7f79dfd 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -64,7 +64,7 @@ gl: domain_allow: domain: Este dominio estará en disposición de obter datos desde este servidor e datos de entrada a el poderán ser procesados e gardados email_domain_block: - domain: Esto pode ser o nome de dominio que aparece no enderezo do correo, o rexistro MX que resolve o dominio, ou o IP do servidor que resolve o rexistro MX. Estos confrontaranse contra o rexistro da usuaria e o rexistro será rexeitado. + domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro. with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo featured_tag: name: 'Poderías usar algunha destas:' diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index ad542d613..fc4613104 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -64,7 +64,7 @@ hu: domain_allow: domain: Ez a domain adatot kérhet le a szerverünkről és az ettől érkező adatokat feldolgozzuk és mentjük email_domain_block: - domain: Lehet domain név, mely az email címben szerepel, MX rekord, amire a domain hivatkozik vagy a szerver IP címe, amire az MX rekord hivatkozik. Ezeket regisztrációkor ellenőrizzük és visszautasítjuk a regisztrációt, ha szükséges. + domain: Ez lehet az e-mail címben szereplő domain név vagy az MX rekord, melyet ez használ. Ezeket feliratkozáskor ellenőrizzük. with_dns_records: Megpróbáljuk a megadott domain DNS rekordjait lekérni, és az eredményeket hozzáadjuk a tiltólistához featured_tag: name: 'Ezeket esetleg használhatod:' diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index 494abd92b..5bf178013 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -55,7 +55,6 @@ hy: domain_allow: domain: Այս տիրոյթը կարող է ստանալ տուեալներ այս սպասարկչից եւ ստացուող տուեալները կարող են օգտագործուել եւ պահուել email_domain_block: - domain: Սա կարող է լինել տիրոյթի անուն, որը ցուցադրում է էլ․ հասցէն, MX գրառում, որին տիրոյթը պատկանում է, կամ MX գրառման սպասարկչի IP։ Դրանք ստուգուելու են օգտատիրոջ գրանցման պահին եւ գրանցումը մերժուելու է։ with_dns_records: Այս տիրոյթի DNS գրառումները կը տարրալուծուեն եւ արդիւնքները նոյնպէս կուղարկուեն սեւ ցուցակ featured_tag: name: Գուցէ ցանկանաս օգտագործել սրանցից մէկը․ diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 025472551..832e32c56 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -64,7 +64,7 @@ id: domain_allow: domain: Domain ini dapat mengambil data dari server ini dan data yang diterima akan diproses dan disimpan email_domain_block: - domain: Ini bisa nama domain yang muncul di alamat email, data MX yang sedang diselesaikan oleh domain, atau IP server yang dipecahkan oleh data MX. Mereka akan dicek saat pendaftaran pengguna dan pendaftaran akan ditolak. + domain: Ini bisa berupa nama domain yang tampil di alamat email atau data MX yang memakainya. Mereka akan diperiksa saat mendaftar. with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam featured_tag: name: 'Anda mungkin ingin pakai salah satu dari ini:' diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 34b33e43c..38f44564f 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -64,7 +64,7 @@ is: domain_allow: domain: Þetta lén mun geta sótt gögn af þessum vefþjóni og tekið verður á móti innsendum gögnum frá léninu til vinnslu og geymslu email_domain_block: - domain: Þetta getur verið heiti lénsins sem birtist í tölvupóstfanginu, MX-færslan sem það lén beinist að, eða IP-vistfang netþjónsins sem sú MX-færsla beinist að. Þetta verður athugað um leið og notandi skráir sig, og verður þá skráningunni hafnað. + domain: Þetta getur verið lénið sem birtist í tölvupóstfanginu eða MX-færslunni sem það notar. Þetta verður yfirfarið við nýskráningu. with_dns_records: Tilraun verður gerð til að leysa DNS-færslur uppgefins léns og munu niðurstöðurnar einnig verða útilokaðar featured_tag: name: 'Þú gætir viljað nota eitt af þessum:' diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index b9a2286b2..d23391361 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -64,7 +64,7 @@ it: domain_allow: domain: Questo dominio potrà recuperare i dati da questo server e i dati in arrivo da esso verranno elaborati e memorizzati email_domain_block: - domain: Questo può essere il nome del dominio che fa parte dell'indirizzo email, il record MX a cui il dominio si risolve o l'indirizzo IP del server a cui il record MX si risolve. Saranno verificati alla registrazione da parte dell'utente e la sua iscrizione sarà respinta. + domain: Questo può essere il nome di dominio che appare nell'indirizzo e-mail o nel record MX che utilizza. Verranno controllati al momento dell'iscrizione. with_dns_records: Sarà effettuato un tentativo di risolvere i record DNS del dominio in questione e i risultati saranno inseriti anche nella blacklist featured_tag: name: 'Eccone alcuni che potresti usare:' diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 0251b4288..d2e48faa2 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -62,7 +62,6 @@ ja: domain_allow: domain: 登録するとこのサーバーからデータを受信したり、このドメインから受信するデータを処理して保存できるようになります email_domain_block: - domain: メールアドレスのドメイン名および、名前解決したMXレコード、IPアドレスを指定できます。ユーザー登録時にこれらをチェックし、該当する場合はユーザー登録を拒否します。 with_dns_records: 指定したドメインのDNSレコードを取得し、その結果もメールドメインブロックに登録されます featured_tag: name: 'これらを使うといいかもしれません:' diff --git a/config/locales/simple_form.kmr.yml b/config/locales/simple_form.kmr.yml index d077c40b3..bf1ffa7db 100644 --- a/config/locales/simple_form.kmr.yml +++ b/config/locales/simple_form.kmr.yml @@ -66,7 +66,7 @@ kmr: domain_allow: domain: Ev navê navperê, ji vê rajekarê wê daneyan bistîne û daneyên ku jê bê wê were sazkirin û veşartin email_domain_block: - domain: Ev navê qada yê ku di navnîşana e-maîlê da xuya dibe, tomara MXê ya ku qada vê çareser dike an jî iPya rajekara ku MX tomar dike. Ev ên bi tomarê bikarhêneran bên kontrolkirin û tomarê were redkirin. + domain: Ev dikare bibe navê navparek ku di navnîşana e-nameyê de an tomara MX ya ku ew bi kar tîne de xuya dike. Ew ê di dema tomarkirinê de werin kontrolkirin. with_dns_records: Hewl tê dayîn ku tomarên DNSê yên li qada jê re hatine dayîn were çareserkirin û encamên wê jî were astengkirin featured_tag: name: 'Belkî tu yekê bi kar bînî çi van:' diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index bd1793c04..8648cab82 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -64,7 +64,6 @@ ko: domain_allow: domain: 이 도메인은 이 서버에서 데이터를 가져갈 수 있고 이 도메인에서 보내진 데이터는 처리되고 저장 됩니다 email_domain_block: - domain: 이것은 이메일 주소에 보이는 도메인 네임이거나, 도메인이 향하는 MX 레코드이거나, 또는 MX 레코드가 향하는 IP 주소일 수 있습니다. 이것들은 사용자가 가입 할 때 확인 되며 가입은 반려될 것입니다. with_dns_records: 입력한 도메인의 DNS를 조회를 시도하여 나온 값도 차단됩니다 featured_tag: name: '이것들을 사용하면 좋을 것 같습니다:' @@ -201,16 +200,16 @@ ko: sign_up_requires_approval: 가입 제한 severity: 규칙 notification_emails: - appeal: 누군가가 중재자의 결정에 이의를 제기했습니다 + appeal: 누군가가 중재자의 결정에 이의를 제기했을 때 digest: 요약 이메일 보내기 - favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 이메일 보내기 - follow: 누군가 나를 팔로우 했을 때 이메일 보내기 - follow_request: 누군가 나를 팔로우 하길 원할 때 이메일 보내기 - mention: 누군가 나를 언급했을 때 이메일 보내기 - pending_account: 새 계정이 심사가 필요할 때 이메일 보내기 - reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기 - report: 새 신고가 접수되었습니다 - trending_tag: 새 트렌드에 대한 리뷰가 필요합니다 + favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 + follow: 누군가 나를 팔로우 했을 때 + follow_request: 누군가 나를 팔로우 하길 원할 때 + mention: 누군가 나를 언급했을 때 + pending_account: 새 계정이 심사가 필요할 때 + reblog: 누군가 내 툿을 부스트 했을 때 + report: 새 신고가 접수되었을 때 + trending_tag: 새 트렌드에 대한 리뷰가 필요할 때 rule: text: 규칙 tag: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index ac433d2c3..3ccce01c3 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -55,7 +55,6 @@ ku: domain_allow: domain: ئەم دۆمەینە دەتوانێت دراوە لە ئەم ڕاژە وەربگرێت و دراوەی ئەم دۆمەینە لێرە ڕێکدەخرین و پاشکەوت دەکرێن email_domain_block: - domain: ئەمە دەکرێت ناوی دۆمەینەکە بێت کە لە ناونیشانی ئیمەیلدا دەرکەوێ، تۆماری MX کە دۆمەین چارەسەری دەکات یان IPی ڕاژەکە کە تۆماری MX چارەسەری دەکات. ئەوانە دەپشکنن لەسەر تۆمارکردنی بەکارهێنەر و تۆمارکردن ڕەت دەکرێت. with_dns_records: هەوڵێک بۆ چارەسەرکردنی تۆمارەکانی DNSی دۆمەین دراوە کە ئەنجامەکان بلۆک دەکرێت featured_tag: name: 'لەوانەیە بتەوێت یەکێک لەمانە بەکاربهێنیت:' diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index bf1cf446a..ee844e166 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -64,7 +64,7 @@ lv: domain_allow: domain: Šis domēns varēs izgūt datus no šī servera, un no tā ienākošie dati tiks apstrādāti un saglabāti email_domain_block: - domain: Tas var būt domēna nosaukums, kas redzams e-pasta adresē, MX ieraksts, kuru domēns atrisina, vai servera IP, uz kuru tiek atrisināts MX ieraksts. Tie tiks pārbaudīti, reģistrējoties lietotājam, un reģistrācija tiks noraidīta. + domain: Tas var būt domēna nosaukums, kas tiek parādīts e-pasta adresē vai izmantotajā MX ierakstā. Tie tiks pārbaudīti reģistrācijas laikā. with_dns_records: Tiks mēģināts atrisināt dotā domēna DNS ierakstus, un rezultāti arī tiks bloķēti featured_tag: name: 'Iespējams, vēlēsies izmantot kādu no šīm:' diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 50f992934..20388b90b 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -61,7 +61,6 @@ nl: domain_allow: domain: Dit domein is in staat om gegevens van deze server op te halen, en binnenkomende gegevens worden verwerkt en opgeslagen email_domain_block: - domain: Dit kan de domeinnaam zijn, onderdeel van het e-mailadres, het MX-record dat het desbetreffende domein afhandelt, of het IP-adres van de server dat het MX-record afhandelt. Deze worden gecontroleerd tijdens het registreren, waarna de registratie wordt afgewezen. with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd featured_tag: name: 'Je wilt misschien een van deze gebruiken:' diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 4dcce4e78..04c92e92e 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -61,7 +61,6 @@ nn: domain_allow: domain: Dette domenet er i stand til å henta data frå denne tenaren og innkomande data vert handsama og lagra email_domain_block: - domain: Dette kan vera domenenamnet som synest i e-postaddressa, MX-recorden som domenet løyser til eller IP-adressa til tenaren som MX-record løyser til. Dei sjekkast ved brukarregistrering og registretinga vert avvist. with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista featured_tag: name: 'Kanskje du vil nytta ein av desse:' diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 2261ecc6a..34fa2859c 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -61,7 +61,6 @@ domain_allow: domain: Dette domenet vil være i stand til å hente data fra denne serveren og dets innkommende data vil bli prosessert og lagret email_domain_block: - domain: Det kan være domenenavnet som vises i e-postadressen, MX-posten, som domenet bestemmer til, eller IP-en til serveren som MX-posten løser etter. De vil bli sjekket ved brukerregistrering og registrering vil bli avvist. with_dns_records: Et forsøk på å løse det gitte domenets DNS-poster vil bli gjort, og resultatene vil også bli svartelistet featured_tag: name: 'Du vil kanskje ønske å bruke en av disse:' diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 45537d496..beb0fa8f4 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -55,7 +55,6 @@ oc: domain_allow: domain: Aqueste domeni poirà recuperar las donadas d’aqueste servidor estant e las donadas venent d’aqueste domeni seràn tractadas e gardadas email_domain_block: - domain: Pòt èsser lo nom de domeni mostrat sus l’adreça electronica, l’enregistrament MX, o l’adreça IP ligada. Serà verificat pendent l’inscripcion de la persona puèi serà regetada. with_dns_records: Un ensag de resolucion dels enregistraments DNS del domeni donat serà realizat e los resultats seràn tanben meses en lista negra featured_tag: name: 'Benlèu que volètz utilizar una d’aquestas causas :' diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 8860696ee..c69be55ae 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -62,7 +62,7 @@ pl: domain_allow: domain: Ta domena będzie mogła pobierać dane z serwera, a dane przychodzące z niej będą przetwarzane i przechowywane email_domain_block: - domain: Może to być nazwa domeny pojawiająca się w adresu e-mail, rekord MX na który rozwiązuje domena lub IP serwera na który rozwiązuje rekord MX. Będą one wykrywane i odrzucane przy rejestracji. + domain: To może być nazwa domeny, która pojawia się w adresie e-mail lub rekordzie MX, którego używa. Zostaną one sprawdzone przy rejestracji. with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę featured_tag: name: 'Sugerujemy użycie jednego z następujących:' diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 29071b182..f60c886af 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -62,7 +62,7 @@ pt-BR: domain_allow: domain: Este domínio poderá obter dados deste servidor e os dados recebidos dele serão processados e armazenados email_domain_block: - domain: Este pode ser o nome de domínio que aparece no endereço de e-mail, o registro MX para o qual o domínio resolve, ou o IP do servidor para o qual o registro MX resolve. Esses vão ser verificados no momento de registro do usuário e o registro será rejeitado. + domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição. with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: name: 'Você pode querer usar um destes:' @@ -119,6 +119,8 @@ pt-BR: scheduled_at: Agendar publicação starts_at: Início do evento text: Comunicados + appeal: + text: Explique porque essa decisão deve ser revertida defaults: autofollow: Convite para seguir a sua conta avatar: Imagem de perfil @@ -204,6 +206,8 @@ pt-BR: mention: Enviar e-mail quando alguém te mencionar pending_account: Enviar e-mail quando uma nova conta precisa ser revisada reblog: Enviar e-mail quando alguém der boost nos teus toots + report: Novo relatório foi enviado + trending_tag: Uma nova tendência requer revisão rule: text: Regra tag: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index ebc55f36b..635b55b35 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -64,7 +64,7 @@ pt-PT: domain_allow: domain: Este domínio será capaz de obter dados desta instância e os dados dele recebidos serão processados e armazenados email_domain_block: - domain: Este pode ser o nome de domínio que aparece no endereço de e-mail, o registo MX para o qual o domínio resolve, ou o IP do servidor para o qual o registo MX resolve. Estes serão verificados no momento da inscrição do utilizador e a inscrição será rejeitada. + domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou o registo MX por ele utilizado. Eles serão verificados aquando da inscrição. with_dns_records: Será feita uma tentativa de resolver os registos DNS do domínio em questão e os resultados também serão colocados na lista negra featured_tag: name: 'Poderás querer usar um destes:' diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index a81e4aad9..31da7e2eb 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -55,7 +55,6 @@ ro: domain_allow: domain: Acest domeniu va putea prelua date de pe acest server și datele primite de la el vor fi procesate și stocate email_domain_block: - domain: Acesta poate fi numele domeniului care apare pe adresa de e-mail, înregistrarea MX la care domeniul se rezolvă sau IP-ul serverului la care înregistrează MX rezolvă. Acestea vor fi verificate după înregistrarea utilizatorului, iar înscrierea va fi respinsă. with_dns_records: Se va face o încercare de a rezolva înregistrările DNS ale domeniului dat și rezultatele vor fi de asemenea afișate pe lista neagră featured_tag: name: 'S-ar putea să vreți să folosiți unul dintre acestea:' diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index c71dd5b39..83a1979ec 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -64,7 +64,7 @@ ru: domain_allow: domain: Этот домен сможет получать данные с этого сервера и его входящие данные будут обрабатываться и сохранены email_domain_block: - domain: Это может быть домен, отображаемый в адресе электронной почты, MX-запись, на которую разрешается домен или IP сервера, на который разрешается MX-запись. Они будут проверены при регистрации пользователя, и регистрация будет отклонена. + domain: Это может быть доменное имя, которое отображается в адресе электронной почты или используемая MX запись. Они будут проверяться при регистрации. with_dns_records: Будет сделана попытка разрешить DNS-записи данного домена и результаты также будут внесены в чёрный список featured_tag: name: 'Возможно, вы захотите добавить что-то из этого:' diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml index 0b8376aab..2a36c92c2 100644 --- a/config/locales/simple_form.sc.yml +++ b/config/locales/simple_form.sc.yml @@ -61,7 +61,6 @@ sc: domain_allow: domain: Custu domìniu at a pòdere recuperare datos dae custu serbidore e is datos in intrada dae cue ant a èssere protzessados e archiviados email_domain_block: - domain: Custu podet èssere su nòmine de domìniu chi benit ammustradu in s'indiritzu de posta eletrònica, in su registru MX in ue si risolvet su domìniu o s'IP de su serbidore in ue si risolvet su registru MX. Ant a èssere verificados cun sa registratzione de s'utente e sa registratzione at a èssere refudada. with_dns_records: S'at a fàghere unu tentativu de risòlvere is registros DNS de su domìniu e fintzas is risultados ant a èssere blocados featured_tag: name: 'Forsis boles impreare unu de custos:' diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 23e6630ef..688222887 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -41,6 +41,8 @@ sl: whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo domain_allow: domain: Ta domena bo lahko prejela podatke s tega strežnika, dohodni podatki z nje pa bodo obdelani in shranjeni + email_domain_block: + domain: To je lahko ime domene, ki se pokaže v e-poštnem naslovu, ali zapis MX, ki ga uporablja. Ob prijavi bo preverjeno. featured_tag: name: 'Morda boste želeli uporabiti eno od teh:' form_challenge: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index e827fbd91..c6be72de2 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -64,7 +64,7 @@ sq: domain_allow: domain: Kjo përkatësi do të jetë në gjendje të sjellë të dhëna prej këtij shërbyesi dhe të dhënat ardhëse prej tij do të përpunohen dhe depozitohen email_domain_block: - domain: Ky mund të jetë emri i përkatësisë që shfaqet te adresa email, zëri MX që i takon asaj përkatësie, ose IP-ja e shërbyesit te i cili shpie ai zë MX. Këto do të kontrollohen gjatë regjistrimit të përdoruesit dhe regjistrimi do të hidhet poshtë. + domain: Ky mund të jetë emri i përkatësisë që shfaqet te adresa email, ose zëri MX që përdor. Do të kontrollohen gjatë regjistrimit. with_dns_records: Do të bëhet një përpjekje për ftillimin e zërave DNS të përkatësisë së dhënë dhe do të futen në listë bllokimesh edhe përfundimet featured_tag: name: 'Mund të doni të përdorni një nga këto:' diff --git a/config/locales/simple_form.ta.yml b/config/locales/simple_form.ta.yml index e306ce64d..3dbea2009 100644 --- a/config/locales/simple_form.ta.yml +++ b/config/locales/simple_form.ta.yml @@ -26,7 +26,6 @@ ta: setting_display_media_hide_all: எப்போதும் எல்லா ஊடகங்களையும் மறைக்கவும் setting_display_media_show_all: உணர்ச்சி வயப்படு (Sensitive) குறிக்கப்பட்ட மீடியாவை எப்போதும் காட்டுங்கள் email_domain_block: - domain: இது மின்னஞ்சலில் காணப்படும் களத்தின் பெயராக இருக்கலாம், அல்லது அக்களம் சார்ந்திருக்கும் MX record-ஆக இருக்கலாம், அல்லது அந்த MX record சார்ந்திருக்கும் சர்வரின் IP முகவரியாக இருக்கலாம். பயனர் கணக்கைத் துவங்கும்போது அவை கண்காணிக்கப்பட்டு, கணக்குத் துவக்கம் நிராகரிக்கப்படும். with_dns_records: இக்களத்தின் DNS record-களை சரிசெய்யும் முயற்சி மேற்கொள்ளப்படும், மற்றும் அதன் முடிவுகள் தடுப்புப்பட்டியலில் சேர்க்கப்படும் labels: account: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 8bfe5ba88..09b5d1cd9 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -48,7 +48,7 @@ th: locked: ควบคุมผู้ที่สามารถติดตามคุณด้วยตนเองได้โดยอนุมัติคำขอติดตาม password: ใช้อย่างน้อย 8 ตัวอักษร phrase: จะถูกจับคู่โดยไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กในข้อความหรือคำเตือนเนื้อหาของโพสต์ - scopes: API ใดที่แอปพลิเคชันจะได้รับอนุญาตให้เข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต + scopes: API ใดที่จะอนุญาตให้แอปพลิเคชันเข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต setting_aggregate_reblogs: ไม่แสดงการดันใหม่สำหรับโพสต์ที่เพิ่งดัน (มีผลต่อการดันที่ได้รับใหม่เท่านั้น) setting_default_sensitive: ซ่อนสื่อที่ละเอียดอ่อนเป็นค่าเริ่มต้นและสามารถเปิดเผยได้ด้วยการคลิก setting_display_media_default: ซ่อนสื่อที่มีการทำเครื่องหมายว่าละเอียดอ่อน @@ -202,6 +202,7 @@ th: mention: ใครสักคนได้กล่าวถึงคุณ pending_account: บัญชีใหม่ต้องมีการตรวจทาน reblog: ใครสักคนได้ดันโพสต์ของคุณ + report: มีการส่งรายงานใหม่ rule: text: กฎ tag: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 644730196..4c9c9df89 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -64,7 +64,7 @@ tr: domain_allow: domain: Bu alan adı, bu sunucudan veri alabilecek ve ondan gelen veri işlenecek ve saklanacaktır email_domain_block: - domain: Bu, e-posta adresinde görünen etki alanı adı, etki alanının çözümlediği MX kaydı veya MX kaydının çözümlediği sunucunun IP'si olabilir. Bunlar kullanıcı kaydı ile kontrol edilecek ve kayıt reddedilecektir. + domain: Bu e-posta adresinde görünen veya kullanılan MX kaydındaki alan adı olabilir. Kayıt sırasında denetleneceklerdir. with_dns_records: Belirli bir alanın DNS kayıtlarını çözmeyi deneyecek ve sonuçlar kara listeye eklenecek featured_tag: name: 'Bunlardan birini kullanmak isteyebilirsiniz:' diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 3b416b074..a5cef9a0f 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -62,7 +62,6 @@ uk: domain_allow: domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені email_domain_block: - domain: Це може бути домен, що відображається у поштовій адресі, запис MX для домену чи IP адреси сервера. Вони будуть перевірені при реєстрації користувача, і реєстрація буде відхилена. with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку featured_tag: name: 'Можливо, ви захочете використовувати один з цих:' diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 3698a7112..d40ff8372 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -64,7 +64,7 @@ vi: domain_allow: domain: Máy chủ này sẽ tiếp nhận dữ liệu, rồi sau đó xử lý và lưu trữ email_domain_block: - domain: Đây có thể là tên miền hoặc IP của dịch vụ email. Người dùng của những dịch vụ email này sẽ bị từ chối khi đăng ký. + domain: Phân tích tên miền thành các tên miền MX sau, các tên miền này chịu trách nhiệm cuối cùng trong chấp nhận email. Giá trị MX sẽ chặn đăng ký từ bất kỳ địa chỉ email nào sử dụng cùng một giá trị MX, ngay cả khi tên miền hiển thị là khác. with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm featured_tag: name: 'Những hashtag gợi ý cho bạn:' diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 0d7af0922..3d63343cb 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -64,7 +64,7 @@ zh-CN: domain_allow: domain: 该站点将能够从该服务器上拉取数据,并处理和存储收到的数据。 email_domain_block: - domain: 这里可以是邮箱地址中的域名部分、域名解析到的 MX 记录,或者 MX 记录解析到的域名。这些检查会在用户注册时进行,如果邮箱域名被封禁,那么注册会被拒绝。 + domain: 这可以是电子邮件地址的域名或它使用的 MX 记录所指向的域名。用户注册时,系统会对此检查。 with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁 featured_tag: name: 你可能想要使用以下之一: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index 267c116a1..8b8f17c22 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -62,7 +62,6 @@ zh-HK: domain_allow: domain: 此網域將能從此站獲取資料,而此站發出的數據也會被處理和存儲。 email_domain_block: - domain: 這裡可以是電郵地址中的域名、域名解析到的MX記錄、或MX紀錄解析到的服務器IP。如果上述資料被封禁,那麼註冊將被拒絕。 with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,然後與解析結果一併封禁 featured_tag: name: 你可能想使用其中一個: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index b0bc5e53c..59d90128d 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -64,7 +64,7 @@ zh-TW: domain_allow: domain: 此域名將能夠攫取本站資料,而自域名該發出的資料也會於本站處理和留存。 email_domain_block: - domain: 這裡可以是電子郵件地址中的域名、域名解析到的 MX 記錄、或 MX 記錄解析到的伺服器 IP 地址。新使用者註冊時會比對上述資料,如果相符時將拒絕相關註冊。 + domain: 這可以是顯示在電子郵件中的網域名稱,或是其使用的 MX 紀錄。其將在註冊時檢查。 with_dns_records: Mastodon 會嘗試解析所給域名的 DNS 記錄,解析結果一致者將一併封鎖 featured_tag: name: 您可能想使用其中一個: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 1cc1a2994..f16283e2e 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -362,10 +362,7 @@ sk: add_new: Pridaj nový created_msg: Emailová doména bola úspešne pridaná do zoznamu zakázaných delete: Vymaž - destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných domain: Doména - empty: Žiadné emailové domény niesú v súčasnosti na čiernej listine. - from_html: z %{domain} new: create: Pridaj doménu title: Nový email na zablokovanie diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 595d52c83..fea123d0b 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -319,11 +319,16 @@ sl: add_new: Dodaj novo created_msg: Domena e-pošte je bila uspešno dodana na črni seznam delete: Izbriši - destroyed_msg: Domena e-pošte je bila uspešno izbrisana iz črnega seznama + dns: + types: + mx: Zapis MX domain: Domena new: create: Dodaj domeno + resolve: Razreši domeno title: Nov vnos e-pošte na črni seznam + no_email_domain_block_selected: Nobena domena e-računa ni bila spremenjena, ker nobena ni bila izbrana + resolved_through_html: Razrešeno prek %{domain} title: Črni seznam e-pošt follow_recommendations: language: Za jezik diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 2366d0edf..2f1336336 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -467,15 +467,21 @@ sq: view: Shihni bllokim përkatësie email_domain_blocks: add_new: Shtoni të ri + attempts_over_week: + one: "%{count} përpjekje gjatë javës së shkuar" + other: "%{count} përpjekje regjistrimi gjatë javës së kaluar" created_msg: Përkatësia email u shtua me sukses te lista e bllokimeve delete: Fshije - destroyed_msg: Përkatësia email u fshi me sukses nga lista e bllokimeve + dns: + types: + mx: Zë MX domain: Përkatësi - empty: S’ka përkatësi email në ndonjë listë bllokimesh. - from_html: nga %{domain} new: create: Shtoni përkatësi + resolve: Ftilloje përkatësinë title: Zë i ri email në listë bllokimesh + no_email_domain_block_selected: S’u ndryshuan blloqe përkatësish email, ngaqë s’qe përzgjedhur ndonjë + resolved_dns_records_hint_html: Emri i përkatësisë jep u përket përkatësive vijuese MX, që janë përgjegjëset për pranim email-esh. Bllokimi i një përkatësie MX do të bllokojë regjistrime nga çfarëdo adrese email që përdor të njëjtën përkatësi MX, edhe nëse emri i dukshëm i përkatësisë është i ndryshëm. Jini i kujdesshëm të mos bllokoni shërbime të njohur email-esh. title: Listë bllokimesh email-esh follow_recommendations: description_html: "Rekomandimet për ndjekje ndihmojnë përdoruesit e rinj të gjejnë shpejt lëndë me interes. Kur një përdorues nuk ka ndërvepruar mjaftueshëm me të tjerët, që të formohen rekomandime të personalizuara ndjekjeje, rekomandohen këto llogari. Ato përzgjidhen çdo ditë, prej një përzierje llogarish me shkallën më të lartë të angazhimit dhe numrin më të lartë të ndjekësve vendorë për një gjuhë të dhënë." @@ -610,6 +616,7 @@ sq: title: Shënime notes_description_html: Shihni dhe lini shënime për moderatorët e tjerë dhe për veten në të ardhmen quick_actions_description_html: 'Kryeni një veprim të shpejtë, ose rrëshqitni poshtë për të parë lëndën e raportuar:' + remote_user_placeholder: përdoruesi i largët prej %{instance} reopen: Rihape raportimin report: 'Raportim #%{id}' reported_account: Llogari e raportuar @@ -780,6 +787,11 @@ sq: rejected: Lidhje prej këtij botuesi s’do të përdoren title: Botues rejected: Hedhur poshtë + statuses: + allow: Lejo postim + allow_account: Lejo autor + disallow: Mos lejo postim + disallow_account: Mos lejo autor tags: dashboard: tag_accounts_measure: përdorime unike @@ -826,14 +838,8 @@ sq: body: "%{reporter} ka raportuar %{target}" body_remote: Dikush nga %{domain} ka raportuar %{target} subject: Raportim i ri për %{instance} (#%{id}) - new_trending_links: - body: Lidhjet vijuese janë në modë sot, por botuesit e tyre nuk janë shqyrtuar më herët. Nuk do të shfaqen publikisht, veç në i miratofshi. S’do të prodhohen njoftime të mëtejshme për të njëjtë botues. - no_approved_links: Aktualisht nuk ka lidhje në modë të miratuara. - subject: Lidhje të reja në modë për shqyrtim te %{instance} - new_trending_tags: - body: 'Hashtag-ët vijues janë në modë sot, por nuk janë miratuar më herët. S’do të shfaqen publikisht, veç në i miratofshi:' - no_approved_tags: Aktualisht nuk ka hashtag-ë në modë të miratuar. - subject: Hashtag-ë të rinj në modë për t’u shqyrtuar në %{instance} + new_trends: + body: 'Gjërat vijuese lypin një shqyrtim, përpara se të mund të shfaqen publikisht:' aliases: add_new: Krijo alias created_msg: U krijua me sukses alias i ri. Tani mund të filloni lëvizjen prej llogarisë së vjetër. @@ -1172,6 +1178,9 @@ sq: carry_mutes_over_text: Ky përdorues lëvizi prej %{acct}, që e keni heshtuar. copy_account_note_text: 'Ky përdorues ka ikur prej %{acct}, ja ku janë shënimet tuaja të mëparshme mbi të:' notification_mailer: + admin: + sign_up: + subject: "%{name} u regjistrua" digest: action: Shihini krejt njoftimet body: Ja një përmbledhje e shkurtër e mesazheve që keni humbur që nga vizita juaj e fundit më %{since} diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 8d8a4744a..b1a0613d5 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -148,7 +148,6 @@ sr-Latn: add_new: Dodaj novuAdd new created_msg: Uspešno dodao domen e-pošte na crnu listu delete: Ukloni - destroyed_msg: Uspešno uklonjen domen e-pošte sa crne liste domain: Domen new: create: Dodaj domen diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 28e6142ff..194111e73 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -220,7 +220,6 @@ sr: add_new: Додај нови created_msg: Успешно додао домен Е-поште на црну листу delete: Обриши - destroyed_msg: Успешно уклоњен домен Е-поште са црне листе domain: Домен new: create: Додај домен diff --git a/config/locales/sv.yml b/config/locales/sv.yml index b61d4ed02..011a0d385 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -189,6 +189,7 @@ sv: security_measures: only_password: Endast lösenord password_and_2fa: Lösenord och 2FA + password_and_sign_in_token: Lösenord och e-post token sensitive: Känsligt sensitized: markerad som känsligt shared_inbox_url: Delad inkorg URL @@ -403,10 +404,7 @@ sv: add_new: Lägg till ny created_msg: E-postdomän har lagts till i domänblockslistan utan problem delete: Radera - destroyed_msg: E-postdomän har tagits bort från domänblockslistan utan problem domain: Domän - empty: För tillfället inga svartlistade mejl. - from_html: från %{domain} new: create: Skapa domän title: Ny E-postdomänblocklistningsinmatning @@ -628,6 +626,10 @@ sv: action: Hantera serverregler message_html: Du har inte definierat några serverregler. title: Administration + trends: + statuses: + allow: Godkänn inlägg + allow_account: Godkänn författare warning_presets: add_new: Lägg till ny delete: Radera diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 4ffbb9a71..805781598 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -225,9 +225,6 @@ ta: severity: noop: எதுவுமில்லை suspend: தற்காலீகமாக நீக்குக - email_domain_blocks: - empty: மின்னஞ்சற் களங்கள் எதுவும் தடுக்கப்படவில்லை. - from_html: "%{domain} -இலிருந்து" invites: filter: all: அனைத்தும் diff --git a/config/locales/th.yml b/config/locales/th.yml index ec92cfd2d..9203aec15 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -414,6 +414,7 @@ th: silence: ทำให้เงียบ suspend: ระงับ title: การปิดกั้นโดเมนใหม่ + obfuscate: ทำให้ชื่อโดเมนคลุมเครือ private_comment: ความคิดเห็นส่วนตัว public_comment: ความคิดเห็นสาธารณะ reject_media: ปฏิเสธไฟล์สื่อ @@ -441,13 +442,16 @@ th: add_new: เพิ่มใหม่ created_msg: ปิดกั้นโดเมนอีเมลสำเร็จ delete: ลบ - destroyed_msg: เลิกปิดกั้นโดเมนอีเมลสำเร็จ + dns: + types: + mx: ระเบียน MX domain: โดเมน - empty: ไม่มีโดเมนอีเมลที่ปิดกั้นอยู่ - from_html: จาก %{domain} new: create: เพิ่มโดเมน + resolve: แปลงที่อยู่โดเมน title: ปิดกั้นโดเมนอีเมลใหม่ + no_email_domain_block_selected: ไม่มีการเปลี่ยนแปลงการปิดกั้นโดเมนอีเมลเนื่องจากไม่มีการเลือก + resolved_through_html: แปลงที่อยู่ผ่าน %{domain} title: โดเมนอีเมลที่ปิดกั้นอยู่ follow_recommendations: language: สำหรับภาษา @@ -561,6 +565,7 @@ th: create_and_unresolve: เปิดใหม่โดยมีหมายเหตุ delete: ลบ title: หมายเหตุ + remote_user_placeholder: ผู้ใช้ระยะไกลจาก %{instance} reopen: เปิดรายงานใหม่ report: 'รายงาน #%{id}' reported_account: บัญชีที่ได้รับการรายงาน @@ -725,6 +730,12 @@ th: rejected: ลิงก์จากผู้เผยแพร่นี้จะไม่ขึ้นแนวโน้ม title: ผู้เผยแพร่ rejected: ปฏิเสธแล้ว + statuses: + allow: อนุญาตโพสต์ + allow_account: อนุญาตผู้สร้าง + disallow: ไม่อนุญาตโพสต์ + disallow_account: ไม่อนุญาตผู้สร้าง + title: โพสต์ที่กำลังนิยม tags: current_score: คะแนนปัจจุบัน %{score} dashboard: @@ -768,12 +779,17 @@ th: body: "%{reporter} ได้รายงาน %{target}" body_remote: ใครสักคนจาก %{domain} ได้รายงาน %{target} subject: รายงานใหม่สำหรับ %{instance} (#%{id}) - new_trending_links: - no_approved_links: ไม่มีลิงก์ที่กำลังนิยมที่ได้รับอนุมัติ - subject: ลิงก์ที่กำลังนิยมใหม่สำหรับตรวจทานใน %{instance} - new_trending_tags: - no_approved_tags: ไม่มีแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติ - subject: แฮชแท็กที่กำลังนิยมใหม่สำหรับตรวจทานใน %{instance} + new_trends: + new_trending_links: + no_approved_links: ไม่มีลิงก์ที่กำลังนิยมที่ได้รับอนุมัติ + title: ลิงก์ที่กำลังนิยม + new_trending_statuses: + no_approved_statuses: ไม่มีโพสต์ที่กำลังนิยมที่ได้รับอนุมัติ + title: โพสต์ที่กำลังนิยม + new_trending_tags: + no_approved_tags: ไม่มีแฮชแท็กที่กำลังนิยมที่ได้รับอนุมัติ + title: แฮชแท็กที่กำลังนิยม + subject: แนวโน้มใหม่สำหรับตรวจทานใน %{instance} aliases: add_new: สร้างนามแฝง created_msg: สร้างนามแฝงใหม่สำเร็จ ตอนนี้คุณสามารถทำการย้ายจากบัญชีเก่า @@ -1074,6 +1090,9 @@ th: carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:' notification_mailer: + admin: + sign_up: + subject: "%{name} ได้ลงทะเบียน" digest: action: ดูการแจ้งเตือนทั้งหมด mention: "%{name} ได้กล่าวถึงคุณใน:" @@ -1351,6 +1370,11 @@ th: recovery_codes_regenerated: สร้างรหัสกู้คืนใหม่สำเร็จ webauthn: กุญแจความปลอดภัย user_mailer: + appeal_approved: + action: ไปยังบัญชีของคุณ + title: อนุมัติการอุทธรณ์แล้ว + appeal_rejected: + title: ปฏิเสธการอุทธรณ์แล้ว backup_ready: explanation: คุณได้ขอข้อมูลสำรองแบบเต็มของบัญชี Mastodon ของคุณ ตอนนี้ข้อมูลสำรองพร้อมสำหรับการดาวน์โหลดแล้ว! subject: การเก็บถาวรของคุณพร้อมสำหรับการดาวน์โหลดแล้ว @@ -1362,9 +1386,12 @@ th: subject: โปรดยืนยันการลงชื่อเข้าที่พยายาม title: ความพยายามลงชื่อเข้า warning: + appeal: ส่งการอุทธรณ์ + appeal_description: หากคุณเชื่อว่านี่เป็นข้อผิดพลาด คุณสามารถส่งการอุทธรณ์ไปยังพนักงานของ %{instance} categories: spam: สแปม violation: เนื้อหาละเมิดหลักเกณฑ์ชุมชนดังต่อไปนี้ + get_in_touch: หากคุณเชื่อว่านี่เป็นข้อผิดพลาด คุณสามารถตอบกลับอีเมลนี้เพื่อติดต่อกับพนักงานของ %{instance} reason: 'เหตุผล:' statuses: 'โพสต์ที่พบว่ามีการละเมิด:' subject: @@ -1381,15 +1408,19 @@ th: suspend: ระงับบัญชีอยู่ welcome: edit_profile_action: ตั้งค่าโปรไฟล์ + edit_profile_step: คุณสามารถปรับแต่งโปรไฟล์ของคุณได้โดยอัปโหลดภาพประจำตัว, ส่วนหัว เปลี่ยนชื่อที่แสดงของคุณ และอื่น ๆ หากคุณต้องการตรวจทานผู้ติดตามใหม่ก่อนที่จะอนุญาตให้เขาติดตามคุณ คุณสามารถล็อคบัญชีของคุณ + explanation: นี่คือเคล็ดลับบางส่วนที่จะช่วยให้คุณเริ่มต้นใช้งาน final_action: เริ่มโพสต์ final_step: 'เริ่มโพสต์! แม้ว่าไม่มีผู้ติดตาม โพสต์สาธารณะของคุณอาจเห็นโดยผู้อื่น ตัวอย่างเช่น ในเส้นเวลาในเซิร์ฟเวอร์และในแฮชแท็ก คุณอาจต้องการแนะนำตัวเองในแฮชแท็ก #introductions' full_handle: นามเต็มของคุณ full_handle_hint: นี่คือสิ่งที่คุณจะบอกเพื่อน ๆ ของคุณ เพื่อให้เขาสามารถส่งข้อความหรือติดตามคุณจากเซิร์ฟเวอร์อื่น review_preferences_action: เปลี่ยนการกำหนดลักษณะ + review_preferences_step: ตรวจสอบให้แน่ใจว่าได้ตั้งการกำหนดลักษณะของคุณ เช่น อีเมลใดที่คุณต้องการรับ หรือระดับความเป็นส่วนตัวใดที่คุณต้องการให้โพสต์ของคุณเป็นค่าเริ่มต้น หากคุณไม่มีภาวะป่วยจากการเคลื่อนไหว คุณสามารถเลือกเปิดใช้งานการเล่น GIF อัตโนมัติ subject: ยินดีต้อนรับสู่ Mastodon tip_federated_timeline: เส้นเวลาที่ติดต่อกับภายนอกคือมุมมองสายน้ำของเครือข่าย Mastodon แต่เส้นเวลารวมเฉพาะผู้คนที่เพื่อนบ้านของคุณบอกรับเท่านั้น ดังนั้นเส้นเวลาจึงไม่ครบถ้วน tip_following: คุณติดตามผู้ดูแลเซิร์ฟเวอร์ของคุณเป็นค่าเริ่มต้น เพื่อค้นหาผู้คนที่น่าสนใจเพิ่มเติม ตรวจสอบเส้นเวลาในเซิร์ฟเวอร์และที่ติดต่อกับภายนอก tip_local_timeline: เส้นเวลาในเซิร์ฟเวอร์คือมุมมองสายน้ำของผู้คนใน %{instance} นี่คือเพื่อนบ้านใกล้เคียงของคุณ! + tip_mobile_webapp: หากเบราว์เซอร์มือถือของคุณเสนอให้คุณเพิ่ม Mastodon ไปยังหน้าจอหลักของคุณ คุณจะสามารถรับการแจ้งเตือนแบบผลัก แอปเว็บทำหน้าที่เหมือนแอปเนทีฟในหลาย ๆ ด้าน! tips: เคล็ดลับ title: ยินดีต้อนรับ %{name}! users: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 336a9a74a..ade2a77fb 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -467,15 +467,22 @@ tr: view: Alan adı bloğunu görüntüle email_domain_blocks: add_new: Yeni ekle + attempts_over_week: + one: Son haftada %{count} deneme + other: Son haftada %{count} kayıt denemesi created_msg: E-posta alan adı kara listeye başarıyla eklendi delete: Sil - destroyed_msg: E-posta alan adı kara listeden başarıyla silindi + dns: + types: + mx: MX kaydı domain: Alan adı - empty: Şu anda hiçbir e-posta alan adı kara listeye alınmadı. - from_html: "%{domain} alan adından" new: create: Alan adı ekle + resolve: Alan adı çözümleme title: Yeni e-posta kara liste girişi + no_email_domain_block_selected: Seçim yapılmadığından hiç bir e-posta alan adı engeli değiştirilmedi + resolved_dns_records_hint_html: Alan adı aşağıdaki MX alan adlarına çözümleniyor, ancak hiç biri nihayetinde e-posta kabulünden sorum değil. Bir MX alan adını engellemek, görünen alan adı farklı osa bile aynı MX alan adını kullanan e-posta adreslerinden gelen kayıtları engelleyecektir. Başlıca e-posta sağlayıcıları engellememek için dikkatli olun. + resolved_through_html: "%{domain} aracılığıyla çözümlendi" title: E-posta kara listesi follow_recommendations: description_html: "Takip önerileri yeni kullanıcıların hızlı bir şekilde ilginç içerik bulmalarını sağlar. Eğer bir kullanıcı, kişisel takip önerileri almaya yetecek kadar başkalarıyla etkileşime girmediğinde, onun yerine bu hesaplar önerilir. Bu öneriler, verili bir dil için en yüksek takipçi sayısına ve en yüksek güncel meşguliyete sahip hesapların bir karışımdan günlük olarak hesaplanıyorlar." @@ -610,6 +617,7 @@ tr: title: Notlar notes_description_html: Kendiniz ve diğer moderatörler için not bırakın veya notları görüntüleyin quick_actions_description_html: 'Hemen bir şey yapın veya bildirilen içeriği görmek için aşağı kaydırın:' + remote_user_placeholder: "%{instance}'dan uzak kullanıcı" reopen: Şikayeti tekrar aç report: 'Şikayet #%{id}' reported_account: Şikayet edilen hesap @@ -780,6 +788,15 @@ tr: rejected: Bu yayıncının bağlantıları öne çıkmayacak title: Yayıncılar rejected: Reddedildi + statuses: + allow: Gönderiye izin ver + allow_account: Yazara izin ver + disallow: Gönderi iznini kaldır + disallow_account: Yazar iznini kaldır + shared_by: + one: Bir defa paylaşıldı veya favorilendi + other: "%{friendly_count} defa paylaşıldı veya favorilendi" + title: Öne çıkan gönderiler tags: current_score: Mevcut puan %{score} dashboard: @@ -800,6 +817,7 @@ tr: usage_comparison: Bugün %{today} kere kullanıldı, dün %{yesterday} kere kullanılmıştı used_by_over_week: one: Geçen hafta bir kişi tarafından kullanıldı + other: Geçen hafta %{count} kişi tarafından kullanıldı zero: Geçen hafta kimse tarafından kullanılmadı title: Öne çıkanlar warning_presets: @@ -827,16 +845,21 @@ tr: body: "%{reporter}, %{target} kişisini bildirdi" body_remote: "%{domain} alan adından birisi %{target} kişisini bildirdi" subject: "%{instance} için yeni şikayet (#%{id})" - new_trending_links: - body: Aşağıdaki bağlantılar bugün öne çıkıyorlar, ancak yayıncıları daha önce incelenmedi. Siz onaylamadığınız sürece herkese açık olarak görüntülenmeyecekler. Aynı yayıncılar için benzer bildirimler üretilmeyecek. - no_approved_links: Şu anda onaylanmış öne çıkan bağlantı yok. - requirements: Şu anda en düşük onaylanmış öne çıkan bağlantı %{lowest_link_score} puana sahip olan "%{lowest_link_title}". - subject: "%{instance}, inceleme bekleyen yeni öne çıkan bağlantılara sahip" - new_trending_tags: - body: 'Aşağıdaki etiketler bugün öne çıkıyorlar, ancak daha önce incelenmediler. Siz onaylamadığınız sürece herkese açık olarak görüntülenmeyecekler:' - no_approved_tags: Şu anda onaylanmış öne çıkan etiket yok. - requirements: 'Şu anda en düşük onaylanmış öne çıkan etiket %{lowest_tag_score} puana sahip olan #%{lowest_tag_name}.' - subject: "%{instance}, inceleme bekleyen yeni öne çıkan etiketlere sahip" + new_trends: + body: 'Aşağıdaki öğeler herkese açık olarak gösterilmeden önce gözden geçirilmelidir:' + new_trending_links: + no_approved_links: Şu anda onaylanmış öne çıkan bağlantı yok. + requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_link_score} skoruna sahip "%{lowest_link_title}" olan #%{rank} onaylanmış öne çıkan bağlantıyı geçebilir.' + title: Öne çıkan bağlantılar + new_trending_statuses: + no_approved_statuses: Şu anda onaylanmış öne çıkan gönderi yok. + requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_status_score} skoruna sahip "%{lowest_status_url}" olan #%{rank} onaylanmış öne çıkan gönderiyi geçebilir.' + title: Öne çıkan gönderiler + new_trending_tags: + no_approved_tags: Şu anda onaylanmış öne çıkan etiket yok. + requirements: 'Aşağıdaki adaylardan herhangi biri, şu anda %{lowest_tag_score} skoruna sahip "%{lowest_tag_name}" olan #%{rank} onaylanmış öne çıkan etiketi geçebilir.' + title: Öne çıkan etiketler + subject: "%{instance}, inceleme bekleyen yeni öne çıkan öğelere sahip" aliases: add_new: Takma ad oluştur created_msg: Yeni takma ad başarıyla oluşturuldu. Artık eski hesaptan taşınmayı başlatabilirsiniz. @@ -1175,6 +1198,9 @@ tr: carry_mutes_over_text: Bu kullanıcı sessize aldığınız %{acct} adresinden taşındı. copy_account_note_text: 'Bu kullanıcı %{acct} adresinden taşındı, işte onlarla ilgili önceki notlarınız:' notification_mailer: + admin: + sign_up: + subject: "%{name} kaydoldu" digest: action: Tüm bildirimleri görüntüle body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 6d96a951b..152962bfc 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -455,10 +455,7 @@ uk: add_new: Додати created_msg: Успішно додано поштовий домен до чорного списку delete: Видалити - destroyed_msg: Успішно видалено поштовий домен з чорного списку domain: Домен - empty: Ніякі e-mail домени не блокуються. - from_html: з %{domain} new: create: Додати домен title: Нове блокування поштового домену @@ -800,16 +797,6 @@ uk: body: "%{reporter} поскаржився(-лася) на %{target}" body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target} subject: Нова скарга до %{instance} (#%{id}) - new_trending_links: - body: Ці посилання сьогодні популярні, але їх публікатори не були попередньо перевірені. Їх не буде показано публічно, якщо ви їх не затвердите. Подальші сповіщення від тих самих публікаторів не будуть згенеровані. - no_approved_links: На цей час немає схвалених популярних посилань. - requirements: Найнижче затверджене популярне посилання на цю хвилю "%{lowest_link_title}" з результатом %{lowest_link_score}. - subject: Нові популярні посилання до розгляду на %{instance} - new_trending_tags: - body: 'Ці хештеги популярні сьогодні, але їх попередньо не розглядали. Їх не буде показано публічно, якщо ви не затвердите їх:' - no_approved_tags: На цей час немає схвалених популярних хештегів. - requirements: 'Найнижчий затверджений популярний хештег на цю хвилю #%{lowest_tag_name} з результатом %{lowest_tag_score}.' - subject: Нові популярні хештеги до розгляду на %{instance} aliases: add_new: Створити псевдонім created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису. diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 99244e81c..2410f9500 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -457,15 +457,21 @@ vi: view: Xem máy chủ chặn email_domain_blocks: add_new: Thêm mới + attempts_over_week: + other: "%{count} lần thử đăng ký vào tuần trước" created_msg: Đã chặn tên miền email này delete: Xóa bỏ - destroyed_msg: Đã bỏ chặn tên miền email này + dns: + types: + mx: Giá trị MX domain: Địa chỉ email - empty: Chưa chặn tên miền email nào. - from_html: từ %{domain} new: create: Thêm địa chỉ + resolve: Xử lý tên miền title: Chặn tên miền email mới + no_email_domain_block_selected: Không có chặn e-mail nào thay đổi vì không có mục nào được chọn + resolved_dns_records_hint_html: Tên miền phân giải thành các tên miền MX sau, các tên miền này chịu trách nhiệm cuối cùng trong việc chấp nhận email. Chặn tên miền MX sẽ chặn đăng ký từ bất kỳ địa chỉ email nào sử dụng cùng một tên miền MX, ngay cả khi tên miền hiển thị là khác. Cẩn thận đừng chặn những dịch vụ email lớn. + resolved_through_html: Đã xử lý thông qua %{domain} title: Tên miền email đã chặn follow_recommendations: description_html: "Gợi ý theo dõi là cách giúp những người dùng mới nhanh chóng tìm thấy những nội dung thú vị. Khi một người dùng chưa đủ tương tác với những người khác để hình thành các đề xuất theo dõi được cá nhân hóa, thì những tài khoản này sẽ được đề xuất. Nó bao gồm các tài khoản có số lượt tương tác gần đây cao nhất và số lượng người theo dõi cao nhất cho một ngôn ngữ nhất định trong máy chủ." @@ -598,6 +604,7 @@ vi: title: Ghi chú notes_description_html: Xem và để lại ghi chú cho các kiểm duyệt viên khác quick_actions_description_html: 'Kiểm duyệt nhanh hoặc kéo xuống để xem nội dung bị báo cáo:' + remote_user_placeholder: người dùng ở %{instance} reopen: Mở lại báo cáo report: 'Báo cáo #%{id}' reported_account: Tài khoản bị báo cáo @@ -768,6 +775,14 @@ vi: rejected: Liên kết từ nguồn đăng không thể thành xu hướng title: Nguồn đăng rejected: Đã cấm + statuses: + allow: Cho phép tút + allow_account: Cho phép người đăng + disallow: Không cho phép tút + disallow_account: Không cho phép người đăng + shared_by: + other: Đã chia sẻ và thích %{friendly_count} lần + title: Tút xu hướng tags: current_score: Chỉ số gần đây %{score} dashboard: @@ -816,16 +831,21 @@ vi: body: "%{reporter} vừa báo cáo %{target}" body_remote: Ai đó từ %{domain} đã báo cáo %{target} subject: "(%{instance}) Báo cáo #%{id}" - new_trending_links: - body: Các liên kết này đang là xu hướng hôm nay, nhưng các nguồn đăng của chúng chưa được xem xét trước đây. Chúng sẽ không được hiển thị công khai trừ khi bạn cho phép chúng. Các thông báo khác từ cùng một nguồn đăng sẽ không được tạo. - no_approved_links: Hiện tại không có liên kết xu hướng nào được cho phép. - requirements: Liên kết xu hướng được cho phép thấp nhất hiện tại là "%{lowest_link_title}" với chỉ số %{lowest_link_score}. - subject: Liên kết xu hướng mới chờ duyệt trên %{instance} - new_trending_tags: - body: 'Các hashtag này đang là xu hướng hôm nay, nhưng chúng chưa được xem xét trước đó. Chúng sẽ không được hiển thị công khai trừ khi bạn cho phép chúng:' - no_approved_tags: Hiện tại không có hashtag xu hướng nào được cho phép. - requirements: 'Hashtag xu hướng được cho phép thấp nhất hiện tại là #%{lowest_tag_name} với chỉ số %{lowest_tag_score}.' - subject: Hashtag xu hướng mới chờ duyệt trên %{instance} + new_trends: + body: 'Các mục sau đây cần được xem xét trước khi chúng hiển thị công khai:' + new_trending_links: + no_approved_links: Hiện tại không có liên kết xu hướng nào được duyệt. + requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt liên kết xu hướng, với hiện tại là "%{lowest_link_title}" với điểm số %{lowest_link_score}.' + title: Liên kết xu hướng + new_trending_statuses: + no_approved_statuses: Hiện tại không có tút xu hướng nào được duyệt. + requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt tút xu hướng, với hiện tại là "%{lowest_status_url}" với điểm số %{lowest_status_score}.' + title: Tút xu hướng + new_trending_tags: + no_approved_tags: Hiện tại không có hashtag xu hướng nào được duyệt. + requirements: 'Bất kỳ ứng cử viên nào vượt qua #%{rank} duyệt hashtag xu hướng, với hiện tại là "%{lowest_tag_name}" với điểm số %{lowest_tag_score}.' + title: Hashtag xu hướng + subject: Xu hướng mới chờ duyệt trên %{instance} aliases: add_new: Kết nối tài khoản created_msg: Tạo thành công một tên hiển thị mới. Bây giờ bạn có thể bắt đầu di chuyển từ tài khoản cũ. @@ -1162,6 +1182,9 @@ vi: carry_mutes_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã ẩn trước đó. copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là lịch sử kiểm duyệt của họ:' notification_mailer: + admin: + sign_up: + subject: "%{name} đã được đăng ký" digest: action: Xem toàn bộ thông báo body: Dưới đây là những tin nhắn bạn đã bỏ lỡ kể từ lần truy cập trước vào %{since} diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 45f0d432d..da1376dac 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -136,6 +136,9 @@ zgh: '86400': ⴰⵙⵙ expires_in_prompt: ⵓⵙⴰⵔ notification_mailer: + admin: + sign_up: + subject: "%{name} ⴼⴼⵖⵏ" mention: action: ⵔⴰⵔ relationships: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index b7a5a8ae5..240daade4 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -387,6 +387,8 @@ zh-CN: media_storage: 媒体存储 new_users: 新用户 opened_reports: 被发起的举报 + pending_appeals_html: + other: "%{count} 个待处理举报" pending_reports_html: other: "%{count} 个待处理举报" pending_tags_html: @@ -455,15 +457,21 @@ zh-CN: view: 查看域名屏蔽 email_domain_blocks: add_new: 添加新条目 + attempts_over_week: + other: 上周有 %{count} 次注册尝试 created_msg: 成功屏蔽电子邮件域名 delete: 删除 - destroyed_msg: 电子邮件域名屏蔽删除成功 + dns: + types: + mx: MX 记录 domain: 域名 - empty: 当前没有邮件域名被封禁。 - from_html: 来自 %{domain} new: create: 添加域名 + resolve: 解析域名 title: 添加电子邮件域名屏蔽 + no_email_domain_block_selected: 没有任何项目被选中,因此未能更改电子邮件域名屏蔽列表 + resolved_dns_records_hint_html: 该域名解析的 MX 记录所指向的域名如下,这些域名被用于接收电子邮件。 即使电子邮件地址域名与 MX 域名不同,屏蔽一个 MX 域名意味着阻止任何使用相同 MX 域名的电子邮件地址注册本站账户。 请小心不要误屏蔽主要的电子邮件提供商。 + resolved_through_html: 通过 %{domain} 解析 title: 电子邮件域名屏蔽 follow_recommendations: description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账户。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" @@ -596,6 +604,7 @@ zh-CN: title: 备注 notes_description_html: 查看备注或向其他监察员留言 quick_actions_description_html: 快捷选择操作或向下滚动以查看举报内容: + remote_user_placeholder: 来自 %{instance} 的远程实例用户 reopen: 重开举报 report: '举报 #%{id}' reported_account: 举报用户 @@ -766,6 +775,8 @@ zh-CN: rejected: 来自此发布者的链接不会进入流行列表 title: 发布者 rejected: 已拒绝 + statuses: + title: 热门嘟文 tags: current_score: 当前 %{score} 分 dashboard: @@ -814,16 +825,17 @@ zh-CN: body: "%{reporter} 举报了用户 %{target}" body_remote: 来自 %{domain} 的用户举报了用户 %{target} subject: 来自 %{instance} 的用户举报(#%{id}) - new_trending_links: - body: 以下为今日流行的链接,但它们的发布者尚未经过审核。在您批准前它们不会被公开显示。来自相同发布者的更多通知不会被生成。 - no_approved_links: 当前没有经过批准的流行链接。 - requirements: 已批准流行链接中最低的是 %{lowest_link_title} (%{lowest_link_score} 分)。 - subject: "%{instance} 上待审核的新流行链接" - new_trending_tags: - body: 以下为今日流行的标签,但它们尚未经过审核。在您批准前它们不会被公开显示。 - no_approved_tags: 当前没有经过批准的流行标签。 - requirements: '已批准流行链接中最低的是 #%{lowest_tag_name} (%{lowest_tag_score} 分)。' - subject: "%{instance} 上待审核的新流行标签" + new_trends: + new_trending_links: + no_approved_links: 当前没有经过批准的热门链接。 + title: 热门链接 + new_trending_statuses: + no_approved_statuses: 当前没有经过批准的热门链接。 + title: 热门嘟文 + new_trending_tags: + no_approved_tags: 目前没有经批准的热门标签。 + title: 热门标签 + subject: "%{instance} 上的新趋势供审核" aliases: add_new: 创建别名 created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。 @@ -1160,6 +1172,9 @@ zh-CN: carry_mutes_over_text: 这个用户迁移自你隐藏过的 %{acct} copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注: notification_mailer: + admin: + sign_up: + subject: "%{name} 注册了" digest: action: 查看所有通知 body: 以下是自%{since}你最后一次登录以来错过的消息的摘要 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index e1fad25c5..b48182e8d 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -413,10 +413,7 @@ zh-HK: add_new: 新增 created_msg: 已新增電郵網域阻隔 delete: 刪除 - destroyed_msg: 已刪除電郵網域阻隔 domain: 網域 - empty: 現時並沒有電郵域名被阻隔。 - from_html: 由%{domain} new: create: 新增網域 title: 新增電郵網域阻隔 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index c0f633095..930f4f040 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -457,15 +457,21 @@ zh-TW: view: 顯示阻擋的網域 email_domain_blocks: add_new: 加入新項目 + attempts_over_week: + other: 上週共有 %{count} 次註冊嘗試 created_msg: 已成功將電子信箱網域加入黑名單 delete: 刪除 - destroyed_msg: 已成功從黑名單刪除電子信箱網域 + dns: + types: + mx: MX 記錄 domain: 站點 - empty: 現在沒有阻擋任何 e-mail 網域。 - from_html: 由 %{domain} new: create: 新增站點 + resolve: 解析網域 title: 新增電子信箱黑名單項目 + no_email_domain_block_selected: 因未選取項目,而未更改電子信箱網域封鎖清單 + resolved_dns_records_hint_html: 網域名稱解析為以下 MX 網域,這些網域最終負責接收電子郵件。封鎖 MX 網域將會封鎖任何來自使用相同 MX 網域的電子郵件註冊,即便可見的域名是不同的也一樣。請注意,不要封鎖主要的電子郵件服務提供商。 + resolved_through_html: 透過 %{domain} 解析 title: 電子信箱黑名單 follow_recommendations: description_html: |- @@ -600,6 +606,7 @@ zh-TW: title: 註記 notes_description_html: 檢視及留下些給其他管理員和未來的自己的註記 quick_actions_description_html: 採取一個快速行動,或者下捲以檢視檢舉內容: + remote_user_placeholder: 來自 %{instance} 之遠端使用者 reopen: 重開檢舉 report: '檢舉 #%{id}' reported_account: 被檢舉使用者 @@ -770,6 +777,14 @@ zh-TW: rejected: 此發行者之連結不會登上熱門 title: 發行者 rejected: 被拒絕 + statuses: + allow: 允許嘟文 + allow_account: 允許作者 + disallow: 不允許嘟文 + disallow_account: 不允許作者 + shared_by: + other: 分享過或/及收藏過 %{friendly_count} 次 + title: 熱門嘟文 tags: current_score: 目前分數 %{score} 分 dashboard: @@ -818,16 +833,21 @@ zh-TW: body: "%{reporter} 檢舉了使用者 %{target}" body_remote: 來自 %{domain} 的使用者檢舉了使用者 %{target} subject: 來自 %{instance} 的使用者檢舉(#%{id}) - new_trending_links: - body: 以下連結於今日登上熱門榜,然而他們的發行者之前仍未被審核過。除非您核准,這些連結將不會被公開顯示。來自這些發行者的通知往後將不會被產生。 - no_approved_links: 這些是目前仍未被審核之熱門連結。 - requirements: 已核准熱門連結中最低分者目前是「%{lowest_link_title}」為 %{lowest_link_score} 分。 - subject: 於 %{instance} 待審核的新熱門連結 - new_trending_tags: - body: 以下主題標籤於今日登上熱門榜,然而他們之前仍未被審核過。除非您核准,這些連結將不會被公開顯示: - no_approved_tags: 這些是目前仍未被審核之熱門主題標籤。 - requirements: 已核准熱門標籤中最低分者目前是「#%{lowest_tag_name}」為 %{lowest_tag_score} 分。 - subject: 於 %{instance} 待審核的新熱門主題標籤 + new_trends: + body: 以下項目需要經過審核才能公開顯示: + new_trending_links: + no_approved_links: 這些是目前仍未被審核之熱門連結。 + requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門連結,該連結目前是「%{lowest_link_title}」,得分為 %{lowest_link_score}。' + title: 熱門連結 + new_trending_statuses: + no_approved_statuses: 這些是目前仍未被審核之熱門嘟文。 + requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門嘟文,該嘟文目前是 %{lowest_status_url},得分為 %{lowest_status_score}。' + title: 熱門嘟文 + new_trending_tags: + no_approved_tags: 這些是目前仍未被審核之熱門主題標籤。 + requirements: '這些候選中的任何一個都可能超過 #%{rank} 已批准的熱門主題標籤,該主題標籤目前是 #%{lowest_tag_name},得分為 %{lowest_tag_score}。' + title: 熱門主題標籤 + subject: "%{instance} 有待審核之新熱門" aliases: add_new: 建立別名 created_msg: 成功建立別名。您可以自舊帳戶開始轉移。 @@ -1164,6 +1184,9 @@ zh-TW: carry_mutes_over_text: 此使用者轉移自被您靜音的 %{acct}。 copy_account_note_text: 此使用者轉移自 %{acct},以下是您之前關於他們的備註: notification_mailer: + admin: + sign_up: + subject: "%{name} 已進行註冊" digest: action: 閱覽所有通知 body: 以下是自%{since}你最後一次登入以來錯過的訊息摘要 From 50ea54b3ed125477656893a67d9f552bb53e8ba5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 16:48:58 +0100 Subject: [PATCH 002/143] Change authorized applications page (#17656) * Change authorized applications page * Hide revoke button for superapps and suspended accounts * Clean up db/schema.rb --- app/controllers/api/base_controller.rb | 1 + .../concerns/access_token_tracking_concern.rb | 21 +++++ .../concerns/session_tracking_concern.rb | 4 +- .../concerns/user_tracking_concern.rb | 4 +- app/helpers/application_helper.rb | 15 ++++ app/javascript/styles/mastodon/admin.scss | 10 +++ .../styles/mastodon/containers.scss | 13 ++- app/javascript/styles/mastodon/forms.scss | 71 ++++++++++++++- app/lib/access_token_extension.rb | 4 + app/lib/application_extension.rb | 4 + app/lib/scope_parser.rb | 10 +++ app/lib/scope_transformer.rb | 40 +++++++++ app/views/layouts/modal.html.haml | 3 +- app/views/oauth/authorizations/new.html.haml | 50 +++++++---- .../authorized_applications/index.html.haml | 62 ++++++++----- app/workers/scheduler/ip_cleanup_scheduler.rb | 1 + config/locales/doorkeeper.en.yml | 43 +++++++-- ...add_last_used_at_to_oauth_access_tokens.rb | 6 ++ db/schema.rb | 4 +- spec/lib/scope_transformer_spec.rb | 89 +++++++++++++++++++ 20 files changed, 393 insertions(+), 62 deletions(-) create mode 100644 app/controllers/concerns/access_token_tracking_concern.rb create mode 100644 app/lib/scope_parser.rb create mode 100644 app/lib/scope_transformer.rb create mode 100644 db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb create mode 100644 spec/lib/scope_transformer_spec.rb diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index b863d8643..72c30dec7 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -5,6 +5,7 @@ class Api::BaseController < ApplicationController DEFAULT_ACCOUNTS_LIMIT = 40 include RateLimitHeaders + include AccessTokenTrackingConcern skip_before_action :store_current_location skip_before_action :require_functional!, unless: :whitelist_mode? diff --git a/app/controllers/concerns/access_token_tracking_concern.rb b/app/controllers/concerns/access_token_tracking_concern.rb new file mode 100644 index 000000000..cf60cfb99 --- /dev/null +++ b/app/controllers/concerns/access_token_tracking_concern.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module AccessTokenTrackingConcern + extend ActiveSupport::Concern + + ACCESS_TOKEN_UPDATE_FREQUENCY = 24.hours.freeze + + included do + before_action :update_access_token_last_used + end + + private + + def update_access_token_last_used + doorkeeper_token.update_last_used(request) if access_token_needs_update? + end + + def access_token_needs_update? + doorkeeper_token.present? && (doorkeeper_token.last_used_at.nil? || doorkeeper_token.last_used_at < ACCESS_TOKEN_UPDATE_FREQUENCY.ago) + end +end diff --git a/app/controllers/concerns/session_tracking_concern.rb b/app/controllers/concerns/session_tracking_concern.rb index 45361b019..eaaa4ac59 100644 --- a/app/controllers/concerns/session_tracking_concern.rb +++ b/app/controllers/concerns/session_tracking_concern.rb @@ -3,7 +3,7 @@ module SessionTrackingConcern extend ActiveSupport::Concern - UPDATE_SIGN_IN_HOURS = 24 + SESSION_UPDATE_FREQUENCY = 24.hours.freeze included do before_action :set_session_activity @@ -17,6 +17,6 @@ module SessionTrackingConcern end def session_needs_update? - !current_session.nil? && current_session.updated_at < UPDATE_SIGN_IN_HOURS.hours.ago + !current_session.nil? && current_session.updated_at < SESSION_UPDATE_FREQUENCY.ago end end diff --git a/app/controllers/concerns/user_tracking_concern.rb b/app/controllers/concerns/user_tracking_concern.rb index 45f3aab0d..e960cce53 100644 --- a/app/controllers/concerns/user_tracking_concern.rb +++ b/app/controllers/concerns/user_tracking_concern.rb @@ -3,7 +3,7 @@ module UserTrackingConcern extend ActiveSupport::Concern - UPDATE_SIGN_IN_FREQUENCY = 24.hours.freeze + SIGN_IN_UPDATE_FREQUENCY = 24.hours.freeze included do before_action :update_user_sign_in @@ -16,6 +16,6 @@ module UserTrackingConcern end def user_needs_sign_in_update? - user_signed_in? && (current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < UPDATE_SIGN_IN_FREQUENCY.ago) + user_signed_in? && (current_user.current_sign_in_at.nil? || current_user.current_sign_in_at < SIGN_IN_UPDATE_FREQUENCY.ago) end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 36c66b7d1..c5d9bbc19 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -224,4 +224,19 @@ module ApplicationHelper content_tag(:script, json_escape(json).html_safe, id: 'initial-state', type: 'application/json') # rubocop:enable Rails/OutputSafety end + + def grouped_scopes(scopes) + scope_parser = ScopeParser.new + scope_transformer = ScopeTransformer.new + + scopes.each_with_object({}) do |str, h| + scope = scope_transformer.apply(scope_parser.parse(str)) + + if h[scope.key] + h[scope.key].merge!(scope) + else + h[scope.key] = scope + end + end.values + end end diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 2e212eca5..f49a354dc 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -907,6 +907,12 @@ a.name-tag, text-decoration: none; margin-bottom: 10px; + .account-role { + vertical-align: middle; + } + } + + a.announcements-list__item__title { &:hover, &:focus, &:active { @@ -925,6 +931,10 @@ a.name-tag, align-items: center; } + &__permissions { + margin-top: 10px; + } + &:last-child { border-bottom: 0; } diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss index e40ad18ff..a180df437 100644 --- a/app/javascript/styles/mastodon/containers.scss +++ b/app/javascript/styles/mastodon/containers.scss @@ -1,7 +1,6 @@ .container-alt { width: 700px; margin: 0 auto; - margin-top: 40px; @media screen and (max-width: 740px) { width: 100%; @@ -67,22 +66,20 @@ line-height: 18px; box-sizing: border-box; padding: 20px 0; - padding-bottom: 0; - margin-bottom: -30px; margin-top: 40px; + margin-bottom: 10px; + border-bottom: 1px solid $ui-base-color; @media screen and (max-width: 440px) { width: 100%; margin: 0; - margin-bottom: 10px; padding: 20px; - padding-bottom: 0; } .avatar { width: 40px; height: 40px; - margin-right: 8px; + margin-right: 10px; img { width: 100%; @@ -96,7 +93,7 @@ .name { flex: 1 1 auto; color: $secondary-text-color; - width: calc(100% - 88px); + width: calc(100% - 90px); .username { display: block; @@ -110,7 +107,7 @@ display: block; font-size: 32px; line-height: 40px; - margin-left: 8px; + margin-left: 10px; } } diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 65f53471d..6e02e2332 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -800,9 +800,41 @@ code { } } } +} - @media screen and (max-width: 740px) and (min-width: 441px) { - margin-top: 40px; +.oauth-prompt { + h3 { + color: $ui-secondary-color; + font-size: 17px; + line-height: 22px; + font-weight: 500; + margin-bottom: 30px; + } + + p { + font-size: 14px; + line-height: 18px; + margin-bottom: 30px; + } + + .permissions-list { + border: 1px solid $ui-base-color; + border-radius: 4px; + background: darken($ui-base-color, 4%); + margin-bottom: 30px; + } + + .actions { + margin: 0 -10px; + display: flex; + + form { + box-sizing: border-box; + padding: 0 10px; + flex: 1 1 auto; + min-height: 1px; + width: 50%; + } } } @@ -1005,3 +1037,38 @@ code { display: none; } } + +.permissions-list { + &__item { + padding: 15px; + color: $ui-secondary-color; + border-bottom: 1px solid lighten($ui-base-color, 4%); + display: flex; + align-items: center; + + &__text { + flex: 1 1 auto; + + &__title { + font-weight: 500; + } + + &__type { + color: $darker-text-color; + } + } + + &__icon { + flex: 0 0 auto; + font-size: 18px; + width: 30px; + color: $valid-value-color; + display: flex; + align-items: center; + } + + &:last-child { + border-bottom: 0; + } + } +} diff --git a/app/lib/access_token_extension.rb b/app/lib/access_token_extension.rb index 3e184e775..2cafaaa20 100644 --- a/app/lib/access_token_extension.rb +++ b/app/lib/access_token_extension.rb @@ -11,6 +11,10 @@ module AccessTokenExtension update(revoked_at: clock.now.utc) end + def update_last_used(request, clock = Time) + update(last_used_at: clock.now.utc, last_used_ip: request.remote_ip) + end + def push_to_streaming_api Redis.current.publish("timeline:access_token:#{id}", Oj.dump(event: :kill)) if revoked? || destroyed? end diff --git a/app/lib/application_extension.rb b/app/lib/application_extension.rb index e61cd0721..a1fea6430 100644 --- a/app/lib/application_extension.rb +++ b/app/lib/application_extension.rb @@ -8,4 +8,8 @@ module ApplicationExtension validates :website, url: true, length: { maximum: 2_000 }, if: :website? validates :redirect_uri, length: { maximum: 2_000 } end + + def most_recently_used_access_token + @most_recently_used_access_token ||= access_tokens.where.not(last_used_at: nil).order(last_used_at: :desc).first + end end diff --git a/app/lib/scope_parser.rb b/app/lib/scope_parser.rb new file mode 100644 index 000000000..d268688c8 --- /dev/null +++ b/app/lib/scope_parser.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class ScopeParser < Parslet::Parser + rule(:term) { match('[a-z]').repeat(1).as(:term) } + rule(:colon) { str(':') } + rule(:access) { (str('write') | str('read')).as(:access) } + rule(:namespace) { str('admin').as(:namespace) } + rule(:scope) { ((namespace >> colon).maybe >> ((access >> colon >> term) | access | term)).as(:scope) } + root(:scope) +end diff --git a/app/lib/scope_transformer.rb b/app/lib/scope_transformer.rb new file mode 100644 index 000000000..fdfc6cf13 --- /dev/null +++ b/app/lib/scope_transformer.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class ScopeTransformer < Parslet::Transform + class Scope + DEFAULT_TERM = 'all' + DEFAULT_ACCESS = %w(read write).freeze + + attr_reader :namespace, :term + + def initialize(scope) + @namespace = scope[:namespace]&.to_s + @access = scope[:access] ? [scope[:access].to_s] : DEFAULT_ACCESS.dup + @term = scope[:term]&.to_s || DEFAULT_TERM + end + + def key + @key ||= [@namespace, @term].compact.join('/') + end + + def access + @access.join('/') + end + + def merge(other_scope) + clone.merge!(other_scope) + end + + def merge!(other_scope) + raise ArgumentError unless other_scope.namespace == namespace && other_scope.term == term + + @access.concat(other_scope.instance_variable_get('@access')) + @access.uniq! + @access.sort! + + self + end + end + + rule(scope: subtree(:scope)) { Scope.new(scope) } +end diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml index a2cd1193f..c0ea211ff 100644 --- a/app/views/layouts/modal.html.haml +++ b/app/views/layouts/modal.html.haml @@ -12,8 +12,9 @@ = fa_icon 'sign-out' .container-alt= yield + .modal-layout__mastodon %div - %img{alt:'', draggable:'false', src:"#{mascot_url}"} + %img{alt: '', draggable: 'false', src: mascot_url } = render template: 'layouts/application' diff --git a/app/views/oauth/authorizations/new.html.haml b/app/views/oauth/authorizations/new.html.haml index 05ff9582e..50f671b26 100644 --- a/app/views/oauth/authorizations/new.html.haml +++ b/app/views/oauth/authorizations/new.html.haml @@ -1,26 +1,38 @@ - content_for :page_title do = t('doorkeeper.authorizations.new.title') -.form-container +.form-container.simple_form .oauth-prompt - %h2= t('doorkeeper.authorizations.new.prompt', client_name: @pre_auth.client.name) + %h3= t('doorkeeper.authorizations.new.title') - %p - = t('doorkeeper.authorizations.new.able_to') - != @pre_auth.scopes.map { |scope| t(scope, scope: [:doorkeeper, :scopes]) }.map { |s| "#{s}" }.to_sentence + %p= t('doorkeeper.authorizations.new.prompt_html', client_name: content_tag(:strong, @pre_auth.client.name)) - = form_tag oauth_authorization_path, method: :post, class: 'simple_form' do - = hidden_field_tag :client_id, @pre_auth.client.uid - = hidden_field_tag :redirect_uri, @pre_auth.redirect_uri - = hidden_field_tag :state, @pre_auth.state - = hidden_field_tag :response_type, @pre_auth.response_type - = hidden_field_tag :scope, @pre_auth.scope - = button_tag t('doorkeeper.authorizations.buttons.authorize'), type: :submit + %h3= t('doorkeeper.authorizations.new.review_permissions') - = form_tag oauth_authorization_path, method: :delete, class: 'simple_form' do - = hidden_field_tag :client_id, @pre_auth.client.uid - = hidden_field_tag :redirect_uri, @pre_auth.redirect_uri - = hidden_field_tag :state, @pre_auth.state - = hidden_field_tag :response_type, @pre_auth.response_type - = hidden_field_tag :scope, @pre_auth.scope - = button_tag t('doorkeeper.authorizations.buttons.deny'), type: :submit, class: 'negative' + %ul.permissions-list + - grouped_scopes(@pre_auth.scopes).each do |scope| + %li.permissions-list__item + .permissions-list__item__icon + = fa_icon('check') + .permissions-list__item__text + .permissions-list__item__text__title + = t(scope.key, scope: [:doorkeeper, :grouped_scopes, :title]) + .permissions-list__item__text__type + = t(scope.access, scope: [:doorkeeper, :grouped_scopes, :access]) + + .actions + = form_tag oauth_authorization_path, method: :post do + = hidden_field_tag :client_id, @pre_auth.client.uid + = hidden_field_tag :redirect_uri, @pre_auth.redirect_uri + = hidden_field_tag :state, @pre_auth.state + = hidden_field_tag :response_type, @pre_auth.response_type + = hidden_field_tag :scope, @pre_auth.scope + = button_tag t('doorkeeper.authorizations.buttons.authorize'), type: :submit + + = form_tag oauth_authorization_path, method: :delete do + = hidden_field_tag :client_id, @pre_auth.client.uid + = hidden_field_tag :redirect_uri, @pre_auth.redirect_uri + = hidden_field_tag :state, @pre_auth.state + = hidden_field_tag :response_type, @pre_auth.response_type + = hidden_field_tag :scope, @pre_auth.scope + = button_tag t('doorkeeper.authorizations.buttons.deny'), type: :submit, class: 'negative' diff --git a/app/views/oauth/authorized_applications/index.html.haml b/app/views/oauth/authorized_applications/index.html.haml index fbb733db4..fead56f4a 100644 --- a/app/views/oauth/authorized_applications/index.html.haml +++ b/app/views/oauth/authorized_applications/index.html.haml @@ -1,24 +1,44 @@ - content_for :page_title do = t('doorkeeper.authorized_applications.index.title') -.table-wrapper - %table.table - %thead - %tr - %th= t('doorkeeper.authorized_applications.index.application') - %th= t('doorkeeper.authorized_applications.index.scopes') - %th= t('doorkeeper.authorized_applications.index.created_at') - %th - %tbody - - @applications.each do |application| - %tr - %td - - if application.website.blank? - = application.name - - else - = link_to application.name, application.website, target: '_blank', rel: 'noopener noreferrer' - %th!= application.scopes.map { |scope| t(scope, scope: [:doorkeeper, :scopes]) }.join(', ') - %td= l application.created_at - %td - - unless application.superapp? || current_account.suspended? - = table_link_to 'times', t('doorkeeper.authorized_applications.buttons.revoke'), oauth_authorized_application_path(application), method: :delete, data: { confirm: t('doorkeeper.authorized_applications.confirmations.revoke') } +%p= t('doorkeeper.authorized_applications.index.description_html') + +%hr.spacer/ + +.announcements-list + - @applications.each do |application| + .announcements-list__item + - if application.website.present? + = link_to application.name, application.website, target: '_blank', rel: 'noopener noreferrer', class: 'announcements-list__item__title' + - else + %strong.announcements-list__item__title + = application.name + - if application.superapp? + %span.account-role.moderator= t('doorkeeper.authorized_applications.index.superapp') + + .announcements-list__item__action-bar + .announcements-list__item__meta + - if application.most_recently_used_access_token + = t('doorkeeper.authorized_applications.index.last_used_at', date: l(application.most_recently_used_access_token.last_used_at.to_date)) + - else + = t('doorkeeper.authorized_applications.index.never_used') + + • + + = t('doorkeeper.authorized_applications.index.authorized_at', date: l(application.created_at.to_date)) + + - unless application.superapp? || current_account.suspended? + %div + = table_link_to 'times', t('doorkeeper.authorized_applications.buttons.revoke'), oauth_authorized_application_path(application), method: :delete, data: { confirm: t('doorkeeper.authorized_applications.confirmations.revoke') } + + .announcements-list__item__permissions + %ul.permissions-list + - grouped_scopes(application.scopes).each do |scope| + %li.permissions-list__item + .permissions-list__item__icon + = fa_icon('check') + .permissions-list__item__text + .permissions-list__item__text__title + = t(scope.key, scope: [:doorkeeper, :grouped_scopes, :title]) + .permissions-list__item__text__type + = t(scope.access, scope: [:doorkeeper, :grouped_scopes, :access]) diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb index adc99c605..7afad2f58 100644 --- a/app/workers/scheduler/ip_cleanup_scheduler.rb +++ b/app/workers/scheduler/ip_cleanup_scheduler.rb @@ -18,6 +18,7 @@ class Scheduler::IpCleanupScheduler SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all User.where('current_sign_in_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(sign_up_ip: nil) LoginActivity.where('created_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all + Doorkeeper::AccessToken.where('last_used_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(last_used_ip: nil) end def clean_expired_ip_blocks! diff --git a/config/locales/doorkeeper.en.yml b/config/locales/doorkeeper.en.yml index 8aa099284..5567724ae 100644 --- a/config/locales/doorkeeper.en.yml +++ b/config/locales/doorkeeper.en.yml @@ -60,8 +60,8 @@ en: error: title: An error has occurred new: - able_to: It will be able to - prompt: Application %{client_name} requests access to your account + prompt_html: "%{client_name} would like permission to access your account. It is a third-party application. If you do not trust it, then you should not authorize it." + review_permissions: Review permissions title: Authorization required show: title: Copy this authorization code and paste it to the application. @@ -71,10 +71,12 @@ en: confirmations: revoke: Are you sure? index: - application: Application - created_at: Authorized - date_format: "%Y-%m-%d %H:%M:%S" - scopes: Scopes + authorized_at: Authorized on %{date} + description_html: These are applications that can access your account using the API. If there are applications you do not recognize here, or an application is misbehaving, you can revoke its access. + last_used_at: Last used on %{date} + never_used: Never used + scopes: Permissions + superapp: Internal title: Your authorized applications errors: messages: @@ -110,6 +112,33 @@ en: authorized_applications: destroy: notice: Application revoked. + grouped_scopes: + access: + read: Read-only access + read/write: Read and write access + write: Write-only access + title: + accounts: Accounts + admin/accounts: Administration of accounts + admin/all: All administrative functions + admin/reports: Administration of reports + all: Everything + blocks: Blocks + bookmarks: Bookmarks + conversations: Conversations + crypto: End-to-end encryption + favourites: Favourites + filters: Filters + follow: Relationships + follows: Follows + lists: Lists + media: Media attachments + mutes: Mutes + notifications: Notifications + push: Push notifications + reports: Reports + search: Search + statuses: Posts layouts: admin: nav: @@ -124,6 +153,7 @@ en: admin:write: modify all data on the server admin:write:accounts: perform moderation actions on accounts admin:write:reports: perform moderation actions on reports + crypto: use end-to-end encryption follow: modify account relationships push: receive your push notifications read: read all your account's data @@ -143,6 +173,7 @@ en: write:accounts: modify your profile write:blocks: block accounts and domains write:bookmarks: bookmark posts + write:conversations: mute and delete conversations write:favourites: favourite posts write:filters: create filters write:follows: follow people diff --git a/db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb b/db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb new file mode 100644 index 000000000..6b46e60a8 --- /dev/null +++ b/db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb @@ -0,0 +1,6 @@ +class AddLastUsedAtToOauthAccessTokens < ActiveRecord::Migration[6.1] + def change + add_column :oauth_access_tokens, :last_used_at, :datetime + add_column :oauth_access_tokens, :last_used_ip, :inet + end +end diff --git a/db/schema.rb b/db/schema.rb index e54de5b37..756e5e9ab 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_02_24_010024) do +ActiveRecord::Schema.define(version: 2022_02_27_041951) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -630,6 +630,8 @@ ActiveRecord::Schema.define(version: 2022_02_24_010024) do t.string "scopes" t.bigint "application_id" t.bigint "resource_owner_id" + t.datetime "last_used_at" + t.inet "last_used_ip" t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id" t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true diff --git a/spec/lib/scope_transformer_spec.rb b/spec/lib/scope_transformer_spec.rb new file mode 100644 index 000000000..e5a992144 --- /dev/null +++ b/spec/lib/scope_transformer_spec.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe ScopeTransformer do + describe '#apply' do + subject { described_class.new.apply(ScopeParser.new.parse(input)) } + + shared_examples 'a scope' do |namespace, term, access| + it 'parses the term' do + expect(subject.term).to eq term + end + + it 'parses the namespace' do + expect(subject.namespace).to eq namespace + end + + it 'parses the access' do + expect(subject.access).to eq access + end + end + + context 'for scope "read"' do + let(:input) { 'read' } + + it_behaves_like 'a scope', nil, 'all', 'read' + end + + context 'for scope "write"' do + let(:input) { 'write' } + + it_behaves_like 'a scope', nil, 'all', 'write' + end + + context 'for scope "follow"' do + let(:input) { 'follow' } + + it_behaves_like 'a scope', nil, 'follow', 'read/write' + end + + context 'for scope "crypto"' do + let(:input) { 'crypto' } + + it_behaves_like 'a scope', nil, 'crypto', 'read/write' + end + + context 'for scope "push"' do + let(:input) { 'push' } + + it_behaves_like 'a scope', nil, 'push', 'read/write' + end + + context 'for scope "admin:read"' do + let(:input) { 'admin:read' } + + it_behaves_like 'a scope', 'admin', 'all', 'read' + end + + context 'for scope "admin:write"' do + let(:input) { 'admin:write' } + + it_behaves_like 'a scope', 'admin', 'all', 'write' + end + + context 'for scope "admin:read:accounts"' do + let(:input) { 'admin:read:accounts' } + + it_behaves_like 'a scope', 'admin', 'accounts', 'read' + end + + context 'for scope "admin:write:accounts"' do + let(:input) { 'admin:write:accounts' } + + it_behaves_like 'a scope', 'admin', 'accounts', 'write' + end + + context 'for scope "read:accounts"' do + let(:input) { 'read:accounts' } + + it_behaves_like 'a scope', nil, 'accounts', 'read' + end + + context 'for scope "write:accounts"' do + let(:input) { 'write:accounts' } + + it_behaves_like 'a scope', nil, 'accounts', 'write' + end + end +end From 14919fe11e9a1dd5cbf12969a2957d0d05bb0534 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 1 Mar 2022 19:37:47 +0100 Subject: [PATCH 003/143] Change old moderation strikes to be displayed in a separate page (#17566) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Change old moderation strikes to be displayed in a separate page Fixes #17552 This changes the moderation strikes displayed on `/auth/edit` to be those from the past 3 months, and make all moderation strikes targeting the current user available in `/disputes`. * Add short description of what the strikes page is for * Move link to list of strikes to “Account status” instead of navigation item * Normalize i18n file * Fix layout and styling of strikes link * Revert highlights_on regexp * Reintroduce account status summary - this way, “Account status” is never empty - account status is not necessarily bound to strikes, or recent strikes --- app/controllers/auth/registrations_controller.rb | 2 +- app/controllers/disputes/strikes_controller.rb | 6 +++++- app/models/account_warning.rb | 2 +- app/views/auth/registrations/_status.html.haml | 16 ++++++++++++++++ app/views/disputes/strikes/index.html.haml | 6 ++++++ config/locales/en.yml | 4 ++++ config/routes.rb | 2 +- 7 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 app/views/disputes/strikes/index.html.haml diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 3b025838b..1c3adbd78 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -127,7 +127,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def set_strikes - @strikes = current_account.strikes.active.latest + @strikes = current_account.strikes.recent.latest end def require_not_suspended! diff --git a/app/controllers/disputes/strikes_controller.rb b/app/controllers/disputes/strikes_controller.rb index d41c5c727..d85dcb4d5 100644 --- a/app/controllers/disputes/strikes_controller.rb +++ b/app/controllers/disputes/strikes_controller.rb @@ -1,7 +1,11 @@ # frozen_string_literal: true class Disputes::StrikesController < Disputes::BaseController - before_action :set_strike + before_action :set_strike, only: [:show] + + def index + @strikes = current_account.strikes.latest + end def show authorize @strike, :show? diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb index 05d01942d..14d5ac388 100644 --- a/app/models/account_warning.rb +++ b/app/models/account_warning.rb @@ -33,7 +33,7 @@ class AccountWarning < ApplicationRecord scope :latest, -> { order(id: :desc) } scope :custom, -> { where.not(text: '') } - scope :active, -> { where(overruled_at: nil).or(where('account_warnings.overruled_at >= ?', 30.days.ago)) } + scope :recent, -> { where('account_warnings.created_at >= ?', 3.months.ago) } def statuses Status.with_discarded.where(id: status_ids || []) diff --git a/app/views/auth/registrations/_status.html.haml b/app/views/auth/registrations/_status.html.haml index 3546510b2..68954a5da 100644 --- a/app/views/auth/registrations/_status.html.haml +++ b/app/views/auth/registrations/_status.html.haml @@ -12,6 +12,22 @@ %h3= t('auth.status.account_status') +%p.hint + - if @user.account.suspended? + %span.negative-hint= t('user_mailer.warning.explanation.suspend') + - elsif @user.disabled? + %span.negative-hint= t('user_mailer.warning.explanation.disable') + - elsif @user.account.silenced? + %span.warning-hint= t('user_mailer.warning.explanation.silence') + - else + %span.positive-hint= t('auth.status.functional') + = render partial: 'account_warning', collection: @strikes +- if @user.account.strikes.exists? + %hr.spacer/ + + %p.muted-hint + = link_to t('auth.status.view_strikes'), disputes_strikes_path + %hr.spacer/ diff --git a/app/views/disputes/strikes/index.html.haml b/app/views/disputes/strikes/index.html.haml new file mode 100644 index 000000000..6789fa405 --- /dev/null +++ b/app/views/disputes/strikes/index.html.haml @@ -0,0 +1,6 @@ +- content_for :page_title do + = t('settings.strikes') + +%p= t('disputes.strikes.description_html', instance: Rails.configuration.x.local_domain) + += render partial: 'auth/registrations/account_warning', collection: @strikes diff --git a/config/locales/en.yml b/config/locales/en.yml index 536d1dbf6..a68d87d10 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -933,8 +933,10 @@ en: status: account_status: Account status confirming: Waiting for e-mail confirmation to be completed. + functional: Your account is fully operational. pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved. redirecting_to: Your account is inactive because it is currently redirecting to %{acct}. + view_strikes: View past strikes against your account too_fast: Form submitted too fast, try again. trouble_logging_in: Trouble logging in? use_security_key: Use security key @@ -1010,6 +1012,7 @@ en: submit: Submit appeal associated_report: Associated report created_at: Dated + description_html: These are actions taken against your account and warnings that have been sent to you by the staff of %{instance}. recipient: Addressed to status: 'Post #%{id}' status_removed: Post already removed from system @@ -1391,6 +1394,7 @@ en: profile: Profile relationships: Follows and followers statuses_cleanup: Automated post deletion + strikes: Moderation strikes two_factor_authentication: Two-factor Auth webauthn_authentication: Security keys statuses: diff --git a/config/routes.rb b/config/routes.rb index a820f32ad..25eb1558f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -165,7 +165,7 @@ Rails.application.routes.draw do end namespace :disputes do - resources :strikes, only: [:show] do + resources :strikes, only: [:show, :index] do resource :appeal, only: [:create] end end From 25d3dc4373531071f444d8e44e44cd21970cb373 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 22:20:29 +0100 Subject: [PATCH 004/143] Add ability to mark statuses as sensitive from reports in admin UI (#17668) * Add ability to mark statuses as sensitive from reports in admin UI * Allow mark as sensitive action on statuses with preview cards --- .../admin/reports/actions_controller.rb | 4 ++- app/javascript/styles/mastodon/admin.scss | 2 ++ app/models/account_warning.rb | 13 +++---- app/models/admin/status_batch_action.rb | 34 +++++++++++++++++++ app/models/status.rb | 4 +++ app/services/approve_appeal_service.rb | 8 +++++ app/services/update_status_service.rb | 10 +++--- app/views/admin/reports/_actions.html.haml | 6 ++++ config/locales/en.yml | 16 ++++++--- 9 files changed, 81 insertions(+), 16 deletions(-) diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb index 05a4fb63d..5cb5c744f 100644 --- a/app/controllers/admin/reports/actions_controller.rb +++ b/app/controllers/admin/reports/actions_controller.rb @@ -7,7 +7,7 @@ class Admin::Reports::ActionsController < Admin::BaseController authorize @report, :show? case action_from_button - when 'delete' + when 'delete', 'mark_as_sensitive' status_batch_action = Admin::StatusBatchAction.new( type: action_from_button, status_ids: @report.status_ids, @@ -41,6 +41,8 @@ class Admin::Reports::ActionsController < Admin::BaseController def action_from_button if params[:delete] 'delete' + elsif params[:mark_as_sensitive] + 'mark_as_sensitive' elsif params[:silence] 'silence' elsif params[:suspend] diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index f49a354dc..52bc2086a 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1504,6 +1504,8 @@ a.sparkline { word-wrap: break-word; font-weight: 400; color: $primary-text-color; + box-sizing: border-box; + min-height: 100%; p { margin-bottom: 20px; diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb index 14d5ac388..6067b54b7 100644 --- a/app/models/account_warning.rb +++ b/app/models/account_warning.rb @@ -17,12 +17,13 @@ class AccountWarning < ApplicationRecord enum action: { - none: 0, - disable: 1_000, - delete_statuses: 1_500, - sensitive: 2_000, - silence: 3_000, - suspend: 4_000, + none: 0, + disable: 1_000, + mark_statuses_as_sensitive: 1_250, + delete_statuses: 1_500, + sensitive: 2_000, + silence: 3_000, + suspend: 4_000, }, _suffix: :action belongs_to :account, inverse_of: :account_warnings diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 40f60f379..4d91b9805 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -30,6 +30,8 @@ class Admin::StatusBatchAction case type when 'delete' handle_delete! + when 'mark_as_sensitive' + handle_mark_as_sensitive! when 'report' handle_report! when 'remove_from_report' @@ -65,6 +67,38 @@ class Admin::StatusBatchAction RemovalWorker.push_bulk(status_ids) { |status_id| [status_id, { 'preserve' => target_account.local?, 'immediate' => !target_account.local? }] } end + def handle_mark_as_sensitive! + # Can't use a transaction here because UpdateStatusService queues + # Sidekiq jobs + statuses.includes(:media_attachments, :preview_cards).find_each do |status| + next unless status.with_media? || status.with_preview_card? + + authorize(status, :update?) + + if target_account.local? + UpdateStatusService.new.call(status, current_account.id, sensitive: true) + else + status.update(sensitive: true) + end + + log_action(:update, status) + + if with_report? + report.resolve!(current_account) + log_action(:resolve, report) + end + + @warning = target_account.strikes.create!( + action: :mark_statuses_as_sensitive, + account: current_account, + report: report, + status_ids: status_ids + ) + end + + UserMailer.warning(target_account.user, @warning).deliver_later! if warnable? + end + def handle_report! @report = Report.new(report_params) unless with_report? @report.status_ids = (@report.status_ids + status_ids.map(&:to_i)).uniq diff --git a/app/models/status.rb b/app/models/status.rb index adb92ef91..60dde5045 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -231,6 +231,10 @@ class Status < ApplicationRecord media_attachments.any? end + def with_preview_card? + preview_cards.any? + end + def non_sensitive_with_media? !sensitive? && with_media? end diff --git a/app/services/approve_appeal_service.rb b/app/services/approve_appeal_service.rb index f76bf8943..37a08b46e 100644 --- a/app/services/approve_appeal_service.rb +++ b/app/services/approve_appeal_service.rb @@ -27,6 +27,8 @@ class ApproveAppealService < BaseService undo_disable! when 'delete_statuses' undo_delete_statuses! + when 'mark_statuses_as_sensitive' + undo_mark_statuses_as_sensitive! when 'sensitive' undo_sensitive! when 'silence' @@ -49,6 +51,12 @@ class ApproveAppealService < BaseService # Cannot be undone end + def undo_mark_statuses_as_sensitive! + @strike.statuses.includes(:media_attachments).each do |status| + UpdateStatusService.new.call(status, @current_account.id, sensitive: false) if status.with_media? + end + end + def undo_sensitive! target_account.unsensitize! end diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index 238ef0755..93203bc49 100644 --- a/app/services/update_status_service.rb +++ b/app/services/update_status_service.rb @@ -22,8 +22,8 @@ class UpdateStatusService < BaseService Status.transaction do create_previous_edit! - update_media_attachments! - update_poll! + update_media_attachments! if @options.key?(:media_ids) + update_poll! if @options.key?(:poll) update_immediate_attributes! create_edit! end @@ -91,9 +91,9 @@ class UpdateStatusService < BaseService end def update_immediate_attributes! - @status.text = @options[:text].presence || @options.delete(:spoiler_text) || '' - @status.spoiler_text = @options[:spoiler_text] || '' - @status.sensitive = @options[:sensitive] || @options[:spoiler_text].present? + @status.text = @options[:text].presence || @options.delete(:spoiler_text) || '' if @options.key?(:text) + @status.spoiler_text = @options[:spoiler_text] || '' if @options.key?(:spoiler_text) + @status.sensitive = @options[:sensitive] || @options[:spoiler_text].present? if @options.key?(:sensitive) || @options.key?(:spoiler_text) @status.language = valid_locale_or_nil(@options[:language] || @status.language || @status.account.user&.preferred_posting_language || I18n.default_locale) @status.edited_at = Time.now.utc diff --git a/app/views/admin/reports/_actions.html.haml b/app/views/admin/reports/_actions.html.haml index f3162b325..404d53a77 100644 --- a/app/views/admin/reports/_actions.html.haml +++ b/app/views/admin/reports/_actions.html.haml @@ -5,6 +5,12 @@ = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button' .report-actions__item__description = t('admin.reports.actions.resolve_description_html') + - if @statuses.any? { |status| status.with_media? || status.with_preview_card? } + .report-actions__item + .report-actions__item__button + = button_tag t('admin.reports.mark_as_sensitive'), name: :mark_as_sensitive, class: 'button' + .report-actions__item__description + = t('admin.reports.actions.mark_as_sensitive_description_html') .report-actions__item .report-actions__item__button = button_tag t('admin.reports.delete_and_resolve'), name: :delete, class: 'button button--destructive' diff --git a/config/locales/en.yml b/config/locales/en.yml index a68d87d10..35c2aa4bb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -586,6 +586,7 @@ en: action_taken_by: Action taken by actions: delete_description_html: The reported posts will be deleted and a strike will be recorded to help you escalate on future infractions by the same account. + mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future refractions by the same account. other_description_html: See more options for controlling the account's behaviour and customize communication to the reported account. resolve_description_html: No action will be taken against the reported account, no strike recorded, and the report will be closed. silence_description_html: The profile will be visible only to those who already follow it or manually look it up, severely limiting its reach. Can always be reverted. @@ -606,6 +607,7 @@ en: forwarded: Forwarded forwarded_to: Forwarded to %{domain} mark_as_resolved: Mark as resolved + mark_as_sensitive: Mark as sensitive mark_as_unresolved: Mark as unresolved no_one_assigned: No one notes: @@ -749,6 +751,7 @@ en: actions: delete_statuses: "%{name} deleted %{target}'s posts" disable: "%{name} froze %{target}'s account" + mark_statuses_as_sensitive: "%{name} marked %{target}'s posts as sensitive" none: "%{name} sent a warning to %{target}" sensitive: "%{name} marked %{target}'s account as sensitive" silence: "%{name} limited %{target}'s account" @@ -831,6 +834,7 @@ en: actions: delete_statuses: to delete their posts disable: to freeze their account + mark_statuses_as_sensitive: to mark their posts as sensitive none: a warning sensitive: to mark their account as sensitive silence: to limit their account @@ -1020,8 +1024,9 @@ en: title_actions: delete_statuses: Post removal disable: Freezing of account + mark_statuses_as_sensitive: Marking of posts as sensitive none: Warning - sensitive: Marking as sensitive of account + sensitive: Marking of account as sensitive silence: Limitation of account suspend: Suspension of account your_appeal_approved: Your appeal has been approved @@ -1623,24 +1628,27 @@ en: explanation: delete_statuses: Some of your posts have been found to violate one or more community guidelines and have been subsequently removed by the moderators of %{instance}. Future violations may result in harsher punitive actions against your account. disable: You can no longer use your account, but your profile and other data remains intact. You can request a backup of your data, change account settings or delete your account. + mark_statuses_as_sensitive: Some of your posts have been marked as sensitive by the moderators of %{instance}. This means that people will need to tap the media in the posts before a preview is displayed. You can mark media as sensitive yourself when posting in the future. sensitive: From now on, all your uploaded media files will be marked as sensitive and hidden behind a click-through warning. silence: You can still use your account but only people who are already following you will see your posts on this server, and you may be excluded from various discovery features. However, others may still manually follow you. suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed in about 30 days, but we will retain some basic data to prevent you from evading the suspension. get_in_touch: If you believe this is an error, you can reply to this e-mail to get in touch with the staff of %{instance}. reason: 'Reason:' - statuses: 'Posts that have been found in violation:' + statuses: 'Posts cited:' subject: delete_statuses: Your posts on %{acct} have been removed disable: Your account %{acct} has been frozen + mark_statuses_as_sensitive: Your posts on %{acct} have been marked as sensitive none: Warning for %{acct} - sensitive: Your media files on %{acct} will be marked as sensitive from now on + sensitive: Your posts on %{acct} will be marked as sensitive from now on silence: Your account %{acct} has been limited suspend: Your account %{acct} has been suspended title: delete_statuses: Posts removed disable: Account frozen + mark_statuses_as_sensitive: Posts marked as sensitive none: Warning - sensitive: Media hidden + sensitive: Account marked as sensitive silence: Account limited suspend: Account suspended welcome: From 462a6f7d721fa0717c5627fd0f0d73ee9ec5a675 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 23:07:57 +0100 Subject: [PATCH 005/143] Fix notification about deleted statuses being too threatening (#17679) --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 35c2aa4bb..5ce43be1a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1626,7 +1626,7 @@ en: spam: Spam violation: Content violates the following community guidelines explanation: - delete_statuses: Some of your posts have been found to violate one or more community guidelines and have been subsequently removed by the moderators of %{instance}. Future violations may result in harsher punitive actions against your account. + delete_statuses: Some of your posts have been found to violate one or more community guidelines and have been subsequently removed by the moderators of %{instance}. disable: You can no longer use your account, but your profile and other data remains intact. You can request a backup of your data, change account settings or delete your account. mark_statuses_as_sensitive: Some of your posts have been marked as sensitive by the moderators of %{instance}. This means that people will need to tap the media in the posts before a preview is displayed. You can mark media as sensitive yourself when posting in the future. sensitive: From now on, all your uploaded media files will be marked as sensitive and hidden behind a click-through warning. From 7f998ba94db5d4199967d6b6b641bdbb7983593a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 16:48:58 +0100 Subject: [PATCH 006/143] [Glitch] Change authorized applications page Port SCSS changes from 50ea54b3ed125477656893a67d9f552bb53e8ba5 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/admin.scss | 10 +++ .../flavours/glitch/styles/containers.scss | 13 ++-- .../flavours/glitch/styles/forms.scss | 71 ++++++++++++++++++- 3 files changed, 84 insertions(+), 10 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index fa47d19d7..ec5f68d4e 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -923,6 +923,12 @@ a.name-tag, text-decoration: none; margin-bottom: 10px; + .account-role { + vertical-align: middle; + } + } + + a.announcements-list__item__title { &:hover, &:focus, &:active { @@ -941,6 +947,10 @@ a.name-tag, align-items: center; } + &__permissions { + margin-top: 10px; + } + &:last-child { border-bottom: 0; } diff --git a/app/javascript/flavours/glitch/styles/containers.scss b/app/javascript/flavours/glitch/styles/containers.scss index eb72eab28..eb82157c8 100644 --- a/app/javascript/flavours/glitch/styles/containers.scss +++ b/app/javascript/flavours/glitch/styles/containers.scss @@ -1,7 +1,6 @@ .container-alt { width: 700px; margin: 0 auto; - margin-top: 40px; @media screen and (max-width: 740px) { width: 100%; @@ -67,23 +66,21 @@ line-height: 18px; box-sizing: border-box; padding: 20px 0; - padding-bottom: 0; - margin-bottom: -30px; margin-top: 40px; + margin-bottom: 10px; + border-bottom: 1px solid $ui-base-color; @media screen and (max-width: 440px) { width: 100%; margin: 0; - margin-bottom: 10px; padding: 20px; - padding-bottom: 0; } .avatar { width: 40px; height: 40px; @include avatar-size(40px); - margin-right: 8px; + margin-right: 10px; img { width: 100%; @@ -98,7 +95,7 @@ .name { flex: 1 1 auto; color: $secondary-text-color; - width: calc(100% - 88px); + width: calc(100% - 90px); .username { display: block; @@ -112,7 +109,7 @@ display: block; font-size: 32px; line-height: 40px; - margin-left: 8px; + margin-left: 10px; } } diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 64d441fb2..b108e5ce2 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -791,9 +791,41 @@ code { } } } +} - @media screen and (max-width: 740px) and (min-width: 441px) { - margin-top: 40px; +.oauth-prompt { + h3 { + color: $ui-secondary-color; + font-size: 17px; + line-height: 22px; + font-weight: 500; + margin-bottom: 30px; + } + + p { + font-size: 14px; + line-height: 18px; + margin-bottom: 30px; + } + + .permissions-list { + border: 1px solid $ui-base-color; + border-radius: 4px; + background: darken($ui-base-color, 4%); + margin-bottom: 30px; + } + + .actions { + margin: 0 -10px; + display: flex; + + form { + box-sizing: border-box; + padding: 0 10px; + flex: 1 1 auto; + min-height: 1px; + width: 50%; + } } } @@ -1062,3 +1094,38 @@ code { .simple_form .h-captcha { text-align: center; } + +.permissions-list { + &__item { + padding: 15px; + color: $ui-secondary-color; + border-bottom: 1px solid lighten($ui-base-color, 4%); + display: flex; + align-items: center; + + &__text { + flex: 1 1 auto; + + &__title { + font-weight: 500; + } + + &__type { + color: $darker-text-color; + } + } + + &__icon { + flex: 0 0 auto; + font-size: 18px; + width: 30px; + color: $valid-value-color; + display: flex; + align-items: center; + } + + &:last-child { + border-bottom: 0; + } + } +} From 78781793d5ab370829d7eaee4b8d21994f84763c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 22:20:29 +0100 Subject: [PATCH 007/143] [Glitch] Add ability to mark statuses as sensitive from reports in admin UI Port SCSS changes from 25d3dc4373531071f444d8e44e44cd21970cb373 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/admin.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index ec5f68d4e..ea9d04e82 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -1520,6 +1520,8 @@ a.sparkline { word-wrap: break-word; font-weight: 400; color: $primary-text-color; + box-sizing: border-box; + min-height: 100%; p { margin-bottom: 20px; From 02b8d63fcef2d30e2514111ec89308a9435dd2ed Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 2 Mar 2022 18:57:08 +0100 Subject: [PATCH 008/143] Fix report category not being saved in REST API (#17682) --- app/controllers/api/v1/reports_controller.rb | 12 +---- app/services/report_service.rb | 14 +++-- .../api/v1/reports_controller_spec.rb | 54 ++++++++++++++++--- spec/fabricators/rule_fabricator.rb | 8 +-- 4 files changed, 62 insertions(+), 26 deletions(-) diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb index 052d70cc8..8ff6c8fe5 100644 --- a/app/controllers/api/v1/reports_controller.rb +++ b/app/controllers/api/v1/reports_controller.rb @@ -10,9 +10,7 @@ class Api::V1::ReportsController < Api::BaseController @report = ReportService.new.call( current_account, reported_account, - status_ids: reported_status_ids, - comment: report_params[:comment], - forward: report_params[:forward] + report_params ) render json: @report, serializer: REST::ReportSerializer @@ -20,14 +18,6 @@ class Api::V1::ReportsController < Api::BaseController private - def reported_status_ids - reported_account.statuses.with_discarded.find(status_ids).pluck(:id) - end - - def status_ids - Array(report_params[:status_ids]) - end - def reported_account Account.find(report_params[:account_id]) end diff --git a/app/services/report_service.rb b/app/services/report_service.rb index caf99ab6e..9d784c341 100644 --- a/app/services/report_service.rb +++ b/app/services/report_service.rb @@ -6,10 +6,10 @@ class ReportService < BaseService def call(source_account, target_account, options = {}) @source_account = source_account @target_account = target_account - @status_ids = options.delete(:status_ids) || [] - @comment = options.delete(:comment) || '' - @category = options.delete(:category) || 'other' - @rule_ids = options.delete(:rule_ids) + @status_ids = options.delete(:status_ids).presence || [] + @comment = options.delete(:comment).presence || '' + @category = options.delete(:category).presence || 'other' + @rule_ids = options.delete(:rule_ids).presence @options = options raise ActiveRecord::RecordNotFound if @target_account.suspended? @@ -26,7 +26,7 @@ class ReportService < BaseService def create_report! @report = @source_account.reports.create!( target_account: @target_account, - status_ids: @status_ids, + status_ids: reported_status_ids, comment: @comment, uri: @options[:uri], forwarded: forward?, @@ -56,6 +56,10 @@ class ReportService < BaseService !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward]) end + def reported_status_ids + @target_account.statuses.with_discarded.find(Array(@status_ids)).pluck(:id) + end + def payload Oj.dump(serialize_payload(@report, ActivityPub::FlagSerializer, account: some_local_account)) end diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb index a13de1370..b5baf60e1 100644 --- a/spec/controllers/api/v1/reports_controller_spec.rb +++ b/spec/controllers/api/v1/reports_controller_spec.rb @@ -13,22 +13,64 @@ RSpec.describe Api::V1::ReportsController, type: :controller do end describe 'POST #create' do - let(:scopes) { 'write:reports' } - let!(:status) { Fabricate(:status) } - let!(:admin) { Fabricate(:user, admin: true) } + let!(:admin) { Fabricate(:user, admin: true) } + + let(:scopes) { 'write:reports' } + let(:status) { Fabricate(:status) } + let(:target_account) { status.account } + let(:category) { nil } + let(:forward) { nil } + let(:rule_ids){ nil } before do allow(AdminMailer).to receive(:new_report).and_return(double('email', deliver_later: nil)) - post :create, params: { status_ids: [status.id], account_id: status.account.id, comment: 'reasons' } + post :create, params: { status_ids: [status.id], account_id: target_account.id, comment: 'reasons', category: category, rule_ids: rule_ids, forward: forward } end - it 'creates a report' do - expect(status.reload.account.targeted_reports).not_to be_empty + it 'returns http success' do expect(response).to have_http_status(200) end + it 'creates a report' do + expect(target_account.targeted_reports).to_not be_empty + end + + it 'saves comment' do + expect(target_account.targeted_reports.first.comment).to eq 'reasons' + end + it 'sends e-mails to admins' do expect(AdminMailer).to have_received(:new_report).with(admin.account, Report) end + + context 'when a status does not belong to the reported account' do + let(:target_account) { Fabricate(:account) } + + it 'returns http not found' do + expect(response).to have_http_status(404) + end + end + + context 'when a category is chosen' do + let(:category) { 'spam' } + + it 'saves category' do + expect(target_account.targeted_reports.first.spam?).to be true + end + end + + context 'when violated rules are chosen' do + let(:rule) { Fabricate(:rule) } + let(:category) { 'violation' } + let(:rule_ids) { [rule.id] } + + it 'saves category' do + expect(target_account.targeted_reports.first.violation?).to be true + end + + it 'saves rule_ids' do + expect(target_account.targeted_reports.first.rule_ids).to match_array([rule.id]) + end + end end end diff --git a/spec/fabricators/rule_fabricator.rb b/spec/fabricators/rule_fabricator.rb index 4bdfd05e0..bc29bc48e 100644 --- a/spec/fabricators/rule_fabricator.rb +++ b/spec/fabricators/rule_fabricator.rb @@ -1,5 +1,5 @@ Fabricator(:rule) do - priority "" - deleted_at "2021-02-21 05:51:09" - text "MyText" -end \ No newline at end of file + priority 0 + deleted_at nil + text { Faker::Lorem.paragraph } +end From e24b14cc74034585b29ca92bbb9623df32328bf3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 2 Mar 2022 18:57:26 +0100 Subject: [PATCH 009/143] Fix leak of existence of otherwise inaccessible statuses in REST API (#17684) --- app/controllers/api/v1/statuses_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 2d82a7a99..f48aeb945 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -92,8 +92,9 @@ class Api::V1::StatusesController < Api::BaseController end def set_thread - @thread = status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]) - rescue ActiveRecord::RecordNotFound + @thread = Status.find(status_params[:in_reply_to_id]) if status_params[:in_reply_to_id].present? + authorize(@thread, :show?) if @thread.present? + rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError render json: { error: I18n.t('statuses.errors.in_reply_not_found') }, status: 404 end From 9b58fb1ea4036daca945cb524e674446adb9ac42 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 2 Mar 2022 18:57:44 +0100 Subject: [PATCH 010/143] Add descriptions to trending features in admin UI (#17677) --- app/views/admin/trends/links/index.html.haml | 4 ++++ .../trends/links/preview_card_providers/index.html.haml | 5 ++++- app/views/admin/trends/statuses/_status.html.haml | 3 +++ app/views/admin/trends/statuses/index.html.haml | 4 ++++ app/views/admin/trends/tags/index.html.haml | 4 ++++ config/locales/en.yml | 5 +++++ 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/views/admin/trends/links/index.html.haml b/app/views/admin/trends/links/index.html.haml index 79f3513d3..49a53d979 100644 --- a/app/views/admin/trends/links/index.html.haml +++ b/app/views/admin/trends/links/index.html.haml @@ -4,6 +4,10 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' +%p= t('admin.trends.links.description_html') + +%hr.spacer/ + = form_tag admin_trends_links_path, method: 'GET', class: 'simple_form' do - Trends::PreviewCardFilter::KEYS.each do |key| = hidden_field_tag key, params[key] if params[key].present? diff --git a/app/views/admin/trends/links/preview_card_providers/index.html.haml b/app/views/admin/trends/links/preview_card_providers/index.html.haml index b79349947..c3648c35e 100644 --- a/app/views/admin/trends/links/preview_card_providers/index.html.haml +++ b/app/views/admin/trends/links/preview_card_providers/index.html.haml @@ -4,6 +4,10 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' +%p= t('admin.trends.preview_card_providers.description_html') + +%hr.spacer/ + .filters .filter-subset %strong= t('admin.tags.review') @@ -17,7 +21,6 @@ = fa_icon 'chevron-left fw' = t('admin.trends.links.title') - %hr.spacer/ = form_for(@form, url: batch_admin_trends_links_preview_card_providers_path) do |f| diff --git a/app/views/admin/trends/statuses/_status.html.haml b/app/views/admin/trends/statuses/_status.html.haml index c99ee5d60..edb27b9ff 100644 --- a/app/views/admin/trends/statuses/_status.html.haml +++ b/app/views/admin/trends/statuses/_status.html.haml @@ -22,6 +22,9 @@ - if status.language.present? • = standard_locale_name(status.language) + - if status.trendable? && !status.account.discoverable? + • + = t('admin.trends.statuses.not_discoverable') - if status.trendable? && (rank = Trends.statuses.rank(status.id)) • %abbr{ title: t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id)) }= t('admin.trends.tags.trending_rank', rank: rank + 1) diff --git a/app/views/admin/trends/statuses/index.html.haml b/app/views/admin/trends/statuses/index.html.haml index 347688262..b0059b20d 100644 --- a/app/views/admin/trends/statuses/index.html.haml +++ b/app/views/admin/trends/statuses/index.html.haml @@ -4,6 +4,10 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' +%p= t('admin.trends.statuses.description_html') + +%hr.spacer/ + = form_tag admin_trends_statuses_path, method: 'GET', class: 'simple_form' do - Trends::StatusFilter::KEYS.each do |key| = hidden_field_tag key, params[key] if params[key].present? diff --git a/app/views/admin/trends/tags/index.html.haml b/app/views/admin/trends/tags/index.html.haml index 8a2f785bc..bde32a295 100644 --- a/app/views/admin/trends/tags/index.html.haml +++ b/app/views/admin/trends/tags/index.html.haml @@ -4,6 +4,10 @@ - content_for :header_tags do = javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous' +%p= t('admin.trends.tags.description_html') + +%hr.spacer/ + .filters .filter-subset %strong= t('admin.tags.review') diff --git a/config/locales/en.yml b/config/locales/en.yml index 5ce43be1a..6a5594185 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -777,6 +777,7 @@ en: links: allow: Allow link allow_provider: Allow publisher + description_html: These are links that are currently being shared a lot by accounts that your server sees posts from. It can help your users find out what's going on in the world. No links are displayed publicly until you approve the publisher. You can also allow or reject individual links. disallow: Disallow link disallow_provider: Disallow publisher shared_by_over_week: @@ -788,14 +789,17 @@ en: pending_review: Pending review preview_card_providers: allowed: Links from this publisher can trend + description_html: These are domains from which links are often shared on your server. Links will not trend publicly unless the domain of the link is approved. Your approval (or rejection) extends to subdomains. rejected: Links from this publisher won't trend title: Publishers rejected: Rejected statuses: allow: Allow post allow_account: Allow author + description_html: These are posts that your server knows about that are currently being shared and favourited a lot at the moment. It can help your new and returning users to find more people to follow. No posts are displayed publicly until you approve the author, and the author allows their account to be suggested to others. You can also allow or reject individual posts. disallow: Disallow post disallow_account: Disallow author + not_discoverable: Author has not opted-in to being discoverable shared_by: one: Shared or favourited one time other: Shared and favourited %{friendly_count} times @@ -808,6 +812,7 @@ en: tag_servers_dimension: Top servers tag_servers_measure: different servers tag_uses_measure: total uses + description_html: These are hashtags that are currently appearing in a lot of posts that your server sees. It can help your users find out what people are talking the most about at the moment. No hashtags are displayed publicly until you approve them. listable: Can be suggested not_listable: Won't be suggested not_trendable: Won't appear under trends From c0c4b5718d8827fc59d5564c227e848547a2cb69 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Mar 2022 20:28:25 +0100 Subject: [PATCH 011/143] Change visual separation of applications in authorized apps list (#17686) --- app/javascript/styles/mastodon/admin.scss | 8 ++++++++ app/javascript/styles/mastodon/forms.scss | 1 + app/views/oauth/authorized_applications/index.html.haml | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 52bc2086a..06ec4d37b 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -888,6 +888,14 @@ a.name-tag, text-align: center; } +.applications-list__item { + padding: 15px 0; + background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 4%); + border-radius: 4px; + margin-top: 15px; +} + .announcements-list { border: 1px solid lighten($ui-base-color, 4%); border-radius: 4px; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 6e02e2332..90d56b075 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -1069,6 +1069,7 @@ code { &:last-child { border-bottom: 0; + padding-bottom: 0; } } } diff --git a/app/views/oauth/authorized_applications/index.html.haml b/app/views/oauth/authorized_applications/index.html.haml index fead56f4a..0280d8aef 100644 --- a/app/views/oauth/authorized_applications/index.html.haml +++ b/app/views/oauth/authorized_applications/index.html.haml @@ -5,9 +5,9 @@ %hr.spacer/ -.announcements-list +.applications-list - @applications.each do |application| - .announcements-list__item + .applications-list__item - if application.website.present? = link_to application.name, application.website, target: '_blank', rel: 'noopener noreferrer', class: 'announcements-list__item__title' - else From c69d94ef7e13360e502635fc8bb1bbf8e13dfd74 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 2 Mar 2022 20:28:25 +0100 Subject: [PATCH 012/143] [Glitch] Change visual separation of applications in authorized apps list Port SCSS changes from c0c4b5718d8827fc59d5564c227e848547a2cb69 to glitch-soc Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/admin.scss | 8 ++++++++ app/javascript/flavours/glitch/styles/forms.scss | 1 + 2 files changed, 9 insertions(+) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index ea9d04e82..73414785c 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -904,6 +904,14 @@ a.name-tag, text-align: center; } +.applications-list__item { + padding: 15px 0; + background: $ui-base-color; + border: 1px solid lighten($ui-base-color, 4%); + border-radius: 4px; + margin-top: 15px; +} + .announcements-list { border: 1px solid lighten($ui-base-color, 4%); border-radius: 4px; diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index b108e5ce2..e36fab8fa 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -1126,6 +1126,7 @@ code { &:last-child { border-bottom: 0; + padding-bottom: 0; } } } From 54d4ece7432a34a2ba24617851f04801e5a389d8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 3 Mar 2022 06:45:30 +0100 Subject: [PATCH 013/143] Remove profile directory link from main navigation panel (#17688) --- .../mastodon/features/getting_started/index.js | 17 +---------------- .../features/ui/components/link_footer.js | 3 ++- .../features/ui/components/navigation_panel.js | 3 +-- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 5508adb80..07572c530 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -7,7 +7,7 @@ import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { me, profile_directory, showTrends } from '../../initial_state'; +import { me, showTrends } from '../../initial_state'; import { fetchFollowRequests } from 'mastodon/actions/accounts'; import { List as ImmutableList } from 'immutable'; import NavigationContainer from '../compose/containers/navigation_container'; @@ -35,7 +35,6 @@ const messages = defineMessages({ personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, - profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' }, }); const mapStateToProps = state => ({ @@ -104,25 +103,11 @@ class GettingStarted extends ImmutablePureComponent { height += 34 + 48*2; - if (profile_directory) { - navItems.push( - , - ); - - height += 48; - } - navItems.push( , ); height += 34; - } else if (profile_directory) { - navItems.push( - , - ); - - height += 48; } if (multiColumn && !columns.find(item => item.get('id') === 'HOME')) { diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js index 4a9243c9e..edf1104c4 100644 --- a/app/javascript/mastodon/features/ui/components/link_footer.js +++ b/app/javascript/mastodon/features/ui/components/link_footer.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { Link } from 'react-router-dom'; -import { invitesEnabled, limitedFederationMode, version, repository, source_url } from 'mastodon/initial_state'; +import { invitesEnabled, limitedFederationMode, version, repository, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state'; import { logOut } from 'mastodon/utils/log_out'; import { openModal } from 'mastodon/actions/modal'; @@ -52,6 +52,7 @@ class LinkFooter extends React.PureComponent { {withHotkeys &&
  • ·
  • }
  • ·
  • {!limitedFederationMode &&
  • ·
  • } + {profileDirectory &&
  • ·
  • }
  • ·
  • ·
  • ·
  • diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index a70e5ab61..51a0757bc 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -2,7 +2,7 @@ import React from 'react'; import { NavLink, withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; import Icon from 'mastodon/components/icon'; -import { profile_directory, showTrends } from 'mastodon/initial_state'; +import { showTrends } from 'mastodon/initial_state'; import NotificationsCounterIcon from './notifications_counter_icon'; import FollowRequestsNavLink from './follow_requests_nav_link'; import ListPanel from './list_panel'; @@ -20,7 +20,6 @@ const NavigationPanel = () => ( - {profile_directory && } From 085f286750e50fe7dca4f005cefac48da0eda7cd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 3 Mar 2022 06:45:46 +0100 Subject: [PATCH 014/143] Fix returning empty `

    ` tag for blank account `note` in REST API (#17687) --- app/lib/formatter.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index 6f02d669a..b6a13163d 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -57,6 +57,8 @@ class Formatter end def simplified_format(account, **options) + return '' if account.note.blank? + html = account.local? ? linkify(account.note) : reformat(account.note) html = encode_custom_emojis(html, account.emojis, options[:autoplay]) if options[:custom_emojify] html.html_safe # rubocop:disable Rails/OutputSafety From 631e495a7900e9638b218474cbc753dd5d2a033e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 3 Mar 2022 16:13:40 +0100 Subject: [PATCH 015/143] Change `follow` scope to be covered by `read` and `write` scopes in REST API (#17678) Deprecate `follow` scope --- app/controllers/api/v1/accounts_controller.rb | 6 +++--- app/controllers/api/v1/blocks_controller.rb | 2 +- app/controllers/api/v1/domain_blocks_controller.rb | 4 ++-- app/controllers/api/v1/follow_requests_controller.rb | 4 ++-- app/controllers/api/v1/mutes_controller.rb | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 5c47158e0..5134bfb94 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -2,9 +2,9 @@ class Api::V1::AccountsController < Api::BaseController before_action -> { authorize_if_got_token! :read, :'read:accounts' }, except: [:create, :follow, :unfollow, :remove_from_followers, :block, :unblock, :mute, :unmute] - before_action -> { doorkeeper_authorize! :follow, :'write:follows' }, only: [:follow, :unfollow, :remove_from_followers] - before_action -> { doorkeeper_authorize! :follow, :'write:mutes' }, only: [:mute, :unmute] - before_action -> { doorkeeper_authorize! :follow, :'write:blocks' }, only: [:block, :unblock] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, only: [:follow, :unfollow, :remove_from_followers] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:mutes' }, only: [:mute, :unmute] + before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, only: [:block, :unblock] before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create] before_action :require_user!, except: [:show, :create] diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb index 586cdfca9..a65e762c9 100644 --- a/app/controllers/api/v1/blocks_controller.rb +++ b/app/controllers/api/v1/blocks_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::BlocksController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:blocks' } + before_action -> { doorkeeper_authorize! :follow, :read, :'read:blocks' } before_action :require_user! after_action :insert_pagination_headers diff --git a/app/controllers/api/v1/domain_blocks_controller.rb b/app/controllers/api/v1/domain_blocks_controller.rb index 5bb02d834..1891261b9 100644 --- a/app/controllers/api/v1/domain_blocks_controller.rb +++ b/app/controllers/api/v1/domain_blocks_controller.rb @@ -3,8 +3,8 @@ class Api::V1::DomainBlocksController < Api::BaseController BLOCK_LIMIT = 100 - before_action -> { doorkeeper_authorize! :follow, :'read:blocks' }, only: :show - before_action -> { doorkeeper_authorize! :follow, :'write:blocks' }, except: :show + before_action -> { doorkeeper_authorize! :follow, :read, :'read:blocks' }, only: :show + before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, except: :show before_action :require_user! after_action :insert_pagination_headers, only: :show diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index f4b2a74d0..8276245a3 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class Api::V1::FollowRequestsController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:follows' }, only: :index - before_action -> { doorkeeper_authorize! :follow, :'write:follows' }, except: :index + before_action -> { doorkeeper_authorize! :follow, :read, :'read:follows' }, only: :index + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, except: :index before_action :require_user! after_action :insert_pagination_headers, only: :index diff --git a/app/controllers/api/v1/mutes_controller.rb b/app/controllers/api/v1/mutes_controller.rb index fd52511d7..6cde53a2a 100644 --- a/app/controllers/api/v1/mutes_controller.rb +++ b/app/controllers/api/v1/mutes_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::MutesController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :'read:mutes' } + before_action -> { doorkeeper_authorize! :follow, :read, :'read:mutes' } before_action :require_user! after_action :insert_pagination_headers From ff43e54a495461eb1a539a1887125190b74754f5 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Mar 2022 16:13:58 +0100 Subject: [PATCH 016/143] Allow editing media attachments for scheduled toots (#17690) Fixes #17676 --- app/controllers/api/v1/media_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/media_controller.rb b/app/controllers/api/v1/media_controller.rb index 72094790f..f9c935bf3 100644 --- a/app/controllers/api/v1/media_controller.rb +++ b/app/controllers/api/v1/media_controller.rb @@ -31,7 +31,7 @@ class Api::V1::MediaController < Api::BaseController end def set_media_attachment - @media_attachment = current_account.media_attachments.unattached.find(params[:id]) + @media_attachment = current_account.media_attachments.where(status_id: nil).find(params[:id]) end def check_processing From 6d3fa7828ea3cddc267f19634d7bc5d917e62be8 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Mar 2022 16:14:44 +0100 Subject: [PATCH 017/143] Redesign /about when already logged in (#17348) * Redesign /about when already logged in * Fix sign up form still showing when OMNIAUTH_ONLY is set * Fix tests * Change wording based on suggestions Co-authored-by: Eugen Rochko Co-authored-by: Eugen Rochko --- app/views/about/_logged_in.html.haml | 10 +++++++++ app/views/about/_registration.html.haml | 28 +++++++++++++++---------- app/views/about/show.html.haml | 5 ++++- config/locales/en.yml | 3 +++ spec/views/about/show.html.haml_spec.rb | 1 + 5 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 app/views/about/_logged_in.html.haml diff --git a/app/views/about/_logged_in.html.haml b/app/views/about/_logged_in.html.haml new file mode 100644 index 000000000..e1bcfffb3 --- /dev/null +++ b/app/views/about/_logged_in.html.haml @@ -0,0 +1,10 @@ +.simple_form + %p.lead= t('about.logged_in_as_html', username: content_tag(:strong, current_account.username)) + + .actions + = link_to t('about.continue_to_web'), root_url, class: 'button button-primary' + +.form-footer + %ul.no-list + %li= link_to t('about.get_apps'), 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener noreferrer' + %li= link_to t('auth.logout'), destroy_user_session_path, data: { method: :delete } diff --git a/app/views/about/_registration.html.haml b/app/views/about/_registration.html.haml index e4d614d71..b452e4936 100644 --- a/app/views/about/_registration.html.haml +++ b/app/views/about/_registration.html.haml @@ -1,17 +1,20 @@ -.simple_form__overlay-area{ class: (closed_registrations? && @instance_presenter.closed_registrations_message.present?) ? 'simple_form__overlay-area__blurred' : '' } +- disabled = closed_registrations? || omniauth_only? || current_account.present? +- show_message = disabled && (current_user.present? || @instance_presenter.closed_registrations_message.present?) + +.simple_form__overlay-area{ class: show_message ? 'simple_form__overlay-area__blurred' : '' } = simple_form_for(new_user, url: user_registration_path, namespace: 'registration', html: { novalidate: false }) do |f| %p.lead= t('about.federation_hint_html', instance: content_tag(:strong, site_hostname)) .fields-group = f.simple_fields_for :account do |account_fields| - = account_fields.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false, disabled: closed_registrations? + = account_fields.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false, disabled: disabled - = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false, disabled: closed_registrations? - = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: closed_registrations? - = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }, hint: false, disabled: closed_registrations? + = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false, disabled: disabled + = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: disabled + = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }, hint: false, disabled: disabled - = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false, disabled: closed_registrations? - = f.input :website, as: :url, placeholder: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' }, hint: false, disabled: closed_registrations? + = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false, disabled: disabled + = f.input :website, as: :url, placeholder: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' }, hint: false, disabled: disabled - if approved_registrations? .fields-group @@ -19,13 +22,16 @@ = invite_request_fields.input :text, as: :text, wrapper: :with_block_label, required: Setting.require_invite_text .fields-group - = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), required: true, disabled: closed_registrations? + = f.input :agreement, as: :boolean, wrapper: :with_label, label: t('auth.checkbox_agreement_html', rules_path: about_more_path, terms_path: terms_path), required: true, disabled: disabled .actions - = f.button :button, sign_up_message, type: :submit, class: 'button button-primary', disabled: closed_registrations? + = f.button :button, sign_up_message, type: :submit, class: 'button button-primary', disabled: disabled - - if closed_registrations? && @instance_presenter.closed_registrations_message.present? + - if show_message .simple_form__overlay-area__overlay .simple_form__overlay-area__overlay__content.rich-formatting .block-icon= fa_icon 'warning' - = @instance_presenter.closed_registrations_message.html_safe + - if current_account.present? + = t('about.logout_before_registering') + - else + = @instance_presenter.closed_registrations_message.html_safe diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 6ae9e6ae0..321440096 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -46,7 +46,10 @@ .landing__grid__column.landing__grid__column-login .box-widget - = render 'login' + - if current_user.present? + = render 'logged_in' + - else + = render 'login' .hero-widget .hero-widget__img diff --git a/config/locales/en.yml b/config/locales/en.yml index 6a5594185..98a07aa6a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -16,6 +16,7 @@ en: contact: Contact contact_missing: Not set contact_unavailable: N/A + continue_to_web: Continue to web app discover_users: Discover users documentation: Documentation federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond. @@ -25,6 +26,8 @@ en: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block. learn_more: Learn more + logged_in_as_html: You are currently logged in as %{username}. + logout_before_registering: You are already logged in. privacy_policy: Privacy policy rules: Server rules rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:' diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb index 1c2f5eee9..4eab97da9 100644 --- a/spec/views/about/show.html.haml_spec.rb +++ b/spec/views/about/show.html.haml_spec.rb @@ -8,6 +8,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do allow(view).to receive(:site_title).and_return('example site') allow(view).to receive(:new_user).and_return(User.new) allow(view).to receive(:use_seamless_external_login?).and_return(false) + allow(view).to receive(:current_account).and_return(nil) end it 'has valid open graph tags' do From 02dbc59c91dbde9bfa67202200f4389971fc815b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 3 Mar 2022 16:18:58 +0100 Subject: [PATCH 018/143] Add option to automatically delete toots after one week (#17691) Fixes #17658 --- app/models/account_statuses_cleanup_policy.rb | 1 + config/locales/en.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/models/account_statuses_cleanup_policy.rb b/app/models/account_statuses_cleanup_policy.rb index 0f78c1a54..365123653 100644 --- a/app/models/account_statuses_cleanup_policy.rb +++ b/app/models/account_statuses_cleanup_policy.rb @@ -23,6 +23,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord include Redisable ALLOWED_MIN_STATUS_AGE = [ + 1.week.seconds, 2.weeks.seconds, 1.month.seconds, 2.months.seconds, diff --git a/config/locales/en.yml b/config/locales/en.yml index 98a07aa6a..2367d5ded 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1487,6 +1487,7 @@ en: '2629746': 1 month '31556952': 1 year '5259492': 2 months + '604800': 1 week '63113904': 2 years '7889238': 3 months min_age_label: Age threshold From 04c3ac896a6054b8158cba06daa9f333f890efd4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Mar 2022 01:00:13 +0100 Subject: [PATCH 019/143] Fix infinite re-forwarding of update activities temporarily (#17698) --- app/lib/activitypub/activity/update.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/lib/activitypub/activity/update.rb b/app/lib/activitypub/activity/update.rb index 0bfead55b..36ad5f446 100644 --- a/app/lib/activitypub/activity/update.rb +++ b/app/lib/activitypub/activity/update.rb @@ -26,11 +26,6 @@ class ActivityPub::Activity::Update < ActivityPub::Activity return if @status.nil? - forwarder.forward! if forwarder.forwardable? ActivityPub::ProcessStatusUpdateService.new.call(@status, @object) end - - def forwarder - @forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status) - end end From 2ea754b8610b50cc93aeb1921ecdf7415efaf17e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Mar 2022 01:06:33 +0100 Subject: [PATCH 020/143] Fix duplicate notifications being possible after poll expiration (#17697) --- app/controllers/api/v1/follow_requests_controller.rb | 2 +- app/lib/activitypub/activity/announce.rb | 2 +- app/lib/activitypub/activity/follow.rb | 4 ++-- app/lib/activitypub/activity/like.rb | 2 +- app/services/bootstrap_timeline_service.rb | 2 +- app/services/favourite_service.rb | 2 +- app/workers/feed_insert_worker.rb | 2 +- app/workers/poll_expiration_notify_worker.rb | 8 +++++--- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index 8276245a3..54ff0e11d 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -13,7 +13,7 @@ class Api::V1::FollowRequestsController < Api::BaseController def authorize AuthorizeFollowService.new.call(account, current_account) - NotifyService.new.call(current_account, :follow, Follow.find_by(account: account, target_account: current_account)) + LocalNotificationWorker.perform_async(current_account.id, Follow.find_by(account: account, target_account: current_account).id, 'Follow', 'follow') render json: account, serializer: REST::RelationshipSerializer, relationships: relationships end diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb index 7cd5a41e8..0674b1083 100644 --- a/app/lib/activitypub/activity/announce.rb +++ b/app/lib/activitypub/activity/announce.rb @@ -35,7 +35,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity def distribute # Notify the author of the original status if that status is local - NotifyService.new.call(@status.reblog.account, :reblog, @status) if reblog_of_local_account?(@status) && !reblog_by_following_group_account?(@status) + LocalNotificationWorker.perform_async(@status.reblog.account_id, @status.id, 'Status', 'reblog') if reblog_of_local_account?(@status) && !reblog_by_following_group_account?(@status) # Distribute into home and list feeds ::DistributionWorker.perform_async(@status.id) if @options[:override_timestamps] || @status.within_realtime_window? diff --git a/app/lib/activitypub/activity/follow.rb b/app/lib/activitypub/activity/follow.rb index 4efb84b8c..97e41ab78 100644 --- a/app/lib/activitypub/activity/follow.rb +++ b/app/lib/activitypub/activity/follow.rb @@ -31,10 +31,10 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity follow_request = FollowRequest.create!(account: @account, target_account: target_account, uri: @json['id']) if target_account.locked? || @account.silenced? - NotifyService.new.call(target_account, :follow_request, follow_request) + LocalNotificationWorker.perform_async(target_account.id, follow_request.id, 'FollowRequest', 'follow_request') else AuthorizeFollowService.new.call(@account, target_account) - NotifyService.new.call(target_account, :follow, ::Follow.find_by(account: @account, target_account: target_account)) + LocalNotificationWorker.perform_async(target_account.id, ::Follow.find_by(account: @account, target_account: target_account).id, 'Follow', 'follow') end end diff --git a/app/lib/activitypub/activity/like.rb b/app/lib/activitypub/activity/like.rb index ebbda15b9..aa1dc3040 100644 --- a/app/lib/activitypub/activity/like.rb +++ b/app/lib/activitypub/activity/like.rb @@ -8,7 +8,7 @@ class ActivityPub::Activity::Like < ActivityPub::Activity favourite = original_status.favourites.create!(account: @account) - NotifyService.new.call(original_status.account, :favourite, favourite) + LocalNotificationWorker.perform_async(original_status.account_id, favourite.id, 'Favourite', 'favourite') Trends.statuses.register(original_status) end end diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb index 312c163e4..a02e55a6d 100644 --- a/app/services/bootstrap_timeline_service.rb +++ b/app/services/bootstrap_timeline_service.rb @@ -18,7 +18,7 @@ class BootstrapTimelineService < BaseService def notify_staff! User.staff.includes(:account).find_each do |user| - NotifyService.new.call(user.account, :'admin.sign_up', @source_account) + LocalNotificationWorker.perform_async(user.account_id, @source_account.id, 'Account', 'admin.sign_up') end end end diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb index 0ca0081b4..dc7fe8855 100644 --- a/app/services/favourite_service.rb +++ b/app/services/favourite_service.rb @@ -31,7 +31,7 @@ class FavouriteService < BaseService status = favourite.status if status.account.local? - NotifyService.new.call(status.account, :favourite, favourite) + LocalNotificationWorker.perform_async(status.account_id, favourite.id, 'Favourite', 'favourite') elsif status.account.activitypub? ActivityPub::DeliveryWorker.perform_async(build_json(favourite), favourite.account_id, status.account.inbox_url) end diff --git a/app/workers/feed_insert_worker.rb b/app/workers/feed_insert_worker.rb index 6e3472d57..40bc9cb6e 100644 --- a/app/workers/feed_insert_worker.rb +++ b/app/workers/feed_insert_worker.rb @@ -66,7 +66,7 @@ class FeedInsertWorker end def perform_notify - NotifyService.new.call(@follower, :status, @status) + LocalNotificationWorker.perform_async(@follower.id, @status.id, 'Status', 'status') end def update? diff --git a/app/workers/poll_expiration_notify_worker.rb b/app/workers/poll_expiration_notify_worker.rb index 7613ed5f1..0e29a5f60 100644 --- a/app/workers/poll_expiration_notify_worker.rb +++ b/app/workers/poll_expiration_notify_worker.rb @@ -38,12 +38,14 @@ class PollExpirationNotifyWorker def notify_remote_voters_and_owner! ActivityPub::DistributePollUpdateWorker.perform_async(@poll.status.id) - NotifyService.new.call(@poll.account, :poll, @poll) + LocalNotificationWorker.perform_async(@poll.account_id, @poll.id, 'Poll', 'poll') end def notify_local_voters! - @poll.voters.merge(Account.local).find_each do |account| - NotifyService.new.call(account, :poll, @poll) + @poll.voters.merge(Account.local).select(:id).find_in_batches do |accounts| + LocalNotificationWorker.push_bulk(accounts) do |account| + [account.id, @poll.id, 'Poll', 'poll'] + end end end end From 87a55e2cd67a2af754f5a80282635e789c255e72 Mon Sep 17 00:00:00 2001 From: Mashiro Date: Sat, 5 Mar 2022 12:57:50 +0800 Subject: [PATCH 021/143] Change autocomplete type of password input box (#17702) * Change autocomplete type of password input box * Update _registration.html.haml --- app/views/about/_registration.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/about/_registration.html.haml b/app/views/about/_registration.html.haml index b452e4936..5db620b2d 100644 --- a/app/views/about/_registration.html.haml +++ b/app/views/about/_registration.html.haml @@ -10,8 +10,8 @@ = account_fields.input :username, wrapper: :with_label, label: false, required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username'), :autocomplete => 'off', placeholder: t('simple_form.labels.defaults.username'), pattern: '[a-zA-Z0-9_]+', maxlength: 30 }, append: "@#{site_hostname}", hint: false, disabled: disabled = f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email'), :autocomplete => 'off' }, hint: false, disabled: disabled - = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'off', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: disabled - = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'off' }, hint: false, disabled: disabled + = f.input :password, placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password'), :autocomplete => 'new-password', :minlength => User.password_length.first, :maxlength => User.password_length.last }, hint: false, disabled: disabled + = f.input :password_confirmation, placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password'), :autocomplete => 'new-password' }, hint: false, disabled: disabled = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), :autocomplete => 'off' }, hint: false, disabled: disabled = f.input :website, as: :url, placeholder: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label' => t('simple_form.labels.defaults.honeypot', label: 'Website'), :autocomplete => 'off' }, hint: false, disabled: disabled From b5329e0035d455e72dad7249d88bd624b5cb59a0 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sun, 6 Mar 2022 16:51:40 -0500 Subject: [PATCH 022/143] Spelling (#17705) * spelling: account Signed-off-by: Josh Soref * spelling: affiliated Signed-off-by: Josh Soref * spelling: appearance Signed-off-by: Josh Soref * spelling: autosuggest Signed-off-by: Josh Soref * spelling: cacheable Signed-off-by: Josh Soref * spelling: component Signed-off-by: Josh Soref * spelling: conversations Signed-off-by: Josh Soref * spelling: domain.example Clarify what's distinct and use RFC friendly domain space. Signed-off-by: Josh Soref * spelling: environment Signed-off-by: Josh Soref * spelling: exceeds Signed-off-by: Josh Soref * spelling: functional Signed-off-by: Josh Soref * spelling: inefficiency Signed-off-by: Josh Soref * spelling: not Signed-off-by: Josh Soref * spelling: notifications Signed-off-by: Josh Soref * spelling: occurring Signed-off-by: Josh Soref * spelling: position Signed-off-by: Josh Soref * spelling: progress Signed-off-by: Josh Soref * spelling: promotable Signed-off-by: Josh Soref * spelling: reblogging Signed-off-by: Josh Soref * spelling: repetitive Signed-off-by: Josh Soref * spelling: resolve Signed-off-by: Josh Soref * spelling: saturated Signed-off-by: Josh Soref * spelling: similar Signed-off-by: Josh Soref * spelling: strategies Signed-off-by: Josh Soref * spelling: success Signed-off-by: Josh Soref * spelling: targeting Signed-off-by: Josh Soref * spelling: thumbnails Signed-off-by: Josh Soref * spelling: unauthorized Signed-off-by: Josh Soref * spelling: unsensitizes Signed-off-by: Josh Soref * spelling: validations Signed-off-by: Josh Soref * spelling: various Signed-off-by: Josh Soref Co-authored-by: Josh Soref --- .circleci/config.yml | 2 +- .env.production.sample | 2 +- CHANGELOG.md | 20 +++++++------- .../mastodon/components/scrollable_list.js | 2 +- .../mastodon/containers/media_container.js | 4 +-- .../mastodon/features/report/category.js | 2 +- .../mastodon/features/video/index.js | 4 +-- app/javascript/mastodon/locales/en.json | 2 +- .../styles/mastodon/components.scss | 2 +- app/javascript/styles/mastodon/polls.scss | 2 +- app/policies/user_policy.rb | 4 +-- config/initializers/omniauth.rb | 2 +- config/locales/en_GB.yml | 2 +- .../20170920032311_fix_reblogs_in_feeds.rb | 2 +- ...08213548_reject_following_blocked_users.rb | 6 ++--- lib/mastodon/maintenance_cli.rb | 2 +- lib/mastodon/statuses_cli.rb | 2 +- spec/controllers/accounts_controller_spec.rb | 8 +++--- .../collections_controller_spec.rb | 6 ++--- .../activitypub/outboxes_controller_spec.rb | 6 ++--- .../activitypub/replies_controller_spec.rb | 4 +-- .../api/v1/accounts/notes_controller_spec.rb | 2 +- .../api/v1/admin/accounts_controller_spec.rb | 2 +- .../favourited_by_accounts_controller_spec.rb | 2 +- .../reblogged_by_accounts_controller_spec.rb | 2 +- .../api/v1/statuses_controller_spec.rb | 4 +-- .../application_controller_spec.rb | 20 +++++++------- spec/controllers/statuses_controller_spec.rb | 6 ++--- spec/helpers/application_helper_spec.rb | 2 +- spec/lib/tag_manager_spec.rb | 26 +++++++++---------- spec/models/report_spec.rb | 2 +- spec/policies/user_policy_spec.rb | 4 +-- .../unsuspend_account_service_spec.rb | 16 ++++++------ spec/support/stories/profile_stories.rb | 2 +- 34 files changed, 88 insertions(+), 88 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e157f8f22..318f4d2be 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -153,7 +153,7 @@ jobs: - run: command: ./bin/rails db:migrate name: Run all pre-deployment migrations - evironment: + environment: SKIP_POST_DEPLOYMENT_MIGRATIONS: true - run: command: ./bin/rails db:migrate diff --git a/.env.production.sample b/.env.production.sample index 8eeff3794..4fc58072f 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -58,7 +58,7 @@ SMTP_SERVER=smtp.mailgun.org SMTP_PORT=587 SMTP_LOGIN= SMTP_PASSWORD= -SMTP_FROM_ADDRESS=notificatons@example.com +SMTP_FROM_ADDRESS=notifications@example.com # File storage (optional) # ----------------------- diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e9d6ea1d..d8fde27fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,7 +87,7 @@ All notable changes to this project will be documented in this file. - Fix suspended accounts statuses being merged back into timelines ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16628)) - Fix crash when encountering invalid account fields ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16598)) - Fix invalid blurhash handling for remote activities ([noellabo](https://github.com/mastodon/mastodon/pull/16583)) -- Fix newlines being added to accout notes when an account moves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16415), [noellabo](https://github.com/mastodon/mastodon/pull/16576)) +- Fix newlines being added to account notes when an account moves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16415), [noellabo](https://github.com/mastodon/mastodon/pull/16576)) - Fix crash when creating an announcement with links ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16941)) - Fix logging out from one browser logging out all other sessions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16943)) @@ -420,7 +420,7 @@ All notable changes to this project will be documented in this file. - Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/mastodon/mastodon/pull/14674)) - Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/mastodon/mastodon/pull/14673)) - Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/mastodon/mastodon/pull/14675)) -- Fix inefficieny when deleting accounts ([Gargron](https://github.com/mastodon/mastodon/pull/15387), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15409), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15407), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15402), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15416), [Gargron](https://github.com/mastodon/mastodon/pull/15421)) +- Fix inefficiency when deleting accounts ([Gargron](https://github.com/mastodon/mastodon/pull/15387), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15409), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15407), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15402), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/15416), [Gargron](https://github.com/mastodon/mastodon/pull/15421)) - Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/mastodon/mastodon/pull/14534)) - Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/mastodon/mastodon/pull/15287)) - Fix performance on instances list in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/15282)) @@ -507,7 +507,7 @@ All notable changes to this project will be documented in this file. - Add blurhash to link previews ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13984), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14143), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13985), [Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14267), [Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14278), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14126), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14261), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14260)) - In web UI, toots cannot be marked as sensitive unless there is media attached - However, it's possible to do via API or ActivityPub - - Thumnails of link previews of such posts now use blurhash in web UI + - Thumbnails of link previews of such posts now use blurhash in web UI - The Card entity in REST API has a new `blurhash` attribute - Add support for `summary` field for media description in ActivityPub ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13763)) - Add hints about incomplete remote content to web UI ([Gargron](https://github.com/mastodon/mastodon/pull/14031), [noellabo](https://github.com/mastodon/mastodon/pull/14195)) @@ -530,7 +530,7 @@ All notable changes to this project will be documented in this file. - The `meta` attribute on the Media Attachment entity in REST API can now have a `colors` attribute which in turn contains three hex colors: `background`, `foreground`, and `accent` - The background color is chosen from the most dominant color around the edges of the thumbnail - The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm - - The most satured color of the two is designated as the accent color + - The most saturated color of the two is designated as the accent color - The one with the highest W3C contrast is designated as the foreground color - If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern - Add a visibility indicator to toots in web UI ([noellabo](https://github.com/mastodon/mastodon/pull/14123), [highemerly](https://github.com/mastodon/mastodon/pull/14292)) @@ -556,7 +556,7 @@ All notable changes to this project will be documented in this file. - Change boost button to no longer serve as visibility indicator in web UI ([noellabo](https://github.com/mastodon/mastodon/pull/14132), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14373)) - Change contrast of flash messages ([cchoi12](https://github.com/mastodon/mastodon/pull/13892)) - Change wording from "Hide media" to "Hide image/images" in web UI ([ariasuni](https://github.com/mastodon/mastodon/pull/13834)) -- Change appearence of settings pages to be more consistent ([ariasuni](https://github.com/mastodon/mastodon/pull/13938)) +- Change appearance of settings pages to be more consistent ([ariasuni](https://github.com/mastodon/mastodon/pull/13938)) - Change "Add media" tooltip to not include long list of formats in web UI ([ariasuni](https://github.com/mastodon/mastodon/pull/13954)) - Change how badly contrasting emoji are rendered in web UI ([leo60228](https://github.com/mastodon/mastodon/pull/13773), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13772), [mfmfuyu](https://github.com/mastodon/mastodon/pull/14020), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/14015)) - Change structure of unavailable content section on about page ([ariasuni](https://github.com/mastodon/mastodon/pull/13930)) @@ -578,8 +578,8 @@ All notable changes to this project will be documented in this file. ### Fixed - Fix `following` param not working when exact match is found in account search ([noellabo](https://github.com/mastodon/mastodon/pull/14394)) -- Fix sometimes occuring duplicate mention notifications ([noellabo](https://github.com/mastodon/mastodon/pull/14378)) -- Fix RSS feeds not being cachable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14368)) +- Fix sometimes occurring duplicate mention notifications ([noellabo](https://github.com/mastodon/mastodon/pull/14378)) +- Fix RSS feeds not being cacheable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14368)) - Fix lack of locking around processing of Announce activities in ActivityPub ([noellabo](https://github.com/mastodon/mastodon/pull/14365)) - Fix boosted toots from blocked account not being retroactively removed from TL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/14339)) - Fix large shortened numbers (like 1.2K) using incorrect pluralization ([Sasha-Sorokin](https://github.com/mastodon/mastodon/pull/14061)) @@ -706,7 +706,7 @@ All notable changes to this project will be documented in this file. - Fix poll refresh button not being debounced in web UI ([rasjonell](https://github.com/mastodon/mastodon/pull/13485), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/13490)) - Fix confusing error when failing to add an alias to an unknown account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13480)) - Fix "Email changed" notification sometimes having wrong e-mail ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13475)) -- Fix varioues issues on the account aliases page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13452)) +- Fix various issues on the account aliases page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13452)) - Fix API footer link in web UI ([bubblineyuri](https://github.com/mastodon/mastodon/pull/13441)) - Fix pagination of following, followers, follow requests, blocks and mutes lists in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13445)) - Fix styling of polls in JS-less fallback on public pages ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/13436)) @@ -1496,7 +1496,7 @@ All notable changes to this project will be documented in this file. - Change Docker image to use Ubuntu with jemalloc ([Sir-Boops](https://github.com/mastodon/mastodon/pull/10100), [BenLubar](https://github.com/mastodon/mastodon/pull/10212)) - Change public pages to be cacheable by proxies ([BenLubar](https://github.com/mastodon/mastodon/pull/9059)) - Change the 410 gone response for suspended accounts to be cacheable by proxies ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10339)) -- Change web UI to not not empty timeline of blocked users on block ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10359)) +- Change web UI to not empty timeline of blocked users on block ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/10359)) - Change JSON serializer to remove unused `@context` values ([Gargron](https://github.com/mastodon/mastodon/pull/10378)) - Change GIFV file size limit to be the same as for other videos ([rinsuki](https://github.com/mastodon/mastodon/pull/9924)) - Change Webpack to not use @babel/preset-env to compile node_modules ([ykzts](https://github.com/mastodon/mastodon/pull/10289)) @@ -1673,7 +1673,7 @@ All notable changes to this project will be documented in this file. - Limit maximum visibility of local silenced users to unlisted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9583)) - Change API error message for unconfirmed accounts ([noellabo](https://github.com/mastodon/mastodon/pull/9625)) - Change the icon to "reply-all" when it's a reply to other accounts ([mayaeh](https://github.com/mastodon/mastodon/pull/9378)) -- Do not ignore federated reports targetting already-reported accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9534)) +- Do not ignore federated reports targeting already-reported accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/9534)) - Upgrade default Ruby version to 2.6.0 ([Gargron](https://github.com/mastodon/mastodon/pull/9688)) - Change e-mail digest frequency ([Gargron](https://github.com/mastodon/mastodon/pull/9689)) - Change Docker images for Tor support in docker-compose.yml ([Sir-Boops](https://github.com/mastodon/mastodon/pull/9438)) diff --git a/app/javascript/mastodon/components/scrollable_list.js b/app/javascript/mastodon/components/scrollable_list.js index 68a178512..91d04bf4d 100644 --- a/app/javascript/mastodon/components/scrollable_list.js +++ b/app/javascript/mastodon/components/scrollable_list.js @@ -151,7 +151,7 @@ class ScrollableList extends PureComponent { attachFullscreenListener(this.onFullScreenChange); - // Handle initial scroll posiiton + // Handle initial scroll position this.handleScroll(); } diff --git a/app/javascript/mastodon/containers/media_container.js b/app/javascript/mastodon/containers/media_container.js index 2f42a084f..6ee1f0bd8 100644 --- a/app/javascript/mastodon/containers/media_container.js +++ b/app/javascript/mastodon/containers/media_container.js @@ -43,7 +43,7 @@ export default class MediaContainer extends PureComponent { handleOpenVideo = (options) => { const { components } = this.props; - const { media } = JSON.parse(components[options.componetIndex].getAttribute('data-props')); + const { media } = JSON.parse(components[options.componentIndex].getAttribute('data-props')); const mediaList = fromJS(media); document.body.classList.add('with-modals--active'); @@ -87,7 +87,7 @@ export default class MediaContainer extends PureComponent { ...(hashtag ? { hashtag: fromJS(hashtag) } : {}), ...(componentName === 'Video' ? { - componetIndex: i, + componentIndex: i, onOpenVideo: this.handleOpenVideo, } : { onOpenMedia: this.handleOpenMedia, diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js index 122b51c7c..a36dc81b1 100644 --- a/app/javascript/mastodon/features/report/category.js +++ b/app/javascript/mastodon/features/report/category.js @@ -8,7 +8,7 @@ const messages = defineMessages({ dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, dislike_description: { id: 'report.reasons.dislike_description', defaultMessage: 'It is not something you want to see' }, spam: { id: 'report.reasons.spam', defaultMessage: 'It\'s spam' }, - spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetetive replies' }, + spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetitive replies' }, violation: { id: 'report.reasons.violation', defaultMessage: 'It violates server rules' }, violation_description: { id: 'report.reasons.violation_description', defaultMessage: 'You are aware that it breaks specific rules' }, other: { id: 'report.reasons.other', defaultMessage: 'It\'s something else' }, diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js index 70e3cd6e8..8d47e479a 100644 --- a/app/javascript/mastodon/features/video/index.js +++ b/app/javascript/mastodon/features/video/index.js @@ -121,7 +121,7 @@ class Video extends React.PureComponent { autoPlay: PropTypes.bool, volume: PropTypes.number, muted: PropTypes.bool, - componetIndex: PropTypes.number, + componentIndex: PropTypes.number, }; static defaultProps = { @@ -502,7 +502,7 @@ class Video extends React.PureComponent { startTime: this.video.currentTime, autoPlay: !this.state.paused, defaultVolume: this.state.volume, - componetIndex: this.props.componetIndex, + componentIndex: this.props.componentIndex, }); } diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e87541e28..c3d23795b 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -409,7 +409,7 @@ "report.reasons.other": "It's something else", "report.reasons.other_description": "The issue does not fit into other categories", "report.reasons.spam": "It's spam", - "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies", + "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies", "report.reasons.violation": "It violates server rules", "report.reasons.violation_description": "You are aware that it breaks specific rules", "report.rules.subtitle": "Select all that apply", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 6b18ca6f2..b8c3dba61 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4315,7 +4315,7 @@ a.status-card.compact:hover { } } -.upload-progess__message { +.upload-progress__message { flex: 1 1 auto; } diff --git a/app/javascript/styles/mastodon/polls.scss b/app/javascript/styles/mastodon/polls.scss index e33fc7983..a719044ea 100644 --- a/app/javascript/styles/mastodon/polls.scss +++ b/app/javascript/styles/mastodon/polls.scss @@ -69,7 +69,7 @@ display: none; } - .autossugest-input { + .autosuggest-input { flex: 1 1 auto; } diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb index 6695a0ddf..92e2c4f4b 100644 --- a/app/policies/user_policy.rb +++ b/app/policies/user_policy.rb @@ -42,7 +42,7 @@ class UserPolicy < ApplicationPolicy end def promote? - admin? && promoteable? + admin? && promotable? end def demote? @@ -51,7 +51,7 @@ class UserPolicy < ApplicationPolicy private - def promoteable? + def promotable? record.approved? && (!record.staff? || !record.admin?) end diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 19d59f155..1a041ad48 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -1,5 +1,5 @@ Rails.application.config.middleware.use OmniAuth::Builder do - # Vanilla omniauth stategies + # Vanilla omniauth strategies end Devise.setup do |config| diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index d3461474b..de74e0f61 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -986,7 +986,7 @@ en_GB: enabled: Two-factor authentication is enabled enabled_success: Two-factor authentication successfully enabled generate_recovery_codes: Generate recovery codes - instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in." + instructions_html: "Scan this QR code into Google Authenticator or a similar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in." lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated. manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:' recovery_codes: Backup recovery codes diff --git a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb index bcd4b9137..4ab68e8f3 100644 --- a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb +++ b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb @@ -16,7 +16,7 @@ class FixReblogsInFeeds < ActiveRecord::Migration[5.1] # is once again set to the reblogging status' ID, and the value # is set to the reblogged status' ID). This is safe for Redis' # float conversion because in this reblog tracking zset, we only - # need the rebloggging status' ID to be able to stop tracking + # need the reblogging status' ID to be able to stop tracking # entries after they have gotten too far down the feed, which # does not require an exact value. diff --git a/db/migrate/20180608213548_reject_following_blocked_users.rb b/db/migrate/20180608213548_reject_following_blocked_users.rb index 302db6b68..78f8df538 100644 --- a/db/migrate/20180608213548_reject_following_blocked_users.rb +++ b/db/migrate/20180608213548_reject_following_blocked_users.rb @@ -22,13 +22,13 @@ class RejectFollowingBlockedUsers < ActiveRecord::Migration[5.2] follows.each do |follow| blocked_account = follow.account - followed_acccount = follow.target_account + followed_account = follow.target_account next follow.destroy! if blocked_account.local? - reject_follow_json = Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(follow, serializer: ActivityPub::RejectFollowSerializer, adapter: ActivityPub::Adapter).as_json).sign!(followed_acccount)) + reject_follow_json = Oj.dump(ActivityPub::LinkedDataSignature.new(ActiveModelSerializers::SerializableResource.new(follow, serializer: ActivityPub::RejectFollowSerializer, adapter: ActivityPub::Adapter).as_json).sign!(followed_account)) - ActivityPub::DeliveryWorker.perform_async(reject_follow_json, followed_acccount, blocked_account.inbox_url) + ActivityPub::DeliveryWorker.perform_async(reject_follow_json, followed_account, blocked_account.inbox_url) follow.destroy! end diff --git a/lib/mastodon/maintenance_cli.rb b/lib/mastodon/maintenance_cli.rb index 00861df77..1e047d96c 100644 --- a/lib/mastodon/maintenance_cli.rb +++ b/lib/mastodon/maintenance_cli.rb @@ -510,7 +510,7 @@ module Mastodon accounts = accounts.sort_by(&:id).reverse @prompt.warn "Multiple local accounts were found for username '#{accounts.first.username}'." - @prompt.warn 'All those accounts are distinct accounts but only the most recently-created one is fully-functionnal.' + @prompt.warn 'All those accounts are distinct accounts but only the most recently-created one is fully-functional.' accounts.each_with_index do |account, idx| @prompt.say '%2d. %s: created at: %s; updated at: %s; last logged in at: %s; statuses: %5d; last status at: %s' % [idx, account.username, account.created_at, account.updated_at, account.user&.last_sign_in_at&.to_s || 'N/A', account.account_stat&.statuses_count || 0, account.account_stat&.last_status_at || 'N/A'] diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb index 91b08813b..d4c2e6cf2 100644 --- a/lib/mastodon/statuses_cli.rb +++ b/lib/mastodon/statuses_cli.rb @@ -156,7 +156,7 @@ module Mastodon ActiveRecord::Base.connection.add_index(:statuses, :conversation_id, name: :index_statuses_conversation_id, algorithm: :concurrently, if_not_exists: true) - say('Extract the deletion target from coversations... This might take a while...') + say('Extract the deletion target from conversations... This might take a while...') ActiveRecord::Base.connection.create_table('conversations_to_be_deleted', force: true) diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index 73d124029..662a89927 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -5,7 +5,7 @@ RSpec.describe AccountsController, type: :controller do let(:account) { Fabricate(:account) } - shared_examples 'cachable response' do + shared_examples 'cacheable response' do it 'does not set cookies' do expect(response.cookies).to be_empty expect(response.headers['Set-Cookies']).to be nil @@ -374,7 +374,7 @@ RSpec.describe AccountsController, type: :controller do expect(response.media_type).to eq 'application/activity+json' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'renders account' do json = body_as_json @@ -432,7 +432,7 @@ RSpec.describe AccountsController, type: :controller do expect(response.media_type).to eq 'application/activity+json' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'renders account' do json = body_as_json @@ -499,7 +499,7 @@ RSpec.describe AccountsController, type: :controller do expect(response).to have_http_status(200) end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' end context do diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb index 21a033945..4d87f80ce 100644 --- a/spec/controllers/activitypub/collections_controller_spec.rb +++ b/spec/controllers/activitypub/collections_controller_spec.rb @@ -7,7 +7,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do let!(:private_pinned) { Fabricate(:status, account: account, text: 'secret private stuff', visibility: :private) } let(:remote_account) { nil } - shared_examples 'cachable response' do + shared_examples 'cacheable response' do it 'does not set cookies' do expect(response.cookies).to be_empty expect(response.headers['Set-Cookies']).to be nil @@ -48,7 +48,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do expect(response.media_type).to eq 'application/activity+json' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'returns orderedItems with pinned statuses' do expect(body[:orderedItems]).to be_an Array @@ -101,7 +101,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do expect(response.media_type).to eq 'application/activity+json' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'returns orderedItems with pinned statuses' do json = body_as_json diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb index 1722690db..04f036447 100644 --- a/spec/controllers/activitypub/outboxes_controller_spec.rb +++ b/spec/controllers/activitypub/outboxes_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe ActivityPub::OutboxesController, type: :controller do let!(:account) { Fabricate(:account) } - shared_examples 'cachable response' do + shared_examples 'cacheable response' do it 'does not set cookies' do expect(response.cookies).to be_empty expect(response.headers['Set-Cookies']).to be nil @@ -53,7 +53,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do expect(body[:totalItems]).to eq 4 end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'does not have a Vary header' do expect(response.headers['Vary']).to be_nil @@ -98,7 +98,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do expect(body[:orderedItems].all? { |item| item[:to].include?(ActivityPub::TagManager::COLLECTIONS[:public]) || item[:cc].include?(ActivityPub::TagManager::COLLECTIONS[:public]) }).to be true end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'returns Vary header with Signature' do expect(response.headers['Vary']).to include 'Signature' diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb index a2c7f336f..a35957f24 100644 --- a/spec/controllers/activitypub/replies_controller_spec.rb +++ b/spec/controllers/activitypub/replies_controller_spec.rb @@ -8,7 +8,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do let(:remote_reply_id) { 'https://foobar.com/statuses/1234' } let(:remote_querier) { nil } - shared_examples 'cachable response' do + shared_examples 'cacheable response' do it 'does not set cookies' do expect(response.cookies).to be_empty expect(response.headers['Set-Cookies']).to be nil @@ -93,7 +93,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do expect(response.media_type).to eq 'application/activity+json' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' context 'without only_other_accounts' do it "returns items with thread author's replies" do diff --git a/spec/controllers/api/v1/accounts/notes_controller_spec.rb b/spec/controllers/api/v1/accounts/notes_controller_spec.rb index 47d595c70..42c2d8a86 100644 --- a/spec/controllers/api/v1/accounts/notes_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/notes_controller_spec.rb @@ -31,7 +31,7 @@ describe Api::V1::Accounts::NotesController do end end - context 'when account note exceends allowed length' do + context 'when account note exceeds allowed length' do let(:comment) { 'a' * 2_001 } it 'returns 422' do diff --git a/spec/controllers/api/v1/admin/accounts_controller_spec.rb b/spec/controllers/api/v1/admin/accounts_controller_spec.rb index bf79ee520..3f61bbc0b 100644 --- a/spec/controllers/api/v1/admin/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/admin/accounts_controller_spec.rb @@ -140,7 +140,7 @@ RSpec.describe Api::V1::Admin::AccountsController, type: :controller do expect(response).to have_http_status(200) end - it 'unsensitives account' do + it 'unsensitizes account' do expect(account.reload.sensitized?).to be false end end diff --git a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb index 439a4738d..7cc77f430 100644 --- a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb @@ -56,7 +56,7 @@ RSpec.describe Api::V1::Statuses::FavouritedByAccountsController, type: :control Fabricate(:favourite, status: status) end - it 'returns http unautharized' do + it 'returns http unauthorized' do get :index, params: { status_id: status.id } expect(response).to have_http_status(404) end diff --git a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb index 31320349d..8d4a6f91c 100644 --- a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb +++ b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb @@ -56,7 +56,7 @@ RSpec.describe Api::V1::Statuses::RebloggedByAccountsController, type: :controll Fabricate(:status, reblog_of_id: status.id) end - it 'returns http unautharized' do + it 'returns http unauthorized' do get :index, params: { status_id: status.id } expect(response).to have_http_status(404) end diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb index 190dfad11..2eb30af74 100644 --- a/spec/controllers/api/v1/statuses_controller_spec.rb +++ b/spec/controllers/api/v1/statuses_controller_spec.rb @@ -130,7 +130,7 @@ RSpec.describe Api::V1::StatusesController, type: :controller do let(:status) { Fabricate(:status, account: user.account, visibility: :private) } describe 'GET #show' do - it 'returns http unautharized' do + it 'returns http unauthorized' do get :show, params: { id: status.id } expect(response).to have_http_status(404) end @@ -141,7 +141,7 @@ RSpec.describe Api::V1::StatusesController, type: :controller do Fabricate(:status, account: user.account, thread: status) end - it 'returns http unautharized' do + it 'returns http unauthorized' do get :context, params: { id: status.id } expect(response).to have_http_status(404) end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 0fb4ddbcf..53e163d49 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -187,30 +187,30 @@ describe ApplicationController, type: :controller do controller do before_action :require_admin! - def sucesss + def success head 200 end end before do - routes.draw { get 'sucesss' => 'anonymous#sucesss' } + routes.draw { get 'success' => 'anonymous#success' } end it 'returns a 403 if current user is not admin' do sign_in(Fabricate(:user, admin: false)) - get 'sucesss' + get 'success' expect(response).to have_http_status(403) end it 'returns a 403 if current user is only a moderator' do sign_in(Fabricate(:user, moderator: true)) - get 'sucesss' + get 'success' expect(response).to have_http_status(403) end it 'does nothing if current user is admin' do sign_in(Fabricate(:user, admin: true)) - get 'sucesss' + get 'success' expect(response).to have_http_status(200) end end @@ -219,30 +219,30 @@ describe ApplicationController, type: :controller do controller do before_action :require_staff! - def sucesss + def success head 200 end end before do - routes.draw { get 'sucesss' => 'anonymous#sucesss' } + routes.draw { get 'success' => 'anonymous#success' } end it 'returns a 403 if current user is not admin or moderator' do sign_in(Fabricate(:user, admin: false, moderator: false)) - get 'sucesss' + get 'success' expect(response).to have_http_status(403) end it 'does nothing if current user is moderator' do sign_in(Fabricate(:user, moderator: true)) - get 'sucesss' + get 'success' expect(response).to have_http_status(200) end it 'does nothing if current user is admin' do sign_in(Fabricate(:user, admin: true)) - get 'sucesss' + get 'success' expect(response).to have_http_status(200) end end diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index 9986efa51..05fae67fa 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' describe StatusesController do render_views - shared_examples 'cachable response' do + shared_examples 'cacheable response' do it 'does not set cookies' do expect(response.cookies).to be_empty expect(response.headers['Set-Cookies']).to be nil @@ -108,7 +108,7 @@ describe StatusesController do expect(response.headers['Vary']).to eq 'Accept' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'returns Content-Type header' do expect(response.headers['Content-Type']).to include 'application/activity+json' @@ -496,7 +496,7 @@ describe StatusesController do expect(response.headers['Vary']).to eq 'Accept' end - it_behaves_like 'cachable response' + it_behaves_like 'cacheable response' it 'returns Content-Type header' do expect(response.headers['Content-Type']).to include 'application/activity+json' diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index f09e32ecc..b9d38d8c6 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -60,7 +60,7 @@ describe ApplicationHelper do end describe 'favicon_path' do - it 'returns /favicon.ico on production enviromnent' do + it 'returns /favicon.ico on production environment' do expect(Rails.env).to receive(:production?).and_return(true) expect(helper.favicon_path).to eq '/favicon.ico' end diff --git a/spec/lib/tag_manager_spec.rb b/spec/lib/tag_manager_spec.rb index 2230f9710..cd9fb936c 100644 --- a/spec/lib/tag_manager_spec.rb +++ b/spec/lib/tag_manager_spec.rb @@ -6,7 +6,7 @@ RSpec.describe TagManager do around do |example| original_local_domain = Rails.configuration.x.local_domain - Rails.configuration.x.local_domain = 'domain.test' + Rails.configuration.x.local_domain = 'domain.example.com' example.run @@ -18,11 +18,11 @@ RSpec.describe TagManager do end it 'returns true if the slash-stripped string equals to local domain' do - expect(TagManager.instance.local_domain?('DoMaIn.Test/')).to eq true + expect(TagManager.instance.local_domain?('DoMaIn.Example.com/')).to eq true end it 'returns false for irrelevant string' do - expect(TagManager.instance.local_domain?('DoMaIn.Test!')).to eq false + expect(TagManager.instance.local_domain?('DoMaIn.Example.com!')).to eq false end end @@ -31,7 +31,7 @@ RSpec.describe TagManager do around do |example| original_web_domain = Rails.configuration.x.web_domain - Rails.configuration.x.web_domain = 'domain.test' + Rails.configuration.x.web_domain = 'domain.example.com' example.run @@ -43,11 +43,11 @@ RSpec.describe TagManager do end it 'returns true if the slash-stripped string equals to web domain' do - expect(TagManager.instance.web_domain?('DoMaIn.Test/')).to eq true + expect(TagManager.instance.web_domain?('DoMaIn.Example.com/')).to eq true end it 'returns false for string with irrelevant characters' do - expect(TagManager.instance.web_domain?('DoMaIn.Test!')).to eq false + expect(TagManager.instance.web_domain?('DoMaIn.Example.com!')).to eq false end end @@ -57,7 +57,7 @@ RSpec.describe TagManager do end it 'returns normalized domain' do - expect(TagManager.instance.normalize_domain('DoMaIn.Test/')).to eq 'domain.test' + expect(TagManager.instance.normalize_domain('DoMaIn.Example.com/')).to eq 'domain.example.com' end end @@ -69,18 +69,18 @@ RSpec.describe TagManager do end it 'returns true if the normalized string with port is local URL' do - Rails.configuration.x.web_domain = 'domain.test:42' - expect(TagManager.instance.local_url?('https://DoMaIn.Test:42/')).to eq true + Rails.configuration.x.web_domain = 'domain.example.com:42' + expect(TagManager.instance.local_url?('https://DoMaIn.Example.com:42/')).to eq true end it 'returns true if the normalized string without port is local URL' do - Rails.configuration.x.web_domain = 'domain.test' - expect(TagManager.instance.local_url?('https://DoMaIn.Test/')).to eq true + Rails.configuration.x.web_domain = 'domain.example.com' + expect(TagManager.instance.local_url?('https://DoMaIn.Example.com/')).to eq true end it 'returns false for string with irrelevant characters' do - Rails.configuration.x.web_domain = 'domain.test' - expect(TagManager.instance.local_url?('https://domainn.test/')).to eq false + Rails.configuration.x.web_domain = 'domain.example.com' + expect(TagManager.instance.local_url?('https://domain.example.net/')).to eq false end end end diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 3d29c0219..df32a7c9d 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -119,7 +119,7 @@ describe Report do end end - describe 'validatiions' do + describe 'validations' do it 'has a valid fabricator' do report = Fabricate(:report) report.valid? diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb index 1933ee014..731c041d1 100644 --- a/spec/policies/user_policy_spec.rb +++ b/spec/policies/user_policy_spec.rb @@ -114,13 +114,13 @@ RSpec.describe UserPolicy do permissions :promote? do context 'admin?' do - context 'promoteable?' do + context 'promotable?' do it 'permits' do expect(subject).to permit(admin, john.user) end end - context '!promoteable?' do + context '!promotable?' do it 'denies' do expect(subject).to_not permit(admin, admin.user) end diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index d52cb6cc0..0593beb6f 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -63,20 +63,20 @@ RSpec.describe UnsuspendAccountService, type: :service do describe 'unsuspending a remote account' do include_examples 'common behavior' do let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } - let!(:reslove_account_service) { double } + let!(:resolve_account_service) { double } before do - allow(ResolveAccountService).to receive(:new).and_return(reslove_account_service) + allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service) end context 'when the account is not remotely suspended' do before do - allow(reslove_account_service).to receive(:call).with(account).and_return(account) + allow(resolve_account_service).to receive(:call).with(account).and_return(account) end it 're-fetches the account' do subject.call - expect(reslove_account_service).to have_received(:call).with(account) + expect(resolve_account_service).to have_received(:call).with(account) end it "merges back into local followers' feeds" do @@ -92,7 +92,7 @@ RSpec.describe UnsuspendAccountService, type: :service do context 'when the account is remotely suspended' do before do - allow(reslove_account_service).to receive(:call).with(account) do |account| + allow(resolve_account_service).to receive(:call).with(account) do |account| account.suspend!(origin: :remote) account end @@ -100,7 +100,7 @@ RSpec.describe UnsuspendAccountService, type: :service do it 're-fetches the account' do subject.call - expect(reslove_account_service).to have_received(:call).with(account) + expect(resolve_account_service).to have_received(:call).with(account) end it "does not merge back into local followers' feeds" do @@ -116,12 +116,12 @@ RSpec.describe UnsuspendAccountService, type: :service do context 'when the account is remotely deleted' do before do - allow(reslove_account_service).to receive(:call).with(account).and_return(nil) + allow(resolve_account_service).to receive(:call).with(account).and_return(nil) end it 're-fetches the account' do subject.call - expect(reslove_account_service).to have_received(:call).with(account) + expect(resolve_account_service).to have_received(:call).with(account) end it "does not merge back into local followers' feeds" do diff --git a/spec/support/stories/profile_stories.rb b/spec/support/stories/profile_stories.rb index 75b413330..0c4a14d1c 100644 --- a/spec/support/stories/profile_stories.rb +++ b/spec/support/stories/profile_stories.rb @@ -22,7 +22,7 @@ module ProfileStories def with_alice_as_local_user @alice_bio = '@alice and @bob are fictional characters commonly used as'\ 'placeholder names in #cryptology, as well as #science and'\ - 'engineering 📖 literature. Not affilated with @pepe.' + 'engineering 📖 literature. Not affiliated with @pepe.' @alice = Fabricate( :user, From c439e13e1231acd763b38ea6287b60edf51cadc8 Mon Sep 17 00:00:00 2001 From: Rens Groothuijsen Date: Sun, 6 Mar 2022 23:41:44 +0100 Subject: [PATCH 023/143] Enable importing GIF emojis in CLI (#17706) --- lib/mastodon/emoji_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb index 5bee70ea5..a3e947909 100644 --- a/lib/mastodon/emoji_cli.rb +++ b/lib/mastodon/emoji_cli.rb @@ -41,7 +41,7 @@ module Mastodon Gem::Package::TarReader.new(Zlib::GzipReader.open(path)) do |tar| tar.each do |entry| - next unless entry.file? && entry.full_name.end_with?('.png') + next unless entry.file? && entry.full_name.end_with?('.png', '.gif') filename = File.basename(entry.full_name, '.*') From edf09ec747ebba5a170e27eb13663462a116ec6c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Mar 2022 09:36:47 +0100 Subject: [PATCH 024/143] Add `/api/v1/accounts/familiar_followers` to REST API (#17700) * Add `/api/v1/accounts/familiar_followers` to REST API * Change hide network preference to be stored consistently for local and remote accounts * Add dummy classes to migration * Apply suggestions from code review Co-authored-by: Claire Co-authored-by: Claire --- .../accounts/familiar_followers_controller.rb | 25 ++++++++ .../follower_accounts_controller.rb | 6 +- .../following_accounts_controller.rb | 6 +- .../settings/preferences_controller.rb | 1 - .../settings/profiles_controller.rb | 2 +- app/lib/user_settings_decorator.rb | 5 -- app/models/account.rb | 4 +- app/models/user.rb | 6 +- .../familiar_followers_presenter.rb | 17 ++++++ .../rest/familiar_followers_serializer.rb | 11 ++++ app/views/follower_accounts/index.html.haml | 2 +- app/views/following_accounts/index.html.haml | 2 +- .../settings/preferences/other/show.html.haml | 3 - app/views/settings/profiles/show.html.haml | 5 +- config/locales/simple_form.en.yml | 3 +- config/routes.rb | 1 + config/settings.yml | 1 - ...4195405_migrate_hide_network_preference.rb | 37 ++++++++++++ db/schema.rb | 2 +- .../follower_accounts_controller_spec.rb | 2 +- .../following_accounts_controller_spec.rb | 2 +- .../familiar_followers_presenter_spec.rb | 58 +++++++++++++++++++ 22 files changed, 169 insertions(+), 32 deletions(-) create mode 100644 app/controllers/api/v1/accounts/familiar_followers_controller.rb create mode 100644 app/presenters/familiar_followers_presenter.rb create mode 100644 app/serializers/rest/familiar_followers_serializer.rb create mode 100644 db/migrate/20220304195405_migrate_hide_network_preference.rb create mode 100644 spec/presenters/familiar_followers_presenter_spec.rb diff --git a/app/controllers/api/v1/accounts/familiar_followers_controller.rb b/app/controllers/api/v1/accounts/familiar_followers_controller.rb new file mode 100644 index 000000000..b0bd8018a --- /dev/null +++ b/app/controllers/api/v1/accounts/familiar_followers_controller.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController + before_action -> { doorkeeper_authorize! :read, :'read:follows' } + before_action :require_user! + before_action :set_accounts + + def index + render json: familiar_followers.accounts, each_serializer: REST::FamiliarFollowersSerializer + end + + private + + def set_accounts + @accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact + end + + def familiar_followers + FamiliarFollowersPresenter.new(@accounts, current_user.account_id) + end + + def account_ids + Array(params[:id]).map(&:to_i) + end +end diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index b3589a39f..f3f8336c9 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -15,13 +15,13 @@ class FollowerAccountsController < ApplicationController format.html do expires_in 0, public: true unless user_signed_in? - next if @account.user_hides_network? + next if @account.hide_collections? follows end format.json do - raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network? + raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections? expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) @@ -82,7 +82,7 @@ class FollowerAccountsController < ApplicationController end def restrict_fields_to - if page_requested? || !@account.user_hides_network? + if page_requested? || !@account.hide_collections? # Return all fields else %i(id type total_items) diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 8a72dc475..9d7f4c9bf 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -15,13 +15,13 @@ class FollowingAccountsController < ApplicationController format.html do expires_in 0, public: true unless user_signed_in? - next if @account.user_hides_network? + next if @account.hide_collections? follows end format.json do - raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network? + raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections? expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) @@ -82,7 +82,7 @@ class FollowingAccountsController < ApplicationController end def restrict_fields_to - if page_requested? || !@account.user_hides_network? + if page_requested? || !@account.hide_collections? # Return all fields else %i(id type total_items) diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 32b5d7948..c7492700c 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -47,7 +47,6 @@ class Settings::PreferencesController < Settings::BaseController :setting_system_font_ui, :setting_noindex, :setting_theme, - :setting_hide_network, :setting_aggregate_reblogs, :setting_show_application, :setting_advanced_layout, diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index 0c15447a6..be5b4f302 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController private def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, :hide_collections, fields_attributes: [:name, :value]) end def set_account diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb index e37bc6d9f..de054e403 100644 --- a/app/lib/user_settings_decorator.rb +++ b/app/lib/user_settings_decorator.rb @@ -31,7 +31,6 @@ class UserSettingsDecorator user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui') user.settings['noindex'] = noindex_preference if change?('setting_noindex') user.settings['theme'] = theme_preference if change?('setting_theme') - user.settings['hide_network'] = hide_network_preference if change?('setting_hide_network') user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs') user.settings['show_application'] = show_application_preference if change?('setting_show_application') user.settings['advanced_layout'] = advanced_layout_preference if change?('setting_advanced_layout') @@ -97,10 +96,6 @@ class UserSettingsDecorator boolean_cast_setting 'setting_noindex' end - def hide_network_preference - boolean_cast_setting 'setting_hide_network' - end - def show_application_preference boolean_cast_setting 'setting_show_application' end diff --git a/app/models/account.rb b/app/models/account.rb index dfdf9045f..1717f1605 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -349,11 +349,11 @@ class Account < ApplicationRecord end def hides_followers? - hide_collections? || user_hides_network? + hide_collections? end def hides_following? - hide_collections? || user_hides_network? + hide_collections? end def object_type diff --git a/app/models/user.rb b/app/models/user.rb index bbf850d84..146bdcd2a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -126,7 +126,7 @@ class User < ApplicationRecord has_many :session_activations, dependent: :destroy delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal, - :reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network, + :reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images, :disable_swiping, @@ -273,10 +273,6 @@ class User < ApplicationRecord settings.notification_emails['trending_tag'] end - def hides_network? - @hides_network ||= settings.hide_network - end - def aggregates_reblogs? @aggregates_reblogs ||= settings.aggregate_reblogs end diff --git a/app/presenters/familiar_followers_presenter.rb b/app/presenters/familiar_followers_presenter.rb new file mode 100644 index 000000000..c1d944b80 --- /dev/null +++ b/app/presenters/familiar_followers_presenter.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class FamiliarFollowersPresenter + class Result < ActiveModelSerializers::Model + attributes :id, :accounts + end + + def initialize(accounts, current_account_id) + @accounts = accounts + @current_account_id = current_account_id + end + + def accounts + map = Follow.includes(account: :account_stat).where(target_account_id: @accounts.map(&:id)).where(account_id: Follow.where(account_id: @current_account_id).joins(:target_account).merge(Account.where(hide_collections: [nil, false])).select(:target_account_id)).group_by(&:target_account_id) + @accounts.map { |account| Result.new(id: account.id, accounts: (account.hide_collections? ? [] : (map[account.id] || [])).map(&:account)) } + end +end diff --git a/app/serializers/rest/familiar_followers_serializer.rb b/app/serializers/rest/familiar_followers_serializer.rb new file mode 100644 index 000000000..0a7e923f8 --- /dev/null +++ b/app/serializers/rest/familiar_followers_serializer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class REST::FamiliarFollowersSerializer < ActiveModel::Serializer + attribute :id + + has_many :accounts, serializer: REST::AccountSerializer + + def id + object.id.to_s + end +end diff --git a/app/views/follower_accounts/index.html.haml b/app/views/follower_accounts/index.html.haml index 645dd2de1..92de35a9f 100644 --- a/app/views/follower_accounts/index.html.haml +++ b/app/views/follower_accounts/index.html.haml @@ -7,7 +7,7 @@ = render 'accounts/header', account: @account -- if @account.user_hides_network? +- if @account.hide_collections? .nothing-here= t('accounts.network_hidden') - elsif user_signed_in? && @account.blocking?(current_account) .nothing-here= t('accounts.unavailable') diff --git a/app/views/following_accounts/index.html.haml b/app/views/following_accounts/index.html.haml index 17fe79018..9bb1a9edd 100644 --- a/app/views/following_accounts/index.html.haml +++ b/app/views/following_accounts/index.html.haml @@ -7,7 +7,7 @@ = render 'accounts/header', account: @account -- if @account.user_hides_network? +- if @account.hide_collections? .nothing-here= t('accounts.network_hidden') - elsif user_signed_in? && @account.blocking?(current_account) .nothing-here= t('accounts.unavailable') diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index b7ae3d2ef..44f4af2eb 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -10,9 +10,6 @@ .fields-group = f.input :setting_noindex, as: :boolean, wrapper: :with_label - .fields-group - = f.input :setting_hide_network, as: :boolean, wrapper: :with_label - .fields-group = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index d325a9ea5..fe9666d84 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -30,7 +30,10 @@ = f.input :bot, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.bot') .fields-group - = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t(Setting.profile_directory ? 'simple_form.hints.defaults.discoverable' : 'simple_form.hints.defaults.discoverable_no_directory'), recommended: true + = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable'), recommended: true + + .fields-group + = f.input :hide_collections, as: :boolean, wrapper: :with_label, label: t('simple_form.labels.defaults.setting_hide_network'), hint: t('simple_form.hints.defaults.setting_hide_network') %hr.spacer/ diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index c5e75b408..b19b7891f 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -37,8 +37,7 @@ en: current_password: For security purposes please enter the password of the current account current_username: To confirm, please enter the username of the current account digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence - discoverable: Allow your account to be discovered by strangers through recommendations, profile directory and other features - discoverable_no_directory: Allow your account to be discovered by strangers through recommendations and other features + discoverable: Allow your account to be discovered by strangers through recommendations, trends and other features email: You will be sent a confirmation e-mail fields: You can have up to 4 items displayed as a table on your profile header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px diff --git a/config/routes.rb b/config/routes.rb index 25eb1558f..9e2f7a648 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -493,6 +493,7 @@ Rails.application.routes.draw do resource :search, only: :show, controller: :search resource :lookup, only: :show, controller: :lookup resources :relationships, only: :index + resources :familiar_followers, only: :index end resources :accounts, only: [:create, :show] do diff --git a/config/settings.yml b/config/settings.yml index e63788ba2..06dd2b3f3 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -17,7 +17,6 @@ defaults: &defaults timeline_preview: true show_staff_badge: true default_sensitive: false - hide_network: false unfollow_modal: false boost_modal: false delete_modal: true diff --git a/db/migrate/20220304195405_migrate_hide_network_preference.rb b/db/migrate/20220304195405_migrate_hide_network_preference.rb new file mode 100644 index 000000000..102ee46d6 --- /dev/null +++ b/db/migrate/20220304195405_migrate_hide_network_preference.rb @@ -0,0 +1,37 @@ +class MigrateHideNetworkPreference < ActiveRecord::Migration[6.1] + disable_ddl_transaction! + + # Dummy classes, to make migration possible across version changes + class Account < ApplicationRecord + has_one :user, inverse_of: :account + scope :local, -> { where(domain: nil) } + end + + class User < ApplicationRecord + belongs_to :account + end + + def up + Account.reset_column_information + + Setting.unscoped.where(thing_type: 'User', var: 'hide_network').find_each do |setting| + account = User.find(setting.thing_id).account + + ApplicationRecord.transaction do + account.update(hide_collections: setting.value) + setting.delete + end + rescue ActiveRecord::RecordNotFound + next + end + end + + def down + Account.local.where(hide_collections: true).includes(:user).find_each do |account| + ApplicationRecord.transaction do + Setting.create(thing_type: 'User', thing_id: account.user.id, var: 'hide_network', value: account.hide_collections?) + account.update(hide_collections: nil) + end + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 756e5e9ab..3666804ee 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_02_27_041951) do +ActiveRecord::Schema.define(version: 2022_03_04_195405) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb index eb095cf30..4d2a6e01a 100644 --- a/spec/controllers/follower_accounts_controller_spec.rb +++ b/spec/controllers/follower_accounts_controller_spec.rb @@ -103,7 +103,7 @@ describe FollowerAccountsController do context 'when account hides their network' do before do - alice.user.settings.hide_network = true + alice.update(hide_collections: true) end it 'returns followers count' do diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb index af5ce0787..bb6d221ca 100644 --- a/spec/controllers/following_accounts_controller_spec.rb +++ b/spec/controllers/following_accounts_controller_spec.rb @@ -103,7 +103,7 @@ describe FollowingAccountsController do context 'when account hides their network' do before do - alice.user.settings.hide_network = true + alice.update(hide_collections: true) end it 'returns followers count' do diff --git a/spec/presenters/familiar_followers_presenter_spec.rb b/spec/presenters/familiar_followers_presenter_spec.rb new file mode 100644 index 000000000..17be4b971 --- /dev/null +++ b/spec/presenters/familiar_followers_presenter_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe FamiliarFollowersPresenter do + describe '#accounts' do + let(:account) { Fabricate(:account) } + let(:familiar_follower) { Fabricate(:account) } + let(:requested_accounts) { Fabricate.times(2, :account) } + + subject { described_class.new(requested_accounts, account.id) } + + before do + familiar_follower.follow!(requested_accounts.first) + account.follow!(familiar_follower) + end + + it 'returns a result for each requested account' do + expect(subject.accounts.map(&:id)).to eq requested_accounts.map(&:id) + end + + it 'returns followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to match_array([familiar_follower]) + end + + context 'when requested account hides followers' do + before do + requested_accounts.first.update(hide_collections: true) + end + + it 'does not return followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to be_empty + end + end + + context 'when familiar follower hides follows' do + before do + familiar_follower.update(hide_collections: true) + end + + it 'does not return followers you follow' do + result = subject.accounts.first + + expect(result).to_not be_nil + expect(result.id).to eq requested_accounts.first.id + expect(result.accounts).to be_empty + end + end + end +end From 292c75aa319c877406356a1cb4fb41f4ab597cfd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Mar 2022 11:21:27 +0100 Subject: [PATCH 025/143] Fix nil error when submitting report without `rule_ids` (#17713) --- app/models/report.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/report.rb b/app/models/report.rb index 3dd8a6fdd..8ba2dd8fd 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -129,6 +129,6 @@ class Report < ApplicationRecord def validate_rule_ids return unless violation? - errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids.size + errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids&.size end end From dba4be1038063845a74e83aaa85d6ab08d5625dd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Mar 2022 11:38:52 +0100 Subject: [PATCH 026/143] Change appearance of account cards in web UI (#17689) * Change appearance of account cards in web UI * Various fixes and improvements * Various fixes and improvements --- .../directory/components/account_card.js | 204 +++++++----------- .../mastodon/features/directory/index.js | 10 +- .../mastodon/features/explore/suggestions.js | 8 +- .../styles/mastodon-light/diff.scss | 13 +- app/javascript/styles/mastodon/admin.scss | 50 +++-- .../styles/mastodon/components.scss | 153 ++----------- .../styles/mastodon/containers.scss | 24 +-- app/javascript/styles/mastodon/rtl.scss | 5 - app/views/directories/index.html.haml | 57 +++-- config/locales/en.yml | 1 - 10 files changed, 178 insertions(+), 347 deletions(-) diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js index 03e13f28e..31f59cd84 100644 --- a/app/javascript/mastodon/features/directory/components/account_card.js +++ b/app/javascript/mastodon/features/directory/components/account_card.js @@ -7,31 +7,28 @@ import { makeGetAccount } from 'mastodon/selectors'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; import Permalink from 'mastodon/components/permalink'; -import RelativeTimestamp from 'mastodon/components/relative_timestamp'; -import IconButton from 'mastodon/components/icon_button'; +import Button from 'mastodon/components/button'; import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import { autoPlayGif, me, unfollowModal } from 'mastodon/initial_state'; import ShortNumber from 'mastodon/components/short_number'; import { followAccount, unfollowAccount, - blockAccount, unblockAccount, unmuteAccount, } from 'mastodon/actions/accounts'; import { openModal } from 'mastodon/actions/modal'; -import { initMuteModal } from 'mastodon/actions/mutes'; +import classNames from 'classnames'; const messages = defineMessages({ - follow: { id: 'account.follow', defaultMessage: 'Follow' }, unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, - requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' }, - unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, - unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, - unfollowConfirm: { - id: 'confirmations.unfollow.confirm', - defaultMessage: 'Unfollow', - }, + follow: { id: 'account.follow', defaultMessage: 'Follow' }, + cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' }, + requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' }, + unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' }, + unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' }, + unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, + edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, }); const makeMapStateToProps = () => { @@ -75,18 +72,15 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ onBlock(account) { if (account.getIn(['relationship', 'blocking'])) { dispatch(unblockAccount(account.get('id'))); - } else { - dispatch(blockAccount(account.get('id'))); } }, onMute(account) { if (account.getIn(['relationship', 'muting'])) { dispatch(unmuteAccount(account.get('id'))); - } else { - dispatch(initMuteModal(account)); } }, + }); export default @@ -138,130 +132,92 @@ class AccountCard extends ImmutablePureComponent { handleMute = () => { this.props.onMute(this.props.account); - }; + } + + handleEditProfile = () => { + window.open('/settings/profile', '_blank'); + } render() { const { account, intl } = this.props; - let buttons; - - if ( - account.get('id') !== me && - account.get('relationship', null) !== null - ) { - const following = account.getIn(['relationship', 'following']); - const requested = account.getIn(['relationship', 'requested']); - const blocking = account.getIn(['relationship', 'blocking']); - const muting = account.getIn(['relationship', 'muting']); - - if (requested) { - buttons = ( - - ); - } else if (blocking) { - buttons = ( - - ); - } else if (muting) { - buttons = ( - - ); - } else if (!account.get('moved') || following) { - buttons = ( - - ); + let actionBtn; + + if (me !== account.get('id')) { + if (!account.get('relationship')) { // Wait until the relationship is loaded + actionBtn = ''; + } else if (account.getIn(['relationship', 'requested'])) { + actionBtn = {!isEditingStatus && ()} + + {(media.get('description') || '').length === 0 && ( +

    + +
    + )} )} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index da2492052..d1b36d33b 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -596,30 +596,24 @@ display: flex; align-items: flex-start; justify-content: space-between; - opacity: 0; - transition: opacity .1s ease; + } - .icon-button { - flex: 0 1 auto; - color: $secondary-text-color; - font-size: 14px; - font-weight: 500; - padding: 10px; - font-family: inherit; - - &:hover, - &:focus, - &:active { - color: lighten($secondary-text-color, 7%); - } - } + .icon-button { + flex: 0 1 auto; + color: $secondary-text-color; + font-size: 14px; + font-weight: 500; + padding: 10px; + font-family: inherit; - &.active { - opacity: 1; + &:hover, + &:focus, + &:active { + color: lighten($secondary-text-color, 7%); } } - &-description { + &__warning { position: absolute; z-index: 2; bottom: 0; @@ -627,34 +621,6 @@ right: 0; box-sizing: border-box; background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); - padding: 10px; - opacity: 0; - transition: opacity .1s ease; - - textarea { - background: transparent; - color: $secondary-text-color; - border: 0; - padding: 0; - margin: 0; - width: 100%; - font-family: inherit; - font-size: 14px; - font-weight: 500; - - &:focus { - color: $white; - } - - &::placeholder { - opacity: 0.75; - color: $secondary-text-color; - } - } - - &.active { - opacity: 1; - } } } From 392b367835c3c25e37be7c45e8cd130422de10aa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 10:07:11 +0100 Subject: [PATCH 132/143] Fix IDN domains not being rendered correctly in a few left-over places (#17848) --- app/views/accounts/_moved.html.haml | 4 +- app/views/admin/account_actions/new.html.haml | 4 +- .../_account_warning.html.haml | 2 +- app/views/admin/accounts/show.html.haml | 2 +- app/views/admin/change_emails/show.html.haml | 2 +- .../admin/disputes/appeals/_appeal.html.haml | 2 +- app/views/admin/relationships/index.html.haml | 2 +- app/views/admin/statuses/index.html.haml | 2 +- app/views/admin_mailer/new_report.text.erb | 2 +- .../auth/registrations/_status.html.haml | 2 +- .../authorize_interactions/show.html.haml | 2 +- .../authorize_interactions/success.html.haml | 2 +- .../notification_mailer/_status.html.haml | 2 +- app/views/notification_mailer/digest.text.erb | 2 +- .../notification_mailer/favourite.html.haml | 2 +- .../notification_mailer/favourite.text.erb | 2 +- .../notification_mailer/follow.html.haml | 2 +- app/views/notification_mailer/follow.text.erb | 2 +- .../follow_request.html.haml | 2 +- .../follow_request.text.erb | 2 +- .../notification_mailer/mention.html.haml | 2 +- .../notification_mailer/mention.text.erb | 2 +- .../notification_mailer/reblog.html.haml | 2 +- app/views/notification_mailer/reblog.text.erb | 2 +- app/views/settings/aliases/index.html.haml | 2 +- app/views/settings/migrations/show.html.haml | 4 +- config/brakeman.ignore | 80 ++++++++++++------- 27 files changed, 79 insertions(+), 59 deletions(-) diff --git a/app/views/accounts/_moved.html.haml b/app/views/accounts/_moved.html.haml index 4f71b062d..2f46e0dd0 100644 --- a/app/views/accounts/_moved.html.haml +++ b/app/views/accounts/_moved.html.haml @@ -3,7 +3,7 @@ .moved-account-widget .moved-account-widget__message = fa_icon 'suitcase' - = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.acct)])), ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'mention')) + = t('accounts.moved_html', name: content_tag(:bdi, content_tag(:strong, display_name(account, custom_emojify: true), class: :emojify)), new_profile_link: link_to(content_tag(:strong, safe_join(['@', content_tag(:span, moved_to_account.pretty_acct)])), ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'mention')) .moved-account-widget__card = link_to ActivityPub::TagManager.instance.url_for(moved_to_account), class: 'detailed-status__display-name p-author h-card', target: '_blank', rel: 'me noopener noreferrer' do @@ -17,4 +17,4 @@ %span.display-name %bdi %strong.emojify= display_name(moved_to_account, custom_emojify: true) - %span @#{moved_to_account.acct} + %span @#{moved_to_account.pretty_acct} diff --git a/app/views/admin/account_actions/new.html.haml b/app/views/admin/account_actions/new.html.haml index ca4f9663f..c7bb618df 100644 --- a/app/views/admin/account_actions/new.html.haml +++ b/app/views/admin/account_actions/new.html.haml @@ -1,11 +1,11 @@ - content_for :page_title do - = t('admin.account_actions.title', acct: @account.acct) + = t('admin.account_actions.title', acct: @account.pretty_acct) = simple_form_for @account_action, url: admin_account_action_path(@account.id) do |f| = f.input :report_id, as: :hidden .fields-group - = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')])}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.acct) + = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')])}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.pretty_acct) - if @account.local? %hr.spacer/ diff --git a/app/views/admin/account_warnings/_account_warning.html.haml b/app/views/admin/account_warnings/_account_warning.html.haml index 1462e76d0..030635185 100644 --- a/app/views/admin/account_warnings/_account_warning.html.haml +++ b/app/views/admin/account_warnings/_account_warning.html.haml @@ -5,7 +5,7 @@ = fa_icon 'warning' .log-entry__content .log-entry__title - = t(account_warning.action, scope: 'admin.strikes.actions', name: content_tag(:span, account_warning.account.username, class: 'username'), target: content_tag(:span, account_warning.target_account.acct, class: 'target')).html_safe + = t(account_warning.action, scope: 'admin.strikes.actions', name: content_tag(:span, account_warning.account.username, class: 'username'), target: content_tag(:span, account_warning.target_account.pretty_acct, class: 'target')).html_safe .log-entry__timestamp %time.formatted{ datetime: account_warning.created_at.iso8601 } = l(account_warning.created_at) diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 9a1f07a06..805cf8a4f 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = @account.acct + = @account.pretty_acct - if @account.instance_actor? .flash-message.notice diff --git a/app/views/admin/change_emails/show.html.haml b/app/views/admin/change_emails/show.html.haml index 6ff0d785e..bc00d6114 100644 --- a/app/views/admin/change_emails/show.html.haml +++ b/app/views/admin/change_emails/show.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = t('admin.accounts.change_email.title', username: @account.acct) + = t('admin.accounts.change_email.title', username: @account.username) = simple_form_for @user, url: admin_account_change_email_path(@account.id) do |f| .fields-group diff --git a/app/views/admin/disputes/appeals/_appeal.html.haml b/app/views/admin/disputes/appeals/_appeal.html.haml index 02b8777e1..3f6efb856 100644 --- a/app/views/admin/disputes/appeals/_appeal.html.haml +++ b/app/views/admin/disputes/appeals/_appeal.html.haml @@ -4,7 +4,7 @@ = image_tag appeal.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar' .log-entry__content .log-entry__title - = t(appeal.strike.action, scope: 'admin.strikes.actions', name: content_tag(:span, appeal.strike.account.username, class: 'username'), target: content_tag(:span, appeal.account.acct, class: 'target')).html_safe + = t(appeal.strike.action, scope: 'admin.strikes.actions', name: content_tag(:span, appeal.strike.account.username, class: 'username'), target: content_tag(:span, appeal.account.username, class: 'target')).html_safe .log-entry__timestamp %time.formatted{ datetime: appeal.strike.created_at.iso8601 } = l(appeal.strike.created_at) diff --git a/app/views/admin/relationships/index.html.haml b/app/views/admin/relationships/index.html.haml index 60b9b5b25..f82cf26a3 100644 --- a/app/views/admin/relationships/index.html.haml +++ b/app/views/admin/relationships/index.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = t('admin.relationships.title', acct: @account.acct) + = t('admin.relationships.title', acct: @account.pretty_acct) .filters .filter-subset diff --git a/app/views/admin/statuses/index.html.haml b/app/views/admin/statuses/index.html.haml index 7e2114cc2..d3d7cc160 100644 --- a/app/views/admin/statuses/index.html.haml +++ b/app/views/admin/statuses/index.html.haml @@ -4,7 +4,7 @@ - content_for :page_title do = t('admin.statuses.title') \- - = "@#{@account.acct}" + = "@#{@account.pretty_acct}" .filters .filter-subset diff --git a/app/views/admin_mailer/new_report.text.erb b/app/views/admin_mailer/new_report.text.erb index d6c7d6bab..f8a5224a1 100644 --- a/app/views/admin_mailer/new_report.text.erb +++ b/app/views/admin_mailer/new_report.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw(@report.account.local? ? t('admin_mailer.new_report.body', target: @report.target_account.acct, reporter: @report.account.acct) : t('admin_mailer.new_report.body_remote', target: @report.target_account.acct, domain: @report.account.domain)) %> +<%= raw(@report.account.local? ? t('admin_mailer.new_report.body', target: @report.target_account.pretty_acct, reporter: @report.account.pretty_acct) : t('admin_mailer.new_report.body_remote', target: @report.target_account.acct, domain: @report.account.domain)) %> <%= raw t('application_mailer.view')%> <%= admin_report_url(@report) %> diff --git a/app/views/auth/registrations/_status.html.haml b/app/views/auth/registrations/_status.html.haml index 68954a5da..759bbc41c 100644 --- a/app/views/auth/registrations/_status.html.haml +++ b/app/views/auth/registrations/_status.html.haml @@ -7,7 +7,7 @@ = t('auth.status.pending') - elsif @user.account.moved_to_account_id.present? .flash-message.warning - = t('auth.status.redirecting_to', acct: @user.account.moved_to_account.acct) + = t('auth.status.redirecting_to', acct: @user.account.moved_to_account.pretty_acct) = link_to t('migrations.cancel'), settings_migration_path %h3= t('auth.status.account_status') diff --git a/app/views/authorize_interactions/show.html.haml b/app/views/authorize_interactions/show.html.haml index 42c874134..2b4d2ed62 100644 --- a/app/views/authorize_interactions/show.html.haml +++ b/app/views/authorize_interactions/show.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = t('authorize_follow.title', acct: @resource.acct) + = t('authorize_follow.title', acct: @resource.pretty_acct) .form-container .follow-prompt diff --git a/app/views/authorize_interactions/success.html.haml b/app/views/authorize_interactions/success.html.haml index 47fd09767..86fa55eac 100644 --- a/app/views/authorize_interactions/success.html.haml +++ b/app/views/authorize_interactions/success.html.haml @@ -1,5 +1,5 @@ - content_for :page_title do - = t('authorize_follow.title', acct: @resource.acct) + = t('authorize_follow.title', acct: @resource.pretty_acct) .form-container .follow-prompt diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index f520208e1..219e7e667 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -23,7 +23,7 @@ = image_tag full_asset_url(status.account.avatar.url), alt:'' %td{ align: 'left' } %bdi= display_name(status.account) - = "@#{status.account.acct}" + = "@#{status.account.pretty_acct}" - if status.spoiler_text? %div.auto-dir diff --git a/app/views/notification_mailer/digest.text.erb b/app/views/notification_mailer/digest.text.erb index b2c85a9e3..4cd4190c1 100644 --- a/app/views/notification_mailer/digest.text.erb +++ b/app/views/notification_mailer/digest.text.erb @@ -3,7 +3,7 @@ <%= raw t('notification_mailer.digest.body', since: l(@me.user_current_sign_in_at || @since), instance: root_url) %> <% @notifications.each do |notification| %> -* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.acct) %> +* <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %> <%= raw Formatter.instance.plaintext(notification.target_status) %> diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml index a715d615c..ebc5c29c7 100644 --- a/app/views/notification_mailer/favourite.html.haml +++ b/app/views/notification_mailer/favourite.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt:'' %h1= t 'notification_mailer.favourite.title' - %p.lead= t('notification_mailer.favourite.body', name: @account.acct) + %p.lead= t('notification_mailer.favourite.body', name: @account.pretty_acct) = render 'status', status: @status diff --git a/app/views/notification_mailer/favourite.text.erb b/app/views/notification_mailer/favourite.text.erb index 2581b4909..f4f869656 100644 --- a/app/views/notification_mailer/favourite.text.erb +++ b/app/views/notification_mailer/favourite.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw t('notification_mailer.favourite.body', name: @account.acct) %> +<%= raw t('notification_mailer.favourite.body', name: @account.pretty_acct) %> <%= render 'status', status: @status %> diff --git a/app/views/notification_mailer/follow.html.haml b/app/views/notification_mailer/follow.html.haml index cd84f7858..a59ef8835 100644 --- a/app/views/notification_mailer/follow.html.haml +++ b/app/views/notification_mailer/follow.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_person_add.png'), alt: '' %h1= t 'notification_mailer.follow.title' - %p.lead= t('notification_mailer.follow.body', name: @account.acct) + %p.lead= t('notification_mailer.follow.body', name: @account.pretty_acct) %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/notification_mailer/follow.text.erb b/app/views/notification_mailer/follow.text.erb index cbe46f552..016a0a4cf 100644 --- a/app/views/notification_mailer/follow.text.erb +++ b/app/views/notification_mailer/follow.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw t('notification_mailer.follow.body', name: @account.acct) %> +<%= raw t('notification_mailer.follow.body', name: @account.pretty_acct) %> <%= raw t('application_mailer.view')%> <%= web_url("accounts/#{@account.id}") %> diff --git a/app/views/notification_mailer/follow_request.html.haml b/app/views/notification_mailer/follow_request.html.haml index a63e27a90..4c32c831e 100644 --- a/app/views/notification_mailer/follow_request.html.haml +++ b/app/views/notification_mailer/follow_request.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_person_add.png'), alt: '' %h1= t 'notification_mailer.follow_request.title' - %p.lead= t('notification_mailer.follow_request.body', name: @account.acct) + %p.lead= t('notification_mailer.follow_request.body', name: @account.pretty_acct) %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/notification_mailer/follow_request.text.erb b/app/views/notification_mailer/follow_request.text.erb index a018394b8..66aa97fe3 100644 --- a/app/views/notification_mailer/follow_request.text.erb +++ b/app/views/notification_mailer/follow_request.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw t('notification_mailer.follow_request.body', name: @account.acct) %> +<%= raw t('notification_mailer.follow_request.body', name: @account.pretty_acct) %> <%= raw t('application_mailer.view')%> <%= web_url("follow_requests") %> diff --git a/app/views/notification_mailer/mention.html.haml b/app/views/notification_mailer/mention.html.haml index 619873cfa..cfb7465c1 100644 --- a/app/views/notification_mailer/mention.html.haml +++ b/app/views/notification_mailer/mention.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_reply.png'), alt: '' %h1= t 'notification_mailer.mention.title' - %p.lead= t('notification_mailer.mention.body', name: @status.account.acct) + %p.lead= t('notification_mailer.mention.body', name: @status.account.pretty_acct) = render 'status', status: @status diff --git a/app/views/notification_mailer/mention.text.erb b/app/views/notification_mailer/mention.text.erb index 03f53813b..f104d5f92 100644 --- a/app/views/notification_mailer/mention.text.erb +++ b/app/views/notification_mailer/mention.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw t('notification_mailer.mention.body', name: @status.account.acct) %> +<%= raw t('notification_mailer.mention.body', name: @status.account.pretty_acct) %> <%= render 'status', status: @status %> diff --git a/app/views/notification_mailer/reblog.html.haml b/app/views/notification_mailer/reblog.html.haml index a2811be23..c528536ec 100644 --- a/app/views/notification_mailer/reblog.html.haml +++ b/app/views/notification_mailer/reblog.html.haml @@ -20,7 +20,7 @@ = image_tag full_pack_url('media/images/mailer/icon_cached.png'), alt: '' %h1= t 'notification_mailer.reblog.title' - %p.lead= t('notification_mailer.reblog.body', name: @account.acct) + %p.lead= t('notification_mailer.reblog.body', name: @account.pretty_acct) = render 'status', status: @status diff --git a/app/views/notification_mailer/reblog.text.erb b/app/views/notification_mailer/reblog.text.erb index 8fc841bf6..73a3b3945 100644 --- a/app/views/notification_mailer/reblog.text.erb +++ b/app/views/notification_mailer/reblog.text.erb @@ -1,5 +1,5 @@ <%= raw t('application_mailer.salutation', name: display_name(@me)) %> -<%= raw t('notification_mailer.reblog.body', name: @account.acct) %> +<%= raw t('notification_mailer.reblog.body', name: @account.pretty_acct) %> <%= render 'status', status: @status %> diff --git a/app/views/settings/aliases/index.html.haml b/app/views/settings/aliases/index.html.haml index 5df0c9669..c618a82f1 100644 --- a/app/views/settings/aliases/index.html.haml +++ b/app/views/settings/aliases/index.html.haml @@ -29,5 +29,5 @@ - else - @aliases.each do |account_alias| %tr - %td= account_alias.acct + %td= account_alias.pretty_acct %td= table_link_to 'trash', t('aliases.remove'), settings_alias_path(account_alias), data: { method: :delete } diff --git a/app/views/settings/migrations/show.html.haml b/app/views/settings/migrations/show.html.haml index 078eaebc6..492f6fe12 100644 --- a/app/views/settings/migrations/show.html.haml +++ b/app/views/settings/migrations/show.html.haml @@ -8,7 +8,7 @@ = render 'application/card', account: current_account.moved_to_account .fields-row__column.fields-group.fields-row__column-6 %p.hint - %span.positive-hint= t('migrations.redirecting_to', acct: current_account.moved_to_account.acct) + %span.positive-hint= t('migrations.redirecting_to', acct: current_account.moved_to_account.pretty_acct) %p.hint= t('migrations.cancel_explanation') @@ -76,7 +76,7 @@ - if migration.target_account.present? = compact_account_link_to migration.target_account - else - = migration.acct + = migration.pretty_acct %td= number_with_delimiter migration.followers_count diff --git a/config/brakeman.ignore b/config/brakeman.ignore index c24146da4..80c5f6d4e 100644 --- a/config/brakeman.ignore +++ b/config/brakeman.ignore @@ -7,7 +7,7 @@ "check_name": "SQL", "message": "Possible SQL injection", "file": "app/models/status.rb", - "line": 105, + "line": 106, "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/", "code": "result.joins(\"INNER JOIN statuses_tags t#{id} ON t#{id}.status_id = statuses.id AND t#{id}.tag_id = #{id}\")", "render_path": null, @@ -27,7 +27,7 @@ "check_name": "SQL", "message": "Possible SQL injection", "file": "app/models/trends/query.rb", - "line": 60, + "line": 76, "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/", "code": "klass.joins(\"join unnest(array[#{ids.join(\",\")}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id\")", "render_path": null, @@ -60,6 +60,36 @@ "confidence": "High", "note": "" }, + { + "warning_type": "Cross-Site Scripting", + "warning_code": 2, + "fingerprint": "71cf98c8235b5cfa9946b5db8fdc1a2f3a862566abb34e4542be6f3acae78233", + "check_name": "CrossSiteScripting", + "message": "Unescaped model attribute", + "file": "app/views/admin/disputes/appeals/_appeal.html.haml", + "line": 7, + "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting", + "code": "t((Unresolved Model).new.strike.action, :scope => \"admin.strikes.actions\", :name => content_tag(:span, (Unresolved Model).new.strike.account.username, :class => \"username\"), :target => content_tag(:span, (Unresolved Model).new.account.username, :class => \"target\"))", + "render_path": [ + { + "type": "template", + "name": "admin/disputes/appeals/index", + "line": 20, + "file": "app/views/admin/disputes/appeals/index.html.haml", + "rendered": { + "name": "admin/disputes/appeals/_appeal", + "file": "app/views/admin/disputes/appeals/_appeal.html.haml" + } + } + ], + "location": { + "type": "template", + "template": "admin/disputes/appeals/_appeal" + }, + "user_input": "(Unresolved Model).new.strike", + "confidence": "Weak", + "note": "" + }, { "warning_type": "SQL Injection", "warning_code": 0, @@ -121,33 +151,23 @@ "note": "" }, { - "warning_type": "Cross-Site Scripting", - "warning_code": 2, - "fingerprint": "afad51718ae373b2f19d2513029fd2afccf58b9148e475934bc6a162ee33c352", - "check_name": "CrossSiteScripting", - "message": "Unescaped model attribute", - "file": "app/views/admin/disputes/appeals/_appeal.html.haml", - "line": 7, - "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting", - "code": "t((Unresolved Model).new.strike.action, :scope => \"admin.strikes.actions\", :name => content_tag(:span, (Unresolved Model).new.strike.account.username, :class => \"username\"), :target => content_tag(:span, (Unresolved Model).new.account.acct, :class => \"target\"))", - "render_path": [ - { - "type": "template", - "name": "admin/disputes/appeals/index", - "line": 20, - "file": "app/views/admin/disputes/appeals/index.html.haml", - "rendered": { - "name": "admin/disputes/appeals/_appeal", - "file": "app/views/admin/disputes/appeals/_appeal.html.haml" - } - } - ], + "warning_type": "Mass Assignment", + "warning_code": 105, + "fingerprint": "ab5035dd1a9f8c3a8d92fb2c37e8fe86fede4f87c91b71aa32e89c9eede602fc", + "check_name": "PermitAttributes", + "message": "Potentially dangerous key allowed for mass assignment", + "file": "app/controllers/api/v1/notifications_controller.rb", + "line": 81, + "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/", + "code": "params.permit(:account_id, :types => ([]), :exclude_types => ([]))", + "render_path": null, "location": { - "type": "template", - "template": "admin/disputes/appeals/_appeal" + "type": "method", + "class": "Api::V1::NotificationsController", + "method": "browserable_params" }, - "user_input": "(Unresolved Model).new.strike", - "confidence": "Weak", + "user_input": ":account_id", + "confidence": "High", "note": "" }, { @@ -184,7 +204,7 @@ { "type": "template", "name": "admin/trends/links/index", - "line": 45, + "line": 49, "file": "app/views/admin/trends/links/index.html.haml", "rendered": { "name": "admin/trends/links/_preview_card", @@ -207,7 +227,7 @@ "check_name": "PermitAttributes", "message": "Potentially dangerous key allowed for mass assignment", "file": "app/controllers/api/v1/reports_controller.rb", - "line": 36, + "line": 26, "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/", "code": "params.permit(:account_id, :comment, :category, :forward, :status_ids => ([]), :rule_ids => ([]))", "render_path": null, @@ -221,6 +241,6 @@ "note": "" } ], - "updated": "2022-02-15 03:48:53 +0100", + "updated": "2022-03-22 07:48:32 +0100", "brakeman_version": "5.2.1" } From d5df9d4797eea86a37522c9936228888f69244fd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 11:58:13 +0100 Subject: [PATCH 133/143] Fix wrong position of fade-out element in account card in web UI (#17846) --- app/javascript/styles/mastodon/admin.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index dc4d65edd..68e6d2482 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1306,7 +1306,7 @@ a.sparkline { width: 50px; height: 21px; position: absolute; - bottom: 8px; + bottom: 0; right: 15px; background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; From 410989e081b812d6f025489ab589428f987d26c0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 11:58:25 +0100 Subject: [PATCH 134/143] Change frequency of trends review notifications from 2 hours to 6 hours (#17850) --- config/sidekiq.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sidekiq.yml b/config/sidekiq.yml index c8b1a20dd..f2ae9279b 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -22,7 +22,7 @@ class: Scheduler::EmailDomainBlockRefreshScheduler queue: scheduler trends_review_notifications_scheduler: - every: '2h' + every: '6h' class: Scheduler::Trends::ReviewNotificationsScheduler queue: scheduler media_cleanup_scheduler: From 67d550830b3b1a9a2b65b1ab98ea4bcd491666c5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 12:29:04 +0100 Subject: [PATCH 135/143] Fix locale not being set in REST API (#17847) --- app/controllers/activitypub/base_controller.rb | 1 + app/controllers/api/base_controller.rb | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/activitypub/base_controller.rb b/app/controllers/activitypub/base_controller.rb index 4cbc3ab8f..196d85a32 100644 --- a/app/controllers/activitypub/base_controller.rb +++ b/app/controllers/activitypub/base_controller.rb @@ -2,6 +2,7 @@ class ActivityPub::BaseController < Api::BaseController skip_before_action :require_authenticated_user! + skip_around_action :set_locale private diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 72c30dec7..d96285b44 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -15,8 +15,6 @@ class Api::BaseController < ApplicationController protect_from_forgery with: :null_session - skip_around_action :set_locale - rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e| render json: { error: e.to_s }, status: 422 end From 91e6df70266bd475c3d4ef2b411f42cff805bd47 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 09:48:12 +0100 Subject: [PATCH 136/143] [Glitch] Add hint about missing media attachment description in web UI Port 4e9855e09aa4cc2720fed262ffaa6e0c94cf5688 to glitch-soc Signed-off-by: Claire --- .../features/compose/components/upload.js | 9 ++- .../glitch/styles/components/composer.scss | 63 +++++-------------- .../glitch/styles/mastodon-light/diff.scss | 8 --- 3 files changed, 24 insertions(+), 56 deletions(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/upload.js b/app/javascript/flavours/glitch/features/compose/components/upload.js index 338bfca37..963b95c87 100644 --- a/app/javascript/flavours/glitch/features/compose/components/upload.js +++ b/app/javascript/flavours/glitch/features/compose/components/upload.js @@ -5,7 +5,6 @@ import Motion from 'flavours/glitch/util/optional_motion'; import spring from 'react-motion/lib/spring'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { FormattedMessage } from 'react-intl'; -import classNames from 'classnames'; import Icon from 'flavours/glitch/components/icon'; import { isUserTouching } from 'flavours/glitch/util/is_mobile'; @@ -44,10 +43,16 @@ export default class Upload extends ImmutablePureComponent { {({ scale }) => (
    -
    +
    {!isEditingStatus && ()}
    + + {(media.get('description') || '').length === 0 && ( +
    + +
    + )}
    )} diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/composer.scss index 937751d00..96ea096e1 100644 --- a/app/javascript/flavours/glitch/styles/components/composer.scss +++ b/app/javascript/flavours/glitch/styles/components/composer.scss @@ -425,54 +425,12 @@ background-repeat: no-repeat; overflow: hidden; - textarea { - display: block; - position: absolute; - box-sizing: border-box; - bottom: 0; - left: 0; - margin: 0; - border: 0; - padding: 10px; - width: 100%; - color: $secondary-text-color; - background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); - font-size: 14px; - font-family: inherit; - font-weight: 500; - opacity: 0; - z-index: 2; - transition: opacity .1s ease; - - &:focus { color: $white } - - &::placeholder { - opacity: 0.54; - color: $secondary-text-color; - } - } - & > .close { mix-blend-mode: difference } } - &.active { - & > div { - textarea { opacity: 1 } - } - } -} - -.composer--upload_form--actions { - background: linear-gradient(180deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); - display: flex; - align-items: flex-start; - justify-content: space-between; - opacity: 0; - transition: opacity .1s ease; - .icon-button { flex: 0 1 auto; - color: $ui-secondary-color; + color: $secondary-text-color; font-size: 14px; font-weight: 500; padding: 10px; @@ -481,15 +439,28 @@ &:hover, &:focus, &:active { - color: lighten($ui-secondary-color, 4%); + color: lighten($secondary-text-color, 7%); } } - &.active { - opacity: 1; + &__warning { + position: absolute; + z-index: 2; + bottom: 0; + left: 0; + right: 0; + box-sizing: border-box; + background: linear-gradient(0deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); } } +.composer--upload_form--actions { + background: linear-gradient(180deg, rgba($base-shadow-color, 0.8) 0, rgba($base-shadow-color, 0.35) 80%, transparent); + display: flex; + align-items: flex-start; + justify-content: space-between; +} + .composer--upload_form--progress { display: flex; padding: 10px; diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss index 020d39aff..bb91abdac 100644 --- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss +++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss @@ -165,14 +165,6 @@ } } -.composer--upload_form--item > div input { - color: lighten($white, 7%); - - &::placeholder { - color: lighten($white, 10%); - } -} - .dropdown-menu__separator, .dropdown-menu__item.edited-timestamp__history__item, .dropdown-menu__container__header, From 33e7ef4d3d163125d73826143edcc0a0f7470781 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 11:58:13 +0100 Subject: [PATCH 137/143] [Glitch] Fix wrong position of fade-out element in account card in web UI Port d5df9d4797eea86a37522c9936228888f69244fd Signed-off-by: Claire --- app/javascript/flavours/glitch/styles/admin.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 40cd899b3..27be22f1b 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -1322,7 +1322,7 @@ a.sparkline { width: 50px; height: 21px; position: absolute; - bottom: 8px; + bottom: 0; right: 15px; background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; From b475c8ab97c839f20757ef606659b15f8d47e79f Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 22 Mar 2022 18:08:08 +0100 Subject: [PATCH 138/143] Fix minor issues in v3.5.0rc1 changelog (#17852) --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 519c561a6..52a62a213 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. ## Unreleased ### Added -- **Add support for post editing** ([Gargron](https://github.com/mastodon/mastodon/pull/16697), [Gargron](https://github.com/mastodon/mastodon/pull/17727), [Gargron](https://github.com/mastodon/mastodon/pull/17728), [Gargron](https://github.com/mastodon/mastodon/pull/17320), [Gargron](https://github.com/mastodon/mastodon/pull/17404), [Gargron](https://github.com/mastodon/mastodon/pull/17390), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17335), [Gargron](https://github.com/mastodon/mastodon/pull/17696), [Gargron](https://github.com/mastodon/mastodon/pull/17745), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17740), [Gargron](https://github.com/mastodon/mastodon/pull/17697), [Gargron](https://github.com/mastodon/mastodon/pull/17648), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17531), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17499), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17498), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17380), [Gargron](https://github.com/mastodon/mastodon/pull/17373), [Gargron](https://github.com/mastodon/mastodon/pull/17334), [Gargron](https://github.com/mastodon/mastodon/pull/17333), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17699), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17748)) +- **Add support for incoming edited posts** ([Gargron](https://github.com/mastodon/mastodon/pull/16697), [Gargron](https://github.com/mastodon/mastodon/pull/17727), [Gargron](https://github.com/mastodon/mastodon/pull/17728), [Gargron](https://github.com/mastodon/mastodon/pull/17320), [Gargron](https://github.com/mastodon/mastodon/pull/17404), [Gargron](https://github.com/mastodon/mastodon/pull/17390), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17335), [Gargron](https://github.com/mastodon/mastodon/pull/17696), [Gargron](https://github.com/mastodon/mastodon/pull/17745), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17740), [Gargron](https://github.com/mastodon/mastodon/pull/17697), [Gargron](https://github.com/mastodon/mastodon/pull/17648), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17531), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17499), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17498), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17380), [Gargron](https://github.com/mastodon/mastodon/pull/17373), [Gargron](https://github.com/mastodon/mastodon/pull/17334), [Gargron](https://github.com/mastodon/mastodon/pull/17333), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17699), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17748)) - Previous versions remain available for perusal and comparison - People who reblogged a post are notified when it's edited - New REST APIs: @@ -14,7 +14,7 @@ All notable changes to this project will be documented in this file. - `GET /api/v1/statuses/:id/history` - `GET /api/v1/statuses/:id/source` - New streaming API event: - - `update` + - `status.update` - **Add appeals for moderator decisions** ([Gargron](https://github.com/mastodon/mastodon/pull/17364), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17725), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17566), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17652), [Gargron](https://github.com/mastodon/mastodon/pull/17616), [Gargron](https://github.com/mastodon/mastodon/pull/17615), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17554), [Gargron](https://github.com/mastodon/mastodon/pull/17523)) - All default moderator decisions now notify the affected user by e-mail - They now link to an appeal page instead of suggesting replying to the e-mail @@ -63,7 +63,7 @@ All notable changes to this project will be documented in this file. - Add `types` param to `GET /api/v1/notifications` in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17767)) - **Add notifications for moderators about new sign-ups** ([Gargron](https://github.com/mastodon/mastodon/pull/16953), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17629)) - When a new user confirms e-mail, moderators receive a notification - - New streaming API event: + - New notification type: - `admin.sign_up` - Add authentication history ([Gargron](https://github.com/mastodon/mastodon/pull/16408), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/16428), [baby-gnu](https://github.com/mastodon/mastodon/pull/16654)) - Add ability to automatically delete old posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/16529), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/17691), [tribela](https://github.com/mastodon/mastodon/pull/16653)) From 2de44d3e47404ee0ac6f701e685a4626502c6390 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 18:20:08 +0100 Subject: [PATCH 139/143] Fix regression of status colors in actions modal in web UI (#17851) Regression in #17844 --- .../styles/mastodon/components.scss | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index d1b36d33b..d627d9557 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1154,6 +1154,43 @@ .audio-player { margin-top: 8px; } + + &.light { + .status__relative-time, + .status__visibility-icon { + color: $light-text-color; + } + + .status__display-name { + color: $inverted-text-color; + } + + .display-name { + color: $light-text-color; + + strong { + color: $inverted-text-color; + } + } + + .status__content { + color: $inverted-text-color; + + a { + color: $highlight-text-color; + } + + a.status__content__spoiler-link { + color: $primary-text-color; + background: $ui-primary-color; + + &:hover, + &:focus { + background: lighten($ui-primary-color, 8%); + } + } + } + } } .detailed-status__meta { From 8751c3c4954799aec24cecc1cae68df27d19ceee Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 18:20:25 +0100 Subject: [PATCH 140/143] Fix crash when search fails in web UI (#17853) --- app/javascript/mastodon/features/explore/results.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/javascript/mastodon/features/explore/results.js b/app/javascript/mastodon/features/explore/results.js index ff900de08..339f883c5 100644 --- a/app/javascript/mastodon/features/explore/results.js +++ b/app/javascript/mastodon/features/explore/results.js @@ -24,15 +24,15 @@ const appendLoadMore = (id, list, onLoadMore) => { } }; -const renderAccounts = (results, onLoadMore) => appendLoadMore('accounts', results.get('accounts').map(item => ( +const renderAccounts = (results, onLoadMore) => appendLoadMore('accounts', results.get('accounts', ImmutableList()).map(item => ( )), onLoadMore); -const renderHashtags = (results, onLoadMore) => appendLoadMore('hashtags', results.get('hashtags').map(item => ( +const renderHashtags = (results, onLoadMore) => appendLoadMore('hashtags', results.get('hashtags', ImmutableList()).map(item => ( )), onLoadMore); -const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', results.get('statuses').map(item => ( +const renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', results.get('statuses', ImmutableList()).map(item => ( )), onLoadMore); From 749fe73ec4500d78b3deb8cdd260ff6eb6c66e7c Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 22 Mar 2022 18:41:46 +0100 Subject: [PATCH 141/143] Add tooltip for instance delivery warnings (#17854) --- app/views/admin/instances/_instance.html.haml | 2 +- config/locales/en.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/admin/instances/_instance.html.haml b/app/views/admin/instances/_instance.html.haml index 8a4396002..93f9bd418 100644 --- a/app/views/admin/instances/_instance.html.haml +++ b/app/views/admin/instances/_instance.html.haml @@ -1,7 +1,7 @@ .directory__tag = link_to admin_instance_path(instance) do %h4 - = fa_icon 'warning fw' if instance.failing? + = fa_icon 'warning fw', title: t('admin.instances.availability.warning') if instance.failing? = instance.domain %small diff --git a/config/locales/en.yml b/config/locales/en.yml index d4a42e867..a6ded38f7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -490,6 +490,7 @@ en: other: Failed attempts on %{count} different days. no_failures_recorded: No failures on record. title: Availability + warning: The last attempt to connect to this server has been unsuccessful back_to_all: All back_to_limited: Limited back_to_warning: Warning From 6391a869aee853b01bdd9136b390e2f9b21857cb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Mar 2022 06:08:05 +0100 Subject: [PATCH 142/143] [Glitch] Fix color of show more link in report dialog in web UI Port 69f9dc4f4eed9211a0a4ff55c18f64c99165a9e0 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/styles/components/modal.scss | 9 +++++++++ .../flavours/glitch/styles/components/status.scss | 10 ++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index 7e6918356..61c292b19 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -609,6 +609,15 @@ color: $inverted-text-color; } + .status__content__spoiler-link { + color: $primary-text-color; + background: $ui-primary-color; + + &:hover { + background: lighten($ui-primary-color, 8%); + } + } + .dialog-option .poll__input { border-color: $inverted-text-color; color: $ui-secondary-color; diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index ad6c24ea6..0d7dfd64d 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -198,7 +198,8 @@ .status__content__spoiler-link { background: lighten($ui-base-color, 30%); - &:hover { + &:hover, + &:focus { background: lighten($ui-base-color, 33%); text-decoration: none; } @@ -222,13 +223,13 @@ background: lighten($ui-base-color, 30%); border: 0; color: $inverted-text-color; - font-weight: 500; + font-weight: 700; font-size: 11px; padding: 0 5px; text-transform: uppercase; line-height: inherit; cursor: pointer; - vertical-align: bottom; + vertical-align: top; &:hover { background: lighten($ui-base-color, 33%); @@ -760,7 +761,8 @@ a.status__display-name, background: $ui-base-lighter-color; color: $inverted-text-color; - &:hover { + &:hover, + &:focus { background: lighten($ui-base-color, 29%); text-decoration: none; } From 2287eebae0c1d699436a8cf3218d7cfe990a3605 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 24 Mar 2022 09:15:25 +0100 Subject: [PATCH 143/143] =?UTF-8?q?Fix=20description=20of=20=E2=80=9CAllow?= =?UTF-8?q?=20posts=20with=20Content=20Warnings=20to=20trend=E2=80=9D=20se?= =?UTF-8?q?tting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admin/settings/edit.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index a287e52ff..a47cb2a88 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -87,7 +87,7 @@ = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html') .fields-group - = f.input :trending_status_cw, as: :boolean, wrapper: :with_label, label: t('admin.settings.trending_status_cw.title'), hint: t('trending_status_cw.desc_html') + = f.input :trending_status_cw, as: :boolean, wrapper: :with_label, label: t('admin.settings.trending_status_cw.title'), hint: t('admin.settings.trending_status_cw.desc_html') .fields-group = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html')