From cb7bd8ee0333b608b168c20f32acf3337412dac0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 26 Nov 2020 14:42:12 +0100 Subject: [PATCH 01/19] New Crowdin updates (#15137) * New translations en.yml (Kabyle) [ci skip] * New translations en.json (Kabyle) [ci skip] * New translations en.yml (Sanskrit) [ci skip] * New translations en.json (Sanskrit) [ci skip] * New translations en.yml (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations simple_form.en.yml (Corsican) [ci skip] * New translations simple_form.en.yml (Sorani (Kurdish)) [ci skip] * New translations en.yml (Welsh) [ci skip] * New translations simple_form.en.yml (Swedish) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations simple_form.en.yml (Persian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.json (Persian) [ci skip] * New translations simple_form.en.yml (Indonesian) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Galician) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations en.yml (Urdu (Pakistan)) [ci skip] * New translations en.json (Urdu (Pakistan)) [ci skip] * New translations simple_form.en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations en.yml (Telugu) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.json (Telugu) [ci skip] * New translations en.yml (Malay) [ci skip] * New translations en.json (Malay) [ci skip] * New translations en.yml (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Latvian) [ci skip] * New translations en.json (Latvian) [ci skip] * New translations simple_form.en.yml (Estonian) [ci skip] * New translations en.json (Estonian) [ci skip] * New translations en.json (Bengali) [ci skip] * New translations simple_form.en.yml (Kazakh) [ci skip] * New translations en.yml (Kazakh) [ci skip] * New translations en.json (Kazakh) [ci skip] * New translations simple_form.en.yml (Norwegian Nynorsk) [ci skip] * New translations en.yml (Norwegian Nynorsk) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Thai) [ci skip] * New translations en.yml (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations simple_form.en.yml (Bengali) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (French) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations devise.en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Kannada) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations simple_form.en.yml (Esperanto) [ci skip] * New translations doorkeeper.en.yml (Esperanto) [ci skip] * New translations doorkeeper.en.yml (Esperanto) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations devise.en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Persian) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations devise.en.yml (Czech) [ci skip] * New translations devise.en.yml (Czech) [ci skip] * New translations en.json (Czech) [ci skip] * New translations en.json (Polish) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations simple_form.en.yml (Polish) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.json (Czech) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Galician) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations simple_form.en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Russian) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations simple_form.en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations simple_form.en.yml (French) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (German) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.json (Galician) [ci skip] * New translations devise.en.yml (Galician) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations simple_form.en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Sorani (Kurdish)) [ci skip] * New translations doorkeeper.en.yml (Sorani (Kurdish)) [ci skip] * Ran `i18n-tasks normalize` * Ran `yarn manage:translations` Co-authored-by: Yamagishi Kazutoshi --- app/javascript/mastodon/locales/cs.json | 8 +- .../mastodon/locales/defaultMessages.json | 13 + app/javascript/mastodon/locales/eo.json | 6 +- app/javascript/mastodon/locales/fa.json | 2 +- app/javascript/mastodon/locales/fr.json | 2 +- app/javascript/mastodon/locales/gl.json | 10 +- app/javascript/mastodon/locales/hy.json | 26 +- app/javascript/mastodon/locales/ja.json | 4 +- app/javascript/mastodon/locales/kn.json | 8 +- app/javascript/mastodon/locales/pl.json | 4 +- app/javascript/mastodon/locales/ru.json | 2 +- app/javascript/mastodon/locales/sc.json | 52 +- app/javascript/mastodon/locales/tr.json | 2 +- app/javascript/mastodon/locales/vi.json | 36 +- app/javascript/mastodon/locales/zgh.json | 20 +- app/javascript/mastodon/locales/zh-HK.json | 52 +- app/javascript/mastodon/locales/zh-TW.json | 18 +- config/locales/activerecord.ku.yml | 18 +- config/locales/ca.yml | 3 + config/locales/co.yml | 1 + config/locales/da.yml | 3 + config/locales/de.yml | 3 + config/locales/devise.cs.yml | 13 + config/locales/devise.es.yml | 116 +- config/locales/devise.gl.yml | 2 +- config/locales/devise.ja.yml | 2 +- config/locales/devise.ku.yml | 116 +- config/locales/devise.nn.yml | 15 + config/locales/devise.vi.yml | 2 +- config/locales/devise.zh-HK.yml | 17 + config/locales/doorkeeper.eo.yml | 14 +- config/locales/doorkeeper.ku.yml | 152 +- config/locales/doorkeeper.vi.yml | 14 +- config/locales/doorkeeper.zgh.yml | 3 + config/locales/eo.yml | 9 +- config/locales/es-AR.yml | 5 +- config/locales/es.yml | 3 + config/locales/fa.yml | 2 + config/locales/fr.yml | 15 +- config/locales/gl.yml | 19 +- config/locales/hu.yml | 3 + config/locales/hy.yml | 87 + config/locales/id.yml | 3 + config/locales/is.yml | 1 + config/locales/it.yml | 3 + config/locales/ja.yml | 20 +- config/locales/ko.yml | 3 + config/locales/ku.yml | 1400 ++++++++++++++++- config/locales/oc.yml | 16 +- config/locales/pl.yml | 15 + config/locales/pt-BR.yml | 13 + config/locales/pt-PT.yml | 3 + config/locales/ru.yml | 3 + config/locales/simple_form.eo.yml | 2 +- config/locales/simple_form.fr.yml | 2 +- config/locales/simple_form.hy.yml | 9 + config/locales/simple_form.ku.yml | 212 ++- config/locales/simple_form.oc.yml | 5 + config/locales/simple_form.pl.yml | 1 + config/locales/simple_form.pt-BR.yml | 1 + config/locales/simple_form.vi.yml | 28 +- config/locales/simple_form.zh-HK.yml | 2 + config/locales/simple_form.zh-TW.yml | 1 + config/locales/sq.yml | 3 + config/locales/sv.yml | 3 + config/locales/th.yml | 6 + config/locales/tr.yml | 35 +- config/locales/vi.yml | 146 +- config/locales/zgh.yml | 18 + config/locales/zh-CN.yml | 3 + config/locales/zh-HK.yml | 3 + config/locales/zh-TW.yml | 6 + 72 files changed, 2610 insertions(+), 258 deletions(-) diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ad47b064ca..c43b3c8753 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -1,5 +1,5 @@ { - "account.account_note_header": "Note", + "account.account_note_header": "Poznámka", "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů", "account.badges.bot": "Robot", "account.badges.group": "Skupina", @@ -326,14 +326,14 @@ "notifications.column_settings.reblog": "Boosty:", "notifications.column_settings.show": "Zobrazit ve sloupci", "notifications.column_settings.sound": "Přehrát zvuk", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "Nové tooty:", "notifications.filter.all": "Vše", "notifications.filter.boosts": "Boosty", "notifications.filter.favourites": "Oblíbení", "notifications.filter.follows": "Sledování", "notifications.filter.mentions": "Zmínky", "notifications.filter.polls": "Výsledky anket", - "notifications.filter.statuses": "Updates from people you follow", + "notifications.filter.statuses": "Aktuality od lidí, které sledujete", "notifications.group": "{count} oznámení", "notifications.mark_as_read": "Mark every notification as read", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", @@ -458,7 +458,7 @@ "upload_form.audio_description": "Popis pro sluchově postižené", "upload_form.description": "Popis pro zrakově postižené", "upload_form.edit": "Upravit", - "upload_form.thumbnail": "Change thumbnail", + "upload_form.thumbnail": "Změnit miniaturu", "upload_form.undo": "Smazat", "upload_form.video_description": "Popis pro sluchově či zrakově postižené", "upload_modal.analyzing_picture": "Analyzuji obrázek…", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index c49c6399da..ae9ba853e0 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2388,6 +2388,10 @@ }, { "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + }, { "defaultMessage": "Never miss a thing", "id": "notifications_permission_banner.title" @@ -2478,6 +2482,15 @@ ], "path": "app/javascript/mastodon/features/picture_in_picture/components/footer.json" }, + { + "descriptors": [ + { + "defaultMessage": "Close", + "id": "lightbox.close" + } + ], + "path": "app/javascript/mastodon/features/picture_in_picture/components/header.json" + }, { "descriptors": [ { diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index b401e5bbe5..1b5f188840 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -236,7 +236,7 @@ "keyboard_shortcuts.hotkey": "Rapidklavo", "keyboard_shortcuts.legend": "montri ĉi tiun noton", "keyboard_shortcuts.local": "malfermi la lokan tempolinion", - "keyboard_shortcuts.mention": "por mencii la aŭtoron", + "keyboard_shortcuts.mention": "mencii la aŭtoron", "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj", "keyboard_shortcuts.my_profile": "malfermi vian profilon", "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", @@ -246,7 +246,7 @@ "keyboard_shortcuts.reply": "respondi", "keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado", "keyboard_shortcuts.search": "enfokusigi la serĉilon", - "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.spoilers": "montri/kaŝi la kampon de enhava averto", "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto", "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn", @@ -326,7 +326,7 @@ "notifications.column_settings.reblog": "Diskonigoj:", "notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.sound": "Eligi sonon", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "Novaj mesaĝoj:", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Diskonigoj", "notifications.filter.favourites": "Stelumoj", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index a38d21e1c6..44c9361428 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -80,7 +80,7 @@ "column_header.pin": "ثابت‌کردن", "column_header.show_settings": "نمایش تنظیمات", "column_header.unpin": "رهاکردن", - "column_subheading.settings": "تنظیمات", + "column_subheading.settings": "ساماندهی", "community.column_settings.local_only": "تنها بومی", "community.column_settings.media_only": "فقط رسانه", "community.column_settings.remote_only": "تنها دوردست", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index a70a5c1c77..19c86722d1 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -99,7 +99,7 @@ "compose_form.publish": "Pouet", "compose_form.publish_loud": "{publish} !", "compose_form.sensitive.hide": "Marquer le média comme sensible", - "compose_form.sensitive.marked": "Média marqué comme sensible", + "compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}", "compose_form.sensitive.unmarked": "Le média n’est pas marqué comme sensible", "compose_form.spoiler.marked": "Le texte est caché derrière un avertissement", "compose_form.spoiler.unmarked": "Le texte n’est pas caché", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 591d1c13a1..6fe22e1d42 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -73,7 +73,7 @@ "column.notifications": "Notificacións", "column.pins": "Toots fixados", "column.public": "Cronoloxía federada", - "column_back_button.label": "Voltar", + "column_back_button.label": "Volver", "column_header.hide_settings": "Agochar axustes", "column_header.moveLeft_settings": "Mover columna cara a esquerda", "column_header.moveRight_settings": "Mover columna cara a dereita", @@ -219,7 +219,7 @@ "introduction.welcome.action": "Imos!", "introduction.welcome.headline": "Primeiros pasos", "introduction.welcome.text": "Benvida ó fediverso! Nun intre poderás difundir mensaxes e falar coas túas amizades nun grande número de servidores. Mais este servidor, {domain}, é especial—hospeda o teu perfil, por iso lémbra o seu nome.", - "keyboard_shortcuts.back": "para voltar atrás", + "keyboard_shortcuts.back": "para volver atrás", "keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas", "keyboard_shortcuts.boost": "promover", "keyboard_shortcuts.column": "para destacar un toot nunha das columnas", @@ -336,10 +336,10 @@ "notifications.filter.statuses": "Actualizacións de xente á que segues", "notifications.group": "{count} notificacións", "notifications.mark_as_read": "Marcar todas as notificacións como lidas", - "notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso.", + "notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso", "notifications.permission_denied_alert": "Non se poden activar as notificacións de escritorio, xa que o permiso para o navegador foi denegado previamente", "notifications_permission_banner.enable": "Activar notificacións de escritorio", - "notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións crean as notificacións de escritorio a través da {icon} superior unha vez activadas.", + "notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.", "notifications_permission_banner.title": "Non perder nada", "picture_in_picture.restore": "Devolver", "poll.closed": "Pechado", @@ -411,7 +411,7 @@ "status.pinned": "Toot fixado", "status.read_more": "Ler máis", "status.reblog": "Promover", - "status.reblog_private": "Compartir á audiencia orixinal", + "status.reblog_private": "Compartir coa audiencia orixinal", "status.reblogged_by": "{name} promoveu", "status.reblogs.empty": "Aínda ninguén promoveu este toot. Cando alguén o faga, amosarase aquí.", "status.redraft": "Eliminar e reescribir", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 5033b8ca2f..dd904bfcab 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում", "account.cancel_follow_request": "չեղարկել հետեւելու հայցը", "account.direct": "Նամակ գրել @{name} -ին", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար", "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել անձնական էջը", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին", "account.endorse": "Ցուցադրել անձնական էջում", "account.follow": "Հետեւել", "account.followers": "Հետեւողներ", @@ -168,9 +168,9 @@ "empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։", "empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։", "error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Այս էջի ճիշտ պատկերումը չի ստացում։ Խափանումը հաւանաբար առաջացել է դիտարկիչի յավելվածից կամ առցանց թարգմանիչից։", "error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։", "errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին", "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", "follow_request.authorize": "Վավերացնել", @@ -266,9 +266,9 @@ "lists.edit.submit": "Փոխել վերնագիրը", "lists.new.create": "Ավելացնել ցանկ", "lists.new.title_placeholder": "Նոր ցանկի վերնագիր", - "lists.replies_policy.all_replies": "Any followed user", - "lists.replies_policy.list_replies": "Members of the list", - "lists.replies_policy.no_replies": "No one", + "lists.replies_policy.all_replies": "Ում հետևում եմ", + "lists.replies_policy.list_replies": "Ցանկի անդամները", + "lists.replies_policy.no_replies": "Ոչ ոք", "lists.replies_policy.title": "Show replies to:", "lists.search": "Փնտրել քո հետեւած մարդկանց մեջ", "lists.subheading": "Քո ցանկերը", @@ -277,9 +277,9 @@ "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել", "missing_indicator.label": "Չգտնվեց", "missing_indicator.sublabel": "Պաշարը չի գտնւում", - "mute_modal.duration": "Duration", + "mute_modal.duration": "Տևողություն", "mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "Անժամկետ", "navigation_bar.apps": "Դիւրակիր յաւելուածներ", "navigation_bar.blocks": "Արգելափակված օգտատերեր", "navigation_bar.bookmarks": "Էջանիշեր", @@ -310,7 +310,7 @@ "notification.own_poll": "Հարցումդ աւարտուեց", "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց թութդ", - "notification.status": "{name} just posted", + "notification.status": "{name} հենց նոր թթեց", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", @@ -326,7 +326,7 @@ "notifications.column_settings.reblog": "Տարածածներից՝", "notifications.column_settings.show": "Ցուցադրել սիւնում", "notifications.column_settings.sound": "Ձայն հանել", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "Նոր թթեր։", "notifications.filter.all": "Բոլորը", "notifications.filter.boosts": "Տարածածները", "notifications.filter.favourites": "Հաւանածները", @@ -335,10 +335,10 @@ "notifications.filter.polls": "Հարցման արդիւնքները", "notifications.filter.statuses": "Updates from people you follow", "notifications.group": "{count} ծանուցում", - "notifications.mark_as_read": "Mark every notification as read", + "notifications.mark_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_banner.enable": "Enable desktop notifications", + "notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները", "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", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 207bcf4411..ec60e07823 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -333,7 +333,7 @@ "notifications.filter.follows": "フォロー", "notifications.filter.mentions": "返信", "notifications.filter.polls": "アンケート結果", - "notifications.filter.statuses": "Updates from people you follow", + "notifications.filter.statuses": "フォローしている人の新着情報", "notifications.group": "{count} 件の通知", "notifications.mark_as_read": "すべて既読にする", "notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません", @@ -357,7 +357,7 @@ "privacy.private.short": "フォロワー限定", "privacy.public.long": "誰でも閲覧可、公開TLに表示", "privacy.public.short": "公開", - "privacy.unlisted.long": "誰でも閲覧可、公開タイムラインに非表示", + "privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示", "privacy.unlisted.short": "未収載", "refresh": "更新", "regeneration_indicator.label": "読み込み中…", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 1ac564a708..0f6c71fb96 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -14,8 +14,8 @@ "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", - "account.follow": "Follow", - "account.followers": "Followers", + "account.follow": "ಹಿಂಬಾಲಿಸಿ", + "account.followers": "ಹಿಂಬಾಲಕರು", "account.followers.empty": "No one follows this user yet.", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", @@ -32,7 +32,7 @@ "account.mute_notifications": "Mute notifications from @{name}", "account.muted": "Muted", "account.never_active": "Never", - "account.posts": "Toots", + "account.posts": "ಟೂಟ್‌ಗಳು", "account.posts_with_replies": "Toots and replies", "account.report": "Report @{name}", "account.requested": "Awaiting approval", @@ -54,7 +54,7 @@ "autosuggest_hashtag.per_week": "{count} per week", "boost_modal.combo": "You can press {combo} to skip this next time", "bundle_column_error.body": "Something went wrong while loading this component.", - "bundle_column_error.retry": "Try again", + "bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ", "bundle_column_error.title": "Network error", "bundle_modal_error.close": "Close", "bundle_modal_error.message": "Something went wrong while loading this component.", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index e06952d193..3009471f46 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -254,8 +254,8 @@ "keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania", "keyboard_shortcuts.up": "aby przejść na górę listy", "lightbox.close": "Zamknij", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Zmniejsz pole widoku obrazu", + "lightbox.expand": "Rozwiń pole widoku obrazu", "lightbox.next": "Następne", "lightbox.previous": "Poprzednie", "lightbox.view_context": "Pokaż kontekst", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 5a2d5a54eb..c0022e5248 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -98,7 +98,7 @@ "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", "compose_form.publish": "Запостить", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "Пометить медиафайл как чувствительный", + "compose_form.sensitive.hide": "{count, plural, one {Отметить медифайл как деликатный} other {Отметить медифайлы как деликатные}}", "compose_form.sensitive.marked": "Медиафайл отмечен как деликатный", "compose_form.sensitive.unmarked": "Медиафайл не отмечен как деликатный", "compose_form.spoiler.marked": "Текст скрыт за предупреждением", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 055a52cab4..cf4ceb5d0a 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -6,18 +6,18 @@ "account.block": "Bloca @{name}", "account.block_domain": "Bloca domìniu{domain}", "account.blocked": "Blocadu", - "account.browse_more_on_origin_server": "Browse more on the original profile", + "account.browse_more_on_origin_server": "Esplora de prus in su profilu originale", "account.cancel_follow_request": "Annulla rechesta de sighidura", "account.direct": "Messàgiu deretu a @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "Acaba·la de mi notificare cando @{name} publicat carchi cosa", "account.domain_blocked": "Domìniu blocadu", "account.edit_profile": "Modìfica profilu", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "Notìfica·mi cando @{name} pùblicat carchi cosa", "account.endorse": "Cussìgia in su profilu tuo", "account.follow": "Sighi", "account.followers": "Sighiduras", "account.followers.empty": "Nemos sighit ancora custa persone.", - "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", + "account.followers_counter": "{count, plural, one {{counter} Sighidore} other {{counter} Sighidores}}", "account.following_counter": "{count, plural, one {{counter} Sighidu} other {{counter} Sighidos}}", "account.follows.empty": "Custa persone non sighit ancora a nemos.", "account.follows_you": "Ti sighit", @@ -38,14 +38,14 @@ "account.requested": "Incarca pro annullare sa rechesta de sighidura", "account.share": "Cumpartzi su profilu de @{name}", "account.show_reblogs": "Ammustra is cumpartziduras de @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}", "account.unblock": "Isbloca @{name}", "account.unblock_domain": "Isbloca su domìniu {domain}", "account.unendorse": "Non cussiges in su profilu", "account.unfollow": "Non sigas prus", "account.unmute": "Torra a ativare @{name}", "account.unmute_notifications": "Ativa notìficas pro @{name}", - "account_note.placeholder": "Click to add a note", + "account_note.placeholder": "Incarca pro agiùnghere una nota", "alert.rate_limited.message": "Torra·bi a proare a pustis de {retry_time, time, medium}.", "alert.rate_limited.title": "Màssimu de rechestas barigadu", "alert.unexpected.message": "B'at àpidu una faddina.", @@ -81,9 +81,9 @@ "column_header.show_settings": "Ammustra is cunfiguratziones", "column_header.unpin": "Boga dae pitzu", "column_subheading.settings": "Cunfiguratziones", - "community.column_settings.local_only": "Local only", + "community.column_settings.local_only": "Locale ebbia", "community.column_settings.media_only": "Multimediale isceti", - "community.column_settings.remote_only": "Remote only", + "community.column_settings.remote_only": "Remotu ebbia", "compose_form.direct_message_warning": "Custu tut at a èssere imbiadu isceti a is persones mentovadas.", "compose_form.direct_message_warning_learn_more": "Àteras informatziones", "compose_form.hashtag_warning": "Custu tut no at a èssere ammustradu in peruna eticheta, dae chi no est listadu.", @@ -113,7 +113,7 @@ "confirmations.delete_list.confirm": "Cantzella", "confirmations.delete_list.message": "Seguru chi boles cantzellare custa lista in manera permanente?", "confirmations.domain_block.confirm": "Cua totu su domìniu", - "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", + "confirmations.domain_block.message": "Ses seguru a beru, ma a beru a beru, de bòlere blocare su {domain} intreu? In sa parte manna de is casos pagos blocos o silentziamentos de utentes sunt sufitzientes e preferìbiles. No as a bìdere cuntenutos dae custu domìniu in peruna lìnia de tempus pùblica o in is notìficas tuas. Is sighidores tuos dae cussu domìniu ant a èssere bogados.", "confirmations.logout.confirm": "Essi·nche", "confirmations.logout.message": "Seguru chi boles essire?", "confirmations.mute.confirm": "A sa muda", @@ -168,15 +168,15 @@ "empty_column.notifications": "Non tenes ancora peruna notìfica. Chistiona cun una persone pro cumintzare un'arresonada.", "empty_column.public": "Nudda inoghe. Iscrie calicuna cosa pùblica, o sighi àteras persones de àteros serbidores pro prenare custu ispàtziu", "error.unexpected_crash.explanation": "A càusa de una faddina in su còdighe nostru o unu problema de cumpatibilidade de su navigadore, custa pàgina diat pòdere no èssere ammustrada in manera curreta.", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "Custa pàgina diat pòdere no èssere ammustrada comente si tocat. Custa faddina est probàbile chi dipendat dae un'estensione de su navigadore o dae ainas automàticas de tradutzione.", "error.unexpected_crash.next_steps": "Proa de atualizare sa pàgina. Si custu non acontza su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "Proa a ddos disabilitare e a atualizare sa pàgina. Si custu non acontzat su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete", "errors.unexpected_crash.report_issue": "Signala unu problema", "follow_request.authorize": "Autoriza", "follow_request.reject": "Refuda", "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.", - "generic.saved": "Saved", + "generic.saved": "Sarvadu", "getting_started.developers": "Iscuadra de isvilupu", "getting_started.directory": "Diretòriu de profilos", "getting_started.documentation": "Documentatzione", @@ -246,7 +246,7 @@ "keyboard_shortcuts.reply": "pro rispòndere", "keyboard_shortcuts.requests": "pro abèrrere sa lista de rechestas de sighidura", "keyboard_shortcuts.search": "pro atzentrare sa chirca", - "keyboard_shortcuts.spoilers": "to show/hide CW field", + "keyboard_shortcuts.spoilers": "pro ammustrare/cuare su campu AC", "keyboard_shortcuts.start": "pro abèrrere sa colunna \"Cumintza\"", "keyboard_shortcuts.toggle_hidden": "pro ammustrare o cuare testu de is AC", "keyboard_shortcuts.toggle_sensitivity": "pro ammustrare o cuare mèdias", @@ -254,8 +254,8 @@ "keyboard_shortcuts.unfocus": "pro essire de s'àrea de cumpositzione de testu o de chirca", "keyboard_shortcuts.up": "pro mòere in susu in sa lista", "lightbox.close": "Serra", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "Cumprime sa casella de visualizatzione de is immàgines", + "lightbox.expand": "Ismànnia sa casella de visualizatzione de is immàgines", "lightbox.next": "Sighi", "lightbox.previous": "Pretzedente", "lightbox.view_context": "Bide su cuntestu", @@ -266,10 +266,10 @@ "lists.edit.submit": "Muda su tìtulu", "lists.new.create": "Agiunghe lista", "lists.new.title_placeholder": "Lista noa", - "lists.replies_policy.all_replies": "Any followed user", - "lists.replies_policy.list_replies": "Members of the list", - "lists.replies_policy.no_replies": "No one", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.all_replies": "Cale si siat utente sighidu", + "lists.replies_policy.list_replies": "Membros de sa lista", + "lists.replies_policy.no_replies": "Perunu", + "lists.replies_policy.title": "Ammustra is rispostas a:", "lists.search": "Chircare intre sa gente chi ses sighende", "lists.subheading": "Is listas tuas", "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", @@ -279,7 +279,7 @@ "missing_indicator.sublabel": "Resursa no agatada", "mute_modal.duration": "Duration", "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "Indefinida", "navigation_bar.apps": "Aplicatziones mòbiles", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", @@ -310,7 +310,7 @@ "notification.own_poll": "Sondàgiu acabbadu", "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.reblog": "{name} at cumpartzidu s'istadu tuo", - "notification.status": "{name} just posted", + "notification.status": "{name} at publicadu cosa", "notifications.clear": "Lìmpia notìficas", "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?", "notifications.column_settings.alert": "Notìficas de iscrivania", @@ -326,19 +326,19 @@ "notifications.column_settings.reblog": "Cumpartziduras:", "notifications.column_settings.show": "Ammustra in sa colunna", "notifications.column_settings.sound": "Reprodue unu sonu", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "Tuts noos:", "notifications.filter.all": "Totus", "notifications.filter.boosts": "Cumpartziduras", "notifications.filter.favourites": "Preferidos", "notifications.filter.follows": "Sighende", "notifications.filter.mentions": "Mentovos", "notifications.filter.polls": "Resurtados dae su sondàgiu", - "notifications.filter.statuses": "Updates from people you follow", + "notifications.filter.statuses": "Agiornamentos dae is persones chi sighis", "notifications.group": "{count} notìficas", "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_banner.enable": "Enable desktop notifications", + "notifications.permission_denied": "Is notìficas de iscrivania non sunt a disponimentu pro neghe de rechestas de permissu chi sunt istadas dennegadas in antis", + "notifications.permission_denied_alert": "Is notìficas de iscrivania non podent èssere abilitadas, ca su permissu de su navigadore est istadu dennegadu in antis", + "notifications_permission_banner.enable": "Abìlita is notìficas de iscrivania", "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", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 650fbe8065..ec5f65a0cb 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -154,7 +154,7 @@ "empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.", "empty_column.bookmarked_statuses": "Henüz yer imine eklediğiniz toot yok. Yer imine eklendiğinde burada görünecek.", "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 doğrudan mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.", + "empty_column.direct": "Henüz direkt mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.", "empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.", "empty_column.favourited_statuses": "Hiç favori tootunuz yok. Favori olduğunda burada görünecek.", "empty_column.favourites": "Kimse bu tootu favorilerine eklememiş. Biri eklediğinde burada görünecek.", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 5a3988ce81..3da7cf3750 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -18,13 +18,13 @@ "account.followers": "Người theo dõi", "account.followers.empty": "Chưa có người theo dõi nào.", "account.followers_counter": "{count, plural, one {{counter} Người theo dõi} other {{counter} Người theo dõi}}", - "account.following_counter": "{count, plural, one {{counter} Đang theo dõi} other {{counter} Đang theo dõi}}", + "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}", "account.follows.empty": "Người dùng này chưa theo dõi ai.", "account.follows_you": "Đang theo dõi bạn", "account.hide_reblogs": "Ẩn chia sẻ từ @{name}", - "account.last_status": "Trực tuyến", + "account.last_status": "Online", "account.link_verified_on": "Liên kết này đã được xác thực vào {date}", - "account.locked_info": "Người dùng này thiết lập trạng thái ẩn. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", + "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.", "account.media": "Bộ sưu tập", "account.mention": "Nhắc đến @{name}", "account.moved_to": "{name} đã dời sang:", @@ -60,7 +60,7 @@ "bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.", "bundle_modal_error.retry": "Thử lại", "column.blocks": "Người dùng đã chặn", - "column.bookmarks": "Những tút bạn đã lưu", + "column.bookmarks": "Để dành đọc lại", "column.community": "Máy chủ của bạn", "column.direct": "Tin nhắn của bạn", "column.directory": "Tìm người cùng sở thích", @@ -72,7 +72,7 @@ "column.mutes": "Người dùng đã ẩn", "column.notifications": "Thông báo", "column.pins": "Tút ghim", - "column.public": "Từ những máy chủ khác", + "column.public": "Mạng liên hợp", "column_back_button.label": "Quay lại", "column_header.hide_settings": "Ẩn bộ lọc", "column_header.moveLeft_settings": "Dời cột sang bên trái", @@ -99,8 +99,8 @@ "compose_form.publish": "Tút", "compose_form.publish_loud": "{publish}!", "compose_form.sensitive.hide": "Nội dung nhạy cảm", - "compose_form.sensitive.marked": "Nội dung đã đánh dấu nhạy cảm", - "compose_form.sensitive.unmarked": "Nội dung không đánh dấu nhạy cảm", + "compose_form.sensitive.marked": "{count, plural, one {Nội dung đã đánh dấu là nhạy cảm} other {Nội dung đã đánh dấu là nhạy cảm}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Nội dung này bình thường} other {Nội dung này bình thường}}", "compose_form.spoiler.marked": "Hủy nội dung ẩn", "compose_form.spoiler.unmarked": "Tạo nội dung ẩn", "compose_form.spoiler_placeholder": "Viết nội dung ẩn của bạn ở đây", @@ -150,7 +150,7 @@ "emoji_button.symbols": "Biểu tượng", "emoji_button.travel": "Du lịch", "empty_column.account_timeline": "Chưa có tút nào!", - "empty_column.account_unavailable": "Tài khoản không còn nữa", + "empty_column.account_unavailable": "Tài khoản bị đình chỉ", "empty_column.blocks": "Bạn chưa chặn bất cứ ai.", "empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.", "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!", @@ -159,7 +159,7 @@ "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.", "empty_column.favourites": "Chưa có ai thích tút này.", "empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào.", - "empty_column.hashtag": "Chưa có bài đăng nào sử dụng hashtag này.", + "empty_column.hashtag": "Chưa có bài đăng nào dùng hashtag này.", "empty_column.home": "Chưa có bất cứ gì! Hãy bắt đầu bằng cách tìm kiếm hoặc truy cập {public} để theo dõi những người bạn quan tâm.", "empty_column.home.public_timeline": "tút công khai", "empty_column.list": "Chưa có tút. Khi những người trong danh sách này đăng tút mới, chúng sẽ xuất hiện ở đây.", @@ -246,7 +246,7 @@ "keyboard_shortcuts.reply": "trả lời", "keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi", "keyboard_shortcuts.search": "mở tìm kiếm", - "keyboard_shortcuts.spoilers": "Hiện/ẩn nội dung nhạy cảm", + "keyboard_shortcuts.spoilers": "hiện/ẩn nội dung nhạy cảm", "keyboard_shortcuts.start": "mở mục \"Dành cho người mới\"", "keyboard_shortcuts.toggle_hidden": "ẩn/hiện văn bản bên dưới spoil", "keyboard_shortcuts.toggle_sensitivity": "ẩn/hiện ảnh hoặc video", @@ -273,8 +273,8 @@ "lists.search": "Tìm kiếm những người mà bạn quan tâm", "lists.subheading": "Danh sách của bạn", "load_pending": "{count, plural, one {# tút mới} other {# tút mới}}", - "loading_indicator.label": "Chờ xíu...", - "media_gallery.toggle_visible": "Ẩn {number, plural, one {ảnh} other {ảnh}}", + "loading_indicator.label": "Đang tải...", + "media_gallery.toggle_visible": "Ẩn {number, plural, one {hình ảnh} other {hình ảnh}}", "missing_indicator.label": "Không tìm thấy", "missing_indicator.sublabel": "Nội dung này không còn tồn tại", "mute_modal.duration": "Thời hạn", @@ -311,7 +311,7 @@ "notification.poll": "Một cuộc bình chọn mà bạn tham gia đã kết thúc", "notification.reblog": "{name} chia sẻ tút của bạn", "notification.status": "{name} vừa đăng", - "notifications.clear": "Làm trống thông báo", + "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn có chắc chắn muốn xóa vĩnh viễn tất cả thông báo của mình?", "notifications.column_settings.alert": "Thông báo trên máy tính", "notifications.column_settings.favourite": "Lượt thích:", @@ -371,13 +371,13 @@ "reply_indicator.cancel": "Hủy bỏ", "report.forward": "Chuyển đến {target}", "report.forward_hint": "Người dùng này ở máy chủ khác. Gửi một báo cáo ẩn danh tới máy chủ đó?", - "report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo tài khoản này:", + "report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo người dùng này:", "report.placeholder": "Bổ sung thêm", "report.submit": "Gửi đi", "report.target": "Báo cáo {target}", "search.placeholder": "Tìm kiếm", "search_popout.search_format": "Gợi ý", - "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút do bạn viết, yêu thích, đã chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", + "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.", "search_popout.tips.hashtag": "hashtag", "search_popout.tips.status": "tút", "search_popout.tips.text": "Nội dung trả về là địa chỉ người dùng, tên hiển thị và hashtag", @@ -419,14 +419,14 @@ "status.reply": "Trả lời", "status.replyAll": "Trả lời tất cả", "status.report": "Báo cáo @{name}", - "status.sensitive_warning": "Nội dung nhạy cảm", + "status.sensitive_warning": "Nhạy cảm", "status.share": "Chia sẻ", "status.show_less": "Thu gọn", - "status.show_less_all": "Thu gọn tất cả", + "status.show_less_all": "Thu gọn toàn bộ", "status.show_more": "Mở rộng", "status.show_more_all": "Hiển thị tất cả", "status.show_thread": "Xem thêm", - "status.uncached_media_warning": "N/A", + "status.uncached_media_warning": "Giới hạn", "status.unmute_conversation": "Quan tâm", "status.unpin": "Bỏ ghim trên trang cá nhân", "suggestions.dismiss": "Tắt đề xuất", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index b877d76b4b..e79399ea14 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -1,13 +1,13 @@ { - "account.account_note_header": "Note", - "account.add_or_remove_from_list": "Add or Remove from lists", - "account.badges.bot": "Bot", + "account.account_note_header": "ⵍⵎⴷ ⵓⴳⴳⴰⵔ", + "account.add_or_remove_from_list": "ⵔⵏⵓ ⵏⵖ ⵙⵉⵜⵜⵢ ⵙⴳ ⵜⵍⴳⴰⵎⵜ", + "account.badges.bot": "ⴰⴱⵓⵜ", "account.badges.group": "ⵜⴰⵔⴰⴱⴱⵓⵜ", "account.block": "ⴳⴷⵍ @{name}", "account.block_domain": "Block domain {domain}", - "account.blocked": "Blocked", + "account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ", "account.browse_more_on_origin_server": "Browse more on the original profile", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "ⵙⵔ ⵜⵓⵜⵔⴰ ⵏ ⵓⴹⴼⵕ", "account.direct": "Direct message @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", "account.domain_blocked": "Domain blocked", @@ -25,7 +25,7 @@ "account.last_status": "Last active", "account.link_verified_on": "Ownership of this link was checked on {date}", "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "account.media": "Media", + "account.media": "ⴰⵙⵏⵖⵎⵉⵙ", "account.mention": "Mention @{name}", "account.moved_to": "{name} has moved to:", "account.mute": "Mute @{name}", @@ -70,7 +70,7 @@ "column.home": "ⴰⵙⵏⵓⴱⴳ", "column.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "column.mutes": "Muted users", - "column.notifications": "Notifications", + "column.notifications": "ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", "column.pins": "Pinned toot", "column.public": "Federated timeline", "column_back_button.label": "Back", @@ -104,7 +104,7 @@ "compose_form.spoiler.marked": "Text is hidden behind warning", "compose_form.spoiler.unmarked": "Text is not hidden", "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Cancel", + "confirmation_modal.cancel": "ⵙⵔ", "confirmations.block.block_and_report": "Block & Report", "confirmations.block.confirm": "Block", "confirmations.block.message": "Are you sure you want to block {name}?", @@ -183,7 +183,7 @@ "getting_started.heading": "Getting started", "getting_started.invite": "Invite people", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", - "getting_started.security": "Security", + "getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ", "getting_started.terms": "Terms of service", "hashtag.column_header.tag_mode.all": "and {additional}", "hashtag.column_header.tag_mode.any": "or {additional}", @@ -311,7 +311,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", - "notifications.clear": "Clear notifications", + "notifications.clear": "ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 346bf058e0..832e2a6a0d 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -1,6 +1,6 @@ { "account.account_note_header": "筆記", - "account.add_or_remove_from_list": "從名單中新增或移除", + "account.add_or_remove_from_list": "從列表中新增或移除", "account.badges.bot": "機械人", "account.badges.group": "群組", "account.block": "封鎖 @{name}", @@ -9,10 +9,10 @@ "account.browse_more_on_origin_server": "在該服務器的個人檔案頁上瀏覽更多", "account.cancel_follow_request": "取消關注請求", "account.direct": "私訊 @{name}", - "account.disable_notifications": "Stop notifying me when @{name} posts", + "account.disable_notifications": "如果 @{name} 發文請不要再通知我", "account.domain_blocked": "服務站被隱藏", "account.edit_profile": "修改個人資料", - "account.enable_notifications": "Notify me when @{name} posts", + "account.enable_notifications": "如果 @{name} 發文請通知我", "account.endorse": "在個人資料推薦對方", "account.follow": "關注", "account.followers": "關注的人", @@ -168,9 +168,9 @@ "empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。", "empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。", "error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,故無法正常顯示頁面。", - "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", + "error.unexpected_crash.explanation_addons": "此頁面無法被正確顯示,這可能是由於瀏覽器的附加元件或網頁自動翻譯工具造成的。", "error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。", - "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.next_steps_addons": "請嘗試停止使用這些附加元件然後重新載入頁面。如果問題沒有解決,你仍然可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。", "errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿", "errors.unexpected_crash.report_issue": "舉報問題", "follow_request.authorize": "批准", @@ -254,10 +254,10 @@ "keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索", "keyboard_shortcuts.up": "在列表往上移動", "lightbox.close": "關閉", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", - "lightbox.next": "繼續", - "lightbox.previous": "回退", + "lightbox.compress": "縮小檢視", + "lightbox.expand": "擴大檢視", + "lightbox.next": "下一頁", + "lightbox.previous": "上一頁", "lightbox.view_context": "檢視內文", "lists.account.add": "新增到列表", "lists.account.remove": "從列表刪除", @@ -266,10 +266,10 @@ "lists.edit.submit": "變更標題", "lists.new.create": "新增列表", "lists.new.title_placeholder": "新列表標題", - "lists.replies_policy.all_replies": "Any followed user", - "lists.replies_policy.list_replies": "Members of the list", - "lists.replies_policy.no_replies": "No one", - "lists.replies_policy.title": "Show replies to:", + "lists.replies_policy.all_replies": "任何關注的用戶", + "lists.replies_policy.list_replies": "列表中的用戶", + "lists.replies_policy.no_replies": "沒有人", + "lists.replies_policy.title": "顯示回應文章︰", "lists.search": "從你關注的用戶中搜索", "lists.subheading": "列表", "load_pending": "{count, plural, other {# 個新項目}}", @@ -277,9 +277,9 @@ "media_gallery.toggle_visible": "打開或關上", "missing_indicator.label": "找不到內容", "missing_indicator.sublabel": "無法找到內容", - "mute_modal.duration": "Duration", + "mute_modal.duration": "時間", "mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?", - "mute_modal.indefinite": "Indefinite", + "mute_modal.indefinite": "沒期限", "navigation_bar.apps": "封鎖的使用者", "navigation_bar.blocks": "被你封鎖的用戶", "navigation_bar.bookmarks": "書籤", @@ -310,7 +310,7 @@ "notification.own_poll": "您的投票已結束", "notification.poll": "您投過的投票已經結束", "notification.reblog": "{name} 轉推你的文章", - "notification.status": "{name} just posted", + "notification.status": "{name} 剛剛發了嘟文", "notifications.clear": "清空通知紀錄", "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?", "notifications.column_settings.alert": "顯示桌面通知", @@ -326,22 +326,22 @@ "notifications.column_settings.reblog": "轉推你的文章:", "notifications.column_settings.show": "在通知欄顯示", "notifications.column_settings.sound": "播放音效", - "notifications.column_settings.status": "New toots:", + "notifications.column_settings.status": "新的文章", "notifications.filter.all": "全部", "notifications.filter.boosts": "轉嘟", "notifications.filter.favourites": "最愛", "notifications.filter.follows": "關注的使用者", "notifications.filter.mentions": "提及", "notifications.filter.polls": "投票結果", - "notifications.filter.statuses": "Updates from people you follow", + "notifications.filter.statuses": "已關注的用戶的最新動態", "notifications.group": "{count} 條通知", - "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_banner.enable": "Enable desktop notifications", - "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.mark_as_read": "標記所有通知為已讀", + "notifications.permission_denied": "瀏覽器的桌面通知權限設定為拒絕,因此不可以啟用桌面通知", + "notifications.permission_denied_alert": "瀏覽器的桌面通知權限設定為拒絕,因此不可以啟用桌面通知", + "notifications_permission_banner.enable": "啟用桌面通知", + "notifications_permission_banner.how_to_control": "啟用桌面通知可以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,你可以透過上面的 {icon} 按鈕準確控制哪些類型的互動會產生桌面通知。", + "notifications_permission_banner.title": "不放過任何通知", + "picture_in_picture.restore": "還原影片播放器", "poll.closed": "已關閉", "poll.refresh": "重新整理", "poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}", @@ -468,7 +468,7 @@ "upload_modal.detect_text": "從圖片偵測文字", "upload_modal.edit_media": "編輯媒體", "upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。", - "upload_modal.preparing_ocr": "Preparing OCR…", + "upload_modal.preparing_ocr": "準備辨識圖片文字…", "upload_modal.preview_label": "預覽 ({ratio})", "upload_progress.label": "上載中……", "video.close": "關閉影片", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 598407a304..a38a7c07a2 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -254,8 +254,8 @@ "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點", "keyboard_shortcuts.up": "往上移動名單項目", "lightbox.close": "關閉", - "lightbox.compress": "Compress image view box", - "lightbox.expand": "Expand image view box", + "lightbox.compress": "折疊圖片檢視框", + "lightbox.expand": "展開圖片檢視框", "lightbox.next": "下一步", "lightbox.previous": "上一步", "lightbox.view_context": "檢視內文", @@ -280,7 +280,7 @@ "mute_modal.duration": "持續時間", "mute_modal.hide_notifications": "隱藏來自這位使用者的通知?", "mute_modal.indefinite": "無期限", - "navigation_bar.apps": "封鎖的使用者", + "navigation_bar.apps": "行動應用程式", "navigation_bar.blocks": "封鎖使用者", "navigation_bar.bookmarks": "書籤", "navigation_bar.community_timeline": "本機時間軸", @@ -335,12 +335,12 @@ "notifications.filter.polls": "投票結果", "notifications.filter.statuses": "已跟隨使用者的最新動態", "notifications.group": "{count} 條通知", - "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_banner.enable": "Enable desktop notifications", - "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", + "notifications.mark_as_read": "將所有通知都標記為已讀", + "notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用", + "notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知", + "notifications_permission_banner.enable": "啟用桌面通知", + "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,你可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。", + "notifications_permission_banner.title": "不要錯過任何東西!", "picture_in_picture.restore": "還原", "poll.closed": "已關閉", "poll.refresh": "重新整理", diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml index 2fbf0ffd71..3b976de8c4 100644 --- a/config/locales/activerecord.ku.yml +++ b/config/locales/activerecord.ku.yml @@ -1 +1,17 @@ ---- {} +--- +ku: + activerecord: + attributes: + poll: + expires_at: وادەی کۆتایی + options: هەڵبژاردنەکان + errors: + models: + account: + attributes: + username: + invalid: تەنها پیت، ژمارە و ژێرەوە + status: + attributes: + reblog: + taken: لە بار بوونی هەیە diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 1d2d7d9104..3de687ed68 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -842,6 +842,7 @@ ca: request: Sol·licita el teu arxiu size: Mida blocks: Persones que has blocat + bookmarks: Marcadors csv: CSV domain_blocks: Bloquejos de dominis lists: Llistes @@ -918,6 +919,7 @@ ca: success: Les dades s'han rebut correctament i es processaran en breu types: blocking: Llista de blocats + bookmarks: Marcadors domain_blocking: Llistat de dominis bloquejats following: Llista de seguits muting: Llista de silenciats @@ -1074,6 +1076,7 @@ ca: relationships: activity: Activitat del compte dormant: Inactiu + follow_selected_followers: Segueix als seguidors seleccionats followers: Seguidors following: Seguint invited: Convidat diff --git a/config/locales/co.yml b/config/locales/co.yml index 9fe3ecb1e6..7cf6f2108c 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -1074,6 +1074,7 @@ co: relationships: activity: Attività di u contu dormant: Inattivu + follow_selected_followers: Abbunassi à l'abbunati selezziunati followers: Abbunati following: Abbunamenti invited: Invitatu diff --git a/config/locales/da.yml b/config/locales/da.yml index 984bd3cc47..c98404066e 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -754,6 +754,7 @@ da: request: Anmod om dit arkiv size: Størrelse blocks: Du blokerer + bookmarks: Bogmærker csv: CSV domain_blocks: Domæne blokeringer lists: Lister @@ -816,6 +817,7 @@ da: success: Dine data blev succesfuldt uploaded og vil nu blive behandlet hurtigst muligt types: blocking: Blokeringsliste + bookmarks: Bogmærker domain_blocking: Domæne blokeringsliste following: Følgningsliste muting: Liste over dæmpninger @@ -941,6 +943,7 @@ da: unrecognized_emoji: er ikke en genkendt emoji relationships: activity: Aktivitet for konto + follow_selected_followers: Følg valgte følgere followers: Følgere following: Følger invited: Inviteret diff --git a/config/locales/de.yml b/config/locales/de.yml index 1e3b1dc315..78c7c6f15d 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -842,6 +842,7 @@ de: request: Dein Archiv anfragen size: Größe blocks: Du hast blockiert + bookmarks: Lesezeichen csv: CSV domain_blocks: Domainblockaden lists: Listen @@ -918,6 +919,7 @@ de: success: Deine Daten wurden erfolgreich hochgeladen und werden in Kürze verarbeitet types: blocking: Blockierliste + bookmarks: Lesezeichen domain_blocking: Domain-Blockliste following: Folgeliste muting: Stummschaltungsliste @@ -1074,6 +1076,7 @@ de: relationships: activity: Kontoaktivität dormant: Inaktiv + follow_selected_followers: Ausgewählte Follower folgen followers: Folgende following: Folgt invited: Eingeladen diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml index 743a1bfd5b..56ec4637df 100644 --- a/config/locales/devise.cs.yml +++ b/config/locales/devise.cs.yml @@ -60,6 +60,19 @@ cs: title: Záložní kódy pro 2FA změněny unlock_instructions: subject: 'Mastodon: Instrukce pro odemčení účtu' + webauthn_credential: + added: + explanation: Následující bezpečnostní klíč byl přidán k vašemu účtu + subject: 'Mastodon: Nový bezpečnostní klíč' + title: Byl přidán nový bezpečnostní klíč + deleted: + explanation: Následující bezpečnostní klíč byl odstraněn z vašeho účtu + subject: 'Mastodon: Bezpečnostní klíč byl smazán' + title: Jeden z vašich bezpečnostních klíčů byl smazán + webauthn_disabled: + title: Bezpečnostní klíče zakázány + webauthn_enabled: + title: Bezpečnostní klíče povoleny omniauth_callbacks: failure: Nelze vás ověřit z %{kind}, protože „%{reason}“. success: Úspěšně ověřeno z účtu %{kind}. diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml index 2fbf0ffd71..11ec465942 100644 --- a/config/locales/devise.es.yml +++ b/config/locales/devise.es.yml @@ -1 +1,115 @@ ---- {} +--- +es: + devise: + confirmations: + confirmed: Su direccion de email ha sido confirmada con exito. + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos. + send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos. + failure: + already_authenticated: Usted ya está registrado. + inactive: Su cuenta todavía no está activa. + invalid: Inválido %{authentication_keys} o contraseña. + last_attempt: Tiene un intento más antes de que su cuenta sea bloqueada. + locked: Su cuenta está bloqueada. + not_found_in_database: Inválido %{authentication_keys} o contraseña. + pending: Su cuenta aun se encuentra bajo revisión. + timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar. + unauthenticated: Necesita iniciar sesión o registrarse antes de continuar. + unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar. + mailer: + confirmation_instructions: + action: Verificar dirección de correo electrónico + action_with_app: Confirmar y regresar a %{app} + explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estas a un clic de activarla. Si no fue usted, por favor ignore este correo electrónico. + explanation_when_pending: Usted ha solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirme su dirección de correo electrónico, revisaremos su aplicación. No puede iniciar sesión hasta que su aplicación sea revisada. Si su solicitud está rechazada, sus datos serán eliminados, así que no será necesaria ninguna acción adicional por ti. Si no fuera usted, por favor ignore este correo electrónico. + extra_html: Por favor revise las reglas de la instancia y nuestros términos de servicio. + subject: 'Mastodon: Instrucciones de confirmación para %{instance}' + title: Verificar dirección de correo electrónico + email_changed: + explanation: 'El correo electrónico para su cuenta esta siendo cambiada a:' + extra: Si usted no ha cambiado su correo electrónico, es probable que alguien haya conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte al administrador de la instancia si usted no puede iniciar sesión. + subject: 'Mastodon: Correo electrónico cambiado' + title: Nueva dirección de correo electrónico + password_change: + explanation: La contraseña de su cuenta a sido cambiada. + extra: Si usted no a cambiado su contraseña. es probable que alguien a conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte a el administrador de la instancia si usted esta bloqueado de su cuenta. + subject: 'Mastodon: Contraseña cambiada' + title: Contraseña cambiada + reconfirmation_instructions: + explanation: Confirme la nueva dirección para cambiar su coreo electrónico. + extra: Si no iniciaste este cambio, por favor ignora este correo. Esta dirección de correo para la cuenta de Mastodon no cambiará hasta que accedas al vinculo arriba. + subject: 'Mastodon: Confirme correo electrónico para %{instance}' + title: Verifique dirección de correo electrónico + reset_password_instructions: + action: Cambiar contraseña + explanation: Solicitaste una nueva contraseña para tu cuenta. + extra: Si no solicitaste esto, por favor ignora este correo. Tu contraseña no cambiará hasta que tu accedas al vinculo arriba y crees una nueva. + subject: 'Mastodon: Instrucciones para reiniciar contraseña' + title: Reiniciar contraseña + two_factor_disabled: + explanation: La autenticación de dos factores para tu cuenta ha sido deshabilitada. Ahora puedes conectarte solamente usando la dirección de correo electrónico y la contraseña. + subject: 'Mastodon: La autenticación de dos factores está deshabilitada' + title: 2FA desactivada + two_factor_enabled: + explanation: La autenticación de dos factores para tu cuenta ha sido habilitada. Se requiere un token generado por la aplicación TOTP emparejada para ingresar. + subject: 'Mastodon: La autenticación de dos factores está habilitada' + title: 2FA activada + two_factor_recovery_codes_changed: + explanation: Los códigos de recuperación previos han sido invalidados y se generaron códigos nuevos. + subject: 'Mastodon: Los códigos de recuperación de dos factores fueron regenerados' + title: Códigos de recuperación 2FA cambiados + unlock_instructions: + subject: 'Mastodon: Instrucciones para desbloquear' + webauthn_credential: + added: + explanation: La siguiente clave de seguridad ha sido añadida a su cuenta + subject: 'Mastodon: Nueva clave de seguridad' + title: Se agregó una nueva clave de seguridad + deleted: + explanation: La siguiente clave de seguridad ha sido eliminada de su cuenta + subject: 'Mastodon: Clave de seguridad eliminada' + title: Una de sus claves de seguridad ha sido eliminada + webauthn_disabled: + explanation: La autenticación con claves de seguridad ha sido desactivada para tu cuenta. El inicio de sesión es ahora posible únicamente utilizando el token generado por la aplicación emparejada TOTP. + subject: 'Mastodon: Autenticación con claves de seguridad desactivada' + title: Claves de seguridad desactivadas + webauthn_enabled: + explanation: La autenticación con clave de seguridad ha sido habilitada para su cuenta. Su clave de seguridad ahora puede ser usada para iniciar sesión. + subject: 'Mastodon: Autenticación con clave de seguridad activada' + title: Claves de seguridad activadas + omniauth_callbacks: + failure: No podemos autentificarle desde %{kind} debido a "%{reason}". + success: Autentificado con éxito desde la cuenta %{kind} . + passwords: + no_token: No puede acceder a esta página sin provenir desde el correo de reinicio de contraseña. Si viene desde el correo de reinicio de contraseña, por favor asegúrese que está utilizando la dirección completa proporcionada. + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo reiniciar su contraseña en pocos minutos. + send_paranoid_instructions: Si su correo electrónico existe en nuestra base de datos, recibirá un enlace de recuperación de contraseña en su dirección de correo en pocos minutos. + updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado. + updated_not_active: Su contraseña ha sido cambiada con éxito. + registrations: + destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo." + signed_up: "¡Bienvenido! Se ha registrado con éxito." + signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía. + signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada. + signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada. + signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta. + update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo. + updated: su cuenta ha sido actualizada con éxito. + sessions: + already_signed_out: Cerró sesión con éxito. + signed_in: Se registró con éxito. + signed_out: Cerró sesión con éxito. + unlocks: + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo desbloquear su cuenta en pocos minutos. + send_paranoid_instructions: Si su cuenta existe, recibirá un correo electrónico con instrucciones sobre cómo desbloquearla en pocos minutos. + unlocked: Su cuenta ha sido desbloqueada con éxito. Por favor inicie sesión para continuar. + errors: + messages: + already_confirmed: ya fue confirmado, por favor intente iniciar sesión + confirmation_period_expired: necesita ser confirmado dentro de %{period}, por favor pida una nueva + expired: ha expirado, por favor pida una nueva + not_found: no encontrado + not_locked: no fue bloqueada + not_saved: + one: '1 error prohibió este %{resource} de ser guardado:' + other: "%{count} errores prohibieron este %{resource} de ser guardado:" diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml index 07ab2557a4..6c8718f28c 100644 --- a/config/locales/devise.gl.yml +++ b/config/locales/devise.gl.yml @@ -19,7 +19,7 @@ gl: mailer: confirmation_instructions: action: Verificar o enderezo de email - action_with_app: Confirmar e voltar a %{app} + action_with_app: Confirmar e volver a %{app} explanation: Creaches unha conta en %{host} con este enderezo de email. Estás a un clic de activala. Se non foches ti o que fixeches este rexisto, por favor ignora esta mensaxe. explanation_when_pending: Solicitaches un convite para %{host} con este enderezo de email. Logo de que confirmes o teu enderezo de email, imos revisar a túa inscrición. Podes iniciar sesión para mudar os teus datos ou eliminar a túa conta, mais non poderás aceder á meirande parte das funcións até que a túa conta sexa aprobada. Se a túa inscrición for rexeitada, os teus datos serán eliminados, polo que non será necesaria calquera acción adicional da túa parte. Se non solicitaches este convite, por favor, ignora este correo. extra_html: Por favor, le as regras do servidor e os nosos termos do servizo. diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 8805668953..73e79be23a 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -76,7 +76,7 @@ ja: webauthn_enabled: explanation: あなたのアカウントでセキュリティキー認証が有効になりました。セキュリティキーをログインに使用できるようになりました。 subject: 'Mastodon: セキュリティキー認証が有効になりました' - title: セキュリティキーは無効になっています + title: セキュリティキーは有効になっています omniauth_callbacks: failure: "%{reason}によって%{kind}からのアクセスを認証できませんでした。" success: "%{kind}からのアクセスは正常に認証されました。" diff --git a/config/locales/devise.ku.yml b/config/locales/devise.ku.yml index 2fbf0ffd71..64c305681d 100644 --- a/config/locales/devise.ku.yml +++ b/config/locales/devise.ku.yml @@ -1 +1,115 @@ ---- {} +--- +ku: + devise: + confirmations: + confirmed: ناونیشانی ئیمەیڵەکەت بە سەرکەوتوویی پشتڕاستکرایەوە. + send_instructions: ئیمەیڵێکت بۆ دەنێردرێت لەگەڵ ڕێنمایی بۆ چۆنیەتی دڵنیابوون لە ناونیشانی ئیمەیلەکەت لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت چاولێبکە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + send_paranoid_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، ئیمەیڵێکت پێدەگات لەگەڵ ڕێنماییەکانی چۆنیەتی دڵنیابوون لە ناونیشانی ئیمەیلەکەت لە چەند خولەکێکدا. تکایە بۆخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + failure: + already_authenticated: تۆ پێشتر چوونە ژوورەوەت کردووە. + inactive: هەژمارەکەت هێشتا کارا نەکراوە. + invalid: "%{authentication_keys} یان نهێنوشە نادروستە." + last_attempt: تۆ یەک هەوڵیدیکەت ماوە پێش ئەوەی ئەژمێرەکەت قوفڵ بێت. + locked: هەژمارەکت داخراوە. + not_found_in_database: "%{authentication_keys} یان نهێنوشە نادروستە." + pending: هەژمێرەکەت هێشتا لەژێر پێداچوونەوەدایە. + timeout: کۆبوونەوەکەت بەسەرچووە. تکایە دووبارە بچۆ ژوورەوە بۆ بەردەوام بوون. + unauthenticated: پێویستە بچیتە ژوورەوە یان بچیتە ناو چوونە ناو پێش بەردەوام بوون. + unconfirmed: دەبێت ناونیشانی ئیمەیڵەکەت پشتڕاست بکەیتەوە پێش بەردەوام بوون. + mailer: + confirmation_instructions: + action: ناونیشانی ئیمەیڵ ساخ بکەرەوە + action_with_app: پشتڕاستی بکەوە و بگەڕێوە بۆ %{app} + explanation: ئەژمێرێکت دروست کردووە لەسەر %{host} بەم ناونیشانی ئیمەیڵە. تۆ یەک کرتە دووریت لە کاراکردنی. ئەگەر ئەمە تۆ نەبووی، تکایە ئەم ئیمەیڵە فەرامۆش بکە. + explanation_when_pending: تۆ داوای بانگهێشتت کرد بۆ %{host} بەم ناونیشانی ئیمەیڵە. هەر کە دڵنیایی لە ناونیشانی ئیمەیڵەکەت دەکەیت، ئێمە پێداچوونەوە دەکەین بە بەرنامەکەتدا. دەتوانیت بچیت بۆ چوونە ژوورەوە بۆ گۆڕینی ووردەکاریەکانت یان سڕینەوەی هەژمارەکەت، بەڵام ناتوانیت دەستگەیشتنت هەبێت بە زۆربەی ئەرکەکان تا ئەژمێرەکەت پەسەند ناکرێت. ئەگەر کاربەرنامەکەت ڕەتکرایەوە، داتاکەت لادەبرێت، بۆیە پێویست بە کاری زیاتر لە تۆ ناکرێت. ئەگەر ئەمە تۆ نەبووی، تکایە ئەم ئیمەیڵە فەرامۆش بکە. + extra_html: تکایە تێڕوانە لە ڕێساکانی ڕاژەکار و مەرجەکانی خزمەتگوزاری. + subject: 'ماستۆدۆن: ڕێنماییەکانی پشتڕاستکردنەوە بۆ %{instance}' + title: ناونیشانی ئیمەیڵ ساخ بکەرەوە + email_changed: + explanation: 'ناونیشانی ئیمەیڵەکەی ئەژمێرەکەت دەگۆڕدرێت بۆ:' + extra: ئەگەر ئیمەیلەکەت نەگۆڕیت، لەوانەیە کەسێک دەستگەیشتنی بۆ هەژمارەکەت بەدەست بێت. تکایە تێپەڕوشەکەت بگۆڕە دەستبەجێ یان پەیوەندی بکە بە بەڕێوەبەری ڕاژەوە ئەگەر تۆ لە هەژمارەکەت داخرایت. + subject: 'ماستۆدۆن: ئیمەیڵ گۆڕا' + title: ناونیشانی ئیمەیڵی نوێ + password_change: + explanation: تێپەڕوشە بۆ هەژمارەکەت گۆڕاوە. + extra: ئەگەر تێپەڕوشەکەت نەگۆڕی، وا دیارە کەسێک دەستگەیشتنی بۆ هەژمارەکەت بەدەست بێت. تکایە تێپەڕوسيکەت بگۆڕە دەستبەجێ یان پەیوەندی بکە بە بەڕێوەبەری ڕاژە ئەگەر تۆ لە هەژمارەکەت داخرایت. + subject: 'ماستۆدۆن: تێپەڕوشە گۆڕدرا' + title: تێپەڕوشە گۆڕدرا + reconfirmation_instructions: + explanation: دڵنیابوون لە ناونیشانی نوێ بۆ گۆڕینی ئیمەیڵەکەت. + extra: ئەگەر ئەم گۆڕانکاریە لەلایەن تۆوە دەست پێنەکراوە، تکایە ئەم ئیمەیڵە فەرامۆش بکە. ناونیشانی ئیمەیڵ بۆ هەژمێری ماستۆدۆن ناگۆڕێ هەتا ئەو کاتەی دەستپێگەیشتنی ئەم لینکەت لە سەرەوە نیە. + subject: 'ماستۆدۆن: دووپاتی ئیمەیل بۆ %{instance}' + title: ناونیشانی ئیمەیڵ ساخ بکەرەوە + reset_password_instructions: + action: گۆڕینی تێپەڕوشە + explanation: تۆ تیپەڕوشەی نوێت داوا کرد بۆ هەژمارەکەت. + extra: ئەگەر ئەم داواکاریەت نەکرد، تکایە ئەم ئیمەیڵە فەرامۆش بکە. تێپەڕوشەکەت ناگۆڕێ هەتا نەچیتە ناو لینکی سەرەوە و دانەیەکی نوێ دروست بکەیت. + subject: 'ماستۆدۆن: رێکردنەوەی رێنماییەکانی تێپەڕوشە' + title: گەڕانەوەی تێپەڕوشە + two_factor_disabled: + explanation: سەلماندنی دوو-فاکتەر بۆ هەژمارەکەت کە لە کارخراوە. چوونەژوورەوە ئێستا دەکرێت تەنها ناونیشانی ئیمەیڵ و تێپەڕوشەکەت بەکاربهێنی. + subject: 'ماستۆدۆن: سەلماندنی دوو-فاکتەری ناچالاک کراوە' + title: 2FA ناچالاک کرا + two_factor_enabled: + explanation: سەلماندنی دوو-فاکتەر بۆ هەژمارەکەت چالاک کراوە. ئاماژەیەک کە لەلایەن نەرمەکالایTOTP جووتکراو دروست کراوە پێویستە بە چوونە ژوورەوە. + subject: 'ماستۆدۆن: سەلماندنی دوو-فاکتەری چالاک کراوە' + title: 2FA چالاک کرا + two_factor_recovery_codes_changed: + explanation: کۆدەکانی چاککردنەوەی پێشوو هەڵوەشێنرانەوە و، نوێکان دروست بوون. + subject: 'ماستۆدۆن: کۆدەکانی گەڕانەوەی دوو فاکتەر، دووبارە دروست دەکرێتەوە' + title: 2FA کۆدی چاککردنەوە گۆڕا + unlock_instructions: + subject: 'ماستۆدۆن: رێنماییەکان بکەرەوە' + webauthn_credential: + added: + explanation: کلیلی ئاسایشی خوارەوە زیادکرا بۆ هەژمارەکەت + subject: 'ماستۆدۆن: کلیلی ئاسایشی نوێ' + title: کلیلی پاراستنی نوێ زیادکرا + deleted: + explanation: کلیلی ئاسایشی خوارەوە لە هەژمارەکەت سڕایەوە + subject: 'ماستۆدۆن: کلیلی پاراستن سڕایەوە' + title: کلیلە کانی پاراستنی یەکێک لە ئێوە سڕایەوە + webauthn_disabled: + explanation: سەلماندن بە کلیلەپارێزراوەکان لە کارخراوە بۆ هەژمارەکەت. چوونەژوورەوە ئێستا دەکرێت تەنها ئەو نیشانەیە بەکاربێنیت کە لەلایەن نەرمەکالایTOTP دروست کراوە. + subject: 'ماستۆدۆن: سەلماندن لەگەڵ کلیلە پاسایشی ناچالاک کراوە' + title: کلیلە پارستنەکان ناچالاک کراون + webauthn_enabled: + explanation: سەلماندنی کلیلی ئاسایش چالاک کراوە بۆ هەژمارەکەت. ئێستا کلیلی پاراستن دەتوانرێت بۆ چوونە ژوورەوە بەکار بێت. + subject: 'ماستۆدۆن: سەلماندنی کلیلی پاراستن چالاک کراوە' + title: کلیلە کانی پاراستن چالاک کرا + omniauth_callbacks: + failure: نەیتوانی ڕەسەنایە تی %{kind} بتەوبکات لەبەرئەوەی "%{reason}". + success: سەرکەوتووانە لە هەژماری %{kind} سەلمێنرا. + passwords: + no_token: ناتوانیت دەستگەیشتنت هەبێت بەم لاپەڕەیە بەبێ ئەوەی لە ئیمەیڵێکی گەڕانەوەی تێپەڕوشەت بێت. ئەگەر لە ئیمەیڵێکیگەڕانەوەی تێپەڕوشە هاتوویت، تکایە دڵنیابە لەوەی کە URLی تەواوت بەکارهێناوە کە دابینکراوە. + send_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، لە چەند خولەکێکی کەمدا لینکی هێنانەوەی تێپەڕوشە لە ناونیشانی ئیمەیلەکەت پێ دەگات. تکایە بوخچەی سپامەکەت بکەرەوە، ئەگەر ئەم ئیمەیڵەت پێنەدرا. + send_paranoid_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، لە چەند خولەکێکی کەمدا لینکی هێنانەوەی تێپەڕوشە لە ناونیشانی ئیمەیلەکەت پێ دەگات. تکایە بوخچەی سپامەکەت بکەرەوە، ئەگەر ئەم ئیمەیڵەت پێنەدرا. + updated: تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدرا. تۆ ئێستاچوویتە ژوورەوە. + updated_not_active: تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدرا. + registrations: + destroyed: خوات لەگەڵ! ئەژمێرەکەت بە سەرکەوتوویی هەڵوەشێنرایەوە. هیوادارین بەزوویی بتبینینەوە. + signed_up: بەخێربێیت! تۆ بە سەرکەوتوویی تۆمار کرای. + signed_up_but_inactive: تۆ بە سەرکەوتوویی تۆمارکرای. هەرچۆنێک بێت، نەمانتوانی چوونە ژوورەوەت بۆ بکەین لەبەرئەوەی هێشتا هەژمارەکەت کارا نەکراوە. + signed_up_but_locked: تۆ بە سەرکەوتوویی تۆمارکرای. هەرچۆنێک بێت، نەمانتوانی چوونە ژوورەوەت بۆ بکەین لەبەرئەوەی هێشتا هەژمارەکەت قوفڵ کراوە. + signed_up_but_pending: نامەیەک بە لینکی دووپاتکردنەوە نێردراوە بۆ ناونیشانی ئیمەیڵەکەت. دوای ئەوەی تۆ کرتە لەسەر لینکەکە دەکەیت، ئێمە پێداچوونەوە دەکەین بە بەرنامەکەتدا. ئاگادار دەکرێیت ئەگەر پەسەند کرا. + signed_up_but_unconfirmed: نامەیەک بە لینکی دووپاتکردنەوە نێردراوە بۆ ناونیشانی ئیمەیڵەکەت. تکایە دوای لینکەکە بکەوە بۆ کاراکردنی هەژمارەکەت. تکایە بوخچەی سپامەکەت بکەرەوە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + update_needs_confirmation: تۆ ئەژمێرەکەت بە سەرکەوتوویی نوێکردەوە، بەڵام پێویستە ئیمەیڵە نوێکەت بسەلمێنین. تکایە ئیمەیڵەکەت بپشکنە و دوای بەستەری دڵنیابوونەوە بکەوە بۆ دڵنیابوون لە ناونیشانی ئیمەیڵە نوێکەت. تکایە بوخچەی سپامەکەت بکەرەوە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + updated: هەژمارەکەت بە سەرکەوتوویی نوێکرایەوە. + sessions: + already_signed_out: چوونە دەرەوە بە سەرکەوتوویی ئەنجام بوو. + signed_in: بە سەرکەوتوویی چوونە ژوورەوە. + signed_out: چوونە دەرەوە بە سەرکەوتوویی ئەنجام بوو. + unlocks: + send_instructions: ئیمەیڵێکت بۆ دەنێردرێت لەگەڵ ڕێنمایی بۆ چۆنیەتی کردنەوەی هەژمارەکەت لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + send_paranoid_instructions: ئەگەر هەژمارەکەت بوونی هەبێت، ئیمەیڵێکت پێدەگات لەگەڵ ڕێنمایی چۆنیەتی کردنەوەی لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا. + unlocked: هەژمارەکەت بە سەرکەوتوویی لە قوفڵ لاچوو. تکایە بچۆ ژوورەوە بۆ بەردەوام بوون. + errors: + messages: + already_confirmed: پێشتر پشتڕاست کرایەوە، تکایە هەوڵ دەدە بچۆ ژوورەوە + confirmation_period_expired: پێویستە لە نێو %{period} دا پشتڕاست بکرێتەوە، تکایە داوای دانەیەکی نوێ بکە + expired: بەسەرچووە، تکایە داوایەکی نوێ بکە + not_found: نەدۆزرایەوە + not_locked: دانەخرابوو + not_saved: + one: '١ هەڵە قەدەغەکرا ئەم %{resource} لە تۆمارکردن:' + other: "%{count} هەڵەی قەدەغەکرد کە %{resource} لە پاشکەوتکردن:" diff --git a/config/locales/devise.nn.yml b/config/locales/devise.nn.yml index 42eb0690aa..88d8458f7b 100644 --- a/config/locales/devise.nn.yml +++ b/config/locales/devise.nn.yml @@ -60,6 +60,21 @@ nn: title: 2FA-gjenopprettingskodane er endra unlock_instructions: subject: 'Mastodon: Instruksjonar for å opne kontoen igjen' + webauthn_credential: + added: + explanation: Følgende sikkerhetsnøkkel har blitt lagt til i kontoen din + subject: 'Mastodon: Ny sikkerhetsnøkkel' + title: En ny sikkerhetsnøkkel har blitt lagt til + deleted: + explanation: Følgende sikkerhetsnøkkel har blitt slettet fra kontoen din + subject: 'Mastodon: Sikkerhetsnøkkel slettet' + title: En av sikkerhetsnøklene dine har blitt slettet + webauthn_disabled: + subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av' + title: Sikkerhetsnøkler deaktivert + webauthn_enabled: + subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på' + title: Sikkerhetsnøkler aktivert omniauth_callbacks: failure: Du kunne ikkje verte autentisert frå %{kind} av di "%{reason}". success: Autentisert frå %{kind}-konto. diff --git a/config/locales/devise.vi.yml b/config/locales/devise.vi.yml index 0718a63fcf..c1914093a1 100644 --- a/config/locales/devise.vi.yml +++ b/config/locales/devise.vi.yml @@ -81,7 +81,7 @@ vi: failure: Không thể xác thực bạn từ %{kind} bởi vì "%{reason}". success: Xác thực thành công từ tài khoản %{kind}. passwords: - no_token: Bạn chỉ có thể truy cập trang này khi chuyển tiếp từ email phục hồi mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã sử dụng chính xác URL được cung cấp. + no_token: Bạn chỉ có thể truy cập trang này khi nhận được email phục hồi mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã dùng chính xác URL được cung cấp. send_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. send_paranoid_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này. updated: Mật khẩu của bạn đã được thay đổi thành công. Hiện tại bạn đã đăng nhập. diff --git a/config/locales/devise.zh-HK.yml b/config/locales/devise.zh-HK.yml index 01a6a73823..073898d1e7 100644 --- a/config/locales/devise.zh-HK.yml +++ b/config/locales/devise.zh-HK.yml @@ -60,6 +60,23 @@ zh-HK: title: 雙重認證恢復碼已更改 unlock_instructions: subject: 'Mastodon: 解除用戶鎖定' + webauthn_credential: + added: + explanation: 以下的安全鑰匙已經加進你的帳號 + subject: 'Mastodon: 新的安全鑰匙' + title: 已經加入一個新的安全鑰匙 + deleted: + explanation: 以下的安全鑰匙已經從你的帳號中移除了 + subject: 'Mastodon: 安全鑰匙已移除' + title: 你其中的一個安全鑰匙已經被移除了 + webauthn_disabled: + explanation: 你的帳號的安全鑰匙身份驗證已經停用。你只可以用過去已經配對好的基於時間一次性密碼程式生成的密碼來登錄。 + subject: 'Mastodon: 安全鑰匙身份驗證已經停用' + title: 已啟用安全鑰匙 + webauthn_enabled: + explanation: 安全鑰匙身份驗證已啟用。你的安全鑰匙現在可以用來登錄。 + subject: 'Mastodon: 安全鑰匙身份驗證已啟用' + title: 已啟用安全鑰匙 omniauth_callbacks: failure: 無法以 %{kind} 登入你的用戶,原因是︰「%{reason}」。 success: 成功以 %{kind} 登入你的用戶。 diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml index 89a579ae9a..65066cd8e8 100644 --- a/config/locales/doorkeeper.eo.yml +++ b/config/locales/doorkeeper.eo.yml @@ -116,22 +116,22 @@ eo: title: OAuth-a rajtigo bezonata scopes: admin:read: legu ĉiujn datumojn en la servilo - admin:read:accounts: legas senteman informacion de ĉiuj kontoj - admin:read:reports: legas konfidencajn informojn de ĉiuj signaloj kaj signalitaj kontoj - admin:write: modifu ĉiujn datumojn en la servilo + admin:read:accounts: legi konfidencajn informojn de ĉiuj kontoj + admin:read:reports: legi konfidencajn informojn de ĉiuj signaloj kaj signalitaj kontoj + admin:write: modifi ĉiujn datumojn en la servilo admin:write:accounts: plenumi agojn de kontrolo sur kontoj admin:write:reports: plenumi agojn de kontrolo sur signaloj follow: ŝanĝi rilatojn al aliaj kontoj push: ricevi viajn puŝ-sciigojn read: legi ĉiujn datumojn de via konto - read:accounts: vidi la informojn de la konto - read:blocks: vidi viajn blokojn + read:accounts: vidi la informojn de la kontoj + read:blocks: vidi viajn blokadojn read:bookmarks: vidi viajn legosignojn read:favourites: vidi viajn stelumojn read:filters: vidi viajn filtrilojn read:follows: vidi viajn sekvatojn read:lists: vidi viajn listojn - read:mutes: vidi viajn silentigojn + read:mutes: vidi viajn silentigadojn read:notifications: vidi viajn sciigojn read:reports: vidi viajn signalojn read:search: serĉi vianome @@ -140,7 +140,7 @@ eo: write:accounts: ŝanĝi vian profilon write:blocks: bloki kontojn kaj domajnojn write:bookmarks: aldoni mesaĝojn al la legosignoj - write:favourites: stelumitaj mesaĝoj + write:favourites: stelumi mesaĝojn write:filters: krei filtrilojn write:follows: sekvi homojn write:lists: krei listojn diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml index 2fbf0ffd71..29d5f40dbe 100644 --- a/config/locales/doorkeeper.ku.yml +++ b/config/locales/doorkeeper.ku.yml @@ -1 +1,151 @@ ---- {} +--- +ku: + activerecord: + attributes: + doorkeeper/application: + name: ناوی بەرنامە + redirect_uri: URI گۆڕانی شوێن + scopes: بوارەکان + website: نەرمەکالای ماڵپەڕ + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: ناتوانێت پارچەیەک لەخۆوە بگری. + invalid_uri: پێویستە URI دروست بێت. + relative_uri: پێویستە URI ی ڕەها بێت. + secured_uri: پێویستە HTTPS/SSL URI بێت. + doorkeeper: + applications: + buttons: + authorize: ڕێگەپێدان + cancel: هەڵوەشاندنەوه + destroy: لەناوبردن + edit: دەستکاری + submit: ناردن + confirmations: + destroy: دڵنیای? + edit: + title: دەستکاری کردنی بەرنامە + form: + error: تەحح! بزانە شتێکت لە نێو فۆرمەکە بە هەڵە نەنووسیوە + help: + native_redirect_uri: بۆ تاقیکردنەوەی ناوخۆیی %{native_redirect_uri} بەکاربەرە، + redirect_uri: بەکارهێنانی یەک هێڵ بۆ هەر URI + scopes: دۆمەینەکان جیاببکەن بە بۆشاییەکان. بۆ بەکارهێنانی دۆمەینی گریمانەیی چۆڵی بەجێبهێڵە. + index: + application: نەرمەکال + callback_url: Callback نیشانی + delete: سڕینەوە + empty: هیچ بەرنامەیەکت نیە. + name: ناو + new: بەرنامەی نوێ + scopes: دۆمەینەکان + show: نیشاندان + title: بەرنامەی تۆ + new: + title: بەرنامەی نوێ + show: + actions: کارەکان + application_id: کلیلی ڕاژەخواز + callback_urls: Callback نیشانەکانی + scopes: دۆمەینەکان + secret: نهێنی ڕاژەخواز + title: 'بەرنامە: %{name}' + authorizations: + buttons: + authorize: ڕێپێدراو + deny: نکۆڵی لێبکە + error: + title: هەڵەیەک ڕوویدا + new: + able_to: دەتوانێت + prompt: بەکارهێنانی %{client_name} داوای چوونە ژوورەوە بۆ هەژمارەکەت دەکات + title: ڕێپێدان پێویستە + show: + title: کۆپیکردنی کۆدی ئەم رێپێدانە و لکاندنی بە بەرنامەکە. + authorized_applications: + buttons: + revoke: بەتاڵی بکە + confirmations: + revoke: ئایا دڵنیایت? + index: + application: نەرمەکال + created_at: ده‌سه‌ڵاتپێدراو + date_format: "%Y-%m-%d %H:%M:%S" + scopes: بوارەکان + title: بەرنامە ڕێگەپێدراوەکانت + errors: + messages: + access_denied: خاوەنی سەرچاوە یان سێرڤەری ڕێپێدان داواکاریەکەی ڕەت کردەوە. + credential_flow_not_configured: لێشاوی بڕواپێدانی تێپەڕەوشەی خاوەن سەرچاوە شکستی هێنا بەهۆی Doorkeeper.configure.resource_owner_from_credentials شێوەبەندی نەکراو. + invalid_client: سەلماندنی کڕیار سەرکەوتوو نەبوو بەهۆی کڕیاری نەناسراوەوە، هیچ ڕەسەنایەتی سەلماندنێکی کلایەنت لەخۆوە نەدەگرێت، یان شێوازی سەلماندنی پەسەند نەکراو. + invalid_grant: بەخشین مۆڵەتی دابینکراو نایاساییە، بەسەرچووە، هەڵوەشاندنەوەیە، ناگونجێلەگەڵ ئاراستەی URI بەکارهاتوو لە داواکاری ڕێپێدان، یان دەرچووە بۆ کڕیارێکی تر. + invalid_redirect_uri: Uri دووبارە ئاڕاستەکردنەوەکە لەخۆدەگرێت دروست نیە. + invalid_request: داواکاریەکە پارامیتەری داواکراوی بزرە، بەهای پارامیتەری پشتگیری نەکراو لەخۆ دەگرێت، یان بە پێچەوانەوە نادروستە. + invalid_resource_owner: بڕواپێدانەکانی خاوەنی سەرچاوەی دابینکراو دروست نیە، یان ناتوانرێت خاوەنی سەرچاوە بدۆزرێتەوە + invalid_scope: بواری داواکراو نادروستە، نەناسراو، یان تێکچووە. + invalid_token: + expired: نیشانەی چوونەژورەوە بەسەرچووە + revoked: کۆدی دەستپێگەیشتن بەتاڵ بووەتەوە + unknown: دەستپێگەیشتن بە کۆدی چوونەژوور باوڕپێنەکراوە + resource_owner_authenticator_not_configured: خاوەنی سەرچاوە بەهۆی Doorkeeper.configure.resource_owner_authenticator کۆنفیگنەکردن سەرکەوتوو نەبوو. + server_error: ڕاژەکاری ڕێپێدان تووشی مەرجێکی چاوەڕوان نەکراو بوو کە رێگری دەکا لە جێبەجێ کردنی داواکاریەکە. + temporarily_unavailable: ڕاژەکاری ڕێپێدان لە ئێستادا ناتوانێت داواکاریەکە چارەسەر بکات لەبەر بارکردنی کاتی یان چاککردنەوەی سێرڤەرەکە. + unauthorized_client: ڕاژەخوازەکە دەسەڵاتی ئەوەی نییە ئەم داواکاریە بە بەکارهێنانی ئەم شێوازە بدات. + unsupported_grant_type: جۆری بەخشینە مۆڵەتپێدانەکە لەلایەن ڕاژەکاری مۆڵەتەوە پەسەند ناکرێت. + unsupported_response_type: ڕاژەکاری ڕێگەپێدان پشتگیری ئەم جۆرە وەڵامە ناکات. + flash: + applications: + create: + notice: بەرنامە دروستکرا. + destroy: + notice: بەرنامە سڕایەوە. + update: + notice: بەرنامە بەڕۆژکرا. + authorized_applications: + destroy: + notice: بەرنامە هەڵوەشێنڕا. + layouts: + admin: + nav: + applications: بەرنامەکان + oauth2_provider: OAuth2 Provider + application: + title: داوای ڕێپێدانی OAuth + scopes: + admin:read: خوێندنەوەی هەموو داتاکان لەسەر ڕاژەکارەکە + admin:read:accounts: زانیاری هەستیاری هەموو هەژمارەکان بخوێنەوە + admin:read:reports: زانیاری هەستیاری هەموو گوزارشت و هەژمارە گوزارشتکراوەکان بخوێنەوە + admin:write: دەستکاری هەموو داتاکان بکە لەسەر ڕاژەکار + admin:write:accounts: ئەنجامدانی کاری میانڕەوی لەسەر هەژمارەکان + admin:write:reports: ئەنجامدانی کاری میانڕەوی لەسەر گوزارشتەکان + follow: دەستکاریکردنی پەیوەندییەکانی هەژمارەی بەکارهێنەر + push: وەرگرتنی ئاگانامەکانی پاڵنان + read: هەموو دراوەکانی هەژمارەکەت بخوێنەوە + read:accounts: بینینی زانیاری هەژمارەکان + read:blocks: بینینی بلۆکەکانت + read:bookmarks: نیشانەکان ببینە + read:favourites: بینینی دڵخوازەکانت + read:filters: بینینی پاڵافتنەکانت + read:follows: سەیری شوێنکەوتەکانت بکە + read:lists: بینینی لیستەکانت + read:mutes: بێدەنگەکانت ببینە + read:notifications: ئاگانامەکانت ببینە + read:reports: سەیری گوزارشەکانت بکە + read:search: گەڕان لە جیاتی تۆ + read:statuses: بینینی هەموو بارودۆخەکان + write: دەستکاری هەموو داتاکانی هەژمارەکەت بکە + write:accounts: دەستکاری پرۆفایلەکەت بکە + write:blocks: بلۆک کردنی هەژمارەکەی دۆمەینەکان + write:bookmarks: بارەکانی نیشانکەر + write:favourites: دۆخی دڵخوازەکان + write:filters: پاڵێوەر دروست بکە + write:follows: دوای خەڵک بکەوە + write:lists: دروستکردنی لیستەکان + write:media: پەڕگەی میدیا باربکە + write:mutes: بێدەنگکردنی خەڵک و گفتوگۆکان + write:notifications: ئاگانامەکانت بسڕیەوە + write:reports: گوزارشتکردنی کەسانی تر + write:statuses: بڵاوکردنەوەی بارودۆخەکان diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml index 28be7fd40a..caeba3b715 100644 --- a/config/locales/doorkeeper.vi.yml +++ b/config/locales/doorkeeper.vi.yml @@ -15,7 +15,7 @@ vi: fragment_present: không thể chứa một mảnh. invalid_uri: phải là một URI hợp lệ. relative_uri: phải là một URI tuyệt đối. - secured_uri: phải sử dụng giao thức HTTPS / SSL. + secured_uri: phải là giao thức HTTPS/SSL. doorkeeper: applications: buttons: @@ -31,9 +31,9 @@ vi: form: error: Rất tiếc! Hãy kiểm tra thông tin của bạn bởi vì nó có lỗi help: - native_redirect_uri: Sử dụng %{native_redirect_uri} khi kiểm tra nội bộ - redirect_uri: Sử dụng mỗi dòng chỉ một URL - scopes: Phạm vi riêng biệt với không gian. Để trống để sử dụng phạm vi mặc định. + native_redirect_uri: Dùng %{native_redirect_uri} khi kiểm tra nội bộ + redirect_uri: Mỗi dòng chỉ một URL + scopes: Tách phạm vi ra bằng dấu cách. Bỏ trống để dùng phạm vi mặc định. index: application: Ứng dụng callback_url: Gọi lại URL @@ -81,7 +81,7 @@ vi: access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu. credential_flow_not_configured: Resource Owner Password Credentials không thành công do Doorkeeper.configure.resource_owner_from_credentials không được định cấu hình. invalid_client: Xác thực ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ. - invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị thu hồi hoặc không khớp với tài khoản đã cung cấp. + invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị thu hồi hoặc không khớp với tài khoản đã cấp phép. Hoặc xung đột với ứng dụng khác. invalid_redirect_uri: URL chuyển hướng không hợp lệ. invalid_request: Yêu cầu thiếu tham số bắt buộc, bao gồm giá trị tham số không được hỗ trợ hoặc không đúng định dạng. invalid_resource_owner: Thông tin xác thực chủ sở hữu tài nguyên được cung cấp không hợp lệ hoặc không thể tìm thấy chủ sở hữu tài nguyên @@ -119,8 +119,8 @@ vi: admin:read:accounts: đọc thông tin nhạy cảm của tất cả các tài khoản admin:read:reports: đọc thông tin của các báo cáo và các tài khoản bị báo cáo admin:write: sửa đổi tất cả dữ liệu trên máy chủ - admin:write:accounts: thực hiện hành động kiểm duyệt trên tài khoản - admin:write:reports: thực hiện hành động kiểm duyệt với các báo cáo + admin:write:accounts: áp đặt hành động kiểm duyệt trên tài khoản + admin:write:reports: áp đặt kiểm duyệt với các báo cáo follow: sửa đổi các mối quan hệ tài khoản push: nhận thông báo đẩy của bạn read: đọc tất cả dữ liệu tài khoản của bạn diff --git a/config/locales/doorkeeper.zgh.yml b/config/locales/doorkeeper.zgh.yml index 394184e760..5ec7e04b48 100644 --- a/config/locales/doorkeeper.zgh.yml +++ b/config/locales/doorkeeper.zgh.yml @@ -40,3 +40,6 @@ zgh: created_at: ⵜⴻⵜⵜⵓⵙⵓⵔⴳ date_format: "%d-%m-%Y %H:%M:%S" title: ⵜⵉⵙⵏⵙⵉⵡⵉⵏ ⵏⵏⴽ ⵉⵜⵜⵓⵙⵓⵔⴷⵏ + scopes: + read:notifications: ⵥⵕ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵏⵏⴽ + write:notifications: ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵏⵏⴽ diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 4ac565448c..e9256ad0c9 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -766,7 +766,7 @@ eo: filters: contexts: account: Profiloj - home: Hejma templinio + home: Hejmo kaj listoj notifications: Sciigoj public: Publika templinio thread: Konversacioj @@ -958,6 +958,7 @@ eo: relationships: activity: Konta aktiveco dormant: Dormanta + follow_selected_followers: Forigu selektitajn sekvantojn followers: Sekvantoj following: Sekvatoj invited: Invitita @@ -1088,8 +1089,8 @@ eo: other: "%{count} voĉdonoj" vote: Voĉdoni show_more: Malfoldi - show_newer: Neniam montru - show_older: Montru pli malnova + show_newer: Montri pli novajn + show_older: Montri pli malnovajn show_thread: Montri la fadenon sign_in_to_participate: Ensaluti por partopreni en la konversacio title: "%{name}: “%{quote}”" @@ -1167,7 +1168,7 @@ eo: tips: Konsiloj title: Bonvenon, %{name}! users: - follow_limit_reached: Vi ne povas sekvi pli da %{limit} homojn + follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j) invalid_email: La retadreso estas nevalida invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email} diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index d9c4171a70..0108f07841 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -842,6 +842,7 @@ es-AR: request: Solicitá tu archivo historial size: Tamaño blocks: Cuentas que bloqueaste + bookmarks: Marcadores csv: CSV domain_blocks: Dominios bloqueados lists: Listas @@ -855,7 +856,7 @@ es-AR: filters: contexts: account: Perfiles - home: Línea temporal principal + home: Inicio y listas notifications: Notificaciones public: Líneas temporales públicas thread: Conversaciones @@ -918,6 +919,7 @@ es-AR: success: Tus datos se subieron exitosamente y serán procesados en brevedad types: blocking: Lista de bloqueados + bookmarks: Marcadores domain_blocking: Lista de dominios bloqueados following: Lista de seguidos muting: Lista de silenciados @@ -1074,6 +1076,7 @@ es-AR: relationships: activity: Actividad de la cuenta dormant: Inactivas + follow_selected_followers: Seguir a los seguidores seleccionados followers: Seguidores following: Siguiendo invited: Invitado diff --git a/config/locales/es.yml b/config/locales/es.yml index 532835e39d..46285d84f4 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -842,6 +842,7 @@ es: request: Solicitar tu archivo size: Tamaño blocks: Personas que has bloqueado + bookmarks: Marcadores csv: CSV domain_blocks: Bloqueos de dominios lists: Listas @@ -918,6 +919,7 @@ es: success: Sus datos se han cargado correctamente y serán procesados en brevedad types: blocking: Lista de bloqueados + bookmarks: Marcadores domain_blocking: Lista de dominios bloqueados following: Lista de seguidos muting: Lista de silenciados @@ -1074,6 +1076,7 @@ es: relationships: activity: Actividad de la cuenta dormant: Inactivo + follow_selected_followers: Seguir a los seguidores seleccionados followers: Seguidores following: Siguiendo invited: Invitado diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 7435576a24..77740e9e34 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -839,6 +839,7 @@ fa: request: درخواست بایگانی داده‌هایتان size: اندازه blocks: حساب‌های مسدودشده + bookmarks: نشانک‌ها csv: CSV domain_blocks: دامین‌های مسدودشده lists: فهرست‌ها @@ -915,6 +916,7 @@ fa: success: داده‌های شما با موفقیت بارگذاری شد و به زودی پردازش می‌شود types: blocking: فهرست مسدودشده‌ها + bookmarks: نشانک‌ها domain_blocking: فهرست دامین‌های مسدودشده following: فهرست پی‌گیری‌ها muting: فهرست بی‌صداشده‌ها diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 90d9f6c781..90ed7cbe8c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -35,7 +35,7 @@ fr: status_count_before: Ayant publié tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles terms: Conditions d’utilisation - unavailable_content: Contenu non disponible + unavailable_content: Serveurs modérés unavailable_content_description: domain: Serveur reason: Motif @@ -568,7 +568,7 @@ fr: desc_html: Noms des domaines que ce serveur a découvert dans le fediverse title: Publier la liste des serveurs découverts preview_sensitive_media: - desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible + desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles title: Montrer les médias sensibles dans les prévisualisations OpenGraph profile_directory: desc_html: Permettre aux utilisateur·ice·s d’être découvert·e·s @@ -842,6 +842,7 @@ fr: request: Demandez vos archives size: Taille blocks: Vous bloquez + bookmarks: Signets csv: CSV domain_blocks: Bloqueurs de domaine lists: Listes @@ -855,7 +856,7 @@ fr: filters: contexts: account: Profils - home: Accueil + home: Accueil et listes notifications: Notifications public: Fils publics thread: Conversations @@ -918,6 +919,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 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 @@ -1074,6 +1076,7 @@ fr: relationships: activity: Activité du compte dormant: Dormant + follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s followers: Abonné·e·s following: Abonnements invited: Invité·e @@ -1209,8 +1212,8 @@ fr: other: "%{count} votes" vote: Voter show_more: Déplier - show_newer: Afficher les plus récents - show_older: Afficher les plus ancien + show_newer: Plus récents + show_older: Plus anciens show_thread: Afficher le fil de discussion sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation title: '%{name} : "%{quote}"' @@ -1362,7 +1365,7 @@ fr: title: disable: Compte gelé none: Avertissement - sensitive: Votre média a été marqué comme sensible + sensitive: Vos médias ont été marqués comme sensibles silence: Compte limité suspend: Compte suspendu welcome: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index d106e44095..89da4bf823 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -628,7 +628,7 @@ gl: delete: Eliminar o ficheiro subido destroyed_msg: Eliminado correctamente o subido! statuses: - back_to_account: Voltar a páxina da conta + back_to_account: Volver a páxina da conta batch: delete: Eliminar nsfw_off: Marcar como non sensible @@ -737,7 +737,7 @@ gl: saml: SAML register: Rexistro registration_closed: "%{instance} non está a aceptar novas usuarias" - resend_confirmation: Voltar a enviar intruccións de confirmación + resend_confirmation: Reenviar as intruccións de confirmación reset_password: Restablecer contrasinal security: Seguranza set_new_password: Estabelecer novo contrasinal @@ -842,6 +842,7 @@ gl: request: Solicite o ficheiro size: Tamaño blocks: Bloqueos + bookmarks: Marcadores csv: CSV domain_blocks: Bloqueos de dominio lists: Listaxes @@ -918,6 +919,7 @@ gl: success: Os seus datos foron correctamente subidos e serán procesados ao momento types: blocking: Lista de bloqueo + bookmarks: Marcadores domain_blocking: Lista de bloqueo de dominios following: Lista de seguimento muting: Lista de usuarias acaladas @@ -978,7 +980,7 @@ gl: warning: backreference_required: Tes que configurar primeiro a nova conta para referenciar hacia esta before: 'Antes de seguir, por favor lé estas notas con atención:' - cooldown: Tras a migración existe un período de calma durante o cal non poderás voltar a migrar de novo + cooldown: Tras a migración existe un período de calma durante o cal non poderás volver a migrar de novo disabled_account: Tras o cambio a túa conta actual non será totalmente usable, pero terás acceso a exportar os datos e tamén a reactivación. followers: Esta acción moverá todas as túas seguidoras desde a conta actual a nova conta only_redirect_html: De xeito alternativo, podes simplemente por unha redirección no perfil. @@ -1074,6 +1076,7 @@ gl: relationships: activity: Actividade da conta dormant: En repouso + follow_selected_followers: Seguir seguidoras seleccionadas followers: Seguidoras following: Seguindo invited: Convidado @@ -1155,7 +1158,7 @@ gl: aliases: Alcumes da conta appearance: Aparencia authorized_apps: Apps autorizadas - back: Voltar a Mastodon + back: Volver a Mastodon delete: Eliminación da conta development: Desenvolvemento edit_profile: Editar perfil @@ -1223,19 +1226,19 @@ gl: unlisted_long: Visible para calquera, pero non listado en liñas de tempo públicas stream_entries: pinned: Mensaxe fixada - reblogged: promovida + reblogged: comparteu sensitive_content: Contido sensible tags: does_not_match_previous_name: non concorda co nome anterior terms: body_html: | -

Intimidade

+

Privacidade

Qué información recollemos?

diff --git a/config/locales/hu.yml b/config/locales/hu.yml index fb17b24bcb..1a112c53af 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -842,6 +842,7 @@ hu: request: Archív kérése size: Méret blocks: Tiltólistádon + bookmarks: Könyvjelzők csv: CSV domain_blocks: Tiltott domainjeid lists: Listáid @@ -918,6 +919,7 @@ hu: success: Adataidat sikeresen feltöltöttük és feldolgozásukat megkezdtük types: blocking: Letiltottak listája + bookmarks: Könyvjelzők domain_blocking: Letiltott domainek listája following: Követettjeid listája muting: Némított felhasználók listája @@ -1074,6 +1076,7 @@ hu: relationships: activity: Fiók aktivitás dormant: Elhagyott + follow_selected_followers: Kiválasztott követők bekövetése followers: Követők following: Követve invited: Meghívva diff --git a/config/locales/hy.yml b/config/locales/hy.yml index d56aa0b9c3..2ea895b639 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -105,6 +105,7 @@ hy: confirm: Հաստատել confirmed: Հաստատված է confirming: Հաստատում + delete: Ջնջել տվյալները deleted: Ջնջված է demote: Աստիճանազրկել disable: Անջատել @@ -194,13 +195,17 @@ hy: create_account_warning: Ստեղծել զգուշացում create_announcement: Ստեղծել յայտարարութիւն create_email_domain_block: Ստեղծել էլ․ հասցէի դոմէյնի արգելափակում + create_ip_block: Ստեղծել IP կանոն destroy_announcement: Ջնջել յայտարարութիւնը destroy_domain_allow: Ջնջել դոմէնի թոյլտուութիւնը destroy_domain_block: Ապաարգելափակել դոմէնը destroy_email_domain_block: Ապաարգելափակել էլ․ հասցէի դոմէնը + destroy_ip_block: Ջնջել IP կանոնը destroy_status: Ջնջել գրառումը disable_2fa_user: Անջատել 2FA + disable_custom_emoji: Անջատել սեփական էմոջիները disable_user: Ապաակտիւացնել օգտատիրոջը + enable_custom_emoji: Միացնել սեփական էմոջիները enable_user: Ակտիւացնել օգտատիրոջը memorialize_account: Յիշել հաշիւը promote_user: Աջակցել օգտատիրոջը @@ -214,6 +219,7 @@ hy: unsilence_account: Լսել հաշուին unsuspend_account: Ապակասեցնել հաշիւը update_announcement: Թարմացնել յայտարարութիւնը + update_custom_emoji: Թարմացնել սեփական էմոջիները update_status: Թարմացնել գրառումը actions: assigned_to_self_report: "%{name} բողոքել է %{target} իրենց համար" @@ -347,6 +353,7 @@ hy: title: Մոդերացիա private_comment: Փակ մեկնաբանութիւն public_comment: Հրապարակային մեկնաբանութիւն + title: Դաշնություն total_blocked_by_us: Մենք արգելափակել ենք total_followed_by_them: Նրանք հետեւում են total_followed_by_us: Մենք հետեւում ենք @@ -360,6 +367,19 @@ hy: expired: Սպառուած title: Զտիչ title: Հրաւէրներ + ip_blocks: + add_new: Ստեղծել կանոն + delete: Ջնջել + expires_in: + '1209600': 2 շաբաթ + '15778476': 6 ամիս + '2629746': 1 ամիս + '31556952': 1 տարի + '86400': 1 օր + '94670856': 3 տարի + new: + title: Ստեղծել նոր IP կանոն + title: IP կանոններ pending_accounts: title: Սպասող հաշիւներ (%{count}) relationships: @@ -402,6 +422,8 @@ hy: settings: contact_information: username: Կոնտակտի ծածկանուն + custom_css: + title: Սեփական CSS domain_blocks: all: Բոլորին disabled: Ոչ մէկին @@ -468,6 +490,7 @@ hy: new_report: subject: Նոր բողոք %{instance}ի համար(#%{id}) appearance: + advanced_web_interface: Սյունակավոր ինտերֆեյս animations_and_accessibility: Անիմացիաներ եւ հասանելիութիւն discovery: Բացայայտում localization: @@ -523,6 +546,7 @@ hy: date: formats: default: "%b %d, %Y" + with_month_name: "%d %B %Y" datetime: distance_in_words: about_x_hours: "%{count}ժ" @@ -568,6 +592,7 @@ hy: request: Պահանջել քո արքիւը size: Չափը blocks: Արգելափակել + bookmarks: Էջանիշեր csv: CSV domain_blocks: Տիրոյթի արգելափակումներ lists: Ցանկեր @@ -580,6 +605,7 @@ hy: account: Պրոֆիլներ home: Տեղական հոսք notifications: Ծանուցումներ + public: Հանրային հոսքեր thread: Զրոյցներ edit: title: Խմբագրել զտիչը @@ -595,6 +621,7 @@ hy: trending_now: Այժմ արդիական generic: all: Բոլորը + changes_saved_msg: Փոփոխութիւնները յաջող պահուած են copy: Պատճենել delete: Ջնջել order_by: Դասաւորել ըստ @@ -617,9 +644,12 @@ hy: overwrite: Վերագրել types: blocking: Արգելափակումների ցուցակ + bookmarks: Էջանիշեր domain_blocking: Տիրոյթի արգելափակումների ցուցակ upload: Վերբեռնել invites: + delete: Ապաակտիւացնել + expired: Ժամկետանց expires_in: '1800': 30 րոպե '21600': 6 ժամ @@ -629,7 +659,13 @@ hy: '86400': 1 օր expires_in_prompt: Երբեք generate: Գեներացնել հրաւէրի յղում + max_uses: + one: "%{count} կիրառում" + other: "%{count} կիրառում" max_uses_prompt: Սահմանափակում չկայ + table: + expires_at: Սպառւում է + uses: Կիրառում title: Հրաւիրել մարդկանց media_attachments: validations: @@ -639,6 +675,7 @@ hy: errors: not_found: չգտնուեց past_migrations: Նախոդ միգրացիաները + proceed_with_move: Տեղափոխել հետեւորդներին warning: followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը moderation: @@ -657,12 +694,16 @@ hy: number: human: decimal_units: + format: "%n %u" units: billion: Մլր million: Մլն quadrillion: Քլր thousand: Հազ trillion: Տրլ + otp_authentication: + enable: Միացնել + setup: Կարգաւորել pagination: newer: Ավելի նոր next: Հաջորդ @@ -680,9 +721,14 @@ hy: last_active: Վերջին ակտիւութիւնը most_recent: Վերջին moved: Տեղափոխուած + mutual: Փոխադարձ primary: Հիմնական + relationship: Կապ + remove_selected_domains: Հեռացնել բոլոր հետեւորդներին նշուած դոմեյններից + remove_selected_followers: Հեռացնել նշուած հետեւորդներին status: Հաշուի կարգավիճակ sessions: + activity: Վերջին թութը browser: Դիտարկիչ browsers: alipay: Alipay @@ -719,14 +765,31 @@ hy: revoke: Չեղարկել settings: account: Հաշիվ + appearance: Տեսք + delete: Հաշուի ջնջում + development: Ծրագրավորում edit_profile: Խմբագրել պրոֆիլը + export: Տվյալների արտահանում import: Ներմուծել import_and_export: Ներմուծել և արտահանել + migrate: Հաշուի տեղափոխում notifications: Ծանուցումներ + preferences: Կարգավորումներ profile: Հաշիւ + relationships: Հետեւումներ և հետեւորդներ two_factor_authentication: Երկքայլ նոյնականացում + webauthn_authentication: Անվտանգութեան բանալիներ statuses: + attached: + audio: + one: "%{count} ձայնագրութիւն" + other: "%{count} ձայնագրութիւն" + image: + one: "%{count} նկար" + other: "%{count} նկար" + language_detection: Ինքնուրոյն ճանաչել լեզուն open_in_web: Բացել վէբում + over_character_limit: "%{max} նիշի սահմանը գերազանցուած է" poll: total_people: one: "%{count} մարդ" @@ -736,10 +799,16 @@ hy: other: "%{count} ձայներ" vote: Քուէարկել show_more: Աւելին + show_thread: Բացել շղթան + sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար title: '%{name}: "%{quote}"' visibilities: private: Միայն հետեւողներին + private_long: Հասանելի միայն հետեւորդներին public: Հրապարակային + public_long: Տեսանելի բոլորին + unlisted: Ծածուկ + unlisted_long: Տեսանելի է բոլորին, բայց չի յայտնւում հանրային հոսքերում stream_entries: pinned: Ամրացուած թութ reblogged: տարածուած @@ -830,6 +899,7 @@ hy:

Ոչ պաշտօնական, ոչ իրաւական թարգմանութիւն

themes: + contrast: Mastodon (բարձր կոնտրաստով) default: Mastodon (Մուգ) mastodon-light: Mastodon (Լուսավոր) time: @@ -837,13 +907,28 @@ hy: default: "%b %d, %Y, %H:%M" month: "%b %Y" two_factor_authentication: + add: Ավելացնել disable: Անջատել + disabled_success: Երկքայլ նոյնականացումը հաջողութեամբ անջուած է + edit: Խմբագրել enabled: Երկքայլ նոյնականացումը միացուած է + enabled_success: Երկքայլ նոյնականացումը հաջողութեամբ միացուած է + generate_recovery_codes: Ստեղծել վերականգնման կոդեր + lost_recovery_codes: Վերականգնման կոդերը հնարաւորութիւն են տալիս մուտք գործել հաշիւ՝ հեռախօսի կորստի դէպքում։ Եթէ կորցրել ես վերականգնման կոդերը, այստեղ կարող ես ստեղծել նորերը։ Նախկին վերականգման կոդերը կչեղարկվեն։ + methods: Երկքայլ նոյնականացում տարբերակներ + otp: Նոյնականացման հավելված + recovery_codes: Վերականգնման կոդեր + recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են user_mailer: warning: title: none: Զգուշացում welcome: + final_action: Սկսել թթել + subject: Բարի գալուստ Մաստոդոն + tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։ + tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։ + tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի օգտատերի գրառումները։ Նրանք քո հանգոյցի հարևաններն են։ tips: Հուշումներ users: blocked_email_provider: Սույն էլփոստի տրամադրողը արգելված է @@ -855,3 +940,5 @@ hy: verification: explanation_html: Պիտակների յղումների հեղինակութիւնը կարելի է վաւերացնել։ Անհրաժեշտ է որ յղուած կայքը պարունակի յետադարձ յղում ձեր մաստադոնի էջին, որը պէտք է ունենայ rel="me" նիշքը։ Յղման բովանդակութիւնը կարևոր չէ։ Օրինակ՝ verification: Ստուգում + webauthn_credentials: + delete: Ջնջել diff --git a/config/locales/id.yml b/config/locales/id.yml index f73f2afbdd..cb9dcb1494 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -834,6 +834,7 @@ id: request: Meminta arsip Anda size: Ukuran blocks: Anda blokir + bookmarks: Markah csv: CSV domain_blocks: Blokir domain lists: Daftar @@ -909,6 +910,7 @@ id: success: Data anda berhasil diupload dan akan diproses sesegera mungkin types: blocking: Daftar diblokir + bookmarks: Markah domain_blocking: Daftar blokir domain following: Daftar diikuti muting: Daftar didiamkan @@ -1062,6 +1064,7 @@ id: relationships: activity: Aktivitas akun dormant: Terbengkalai + follow_selected_followers: Ikuti pengikut yang dipilih followers: Pengikut following: Mengikuti invited: Diundang diff --git a/config/locales/is.yml b/config/locales/is.yml index eede67bdcb..a011322e42 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1074,6 +1074,7 @@ is: relationships: activity: Virkni aðgangs dormant: Sofandi + follow_selected_followers: Fylgjast með völdum fylgjendum followers: Fylgjendur following: Fylgist með invited: Boðið diff --git a/config/locales/it.yml b/config/locales/it.yml index 563f80eb1d..24ccc7d765 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -844,6 +844,7 @@ it: request: Chiedi il tuo archivio size: Dimensioni blocks: Stai bloccando + bookmarks: Segnalibri csv: CSV domain_blocks: Blocchi di dominio lists: Liste @@ -920,6 +921,7 @@ it: success: Le tue impostazioni sono state importate correttamente e verranno applicate in breve tempo types: blocking: Lista dei bloccati + bookmarks: Segnalibri domain_blocking: Lista dei domini bloccati following: Lista dei seguiti muting: Lista dei silenziati @@ -1076,6 +1078,7 @@ it: relationships: activity: Attività dell'account dormant: Dormiente + follow_selected_followers: Segui i seguaci selezionati followers: Seguaci following: Seguiti invited: Invitato diff --git a/config/locales/ja.yml b/config/locales/ja.yml index c0e182ec70..4d195c4481 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -183,7 +183,7 @@ ja: search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー search_same_ip: 同じ IP のユーザーを検索 sensitive: 閲覧注意 - sensitized: 閲覧注意にする + sensitized: 閲覧注意済み shared_inbox_url: Shared inbox URL show: created_reports: このアカウントで作られた通報 @@ -198,7 +198,7 @@ ja: time_in_queue: "%{time} 待ち" title: アカウント unconfirmed_email: 確認待ちのメールアドレス - undo_sensitized: 機密情報から戻す + undo_sensitized: 閲覧注意から戻す undo_silenced: サイレンスから戻す undo_suspension: 停止から戻す unsubscribe: 購読の解除 @@ -238,9 +238,11 @@ ja: reopen_report: 通報を再度開く reset_password_user: パスワードをリセット resolve_report: 通報を解決済みにする + sensitive_account: アカウントのメディアを閲覧注意にマーク silence_account: アカウントをサイレンス suspend_account: アカウントを停止 unassigned_report: 通報の担当を解除 + unsensitive_account: アカウントのメディアの閲覧注意マークを解除 unsilence_account: アカウントのサイレンスを解除 unsuspend_account: アカウントの停止を解除 update_announcement: お知らせを更新 @@ -276,9 +278,11 @@ ja: reopen_report: "%{name} さんが通報 %{target} を再び開きました" reset_password_user: "%{name} さんが %{target} さんのパスワードをリセットしました" resolve_report: "%{name} さんが通報 %{target} を解決済みにしました" + sensitive_account: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました" silence_account: "%{name} さんが %{target} さんをサイレンスにしました" suspend_account: "%{name} さんが %{target} さんを停止しました" unassigned_report: "%{name} さんが通報 %{target} の担当を外しました" + unsensitive_account: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました" unsilence_account: "%{name} さんが %{target} さんのサイレンスを解除しました" unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました" update_announcement: "%{name} さんがお知らせ %{target} を更新しました" @@ -825,6 +829,7 @@ ja: request: アーカイブをリクエスト size: 容量 blocks: ブロック + bookmarks: ブックマーク csv: CSV domain_blocks: 非表示にしたドメイン lists: リスト @@ -900,6 +905,7 @@ ja: success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください types: blocking: ブロックしたアカウントリスト + bookmarks: ブックマーク domain_blocking: 非表示にしたドメインリスト following: フォロー中のアカウントリスト muting: ミュートしたアカウントリスト @@ -1020,6 +1026,7 @@ ja: otp_authentication: code_hint: 続行するには認証アプリで表示されたコードを入力してください description_html: "二要素認証を有効にすると、ログイン時に認証アプリからコードを入力する必要があります。" + enable: 有効化 instructions_html: "Google Authenticatorか、もしくはほかのTOTPアプリでこのQRコードをスキャンしてください。これ以降、ログインするときはそのアプリで生成されるコードが必要になります。" manual_instructions: 'QRコードがスキャンできず、手動での登録を希望の場合はこのシークレットコードを利用してください。:' setup: セットアップ @@ -1052,6 +1059,7 @@ ja: relationships: activity: 活動 dormant: 非アクティブ + follow_selected_followers: 選択したフォロワーをフォロー followers: フォロワー following: フォロー中 invited: 招待済み @@ -1293,7 +1301,7 @@ ja: two_factor_authentication: add: 追加 disable: 無効化 - disabled_success: 二要素認証が更新されました + disabled_success: 二段階認証が無効になりました edit: 編集 enabled: 二段階認証は有効になっています enabled_success: 二段階認証が有効になりました @@ -1319,7 +1327,7 @@ ja: warning: explanation: disable: あなたのアカウントはログインが禁止され使用できなくなりました。しかしアカウントのデータはそのまま残っています。 - sensitive: アップロードされたメディアファイルとリンクされたメディアは閲覧注意として扱われます。 + sensitive: あなたのアップロードしたメディアファイルとリンク先のメディアは、閲覧注意として扱われます。 silence: あなたのアカウントは制限されましたがそのまま使用できます。ただし既にフォローしている人はあなたのトゥートを見ることができますが、様々な公開タイムラインには表示されない場合があります。また他のユーザーは今後も手動であなたをフォローすることができます。 suspend: あなたのアカウントは使用できなくなりプロフィールやその他データにアクセスできなくなりました。アカウントが完全に削除されるまではログインしてデータのエクスポートをリクエストできます。証拠隠滅を防ぐため一部のデータは削除されず残ります。 get_in_touch: このメールに返信することで %{instance} のスタッフと連絡を取ることができます。 @@ -1328,13 +1336,13 @@ ja: subject: disable: あなたのアカウント %{acct} は凍結されました none: "%{acct} に対する警告" - sensitive: あなたのアカウント %{acct} が投稿したメディアは閲覧注意にマークされました + sensitive: あなたのアカウント %{acct} の投稿メディアは閲覧注意とマークされました silence: あなたのアカウント %{acct} はサイレンスにされました suspend: あなたのアカウント %{acct} は停止されました title: disable: アカウントが凍結されました none: 警告 - sensitive: あなたのメディアが閲覧注意に指定されました + sensitive: あなたのメディアが閲覧注意とマークされました silence: アカウントがサイレンスにされました suspend: アカウントが停止されました welcome: diff --git a/config/locales/ko.yml b/config/locales/ko.yml index ef91cfbbef..f8043534a3 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -836,6 +836,7 @@ ko: request: 아카이브 요청하기 size: 크기 blocks: 차단 + bookmarks: 보관함 csv: CSV domain_blocks: 도메인 차단 lists: 리스트 @@ -911,6 +912,7 @@ ko: success: 파일이 정상적으로 업로드 되었으며, 현재 처리 중입니다 types: blocking: 차단한 계정 목록 + bookmarks: 보관함 domain_blocking: 도메인 차단 목록 following: 팔로우 중인 계정 목록 muting: 뮤트 중인 계정 목록 @@ -1064,6 +1066,7 @@ ko: relationships: activity: 계정 활동 dormant: 휴면 + follow_selected_followers: 선택한 팔로워들을 팔로우 followers: 팔로워 following: 팔로잉 invited: 초대됨 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 2fbf0ffd71..d7232b6ffe 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -1 +1,1399 @@ ---- {} +--- +ku: + about: + about_hashtag_html: ئەمانە توتی گشتین بە هەشتەگی گشتی #%{hashtag}}. گەر ئێوە لە هەر ڕاژەیەک هەژمارەتان بێت دەتوانیت لێرە بەم نووسراوانە هاوئاهەنگ بن. + about_mastodon_html: 'تۆڕی کۆمەڵایەتی داهاتوو: هیچ ڕیکلامێک ، هیچ چاودێرییەکی کۆمپانیا ، دیزاینی ئەخلاقی و لامەرکەزی! خاوەنی داتاکانت نابێ لە ماستۆدۆن!' + about_this: دەربارە + active_count_after: چالاک + active_footnote: بەکارهێنەرانی چالاکی مانگانە (MAU) + administered_by: 'بەڕێوەبراو لەلایەن:' + api: API + apps: ئەپەکانی مۆبایل + apps_platforms: بەکارهێنانی ماستۆدۆن لە iOS، ئەندرۆید و سەکۆکانی تر + browse_directory: گەڕان لە ڕێبەرێکی پرۆفایل و پاڵاوتن بەپێی بەرژەوەندیەکان + browse_local_posts: گەڕانی ڕاستەوخۆ لە نووسراوە گشتیەکان لەم ڕاژەوە + browse_public_posts: گەڕان لە جۆگەیەکی زیندووی نووسراوە گشتیەکان لەسەر ماستۆدۆن + contact: بەردەنگ + contact_missing: سازنەکراوە + contact_unavailable: بوونی نییە + discover_users: پەیداکردنی بەکارهێنەران + documentation: بەڵگەکان + federation_hint_html: بە هەژمارەیەک لەسەر %{instance} دەتوانیت شوێن خەڵک بکەویت لەسەر هەرڕاژەیەکی ماستۆدۆن. + get_apps: ئەپێکی تەلەفۆن تاقی بکەرەوە + hosted_on: مەستودۆن میوانداری کراوە لە %{domain} + instance_actor_flash: | + ئەم هەژمارەیە ئەکتەرێکی خەیاڵی بەکارهاتووە بۆ نوێنەرایەتی کردنی خودی ڕاژەکە و نەک هیچ بەکارهێنەرێکی تاک. + بۆ مەبەستی فیدراسیۆن بەکاردێت و نابێت بلۆک بکرێت مەگەر دەتەوێت هەموو نمونەکە بلۆک بکەیت، کە لە حاڵەتەش دا پێویستە بلۆکی دۆمەین بەکاربهێنیت. + learn_more: زیاتر فێربه + privacy_policy: ڕامیاری تایبەتێتی + see_whats_happening: بزانە چی ڕوودەدات + server_stats: 'زانیاری ڕاژەکار:' + source_code: کۆدی سەرچاوە + status_count_after: + one: دۆخ + other: دۆخەکان + status_count_before: لە لایەن یەکەوە + tagline: دوای هاوڕێکان بکەوە و ئەوانەی نوێ بدۆزیەوە + terms: مەرجەکانی خزمەتگوزاری + unavailable_content: ڕاژەی چاودێریکراو + unavailable_content_description: + domain: ڕاژەکار + reason: هۆکار + rejecting_media: 'پەڕگەکانی میدیا لەم ڕاژانەوە پرۆسە ناکرێت یان هەڵناگیرێن، و هیچ وێنۆچکەیەک پیشان نادرێت، پێویستی بە کرتە کردنی دەستی هەیە بۆ فایلە سەرەکیەکە:' + rejecting_media_title: پاڵێوەری میدیا + silenced: 'بابەتەکانی ئەم ڕاژانە لە هێڵی کاتی گشتی و گفتوگۆکاندا دەشاردرێنەوە، و هیچ ئاگانامێک دروست ناکرێت لە چالاکی بەکارهێنەرانیان، مەگەر تۆ بەدوایان دەچیت:' + silenced_title: ڕاژە ناچالاکەکان + suspended: 'هیچ داتایەک لەم ڕاژانەوە پرۆسە ناکرێت، خەزن دەکرێت یان دەگۆڕدرێتەوە، وا دەکات هیچ کارلێک یان پەیوەندییەک لەگەڵ بەکارهێنەران لەم ڕاژانە مەحاڵ بێت:' + suspended_title: ڕاژە ڕاگیراوەکان + unavailable_content_html: ماستۆدۆن بە گشتی ڕێگەت پێدەدات بۆ پیشاندانی ناوەڕۆک لە و کارلێ کردن لەگەڵ بەکارهێنەران لە هەر ڕاژەیەکی تر بە گشتی. ئەمانە ئەو بەدەرکردنانەن کە کراون لەسەر ئەم ڕاژە تایبەتە. + user_count_after: + one: بەکارهێنەر + other: بەکارهێنەران + user_count_before: "`خاوەن" + what_is_mastodon: ماستۆدۆن چییە? + accounts: + choices_html: 'هەڵبژاردنەکانی %{name}:' + endorsements_hint: دەتوانیت ئەو کەسانە پەسەند بکەیت کە پەیڕەویان دەکەیت لە ڕووکاری وێب، و ئەوان لێرە دەردەکەون. + featured_tags_hint: دەتوانیت هاشتاگی تایبەت پێشکەش بکەیت کە لێرە پیشان دەدرێت. + follow: شوێن کەوە + followers: + one: شوێنکەوتوو + other: شوێن‌کەوتووان + following: شوێن‌کەوتووی + joined: بەشداری %{date} + last_active: دوا چالاکی + link_verified_on: خاوەنداریەتی ئەم لینکە لە %{date} چێک کراوە + media: میدیا + moved_html: "%{name} گواستراوەتەوە بۆ %{new_profile_link}:" + network_hidden: ئەم زانیاریە بەردەست نیە + never_active: هەرگیز + nothing_here: لێرە هیچ نییە! + people_followed_by: ئەو کەسانەی کە %{name} بەدوایدا دەکەون + people_who_follow: ئەو کەسانەی کە بەدوای %{name} دا دەکەون + pin_errors: + following: تۆ دەبێت هەر ئێستا بە دوای ئەو کەسەدا بیت کە دەتەوێت پەسەندی بکەیت + posts: + one: توت + other: تووتەکان + posts_tab_heading: تووتەکان + posts_with_replies: تووتەکان و وڵامەکان + reserved_username: ناوی بەکارهێنەر پارێزراوە + roles: + admin: بەڕێوەبەر + bot: بۆت + group: گرووپ + moderator: مۆد + unavailable: پرۆفایل بەردەست نیە + unfollow: بەدوادانەچو + admin: + account_actions: + action: ئەنجامدانی کردار + title: ئەنجامدانی کاری بەڕێوەبردن لە %{acct} + account_moderation_notes: + create: جێهێشتنی تێبینی + created_msg: تێبینی بەڕێوەبەر بە سەرکەوتوویی دروست کرا! + delete: سڕینەوە + destroyed_msg: تێبینی بەڕێوەبەر بە سەرکەوتوویی لەناوچوو! + accounts: + add_email_domain_block: بلۆککردنی هەموو دۆمەینەکە + approve: پەسەند کردن + approve_all: پەسەندکردنی هەموو + approved_msg: بەرنامەی تۆمارکردنی %{username} بۆ چوونەناوی پەسەند کرا + are_you_sure: دڵنیای? + avatar: وێنۆچکە + by_domain: دۆمەین + change_email: + changed_msg: ئیمەیڵی ئەژمێر بە سەرکەوتوویی گۆڕا! + current_email: ئیمەیلی ئێستا + label: گۆڕینی ئیمێڵ + new_email: ئیمەیڵی نوێ + submit: گۆڕینی ئیمێڵ + title: گۆڕینی ئیمەیڵ بۆ %{username} + confirm: پشتڕاستی بکەوە + confirmed: پشتڕاست کرا + confirming: پشتڕاستکردنەوە + delete: سڕینەوەی داتا + deleted: سڕینەوە + demote: پلە نزمکرایەوە + destroyed_msg: دراوەکانی %{username} لە ڕیزی سڕینەوەن + disable: بەستن + disable_two_factor_authentication: لەکارخستنی 2FA + disabled: بەستوو + display_name: ناوی پیشاندان + domain: دۆمەین + edit: دەستکاری + email: پۆستی ئەلکترۆنی + email_status: دۆخی ئیمەیڵ + enable: چالاک کردن + enabled: چالاککراوە + enabled_msg: هەژمارە %{username} بە سەرکەوتوویی سنووردار کرا + followers: شوێنکەوتوان + follows: شوێنکەوتوان + header: سەرپەڕە + inbox_url: نیشانی هاتنەژوور + invited_by: هاتۆتە ژورەوە لە لایەن + ip: ئای‌پی + joined: ئەندام بوو لە + location: + all: هەموو + local: ناوخۆیی + remote: دوور + title: شوێن + login_status: دۆخی چوونەژوورەوە + media_attachments: هاوپێچی میدیا + memorialize: گۆڕان بە یادەوەری + memorialized: بیرکەوتنەوە + memorialized_msg: بە سەرکەوتوویی %{username} بۆ هەژمارێکی بیرەوەری گۆڕا + moderation: + active: چالاک + all: هەموو + pending: چاوەڕوان + silenced: بێدەنگ + suspended: ڕاگرتن + title: بەڕێوەبردن + moderation_notes: بەڕێوەبردنی تێبینیەکان + most_recent_activity: نوێترین چالاکی + most_recent_ip: نوێترین ئای پی + no_account_selected: هیچ هەژمارەیەک نەگۆڕاوە وەک ئەوەی هیچ یەکێک دیاری نەکراوە + no_limits_imposed: هیچ سنوورێک نەسەپێنرا + not_subscribed: بەشدار نەبوو + pending: پێداچوونەوەی چاوەڕوان + perform_full_suspension: ڕاگرتن + promote: بەرزکردنەوە + protocol: پرۆتۆکۆل + public: گشتی + push_subscription_expires: بەشداری PuSH بەسەر دەچێت + redownload: نوێکردنەوەی پرۆفایل + redownloaded_msg: پرۆفایلی %{username} لە بنەڕەتەوە بە سەرکەوتوویی نوێکرایەوە + reject: ڕەتکردنەوە + reject_all: هەموو ڕەت بکەوە + rejected_msg: بەرنامەی تۆمارکردنی %{username} بە سەرکەوتوویی ڕەتکرایەوە + remove_avatar: لابردنی وێنۆجکە + remove_header: سەرپەڕ لابدە + removed_avatar_msg: وێنەی ئەڤاتار %{username} بە سەرکەوتوویی لابرا + removed_header_msg: بە سەرکەوتوویی وێنەی سەرپەڕەی %{username} لابرا + resend_confirmation: + already_confirmed: ئەم بەکارهێنەرە پێشتر پشتڕاستکراوەتەوە + send: دووبارە ناردنی ئیمەیڵی دووپاتکردنەوە + success: ئیمەیڵی پشتڕاستکردنەوە بە سەرکەوتوویی نێردرا! + reset: ڕێکخستنەوە + reset_password: گەڕانەوەی تێپەڕوشە + resubscribe: دووبارە ئابونەبوون + role: مۆڵەتەکان + roles: + admin: بەڕێوەبەر + moderator: بەڕێوەبەر + staff: ستاف + user: بەکارهێنەر + search: گەڕان + search_same_email_domain: بەکارهێنەرانی دیکە بە ئیمەیلی یەکسان + search_same_ip: بەکارهێنەرانی تر بەهەمان ئای پی + shared_inbox_url: بەستەری سندوقی هاوبەشکراو + show: + created_reports: گوزارشتی تۆمارکراوە + targeted_reports: گوزارشتکراوە لەلایەن کەسانی ترەوە + silence: سنوور + silenced: سنوورکرا + statuses: دۆخەکان + subscribe: ئابوونە + suspended: ڕاگرتن + suspension_irreversible: داتای ئەم هەژمارەیە بە شێوەیەکی نائاسایی سڕاوەتەوە. دەتوانیت هەژمارەکەت ڕابخەیت بۆ ئەوەی بەکاربێت بەڵام هیچ داتایەک ناگەڕگەڕێتەوە کە پێشتر بوونی بوو. + suspension_reversible_hint_html: هەژمارە ڕاگیرا ، و داتاکە بەتەواوی لە %{date} لادەبرێت. تا ئەو کاتە هەژمارەکە دەتوانرێت بە بێ هیچ کاریگەریەکی خراپ بژمێردرێتەوە. ئەگەر دەتەوێت هەموو داتاکانی هەژمارەکە بسڕەوە، دەتوانیت لە خوارەوە ئەمە بکەیت. + time_in_queue: چاوەڕوانی لە ڕیزدا %{time} + title: هەژمارەکان + unconfirmed_email: ئیمەیڵی پشتڕاستنەکراو + undo_silenced: بێدەنگ ببە + undo_suspension: دووبارە ڕاگرتن + unsilenced_msg: هەژماری %{username} بە سەرکەوتوویی بێسنوور کرا + unsubscribe: بەتاڵکردنی ئابوونە + unsuspended_msg: هەژمارە %{username} بە سەرکەوتوویی ئابوونەی بەتاڵکرا + username: ناوی بەکارهێنەر + view_domain: پیشاندانی کورتەبۆ دۆمەین + warn: وریاکردنەوە + web: ماڵپەڕ + whitelisted: پێرستی ڕێپێدراو + action_logs: + action_types: + assigned_to_self_report: تەرخانکردنی گوزارشت + change_email_user: گۆڕینی ئیمەیڵ بۆ بەکارهێنەر + confirm_user: دڵنیابوون لە بەکارهێنەر + create_account_warning: دروستکردنی ئاگاداری + create_announcement: دروستکردنی راگەیەندراو + create_custom_emoji: دروستکردنی ئێمۆمۆجی دڵخواز + create_domain_allow: دروستکردنی ڕێپێدان بە دۆمەین + create_domain_block: دروستکردنی بلۆکی دۆمەین + create_email_domain_block: دروستکردنی بلۆکی دۆمەینی ئیمەیڵ + create_ip_block: دروستکردنی یاسای IP + demote_user: دابەزاندنی ئاستی بەکارهێنەر + destroy_announcement: سڕینەوەی راگەیەندراو + destroy_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند + destroy_domain_allow: سڕینەوەی ڕێپێدان بە دۆمەین + destroy_domain_block: سڕینەوەی بلۆکی دۆمەین + destroy_email_domain_block: سڕینەوەی بلۆکی دۆمەینی ئیمەیڵ + destroy_ip_block: سڕینەوەی یاسای IP + destroy_status: دۆخ بسڕەوە + disable_2fa_user: لەکارخستنی 2FA + disable_custom_emoji: سڕینەوەی ئێمۆمۆجی تایبەتمەند + disable_user: بەکارهێنەر لە کاربخە + enable_custom_emoji: ئیمۆمۆجی تایبەتمەند چالاک بکە + enable_user: چالاککردنی بەکارهێنەر + memorialize_account: هەژماری بیرکەوتنەوە + promote_user: بەرزکردنەوەی بەکارهێنەر + remove_avatar_user: لابردنی وێنۆجکە + reopen_report: دووبارە کردنەوەی گوزارشت + reset_password_user: گەڕانەوەی تێپەڕوشە + resolve_report: گوزارشت چارەسەربکە + silence_account: هەژماری بێدەنگی + suspend_account: ڕاگرتنی هەژمارە + unassigned_report: گوزارشتی دیارینەکراو + unsilence_account: هەژماری بێ دەنگ + unsuspend_account: هەژماری هەڵنەوەستێنراو + update_announcement: بەڕۆژکردنەوەی راگەیەندراو + update_custom_emoji: بەڕۆژکردنی ئێمۆمۆجی دڵخواز + update_status: بەڕۆژکردنی دۆخ + actions: + assigned_to_self_report: "%{name} پێداچوونەوە بە گوزارشتی %{target} لە ئەستۆ گرتووە" + change_email_user: "%{name} ناونیشانی ئیمەیلی بەکارهینەری %{target} گۆڕا" + confirm_user: "%{name} ناونیشانی ئیمەیلی بەکارهینەری %{target} پەسەند کرد" + create_account_warning: "%{name} ئاگاداریێک بۆ %{target} نارد" + create_announcement: "%{name} ئاگاداری نوێی دروستکرد %{target}" + create_custom_emoji: "%{name} ئیمۆجی نوێی %{target} بارکرد" + create_domain_allow: "%{name} دۆمەینی %{target} ڕێپێدا" + create_domain_block: "%{name} دۆمەنی %{target} بلۆککرد" + create_email_domain_block: "%{name} دۆمەینی ئیمەیلی %{target} بلۆککرد" + create_ip_block: "%{name} یاسای دروستکراو بۆ ئای‌پی %{target}" + demote_user: "%{name} ئاستی بەکارهێنەری %{target} دابەزاند" + destroy_announcement: "%{name} ئاگاداری %{target} سڕیەوە" + destroy_custom_emoji: "%{name} ئیمۆجی %{target} لە ناوبرد" + destroy_domain_allow: "%{name} دۆمەنی%{target} لە پێرستی ڕێپێدراو لابرد" + destroy_domain_block: "%{name} بەرگیری لە دۆمەینی %{target} لابرد" + destroy_email_domain_block: "%{name} دۆمەینی ئیمەیلی %{target} خستە پێرستی ڕێپێدراو" + destroy_ip_block: "%{name} یاسای سڕینەوە بۆ ئای‌پی %{target}" + destroy_status: "%{name} نووسراوەی %{target} سڕیەوە" + disable_2fa_user: "%{name} دوو مەرجی فاکتەر بۆ بەکارهێنەر %{target} لە کارخست" + disable_custom_emoji: "%{name} ئیمۆجی %{target} ناچالاک کرد" + disable_user: "%{name} چوونەژوورەوەی بەکارهێنەری %{target} لەکارخست" + enable_custom_emoji: "%{name} ئیمۆجی %{target} چالاک کرد" + enable_user: "%{name} چوونەژوورەوەی بەکارهێنەری %{target} چالککرد" + memorialize_account: "%{name} هەژمارەی بەکارهێنەری %{target} گۆڕا بە پەڕەی یادەوەری" + promote_user: "%{name} ئاستی بەکارهێنەری %{target} بەرزکردەوە" + remove_avatar_user: "%{name} وێنۆچکەی بەکارهێنەری %{target} سڕیەوە" + reopen_report: "%{name} گوزارشتی %{target} دووبارە وەگڕخستەوە" + reset_password_user: "%{name} تێپەروشەی بەکارهێنەری %{target} گەڕانەوە" + resolve_report: "%{name} گوزارشتی %{target} دووبارە وەگڕخستەوە" + silence_account: "%{name} هەژماری %{target}'s بێدەنگ کرا" + suspend_account: "%{name} هەژماری %{target}'ی ڕاگیرا" + unassigned_report: "%{name} ڕاپۆرتی دیاری نەکراوی %{target}" + unsilence_account: "%{name} هەژماری %{target}'s بێ دەنگ" + unsuspend_account: "%{name} هەژماری %{target}'s هەڵنەپەسێردراو" + update_announcement: "%{name} بەڕۆژکراوەی راگەیاندنی %{target}" + update_custom_emoji: "%{name} ئیمۆجی %{target} نوێکرایەوە" + update_status: "%{name} نووسراوەی %{target} بەڕۆژکرد" + deleted_status: "(نووسراوە سڕاوە)" + empty: هیچ لاگی کارنەدۆزرایەوە. + filter_by_action: فلتەر کردن بە کردار + filter_by_user: فلتەر کردن بە کردار + title: تۆماری وردبینی + announcements: + destroyed_msg: بانگەوازەکە بە سەرکەوتوویی سڕاوەتەوە! + edit: + title: بڵاوکردنەوەی راگەیەندراو + empty: هیچ راگەیەندراوێک نەدۆزرایەوە. + live: زیندوو + new: + create: دروستکردنی راگەیەندراو + title: ڕاگەیاندنی نوێ + published_msg: بانگەوازەکە بە سەرکەوتوویی بڵاو کرایەوە! + scheduled_for: خشتەکراوە بۆ %{time} + scheduled_msg: ڕاگەیاندنی خشتەی بۆ بڵاوکردنەوە! + title: ڕاگه یه نراوەکان + unpublished_msg: بانگەواز بە سەرکەوتوویی بڵاونەکرایەوە! + updated_msg: بانگەوازەکە بە سەرکەوتوویی نوێکرایەوە! + custom_emojis: + assign_category: دانانی پۆلێن + by_domain: دۆمەین + copied_msg: کۆپیەکی ناوخۆیی ئیمۆجیبەکە بە سەرکەوتوویی دروست کرد + copy: کۆپی + copy_failed_msg: نهیتوانی کۆپیهکی ناوخۆیی ئهو ئیمۆجییە دروست بکات + create_new_category: دروستکردنی هاوپۆلی نوێ + created_msg: ئیمۆجی بە سەرکەوتوویی دروستکرا! + delete: سڕینەوە + destroyed_msg: ئیمۆجی بە سەرکەوتوویی بەتاڵکرا! + disable: لەکارخستن + disabled: ناچالاککراوە + disabled_msg: بە سەرکەوتوویی ئەو ئیمۆجییە لە کارخراوە + emoji: ئیمۆجی + enable: چالاککردن + enabled: چالاککراوە + enabled_msg: ئەو ئیمۆجییە بە سەرکەوتووانە چالاک کرا + image_hint: PNG تا ٥٠کیلۆبایت + list: پێرست + listed: پێرستکراوە + new: + title: ئیمۆجی نوێی دڵخواز زیاد بکە + not_permitted: تۆ ڕێگەپێدراو نین بۆ ئەنجامدانی ئەم کارە + overwrite: نووسینەوە + shortcode: کورتەکلیل + shortcode_hint: بەلایەنی کەمەوە ٢نووسە، تەنها نووسەکانی ئەلف و بێ و ژێرهێڵەکان + title: ئیمۆجی دڵخواز + uncategorized: هاوپۆل نەکراوە + unlist: بێ پێرست + unlisted: پێرست نەبووە + update_failed_msg: نه یتوانی ئه و ئیمۆجییه نوێ بکاتەوە + updated_msg: ئیمۆجی بە سەرکەوتوویی نوێکرایەوە! + upload: بارکردن + dashboard: + authorized_fetch_mode: دۆخی پارێزراو + backlog: کاری پشتەواز + config: شێوەپێدان + feature_deletions: سڕینەوەی هەژمارە + feature_invites: بانگێشتکردنی بەستەرەکان + feature_profile_directory: ڕێنیشاندەرێکی پرۆفایل + feature_registrations: تۆمارکراوەکان + feature_relay: گواستنەوەی گشتی + feature_spam_check: دژە سپام + feature_timeline_preview: پێش نیشاندانی نووسراوەکان + features: تایبەتمەندیەکان + hidden_service: پەیوەندی نێوان ڕاژە یان خزمەتگوزاری نێننی + open_reports: ڕاپۆرتەکان بکەوە + pending_tags: هاشتاگی چاوەڕوانی پێداچوونەوە دەکات + pending_users: بەکارهێنەران چاوەڕێی پێداچوونەوەن + recent_users: بەکارهێنەرانی ئەم دواییە + search: گەڕانی تەواوی-دەق + single_user_mode: دۆخی بەکارهێنەری تاک + software: نەرمەکالا + space: بەکارهێنانی بۆشایی + title: داشبۆرد + total_users: ژمارەی بەکارهێنەران + trends: تاگە بەرچاوکراوەکان + week_interactions: چالاکیەکانی ئەم هەفتەیە + week_users_active: چالاکی ئەم هەفتەیە + week_users_new: بەکارهێنەرانی ئەم هەفتەیە + whitelist_mode: شێوەی پێرستی ڕێپێدراو + domain_allows: + add_new: ڕێپێدان بە دۆمەین + created_msg: دۆمەین بە سەرکەوتوویی رێگەی پێدرا + destroyed_msg: دۆمەین لە پێرستی رێگەی پێدرا لابرا + undo: لابردن لە پێرستی ڕێپێدراو + domain_blocks: + add_new: زیادکردنی بلۆکی دۆمەینی نوێ + created_msg: بلۆککردنی دۆمەین لە حاڵێ جێبەجێکردنە + destroyed_msg: بلۆکی دۆمەین هەڵوەشاوەتەوە + domain: دۆمەین + edit: دەستکاری بلۆکی دۆمەینی نوێ + existing_domain_block_html: ئێوە پێشتر سنووری دژوارتنا لە سەر%{name} جێبەجێکردووە، سەرەتا دەبێ بلۆک هەڵوەشێنەوە. + new: + create: دروستکردنی بلۆک + hint: بلۆکی دۆمەین رێگری لە دروستکردنی هەژمارەی چوونەژوورەوە لە بنکەی زانیارێکان ناکات ، بەڵکو بە شێوەیەکی دووبارە و خۆکارانە رێوشێوازی پێشکەوتوو تایبەت لەسەر ئەو هەژمارانە جێبەجێ دەکات. + severity: + desc_html: " بێدەنگی وا دەکات کە نووسراوەکانی هەژمارەکان نەبینراوە بێت بۆ هەر کەسێک کە شوێنیان نەکەوێ. ڕاگرتنی هەموو ناوەڕۆکی هەژمارەکە، میدیا، و داتای پرۆفایلەکەی بەکارهێنان. هیچ ئەگەر دەتەوێت فایلەکانی میدیا ڕەت بکەیتەوە." + noop: هیچ + silence: بێدەنگ + suspend: ڕاگرتن + title: بلۆکی دۆمەینی نوێ + private_comment: لێدوانی تایبەت + private_comment_hint: لێدوان دەربارەی سنوورداری ئەم دۆمەینە بۆ بەکارهێنانی ناوخۆیی لەلایەن مۆدەرەکان. + public_comment: سەرنجی گشتی + public_comment_hint: لێدوان دەربارەی سنوورداری ئەم دۆمەینە بۆ گشتی، ئەگەر بڵاوکردنەوەی لیستی سنوورداری دۆمەینەکە چالاک بکرێت. + reject_media: ڕەتکردنەوەی فایلەکانی میدیا + reject_media_hint: پەڕگە میدیای پاشکەوتکراو بە شێوەێکی ناوخۆیی لابدە و دابەزین لە داهاتوو ڕەتدەکاتەوە. ناپەیوەندیدار ە بۆ ڕاگرتن + reject_reports: گوزارشتەکان ڕەت بکەوە + reject_reports_hint: پشتگوێ خستنی هەموو گوزارشتەکان کە دێن لەم دۆمەینە. ناپەیوەندیدارە بۆ ڕاگرتن + rejecting_media: ڕەتکردنەوەی فایلەکانی میدیا + rejecting_reports: ڕەتکردنەوەی گوزارشتەکان + severity: + silence: بێدەنگ + suspend: ڕاگرتن + show: + affected_accounts: + one: هەژمارەیەک کە لە بنکەی زانیارێکان کاریگەری لەسەرە + other: "%{count} هەژمارەیەک کە لە بنکەی زانیارێکان کاریگەری لەسەرە" + retroactive: + silence: نابێدەنگی ئەو ئەژمێرانەی کە هەیە لەم دۆمەینەوە + suspend: هەڵنەپەسێدراوی هەژمارە کاریگەرەکانی ئەم دۆمەین + title: گەڕانەوەی بلۆککردنی دۆمەین %{domain} + undo: گەڕانەوە + undo: گەڕانەوەی بلۆکی دۆمەینی + view: دیتنی بلۆکی دۆمەینی + email_domain_blocks: + add_new: زیادکردنی نوێ + created_msg: بە سەرکەوتوویی دۆمەینی ئیمەیڵ بلۆک کرا + delete: سڕینەوە + destroyed_msg: بە سەرکەوتوویی دۆمەینی ئیمەیڵ لە بلۆک لاچوو + domain: دۆمەین + empty: هیچ دۆمەینێک لە ئێستادا بلۆک نەکراوە. + from_html: لە %{domain} + new: + create: زیادکردنی دۆمەین + title: بلۆککردنی دۆمەینی ئیمەیڵی نوێ + title: دۆمەینە بلۆککراوەکانی ئیمەیڵ + instances: + by_domain: دۆمەین + delivery_available: گەیاندن بەردەستە + known_accounts: + one: "%{count} هەژمارەی ناسراو" + other: "%{count} هەژمارەکانی ناسراو" + moderation: + all: هەموو + limited: سنووردار + title: بەڕێوەبردن + private_comment: لێدوانی تایبەت + public_comment: سەرنجی گشتی + title: پەیوەندی نێوان ڕاژە + total_blocked_by_us: لەلایەن ئێمە بەربەست کراوە + total_followed_by_them: شوێنمان دەکەون + total_followed_by_us: شوێنیان کەوتین + total_reported: گوزارشت له باره یان + total_storage: هاوپێچی میدیا + invites: + deactivate_all: هەموو لەکارخستنی + filter: + all: هەموو + available: بەردەستە + expired: بەسەرچووە + title: پاڵاوتن + title: بانگهێشتەکان + ip_blocks: + add_new: دروستکردنی یاسا + created_msg: سەرکەوتووانە یاسای نوێی IP زیادکرا + delete: سڕینەوە + expires_in: + '1209600': ٢ هەفتە + '15778476': ٦ مانگ + '2629746': ١ مانگ + '31556952': ١ ساڵ + '86400': ١ ڕۆژ + '94670856': ٣ ساڵ + new: + title: دروستکردنی یاسای نوێی IP + no_ip_block_selected: هیچ ڕێسایەکی IP نەگۆڕدرا وەک ئەوەی هیچ کامیان دەستنیشان نەکران + title: یاساکانی IP + pending_accounts: + title: هەژمارە هەڵواسراوەکان (%{count}) + relationships: + title: پەیوەنیەکان %{acct} + relays: + add_new: زیادکردنی گواستنەوەی نوێ + delete: سڕینەوە + description_html: دانەیەکی ڕێڵەی نێو ڕاژەییە(federation relay) کە قەبارەیەکی فرەی لە تووتە گشتییەکان لە نێو ڕاژە هاوبەشەکان و ئابوونەکان دەگوازێتەوە رێڵە یارمەتی بە ڕاژە بچکۆلەو مامناوە ندییەکان دەدا کە بابەتی فرەتر پەیدا بکەن گەر ڕێڵە نەبێت، ئەم بابەتە گشتییانە تەنها کاتێک پەیدا دەبن کە بە کارهێنەرانی ناوخۆیی خۆیان شوێنکەوتووی بەکارهێنەران لە سەر ڕاژەکانی دیکە بن. + disable: لەکارخستن + disabled: ناچالاککراوە + enable: چالاککراوە + enable_hint: کاتێک چالاک کرا، ڕاژەکارەکەت بەشداری دەکات لە هەموو توتەکانی گشتی لەم گواستنەوەیە، و دەست دەکات بە ناردنی توتی گشتی ئەم ڕاژەیە. + enabled: چالاککراوە + inbox_url: نیشانەی URL + pending: چاوەڕێی پەسەندکردنی ڕێلەی + save_and_enable: پاشکەوتکردن و چالاککردن + setup: دامەزراندنی ڕێڵەی پەیوەندی + signatures_not_enabled: ڕیلەکان بە دروستی کارناکات لە کاتێکدا دۆخی پارێزراو یان دۆخی سنوورداری گشتی چالاک کراوە + status: دۆخ + title: ڕێڵەکان + report_notes: + created_msg: تێبینی ڕاپۆرت کردن بە سەرکەوتوویی دروست کرا! + destroyed_msg: تێبینی گوزارشت بە سەرکەوتوویی سڕاوەتەوە! + reports: + account: + notes: + one: "%{count} یاداشت" + other: "%{count} یاداشت" + reports: + one: "%{count} گوزارشت" + other: "%{count} گوزارشتەکان" + action_taken_by: کردەوە لە لایەن + are_you_sure: دڵنیای? + assign_to_self: دیاریکردن بۆ من + assigned: بەڕێوەبەری بەرپرس + by_target_domain: دۆمەینی هەژمارەی گوزارشتدراو + comment: + none: هیچ + created_at: گوزارشتکرا + mark_as_resolved: نیشانەی بکە وەک چارەسەرکراو + mark_as_unresolved: نیشانەکردن وەک چارەسەرنەکراوە + notes: + create: زیادکردنی تێبینی + create_and_resolve: چارەسەر کردن لەگەڵ تێبینی + create_and_unresolve: دووبارە کردنەوەی بە تێبینی + delete: سڕینەوە + placeholder: باسی ئەو کردارانە بکە کە ئەنجام دراون، یان هەر نوێکردنەوەیەکی پەیوەندیداری ت... + reopen: دووبارە کردنەوەی گوزارشت + report: 'گوزارشت #%{id}' + reported_account: گوزارشتی هەژمارە + reported_by: گوزارشت لە لایەن + resolved: چارەسەرکرا + resolved_msg: گوزارشتکردن بە سەرکەوتوویی چارەسەر کرا! + status: دۆخ + title: گوزارشتکرا + unassign: دیارینەکراوە + unresolved: چارەسەر نەکراوە + updated_at: نوێکرایەوە + settings: + activity_api_enabled: + desc_html: ژماردنی دۆخی بڵاوکراوە ی ناوخۆیی و بەکارهێنەرە چالاکەکان و تۆماری نوێ لە سەتڵی هەفتانە + title: بڵاوکردنەوەی ئاماری کۆ دەربارەی چالاکی بەکارهێنەر + bootstrap_timeline_accounts: + desc_html: چەند ناوی بەکارهێنەرێک جیابکە بە بۆر، تەنها هەژمارەی بلۆککراوەکان و ناوخۆیی کاردەکەن. بنەڕەت کاتێک بەتاڵ بوو هەموو بەڕێوەبەرە خۆجێیەکانن. + title: بەدواداچوەکانی گریمانەیی بۆ بەکارهێنەرە نوێکان + contact_information: + email: ئیمەیلی بازرگانی + username: ناوی بەکارهێنەر + custom_css: + desc_html: دەستکاری کردنی شێوەی CSS بارکراو لەسەر هەموو لاپەڕەکان + title: CSSی تایبەتمەند + default_noindex: + desc_html: کاردەکاتە سەر هەموو بەکارهێنەرەکان کە ئەم ڕێکخستنە خۆیان نەگۆڕاون + title: بەکارهێنەران لە پێڕستکردنی بزوێنەری گەڕان بە گریمانەیی هەڵبژێن + domain_blocks: + all: بۆ هەموو کەسێک + disabled: بۆ هیچ کەسێک + title: بلۆکەکانی دۆمەین پیشان بدە + users: بۆ چوونە ژوورەوەی بەکارهێنەرانی ناوخۆ + domain_blocks_rationale: + title: پیشاندانی ڕێژەیی + enable_bootstrap_timeline_accounts: + title: چالاککردنی بەدواکەکانی گریمانەیی بۆ بەکارهێنەرە نوێکان + hero: + desc_html: نیشان درا لە پەڕەی سەرەتا. بەلایەنی کەمەوە 600x100px پێشنیارکراوە. کاتێک ڕێک نەکەویت، دەگەڕێتەوە بۆ وێنۆجکەی ڕاژە + title: وێنەی پاڵەوان + mascot: + desc_html: نیشان دراوە لە چەند لاپەڕەیەک. بەلایەنی کەمەوە 293× 205px پێشنیارکراوە. کاتێک دیاری ناکرێت، دەگەڕێتەوە بۆ بەختبەختێکی ئاسایی + title: وێنەی ماسکۆت + peers_api_enabled: + desc_html: ناوی دۆمەینەکانێک کە ئەم ڕاژە پەیوەندی پێوەگرتووە + title: بڵاوکردنەوەی لیستی راژەکانی دۆزراوە + preview_sensitive_media: + desc_html: بینینی لینک لە وێب سایتەکانی تر وێنۆچکەیەک پیشان دەدات تەنانەت ئەگەر میدیاکە بە هەستیاری نیشان کرابێت + title: پیشاندانی میدیای هەستیار لە پێشبینیەکانی OpenGraph + profile_directory: + desc_html: ڕێگەدان بە بەکارهێنەران بۆ دۆزینەوەیان + title: چالاککردنی ڕێنیشاندەرێکی پرۆفایل + registrations: + closed_message: + desc_html: لە پەڕەی پێشەوە پیشان دەدرێت کاتێک تۆمارەکان داخراون. دەتوانیت تاگەکانی HTML بەکاربێنیت + title: نامەی تۆمارکردن داخراو + deletion: + desc_html: ڕێ بدە بە هەر کەسێک هەژمارەکەی بسڕیتەوە + title: سڕینەوەی هەژمارە بکەوە + min_invite_role: + disabled: هیچکەس + title: ڕێپێدانی بانگهێشتەکان لەلایەن + registrations_mode: + modes: + approved: پەسەندکردنی داواکراو بۆ ناوتۆمارکردن + none: کەس ناتوانێت خۆی تۆمار بکات + open: هەر کەسێک دەتوانێت خۆی تۆمار بکات + title: مەرجی تۆمارکردن + show_known_fediverse_at_about_page: + desc_html: کاتێک ناچالاک کرا، هێڵی کاتی گشتی کە بەستراوەتەوە بە لاپەڕەی ئێستا سنووردار دەبن، تەنها ناوەڕۆکی ناوخۆیی پیشاندەدرێن + title: نیشاندانی ڕاژەکانی دیکە لە پێشنەمایەشی ئەم ڕاژە + show_staff_badge: + desc_html: پیشاندانی هێمایەک هاوکار لە سەر پەڕەی بەکارهێنەر + title: نیشاندانی هێمای هاوکار + site_description: + desc_html: کورتە باسیک دەربارەی API، دەربارەی ئەوە چ شتێک دەربارەی ئەم ڕاژەی ماستۆدۆن تایبەتە یان هەر شتێکی گرینگی دیکە. دەتوانن HTML بنووسن، بەتایبەت <a> وە <em>. + title: دەربارەی ئەم ڕاژە + site_description_extended: + desc_html: شوێنیکی باشە بۆ نووسینی سیاسەتی ئیس، یاسا و ڕێسا ، ڕێنمایی و هەر شتیک کە تایبەت بەم ڕاژیە، تاگەکانی HTMLــلیش ڕێگەی پێدراوە + title: زانیاری تەواوکەری تایبەتمەندی + site_short_description: + desc_html: نیشان لە شریتی لاتەنیشت و مێتا تاگەکان. لە پەرەگرافێک دا وەسفی بکە کە ماستۆدۆن چیە و چی وا لە ڕاژە کە دەکات تایبەت بێت. + title: دەربارەی ئەم ڕاژە + site_terms: + desc_html: دەتوانیت سیاسەتی تایبەتیێتی خۆت بنووسیت، مەرجەکانی خزمەتگوزاری یان یاسایی تر. دەتوانیت تاگەکانی HTML بەکاربێنیت + title: مەرجەکانی خزمەتگوزاری ئاسایی + site_title: ناوی ڕاژە + spam_check_enabled: + desc_html: ماستۆدۆن دەتوانێت هەژمارەکان خۆکارانە بێدەنگ یان گوزارشتیان بکا. زۆر جار بۆ ناسینی هەرزەپەیام و پەیامی نەخوازیاری دووپاتدەبێتەوە،جار و بار بە هەڵە دەردەچێت. + title: دژە هەرزەنامە + thumbnail: + desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە + title: وێنەی بچکۆلەی ڕاژە + timeline_preview: + desc_html: لینکەکە نیشان بدە بۆ هێڵی کاتی گشتی لەسەر پەڕەی نیشتنەوە و ڕێگە بە API بدە دەستگەیشتنی هەبێت بۆ هێڵی کاتی گشتی بەبێ سەلماندنی ڕەسەنایەتی + title: ڕێگەبدە بە چوونە ژورەوەی نەسەلمێنراو بۆ هێڵی کاتی گشتی + title: ڕێکخستنەکانی ماڵپەڕ + trendable_by_default: + desc_html: کاریگەری لەسەر هاشتاگی پێشوو کە پێشتر ڕێگە پێنەدراوە + title: ڕێگە بدە بە هاشتاگی بەرچاوکراوە بەبێ پێداچوونەوەی پێشوو + trends: + desc_html: بە ئاشکرا هاشتاگی پێداچوونەوەی پێشوو پیشان بدە کە ئێستا بەرچاوکراوەن + title: هاشتاگی بەرچاوکراوە + site_uploads: + delete: سڕینەوەی فایلی بارکراو + destroyed_msg: بارکردنی ماڵپەڕ بە سەرکەوتوویی سڕدراوەتەوە! + statuses: + back_to_account: گەڕانەوە بۆ لاپەڕەی هەژمارە + batch: + delete: سڕینەوە + nsfw_off: نیشانەکردن وەک هەستیار نیە + nsfw_on: نیشانەکردن وەک هەستیار + deleted: سڕینەوە + failed_to_execute: جێبەجێ کردن سەرکەوتوو نەبوو + media: + title: میدیا + no_media: هیچ میدیایەک + no_status_selected: هیچ دۆخیک نەگۆڕاوە وەک ئەوەی هیچ بارێک دەستنیشان نەکراوە + title: دۆخی ئەژمێر + with_media: بە میدیا + tags: + accounts_today: بەکارهێنانی بێ هاوتای ئەمڕۆ + accounts_week: بەکارهێنەری یەکتا لەم هەفتەیە + breakdown: بەکارهێنانی ئەمڕۆ بە جوداکردنی سەرچاوە + context: دەق + directory: لە پێرست + in_directory: "%{count} لە پێرست" + last_active: دوا چالاکی + most_popular: بەناوبانگترین + most_recent: تازەترین + name: هەشتاگ + review: پێداچوونەوەی دۆخ + reviewed: پێداچوونەوە + title: هەشتاگ + trending_right_now: بەرچاوکردن لە ئێستادا + unique_uses_today: T%{count} ئەمڕۆ بڵاوکراوە + unreviewed: پێداچوونەوە نەکراوە + updated_msg: ڕێکخستنی هاشتاگ بە سەرکەوتوویی نوێکرایەوە + title: بەڕێوەبەر + warning_presets: + add_new: زیادکردنی نوێ + delete: سڕینەوە + edit_preset: دەستکاریکردنی ئاگاداری پێشگریمان + title: بەڕێوەبردنی ئاگادارکردنەوە پێش‌سازدان + admin_mailer: + new_pending_account: + body: وردەکاریهەژمارە نوێیەکە لە خوارەوەیە. دەتوانیت ئەم نەرمەکالا پەسەند بکەیت یان ڕەت بکەیتەوە. + subject: هەژمارەیەک نوێ بۆ پێداچوونەوە لەسەر %{instance} (%{username}) + new_report: + body: بەکارهێنەری %{reporter} گوزارشی لە بەکارهینەری%{target} دا + body_remote: کەسێک لە %{domain} گوزارشتی %{target} ناردووە + subject: گوزارشتێکی نوی لە %{instance} (#%{id}) + new_trending_tag: + body: 'هاشتاگی #%{name} ئەمڕۆ ئاراستە دەکرێت، بەڵام پێشتر پێداچوونەوەی بۆ نەکراوە. بە ئاشکرا پیشان نادرێت مەگەر تۆ ڕێگەی پێ بدەیت، یان تەنها فۆرمەکەت وەک خۆی پاشەکەوت بکەیت کە هەرگیز لێی نەبیستیت.' + subject: تاگێکی نوێ لە %{instance} نیازمەندی پێداچوونەوەیە (#%{name}) + aliases: + add_new: دروستکردنی ناوی ساختە + created_msg: نازناوێکی نوێیان سەرکەوتووانە دروستکرد. ئێستا دەتوانیت دەست بە گواستنەوە کەیت لە هەژمێرە کۆنەکەت. + deleted_msg: سەرکەوتووانە نازناوەکان لابدە. گواستنەوە لەو هەژمارەوە بۆ ئەم کەسە چیتر نابێت. + empty: هیچ نازناوێکت نیە. + hint_html: ئەگەر دەتەوێت لە هەژمارەیەکی ترەوە بگوێزریتەوە بۆ ئەم هەژمارە، لێرەدا دەتوانیت نازناوێک دروست بکەیت، پێش ئەوەی ئەوە بەردەوام بیت لە گواستنەوەی لە هەژمارە کۆنەکە بۆ ئەم هەژمارە پێویستە. ئەم کردەوەیە خۆی لە خۆیدا بێ زەرە و ناگەڕێتەوەگواستنەوەی لە هەژمارەی کۆنە بۆ هەژمارەی نوێ دەستی پێکردووە. + remove: سڕینەوەی پەیوەندی ناز ناو + appearance: + advanced_web_interface: روخساری پێشکەوتوو + advanced_web_interface_hint: 'ئەگەر دەتەوێت پانی شاشەکە بەکاربێنیت، دەتوانی بە یارمەتی ڕووکاری پێشکەوتوو چەندین ستوونی جیاواز ڕێکبخەیت بۆ بینینی زانیاری زیاتر لە هەمان کات کە دەتەوێت بیبینیت: نووسراوەکانی نووسەرانی دیکە، ئاگانامەکان، پێرستی نووسراوەکانی هەموو شوێنێک، وە هەر ژمارەیەک لە لیستەکان و هاشتاگەکان.' + animations_and_accessibility: ئەنیمەیشن و توانایی دەستپێگەیشتن + confirmation_dialogs: پەیامەکانی پەسەندکراو + discovery: دۆزینەوە + localization: + body: ماستۆدۆن لەلایەن خۆبەخشەوە وەردەگێڕێت. + guide_link: https://crowdin.com/project/mastodon + guide_link_text: هەموو کەسێک دەتوانێت بەشداری بکات. + sensitive_content: ناوەڕۆکی هەستیار + toot_layout: لۆی توت + application_mailer: + notification_preferences: گۆڕینی پەسەندکراوەکانی ئیمەیڵ + salutation: "%{name}," + settings: 'گۆڕینی پەسەندکراوەکانی ئیمەیڵ: %{link}' + view: 'نیشاندان:' + view_profile: پرۆفایل نیشان بدە + view_status: پیشاندانی دۆخ + applications: + created: بەرنامە بە سەرکەوتوویی دروست کرا + destroyed: بەرنامە بە سەرکەوتوویی سڕدراوەتەوە + invalid_url: بەستەری دابینکراو نادروستە + regenerate_token: دووبارە دروستکردنەوەی نیشانەی چوونە ژوورەوە + token_regenerated: کۆدی دەستپێگەیشتن بە سەرکەوتوویی دروستکرا + warning: زۆر ئاگاداربە لەم داتایە. هەرگیز لەگەڵ کەس دا هاوبەشی مەکە! + your_token: کۆدی دەستپێگەیشتنی ئێوە + auth: + apply_for_account: داواکردنی بانگهێشتێک + change_password: تێپەڕوشە + checkbox_agreement_html: من ڕازیم بە یاساکانی ڕاژە وە مەرجەکانی خزمەتگوزاری + checkbox_agreement_without_rules_html: من ڕازیم بە مەرجەکانی خزمەتگوزاری + delete_account: سڕینەوەی هەژمارە + delete_account_html: گەر هەرەکتە هەژمارەکەت بسڕیتەوە، لە لەم قوناغانە بڕۆیتە پێشەوە. داوای پەسەند کردنتان لێدەگیرێت. + description: + prefix_invited_by_user: "@%{name} بانگت دەکات بۆ پەیوەندیکردن بەم ڕاژەی ماستۆدۆن!" + prefix_sign_up: ئەمڕۆ خۆت تۆمار بکە لە ماستۆدۆن! + suffix: بە هەژمارەیەک، دەتوانیت شوێن هەژمارەکانی دیکە بکەویت، نوێکردنەوەکان بڵاوبکەوە و نامە لەگەڵ بەکارهێنەران لە هەر ڕاژەیەکی ماستۆدۆن و زیاتر بگۆڕیتەوە! + didnt_get_confirmation: ڕێنماییەکانی دڵنیاکردنەوەت پێنەدرا? + dont_have_your_security_key: کلیلی ئاسایشت نیە? + forgot_password: تێپەڕوشەکەت لەبیر چووە? + invalid_reset_password_token: وشەی نهێنی دووبارە ڕێکبخەوە دروست نیە یان بەسەرچووە. تکایە داوایەکی نوێ بکە. + link_to_otp: کۆدی دوو فاکتەر لە تەلەفۆنەکەت یان کۆدی چاککردنەوە تێبنووسە + link_to_webauth: بەکارهێنانی ئامێری کلیلی پاراستن + login: چوونەژوورەوە + logout: چوونەدەرەوە + migrate_account: گواستنەوە بۆ ئەژمێرێکی تر + migrate_account_html: ئەگەر دەتەوێت ئەم هەژمارە دووبارە ئاڕاستە بکەیت بۆ ئەژمێرێکی تر، دەتوانیت کرتەیەک لێرە بکەی . + or_log_in_with: یان چوونە ژوورەوە بە + providers: + cas: CAS + saml: SAML + register: خۆ تۆمارکردن + registration_closed: "%{instance} ئەندامانی نوێ قبووڵ ناکات" + resend_confirmation: دووبارە ناردنی ڕێنماییەکانی دووپاتکردنەوە + reset_password: گەڕانەوەی تێپەڕوشە + security: ئاسایش + set_new_password: سازدانی تێپەڕوشەی نوێ + setup: + email_below_hint_html: ئەگەر ناونیشانی ئیمەیڵی خوارەوە نادروستە، دەتوانیت لێرە بیگۆڕیت و ئیمەیڵێکی پشتڕاستکردنەوەی نوێ وەربگۆڕیت. + email_settings_hint_html: ئیمەیڵی پشتڕاستکردنەوە کە نێردرا بۆ %{email}. ئەگەر ناونیشانی ئیمەیڵ ڕاست نەبوو، دەتوانیت لە ڕێکبەندەکانی هەژمارەکەت بیگۆڕیت. + title: دامەزراندن + status: + account_status: دۆخی هەژمارە + confirming: چاوەڕوانی دڵنیاکردنەوەی ئیمەیڵ بۆ تەواوکردن. + functional: هەژمارەکەت بەتەواوی کارا بووەتەوە. + pending: ئەپلیکەیشەنەکەت چاوەڕوانی پێداچوونەوەیە لەلایەن ستافەکەمانەوە. لەوانەیە ئەمە هەندێک کاتی بخایەنێت ئەگەر ئەۆپەکەت پەسەند کرا، ئیمەیڵت پێدەگات. + redirecting_to: هەژمارەکەت ناچالاکە لەبەرئەوەی ئێستا دووبارە ئاڕاستەدەکرێتەوە بۆ %{acct}. + trouble_logging_in: کێشە ت هەیە بۆ چوونە ژوورەوە? + use_security_key: کلیلی ئاسایش بەکاربهێنە + authorize_follow: + already_following: ئێوە ئێستا شوێن کەوتووی ئەم هەژمارەیەی + already_requested: تۆ پێشتر داواکاری بەدواداچوت ناردوە بۆ ئەو هەژمارە + error: بەداخەوە هەڵەیەک هەبوو لە کاتی گەڕان بەدوای ئەو هەژمارەیە + follow: شوێن کەوە + follow_request: 'تۆ داواکاری شوێنکەوتنت ناردووە بۆ:' + following: 'ئەنجام بوو! تۆ ئێستا بەدوای ئەم بەکارهێنەرە دەکەویت:' + post_follow: + close: یان، دەتوانیت ئەم پەنجەرەیە دابخەیت. + return: پرۆفایلی بەکارهێنەر نیشان بدە + web: بڕۆ بۆ وێب + title: دوای %{acct} بکەوە + challenge: + confirm: بەردەوام بە + hint_html: "خاڵ: ئیمە لە کاتژمێری داهاتوو تێپەروشەت لێداوا ناکەین." + invalid_password: تێپەروشە دروست نیە + prompt: دڵنیابوون لە نهێنوشە بۆ بەردەوامبوون + crypto: + errors: + invalid_key: کلیلی باوڕپێکراو Ed25519 یان Curve25519 دروست نییە + invalid_signature: واژووی Ed25519 بڕوادار نییە + date: + formats: + default: "%b %d, %Y" + with_month_name: "%B %d, %Y" + datetime: + distance_in_words: + about_x_hours: "%{count}کات" + about_x_months: "%{count}mo" + about_x_years: "%{count}ساڵ" + almost_x_years: "%{count}ساڵ" + half_a_minute: ئێستا + less_than_x_minutes: "%{count}m" + less_than_x_seconds: ئێستا + over_x_years: "%{count}ساڵ" + x_days: "%{count}ڕۆژ" + x_minutes: "%{count}m" + x_months: "%{count}mo" + x_seconds: "%{count}s" + deletes: + challenge_not_passed: ئەو زانیاریانەی تێنووست کردووە ڕاست نەبوو + confirm_password: تێپەڕوشەی ئێستات تێبنووسە بۆ سەلماندنی ناسنامەکەت + confirm_username: ناوی بەکارهێنەرت تێبنووسە بۆ دڵنیابوون لە کردارەکە + proceed: سڕینەوەی هەژمارە + success_msg: هەژمارەکەت بە سەرکەوتوویی سڕرایەوە + warning: + before: 'پێش بەردەوام بوون، تکایە ئەم تێبینیانە بە وردی بخوێننەوە:' + caches: وادیارە ئەو ناوەرۆکە کە ڕاژەکانی دیکە پاشکەوتیان کردووە بمینێتەوە + data_removal: بابەتەکانت و داتاکانی تر بە هەمیشەیی لادەبرێن + email_change_html: دەتوانی ناونیشانی ئیمەیڵەکەت بگۆڕیت بەبێ سڕینەوەی هەژمارەکەت + email_contact_html: گەر ئیمەیل نەگەیشتووە بۆ داوای یارمەتی پەیامێک بنێرە بۆ %{email} پیغام دهید + email_reconfirmation_html: ئەگەر ئیمەیڵی پشتڕاستکردنەوەت پێنەگەشتووە، دەتوانیت دووبارە داوای لێبکە + irreversible: ناتوانیت هەژمارەکەت بگەڕێنیتەوە یان کارا بکەیتەوە + more_details_html: بۆ زانیاری زیاتر، پاراستنی نهێنیەکان ببینە. + username_available: ناوی تێپەڕبوونت دووبارە بەردەست دەبێت + username_unavailable: ناوی تێپەڕبوونت بەردەست نییە + directories: + directory: ڕێنیشاندەرێکی پرۆفایل + explanation: دۆزینەوەی بەکارهێنەران لەسەر بنەمای بەرژەوەندییەکانیان + explore_mastodon: گەڕان لە %{title} + domain_validator: + invalid_domain: ناوی دۆمەین بڕوادار نییە + errors: + '400': داواکاریەکەی کە پێشکەشت کردووە نادروستە یان نەیپێکا. + '403': تۆ مۆڵەتت نیە بۆ بینینی ئەم لاپەڕەیە. + '404': ئەو لاپەڕەیەی بەدوای دەگەڕێی لێرە نیە. + '406': ئەم پەڕەیە لە فۆرماتی داواکراودا بەردەست نییە. + '410': ئەو لاپەڕەیەی بەدوای دا دەگەڕایت چیتر لێرە بوونی نیە. + '422': + content: سەلماندنەکەی ئاسایش سەرکەوتوو نەبوو. تۆ بلۆکی کۆکیز دەکەیت? + title: سەلماندنەکەی ئاسایش سەرکەوتوو نەبوو + '429': داواکاری زۆر + '500': + content: داوای لێبوردن دەکەین، بەڵام لە کۆتاییەکەماندا. شتێک هەڵە ڕویداوە. + title: ئەم لاپەڕەیە ڕاست نییە + '503': ناتوانرێت پەڕەکە خزمەت بکرێت بەهۆی شکستی ڕاژەیەکی کاتی. + noscript_html: بۆ بەکارهێنانی بەرنامەی وێبی ماستۆدۆن، تکایە جاڤاسکریپت بەتوانا بکە. لە جیاتی ئەوە، یەکێک لە < href="%{apps_path}">ئەپێکی ماستۆدۆنبەکارببە. + existing_username_validator: + not_found: بەکارهێنەرێک بەم هەژمارەی بەکارهێنەرە لەم ڕاژە پەیدا نەبوو + not_found_multiple: نەیتوانی %{usernames} بدۆزێتەوە + exports: + archive_takeout: + date: بەروار + download: داگرتنی ئەرشیفەکەت + hint_html: دەتوانیت داوای ئەرشیفی نووسراوە و میدیای بارکراوەی خۆت بکەی. داتای هەناردەکراو لە فۆرماتی ActivityPub دەبێت، دەخوێنرێتەوە لەلایەن هەر نەرمەکالایەکی گونجاو. دەتوانیت هەموو ٧ ڕۆژ جارێک داوای ئەرشیفێکەت بکەیت. + in_progress: خەریکی کۆ کردنەوەی ئەرشیڤەکەت... + request: داوای ئەرشیفەکەت بکە + size: قەبارە + blocks: تۆ بلۆک دەکەیت + csv: CSV + domain_blocks: دۆمەین قەپاتکرا + lists: لیستەکان + mutes: هەژمارە بێدەنگ کراوە + storage: هەمارگەی میدیا + featured_tags: + add_new: زیادکردنی نوێ + errors: + limit: ئێوە ژمارەی بڕی ڕێگەپێدراوەی هاشتاگت هەیە + hint_html: " هاشتاگی تایبەت چییە؟ بە شێوەیەکی دیار نیشان دەدرێت لەسەر پرۆفایلی گشتی و ڕێگە بە خەڵک دەدات بۆ گەڕان لە نووسراوە گشتیەکانت بە تایبەتی لەژێر ئەو هاشتاگە. ئامرازێکی زۆر باشن بۆ پاراستنی کاری داهێنەرانە یان پڕۆژەی درێژخایەنی ئێوە." + filters: + contexts: + account: پرۆفایلەکان + home: ماڵەوە + notifications: ئاگادارییەکان + public: پێرستی گشتی نووسراوەکان + thread: گفتوگۆکان + edit: + title: دەستکاری فلتەر + errors: + invalid_context: هیچ دەقێکی نادروست نییە یان بێ بڕوایە + invalid_irreversible: فلتەرکردنی بێ گەڕانەوە تەنها کار دەکات لەگەڵ چوارچێوەی ماڵ یان ئاگانامەکان + index: + delete: سڕینەوە + empty: هیچ پالێوەرێکت نیە. + title: فلتەرەکان + new: + title: زیادکردنی فلتەری نوێ + footer: + developers: پەرەپێدەران + more: زیاتر… + resources: سەرچاوەکان + trending_now: هەوادارانی ئێستا + generic: + all: هەموو + changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا! + copy: ڕوونووس + delete: سڕینەوە + no_batch_actions_available: هیچ گرووپێکی کاری بەردەست نیە لەسەر ئەم لاپەڕەیە + order_by: ڕێکخستن بەپێی + save_changes: گۆڕانکاریەکان بپارێزە + validation_errors: + one: شتێک هێشتا تەواو ڕاست نیە تکایە چاو بە هەڵەکەی خوارەوە بخشێنەوە + other: هێشتا تەواو ڕاست نیە تکایە چاو بە هەڵەی %{count} خوارەوە بخشێنەوە + html_validator: + invalid_markup: 'نیشانەی HTML نادروستی تێدایە: %{error}' + identity_proofs: + active: چالاک + authorize: بەڵێ، ڕێگە بدە + authorize_connection_prompt: ئایا ئەم گرێدانە نهێنییە ڕیگە دەدەی? + errors: + failed: پەیوەندی کردنی نهێنیکردن سەرکەوتوو نەبوو. تکایە دووبارە لە %{provider} هەوڵ بدەوە. + keybase: + invalid_token: نیشانە کانی بنەکلیلی سەرەکی (هەش) واژووی دیجیتاڵن و لانی کەم ٦٦ نووسە لە توانی ١٦ هەیە + verification_failed: ئەم بنە کلیلیە(Keybase) بە ءینوانی واژووی دیجیتاڵی بەکارهێنەری %{kb_username} پەسەند ناکا، تکایا دووبارە لە بنە کلیلێکی دیکە هەوڵ بدەوە. + wrong_user: ناتوانرێت پشت ڕاستکردنەوەیەک بۆ %{proving} لە کاتێک بە عینوانی %{current} هاتنەتە ناوە. بە عینوانی %{proving} بچنە ناوەو دووبارە هەوڵ بدەنەوە. + explanation_html: لێرە دەتوانیت بە نهێنی ناسنامەکانی تر ت گرێ بدەی لە سەکۆکانی ترەوە، وەک کلیلی بنکە. ئەمە ڕێگە دەدات بە کەسانی تر نامەی رەمزێنراوەکانت بۆ بنێرن لەسەر ئەو پلاتفۆرمە ، رێگەیان پێدەدات متمانە بکەن کە ئەو ناوەڕۆکەی تۆ دەیاننێریت لە تۆوە دێت. + i_am_html: من %{username} ــم لەسەر %{service} ــنم. + identity: ناسنامە + inactive: ناچالاکە + publicize_checkbox: 'ئەمە توت بکە:' + publicize_toot: 'پەسەند کرا! من %{username} لەسەر %{service} هەم: %{url}' + remove: لابردنی بەڵگە لە هەژمارەی + removed: بە سەرکەوتوویی بەڵگەنامەی سەلماندن لابرا لە هەژمارەی بەکارهینەر + status: دۆخی سەلماندن + view_proof: پیشاندانی سەلماندن + imports: + modes: + merge: یەکخستن + merge_long: هێشتنەوەی تۆمارەکانی بەردەست و زیادکردنی دانەنوێکان + overwrite: نووسینەوە + overwrite_long: دراوەکانی ئێستا بسڕەوە و دراوی نوێ زیاد بکە + preface: دەتوانیت زانیاری هاوردە بکەیت کە ناردوتە تە لە ڕاژەیەکی ترەوە، وەک لیستی ئەو کەسانەی کە تۆ بەدوای دادەکەویت یان بەربەستت دەکەن. + success: داتاکەت بە سەرکەوتوویی بارکرا و ئێستا لە کاتی خۆیدا پرۆسێس دەکرێت + types: + blocking: لیستی بلۆککردن + domain_blocking: لیستی بلۆککردنی دۆمەین + following: لیستی خوارەوە + muting: لیستی کپکردنەوە + upload: بارکردن + in_memoriam_html: لەیادبوون. + invites: + delete: لەکارخستن + expired: بەسەرچووە + expires_in: + '1800': ٣٠ خولەک + '21600': ٦ کاتژمێر + '3600': ١ کاتژمێر + '43200': ١٢ کاتژمێر + '604800': ١ هەفتە + '86400': ١ ڕۆژ + expires_in_prompt: هەرگیز + generate: دروستکردنی لینکی بانگهێشت + invited_by: 'بانگهێشتکرایت لەلایەن:' + max_uses: + one: ١ بار + other: "%{count} بار" + max_uses_prompt: بێ سنوور + prompt: دروست کردن و هاوبەش کردنی لینکەکان لەگەڵ ئەوانی تر بۆ پێدانی چوونە ژوورەوە بۆ ئەم ڕاژە + table: + expires_at: بەسەرچووە + uses: بەکارهاوردنەکان + title: بانگهێشتکردنی خەڵک + lists: + errors: + limit: تۆ گەیشتوویتە زۆرترین ڕێژەی لیستەکان + media_attachments: + validations: + images_and_video: ناتوانرێت لەگەڵ ئەو نووسراوانە کە وێنەی لەگەڵە ،ڤیدیۆ بار بکەی + not_ready: ناتوانێت فایلەکان هاوپێچ بکات کە پرۆسەکەیان تەواو نەکردووە. دووبارە هەوڵ بدە! + too_many: ناتوانێت زیاتر لە ٤ فایل هاوپێچ بکات + migrations: + acct: گوێزرایەوە بۆ + cancel: پاشگەزبوونەوە لە دووبارە ئاڕاستەکردنەوە + cancel_explanation: هەڵوەشاندنەوەی دووبارە ئاڕاستەکردنەوە هەژمارەی ئێستات چالاک دەکات، بەڵام ئەو شوێنکەوتوانی ناهێنە وه کە گواستراوەتەوە بۆ ئەو هەژمارە. + cancelled_msg: سەرکەوتووانە دووبارە ئاڕاستەکردنەوەکەی بەتاڵ کردەوە. + errors: + already_moved: هەمان ئەژمێرە کە تۆ پێشتر گواستووتە بۆ + missing_also_known_as: نازناوێکی ئەم هەژمارە نییە + move_to_self: ناتوانێت هەژمارەی ئێستا بێت + not_found: نادۆزرێتەوە + on_cooldown: تۆ دەبێت چاوەڕوان بیت + followers_count: شوێنکەوتوانی کاتی لە حاڵی گواستنەوە + incoming_migrations: گواستنەوە لە هەژمارەی جیاواز + incoming_migrations_html: بۆ گواستنەوە لە هەژمارەیەکی ترەوە بۆ ئەم هەژمارە، سەرەتا پێویستە ئەژمێرێک دروست بکەی. + moved_msg: هەژمارەکەت ئێستا دووبارە ئاڕاستە دەکرێتەوە بۆ %{acct} و شوێنکەوتوانی تۆ گواستراوەتەوە بۆ ئەوێ. + on_cooldown: تۆ بەم دواییە هەژمارەکەت کۆچ کردووە. ئەم کارە لە رۆژەکانی %{count} دا جارێکی تر بەردەست دەبێت. + past_migrations: گەواستنەوەکانی ڕابردوو + proceed_with_move: شوێنکەوتوان بگوازەوە + redirected_msg: ئەژمێرەکەت ئێستا دووبارە ئاڕاستە دەکرێتەوە بۆ %{acct}. + redirecting_to: ئەژمێرەکەت دووبارە ئاڕاستە دەکرێتەوە بۆ %{acct}. + set_redirect: دووبارە ئاڕاستەکردن ڕێک بخە + warning: + backreference_required: پێویستە سەرەتا هەژمارە نوێیەکە بۆ گەڕانەوەی سەرچاوەی ئەم هەژمارە رێکوپێک بکرێت + before: 'پێش بەردەوام بوون، تکایە ئەم تێبینیانە بە وردی بخوێننەوە:' + cooldown: دوای گواستنەوە ماوەیەکی چاوەڕوان دەبێ کە لە ماوەی ئەو دا نابێت جارێکی تر بگوازیتەوە + disabled_account: هەژمارەی ئێستات دوای ئەوە بە تەواوی بەکارناهیێت. هەرچۆنێک بێت، تۆ دەستگەیشتنت دەبێت بۆ ناردنەدەرەوەی داتا و هەروەها دووبارە کاراکردنەوە. + followers: ئەم کردارە هەموو شوێنکەوتوانی هەژمارەی ئێستا دەگوازێتەوە بۆ هەژمارەی نوێ + only_redirect_html: ئێوە دەتانن هەژمارەکەی خۆتان بیخەنە سەر هەژمارەیەکی دیکە. + other_data: هیچ داتایەکی تر بە خۆکارانە ناگوێزرێتەوە + redirect: پرۆفایلی هەژمارەی ئێستات بە ئاگادارییەکی ئاراستەکەراوە نوێ دەکرێتەوە و دووردەکەویت لە گەڕانەکان + moderation: + title: بەڕێوەبردن + move_handler: + carry_blocks_over_text: ئەم بەکارهێنەرە گواسترایەوە بۆ %{acct}، تۆ بلۆکت کردووە. + carry_mutes_over_text: ئەم بەکارهێنەرە گواسترایەوە بۆ %{acct}، تۆ بێدەنگت کردووە. + copy_account_note_text: 'ئەم بەکارهێنەرە لە %{acct} ەوە گواستیەوە، تێبینیەکانی پێشووت دەربارەیان بوون:' + notification_mailer: + digest: + action: پیشاندانی هەموو ئاگانامەکان + body: ئەمە کورتەی ئەو نامانەی لە دەستت دا لە دوا سەردانیت لە %{since} + mention: "%{name} ئاماژەی بە تۆ کرد لە:" + new_followers_summary: + one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم! + other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە! + subject: + one: "ئاگاداریێکی نووی لە دوایین سەردانی ئێوە\U0001F418" + other: "%{count} ئاگاداریێکی نوێ لە دوایین سەردانی ئێوە\U0001F418" + title: لە غیابی تۆدا... + favourite: + body: 'دۆخت پەسەندکراوە لەلایەن %{name}:' + subject: "%{name} دۆخی تۆی پەسەند کرد" + title: دڵخوازکردنی نوێ + follow: + body: "%{name} ئێستا شوێنکەوتوو ئێوەیە!" + subject: "%{name} ئێستا شوێنکەوتوو ئێوەیە" + title: شوێنکەوتوانی نوێ + follow_request: + action: بەڕێوەبردنی داوای شوێنکەوتن + body: "%{name} داوای کردووە کە شوێنت بکەوێت" + subject: 'چاوەڕوانی شوێنکەوتووە: %{name}' + title: داواکاری شوینکەوتنی نوێ + mention: + action: وەڵام + body: "%{name} لێرە ناوی ئێووەی بردووە:" + subject: "%{name} لێرە ناوی ئێووەی بردووە" + title: ناوبراوەی نوێ + reblog: + body: "%{name} نووسیسراوەکەی ئێوەی توتاندەوە:" + subject: "%{name} نووسراوەکەتی دووبارە توتاند" + title: توتاندنەوەی نوێ + notifications: + email_events: رووداوەکان بۆ ئاگاداری ئیمەیلی + email_events_hint: 'ئەو ڕووداوانە دیاریبکە کە دەتەوێت ئاگانامەکان وەربگری بۆ:' + other_settings: ڕێکبەندەکانی ئاگانامەکانی تر + number: + human: + decimal_units: + format: "%n%u" + units: + billion: B + million: M + quadrillion: Q + thousand: K + trillion: T + otp_authentication: + code_hint: کۆدێک داخڵ بکە کە دروست کراوە لەلایەن ئەپی ڕەسەنایەتیەوە بۆ دڵنیابوون + description_html: ئەگەر تۆ هاتنەژوورەوەی دوو قۆناغی بە یارمەتی ئەپێکی پەسەندکردن چالاک بکەن، پێویستە بۆ چوونەژوورەوە ، بە تەلەفۆنەکەتان کە کۆدیکتان بۆ دروستدەکات دەستپێگەیشتنتان هەبێت. + enable: چالاککردن + instructions_html: " QR بدۆزەوە بۆ ناو ڕەسەنایەتی گووگڵ یان کاربەرنامەی TOTP هاوشێوە لەسەر تەلەفۆنەکەت . لە ئێستاوە، ئەو کاربەرنامەیە نیشانە دروست دەکات کە دەبێت داخڵیان بکەیت لەکاتی چوونە ژوورەوە." + manual_instructions: 'ئەگەر ناتوانیت کۆدی QR سکان بکەیت و پێویستە بە دەستی تێبنووسە، ئەمە نهێنیی دەقی سادەیە:' + setup: ئامادەکردن + wrong_code: کۆدی داخڵکراو نادروستە! ئایا کاتی ڕاژە و کاتی ئامێر راستن? + pagination: + newer: نوێتر + next: داهاتوو + older: کۆنتر + prev: پێشوو + truncate: "…" + polls: + errors: + already_voted: تۆ پێشتر دەنگت داوە لەسەر ئەم ڕاپرسییە + duplicate_options: خاوەنی ئایەمی دووبارە + duration_too_long: لە داهاتوو زۆر دوورە + duration_too_short: لە داهاتوو زۆر نزیکە + expired: ڕاپرسیەکە پێشتر کۆتایی هاتووە + invalid_choice: بژاردەی دەنگدانی هەڵبژێردراو بوونی نییە + over_character_limit: ناتوانێت هەر کامێکی درێژتر بێت لە %{max} نووسە + too_few_options: پێویستە زیاتر لە یەک بڕگەی هەبێت + too_many_options: ناتوانێت زیاتر لە %{max} بەندی تێدا بێت + preferences: + other: هی تر + posting_defaults: بڵاوکردنی بنەڕەتەکان + public_timelines: هێڵی کاتی گشتی + reactions: + errors: + limit_reached: سنووری کاردانه وه ی جیاواز گه یشت + unrecognized_emoji: ئیمۆجییەکی ناسراو نییە + relationships: + activity: چالاکی هەژمارە + dormant: ناچالاک + followers: شوێنکەوتوان + following: شوێن‌کەوتووی + invited: بانگهێشتەکان + last_active: دوایین چالاکی + most_recent: تازەترین + moved: گوێزرایەوە + mutual: دوولایەنە + primary: سەرەتایی + relationship: پەیوەندی + remove_selected_domains: لابردنی هەموو شوێنکەوتوانی دۆمەینە دیاریکراوەکان + remove_selected_followers: شوێنکەوتوانی دیاریکراو لابدە + remove_selected_follows: کۆتایی بە بەدوادانەچوی بەکارهێنەرە دیاریکراوەکان بدە + status: دۆخی هەژمارە + remote_follow: + acct: ناونیشانی هەژمارەی username@domainخۆت لێرە بنووسە + missing_resource: نەیتوانی URLی ئاراستەکردنەوەی پێویست بدۆزێتەوە بۆ ئەژمێرەکەت + no_account_html: هێشتا نەبووی بە ئەندام؟ لێرە دەتوانی هەژمارەیەک دروست بکەی + proceed: بەردەوام بە بۆ بەدواداچوون + prompt: 'تۆ بەدوای دا دەچیت:' + reason_html: " بۆچی ئەم هەنگاوە پێویستە؟ %{instance} لەوانەیە ئەو ڕاژەیە نەبێت کە تۆ تۆمارت کردووە، بۆیە پێویستە سەرەتا دووبارە ئاڕاستەت بکەین بۆ ڕاژەکاری ماڵەوەت." + remote_interaction: + favourite: + proceed: بۆ دڵخوازکردنی ئەم توتە + prompt: 'دەتەوێت ئەم تووتە تپەسەند بکەیت؛:' + reblog: + proceed: بەردەوام بە بۆ دووبارە توتاندن + prompt: 'دەتەوێت ئەم تووتە دووبارە بکەیتەوە:' + reply: + proceed: بۆ وەڵامدانەوە + prompt: 'دەتەوێت ئەم تووتە وڵام بدەیتەوە:' + scheduled_statuses: + over_daily_limit: ئێوە لە سنووری ڕیپێدراوی %{limit} توتی ئەو رۆژە،خۆرتر ڕۆیشتوویت + over_total_limit: تۆ سنووری خشتەکراوی %{limit} ت بەزاندووە + too_soon: پێویستە بەرواری خشتەکراو لە داهاتوودا بێت + sessions: + activity: دوایین چالاکی + browser: وێبگەڕ + browsers: + alipay: Alipay + blackberry: بلاکبێری + chrome: کرۆم + edge: مایکرۆسۆفت ئیچ + electron: ئەلکترۆن + firefox: فایەرفۆکس + generic: وێبگەڕی نەناسراو + ie: ئینتێرنێت ئێکسپلۆرەر + micro_messenger: مایکرۆمێسنجەر + nokia: وێبگەڕی نۆکیا ئێس ٤٠ ئۆڤی + opera: ئۆپێرا + otter: ئۆتەر + phantom_js: فانتۆم جەی ئێس + qq: وێبگەڕی QQ + safari: سافری + uc_browser: وێبگەڕی UC + weibo: Weibo + current_session: دانیشتنی ئێستا + description: "%{browser} لەسەر %{platform}" + explanation: ئەمانە وێبگەڕەکەن کە ئێستا چووەتە ژوورەوە بۆ ئەژمێری ماستۆدۆنی خۆت. + ip: ئای‌پی + platforms: + adobe_air: Adobe Air + android: ئەندرۆید + blackberry: بلاکبێری + chrome_os: سیستەمی کارگێڕی کرۆم + firefox_os: سیستەمی کارگێڕی فایەرفۆکس + ios: iOS + linux: لینۆکس + mac: ماک + other: سیستەمیکارگێڕی نەناسراو + windows: ویندۆز + windows_mobile: ویندۆزموبایل + windows_phone: ویندۆزفۆن + revoke: بەتاڵکردن + revoke_success: دانیشتن بەسەرکەوتوویی بەتاڵکرا + title: کۆبوونەوەکان + settings: + account: هەژمارە + account_settings: ڕێکخستنەکانی هەژمارە + aliases: نازناوەی هەژمارە + appearance: ڕووخسار + authorized_apps: ئەپەکانی ڕێگەپێدراو + back: گەڕانەوە بۆ ماستۆدۆن + delete: سڕینەوەی هەژمارە + development: گەشەپێدان + edit_profile: دەستکاری پرۆفایل + export: ناردن زانیاری + featured_tags: هاشتاگی تایبەت + identity_proofs: سەلماندنی ناسنامە + import: هاوردن + import_and_export: هاوردەکردن و ناردن + migrate: گواستنەوەی هەژمارە + notifications: ئاگادارییەکان + preferences: پەسەندەکان + profile: پرۆفایل + relationships: شوێنکەوتوو و شوێنکەوتوان + two_factor_authentication: کۆدی دووقۆناغی هاتنەژوور + webauthn_authentication: کلیلەکانی پاراستن + spam_check: + spam_detected: ئەمە هەژمارەیەکی خۆکارانەیەبۆ ناساندنی سپام. + statuses: + attached: + audio: + one: "%{count} دەنگ" + other: "%{count} دەنگ" + description: 'هاوپێچ: %{attached}' + image: + one: "%{count} وێنە" + other: "%{count} وێنەکان" + video: + one: "%{count} ڤیدیۆ" + other: "%{count} ڤیدیۆکان" + boosted_from_html: توکراوەتەوە لەلایەن %{acct_link} + content_warning: 'ئاگاداری ناوەڕۆک: %{warning}' + disallowed_hashtags: + one: 'هاشتاگی ڕێگەپێنەدراوەی تێدابوو: %{tags}' + other: 'هاشتاگەکانی ڕێگەپێنەدراوەی تێدابوو: %{tags}' + errors: + in_reply_not_found: ئەو دۆخەی کە تۆ هەوڵی وەڵامدانەوەی دەدەیت وادەرناکەوێت کە هەبێت. + language_detection: بە شێوەیەکی خۆکارانە زمان بدۆزیەوە + open_in_web: کردنەوە لە وێب + over_character_limit: سنووری نووسەی %{max} تێپەڕێنرا + pin_errors: + limit: تۆ پێشتر زۆرترین ژمارەی توتتی چەسپیوەت هەیە + ownership: نووسراوەکانی تر ناتوانرێ بسەلمێت + private: توتی ناگشتی ناتوانرێت بچەسپێ + reblog: بەهێزکردن ناتوانرێت بچەسپێ + poll: + total_people: + one: "%{count} کەس" + other: "%{count} خەڵک" + total_votes: + one: "%{count} دەنگ" + other: "%{count} دەنگەکان" + vote: دەنگ + show_more: زیاتر پیشان بدە + show_thread: نیشاندانی ڕشتە + sign_in_to_participate: بچۆ ژوورەوە بۆ بەشداریکردن لە گفتوگۆکەدا + title: '%{name}: "%{quote}"' + visibilities: + private: شوێنکەوتوانی تەنها + private_long: تەنها بۆ شوێنکەوتوانی پیشان بدە + public: گشتی + public_long: هەموو کەس دەتوانێت ببینێت + unlisted: پێرست نەبووە + unlisted_long: هەموو کەس دەتوانێت بیبینێت، بەڵام لە هێڵی کاتی گشتی دا نەریزراوە + stream_entries: + pinned: توتی چەسپکراو + reblogged: بەهێزکردن + sensitive_content: ناوەڕۆکی هەستیار + tags: + does_not_match_previous_name: لەگەڵ ناوی پێشوو یەک ناگرێتەوە + terms: + body_html: | +

سیاسەتی تایبەت

+

چ زانیاریێک کۆ دەکەینەوە؟

+
    +
  • زانیاری ئەژمێری بنەڕەتی: ئەگەر تۆ لەسەر ئەم ڕاژەی تۆماربکەیت، لەوانەیە داوات لێبکرێت ناوی بەکارهێنەر، ناونیشانی ئیمەیڵ و نهێنوشە تێبنووسیت. هەروەها دەتوانیت زانیاری پرۆفایلی زیاتر تێبنووسی ت وەک ناوی پیشاندان و ژیاننامە، و بارکردنی وێنەی پرۆفایل و وێنەی سەرپەڕە. ناوی بەکارهێنەر، ناوی پیشاندان، ژیاننامە، وێنەی پرۆفایل و وێنەی سەرپەڕە هەمیشە بە ئاشکرا لیست کراوە.
  • +
  • پۆستەکان، بەدواکەوتن و زانیاری گشتی : لیستی ئەو کەسانەی کە پەیڕەوی دەکەیت بە ئاشکرا لیست کراوە، هەمان شت بۆ شوێنکەوتەکانت ڕاستە. کاتێک ئیمەیڵێکت پێشکەش کرد، بەروار و کات خەزن کراوە و هەروەها ئەو بەرنامەیەی کە نامەکەت لەوە پێشکەش کردووە. نامەکان لەوانەیە هاوپێچی میدیای تێدابێت، وەک وێنە و ڤیدیۆ. گشتی و لیستە نەکراوەکان بابەتەکان بە ئاشکرا بەردەستن. کاتێک بابەتێک پێشکەش دەکەیت لەسەر پرۆفایلەکەت، کە هەروەها زانیاری بەردەستی گشتیە. بابەتەکانت دەگەیەنینە شوێنکەوتەکانت، لە هەندێک حاڵەتدا مانای وایە دەگەیەنینە ڕاژەکاری جیاواز و کۆپیەکان لەوێ هەڵگیراون. کاتێک بابەتەکان دەسڕیتەوە، ئەمە بە هەمان شێوەیە دەگەیەنیتە شوێنکەوتوانی خۆت. کاری سەرلێبڕین یان بە دڵنییاکردنی پۆستی تر هەمیشە گشتیە.
  • +
  • ڕاستەوخۆ و تەنها شوێنکەوتوانی بابەتەکان: هەموو بابەتەکان خەزن کراون و لە ڕاژەکارەکە دا پرۆسەکراون. پۆست تەنها شوێنکەوتوانی خۆت دەگەیەنینە شوێنکەوتوانی خۆت و بەکارهێنەران کە تێیدا باس دەکرێت، و پۆستی ڕاستەوخۆش تەنها دەگەیەنینە ئەو بەکارهێنەرانەی کە ئاماژەیان پێکراوە لە هەندێک حاڵەتدا واتە دەگەیەنینە ڕاژەی جیاوازەکان و کۆپیەکان لەوێ هەڵگیراون ئێمە هەوڵی باوەڕێکی باش دەکەین بۆ سنووردارکردنی گەیشتن بەو پۆستانە تەنها بۆ کەسانی ڕێگەپێدراو، بەڵام لەوانەیە ڕاژەکارەکانی تر سەرکەوتوو نەبوون. بۆیە گرنگە پێداچوونەوە بە سێرڤەرەکان بکەیت کە شوێنکەوتوانی تۆ هی ئەوەن. لەوانەیە بژاردەیەک بگۆڕیت بۆ پەسەندکردن و ڕەتکردنەوەی شوێنکەوتوانی نوێ بە دەستی لە ڕێکبەندەکان. تکایە لە بیرت بێت کە کارپێکەرەکانی سێرڤەرەکە و هەر خزمەتکاری وەرگرێک لەوانەیە ئەم جۆرە نامانە ، و وەرگرەکان لەوانەیە گرتەی شاشە یان کۆپی بکەن یان بە پێچەوانەوە دووبارە بەشداری پێبکەن. هیچ زانیاریەکی مەترسیدار لەسەر ماستۆدۆن بڵاو
  • +
  • ئای پی و مێتاداتای تر: کاتێک دەچیتە ژوورەوە، ئێمە ئەو ئای پی ە تۆمار دەکەین کە تۆ لە ناوی ەوە داخڵ تدەکەیت، هەروەها ناوی بەرنامەی وێبگەڕەکەت. هەموو ئەو کۆکراوانەی لە کۆبوونەوەکاندا هەن بۆ پێداچوونەوە و بەتاڵکردنەوەت لە ڕێکبەندەکان. نوێترین ناونیشانی IP بەکارهێنراوە خەزن کراوە بۆ ١٢ مانگ. هەروەها لەوانەیە ئێمە مادە ڕاژەکارەکان بهێڵین کە ئای پی ئەدرێسی هەموو داواکارییەک بۆ ڕاژەکارەکانمان
  • +
+ < hr="spacer" /> + +

ئێمە زانیاری ئێوەمان بۆ چییە؟

+ +

ئەو زانیاریانەی لە ئێوە کۆی دەکەین لەوانەیە بەم ڕێگایانە بەکار بهێنرێت:

+ +
    +
  • بۆ دابینکردنی ئەرکە سەرەکیەکانی ماستۆدۆن. دەتوانیت تەنها کارلێک بکەیت لەگەڵ ناوەڕۆکی کەسانی تر و ناوەڕۆکی خۆت پۆست بکەیت کاتێک دەچیتە ژوورەوە. بۆ نموونە، لەوانەیە شوێن کەسانی تر بکەویت بۆ بینینی پۆستە تێکەڵەکانیان لە تایم لاینی ماڵەوەی تایبەتی خۆت.
  • +
  • بۆ چاودێری کردنی کۆمەڵگا، بۆ نموونە بەراوردکردنی ناونیشانی IPەکەت لەگەڵ کەسانی ناسراو بۆ دیاریکردنی خۆدزینەوە یان پێشێلکاریتر.
  • +
  • ئەو ئیمەیڵەی کە تۆ دەستەبەرت کردووە لەوانەیە بەکاربێت بۆ ناردنی زانیاری، ئاگاداری دەربارەی کەسانی تر کە کارلێک دەکەن لەگەڵ ناوەڕۆکەکەت یان ناردنی نامەکانت، و وەڵامدانەوەی پرسیارکردنەکان، و/یان داواکارییان یان پرسیارەکانی تر.
  • +
+ < hr="spacer" /> + +

چۆن زانیاریەکەت دەپارێزین؟

+ +

ئێمە چەندین پێوانەی ئەمنی جۆراوجۆر جێبەجێ دەکەین بۆ پاراستنی سەلامەتی زانیاری ە تایبەتیەکانت کاتێک تۆ داخڵت کردووە یان پێشکەشکردن یان چوونە ژوورەوە بۆ زانیاری تایبەتی. لە نێوان شتەکانی تردا، دانیشتنی وێبگەڕەکەت، هەروەها ترافیکی نێوان کاربەرنامەکانت و API، بە SSL پارێزراوە، و نهێنوشەکەت بە بەکارهێنانی ئەلگاریتمی یەک-ڕێگەی بەهێز بە هاوسێکراوە. دەتوانیت سەلماندنی دوو-فاکتەر بەتوانا بکەیت بۆ زیاتر پاراستنی چوونە ژوورەوە بۆ ئەژمێرەکەت.

+ + < hr="spacer" /> + < hr="spacer" /> + +

بیمەنامەی هێشتنەوە داتامان چییە؟

+ +

ئێمە بە باشی هەوڵ بۆ باوەڕەکان

+ +
    +
  • سێرڤەری پاراستنی ناونووسەکان کە ناونیشانی ئای پی تێدایە بۆ هەموو داواکاریەکان بۆ ئەم سێرڤەرە، تا ئێستا وەک ئەو جۆرە لۆگانە پارێزراون، زیاتر لە 90 ڕۆژ.
  • +
  • ئای پیەکە بپارێزە کە پەیوەندی بە بەکارهێنەرە تۆمارکراوەکان هەیە زیاتر لە 12 مانگ.
  • +
+

دەتوانیت داواکاری و داگرتنی ئەرشیفی ناوەڕۆکەکەت بکەیت، لەوانە بابەتەکانت، هاوپێچەکانی میدیا، وێنەی پرۆفایل، و وێنەی سەرپەڕە.

+ +

تۆ دەتوانیت بە شێوەیەکی نائاسایی ئەژمێرەکەت بسڕیتەوە لە هەر کاتێکدا.

+ + < hr="spacer"/> + +

ئایا ئێمە کۆکیز بەکار بێنە؟

+ +

بەڵێ کۆکیزەکان فایلی بچووکن کە سایتێک یان دابینکەری خزمەتگوزاریەکەی دەیگوێزێتەوە بۆ هارد درایڤی کۆمپیوتەرەکەت لە ڕێگەی وێبگەڕەکەت (ئەگەر ڕێگەت پێ بدەیت). ئەم کۆکیزانە وێبسایتە بەتوانا دەکەن بۆ ناسینەوەی وێبگەڕەکەت و، ئەگەر ئەژمێرێکی تۆمارکراوت هەیە، بیبەستە بە ئەژمێری تۆمارکراو.

+ +

کۆکیز بەکاربێنە بۆ تێگەیشتن و هەڵگرتنی پەسەندیەکانی تۆ بۆ سەردانەکانی داهاتوو.

+ + < hr="spacer" /> + +

> ئایا هیچ زانیارییەک بۆ حزبەکانی دەرەوە ئاشکرا دەکەین؟ + +

ئێمە زانیاریە تایبەتەکانت نافرۆشین، بازرگانی دەکەین، یان ناگوازرێتەوە بۆ حزبەکانی دەرەوە. ئەمە لایەنی سێیەمی باوەڕپێکراو ی تێدا نییە کە یارمەتیمان دەدات لە کارپێکردنی سایتەکەمان، ئەنجامدانی کارەکانمان، یان خزمەتکردنی ئێوە، هەتا ئەو حزبانە ڕازی بن بە نهێنی هێشتنەوەی ئەم زانیاریانە. هەروەها لەوانەیە زانیاریەکەت بڵاوکەینەوه کاتێک پێمان وایە ئازادکردن گونجاوە بۆ پابەندبوون بە یاسا، سەپاندنی سیاسەتی ماڵپەڕەکەمان، یان پاراستنی مافەکانمان یان مافی تر، موڵک، یان سەلامەتی.

+ +

لەوانەیە ناوەڕۆکی گشتیت دابەزێنرابێت لەلایەن خزمەتگوزاریەکانی ترەوە لە تۆڕەکەدا. پۆستە گشتی و تەنها شوێنکەوتوانی تۆ دەگەیەنینە ئەو سێرڤەرانەی کە شوێنکەوتوانی تێیدا نواندووە، و پەیامی ڕاستەوخۆ دەگەیەنینە خزمەتکارەکانی وەرگرەکان، لە دووری ئەوەی کە شوێنکەوتوانی یان وەرگرەکان لە سێرڤەرێکی جیاواز لەم.

+ +

کاتێک تۆ مۆڵەت بە کاربەرنامەیەک بدەیت بۆ بەکارهێنانی ئەژمێرەکەت، بەگوێرەی مەودای مۆڵەتەکانت کە پەسەندت کردووە، لەوانەیە بچێتە ناو زانیاری پرۆفایلی گشتی، لیستی خوارەوەت، شوێنکەوتوانی تۆ، لیستەکانت، هەموو بابەتەکانت، و دڵراوەکانی تۆ. کاربەرنامەکان هەرگیز ناتوانن دەستگەیشتنیان هەبێت بە ناونیشانی ئیمەیڵ یان نهێنوشە.

+ < hr="spacer" /> + +

بەکارهێنانی سایت لەلایەن منداڵانەوە

+ +

ئەگەر ئەم سێرڤەرە لە یەکێتی ئەورووپا یان ئی ئی ئی ئەی بێت: ماڵپەڕ، بەرهەم و خزمەتگوزارییەکانی ئێمە هەموویان ئاراستەی ئەو کەسانە دەکرێت کە بە لایەنی کەمەوە 16 ساڵ ن. ئەگەر تەمەنت لە خوار 16 ساڵەوە بێت، لە سەر پێداویستی GDPR (General Data Protection Regulation) ئەم سایتە بەکارمەهێنیت.

+ +

ئەگەر ئەم سێرڤەرە لە ئەمریکا بێت: ماڵپەڕ و بەرهەم و خزمەتگوزاریەکانمان هەمووی ئاراستەی ئەو کەسانە دەکرێت کە بە لایەنی کەمەوە 13 ساڵ ن. ئەگەر تۆ لە خوار تەمەنی 13 ساڵیەوەبیت، لە سەر داواکاریەکانی COPPA (Children's Online Privacy Protection act) ئەم سایتە بەکارمەهێنیت.

+ +

یاسا دەتوانێت جیاواز بێت ئەگەر ئەم سێرڤەرە لە دەسەڵاتی دادوەری تر بێت.

+ + < hr="spacer" /> + +

گۆڕانکاریەکان لە سیاسەتی تایبەتمەندیمان

+ +

ئەگەر بڕیارمان دا سیاسەتی تایبەتمەندیمان بگۆڕین، ئەو گۆڕانکاریانە لەم پەڕەیە بڵاودەکەینەوە.

+ +

ئەم دۆکیومێنتە CC-BY-SA ە. دوایین جار نوێکرایەوە لە 7ی ئازاری 2018.

+ +

لە بنەڕەتدا لە < href="https://github.com/discourse/discourse">Discourse privacy policy.

+ title: "%{instance} مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتیێتی" + themes: + contrast: ماستۆدۆن (کۆنتراستی بەرز) + default: ماستۆدۆن (ڕەش) + mastodon-light: ماستۆدۆن (کاڵ) + time: + formats: + default: "%b %d, %Y, %H:%M" + month: "%b %Y" + two_factor_authentication: + add: زیادکردن + disable: لەکارخستنی 2FA + disabled_success: سەلماندنی سەلماندنی دوو-فاکتەر بە سەرکەوتوویی لەکارخراوە + edit: دەستکاری + enabled: سەلماندنی دوو-فاکتەر چالاک کراوە + enabled_success: سەلماندنی دوو-فاکتەر بە سەرکەوتوویی چالاک کرا + generate_recovery_codes: دروست کردنی کۆدی چاککردنەوە + lost_recovery_codes: کۆدی گەڕاندنەوە ڕێگەت پێ دەدات کە دەستگەیشتنت بۆ هەژمارەکەت بەدەست بهێنێ ئەگەر تەلەفۆنەکەت لەدەست بدەیت. ئەگەر کۆدەکانی چاکبوونەوەت لەدەست داوە، دەتوانیت لێرە دووبارە دروستیان کەی. کۆدی چاککردنەوەی کۆنت هەڵدەوەشێنێتەوە. + methods: دوو - میتۆدی فاکتەر + otp: ئەپی ڕاستەوە + recovery_codes: پاڵپشتکردن لە کۆدی هێنانەوەی + recovery_codes_regenerated: کۆدی گەڕاندنەوە بە سەرکەوتوویی دووبارە دروست بوویەوە + recovery_instructions_html: گەر تەلەفۆنەکەت بزر کرد دەتوانی بە یەکێک لە کۆدەکانی خوارەوە چاودێری هەژمارەکەت لە دەست بگریت.ائەم کۆدانە لە شوێنێکی پاراو هەڵبگرە بۆ نموونە چاپی بکەن یان لەگەڵ بەڵگەنامە گرینگەکانت دایبنێ. + webauthn: کلیلەکانی پاراستن + user_mailer: + backup_ready: + explanation: ئێوە وشانێکی پاڵپشتی تەواوت لە هەژمارەکەی خۆت داوا کردووە، ئەم پاڵپشتییە ئێستا ئامادەی بارکردنە! + subject: ئارشیڤی ئێوە ئامادەی داگرتنە + title: وەرگرتنی ئارشیڤ + sign_in_token: + details: 'وردەکاریی هەوڵەکان:' + explanation: 'هەوڵێک بۆ هاتنە نێو هەژمارەکەتان لە ناونیسانێکی ئای‌پی پەیداکرا. گەر خۆتانن. تێپەڕوشەی پاراستن بۆ پەڕەی بەرنگاری دابین بکە:' + further_actions: 'گەر ئێوە نیین تکایە تێپەڕوشە بگۆڕە وە لێرەوە پەسەند بوونی دوو قۆناغی لە سەر هەژمارەکەتان چالاک بکەن:' + subject: تکایە دڵنیابە لە هەوڵدان بۆ چوونە ژوورەوە + title: هەوڵدان بۆ چوونە ژوورەوە + warning: + explanation: + disable: تا کاتێک هەژمارەی ئێوە نەوێستاوە، دراوەکانی ئێوە دەستکاری ناکرێت.بەڵام تا کاتێک کە هەژمارەکەتان ناکرێتەوە. ناتوانن هیچ ئیشێکی لەسەر بکەن. + silence: تا کاتیک هەژمارەکەتان سنووردار بێت، تەنها ئەو کەسانە کە پێشتر شوێنکەوتووی ئێوە بوون نووسراوەکانی ئێوە لەم ڕاژە دەبینن. شایەد ئێوە لە زۆر پێرستی گشتی دیار نەکەون؛ بەڵام خەڵکانی دیکە دەتوانن بە دڵی خۆیان پەیگیری ئێوە بن. + suspend: هەژمارەکەتان هەڵواسراوە، وە تەواو توت و میدیاکان کە لەسەر ئەم ڕاژە بارتان کردووە یان ئەو ڕاژانە کە شوێنکەوتووتان لە سەری بووە ئیتر ناگەڕێنەوە. + get_in_touch: بە وڵام دانەوەی ئەم ئیمەیلە دەتوانن لە گەڵ لیژنەی %{instance} لە پەیوەندی بن. + review_server_policies: پێداچوونەوەی سیاسەتەکانی ڕاژە + statuses: 'بە دیاریکراوی، بۆ:' + subject: + disable: هەژمارەکەت %{acct} بەستراوە + none: ئاگاداری بۆ %{acct} + silence: هەژمارەکەی %{acct} سنووردار کراوە + suspend: هەژمارەکەی %{acct} ڕاگیرا + title: + disable: هەژمارە بەستراوە + none: ئاگاداری + silence: هەژماری سنووردار + suspend: هەژمار ڕاگیرا + welcome: + edit_profile_action: پرۆفایلی جێگیرکردن + edit_profile_step: 'ئێوە دەتوانن پرۆفایلەکەتان بە دڵخوازی خۆتان بگۆڕن: دەتوانن وێنەی پرۆفایل،وێنەی پاشبنەما،ناو و... هتد دابین بکەن. ئەگەر هەرەکت بێت دەتوانی هەژمارەکەت تایبەت بکەیتەوە تا تەنها کەسانێک کە ئێوە ڕێگەتان داوە دەتوانن شوێنکەوتوو هەژمارەکەتان بن.' + explanation: ئەمە چەند ئامۆژگارییەکن بۆ دەست پێکردنت + final_action: دەست بکە بە بڵاوکردنەوە + final_step: 'چیزی بنووسید! تەنانەت گەر ئێستا کەسێک شوێن کەوتووی ئێوە نەبوو، هەژمارەکانی دیکە و سەردانکەرەکانی پرۆفایلەکەتان نووسراوەکانی گشتی ئێوە دەبینن. بۆ نموونە لە پێرستی نووسراوە خۆماڵییەکان و لە لکاوەی(هاشتاگ) ەکان، شایەد هەرەکتان بێت بە چەسپکراوەی # خۆتان بناسێنن.' + full_handle: ناوی بەکارهێنەری تەواوی ئێوە + full_handle_hint: ئەمە ئەو شتەیە کە بە هاوڕێکانت دەلێی بۆ ئەوەی پەیام یان لە ڕاژەیەکی دیکەی ترەوە بەدوات بکەون. + review_preferences_action: گۆڕینی پەسەندەکان + review_preferences_step: دڵنیابە لە دانانی پەسەندکراوەکانت، وەک کام ئیمەیل کە دەتەوێت وەریبگرێ، یان دەتەوێت چ ئاستێکی تایبەتیت بۆ بابەتەکانت پێش گریمانە بێت. ئەگەر نەخۆشی جوڵەت(دڵ تێکەڵدان لە وێنە جووڵەییەکان) نیە، دەتوانیت هەڵبژێریت بۆ بەتواناکردنی پەخشکردنی خۆکاری GIF. + subject: بەخێربیت بۆ ماستۆدۆن + tip_federated_timeline: پێرستی نووسراوەکانی هەمووشوێنێک وێنەیەکی گشتی لە تۆڕی ماستۆدۆنە، بەڵام تەنها بریتییە لە هاوسێکان کە شوێنیان کەوتن؛بس تەواو نییە. + tip_following: بە شیوەی بنەڕەتی بەڕێوەبەران ڕاژەکەتان چاودێری دەکەن، بۆ پەداکردنی کەسانی سەرنجڕاکێشە چاودێری نووسراوە ناخۆیی و نووسراوەکانی شوێنەکانی دیکە بکەن. + tip_local_timeline: پێرستی نووسراوە ناوخۆییەکان شێوەیەکی تەواو لە بەکارهێنەران لە سەر %{instance} پیسان دەدەن، ئەمانە جەیرانی ئێوەن! + tip_mobile_webapp: ئەگەر وێبگەڕی مۆبایلەکەت پێشنیاری زیادکردنی ماستۆدۆن بۆ شاشەی ڕوومێزیەکەتی کرد، دەتوانیت ئاگانامەکانی هاندان وەربگری. لە زۆر ڕوەوە وەک بەرنامەیەیەکی ئەسڵی ئیس دەکا! + tips: ئامۆژگاریەکان + title: بەخێربێیت، بەکارهێنەر %{name}! + users: + blocked_email_provider: ئەم دابینکەری ئیمەیڵە رێگەپێدراو نییە + follow_limit_reached: ناتوانیت زیاتر لە %{limit} خەڵک پەیڕەو کەیت + generic_access_help_html: کێشەت هەیە لە گەیشتن بە هەژمارەکەت؟ دەتوانیت لەگەڵ %{email} بۆ یارمەتیدان پەیوەندی بگرن + invalid_email: ناونیشانی ئیمەیڵەکە نادروستە + invalid_email_mx: لەوە ناچێت ناونیشانی ئیمەیڵ بوونی هەبێت + invalid_otp_token: کۆدی دوو-فاکتەر نادروستە + invalid_sign_in_token: کۆدی پاراستن دروست نیە + otp_lost_help_html: گەر بەو دووڕێگا نەتوانی بچیتە ژوورەوە، لەوانەیە پەیوەندی بگری بە %{email} بۆ یارمەتی + seamless_external_login: تۆ لە ڕێگەی خزمەتگوزاری دەرەکیەوە داخڵ بووی، بۆیە ڕێکبەندەکانی نهێنوشە و ئیمەیل بەردەست نین. + signed_in_as: 'چوونە ژوورەوە وەک:' + suspicious_sign_in_confirmation: وادیارە تۆ پێشتر لەم ئامێرە نەچویتە ژوورەوە، و بۆ ماوەیەک نەچویتە ژوورەوە، بۆیە کۆدی پاراستن دەنێردرینە ناونیشانی ئیمەیڵەکەت بۆ دڵنیابوون لەوەی کە ئەوە تۆیت. + verification: + explanation_html: 'دەتوانیت خۆت بسەلمێنیت وەک خاوەنی لینکەکان لە مێتاداتای پرۆفایلەکەت. بۆ ئەمە، ماڵپەڕە لینککراوەکە پێویستە لینکێکی تێدا بێت بۆ پرۆفایلی ماستۆدۆنەکەت. بەستەری دەبێت هەبێت ="me". ناوەڕۆکی دەقی لینکەکە گرنگ نییە. ئەمە نموونەیەکە:' + verification: ساغ کردنەوە + webauthn_credentials: + add: زیادکردنی کلیلی ئاسایشی نوێ + create: + error: کێشەیەک هەبوو لە زیادکردنی کلیلی پاراستنەکەت. تکایە دووبارە هەوڵ دەوەشنەوە. + success: کلیلی ئاسایشت بە سەرکەوتوویی زیادکرا. + delete: سڕینەوە + delete_confirmation: ئایا دڵنیایت لەوەی دەتەوێت ئەم کلیلی پاراستنە بسڕیتەوە? + description_html: ئەگەر تۆ کلیلی سەلماندنت چالاک دەکەی، بۆ چوونە ژوورەوە پێویستت پێ دەبێ، یەکێک لە کلیلە کانی ئاسایشت بەکاربێنیت. + destroy: + error: کێشەیەک هەبوو لە سڕینەوەی کلیلی پاراستنەکەت. تکایە دووبارە هەوڵ بدەرەوە. + success: کلیلی ئاسایشت بە سەرکەوتوویی سڕایەوە. + invalid_credential: کۆدی پاراستن دروست نیە + nickname_hint: نازناوی کلیلی ئاسایشی نوێت تێبنووسە + not_enabled: تۆ هێشتا WebAuthnت چالاک نەکردووە + not_supported: ئەم وێبگەڕە پشتگیری کلیلەکانی پاراستن ناکات + otp_required: بۆ بەکارهێنانی کلیلەکانی پاراستن تکایە سەرەتا سەلماندنی دوو-فاکتەر چالاک بکە. + registered_on: تۆمارکراو لە %{date} diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 4a23996075..18d81bae37 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -171,6 +171,8 @@ oc: user: Uitlizaire search: Cercar search_same_ip: Autres utilizaires amb la meteissa IP + sensitive: Sensible + sensitized: marcar coma sensible shared_inbox_url: URL de recepcion partejada show: created_reports: Senhalaments creats @@ -183,6 +185,7 @@ oc: time_in_queue: En espèra a la fila %{time} title: Comptes unconfirmed_email: Adreça pas confirmada + undo_sensitized: Desmarcar coma sensible undo_silenced: Levar lo silenci undo_suspension: Levar la suspension unsubscribe: Se desabonar @@ -198,6 +201,7 @@ oc: create_account_warning: Crear un avertiment create_announcement: Crear una anóncia create_custom_emoji: Crear un emoji personalizat + create_ip_block: Crear una règla IP demote_user: Retrogradar l’utilizaire destroy_announcement: Suprimir l’anóncia destroy_custom_emoji: Suprimir l’emoji personalizat @@ -419,6 +423,8 @@ oc: title: Filtre title: Convits ip_blocks: + add_new: Crear una règla + delete: Suprimir expires_in: '1209600': 2 setmanas '15778476': 6 meses @@ -426,6 +432,9 @@ oc: '31556952': 1 an '86400': 1 jorn '94670856': 3 ans + new: + title: Crear una règlas IP novèla + title: Règlas IP pending_accounts: title: Comptes en espèra (%{count}) relationships: @@ -700,7 +709,8 @@ oc: prompt: Confirmatz lo senhal per dire de contunhar date: formats: - default: "%d %B de %Y" + default: "%e %B de %Y" + with_month_name: "%e %B de %Y" datetime: distance_in_words: about_x_hours: "%{count} h" @@ -1207,8 +1217,8 @@ oc: mastodon-light: Mastodon (Clar) time: formats: - default: Lo %d %b de %Y a %Ho%M - month: "%b de %Y" + default: Lo %e %B de %Y a %Ho%M + month: "%B de %Y" two_factor_authentication: disable: Desactivar enabled: Autentificacion en dos temps activada diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 30d51c7371..1e77ef21d9 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -196,6 +196,8 @@ pl: search: Szukaj search_same_email_domain: Inni użytkownicy z e-mail w tej domenie search_same_ip: Inni użytkownicy z tym samym IP + sensitive: Wrażliwe + sensitized: oznaczono jako wrażliwe shared_inbox_url: Adres udostępnianej skrzynki show: created_reports: Zgłoszenia tego użytkownika @@ -210,6 +212,7 @@ pl: time_in_queue: Czekanie w kolejce %{time} title: Konta unconfirmed_email: Niepotwierdzony adres e-mail + undo_sensitized: Cofnij oznaczenie undo_silenced: Cofnij wyciszenie undo_suspension: Cofnij zawieszenie unsilenced_msg: Pomyślnie zwolniono z ograniczeń konto %{username} @@ -251,9 +254,11 @@ pl: reopen_report: Otwórz zgłoszenie ponownie reset_password_user: Resetuj hasło resolve_report: Rozwiąż zgłoszenie + sensitive_account: Oznacz zawartość multimedialną swojego konta jako wrażliwą silence_account: Wycisz konto suspend_account: Zawieś konto unassigned_report: Cofnij przypisanie zgłoszenia + unsensitive_account: Cofnij oznaczenie zawartości multimedialnej swojego konta jako wrażliwą unsilence_account: Cofnij wyciszenie konta unsuspend_account: Cofnij zawieszenie konta update_announcement: Aktualizuj ogłoszenie @@ -289,9 +294,11 @@ pl: reopen_report: "%{name} otworzył(a) ponownie zgłoszenie %{target}" reset_password_user: "%{name} przywrócił(a) hasło użytkownikowi %{target}" resolve_report: "%{name} rozwiązał(a) zgłoszenie %{target}" + sensitive_account: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą" silence_account: "%{name} wyciszył(a) konto %{target}" suspend_account: "%{name} zawiesił(a) konto %{target}" unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}" + unsensitive_account: "%{name} cofnął(-ęła) oznaczenie zawartości multimedialnej %{target} jako wrażliwą" unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}" unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}" update_announcement: "%{name} zaktualizował(-a) ogłoszenie %{target}" @@ -851,6 +858,7 @@ pl: request: Uzyskaj archiwum size: Rozmiar blocks: Zablokowani + bookmarks: Zakładki csv: CSV domain_blocks: Blokady domen lists: Listy @@ -929,6 +937,7 @@ pl: success: Twoje dane zostały załadowane i zostaną niebawem przetworzone types: blocking: Lista blokowanych + bookmarks: Zakładki domain_blocking: Lista zablokowanych domen following: Lista śledzonych muting: Lista wyciszonych @@ -1091,6 +1100,7 @@ pl: relationships: activity: Aktywność konta dormant: Uśpione + follow_selected_followers: Zacznij śledzić wybranych śledzących followers: Śledzący following: Śledzeni invited: Zaproszeni @@ -1238,6 +1248,8 @@ pl: other: "%{count} głosy" vote: Głosuj show_more: Pokaż więcej + show_newer: Pokaż nowsze + show_older: Pokaż starsze show_thread: Pokaż wątek sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji title: '%{name}: "%{quote}"' @@ -1374,6 +1386,7 @@ pl: warning: explanation: disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane. + sensitive: Wysyłane przez Ciebie pliki multimedialne i media z odnośników będą traktowane jako wrażliwe. silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić. suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię. get_in_touch: Możesz odpowiedzieć na ten e-mail aby pozostać w kontakcie z prowadzącymi %{instance}. @@ -1382,11 +1395,13 @@ pl: subject: disable: Twoje konto %{acct} zostało wyłączone none: Ostrzeżenie dla %{acct} + sensitive: Zawartość multimedialna publikowana przez Twoje konto %{acct} została oznaczona jako wrażliwa silence: Twoje konto %{acct} zostało ograniczone suspend: Twoje konto %{acct} zostało zawieszone title: disable: Konto wyłączone none: Ostrzeżenie + sensitive: Twoja zawartość multimedialna została oznaczona jako wrażliwa silence: Konto ograniczone suspend: Konto zawieszone welcome: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 7283c1b57d..28c7a32043 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -188,6 +188,8 @@ pt-BR: search: Pesquisar search_same_email_domain: Outros usuários com o mesmo domínio de e-mail search_same_ip: Outros usuários com o mesmo IP + sensitive: Sensíveis + sensitized: marcadas como sensíveis shared_inbox_url: Link da caixa de entrada compartilhada show: created_reports: Denúncias desta conta @@ -202,6 +204,7 @@ pt-BR: time_in_queue: Esperando na fila por %{time} title: Contas unconfirmed_email: E-mail não confirmado + undo_sensitized: Desfazer sensível undo_silenced: Desfazer silêncio undo_suspension: Desbanir unsilenced_msg: Removidas com sucesso as limitações da conta de %{username} @@ -243,9 +246,11 @@ pt-BR: reopen_report: Reabrir Relatório reset_password_user: Redefinir a senha resolve_report: Resolver Relatório + sensitive_account: Marcar a mídia na sua conta como sensível silence_account: Silenciar conta suspend_account: Suspender Conta unassigned_report: Remover relatório + unsensitive_account: Desmarcar a mídia na sua conta como sensível unsilence_account: Desfazer silenciar conta unsuspend_account: Remover suspensão de conta update_announcement: Editar anúncio @@ -281,9 +286,11 @@ pt-BR: reopen_report: "%{name} reabriu a denúncia %{target}" reset_password_user: "%{name} redefiniu a senha do usuário %{target}" resolve_report: "%{name} resolveu a denúncia %{target}" + sensitive_account: "%{name} marcou a mídia de %{target} como sensível" silence_account: "%{name} silenciou a conta de %{target}" suspend_account: "%{name} baniu a conta de %{target}" unassigned_report: "%{name} largou a denúncia %{target}" + unsensitive_account: "%{name} desmarcou a mídia de %{target} como sensível" unsilence_account: "%{name} desativou o silêncio de %{target}" unsuspend_account: "%{name} removeu a suspensão da conta de %{target}" update_announcement: "%{name} atualizou o anúncio %{target}" @@ -1067,6 +1074,7 @@ pt-BR: relationships: activity: Atividade da conta dormant: Inativo + follow_selected_followers: Seguir os seguidores selecionados followers: Seguidores following: Seguindo invited: Convidado @@ -1202,6 +1210,8 @@ pt-BR: other: "%{count} votos" vote: Votar show_more: Mostrar mais + show_newer: Mostrar mais recentes + show_older: Mostrar mais antigos show_thread: Mostrar conversa sign_in_to_participate: Entre para participar dessa conversa title: '%{name}: "%{quote}"' @@ -1338,6 +1348,7 @@ pt-BR: warning: explanation: disable: Enquanto sua conta está congelada, seus dados de conta permanecem intactos, mas você não pode realizar nenhuma ação até que esteja destrancada. + sensitive: Seus arquivos de mídia carregados e mídias vinculadas serão tratados como sensíveis. silence: Enquanto sua conta está silenciada, somente pessoas que já estão seguindo você poderão ver seus toots nessa instância, e você pode ser excluído de várias listas públicas. No entanto, outros ainda podem te seguir manualmente. suspend: Sua conta foi banida e todos os seus toots e mídias foram irreversivelmente excluídos desta instância e das instâncias dos seus seguidores. get_in_touch: Você pode responder a este e-mail para entrar em contato com a equipe de %{instance}. @@ -1346,11 +1357,13 @@ pt-BR: subject: disable: Sua conta %{acct} foi bloqueada none: Aviso para %{acct} + sensitive: Sua conta %{acct} de postagem de mídia foi marcada como sensível silence: Sua conta %{acct} foi silenciada suspend: Sua conta %{acct} foi banida title: disable: Conta bloqueada none: Aviso + sensitive: Sua mídia foi marcada como sensível silence: Conta silenciada suspend: Conta banida welcome: diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index b9f2ac16b5..8d66efba9d 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -842,6 +842,7 @@ pt-PT: request: Pede o teu arquivo size: Tamanho blocks: Bloqueaste + bookmarks: Itens Salvos csv: CSV domain_blocks: Bloqueios de domínio lists: Listas @@ -918,6 +919,7 @@ pt-PT: success: Os teus dados foram enviados com sucesso e serão processados em breve types: blocking: Lista de bloqueio + bookmarks: Itens salvos domain_blocking: Lista de domínios bloqueados following: Lista de pessoas que estás a seguir muting: Lista de utilizadores silenciados @@ -1074,6 +1076,7 @@ pt-PT: relationships: activity: Atividade da conta dormant: Inativo + follow_selected_followers: Seguir seguidores selecionados followers: Seguidores following: A seguir invited: Convidado diff --git a/config/locales/ru.yml b/config/locales/ru.yml index be1bf7f901..2de389864e 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -863,6 +863,7 @@ ru: request: Запросить ваш архив size: Размер blocks: Список блокировки + bookmarks: Закладки csv: CSV domain_blocks: Доменные блокировки lists: Списки @@ -941,6 +942,7 @@ ru: success: Ваши данные были успешно загружены и будут обработаны с должной скоростью types: blocking: Список блокировки + bookmarks: Закладки domain_blocking: Список доменных блокировок following: Подписки muting: Список глушения @@ -1103,6 +1105,7 @@ ru: relationships: activity: Активность учётной записи dormant: Заброшенная + follow_selected_followers: Подписаться на выбранных подписчиков followers: Подписчики following: Подписки invited: Приглашённые diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 3e7a66e117..98fda09160 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -29,7 +29,7 @@ eo: phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn. setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj) - setting_default_sensitive: Sentema komunikilo estas kaŝita defaŭlte kaj povas esti rivelita per alklako + setting_default_sensitive: Tiklaj aŭdovidaĵoj estas defaŭlte kaŝita kaj povas esti malkiŝita per klako setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index d57c68f8b0..51446f63c1 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -205,7 +205,7 @@ fr: recommended: Recommandé required: mark: "*" - text: Champs requis + text: champs requis title: sessions: webauthn: Utilisez l'une de vos clés de sécurité pour vous connecter diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index 7237ba48b3..aaa5d88e5f 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -65,6 +65,8 @@ hy: data: CSV ֆայլը ներմուծուել է Մաստոդոնի այլ սերուերից invite_request: text: Սա կօգնի մեզ ստուգել քո յաւելուածը + ip_block: + ip: Ներմուծէք IPv4 կամ IPv6 հասցէն։ Նաև կարող ես արգելափակել հասցէների միջակայքեր օգտագործելով CIDR սինտաքսը։ Զգոյշ եղիր՝ ինքդ քեզ չարգելափակես։ sessions: otp: Մուտքագրիր երկքայլ նոյնականացման կոդը, որը գեներացուես ես քո բջջային յաւելուածի օգնութեամբ կամ օգտագործիր այս կոդերից կէկը՝ tag: @@ -168,6 +170,13 @@ hy: comment: Մեկնաբանություն invite_request: text: Ինչո՞ւ ես ցանկանում միանալ + ip_block: + comment: Մեկնաբանություն + ip: IP + severities: + no_access: Մուտքը արգելել + sign_up_requires_approval: Սահմանափակել գրանցումները + severity: Կանոն notification_emails: digest: Ուղարկել դասակարգուած իմակներ favourite: Որեւէ մեկը հաւանեց գրառումդ diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 2fbf0ffd71..2a0cdc66b6 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -1 +1,211 @@ ---- {} +--- +ku: + simple_form: + hints: + account_alias: + acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە + account_migration: + acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە + account_warning_preset: + text: دەتوانی ڕستەسازی ی توت بەکاربێنیت، وەک لینک، هاشتاگ و باسەکان + title: ئارەزوومەندانە. دیار نیە بۆ وەرگر + admin_account_action: + include_statuses: بەکارهێنەرەکە دەبینێت کام توتی هۆکاری کرداری بەڕێوەبەر یان ئاگادارکردنەوە + send_email_notification: بەکارهێنەر ڕوننکردەوەیەک دەبینێت کە تێدا دەزانێت چی بە سەر هەژمارەکەی هاتووە + text_html: ئارزوومەندانە. دەتوانن وەک توتی ئاسایی بینووسن. دەتوانن بۆ کەمکردنەوەی کات ئاگادارییەکان لە پێشەوە زیادبکەن + type_html: گەرکتە لەگەڵ هەژمارەی %{acct} چی بکەیت + warning_preset_id: ئارەزوومەندانەیە. هێشتا دەتوانیت لە کۆتایی دەق شتێک زیاد بکەی + announcement: + all_day: کاتێک چاودێریکرا، تەنها بەروارەکانی مەودای کات پیشان دەدرێت + ends_at: ئارەزوومەندانەیە. ئەم کاتە راگەیەنراوەکە بە شێوەیەکی خۆکارانە بڵاوناکرێتەوە + scheduled_at: چۆڵ یبهێڵەوە بۆ بڵاوکردنەوەی دەستبەجێی بانگەوازەکە + starts_at: ئارەزوومەندانەیە. لە حاڵەتی ڕاگەیاندنی تۆ بەستراو بە مەودایەکی کاتی دیاریکراو + text: دەتوانیت ڕستەسازی توت بەکار بێنیت. تکایە بیر لەو بۆشاییە بکەوە کە بانگەوازەکە لەسەر شاشەی بەکارهێنەرەکە دەست نیشان دەکات + defaults: + autofollow: ئەو کەسانەی کە لە ڕێگەی بانگهێشتکردنەوە تۆمار دەکرێن بە خۆکارانە شوێنت دەکەون + avatar: PNG, GIF یان JPG. لە زۆربەی %{size}. دەبێتە ئەندازەیەکی کەمکراوە بۆ %{dimensions}px + bot: ئەم هەژمارە بەشێوەیەکی سەرەکی کردارە خۆکارانە ئەنجام دەدات و لەوانەیە چاودێری نەکرێت + context: یەک یان چەند دەقێک کە پالافتنەکە جێبەجێ بکات + current_password: بۆ مەبەستی پاراستن تکایە تێپەروشەی هەژمارەی ئێستاکەت بنووسە + current_username: بۆ دڵنیابوون، تکایە ناوی بەکارهێنەری ئەم هەژمارەیە بنووسە + digest: تەنیا دوای ماوەیەکی زۆر لە بێ چالاکیدەنێردرێت و تەنیا ئەگەر نامەیەکی کەسیت بۆ نووسرابێت + discoverable: پێرستی هەڵبژاردەی بەکارهێنەران،تەنها ڕیگایەکی دیکەیە بۆ گەیشتنی بەکارهێنەری فرەتر بۆ هەژمارەکەت + email: ئیمەیڵێکی پشتڕاستکردنەوەت بۆ دەنێردرێت + fields: دەتوانیت تا ٤بڕگەت هەبێت کە وەک خشتەیەک لەسەر پرۆفایلەکەت پیشان بدرێت + header: PNG, GIF یان JPG. لە زۆربەی %{size}. دەبێتە ئەندازەیەکی کەمکراوە بۆ %{dimensions}پیکسێڵ + inbox_url: نیشانەی پەڕەی سەرەکی ئەو رێڵە کە هەرەکتە بەکاریببەیت ڕوونووس دەکات + irreversible: توتە فلتەرکراوەکە بە شێوەیەکی نەگەڕاو فرەدەدرێن، تەنانەت ئەگەر فلتەردواتر لاببرێت + locale: زمانی ڕووکاری بەکارهێنەر، ئیمەیلەکان و ئاگانامەکان + locked: بە دەستی شوێنکەوتوانی خۆت پەسەند بکە + password: بەلایەنی کەمەوە ٨ نووسە بەکاربهێنە + phrase: سەربەخۆ لە بچکۆلی و گەورەیی پیتەکان، لەگەڵ دەقی ئەسڵی یان ئاگانامەکانی ناوەرۆکی توتەکان هاوئاهەنگ دەکرێت + scopes: APIـیەکانی بەرنامەنووسی کە ئەم ماڵپەڕە دەستپێگەیشتنی لەگەڵیان هیە. ئەگەر بەرزترین ئاست هەڵبژێرن ئیتر نیاز بە بژاردەی ئاستی نزم نییە. + setting_aggregate_reblogs: بۆ ئەو دووبارە توتانە کە بە نوێیی پێتان نیشان دراوە،دووبارە توتەکانی پێشتر زیاد مەکە(تەنها کاریگەری لەسەر توتەکانی ئەم دواییە هەیە) + setting_default_sensitive: میدیای هەستیار لە بنەڕەت شاراوەیە و دەتوانرێت بە کلیکیک ئاشکرا بکرێت + setting_display_media_default: شاردنەوەی ئەو میدیایانەی وەک هەستیار نیشانکراون + setting_display_media_hide_all: هەمیشە میدیا بشارەوە + setting_display_media_show_all: هەمیشە میدیا نیشان بدە + setting_hide_network: کێ دوای دەکەویت و کێ دوای تۆ دەکەوێت لە پرۆفایلەکەت پیشان نادرێت + setting_noindex: کاردەکاتە سەر پرۆفایل و لاپەڕە گشتیەکانت + setting_show_application: بەرنامەیەک کە بە یارمەتیت توت دەکەیت، لە دیمەنی وردی توتەکان پیشان دەدرێت + setting_use_blurhash: سێبەرەکان لە سەر بنەمای ڕەنگەکانی بەکارهاتوو لە وێنە داشاراوەکان دروست دەبن بەڵام وردەزانیاری وێنە تێیدا ڕوون نییە + setting_use_pending_items: لەجیاتی ئەوەی بە خۆکارانە کێشان هەبێت لە نووسراوەکان بە کرتەیەک بەڕۆژبوونی پێرستی نووسراوەکان بشارەوە + username: ناوی بەکارهێنەری ئێوە لەسەر %{domain} یەکتا دەبێت + whole_word: کاتێک کلیل‌وشە بریتییە لە ژمارە و پیت، تنەها کاتێک پەیدا دەبێت کە لەگەڵ گشتی وشە لە نێو دەقەکە هاوئاهەنگ بێت، نە تەنها لەگەڵ بەشێک لە وشە + domain_allow: + domain: ئەم دۆمەینە دەتوانێت دراوە لە ئەم ڕاژە وەربگرێت و دراوەی ئەم دۆمەینە لێرە ڕێکدەخرین و پاشکەوت دەکرێن + email_domain_block: + domain: ئەمە دەکرێت ناوی دۆمەینەکە بێت کە لە ناونیشانی ئیمەیلدا دەرکەوێ، تۆماری MX کە دۆمەین چارەسەری دەکات یان IPی ڕاژەکە کە تۆماری MX چارەسەری دەکات. ئەوانە دەپشکنن لەسەر تۆمارکردنی بەکارهێنەر و تۆمارکردن ڕەت دەکرێت. + with_dns_records: هەوڵێک بۆ چارەسەرکردنی تۆمارەکانی DNSی دۆمەین دراوە کە ئەنجامەکان بلۆک دەکرێت + featured_tag: + name: 'لەوانەیە بتەوێت یەکێک لەمانە بەکاربهێنیت:' + form_challenge: + current_password: تۆ دەچیتە ناو ناوچەی پارێزراو + imports: + data: فایلی CSV هەناردەکراوە لە ڕاژەیەکی تری ماستۆدۆن + invite_request: + text: ئەمە یارمەتیمان دەدات بۆ پێداچوونەوەی بەرنامەکەت + ip_block: + comment: دڵخوازە. لەبیرتە بۆچی ئەم یاسایەت زیاد کرد. + expires_in: ناونیشانی IP سەرچاوەی سنوردارن، هەندێک جار هاوبەشکراون و زۆر جار دەستەکان دەگۆڕن. لەبەر ئەم هۆیە، بلۆکی IP بێ نەناسراو پێشنیار نەکراوە. + ip: ناونیشانی IPv4 یان IPv6 تێبنووسە. دەتوانیت هەموو مەوداکان بلۆک بکەیت بە بەکارهێنانی داڕستانی CIDR. وریابە خۆت قفڵ مەکە! + severities: + no_access: بلۆککردنی گەیشتن بە هەموو سەرچاوەکان + sign_up_requires_approval: نوێ ناوتۆمارکردن پێویستی بە ڕەزامەندی تۆیە + severity: هەڵبژێرە چی ڕوودەدات لەگەڵ داواکاریەکانی ئەم IP + sessions: + otp: 'کۆدی دوو-فاکتۆر بنووسە کە لەلایەن ئەپی تەلەفۆنەکەتەوە دروست کراوە یان یەکێک لە کۆدەکانی هێنانەوەی خۆت بەکاربهێنە:' + webauthn: ئەگەر کلیلی USB بێت دڵنیابە لە تێکردنی و ئەگەر پێویست بوو، لێیبدە. + tag: + name: ئێوە دەتوانن گەورەیی و بجکۆلیی پیتەکان دەستکاری بکەن تاکوو خوێنەوارتر دیاربن + user: + chosen_languages: کاتێک چاودێری کرا، تەنها توتەکان بە زمانە دیاریکراوەکان لە هێڵی‌کاتی گشتی پیشان دەدرێت + labels: + account: + fields: + name: ناونیشان + value: ناوەڕۆک + account_alias: + acct: چارەسەرکردنی هەژمارە کۆنەکە + account_migration: + acct: چارەسەرکردنی هەژمارە نوێکە + account_warning_preset: + text: دەقی پێشوەختی ڕێکخستن + title: سەردێڕ + admin_account_action: + include_statuses: لەخۆگرتنی توتەکانی گوزارشت لە ئیمەیل + send_email_notification: بەکارهێنەر ئاگادار بکەوە بۆ هەر ئیمەیڵێک + text: ئاگاداری تایبەتمەند + type: کردار + types: + disable: بەستن + none: ناردنی ئاگاداری + silence: سنوور + suspend: ڕاگرتن + warning_preset_id: بەکاهێنانی ئاگاداری پێش وەختە + announcement: + all_day: ڕووداوی هەموو ڕۆژەکە + ends_at: کۆتایی ڕووداو + scheduled_at: بڵاوکراوەکە خشتە بکە + starts_at: دەستپێکردنی ڕووداو + text: بانگەواز + defaults: + autofollow: بانگهێشت کردن بۆ شوێنکەوتنی هەژمارەکەت + avatar: وێنۆچکە + bot: ئەمە هەژمارێکی ساختەیە + chosen_languages: پاڵاوتنی زمانەکان + confirm_new_password: پشتڕاستکردنەوەی تێپەڕوشەی نوێ + confirm_password: پشتڕاستکردنەوەی تێپەڕوشە + context: چوارچێوەی پاڵافتن + current_password: تێپەروشەی ئێستا + data: دراوه + discoverable: ئەم هەژمێرە لە پێرستی بژاردەی بەکارهێنەران نیشان بدە + display_name: ناوی پیشاندان + email: ناونیشانی ئیمەیڵ + expires_in: بەسەردەچێت پاش + fields: مێتاداتای پرۆفایل + header: سەرپەڕە + inbox_url: بەستەری سندوقی گواستنەوەی + irreversible: فرێدان لەجیاتی شاردنەوە + locale: زمانی پەڕەی بەکارهێنەر + locked: داخستنی هەژمارە + max_uses: زۆرترین ژمارەی بەکاربەرەکان + new_password: تێپەروشەی نوێ + note: دەربارەی ئیوە + otp_attempt: کۆدی دووقۆناغی هاتنەژوور + password: تێپەڕوشە + phrase: وشەکلیل یان دەستەواژە + setting_advanced_layout: چالاککردنی ڕووکاری وێبی پێشکەوتوو + setting_aggregate_reblogs: گرووپی توتەکان یەکبخە + setting_auto_play_gif: خۆکاربەخشکردنی GIFــەکان + setting_boost_modal: پیشاندانی دیالۆگی دووپاتکردنەوە پێش دوبارە توتاندن + setting_crop_images: لە تووتی نەکراوە،وینەکان لە ئەندازی ۱٦×۹ ببڕە + setting_default_language: زمانی نووسراوەکانتان + setting_default_privacy: چوارچێوەی تایبەتێتی ئێوە + setting_default_sensitive: هەمیشە نیشانکردنی میدیا وەک هەستیار + setting_delete_modal: نیساندانی پەیامی پەسەند کردن پاش سڕینەوە + setting_disable_swiping: جوڵەی سڕینەوە لە کاربخە + setting_display_media: پیشاندانی میدیا + setting_display_media_default: بنەڕەت + setting_display_media_hide_all: شاردنەوەی هەموو + setting_display_media_show_all: هەموو نیشان بدە + setting_expand_spoilers: هەمیشە ئەو توتانەی کە بە ئاگادارکردنەوەکانی ناوەڕۆکەوە نیشانەکراون، پیسان بدە + setting_hide_network: شاردنەوەی تۆڕەکەت + setting_noindex: داوا لە مەکینەی گەڕان بۆ پیشاننەدان لە دەئەنجامی گەڕانەکان + setting_reduce_motion: کەمکردنەوەی جوڵە لە ئەنیمەکان + setting_show_application: ئاشکراکردنی ئەپەکان بۆ ناردنی توتەکان + setting_system_font_ui: فۆنتی بنەڕەتی سیستەم بەکاربهێنە + setting_theme: ڕووکاری ماڵپەڕ + setting_trends: پیشاندانی نووسراوە بەرچاوکراوەی ئەمڕۆ + setting_unfollow_modal: پیشاندانی پەیامی پەسەندکردن پێش شوێن‌نەکەوتنی کەسێک + setting_use_blurhash: بەجیاتی وینەی داشاراوە، سێبەری ڕەنگاوڕەنگ نیشان بدە + setting_use_pending_items: دۆخی خاو + severity: ئاستی گرنگی + sign_in_token_attempt: کۆدی پاراستن + type: جۆری هاوردەکردن + username: ناوی بەکارهێنەر + username_or_email: ناوی بەکاهێنەر یان ئیمەیڵ + whole_word: هەموو وشەکە + email_domain_block: + with_dns_records: لەخۆگرتنی تۆمارەکانی MX و ئای پییەکانی دۆمەین + featured_tag: + name: هەشتاگ + interactions: + must_be_follower: قەپاتکردنی ئاگانامەکان بێجگە لە شوێنکەوتووان + must_be_following: بەئاگانامەکان بلۆک بکە لە خەڵکێک کە پەیڕەویان ناکەیت + must_be_following_dm: پەیامەکانی ڕاستەوخۆ بلۆک بکە لەو کەسانەی کە، پەیڕەوی ناکەن + invite: + comment: بۆچوون + invite_request: + text: بۆچی دەتەوێت بەشدار بیت? + ip_block: + comment: بۆچوون + ip: IP + severities: + no_access: بلۆککردنی ده‌ستپێگه‌یشتن + sign_up_requires_approval: سنووردارکردنی چوونەناو + severity: یاسا + notification_emails: + digest: کورتکردنی ئاگادارییکەن لەیەک ئیمەیل + favourite: کەسێک دۆخی تۆی بەدڵ بوو + follow: کەسێک دوای تۆ کەوت + follow_request: کەسێک داوای کردووە کە بەدوات بکەوێت + mention: کەسێک باسی کردووی + pending_account: هەژمارەی نوێ پێویستی بە پێداچوونەوەهەیە + reblog: کاتێک کەسێک نووسراوەی ئێوە دووبارە توت دەکاتەوە + report: گوزارشتی نوێ پێشکەش کراوە + trending_tag: کاتێک هاشتاگێکی پێدانەچوو هۆگری فرە بوو، ئیمەیلێک بنێرە + tag: + listable: ڕیگەبدە ئەم هاشتاگە لە پێرستی هەڵبژاردەی بەکارهێنەران و پەڕەی گەڕان نیشان بدرێت + name: هەشتاگ + trendable: ڕێگەبدە ئەم هەشتاگە لە نووسراوەی بەرچاوکراو نیسان بدرێت + usable: ڕێگەبدە بە توتەکان بۆ بەکارهێنانی ئەم هەشتاگە + 'no': نە + recommended: پێشنیارکراوە + required: + mark: "*" + text: پێویستە + title: + sessions: + webauthn: یەکێک لە کلیلەکانی پاراستن بەکاربهێنە بۆ چوونە ژوورەوە + 'yes': بەڵێ diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index 72a6c99bc2..120ddfbe0a 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -67,6 +67,11 @@ oc: text: Aquò nos ajudarà per validar vòstra demanda ip_block: comment: Opcional. Remembratz-vos perque ajustèretz aquesta règla. + expires_in: Las adreças IP son una ressorsa finida, son de còps partejadas e càmbian sovent de mans. Per aquesta rason, los blocatges d’IP sens fin son pas recomandats. + ip: Dintratz una adreça IPv4 o IPv6. Podètz blocar de plajas entièras en utilizant la sintaxi CIDR. Agachatz de pas vos blocar defòra ! + severities: + no_access: Blocar l’accès a totas las ressorsas + sign_up_requires_approval: Las inscripcions novèlas requeriràn vòstra validacion severity: Causissètz que far amb las requèstas d’aquesta IP sessions: otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :' diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 623639efc0..a02d0be352 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -100,6 +100,7 @@ pl: types: disable: Wyłącz none: Nie rób niczego + sensitive: Wrażliwe silence: Wycisz suspend: Zawieś i nieodwracalnie usuń dane konta warning_preset_id: Użyj szablonu ostrzeżenia diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index f3c9936253..ea53a3c830 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -100,6 +100,7 @@ pt-BR: types: disable: Congelar none: Não fazer nada + sensitive: Sensível silence: Silenciar suspend: Banir e excluir irreversivelmente dados da conta warning_preset_id: Usar um aviso pré-definido diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 28bf0f0d8b..99611febf1 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -7,12 +7,12 @@ vi: account_migration: acct: Nhập tên_người_dùng@máy chủ của tài khoản bạn muốn dời sang account_warning_preset: - text: Bạn có thể sử dụng URL, hashtag và nhắc đến + text: Bạn có thể dùng URL, hashtag và nhắc đến title: Tùy chọn. Không cho người nhận xem admin_account_action: - include_statuses: Người dùng sẽ thấy các tút bị kiểm duyệt hoặc cảnh cáo + include_statuses: Người dùng sẽ thấy các tút bị kiểm duyệt send_email_notification: Người dùng sẽ nhận được lời giải thích về những gì xảy ra với tài khoản của họ - text_html: Tùy chọn. Bạn nên sử dụng cảnh cáo cài sẵn để tiết kiệm thời gian + text_html: Tùy chọn. Bạn nên dùng cảnh cáo cài sẵn để tiết kiệm thời gian type_html: Chọn làm gì với %{acct} warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm ghi chú riêng announcement: @@ -20,7 +20,7 @@ vi: ends_at: Tùy chọn. Thông báo sẽ tự động hủy vào lúc này scheduled_at: Để trống nếu muốn đăng thông báo ngay lập tức starts_at: Tùy chọn. Trong trường hợp thông báo của bạn đăng vào một khoảng thời gian cụ thể - text: Bạn có thể sử dụng tút dạng cú pháp. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng + text: Bạn có thể dùng URL, hashtag và nhắc đến. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng defaults: autofollow: Những người đăng ký sẽ tự động theo dõi bạn avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px @@ -33,11 +33,11 @@ vi: email: Bạn sẽ được gửi một email xác nhận fields: Được phép tạo tối đa 4 mục trên trang cá nhân của bạn header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px - inbox_url: Sao chép URL của relay mà bạn muốn sử dụng + inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc locale: Ngôn ngữ của giao diện, email và thông báo đẩy locked: Tự bạn sẽ phê duyệt người theo dõi - password: Sử dụng ít nhất 8 ký tự + password: Dùng ít nhất 8 ký tự phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn quyền hạn cấp cao nhất, bạn không cần chọn từng phạm vi. setting_aggregate_reblogs: Nếu một tút đã được chia sẻ thì những lượt chia sẻ sau sẽ không hiển thị trên bảng tin nữa @@ -58,7 +58,7 @@ vi: 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ý. 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 khuyến nghị bạn sử dụng:' + name: 'Những hashtag gợi ý cho bạn:' form_challenge: current_password: Biểu mẫu này an toàn imports: @@ -67,14 +67,14 @@ vi: text: Điều này sẽ giúp chúng tôi phê duyệt đăng ký của bạn ip_block: comment: Tùy chọn. Hãy cho biết lý do bạn chặn IP này. - expires_in: Có thể sẽ có nhiều người khác nhau sử dụng chung một địa chỉ IP. Vì vậy, bạn nên xem xét không nên chặn IP nào đó vĩnh viễn. + expires_in: Có thể sẽ có nhiều người khác nhau dùng chung một địa chỉ IP. Vì vậy, bạn nên cân nhắc không nên chặn IP nào đó vĩnh viễn. ip: Nhập một địa chỉ IPv4 hoặc IPv6. Bạn cũng có thể chặn toàn bộ dãy IP bằng cú pháp CIDR. Hãy cẩn thận đừng chặn nhầm toàn bộ! severities: no_access: Chặn truy cập từ tất cả IP này sign_up_requires_approval: Bạn sẽ phê duyệt những đăng ký mới từ IP này severity: Chọn hành động nếu nhận được yêu cầu từ IP này sessions: - otp: 'Nhập mã xác thực hai yếu tố được tạo bởi ứng dụng điện thoại của bạn hoặc sử dụng một trong các mã khôi phục của bạn:' + otp: 'Nhập mã xác thực hai bước được tạo bởi ứng dụng điện thoại của bạn hoặc dùng một trong các mã khôi phục của bạn:' webauthn: Nếu đây là USB key, hãy cắm vào và thử xoay chiều. tag: name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn @@ -99,11 +99,11 @@ vi: type: Hành động types: disable: Tạm khóa - none: Gửi cảnh cáo + none: Cấm upload sensitive: Nhạy cảm silence: Tạm ẩn suspend: Vô hiệu hóa - warning_preset_id: Sử dụng cảnh cáo cài sẵn + warning_preset_id: Dùng cảnh cáo cài sẵn announcement: all_day: Sự kiện diễn ra hằng ngày ends_at: Kết thúc sự kiện @@ -130,7 +130,7 @@ vi: irreversible: Xóa bỏ vĩnh viễn locale: Ngôn ngữ locked: Đây là tài khoản riêng tư - max_uses: Số lần sử dụng tối đa + max_uses: Số lần dùng tối đa new_password: Mật khẩu mới note: Tiểu sử otp_attempt: Xác thực hai bước @@ -155,7 +155,7 @@ vi: setting_noindex: Không xuất hiện trong công cụ tìm kiếm setting_reduce_motion: Giảm chuyển động ảnh GIF setting_show_application: Hiện ứng dụng đã dùng để đăng tút - setting_system_font_ui: Sử dụng phông chữ mặc định của hệ thống + setting_system_font_ui: Dùng phông chữ mặc định của hệ thống setting_theme: Giao diện setting_trends: Hiển thị xu hướng hôm nay setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy theo dõi ai đó @@ -200,7 +200,7 @@ vi: listable: Cho phép hashtag này xuất hiện trong tìm kiếm và trên tiểu sử cá nhân name: Hashtag trendable: Cho phép hashtag này xuất hiện trong xu hướng - usable: Cho phép sử dụng hashtag này trong tút + usable: Cho phép dùng hashtag này trong tút 'no': Tắt recommended: Khuyến nghị required: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index cc20a067fb..843157815f 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -168,6 +168,8 @@ zh-HK: comment: 備註 invite_request: text: 加入的原因 + ip_block: + ip: IP 地址 notification_emails: digest: 定期電郵摘要 favourite: 當有用戶喜歡你的文章時,發電郵通知 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index a09c9945d7..80cc8c2ee3 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -24,6 +24,7 @@ zh-TW: current_password: 因安全因素,請輸入目前帳戶的密碼 current_username: 請輸入目前帳戶的使用者名稱以確認 digest: 僅在你長時間未登入且在未登入期間收到私訊時傳送 + discoverable: 加入個人資料目錄能接觸更多閱聽眾 email: 您將收到一封確認電子郵件 fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目 header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會按比例縮小成 %{dimensions} 像素 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index e6e6859dcb..d08d726c0b 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -842,6 +842,7 @@ sq: request: Kërkoni arkivin tuaj size: Madhësi blocks: Bllokoni + bookmarks: Faqerojtës csv: CSV domain_blocks: Bllokime përkatësish lists: Lista @@ -918,6 +919,7 @@ sq: success: Të dhënat tuaja u ngarkuan me sukses dhe tani do të përpunohet në kohë types: blocking: Listë bllokimesh + bookmarks: Faqerojtës domain_blocking: Listë bllokimesh përkatësish following: Listë ndjekjesh muting: Listë heshtimesh @@ -1074,6 +1076,7 @@ sq: relationships: activity: Veprimtari llogarie dormant: Në gjumë + follow_selected_followers: Ndiq ndjekësit e përzgjedhur followers: Ndjekës following: Ndjek invited: Të ftuar diff --git a/config/locales/sv.yml b/config/locales/sv.yml index d14899f3db..a84d5cdbd2 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -642,6 +642,7 @@ sv: request: Efterfråga ditt arkiv size: Storlek blocks: Du blockerar + bookmarks: Bokmärken csv: CSV lists: Listor mutes: Du tystar @@ -678,6 +679,7 @@ sv: success: Dina uppgifter har laddats upp och kommer nu att behandlas snarast types: blocking: Lista av blockerade + bookmarks: Bokmärken following: Lista av följare muting: Lista av nertystade upload: Ladda upp @@ -766,6 +768,7 @@ sv: other: Annat relationships: activity: Kontoaktivitet + follow_selected_followers: Följ valda personer followers: Följare following: Följer last_active: Senast aktiv diff --git a/config/locales/th.yml b/config/locales/th.yml index 68ea31d825..fcfa2fbc93 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -127,6 +127,7 @@ th: login_status: สถานะการเข้าสู่ระบบ media_attachments: ไฟล์แนบสื่อ memorialize: เปลี่ยนเป็นอนุสรณ์ + memorialized_msg: เปลี่ยน %{username} เป็นบัญชีอนุสรณ์สำเร็จ moderation: active: ใช้งานอยู่ all: ทั้งหมด @@ -150,6 +151,8 @@ th: reject_all: ปฏิเสธทั้งหมด remove_avatar: เอาภาพประจำตัวออก remove_header: เอาส่วนหัวออก + removed_avatar_msg: เอาภาพประจำตัวของ %{username} ออกสำเร็จ + removed_header_msg: เอาภาพส่วนหัวของ %{username} ออกสำเร็จ resend_confirmation: already_confirmed: ผู้ใช้นี้ได้รับการยืนยันอยู่แล้ว send: ส่งอีเมลยืนยันอีกครั้ง @@ -750,6 +753,7 @@ th: request: ขอการเก็บถาวรของคุณ size: ขนาด blocks: คุณปิดกั้น + bookmarks: ที่คั่นหน้า csv: CSV domain_blocks: การปิดกั้นโดเมน lists: รายการ @@ -806,6 +810,7 @@ th: overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่ types: blocking: รายการปิดกั้น + bookmarks: ที่คั่นหน้า domain_blocking: รายการปิดกั้นโดเมน following: รายการติดตาม muting: รายการซ่อน @@ -920,6 +925,7 @@ th: relationships: activity: กิจกรรมบัญชี dormant: ไม่เคลื่อนไหว + follow_selected_followers: ติดตามผู้ติดตามที่เลือก followers: ผู้ติดตาม following: กำลังติดตาม invited: เชิญแล้ว diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 916cff3013..bc5c9a43f9 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -35,7 +35,7 @@ tr: status_count_before: Şu ana kadar tagline: Arkadaşlarını takip et ve yenilerini keşfet terms: Kullanım şartları - unavailable_content: Mevcut olmayan içerik + unavailable_content: Denetlenen sunucular unavailable_content_description: domain: Sunucu reason: Sebep @@ -52,16 +52,16 @@ tr: user_count_before: Kayıtlı what_is_mastodon: Mastodon nedir? accounts: - choices_html: "%{name} seçimleri:" + choices_html: "%{name} kişisinin seçimleri:" endorsements_hint: Takip ettiğiniz kişileri web arayüzünden onaylayabilirsiniz, burada görünecekler. featured_tags_hint: Burada görüntülenecek belirli etiketlere sahip olabilirsiniz. follow: Takip et followers: one: Takipçi other: Takipçi - following: Takip ettikleri + following: Takip edilenler joined: "%{date} tarihinde katıldı" - last_active: son aktivite + last_active: son etkinlik link_verified_on: Bu bağlantının mülkiyeti %{date} tarihinde kontrol edildi media: Medya moved_html: "%{name}, %{new_profile_link} adresine taşındı:" @@ -77,7 +77,7 @@ tr: other: Toot posts_tab_heading: Tootlar posts_with_replies: Tootlar ve yanıtlar - reserved_username: Kullanıcı adı saklıdır + reserved_username: Kullanıcı adı rezerve edildi roles: admin: Yönetici bot: Bot @@ -90,7 +90,7 @@ tr: action: Eylemi gerçekleştir title: "%{acct} üzerinde denetleme eylemi gerçekleştir" account_moderation_notes: - create: Not bırakın + create: Not bırak created_msg: Denetim notu başarıyla oluşturuldu! delete: Sil destroyed_msg: Denetim notu başarıyla yok edildi! @@ -139,9 +139,9 @@ tr: local: Yerel remote: Uzaktan title: Konum - login_status: Giriş durumu + login_status: Oturum açma durumu media_attachments: Medya ekleri - memorialize: Bir hatıraya dön + memorialize: Anıta dönüştür memorialized: Anıtlaştırıldı memorialized_msg: "%{username} hesabı başarıyla anıt hesabına dönüştürüldü" moderation: @@ -150,7 +150,7 @@ tr: pending: Bekliyor silenced: Susturulanlar suspended: Uzaklaştırılanlar - title: Yönetim + title: Denetim moderation_notes: Denetleme notları most_recent_activity: Son aktivite most_recent_ip: Son IP @@ -218,7 +218,7 @@ tr: action_logs: action_types: assigned_to_self_report: Raporu Ata - change_email_user: Kullanıcı için e-postayı değiştir + change_email_user: Kullanıcı E-postasını Değiştir confirm_user: Kullanıcıyı Onayla create_account_warning: Uyarı Oluştur create_announcement: Duyuru Oluştur @@ -235,14 +235,14 @@ tr: destroy_email_domain_block: E-posta alan adı engelini sil destroy_ip_block: IP kuralını sil destroy_status: Durumu Sil - disable_2fa_user: 2 Adımlı Doğrulamayı Kapat - disable_custom_emoji: Özel İfadeyi Engelle - disable_user: Kullanıcıyı Engelle + disable_2fa_user: 2AD Kapat + disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak + disable_user: Kullanıcıyı Devre Dışı Bırak enable_custom_emoji: Özel İfadeyi Etkinleştir enable_user: Kullanıcıyı Etkinleştir - memorialize_account: Hesabı Hatırlat + memorialize_account: Hesabı Anıtlaştır promote_user: Kullanıcıyı Yükselt - remove_avatar_user: Avatarı Kaldır + remove_avatar_user: Profil Resmini Kaldır reopen_report: Şikayeti Tekrar Aç reset_password_user: Parolayı Sıfırla resolve_report: Şikayeti Çöz @@ -280,7 +280,7 @@ tr: disable_user: "%{name} %{target} kullanıcısı için oturum açmayı devre dışı bıraktı" enable_custom_emoji: "%{name} %{target} için emojiyi etkinleştirdi" enable_user: "%{name} %{target} için oturum açmayı etkinleştirdi" - memorialize_account: "%{name} %{target}'in hesabını bir hatıra sayfasına dönüştürdü" + memorialize_account: "%{name}, %{target} kişisinin hesabını anıt sayfasına dönüştürdü" promote_user: "%{name} %{target} kullanıcısını yükseltti" remove_avatar_user: "%{name} %{target}'in avatarını kaldırdı" reopen_report: "%{name} %{target} şikayetini yeniden açtı" @@ -842,6 +842,7 @@ tr: request: Arşivinizi isteyin size: Boyut blocks: Engellediklerin + bookmarks: Yer imleri csv: CSV domain_blocks: Alan adı engelleri lists: Listeler @@ -918,6 +919,7 @@ tr: success: Verileriniz başarıyla yüklendi ve zaman içinde işlenecek types: blocking: Engellenenler listesi + bookmarks: Yer imleri domain_blocking: Alan adı engelleme listesi following: Takip edilenler listesi muting: Susturulanlar listesi @@ -1074,6 +1076,7 @@ tr: relationships: activity: Hesap etkinliği dormant: Uykuda + follow_selected_followers: Seçili takipçileri takip et followers: Takipçiler following: Takip edilenler invited: Davet edildi diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 7335217601..0170185f1d 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -11,28 +11,28 @@ vi: apps: Ứng dụng di động apps_platforms: Lướt Mastodon trên iOS, Android và các nền tảng khác browse_directory: Tìm những người có sở thích giống bạn - browse_local_posts: Xem thử những tút công khai gần đây + browse_local_posts: Xem những gì đang xảy ra browse_public_posts: Xem thử những tút công khai trên mạng Mastodon contact: Liên lạc contact_missing: Chưa thiết lập contact_unavailable: N/A - discover_users: Khám phá người dùng + discover_users: Thành viên documentation: Tài liệu federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với mọi người trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa. - get_apps: Dùng thử ứng dụng di động + get_apps: Ứng dụng di động hosted_on: "%{domain} vận hành nhờ Mastodon" instance_actor_flash: 'Tài khoản này là một tác nhân ảo được sử dụng để đại diện cho chính máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên bị chặn trừ khi bạn muốn chặn toàn bộ máy chủ. ' learn_more: Tìm hiểu thêm privacy_policy: Chính sách bảo mật - see_whats_happening: Xem những gì đang xảy ra + see_whats_happening: Dòng thời gian server_stats: 'Cộng đồng:' source_code: Mã nguồn status_count_after: other: tút status_count_before: Nơi lưu giữ - tagline: Mạng xã hội liên hợp lớn nhất thế giới + tagline: Mạng xã hội liên hợp lớn nhất terms: Điều khoản dịch vụ unavailable_content: Giới hạn chung unavailable_content_description: @@ -58,7 +58,7 @@ vi: other: Người theo dõi following: Theo dõi joined: Đã tham gia %{date} - last_active: trực tuyến + last_active: online link_verified_on: Liên kết này đã được xác thực quyền sở hữu vào %{date} media: Bộ sưu tập moved_html: "%{name} đã dời sang %{new_profile_link}:" @@ -79,12 +79,12 @@ vi: bot: Tài khoản Bot group: Nhóm moderator: Kiểm duyệt viên - unavailable: Tài khoản không còn nữa + unavailable: Tài khoản bị đình chỉ unfollow: Ngưng theo dõi admin: account_actions: action: Thực hiện các hành động - title: Thực hiện kiểm duyệt với %{acct} + title: Áp đặt kiểm duyệt với %{acct} account_moderation_notes: create: Gửi tin nhắn kiểm duyệt created_msg: Gửi tin nhắn kiểm duyệt thành công! @@ -196,7 +196,7 @@ vi: subscribe: Đăng ký suspended: Đã vô hiệu hóa suspension_irreversible: Toàn bộ dữ liệu của người dùng này sẽ bị xóa hết. Bạn vẫn có thể ngừng vô hiệu hóa nhưng dữ liệu sẽ không thể phục hồi. - suspension_reversible_hint_html: Kể từ %{date}, tài khoản sẽ bị vô hiệu hóa và dữ liệu bị xóa hết. Trước thời hạn này, tài khoản vẫn có thể phục hồi dữ liệu. Nếu bạn vẫn muốn xóa dữ liệu của người này ngay lập tức, hãy tiếp tục. + suspension_reversible_hint_html: Dữ liệu của tài khoản này sẽ bị xóa sạch vào %{date}. Trước thời hạn này, tài khoản vẫn có thể phục hồi dữ liệu. Nếu bạn muốn xóa dữ liệu của người này ngay bây giờ, hãy tiếp tục. time_in_queue: Đang chờ cách đây %{time} title: Tài khoản unconfirmed_email: Email chưa được xác thực @@ -208,7 +208,7 @@ vi: unsuspended_msg: Đã kích hoạt lại tài khoản %{username} thành công username: Tài khoản view_domain: Xem mô tả tài khoản này - warn: Cảnh cáo + warn: Cấm upload web: Web whitelisted: Danh sách trắng action_logs: @@ -216,7 +216,7 @@ vi: assigned_to_self_report: Báo cáo từ đội ngũ change_email_user: Đổi email cho người dùng confirm_user: Xác nhận người dùng - create_account_warning: Tạo cảnh cáo + create_account_warning: Tạo cảnh cáo cài sẵn create_announcement: Tạo thông báo create_custom_emoji: Tạo Emoji mới create_domain_allow: Tạo danh sách máy chủ cho phép @@ -264,7 +264,7 @@ vi: create_email_domain_block: "%{name} chặn địa chỉ email %{target}" create_ip_block: "%{name} đã chặn IP %{target}" demote_user: "%{name} đã gỡ bỏ chức vụ %{target}" - destroy_announcement: "%{name} gỡ thông báo tới %{target}" + destroy_announcement: "%{name} gỡ thông báo %{target}" destroy_custom_emoji: "%{name} biểu tượng cảm xúc bị phá hủy %{target}" destroy_domain_allow: "%{name} đã xóa tên miền %{target} khỏi danh sách trắng" destroy_domain_block: "%{name} bỏ chặn máy chủ %{target}" @@ -366,7 +366,7 @@ vi: single_user_mode: Máy chủ chỉ có 1 người software: Phần mềm space: Dung lượng lưu trữ - title: Số liệu + title: Thống kê total_users: tổng số người dùng trends: Xu hướng week_interactions: tương tác trong tuần này @@ -389,7 +389,7 @@ vi: create: Tạo chặn hint: Chặn máy chủ sẽ không ngăn việc hiển thị tút của máy chủ đó trong cơ sở dữ liệu, nhưng sẽ khiến tự động áp dụng các phương pháp kiểm duyệt cụ thể trên các tài khoản đó. severity: - desc_html: "Ẩn sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không theo dõi họ. Vô hiệu hóa sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Sử dụng Cấm upload nếu bạn chỉ muốn cấm tải lên ảnh và video." + desc_html: "Ẩn sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không theo dõi họ. Vô hiệu hóa sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Dùng Cấm upload nếu bạn chỉ muốn cấm tải lên ảnh và video." noop: Không hoạt động silence: Ẩn suspend: Vô hiệu hóa @@ -470,9 +470,9 @@ vi: no_ip_block_selected: Bạn chưa chọn bất kỳ IP nào title: Những IP bị chặn pending_accounts: - title: Tài khoản đang chờ xét duyệt (%{count}) + title: Tài khoản đang chờ xem xét (%{count}) relationships: - title: Những mối liên hệ của %{acct} + title: Mối quan hệ của %{acct} relays: add_new: Thêm liên hợp mới delete: Loại bỏ @@ -513,7 +513,7 @@ vi: create_and_resolve: Xử lý kiểm duyệt create_and_unresolve: Mở lại kèm ghi chú mới delete: Xóa bỏ - placeholder: Mô tả vi phạm của người này, mức xử lý và những cập nhật liên quan khác... + placeholder: Mô tả vi phạm của người này, mức độ xử lý và những cập nhật liên quan khác... 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 @@ -551,10 +551,10 @@ vi: enable_bootstrap_timeline_accounts: title: Gợi ý theo dõi cho người dùng mới hero: - desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Khi không được đặt, sử dụng hình thu nhỏ của máy chủ + desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ title: Hình ảnh giới thiệu mascot: - desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Khi không được đặt, sử dụng linh vật mặc định Mastodon + desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Mặc định dùng linh vật Mastodon title: Logo máy chủ peers_api_enabled: desc_html: Tên miền mà máy chủ này đã kết giao trong mạng liên hợp @@ -567,7 +567,7 @@ vi: title: Cho phép hiện danh sách thành viên registrations: closed_message: - desc_html: Hiển thị trên trang chủ khi đăng ký được đóng lại. Bạn có thể sử dụng thẻ HTML + desc_html: Hiển thị trên trang chủ khi đăng ký được đóng lại. Bạn có thể viết bằng thẻ HTML title: Thông điệp báo máy chủ đã ngừng đăng ký deletion: desc_html: Cho phép mọi người xóa tài khoản của họ @@ -588,23 +588,23 @@ vi: desc_html: Hiển thị huy hiệu nhân viên trên trang người dùng title: Hiển thị huy hiệu nhân viên site_description: - desc_html: Đoạn giới thiệu về API. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể sử dụng các thẻ HTML, đặc biệt là <a><em> . + desc_html: Nội dung giới thiệu về máy chủ. Mô tả những gì làm cho máy chủ Mastodon này đặc biệt và bất cứ điều gì quan trọng khác. Bạn có thể dùng các thẻ HTML, đặc biệt là <a><em>. title: Mô tả máy chủ site_description_extended: - desc_html: Bạn có thể tạo thêm các mục như quy định chung, hướng dẫn và những thứ khác liên quan tới máy chủ của bạn. Sử dụng thẻ HTML + desc_html: Bạn có thể tạo thêm các mục như quy định chung, hướng dẫn và những thứ khác liên quan tới máy chủ của bạn. Dùng thẻ HTML title: Thông tin mở rộng tùy chỉnh site_short_description: desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất. title: Mô tả máy chủ ngắn site_terms: - desc_html: Bạn có thể viết chính sách bảo mật của riêng bạn, điều khoản dịch vụ hoặc pháp lý khác. Bạn có thể sử dụng thẻ HTML + desc_html: Bạn có thể viết điều khoản dịch vụ, quyền riêng tư hoặc các vấn đề pháp lý khác. Dùng thẻ HTML title: Điều khoản dịch vụ tùy chỉnh site_title: Tên máy chủ spam_check_enabled: desc_html: Mastodon có thể tự động báo cáo các tài khoản gửi tin nhắn không mong muốn lặp đi lặp lại. Có thể có dương tính giả. title: Tự động chống thư rác thumbnail: - desc_html: Được sử dụng để xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px + desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px title: Hình thu nhỏ của máy chủ timeline_preview: desc_html: Hiển thị dòng thời gian công khai trên trang đích và cho phép API truy cập vào dòng thời gian công khai mà không cần xác thực @@ -636,7 +636,7 @@ vi: tags: accounts_today: Sử dụng hôm nay accounts_week: Sử dụng trong tuần - breakdown: Thống kê số lượt sử dụng hôm nay + breakdown: Thống kê số lượt dùng hôm nay context: Bối cảnh directory: Có trên tiểu sử in_directory: "%{count} có trên tiểu sử" @@ -677,7 +677,7 @@ vi: remove: Bỏ liên kết bí danh appearance: advanced_web_interface: Bố cục - advanced_web_interface_hint: 'Giao diện nhiều cột cho phép bạn chuyển đổi bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Rất thích hợp nếu bạn sử dụng màn hình rộng.' + advanced_web_interface_hint: 'Giao diện nhiều cột cho phép bạn chuyển bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Rất thích hợp nếu bạn đang dùng màn hình rộng.' animations_and_accessibility: Bảng tin confirmation_dialogs: Hộp thoại xác nhận discovery: Khám phá @@ -721,8 +721,8 @@ vi: link_to_webauth: Nhập khóa bảo mật từ thiết bị login: Đăng nhập logout: Đăng xuất - migrate_account: Sử dụng một tài khoản khác - migrate_account_html: Nếu bạn muốn bỏ tài khoản này để sử dụng một tài khoản khác, bạn có thể thiết lập nó ở đây. + migrate_account: Chuyển sang tài khoản khác + migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể thiết lập nó ở đây. or_log_in_with: Hoặc đăng nhập bằng providers: cas: CAS @@ -768,7 +768,7 @@ vi: invalid_signature: không phải là chữ ký số Ed25519 đúng date: formats: - default: "%b.%-m.%Y" + default: "%d.%m.%Y" with_month_name: "%B %d, %Y" datetime: distance_in_words: @@ -803,8 +803,8 @@ vi: username_unavailable: Tên người dùng của bạn sẽ không thể đăng ký mới directories: directory: Kết bạn - explanation: Khám phá người dùng dựa trên sở thích của họ - explore_mastodon: Khám phá %{title} + explanation: Tìm và kết bạn với những người cùng sở thích + explore_mastodon: Thành viên %{title} domain_validator: invalid_domain: không phải là một tên miền hợp lệ errors: @@ -821,7 +821,7 @@ vi: content: Chúng tôi xin lỗi, nhưng đã xảy ra sự cố. title: Múi giờ trên thiết bị không đúng '503': Trang không thể hiển thị do lỗi máy chủ tạm thời. - noscript_html: Để sử dụng ứng dụng web Mastodon, vui lòng bật JavaScript. Ngoài ra, hãy thử một trong những ứng dụng gốc của Mastodon cho hệ điều hành của bạn. + noscript_html: Để vào Mastodon bản web, vui lòng bật JavaScript. Ngoài ra, hãy thử dùng một ứng dụng lướt Mastodon cho thiết bị của bạn. existing_username_validator: not_found: không có tên người dùng này trên máy chủ not_found_multiple: không tìm thấy %{usernames} @@ -834,6 +834,7 @@ vi: request: Tải về dữ liệu của bạn size: Dung lượng blocks: Người bạn chặn + bookmarks: Đã lưu csv: CSV domain_blocks: Máy chủ bạn chặn lists: Danh sách @@ -843,7 +844,7 @@ vi: add_new: Thêm mới errors: limit: Bạn đã đạt tới số lượng hashtag tối đa - hint_html: "Hashtags thường dùng là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang cá nhân của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể sử dụng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn." + hint_html: "Hashtags thường dùng là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang cá nhân của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể dùng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn." filters: contexts: account: Trang cá nhân @@ -909,6 +910,7 @@ vi: success: Dữ liệu của bạn đã được tải lên thành công và hiện đang xử lý types: blocking: Danh sách chặn + bookmarks: Đã lưu domain_blocking: Danh sách máy chủ đã chặn following: Danh sách người theo dõi muting: Danh sách người dùng ẩn @@ -928,7 +930,7 @@ vi: generate: Tạo lời mời invited_by: 'Bạn đã được mời bởi:' max_uses: - other: "%{count} lần sử dụng" + other: "%{count} lần dùng" max_uses_prompt: Không giới hạn prompt: Tạo và chia sẻ liên kết với những người khác để cấp quyền truy cập vào máy chủ này table: @@ -968,8 +970,8 @@ vi: warning: backreference_required: Bạn cần phải đăng ký tài khoản mới ở máy chủ khác trước before: 'Trước khi tiếp tục, xin vui lòng đọc các lưu ý:' - cooldown: Trong thời gian chuyển tài khoản, bạn sẽ không thể sử dụng tài khoản này - disabled_account: Tài khoản này sẽ không thể tiếp tục sử dụng. Tuy nhiên, bạn có quyền truy cập để xuất dữ liệu cũng như kích hoạt lại. + cooldown: Bạn sẽ bị hạn chế chuyển sang tài khoản mới trong thời gian sắp tới + disabled_account: Tài khoản này sẽ không thể tiếp tục dùng nữa. Tuy nhiên, bạn có quyền truy cập để xuất dữ liệu cũng như kích hoạt lại. followers: Hành động này sẽ chuyển tất cả người theo dõi từ tài khoản hiện tại sang tài khoản mới only_redirect_html: Ngoài ra, bạn có thể đặt chuyển hướng trên trang cá nhân của bạn. other_data: Dữ liệu khác sẽ không được di chuyển tự động @@ -1062,9 +1064,10 @@ vi: relationships: activity: Hoạt động tài khoản dormant: Chưa tương tác - followers: Họ theo dõi bạn - following: Bạn theo dõi họ - invited: Người bạn mời đăng ký + follow_selected_followers: Theo dõi những người đã chọn + followers: Người theo dõi + following: Đang theo dõi + invited: Đã mời last_active: Hoạt động lần cuối most_recent: Mới nhất moved: Đã xóa @@ -1119,7 +1122,7 @@ vi: weibo: Weibo current_session: Phiên hiện tại description: "%{browser} trên %{platform}" - explanation: Đây là các trình duyệt web sử dụng để đăng nhập vào tài khoản Mastodon của bạn. + explanation: Đây là các trình duyệt web đã từng đăng nhập vào tài khoản Mastodon của bạn. ip: IP platforms: adobe_air: Adobe Air @@ -1142,7 +1145,7 @@ vi: account_settings: Cài đặt tài khoản aliases: Kết nối tài khoản appearance: Giao diện - authorized_apps: App đã sử dụng + authorized_apps: App đã dùng back: Quay lại Mastodon delete: Xóa tài khoản development: Lập trình @@ -1193,7 +1196,7 @@ vi: show_more: Đọc thêm show_newer: Mới hơn show_older: Cũ hơn - show_thread: Xem thảo luận + show_thread: Xem thêm sign_in_to_participate: Đăng nhập để trả lời chủ đề này title: '%{name}: "%{quote}"' visibilities: @@ -1210,9 +1213,54 @@ vi: tags: does_not_match_previous_name: không khớp với tên trước terms: - body_html: '

Chính sách bảo mật

Chúng tôi thu thập những thông tin gì?

  • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, mô tả, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, mô tả, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
  • Tút, lượt theo dõi và thông tin công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn gửi tin nhắn, ngày giờ và ứng dụng sử dụng được lưu trữ. Tin nhắn có thể chứa tệp đính kèm hình ảnh và video. Bài viết công khai và bài viết đóng sẽ hiển thị công khai. Khi bạn đăng một tút trên trang cá nhân của bạn, đó là thông tin công khai. Tút của bạn được gửi đến những người theo dõi của bạn, điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và sẽ có các bản sao được lưu trữ ở đó. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
  • Tin nhắn và tút chỉ dành cho người theo dõi: Tất cả tút được lưu trữ và xử lý trên máy chủ. Các tút chỉ dành cho người theo dõi được gửi đến những người theo dõi và người dùng của bạn được gắn thẻ trong đó. Còn các tin nhắn chỉ được gửi cho người dùng được gắn thẻ trong đó. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi khuyến nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét các máy chủ của người theo dõi của bạn. Bạn có thể thiết lập phê duyệt và từ chối người theo dõi mới theo cách thủ công trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
  • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP bạn đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những yêu cầu truy cập máy chủ của chúng tôi.

Chúng tôi sử dụng thông tin của bạn để làm gì?

Bất kỳ thông tin nào chúng tôi thu thập từ bạn là:

  • Để cung cấp các chức năng cốt lõi của Mastodon. Bạn chỉ có thể tương tác với nội dung của người khác và đăng nội dung của riêng bạn khi bạn đã đăng nhập. Ví dụ: bạn có thể theo dõi người khác để xem các tút của họ trong bảng tin cá nhân hóa của bạn.
  • Để hỗ trợ kiểm duyệt cộng đồng, ví dụ so sánh địa chỉ IP của bạn với các địa chỉ đã biết khác để xác định hacker hoặc vi phạm khác.
  • Địa chỉ email bạn cung cấp chỉ được sử dụng để gửi cho bạn thông tin, thông báo về những người khác tương tác với nội dung của bạn hoặc gửi tin nhắn cho bạn hoặc để trả lời các câu hỏi cũng như các yêu cầu khác từ chính bạn.

Chúng tôi bảo vệ thông tin của bạn như thế nào?

Chúng tôi thực hiện nhiều biện pháp bảo mật để duy trì sự an toàn khi bạn nhập, gửi hoặc truy cập thông tin cá nhân của bạn. Một vài trong số đó như là biện pháp kiểm soát phiên đăng nhập của bạn, lưu lượng giữa các ứng dụng và API của bạn, bảo mật bằng SSL và băm nhỏ mật khẩu nhờ thuật toán một chiều mạnh mẽ. Bạn có thể kích hoạt xác thực hai yếu tố để tiếp tục truy cập an toàn vào tài khoản của mình.


Chúng tôi lưu trữ dữ liệu như thế nào?

Chúng tôi sẽ thực hiện:

  • Giữ lại nhật ký máy chủ chứa địa chỉ IP của tất cả các yêu cầu đến máy chủ này, cho đến khi các nhật ký đó được lưu giữ, không quá 90 ngày.
  • Giữ lại các địa chỉ IP được liên kết với người dùng đã đăng ký không quá 12 tháng.

Bạn có thể tải xuống một bản sao nội dung lưu trữ của bạn, bao gồm các tút, tệp đính kèm phương tiện, ảnh đại diện và hảnh bìa.

Bạn có thể xóa tài khoản của mình bất cứ lúc nào.


Chúng tôi có sử dụng cookie không?

Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn.

Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tương lai.


Chúng tôi có để lộ bất cứ thông tin nào ra bên ngoài không?

Chúng tôi thề danh dự không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn khi chúng tôi tin rằng việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc của ai đó.

Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên kết. Các tút công khai và chỉ dành cho người theo dõi của bạn được gửi đến các máy chủ nơi người theo dõi của bạn thuộc về và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

Khi bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang cá nhân, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.


Giới hạn trẻ em sử dụng

Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, theo yêu cầu của GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này.

Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, theo yêu cầu của COPPA (Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em) thì không được sử dụng trang web này.

Quy định pháp luật có thể khác nhau nếu máy chủ này ở khu vực địa lý khác.


Cập nhật thay đổi

Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

Tài liệu này phát hành dưới hình thức CC-BY-SA. Nó được cập nhật lần cuối vào ngày 7 tháng 3 năm 2018.

Được hoàn thiện từ Discourse.

+ body_html: | +

Chính sách bảo mật

+

Chúng tôi thu thập những thông tin gì?

-' +
    +
  • Thông tin tài khoản cơ bản: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, mô tả, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, mô tả, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.
  • +
  • Tút, lượt theo dõi và thông tin công khai khác: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn gửi tin nhắn, ngày giờ và ứng dụng sử dụng được lưu trữ. Tin nhắn có thể chứa tệp đính kèm hình ảnh và video. Bài viết công khai và bài viết đóng sẽ hiển thị công khai. Khi bạn đăng một tút trên trang cá nhân của bạn, đó là thông tin công khai. Tút của bạn được gửi đến những người theo dõi của bạn, điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và sẽ có các bản sao được lưu trữ ở đó. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.
  • +
  • Tin nhắn và tút chỉ dành cho người theo dõi: Tất cả tút được lưu trữ và xử lý trên máy chủ. Các tút chỉ dành cho người theo dõi được gửi đến những người theo dõi và người dùng của bạn được gắn thẻ trong đó. Còn các tin nhắn chỉ được gửi cho người dùng được gắn thẻ trong đó. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi khuyến nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét các máy chủ của người theo dõi của bạn. Bạn có thể thiết lập phê duyệt và từ chối người theo dõi mới theo cách thủ công trong cài đặt. Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.
  • +
  • Địa chỉ IP và siêu dữ liệu khác: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP bạn đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những yêu cầu truy cập máy chủ của chúng tôi.
  • +

+

Chúng tôi sử dụng thông tin của bạn để làm gì?

+

Bất kỳ thông tin nào chúng tôi thu thập từ bạn là:

+
    +
  • Để cung cấp các chức năng cốt lõi của Mastodon. Bạn chỉ có thể tương tác với nội dung của người khác và đăng nội dung của riêng bạn khi bạn đã đăng nhập. Ví dụ: bạn có thể theo dõi người khác để xem các tút của họ trong bảng tin cá nhân hóa của bạn.
  • +
  • Để hỗ trợ kiểm duyệt cộng đồng, ví dụ so sánh địa chỉ IP của bạn với các địa chỉ đã biết khác để xác định hacker hoặc vi phạm khác.
  • +
  • Địa chỉ email bạn cung cấp chỉ được sử dụng để gửi cho bạn thông tin, thông báo về những người khác tương tác với nội dung của bạn hoặc gửi tin nhắn cho bạn hoặc để trả lời các câu hỏi cũng như các yêu cầu khác từ chính bạn.
  • +
+
+

Chúng tôi bảo vệ thông tin của bạn như thế nào?

+

Chúng tôi thực hiện nhiều biện pháp bảo mật để duy trì sự an toàn khi bạn nhập, gửi hoặc truy cập thông tin cá nhân của bạn. Một vài trong số đó như là biện pháp kiểm soát phiên đăng nhập của bạn, lưu lượng giữa các ứng dụng và API của bạn, bảo mật bằng SSL và băm nhỏ mật khẩu nhờ thuật toán một chiều mạnh mẽ. Bạn có thể kích hoạt xác thực hai yếu tố để tiếp tục truy cập an toàn vào tài khoản của mình.

+
+

Chúng tôi lưu trữ dữ liệu như thế nào?

+

Chúng tôi sẽ thực hiện:

+
    +
  • Giữ lại nhật ký máy chủ chứa địa chỉ IP của tất cả các yêu cầu đến máy chủ này, cho đến khi các nhật ký đó được lưu giữ, không quá 90 ngày.
  • +
  • Giữ lại các địa chỉ IP được liên kết với người dùng đã đăng ký không quá 12 tháng.
  • +
+

Bạn có thể tải xuống một bản sao nội dung lưu trữ của bạn, bao gồm các tút, tệp đính kèm phương tiện, ảnh đại diện và hảnh bìa.

+

Bạn có thể xóa tài khoản của mình bất cứ lúc nào.

+
+

Chúng tôi có sử dụng cookie không?

+

Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn.

+

Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tương lai.

+
+

Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?

+

Chúng tôi thề danh dự không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn khi chúng tôi tin rằng việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc của ai đó.

+

Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên kết. Các tút công khai và chỉ dành cho người theo dõi của bạn được gửi đến các máy chủ nơi người theo dõi của bạn thuộc về và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.

+

Khi bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang cá nhân, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.

+
+

Cấm trẻ em sử dụng

+

Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, theo yêu cầu của GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này.

+

Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, theo yêu cầu của COPPA (Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em) thì không được sử dụng trang web này.

+

Quy định pháp luật có thể khác biệt nếu máy chủ này ở khu vực địa lý khác.

+
+

Cập nhật thay đổi

+

Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này.

+

Tài liệu này phát hành dưới hình thức CC-BY-SA. Nó được cập nhật lần cuối vào ngày 7 tháng 3 năm 2018.

+

Biên tập từ Discourse.

title: "%{instance} Điều khoản dịch vụ và chính sách bảo mật" themes: contrast: Mastodon (Độ tương phản cao) @@ -1235,7 +1283,7 @@ vi: otp: Ứng dụng xác thực recovery_codes: Mã phục hồi dự phòng recovery_codes_regenerated: Mã khôi phục được phục hồi thành công - recovery_instructions_html: Nếu bạn bị mất điện thoại, hãy sử dụng một trong các mã khôi phục bên dưới để lấy lại quyền truy cập vào tài khoản của mình. Giữ mã khôi phục an toàn. Ví dụ, bạn có thể in chúng ra giấy. + recovery_instructions_html: Nếu bạn bị mất điện thoại, hãy dùng một trong các mã khôi phục bên dưới để lấy lại quyền truy cập vào tài khoản của mình. Giữ mã khôi phục an toàn. Ví dụ, bạn có thể in chúng ra giấy. webauthn: Khóa bảo mật user_mailer: backup_ready: @@ -1252,7 +1300,7 @@ vi: explanation: disable: Bạn bị cấm đăng nhập tài khoản. Tuy nhiên, trang cá nhân và dữ liệu của bạn vẫn sẽ được giữ nguyên. sensitive: Ảnh và video tải lên của bạn sẽ bị đánh dấu là nhạy cảm. - silence: Bạn vẫn có thể sử dụng tài khoản của bạn. Tuy nhiên, chỉ có những người đang theo dõi bạn mới có thể thấy tút của bạn. Bạn cũng sẽ bị loại khỏi danh sách của một số người. Những người khác vẫn có thể bắt đầu theo dõi bạn bình thường. + silence: Bạn vẫn có thể dùng tài khoản của bạn. Tuy nhiên, chỉ có những người đang theo dõi bạn mới có thể thấy tút của bạn. Bạn sẽ bị loại khỏi danh sách của một số người. Những người mới khác vẫn có thể theo dõi bạn bình thường. suspend: Tài khoản của bạn đã bị vô hiệu hóa. Tất cả tút và tập tin mà bạn đã tải lên sẽ không thể truy cập được nữa. Bạn vẫn có thể đăng nhập để yêu cầu tải về bản sao dữ liệu của bạn. Tuy nhiên, chúng tôi sẽ giữ lại một vài dữ liệu để ngăn ngừa bạn trốn tránh trách nhiệm. get_in_touch: Bạn có thể trả lời e-mail này để liên hệ với đội ngũ của %{instance}. review_server_policies: Xem lại quy tắc của máy chủ @@ -1278,7 +1326,7 @@ vi: full_handle: Tên đầy đủ của bạn full_handle_hint: Đây cũng là địa chỉ được dùng để tương tác với tất cả mọi người. review_preferences_action: Tùy chỉnh giao diện - review_preferences_step: Tùy chỉnh mọi thứ! Chẳng hạn như chọn loại email nào bạn muốn nhận hoặc trạng thái tút mà bạn muốn sử dụng mặc định. Hãy tắt tự động phát GIF nếu bạn hay bị chóng mặt. + review_preferences_step: Tùy chỉnh mọi thứ! Chẳng hạn như chọn loại email nào bạn muốn nhận hoặc trạng thái đăng tút mặc định mà bạn muốn dùng. Hãy tắt tự động phát GIF nếu bạn dễ bị chóng mặt. subject: Chào mừng đến với Mastodon tip_federated_timeline: Mạng liên hợp là một dạng "liên hợp quốc" của Mastodon. Hiểu một cách đơn giản, nó là những người bạn đã theo dõi từ các máy chủ khác. tip_following: Theo mặc định, bạn sẽ theo dõi (các) quản trị viên máy chủ của bạn. Để tìm những người thú vị hơn, hãy xem qua cộng đồng và thế giới. @@ -1308,7 +1356,7 @@ vi: success: Đã thêm khóa bảo mật mới thành công. delete: Xóa delete_confirmation: Bạn có chắc chắn muốn xóa khóa bảo mật này? - description_html: Nếu bạn kích hoạt khóa bảo mật, khi đăng nhập bạn sẽ cần sử dụng một trong những khóa bảo mật của bạn. + description_html: Nếu bạn kích hoạt khóa bảo mật, bạn sẽ cần dùng một trong những khóa bảo mật đó mỗi khi đăng nhập. destroy: error: Có vấn đề khi xóa khóa bảo mật. Xin thử lại. success: Đã xóa khóa bảo mật thành công. @@ -1316,5 +1364,5 @@ vi: nickname_hint: Nhập tên mới cho khóa bảo mật của bạn not_enabled: Bạn chưa kích hoạt WebAuthn not_supported: Trình duyệt của bạn không hỗ trợ khóa bảo mật - otp_required: Để sử dụng khóa bảo mật, hãy kích hoạt xác thực hai bước trước. + otp_required: Để dùng khóa bảo mật, trước tiên hãy kích hoạt xác thực hai bước. registered_on: Đăng ký vào %{date} diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index ceb475b91c..8e4867b2f5 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -2,6 +2,9 @@ zgh: about: about_this: ⵖⴼ + api: API + contact: ⴰⵎⵢⴰⵡⴰⴹ + learn_more: ⵙⵙⵏ ⵓⴳⴳⴰⵔ unavailable_content_description: domain: ⴰⵎⴰⴽⴽⴰⵢ what_is_mastodon: ⵎⴰ'ⵢⴷ ⵉⴳⴰⵏ ⵎⴰⵙⵜⵔⴷⵓⵎ? @@ -9,6 +12,7 @@ zgh: follow: ⴹⴼⵕ never_active: ⵓⵙⴰⵔ roles: + bot: ⴰⴱⵓⵜ group: ⵜⴰⵔⴰⴱⴱⵓⵜ admin: account_moderation_notes: @@ -19,23 +23,36 @@ zgh: submit: ⵙⵏⴼⵍ ⵉⵎⴰⵢⵍ confirm: ⵙⵏⵜⵎ delete: ⴽⴽⵙ ⵉⴼⵙⴽⴰ + deleted: ⵉⵜⵜⵡⴰⴽⴽⵙ + domain: ⵉⴳⵔ edit: ⵙⵏⴼⵍ email: ⵉⵎⴰⵢⵍ + email_status: ⴰⴷⴷⴰⴷ ⵏ ⵢⵉⵍⴰⵢⵍ location: all: ⵎⴰⵕⵕⴰ + local: ⴰⴷⵖⴰⵔⴰⵏ moderation: all: ⵎⴰⵕⵕⴰ public: ⴰⴳⴷⵓⴷⴰⵏ reject: ⴰⴳⵢ + roles: + user: ⵓⵏⵙⵙⵓⵎⵔⵙ title: ⵉⵎⵉⴹⴰⵏⵏ web: ⵡⵉⴱ + action_logs: + action_types: + update_status: ⵙⴷⵖⵉ ⴰⴷⴷⴰⴷ announcements: live: ⵓⵙⵔⵉⴷ custom_emojis: + by_domain: ⵉⴳⵔ copy: ⵙⵏⵖⵍ delete: ⴽⴽⵙ emoji: ⵉⵎⵓⵊⵉ + domain_blocks: + domain: ⵉⴳⵔ email_domain_blocks: + add_new: ⵔⵏⵓ ⴰⵎⴰⵢⵏⵓ delete: ⴽⴽⵙ instances: moderation: @@ -123,4 +140,5 @@ zgh: settings: account: ⴰⵎⵉⴹⴰⵏ account_settings: ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ + notifications: ⵜⵉⵏⵖⵎⵉⵙⵉⵏ profile: ⵉⴼⵔⵙ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index c400f4564a..f93d6c03f7 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -834,6 +834,7 @@ zh-CN: request: 请求你的存档 size: 大小 blocks: 屏蔽的用户 + bookmarks: 书签 csv: CSV domain_blocks: 域名屏蔽 lists: 列表 @@ -909,6 +910,7 @@ zh-CN: success: 数据上传成功,正在处理中 types: blocking: 屏蔽列表 + bookmarks: 书签 domain_blocking: 域名屏蔽列表 following: 关注列表 muting: 隐藏列表 @@ -1062,6 +1064,7 @@ zh-CN: relationships: activity: 帐号活动 dormant: 休眠 + follow_selected_followers: 关注选中的关注者 followers: 关注者 following: 正在关注 invited: 已邀请 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index edab3c734d..bb0cc716dc 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -7,6 +7,7 @@ zh-HK: active_count_after: 活躍 active_footnote: 每月活躍使用者 (MAU) administered_by: 管理者: + api: API apps: 行動應用程式 apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon browse_directory: 依興趣瀏覽個人資料目錄和過濾器 @@ -158,6 +159,8 @@ zh-HK: search: 搜索 search_same_email_domain: 其他有同個電子郵件網域的使用者 search_same_ip: 其他有同個 IP 的使用者 + sensitive: 敏感内容 + sensitized: 已標記為敏感內容 shared_inbox_url: 公共收件箱(Shared Inbox)URL show: created_reports: 此用戶所提舉報的紀錄 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 95daeb86fe..0f761a03e9 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -625,6 +625,8 @@ zh-TW: lists: 列表 mutes: 您靜音的使用者 storage: 儲存空間大小 + featured_tags: + hint_html: "推薦標籤是什麼? 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!" filters: index: empty: 您沒有過濾器。 @@ -767,6 +769,7 @@ zh-TW: development: 開發 edit_profile: 編輯使用者資訊 export: 匯出 + featured_tags: 推薦標籤 import: 匯入 migrate: 帳戶搬遷 notifications: 通知 @@ -849,3 +852,6 @@ zh-TW: otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫 seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。 signed_in_as: 目前登入的帳戶: + verification: + explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式驗證您確實掌控該連結網頁的內容。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 必須包含rel="me"屬性。連結的顯示文字可自由發揮,以下為範例: + verification: 驗證連結 From 1e89e2ed988d2103ecd46e06476d863cb40c57c7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Nov 2020 03:24:11 +0100 Subject: [PATCH 02/19] Change media modals look in web UI (#15217) - Change overlay background to match color of viewed image - Add interactive reply/boost/favourite buttons to footer of modal - Change ugly "View context" link to button among the action bar --- .../mastodon/components/modal_root.js | 18 +- app/javascript/mastodon/components/status.js | 18 +- .../mastodon/containers/status_container.js | 8 +- .../features/account_gallery/index.js | 9 +- .../picture_in_picture/components/footer.js | 28 ++- .../mastodon/features/status/index.js | 10 +- .../features/ui/components/media_modal.js | 174 +++++++++++++++--- .../features/ui/components/modal_root.js | 13 +- .../features/ui/components/video_modal.js | 20 +- .../mastodon/features/video/index.js | 5 +- app/javascript/styles/mastodon/boost.scss | 40 ++-- .../styles/mastodon/components.scss | 136 +++++++++----- package.json | 1 + yarn.lock | 5 + 14 files changed, 339 insertions(+), 146 deletions(-) diff --git a/app/javascript/mastodon/components/modal_root.js b/app/javascript/mastodon/components/modal_root.js index fe573ffdaf..9bfc0e49ff 100644 --- a/app/javascript/mastodon/components/modal_root.js +++ b/app/javascript/mastodon/components/modal_root.js @@ -1,12 +1,18 @@ import React from 'react'; import PropTypes from 'prop-types'; import 'wicg-inert'; +import { normal } from 'color-blend'; export default class ModalRoot extends React.PureComponent { static propTypes = { children: PropTypes.node, onClose: PropTypes.func.isRequired, + backgroundColor: PropTypes.shape({ + r: PropTypes.number, + g: PropTypes.number, + b: PropTypes.number, + }), }; activeElement = this.props.children ? document.activeElement : null; @@ -62,9 +68,7 @@ export default class ModalRoot extends React.PureComponent { Promise.resolve().then(() => { this.activeElement.focus({ preventScroll: true }); this.activeElement = null; - }).catch((error) => { - console.error(error); - }); + }).catch(console.error); } } @@ -91,10 +95,16 @@ export default class ModalRoot extends React.PureComponent { ); } + let backgroundColor = null; + + if (this.props.backgroundColor) { + backgroundColor = normal({ ...this.props.backgroundColor, a: 1 }, { r: 0, g: 0, b: 0, a: 0.3 }); + } + return (
-
+
{children}
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 8f288bdf9b..27d96e588d 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -193,22 +193,24 @@ class Status extends ImmutablePureComponent { } handleOpenVideo = (media, options) => { - this.props.onOpenVideo(media, options); + this.props.onOpenVideo(this._properStatus().get('id'), media, options); + } + + handleOpenMedia = (media, index) => { + this.props.onOpenMedia(this._properStatus().get('id'), media, index); } handleHotkeyOpenMedia = e => { const { onOpenMedia, onOpenVideo } = this.props; - const status = this._properStatus(); + const statusId = this._properStatus().get('id'); e.preventDefault(); if (status.get('media_attachments').size > 0) { - if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { - // TODO: toggle play/paused? - } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { - onOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 }); + if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + onOpenVideo(statusId, status.getIn(['media_attachments', 0]), { startTime: 0 }); } else { - onOpenMedia(status.get('media_attachments'), 0); + onOpenMedia(statusId, status.get('media_attachments'), 0); } } } @@ -416,7 +418,7 @@ class Status extends ImmutablePureComponent { media={status.get('media_attachments')} sensitive={status.get('sensitive')} height={110} - onOpenMedia={this.props.onOpenMedia} + onOpenMedia={this.handleOpenMedia} cacheWidth={this.props.cacheMediaWidth} defaultWidth={this.props.cachedMediaWidth} visible={this.state.showMedia} diff --git a/app/javascript/mastodon/containers/status_container.js b/app/javascript/mastodon/containers/status_container.js index fe81981a78..ef520b96af 100644 --- a/app/javascript/mastodon/containers/status_container.js +++ b/app/javascript/mastodon/containers/status_container.js @@ -152,12 +152,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({ dispatch(mentionCompose(account, router)); }, - onOpenMedia (media, index) { - dispatch(openModal('MEDIA', { media, index })); + onOpenMedia (statusId, media, index) { + dispatch(openModal('MEDIA', { statusId, media, index })); }, - onOpenVideo (media, options) { - dispatch(openModal('VIDEO', { media, options })); + onOpenVideo (statusId, media, options) { + dispatch(openModal('VIDEO', { statusId, media, options })); }, onBlock (status) { diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js index e5caec0bc2..597ca8af62 100644 --- a/app/javascript/mastodon/features/account_gallery/index.js +++ b/app/javascript/mastodon/features/account_gallery/index.js @@ -105,15 +105,18 @@ class AccountGallery extends ImmutablePureComponent { } handleOpenMedia = attachment => { + const { dispatch } = this.props; + const statusId = attachment.getIn(['status', 'id']); + if (attachment.get('type') === 'video') { - this.props.dispatch(openModal('VIDEO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } })); + dispatch(openModal('VIDEO', { media: attachment, statusId, options: { autoPlay: true } })); } else if (attachment.get('type') === 'audio') { - this.props.dispatch(openModal('AUDIO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } })); + dispatch(openModal('AUDIO', { media: attachment, statusId, options: { autoPlay: true } })); } else { const media = attachment.getIn(['status', 'media_attachments']); const index = media.findIndex(x => x.get('id') === attachment.get('id')); - this.props.dispatch(openModal('MEDIA', { media, index, status: attachment.get('status') })); + dispatch(openModal('MEDIA', { media, index, statusId })); } } diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js index 086cda954e..1b1ec6d543 100644 --- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js +++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js @@ -22,6 +22,7 @@ const messages = defineMessages({ favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }, replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, + open: { id: 'status.open', defaultMessage: 'Expand this status' }, }); const makeMapStateToProps = () => { @@ -49,11 +50,19 @@ class Footer extends ImmutablePureComponent { intl: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, askReplyConfirmation: PropTypes.bool, + withOpenButton: PropTypes.bool, + onClose: PropTypes.func, }; _performReply = () => { - const { dispatch, status } = this.props; - dispatch(replyCompose(status, this.context.router.history)); + const { dispatch, status, onClose } = this.props; + const { router } = this.context; + + if (onClose) { + onClose(); + } + + dispatch(replyCompose(status, router.history)); }; handleReplyClick = () => { @@ -97,8 +106,20 @@ class Footer extends ImmutablePureComponent { } }; + handleOpenClick = e => { + const { router } = this.context; + + if (e.button !== 0 || !router) { + return; + } + + const { status } = this.props; + + router.history.push(`/statuses/${status.get('id')}`); + } + render () { - const { status, intl } = this.props; + const { status, intl, withOpenButton } = this.props; const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private'; @@ -130,6 +151,7 @@ class Footer extends ImmutablePureComponent { + {withOpenButton && }
); } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index cf3a5fa444..c5e7ba7762 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -276,22 +276,20 @@ class Status extends ImmutablePureComponent { } handleOpenMedia = (media, index) => { - this.props.dispatch(openModal('MEDIA', { media, index })); + this.props.dispatch(openModal('MEDIA', { statusId: this.props.status.get('id'), media, index })); } handleOpenVideo = (media, options) => { - this.props.dispatch(openModal('VIDEO', { media, options })); + this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options })); } handleHotkeyOpenMedia = e => { - const status = this._properStatus(); + const { status } = this.props; e.preventDefault(); if (status.get('media_attachments').size > 0) { - if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { - // TODO: toggle play/paused? - } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + if (status.getIn(['media_attachments', 0, 'type']) === 'video') { this.handleOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 }); } else { this.handleOpenMedia(status.get('media_attachments'), 0); diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js index d18f26b4ed..bcec19a493 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.js +++ b/app/javascript/mastodon/features/ui/components/media_modal.js @@ -4,13 +4,14 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Video from 'mastodon/features/video'; import classNames from 'classnames'; -import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import { defineMessages, injectIntl } from 'react-intl'; import IconButton from 'mastodon/components/icon_button'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ImageLoader from './image_loader'; import Icon from 'mastodon/components/icon'; import GIFV from 'mastodon/components/gifv'; import { disableSwiping } from 'mastodon/initial_state'; +import Footer from 'mastodon/features/picture_in_picture/components/footer'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -20,15 +21,121 @@ const messages = defineMessages({ export const previewState = 'previewMediaModal'; +const digitCharacters = [ + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + '#', + '$', + '%', + '*', + '+', + ',', + '-', + '.', + ':', + ';', + '=', + '?', + '@', + '[', + ']', + '^', + '_', + '{', + '|', + '}', + '~', +]; + +const decode83 = (str) => { + let value = 0; + let c, digit; + + for (let i = 0; i < str.length; i++) { + c = str[i]; + digit = digitCharacters.indexOf(c); + value = value * 83 + digit; + } + + return value; +}; + +const decodeRGB = int => ({ + r: Math.max(0, (int >> 16)), + g: Math.max(0, (int >> 8) & 255), + b: Math.max(0, (int & 255)), +}); + export default @injectIntl class MediaModal extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.list.isRequired, - status: ImmutablePropTypes.map, + statusId: PropTypes.string, index: PropTypes.number.isRequired, onClose: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + onChangeBackgroundColor: PropTypes.func.isRequired, }; static contextTypes = { @@ -67,6 +174,7 @@ class MediaModal extends ImmutablePureComponent { handleChangeIndex = (e) => { const index = Number(e.currentTarget.getAttribute('data-index')); + this.setState({ index: index % this.props.media.size, zoomButtonHidden: true, @@ -100,6 +208,22 @@ class MediaModal extends ImmutablePureComponent { this.props.onClose(); }); } + + this._sendBackgroundColor(); + } + + componentDidUpdate (prevProps, prevState) { + if (prevState.index !== this.state.index) { + this._sendBackgroundColor(); + } + } + + _sendBackgroundColor () { + const { media, onChangeBackgroundColor } = this.props; + const index = this.getIndex(); + const backgroundColor = decodeRGB(decode83(media.getIn([index, 'blurhash']).slice(2, 6))); + + onChangeBackgroundColor(backgroundColor); } componentWillUnmount () { @@ -112,6 +236,8 @@ class MediaModal extends ImmutablePureComponent { this.context.router.history.goBack(); } } + + this.props.onChangeBackgroundColor(null); } getIndex () { @@ -127,30 +253,19 @@ class MediaModal extends ImmutablePureComponent { handleStatusClick = e => { if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { e.preventDefault(); - this.context.router.history.push(`/statuses/${this.props.status.get('id')}`); + this.context.router.history.push(`/statuses/${this.props.statusId}`); } } render () { - const { media, status, intl, onClose } = this.props; + const { media, statusId, intl, onClose } = this.props; const { navigationHidden } = this.state; const index = this.getIndex(); - let pagination = []; const leftNav = media.size > 1 && ; const rightNav = media.size > 1 && ; - if (media.size > 1) { - pagination = media.map((item, i) => { - const classes = ['media-modal__button']; - if (i === index) { - classes.push('media-modal__button--active'); - } - return (
  • ); - }); - } - const content = media.map((image) => { const width = image.getIn(['meta', 'original', 'width']) || null; const height = image.getIn(['meta', 'original', 'height']) || null; @@ -218,13 +333,19 @@ class MediaModal extends ImmutablePureComponent { 'media-modal__navigation--hidden': navigationHidden, }); + let pagination; + + if (media.size > 1) { + pagination = media.map((item, i) => ( + + )); + } + return (
    -
    +
    1 })}> - -
    - )} - -
      - {pagination} -
    +
    + {pagination &&
      {pagination}
    } + {statusId &&
    } +
    ); diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js index 5cf70a0cc2..3403830e41 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.js +++ b/app/javascript/mastodon/features/ui/components/modal_root.js @@ -45,6 +45,10 @@ export default class ModalRoot extends React.PureComponent { onClose: PropTypes.func.isRequired, }; + state = { + backgroundColor: null, + }; + getSnapshotBeforeUpdate () { return { visible: !!this.props.type }; } @@ -59,6 +63,10 @@ export default class ModalRoot extends React.PureComponent { } } + setBackgroundColor = color => { + this.setState({ backgroundColor: color }); + } + renderLoading = modalId => () => { return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? : null; } @@ -71,13 +79,14 @@ export default class ModalRoot extends React.PureComponent { render () { const { type, props, onClose } = this.props; + const { backgroundColor } = this.state; const visible = !!type; return ( - + {visible && ( - {(SpecificComponent) => } + {(SpecificComponent) => } )} diff --git a/app/javascript/mastodon/features/ui/components/video_modal.js b/app/javascript/mastodon/features/ui/components/video_modal.js index cce6756c3e..2c3c026c8f 100644 --- a/app/javascript/mastodon/features/ui/components/video_modal.js +++ b/app/javascript/mastodon/features/ui/components/video_modal.js @@ -3,9 +3,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Video from 'mastodon/features/video'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { FormattedMessage } from 'react-intl'; -import classNames from 'classnames'; -import Icon from 'mastodon/components/icon'; export const previewState = 'previewVideoModal'; @@ -13,7 +10,7 @@ export default class VideoModal extends ImmutablePureComponent { static propTypes = { media: ImmutablePropTypes.map.isRequired, - status: ImmutablePropTypes.map, + statusId: PropTypes.string, options: PropTypes.shape({ startTime: PropTypes.number, autoPlay: PropTypes.bool, @@ -48,15 +45,8 @@ export default class VideoModal extends ImmutablePureComponent { } } - handleStatusClick = e => { - if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { - e.preventDefault(); - this.context.router.history.push(`/statuses/${this.props.status.get('id')}`); - } - } - render () { - const { media, status, onClose } = this.props; + const { media, onClose } = this.props; const options = this.props.options || {}; return ( @@ -75,12 +65,6 @@ export default class VideoModal extends ImmutablePureComponent { alt={media.get('description')} />
    - - {status && ( -
    - -
    - )} ); } diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js index 83e638ff64..46eaebd9b9 100644 --- a/app/javascript/mastodon/features/video/index.js +++ b/app/javascript/mastodon/features/video/index.js @@ -118,7 +118,6 @@ class Video extends React.PureComponent { deployPictureInPicture: PropTypes.func, intl: PropTypes.object.isRequired, blurhash: PropTypes.string, - link: PropTypes.node, autoPlay: PropTypes.bool, volume: PropTypes.number, muted: PropTypes.bool, @@ -534,7 +533,7 @@ class Video extends React.PureComponent { } render () { - const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, link, editable, blurhash } = this.props; + const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, editable, blurhash } = this.props; const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state; const progress = Math.min((currentTime / duration) * 100, 100); const playerStyle = {}; @@ -648,8 +647,6 @@ class Video extends React.PureComponent { {formatTime(Math.floor(duration))} )} - - {link && {link}}
    diff --git a/app/javascript/styles/mastodon/boost.scss b/app/javascript/styles/mastodon/boost.scss index f94c0aa464..fb1451cb24 100644 --- a/app/javascript/styles/mastodon/boost.scss +++ b/app/javascript/styles/mastodon/boost.scss @@ -1,22 +1,32 @@ -button.icon-button i.fa-retweet { - background-image: url("data:image/svg+xml;utf8,"); +button.icon-button { + i.fa-retweet { + background-image: url("data:image/svg+xml;utf8,"); + } - &:hover { + &:hover i.fa-retweet { background-image: url("data:image/svg+xml;utf8,"); } -} -button.icon-button.reblogPrivate i.fa-retweet { - background-image: url("data:image/svg+xml;utf8,"); + &.reblogPrivate { + i.fa-retweet { + background-image: url("data:image/svg+xml;utf8,"); + } - &:hover { - background-image: url("data:image/svg+xml;utf8,"); - } -} - -button.icon-button.disabled i.fa-retweet { - &, - &:hover { - background-image: url("data:image/svg+xml;utf8,"); + &:hover i.fa-retweet { + background-image: url("data:image/svg+xml;utf8,"); + } + } + + &.disabled { + i.fa-retweet, + &:hover i.fa-retweet { + background-image: url("data:image/svg+xml;utf8,"); + } + } + + .media-modal__overlay .picture-in-picture__footer & { + i.fa-retweet { + background-image: url("data:image/svg+xml;utf8,"); + } } } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index ab2a5ac617..2fc1c12de9 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -1652,11 +1652,11 @@ a.account__display-name { } } -.star-icon.active { +.icon-button.star-icon.active { color: $gold-star; } -.bookmark-icon.active { +.icon-button.bookmark-icon.active { color: $red-bookmark; } @@ -3007,7 +3007,6 @@ button.icon-button i.fa-retweet { &::before { display: none !important; } - } button.icon-button.active i.fa-retweet { @@ -4487,16 +4486,19 @@ a.status-card.compact:hover { height: 100%; position: relative; - .extended-video-player { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; + &__close, + &__zoom-button { + color: rgba($white, 0.7); - video { - max-width: $media-modal-media-max-width; - max-height: $media-modal-media-max-height; + &:hover, + &:focus, + &:active { + color: $white; + background-color: rgba($white, 0.15); + } + + &:focus { + background-color: rgba($white, 0.3); } } } @@ -4533,10 +4535,10 @@ a.status-card.compact:hover { } .media-modal__nav { - background: rgba($base-overlay-background, 0.5); + background: transparent; box-sizing: border-box; border: 0; - color: $primary-text-color; + color: rgba($primary-text-color, 0.7); cursor: pointer; display: flex; align-items: center; @@ -4547,6 +4549,12 @@ a.status-card.compact:hover { position: absolute; top: 0; bottom: 0; + + &:hover, + &:focus, + &:active { + color: $primary-text-color; + } } .media-modal__nav--left { @@ -4557,58 +4565,86 @@ a.status-card.compact:hover { right: 0; } -.media-modal__pagination { - width: 100%; - text-align: center; +.media-modal__overlay { + max-width: 600px; position: absolute; left: 0; - bottom: 20px; - pointer-events: none; -} + right: 0; + bottom: 0; + margin: 0 auto; -.media-modal__meta { - text-align: center; - position: absolute; - left: 0; - bottom: 20px; - width: 100%; - pointer-events: none; + .picture-in-picture__footer { + border-radius: 0; + background: transparent; + padding: 20px 0; - &--shifted { - bottom: 62px; - } + .icon-button { + color: $white; - a { - pointer-events: auto; - text-decoration: none; - font-weight: 500; - color: $ui-secondary-color; + &:hover, + &:focus, + &:active { + color: $white; + background-color: rgba($white, 0.15); + } - &:hover, - &:focus, - &:active { - text-decoration: underline; + &:focus { + background-color: rgba($white, 0.3); + } + + &.active { + color: $highlight-text-color; + + &:hover, + &:focus, + &:active { + background: rgba($highlight-text-color, 0.15); + } + + &:focus { + background: rgba($highlight-text-color, 0.3); + } + } + + &.star-icon.active { + color: $gold-star; + + &:hover, + &:focus, + &:active { + background: rgba($gold-star, 0.15); + } + + &:focus { + background: rgba($gold-star, 0.3); + } + } } } } -.media-modal__page-dot { - display: inline-block; +.media-modal__pagination { + display: flex; + justify-content: center; + margin-bottom: 20px; } -.media-modal__button { - background-color: $primary-text-color; - height: 12px; - width: 12px; - border-radius: 6px; - margin: 10px; +.media-modal__page-dot { + flex: 0 0 auto; + background-color: $white; + opacity: 0.4; + height: 6px; + width: 6px; + border-radius: 50%; + margin: 0 4px; padding: 0; border: 0; font-size: 0; -} + transition: opacity .2s ease-in-out; -.media-modal__button--active { - background-color: $highlight-text-color; + &.active { + opacity: 1; + } } .media-modal__close { diff --git a/package.json b/package.json index f4ca18e4d8..7b8f49dd8b 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "babel-runtime": "^6.26.0", "blurhash": "^1.1.3", "classnames": "^2.2.5", + "color-blend": "^3.0.0", "compression-webpack-plugin": "^6.1.1", "cross-env": "^7.0.2", "css-loader": "^5.0.1", diff --git a/yarn.lock b/yarn.lock index d6c175ea74..1a0ef66e25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2941,6 +2941,11 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" +color-blend@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/color-blend/-/color-blend-3.0.0.tgz#077073ee59ebce15e084f00590c5bf7577899cb5" + integrity sha512-m21ytRyjsIkVOGG1jrrpijhx7icji0MljlxUoa0ER7lgGW11as0GPLrXQQuMULH1BWJ7OsR11Dy2S6A5lehg5A== + color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" From ec0edf74d672146ea41fabe17f8e2c4e8eaf7459 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Nov 2020 15:41:43 +0100 Subject: [PATCH 03/19] Fix post-migration warning about index corruption being too scary (#15223) --- lib/tasks/db.rake | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 199155107b..f6c9c7eecf 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -51,8 +51,11 @@ namespace :db do task :post_migration_hook do at_exit do unless %w(C POSIX).include?(ActiveRecord::Base.connection.execute('SELECT datcollate FROM pg_database WHERE datname = current_database();').first['datcollate']) - Rails.logger.warn 'WARNING: Your database is using an unsafe collation setting, which might result in index corruption.' - Rails.logger.warn 'WARNING: See https://docs.joinmastodon.org/admin/troubleshooting/index-corruption/#am-i-affected' + warn <<~WARNING + Your database collation is susceptible to index corruption. + (This warning does not indicate that index corruption has occured and can be ignored) + (To learn more, visit: https://docs.joinmastodon.org/admin/troubleshooting/index-corruption/) + WARNING end end end From e1a6526c8dccec4464667b422cc2336b28504d2c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Nov 2020 15:41:58 +0100 Subject: [PATCH 04/19] Fix media modal regression on public pages (#15221) --- .../mastodon/containers/media_container.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/containers/media_container.js b/app/javascript/mastodon/containers/media_container.js index ba55ecbc7b..afed6868e1 100644 --- a/app/javascript/mastodon/containers/media_container.js +++ b/app/javascript/mastodon/containers/media_container.js @@ -30,6 +30,7 @@ export default class MediaContainer extends PureComponent { media: null, index: null, time: null, + backgroundColor: null, }; handleOpenMedia = (media, index) => { @@ -52,7 +53,16 @@ export default class MediaContainer extends PureComponent { document.body.classList.remove('with-modals--active'); document.documentElement.style.marginRight = 0; - this.setState({ media: null, index: null, time: null }); + this.setState({ + media: null, + index: null, + time: null, + backgroundColor: null, + }); + } + + setBackgroundColor = color => { + this.setState({ backgroundColor: color }); } render () { @@ -85,13 +95,14 @@ export default class MediaContainer extends PureComponent { ); })} - + {this.state.media && ( )} From e7e099d1a06700d14fa10258f5509fc5c52738c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Nov 2020 15:48:31 +0100 Subject: [PATCH 05/19] Fix deletes not reaching every server that interacted with status (#15200) Extract logic for determining ActivityPub inboxes to send deletes to to its own class and explicitly include the person the status replied to (even if not mentioned), people who favourited it, and people who replied to it (though that one is still not recursive) --- app/lib/status_reach_finder.rb | 52 +++++++++++++++ app/services/remove_status_service.rb | 91 +++++++++++++-------------- 2 files changed, 97 insertions(+), 46 deletions(-) create mode 100644 app/lib/status_reach_finder.rb diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb new file mode 100644 index 0000000000..35b191dadb --- /dev/null +++ b/app/lib/status_reach_finder.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class StatusReachFinder + def initialize(status) + @status = status + end + + def inboxes + Account.where(id: reached_account_ids).inboxes + end + + private + + def reached_account_ids + [ + replied_to_account_id, + reblog_of_account_id, + mentioned_account_ids, + reblogs_account_ids, + favourites_account_ids, + replies_account_ids, + ].tap do |arr| + arr.flatten! + arr.compact! + arr.uniq! + end + end + + def replied_to_account_id + @status.in_reply_to_account_id + end + + def reblog_of_account_id + @status.reblog.account_id if @status.reblog? + end + + def mentioned_account_ids + @status.mentions.pluck(:account_id) + end + + def reblogs_account_ids + @status.reblogs.pluck(:account_id) + end + + def favourites_account_ids + @status.favourites.pluck(:account_id) + end + + def replies_account_ids + @status.replies.pluck(:account_id) + end +end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 4f0edc3cfb..d6043fb5d8 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -9,44 +9,47 @@ class RemoveStatusService < BaseService # @param [Hash] options # @option [Boolean] :redraft # @option [Boolean] :immediate - # @option [Boolean] :original_removed + # @option [Boolean] :original_removed def call(status, **options) @payload = Oj.dump(event: :delete, payload: status.id.to_s) @status = status @account = status.account - @tags = status.tags.pluck(:name).to_a - @mentions = status.active_mentions.includes(:account).to_a - @reblogs = status.reblogs.includes(:account).to_a @options = options RedisLock.acquire(lock_options) do |lock| if lock.acquired? - remove_from_self if status.account.local? + remove_from_self if @account.local? remove_from_followers remove_from_lists - remove_from_affected - remove_reblogs - remove_from_hashtags - remove_from_public - remove_from_media if status.media_attachments.any? - remove_from_spam_check - remove_media + + # There is no reason to send out Undo activities when the + # cause is that the original object has been removed, since + # original object being removed implicitly removes reblogs + # of it. The Delete activity of the original is forwarded + # separately. + if @account.local? && !@options[:original_removed] + remove_from_remote_followers + remove_from_remote_reach + end + + # Since reblogs don't mention anyone, don't get reblogged, + # favourited and don't contain their own media attachments + # or hashtags, this can be skipped + unless @status.reblog? + remove_from_mentions + remove_reblogs + remove_from_hashtags + remove_from_public + remove_from_media if @status.media_attachments.any? + remove_from_spam_check + remove_media + end @status.destroy! if @options[:immediate] || !@status.reported? else raise Mastodon::RaceConditionError end end - - # There is no reason to send out Undo activities when the - # cause is that the original object has been removed, since - # original object being removed implicitly removes reblogs - # of it. The Delete activity of the original is forwarded - # separately. - return if !@account.local? || @options[:original_removed] - - remove_from_remote_followers - remove_from_remote_affected end private @@ -67,31 +70,35 @@ class RemoveStatusService < BaseService end end - def remove_from_affected - @mentions.map(&:account).select(&:local?).each do |account| - redis.publish("timeline:#{account.id}", @payload) + def remove_from_mentions + # For limited visibility statuses, the mentions that determine + # who receives them in their home feed are a subset of followers + # and therefore the delete is already handled by sending it to all + # followers. Here we send a delete to actively mentioned accounts + # that may not follow the account + + @status.active_mentions.find_each do |mention| + redis.publish("timeline:#{mention.account_id}", @payload) end end - def remove_from_remote_affected + def remove_from_remote_reach + return if @status.reblog? + # People who got mentioned in the status, or who # reblogged it from someone else might not follow # the author and wouldn't normally receive the # delete notification - so here, we explicitly # send it to them - target_accounts = (@mentions.map(&:account).reject(&:local?) + @reblogs.map(&:account).reject(&:local?)) - target_accounts << @status.reblog.account if @status.reblog? && !@status.reblog.account.local? - target_accounts.uniq!(&:id) + status_reach_finder = StatusReachFinder.new(@status) - # ActivityPub - ActivityPub::DeliveryWorker.push_bulk(target_accounts.select(&:activitypub?).uniq(&:preferred_inbox_url)) do |target_account| - [signed_activity_json, @account.id, target_account.preferred_inbox_url] + ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes) do |inbox_url| + [signed_activity_json, @account.id, inbox_url] end end def remove_from_remote_followers - # ActivityPub ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url| [signed_activity_json, @account.id, inbox_url] end @@ -118,19 +125,19 @@ class RemoveStatusService < BaseService # because once original status is gone, reblogs will disappear # without us being able to do all the fancy stuff - @reblogs.each do |reblog| + @status.reblogs.includes(:account).find_each do |reblog| RemoveStatusService.new.call(reblog, original_removed: true) end end def remove_from_hashtags - @account.featured_tags.where(tag_id: @status.tags.pluck(:id)).each do |featured_tag| + @account.featured_tags.where(tag_id: @status.tags.map(&:id)).each do |featured_tag| featured_tag.decrement(@status.id) end return unless @status.public_visibility? - @tags.each do |hashtag| + @status.tags.map(&:name).each do |hashtag| redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", @payload) redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", @payload) if @status.local? end @@ -140,22 +147,14 @@ class RemoveStatusService < BaseService return unless @status.public_visibility? redis.publish('timeline:public', @payload) - if @status.local? - redis.publish('timeline:public:local', @payload) - else - redis.publish('timeline:public:remote', @payload) - end + redis.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', @payload) end def remove_from_media return unless @status.public_visibility? redis.publish('timeline:public:media', @payload) - if @status.local? - redis.publish('timeline:public:local:media', @payload) - else - redis.publish('timeline:public:remote:media', @payload) - end + redis.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', @payload) end def remove_media From e7f1439b9748f5adb85fcb0807376855a90220c4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 27 Nov 2020 18:29:22 +0100 Subject: [PATCH 06/19] Bump version to 3.2.1 (#15227) --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ lib/mastodon/version.rb | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18790e860b..6f94ebea24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,35 @@ Changelog All notable changes to this project will be documented in this file. +## [3.2.1] - 2020-10-19 +### Added + +- Add support for latest HTTP Signatures spec draft ([ThibG](https://github.com/tootsuite/mastodon/pull/14556)) +- Add support for inlined objects in ActivityPub `to`/`cc` ([ThibG](https://github.com/tootsuite/mastodon/pull/14514)) + +### Changed + +- Change actors to not be served at all without authentication in limited federation mode ([ThibG](https://github.com/tootsuite/mastodon/pull/14800)) + - Previously, a bare version of an actor was served when not authenticated, i.e. username and public key + - Because all actor fetch requests are signed using a separate system actor, that is no longer required + +### Fixed + +- Fix `tootctl media` commands not recognizing very large IDs ([ThibG](https://github.com/tootsuite/mastodon/pull/14536)) +- Fix crash when failing to load emoji picker in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14525)) +- Fix contrast requirements in thumbnail color extraction ([ThibG](https://github.com/tootsuite/mastodon/pull/14464)) +- Fix audio/video player not using `CDN_HOST` on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14486)) +- Fix private boost icon not being used on public pages ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14471)) +- Fix audio player on Safari in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14485), [ThibG](https://github.com/tootsuite/mastodon/pull/14465)) +- Fix dereferencing remote statuses not using the correct account for signature when receiving a targeted inbox delivery ([ThibG](https://github.com/tootsuite/mastodon/pull/14656)) +- Fix nil error in `tootctl media remove` ([noellabo](https://github.com/tootsuite/mastodon/pull/14657)) +- Fix videos with near-60 fps being rejected ([Gargron](https://github.com/tootsuite/mastodon/pull/14684)) +- Fix reported statuses not being included in warning e-mail ([Gargron](https://github.com/tootsuite/mastodon/pull/14778)) +- Fix `Reject` activities of `Follow` objects not correctly destroying a follow relationship ([ThibG](https://github.com/tootsuite/mastodon/pull/14479)) +- Fix inefficiencies in fan-out-on-write service ([Gargron](https://github.com/tootsuite/mastodon/pull/14682), [noellabo](https://github.com/tootsuite/mastodon/pull/14709)) +- Fix timeout errors when trying to webfinger some IPv6 configurations ([Gargron](https://github.com/tootsuite/mastodon/pull/14919)) +- Fix files served as `application/octet-stream` being rejected without attempting mime type detection ([ThibG](https://github.com/tootsuite/mastodon/pull/14452)) + ## [3.2.0] - 2020-07-27 ### Added diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 7b940d1f86..a90763dedf 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 0 + 1 end def flags From 13206fcfb86844ba4a0c872eaf8c11a61ea848df Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 28 Nov 2020 03:37:01 +0100 Subject: [PATCH 07/19] Fix media modal crashing when media has no blurhash (#15229) --- .../mastodon/features/ui/components/media_modal.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js index bcec19a493..58cef1e9da 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.js +++ b/app/javascript/mastodon/features/ui/components/media_modal.js @@ -221,9 +221,12 @@ class MediaModal extends ImmutablePureComponent { _sendBackgroundColor () { const { media, onChangeBackgroundColor } = this.props; const index = this.getIndex(); - const backgroundColor = decodeRGB(decode83(media.getIn([index, 'blurhash']).slice(2, 6))); + const blurhash = media.getIn([index, 'blurhash']); - onChangeBackgroundColor(backgroundColor); + if (blurhash) { + const backgroundColor = decodeRGB(decode83(blurhash.slice(2, 6))); + onChangeBackgroundColor(backgroundColor); + } } componentWillUnmount () { From 13b07b88f1aa79c31291473362ac77b31602c374 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 28 Nov 2020 05:17:53 +0100 Subject: [PATCH 08/19] Fix omniauth (SAML/CAS) sign-in routes not having CSRF protection (#15228) --- Gemfile | 1 + Gemfile.lock | 4 ++++ app/views/auth/sessions/new.html.haml | 3 +-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 950bc59bbf..63becb7cca 100644 --- a/Gemfile +++ b/Gemfile @@ -44,6 +44,7 @@ gem 'net-ldap', '~> 0.16' gem 'omniauth-cas', '~> 2.0' gem 'omniauth-saml', '~> 1.10' gem 'omniauth', '~> 1.9' +gem 'omniauth-rails_csrf_protection', '~> 0.1' gem 'color_diff', '~> 0.1' gem 'discard', '~> 1.2' diff --git a/Gemfile.lock b/Gemfile.lock index b8134a985e..f7192d0846 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -375,6 +375,9 @@ GEM addressable (~> 2.3) nokogiri (~> 1.5) omniauth (~> 1.2) + omniauth-rails_csrf_protection (0.1.2) + actionpack (>= 4.2) + omniauth (>= 1.3.1) omniauth-saml (1.10.3) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.9) @@ -741,6 +744,7 @@ DEPENDENCIES oj (~> 3.10) omniauth (~> 1.9) omniauth-cas (~> 2.0) + omniauth-rails_csrf_protection (~> 0.1) omniauth-saml (~> 1.10) ox (~> 2.13) paperclip (~> 6.0) diff --git a/app/views/auth/sessions/new.html.haml b/app/views/auth/sessions/new.html.haml index ceb1694084..9713bdaebf 100644 --- a/app/views/auth/sessions/new.html.haml +++ b/app/views/auth/sessions/new.html.haml @@ -22,7 +22,6 @@ .actions - resource_class.omniauth_providers.each do |provider| - = link_to omniauth_authorize_path(resource_name, provider), class: "button button-#{provider}" do - = t("auth.providers.#{provider}", default: provider.to_s.chomp("_oauth2").capitalize) + = link_to t("auth.providers.#{provider}", default: provider.to_s.chomp("_oauth2").capitalize), omniauth_authorize_path(resource_name, provider), class: "button button-#{provider}", method: :post .form-footer= render 'auth/shared/links' From b429d33e46457bbb2143b780c5a7a1f1bd5a8406 Mon Sep 17 00:00:00 2001 From: Shlee Date: Sun, 29 Nov 2020 18:50:02 +1030 Subject: [PATCH 09/19] Update Dockerfile (#15232) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 57d061fd0e..95d45bab42 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM ubuntu:20.04 as build-dep SHELL ["bash", "-c"] # Install Node v12 (LTS) -ENV NODE_VER="12.16.3" +ENV NODE_VER="12.20.0" RUN ARCH= && \ dpkgArch="$(dpkg --print-architecture)" && \ case "${dpkgArch##*-}" in \ From 68775b60392152d32deda45a261bc1d4f848b44a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9lanie=20Chauvel?= Date: Mon, 30 Nov 2020 12:09:34 +0100 Subject: [PATCH 10/19] Fix character count not ignoring hidden CW field (#15236) --- .../compose/components/compose_form.js | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 47e189251c..8af806ec43 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -77,6 +77,18 @@ class ComposeForm extends ImmutablePureComponent { } } + getFulltextForCharacterCounting = () => { + return [this.props.spoiler? this.props.spoilerText: '', countableText(this.props.text)].join(''); + } + + canSubmit = () => { + const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props; + const fulltext = this.getFulltextForCharacterCounting(); + const isOnlyWhitespace = fulltext.length !== 0 && fulltext.trim().length === 0; + + return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia)); + } + handleSubmit = () => { if (this.props.text !== this.autosuggestTextarea.textarea.value) { // Something changed the text inside the textarea (e.g. browser extensions like Grammarly) @@ -84,11 +96,7 @@ class ComposeForm extends ImmutablePureComponent { this.props.onChange(this.autosuggestTextarea.textarea.value); } - // Submit disabled: - const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props; - const fulltext = [this.props.spoilerText, countableText(this.props.text)].join(''); - - if (isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) { + if (!this.canSubmit()) { return; } @@ -178,10 +186,8 @@ class ComposeForm extends ImmutablePureComponent { } render () { - const { intl, onPaste, showSearch, anyMedia } = this.props; + const { intl, onPaste, showSearch } = this.props; const disabled = this.props.isSubmitting; - const text = [this.props.spoilerText, countableText(this.props.text)].join(''); - const disabledButton = disabled || this.props.isUploading || this.props.isChangingUpload || length(text) > 500 || (text.length !== 0 && text.trim().length === 0 && !anyMedia); let publishText = ''; if (this.props.privacy === 'private' || this.props.privacy === 'direct') { @@ -243,11 +249,11 @@ class ComposeForm extends ImmutablePureComponent {
    -
    +
    -
    +
    ); From a55e6e99c0a8e757eca54ceb1b0496c7124ec9c4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 30 Nov 2020 23:02:32 +0100 Subject: [PATCH 11/19] Fix `ku` locale not being right-to-left (#15252) --- app/helpers/application_helper.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8914b015ce..bf5742d34f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -7,6 +7,13 @@ module ApplicationHelper follow ).freeze + RTL_LOCALES = %i( + ar + fa + he + ku + ).freeze + def active_nav_class(*paths) paths.any? { |path| current_page?(path) } ? 'active' : '' end @@ -44,7 +51,7 @@ module ApplicationHelper end def locale_direction - if [:ar, :fa, :he].include?(I18n.locale) + if RTL_LOCALES.include?(I18n.locale) 'rtl' else 'ltr' From 8e0b98556f5ff1ecf00e82ffbe76e953ffd764ef Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Dec 2020 06:38:05 +0100 Subject: [PATCH 12/19] Bump version to 3.3.0rc1 (#15230) --- CHANGELOG.md | 170 ++++++++++++++++++++++++++++++++++++++++ Gemfile.lock | 6 ++ lib/mastodon/version.rb | 6 +- 3 files changed, 179 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f94ebea24..8816b6a4d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,176 @@ Changelog All notable changes to this project will be documented in this file. +## Unreleased +### Added + +- **Add hotkeys for audio/video control in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15158), [Gargron](https://github.com/tootsuite/mastodon/pull/15198)) + - `Space` and `k` to toggle playback + - `m` to toggle mute + - `f` to toggle fullscreen + - `j` and `l` to go back and forward by 10 seconds + - `.` and `,` to go back and forward by a frame (video only) +- Add expand/compress button on media modal in web UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15068), [mashirozx](https://github.com/tootsuite/mastodon/pull/15088), [mashirozx](https://github.com/tootsuite/mastodon/pull/15094)) +- Add border around 🕺 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14769)) +- Add border around 🐞 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14712)) +- Add home link to the getting started column when home isn't mounted ([ThibG](https://github.com/tootsuite/mastodon/pull/14707)) +- Add option to disable swiping motions across the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13885)) +- **Add pop-out player for audio/video in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/14870), [Gargron](https://github.com/tootsuite/mastodon/pull/15157), [Gargron](https://github.com/tootsuite/mastodon/pull/14915)) + - Continue watching/listening when you scroll away + - Action bar to interact with/open toot from the pop-out player +- Add unread notification markers in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14818), [ThibG](https://github.com/tootsuite/mastodon/pull/14960), [ThibG](https://github.com/tootsuite/mastodon/pull/14954), [noellabo](https://github.com/tootsuite/mastodon/pull/14897), [noellabo](https://github.com/tootsuite/mastodon/pull/14907)) +- Add paragraph about browser add-ons when encountering errors in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14801)) +- Add import and export for bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/14956)) +- Add cache buster feature for media files ([Gargron](https://github.com/tootsuite/mastodon/pull/15155)) + - If you have a proxy cache in front of object storage, deleted files will persist until the cache expires + - If enabled, cache buster will make a special request to the proxy to signal a cache reset +- Add duration option to the mute function ([aquarla](https://github.com/tootsuite/mastodon/pull/13831)) +- Add replies policy option to the list function ([ThibG](https://github.com/tootsuite/mastodon/pull/9205)) +- Add `og:published_time` OpenGraph tags on toots ([nornagon](https://github.com/tootsuite/mastodon/pull/14865)) +- **Add option to be notified when a followed user posts** ([Gargron](https://github.com/tootsuite/mastodon/pull/13546), [ThibG](https://github.com/tootsuite/mastodon/pull/14896), [Gargron](https://github.com/tootsuite/mastodon/pull/14822)) + - If you don't want to miss a toot, click the bell button! +- Add client-side validation in password change forms ([ThibG](https://github.com/tootsuite/mastodon/pull/14564)) +- Add client-side validation in the registration form ([ThibG](https://github.com/tootsuite/mastodon/pull/14560), [ThibG](https://github.com/tootsuite/mastodon/pull/14599)) +- Add support for Gemini URLs ([joshleeb](https://github.com/tootsuite/mastodon/pull/15013)) +- Add WebAuthn as an alternative 2FA method ([santiagorodriguez96](https://github.com/tootsuite/mastodon/pull/14466), [jiikko](https://github.com/tootsuite/mastodon/pull/14806)) +- Add icon for mutual relationships in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15149)) +- Add follow selected followers button in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15148)) +- **Add subresource integrity for JS and CSS assets** ([Gargron](https://github.com/tootsuite/mastodon/pull/15096)) + - If you use a CDN for static assets (JavaScript, CSS, and so on), you have to trust that the CDN does not modify the assets maliciously + - Subresource integrity compares server-generated asset digests with what's actually served from the CDN and prevents such attacks +- Add `ku`, `sa`, `sc`, `zgh` to available locales ([ykzts](https://github.com/tootsuite/mastodon/pull/15138)) +- Add ability to force an account to mark media as sensitive ([noellabo](https://github.com/tootsuite/mastodon/pull/14361)) +- **Add ability to block access or limit sign-ups from chosen IPs** ([Gargron](https://github.com/tootsuite/mastodon/pull/14963)) + - Add rules for IPs or CIDR ranges that automatically expire after a configurable amount of time + - Choose the severity of the rule, either blocking all access or merely limiting sign-ups +- **Add support for reversible suspensions through ActivityPub** ([Gargron](https://github.com/tootsuite/mastodon/pull/14989)) + - Servers can signal that one of their accounts has been suspended + - During suspension, the account can only delete its own content + - A reversal of the suspension can be signalled the same way + - A local suspension always overrides a remote one +- Add ActivityPub follower synchronization mechanism ([ThibG](https://github.com/tootsuite/mastodon/pull/14510), [ThibG](https://github.com/tootsuite/mastodon/pull/15026)) +- Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721)) +- Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595)) +- Add support for dereferencing objects through bearcaps ([Gargron](https://github.com/tootsuite/mastodon/pull/14683), [noellabo](https://github.com/tootsuite/mastodon/pull/14981)) +- Add support for latest HTTP Signatures spec draft ([ThibG](https://github.com/tootsuite/mastodon/pull/14556)) +- Add support for inlined objects in activity audience ([ThibG](https://github.com/tootsuite/mastodon/pull/14514)) +- Add `S3_READ_TIMEOUT` environment variable ([tateisu](https://github.com/tootsuite/mastodon/pull/14952)) +- Add `ALLOWED_PRIVATE_ADDRESSES` environment variable ([ThibG](https://github.com/tootsuite/mastodon/pull/14722)) +- Add `--fix-permissions` option to `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/14383), [uist1idrju3i](https://github.com/tootsuite/mastodon/pull/14715)) +- Add `tootctl accounts merge` ([Gargron](https://github.com/tootsuite/mastodon/pull/15201)) + - Has someone changed their domain or subdomain thereby creating two accounts where there should be one? + - This command will fix it on your end +- Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223)) + - Index corruption in the database? + - This command is for you +- **Add support for managing multiple stream subscriptions in a single connection** ([Gargron](https://github.com/tootsuite/mastodon/pull/14524), [Gargron](https://github.com/tootsuite/mastodon/pull/14566), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14859), [zunda](https://github.com/tootsuite/mastodon/pull/14608)) + - Previously, getting live updates for multiple timelines required opening a HTTP or WebSocket connection for each + - More connections means more resource consumption on both ends, not to mention the (ever so slight) delay when establishing a new connection + - Now, with just a single WebSocket connection you can subscribe and unsubscribe to and from multiple streams +- Add support for limiting results by both `min_id` and `max_id` at the same time in REST API ([tateisu](https://github.com/tootsuite/mastodon/pull/14776)) +- Add `GET /api/v1/accounts/:id/featured_tags` to REST API ([noellabo](https://github.com/tootsuite/mastodon/pull/11817)) +- Add optional `tootctl remove media` cronjob in Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14396)) + +### Changed + +- **Change media modals look in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15217), [Gargron](https://github.com/tootsuite/mastodon/pull/15221)) + - Background of the overlay matches the color of the image + - Action bar to interact with or open the toot from the modal +- Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091)) +- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855)) + - Suspensions no longer equal deletions + - A suspended account can be unsuspended with minimal consequences for 30 days + - Immediate deletion of data is still available as an explicit option + - Suspended accounts can request an archive of their data through the UI +- Change REST API to return empty data for suspended accounts (14765) +- Change web UI to show empty profile for suspended accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/14766)) +- Change featured hashtag suggestions to be recently used instead of most used ([abcang](https://github.com/tootsuite/mastodon/pull/14760)) +- Change direct toots to appear in the home feed again ([Gargron](https://github.com/tootsuite/mastodon/pull/14711), [ThibG](https://github.com/tootsuite/mastodon/pull/15182), [noellabo](https://github.com/tootsuite/mastodon/pull/14727)) + - Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model +- Change content type of downloaded files to be always computed from file data instead of using headers as hints ([ThibG](https://github.com/tootsuite/mastodon/pull/14452)) +- Change email address validation to return more specific errors ([ThibG](https://github.com/tootsuite/mastodon/pull/14565)) +- Change limited federation mode to not serve even bare account actors to the public ([ThibG](https://github.com/tootsuite/mastodon/pull/14800)) + - Previously, accessing an account actor in limited federation mode without a signature would return a bare version that only contained the username and the public key necessary for verifying signatures + - This meant that even though no content would be accessible, other servers could store an empty account that would be visible by end-users + - Because HTTP signatures are performed by a specialized system actor now, it is no longer necessary to return even such a bare version of actors to the public +- Change HTTP signature requirements to include `Digest` header on `POST` requests ([ThibG](https://github.com/tootsuite/mastodon/pull/15069)) +- Change click area of video/audio player buttons to be bigger in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15049)) +- Change order of filters by alphabetic by "keyword or phrase" ([ariasuni](https://github.com/tootsuite/mastodon/pull/15050)) +- Change suspension of remote accounts to also undo outgoing follows ([ThibG](https://github.com/tootsuite/mastodon/pull/15188)) +- Change string "Home" to "Home and lists" in the filter creation screen ([ariasuni](https://github.com/tootsuite/mastodon/pull/15139)) +- Change string "Boost to original audience" to "Boost with original visibility" in web UI ([3n-k1](https://github.com/tootsuite/mastodon/pull/14598)) +- Change string "Show more" to "Show newer" and "Show older" on public pages ([ariasuni](https://github.com/tootsuite/mastodon/pull/15052)) +- Change order of announcements to be reverse chronological in web UI ([dariusk](https://github.com/tootsuite/mastodon/pull/15065), [dariusk](https://github.com/tootsuite/mastodon/pull/15070)) +- Change visibility icon next to timestamp to be clickable in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15053), [mayaeh](https://github.com/tootsuite/mastodon/pull/15055)) + +### Removed + +- Remove fade-in animation from modals in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15199)) +- Remove auto-redirect to direct messages in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15142)) +- Remove dependency on goldfinger gem ([Gargron](https://github.com/tootsuite/mastodon/pull/14919)) +- Remove obsolete IndexedDB operations from web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14730)) +- Remove dependency on unused and unmaintained http_parser.rb gem ([ThibG](https://github.com/tootsuite/mastodon/pull/14574)) + +### Fixed + +- **Fix deletes not reaching every server that interacted with toot** ([Gargron](https://github.com/tootsuite/mastodon/pull/15200)) + - Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot + - Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned +- Fix resolving an account through its non-canonical form (i.e. alternate domain) ([ThibG](https://github.com/tootsuite/mastodon/pull/15187)) +- Fix sending redundant ActivityPub events when processing remote account deletion ([ThibG](https://github.com/tootsuite/mastodon/pull/15104)) +- Fix Move handler not being triggered when failing to fetch target account ([ThibG](https://github.com/tootsuite/mastodon/pull/15107)) +- Fix downloading remote media files when server returns empty filename ([ThibG](https://github.com/tootsuite/mastodon/pull/14867)) +- Fix account processing failing because of large collections ([ThibG](https://github.com/tootsuite/mastodon/pull/15027)) +- Fix handling of Reject Follow activities when a matching follow relationship exists ([ThibG](https://github.com/tootsuite/mastodon/pull/14479)) +- Fix dereferencing remote toots not using the correct account ([ThibG](https://github.com/tootsuite/mastodon/pull/14656)) +- Fix not being able to unfavorite toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/15192)) +- Fix not being able to unbookmark toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/14604)) +- Fix possible casing inconsistencies in hashtag search ([ThibG](https://github.com/tootsuite/mastodon/pull/14906)) +- Fix updating account counters when association is not yet created ([Gargron](https://github.com/tootsuite/mastodon/pull/15108)) +- Fix cookies not having a SameSite attribute ([Gargron](https://github.com/tootsuite/mastodon/pull/15098)) +- Fix audio/video player not using `CDN_HOST` on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14486)) +- Fix videos with near-60 fps being rejected ([Gargron](https://github.com/tootsuite/mastodon/pull/14684)) +- Fix poll ending notifications being created for each vote ([ThibG](https://github.com/tootsuite/mastodon/pull/15071)) +- Fix multiple boosts of a same toot erroneously appearing in TL ([ThibG](https://github.com/tootsuite/mastodon/pull/14759)) +- Fix contrast requirements in thumbnail color extraction ([ThibG](https://github.com/tootsuite/mastodon/pull/14464)) +- Fix asset builds not picking up `CDN_HOST` change ([ThibG](https://github.com/tootsuite/mastodon/pull/14381)) +- Fix desktop notifications permission prompt in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14985), [Gargron](https://github.com/tootsuite/mastodon/pull/15141), [ThibG](https://github.com/tootsuite/mastodon/pull/13543)) + - Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click) + - This means that for some time, users who haven't already given the permission before were not getting a prompt and as such were not receiving desktop notifications +- Fix "Mark media as sensitive" string not supporting pluralizations in other languages in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15051)) +- Fix glitched image uploads when canvas read access is blocked in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15180)) +- Fix some account gallery items having empty labels in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15073)) +- Fix alt-key hotkeys activating while typing in a text field in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14942)) +- Fix wrong seek bar width on media player in web UI ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/15060)) +- Fix crash when failing to load emoji picker in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14525)) +- Fix logging out on mobile in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14901)) +- Fix wrong click area for GIFVs in media modal in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14615)) +- Fix unreadable placeholder text color in high contrast theme in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14803)) +- Fix scrolling issues when closing some dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14606)) +- Fix notification filter bar incorrectly filtering gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14808)) +- Fix audio player not working in Safari ([ThibG](https://github.com/tootsuite/mastodon/pull/14485), [ThibG](https://github.com/tootsuite/mastodon/pull/14465)) +- Fix detailed toot view not using private boost icon in web UI ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14471)) +- Fix disabled boost icon being replaced by private boost icon on hover in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14456)) +- Fix hashtag detection in compose form being different to server-side in web UI ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/14484), [ThibG](https://github.com/tootsuite/mastodon/pull/14513)) +- Fix home last read marker mishandling gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14809)) +- Fix reported toots not being included in warning e-mail ([Gargron](https://github.com/tootsuite/mastodon/pull/14778)) +- Fix inefficiency when fetching hashtag timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/14861), [akihikodaki](https://github.com/tootsuite/mastodon/pull/14662)) +- Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674)) +- Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673)) +- Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675)) +- Fix inefficiencies in fan-out-on-write service ([Gargron](https://github.com/tootsuite/mastodon/pull/14682), [noellabo](https://github.com/tootsuite/mastodon/pull/14709)) +- Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534)) +- Fix nil error in `tootctl media remove` ([noellabo](https://github.com/tootsuite/mastodon/pull/14657)) +- Fix `tootctl media` commands not handling very long directories ([ThibG](https://github.com/tootsuite/mastodon/pull/14536)) +- Fix PostgreSQL secret name for cronjob in Helm chart ([metal3d](https://github.com/tootsuite/mastodon/pull/15072)) +- Fix Procfile not being compatible with herokuish ([acuteaura](https://github.com/tootsuite/mastodon/pull/12685)) +- Fix installation of tini being split into multiple steps in Dockerfile ([ryncsn](https://github.com/tootsuite/mastodon/pull/14686)) + +### Security + +- Fix streaming API allowing connections to persist after access token invalidation ([Gargron](https://github.com/tootsuite/mastodon/pull/15111)) +- Fix 2FA/sign-in token sessions being valid after password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14802)) + ## [3.2.1] - 2020-10-19 ### Added diff --git a/Gemfile.lock b/Gemfile.lock index f7192d0846..9594c0e2b8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -804,3 +804,9 @@ DEPENDENCIES webpacker (~> 5.2) webpush xorcist (~> 1.1) + +RUBY VERSION + ruby 2.7.2p137 + +BUNDLED WITH + 2.1.4 diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index a90763dedf..46aed7d8d3 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -9,15 +9,15 @@ module Mastodon end def minor - 2 + 3 end def patch - 1 + 0 end def flags - '' + 'rc1' end def suffix From 17f01ecc4ee8064bff5eebcb8ed74dfcbf7df6fb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Dec 2020 06:45:58 +0100 Subject: [PATCH 13/19] Fix changelog containing items from 3.2.1 twice (#15255) --- CHANGELOG.md | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8816b6a4d6..fe2c1b8b31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,8 +54,6 @@ All notable changes to this project will be documented in this file. - Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721)) - Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595)) - Add support for dereferencing objects through bearcaps ([Gargron](https://github.com/tootsuite/mastodon/pull/14683), [noellabo](https://github.com/tootsuite/mastodon/pull/14981)) -- Add support for latest HTTP Signatures spec draft ([ThibG](https://github.com/tootsuite/mastodon/pull/14556)) -- Add support for inlined objects in activity audience ([ThibG](https://github.com/tootsuite/mastodon/pull/14514)) - Add `S3_READ_TIMEOUT` environment variable ([tateisu](https://github.com/tootsuite/mastodon/pull/14952)) - Add `ALLOWED_PRIVATE_ADDRESSES` environment variable ([ThibG](https://github.com/tootsuite/mastodon/pull/14722)) - Add `--fix-permissions` option to `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/14383), [uist1idrju3i](https://github.com/tootsuite/mastodon/pull/14715)) @@ -89,12 +87,7 @@ All notable changes to this project will be documented in this file. - Change featured hashtag suggestions to be recently used instead of most used ([abcang](https://github.com/tootsuite/mastodon/pull/14760)) - Change direct toots to appear in the home feed again ([Gargron](https://github.com/tootsuite/mastodon/pull/14711), [ThibG](https://github.com/tootsuite/mastodon/pull/15182), [noellabo](https://github.com/tootsuite/mastodon/pull/14727)) - Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model -- Change content type of downloaded files to be always computed from file data instead of using headers as hints ([ThibG](https://github.com/tootsuite/mastodon/pull/14452)) - Change email address validation to return more specific errors ([ThibG](https://github.com/tootsuite/mastodon/pull/14565)) -- Change limited federation mode to not serve even bare account actors to the public ([ThibG](https://github.com/tootsuite/mastodon/pull/14800)) - - Previously, accessing an account actor in limited federation mode without a signature would return a bare version that only contained the username and the public key necessary for verifying signatures - - This meant that even though no content would be accessible, other servers could store an empty account that would be visible by end-users - - Because HTTP signatures are performed by a specialized system actor now, it is no longer necessary to return even such a bare version of actors to the public - Change HTTP signature requirements to include `Digest` header on `POST` requests ([ThibG](https://github.com/tootsuite/mastodon/pull/15069)) - Change click area of video/audio player buttons to be bigger in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15049)) - Change order of filters by alphabetic by "keyword or phrase" ([ariasuni](https://github.com/tootsuite/mastodon/pull/15050)) @@ -109,7 +102,6 @@ All notable changes to this project will be documented in this file. - Remove fade-in animation from modals in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15199)) - Remove auto-redirect to direct messages in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15142)) -- Remove dependency on goldfinger gem ([Gargron](https://github.com/tootsuite/mastodon/pull/14919)) - Remove obsolete IndexedDB operations from web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14730)) - Remove dependency on unused and unmaintained http_parser.rb gem ([ThibG](https://github.com/tootsuite/mastodon/pull/14574)) @@ -123,18 +115,13 @@ All notable changes to this project will be documented in this file. - Fix Move handler not being triggered when failing to fetch target account ([ThibG](https://github.com/tootsuite/mastodon/pull/15107)) - Fix downloading remote media files when server returns empty filename ([ThibG](https://github.com/tootsuite/mastodon/pull/14867)) - Fix account processing failing because of large collections ([ThibG](https://github.com/tootsuite/mastodon/pull/15027)) -- Fix handling of Reject Follow activities when a matching follow relationship exists ([ThibG](https://github.com/tootsuite/mastodon/pull/14479)) -- Fix dereferencing remote toots not using the correct account ([ThibG](https://github.com/tootsuite/mastodon/pull/14656)) - Fix not being able to unfavorite toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/15192)) - Fix not being able to unbookmark toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/14604)) - Fix possible casing inconsistencies in hashtag search ([ThibG](https://github.com/tootsuite/mastodon/pull/14906)) - Fix updating account counters when association is not yet created ([Gargron](https://github.com/tootsuite/mastodon/pull/15108)) - Fix cookies not having a SameSite attribute ([Gargron](https://github.com/tootsuite/mastodon/pull/15098)) -- Fix audio/video player not using `CDN_HOST` on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14486)) -- Fix videos with near-60 fps being rejected ([Gargron](https://github.com/tootsuite/mastodon/pull/14684)) - Fix poll ending notifications being created for each vote ([ThibG](https://github.com/tootsuite/mastodon/pull/15071)) - Fix multiple boosts of a same toot erroneously appearing in TL ([ThibG](https://github.com/tootsuite/mastodon/pull/14759)) -- Fix contrast requirements in thumbnail color extraction ([ThibG](https://github.com/tootsuite/mastodon/pull/14464)) - Fix asset builds not picking up `CDN_HOST` change ([ThibG](https://github.com/tootsuite/mastodon/pull/14381)) - Fix desktop notifications permission prompt in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14985), [Gargron](https://github.com/tootsuite/mastodon/pull/15141), [ThibG](https://github.com/tootsuite/mastodon/pull/13543)) - Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click) @@ -144,26 +131,19 @@ All notable changes to this project will be documented in this file. - Fix some account gallery items having empty labels in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15073)) - Fix alt-key hotkeys activating while typing in a text field in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14942)) - Fix wrong seek bar width on media player in web UI ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/15060)) -- Fix crash when failing to load emoji picker in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14525)) - Fix logging out on mobile in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14901)) - Fix wrong click area for GIFVs in media modal in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14615)) - Fix unreadable placeholder text color in high contrast theme in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14803)) - Fix scrolling issues when closing some dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14606)) - Fix notification filter bar incorrectly filtering gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14808)) -- Fix audio player not working in Safari ([ThibG](https://github.com/tootsuite/mastodon/pull/14485), [ThibG](https://github.com/tootsuite/mastodon/pull/14465)) -- Fix detailed toot view not using private boost icon in web UI ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14471)) - Fix disabled boost icon being replaced by private boost icon on hover in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14456)) - Fix hashtag detection in compose form being different to server-side in web UI ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/14484), [ThibG](https://github.com/tootsuite/mastodon/pull/14513)) - Fix home last read marker mishandling gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14809)) -- Fix reported toots not being included in warning e-mail ([Gargron](https://github.com/tootsuite/mastodon/pull/14778)) - Fix inefficiency when fetching hashtag timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/14861), [akihikodaki](https://github.com/tootsuite/mastodon/pull/14662)) - Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674)) - Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673)) - Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675)) -- Fix inefficiencies in fan-out-on-write service ([Gargron](https://github.com/tootsuite/mastodon/pull/14682), [noellabo](https://github.com/tootsuite/mastodon/pull/14709)) - Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534)) -- Fix nil error in `tootctl media remove` ([noellabo](https://github.com/tootsuite/mastodon/pull/14657)) -- Fix `tootctl media` commands not handling very long directories ([ThibG](https://github.com/tootsuite/mastodon/pull/14536)) - Fix PostgreSQL secret name for cronjob in Helm chart ([metal3d](https://github.com/tootsuite/mastodon/pull/15072)) - Fix Procfile not being compatible with herokuish ([acuteaura](https://github.com/tootsuite/mastodon/pull/12685)) - Fix installation of tini being split into multiple steps in Dockerfile ([ryncsn](https://github.com/tootsuite/mastodon/pull/14686)) From 4b7f21a28ec59452411b16e66cdbb290d4761b14 Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 1 Dec 2020 12:34:33 +0100 Subject: [PATCH 14/19] Fix Gemfile.lock breaking CI (#15257) Unnecessary Ruby and Bundler version constraints got included in #15230 --- Gemfile.lock | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9594c0e2b8..f7192d0846 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -804,9 +804,3 @@ DEPENDENCIES webpacker (~> 5.2) webpush xorcist (~> 1.1) - -RUBY VERSION - ruby 2.7.2p137 - -BUNDLED WITH - 2.1.4 From fbff89be037c751932c720b0d5cd9221e430be5f Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 2 Dec 2020 21:19:41 +0100 Subject: [PATCH 15/19] Fix tootctl ip_blocks add failing if not given a comment (#15263) Fixes #15261 --- lib/mastodon/ip_blocks_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mastodon/ip_blocks_cli.rb b/lib/mastodon/ip_blocks_cli.rb index 6aff36d908..5c38c1aca0 100644 --- a/lib/mastodon/ip_blocks_cli.rb +++ b/lib/mastodon/ip_blocks_cli.rb @@ -47,7 +47,7 @@ module Mastodon ip_block ||= IpBlock.new(ip: address) ip_block.severity = options[:severity] - ip_block.comment = options[:comment] + ip_block.comment = options[:comment] if options[:comment].present? ip_block.expires_in = options[:duration] if ip_block.save From 9136be480f9660dcdf0e5a17ed929e2eb5ee650c Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 2 Dec 2020 21:20:00 +0100 Subject: [PATCH 16/19] Fix followers hash cache not being invalidated on account merge (#15256) Also clear relationships cache. --- app/models/concerns/account_merging.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/models/concerns/account_merging.rb b/app/models/concerns/account_merging.rb index 691d02e03c..45050c269a 100644 --- a/app/models/concerns/account_merging.rb +++ b/app/models/concerns/account_merging.rb @@ -39,5 +39,10 @@ module AccountMerging end end end + + # Some follow relationships have moved, so the cache is stale + Rails.cache.delete_matched("followers_hash:#{id}:*") + Rails.cache.delete_matched("relationships:#{id}:*") + Rails.cache.delete_matched("relationships:*:#{id}") end end From d849aad85206bff2058fbbd9e187b0048c793cb9 Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 2 Dec 2020 21:21:44 +0100 Subject: [PATCH 17/19] Change public thread view to hide "Show thread" link (#15266) Fixes #15262 --- app/views/statuses/_simple_status.html.haml | 5 ++++- app/views/statuses/_status.html.haml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index 1921927005..d60ade22ff 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -1,3 +1,6 @@ +:ruby + hide_show_thread ||= false + .status{ class: "status-#{status.visibility}" } .status__info = link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener noreferrer' do @@ -47,7 +50,7 @@ - elsif status.preview_card = react_component :card, sensitive: sensitized?(status, current_account), 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json - - if !status.in_reply_to_id.nil? && status.in_reply_to_account_id == status.account.id + - if !status.in_reply_to_id.nil? && status.in_reply_to_account_id == status.account.id && !hide_show_thread = link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__content__read-more-button', target: stream_link_target, rel: 'noopener noreferrer' do = t 'statuses.show_thread' diff --git a/app/views/statuses/_status.html.haml b/app/views/statuses/_status.html.haml index 650f9b6796..13a06519cf 100644 --- a/app/views/statuses/_status.html.haml +++ b/app/views/statuses/_status.html.haml @@ -39,7 +39,7 @@ %span = t('stream_entries.pinned') - = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, autoplay: autoplay + = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, autoplay: autoplay, hide_show_thread: is_predecessor || is_successor - if include_threads - if @since_descendant_thread_id From fbe75192436e81b778319c597e0461d0415b5c6f Mon Sep 17 00:00:00 2001 From: ThibG Date: Fri, 4 Dec 2020 02:23:51 +0100 Subject: [PATCH 18/19] Fix account merging in maintenance script (#15264) Also include AccountNote and AccountDeletionRequest to the list of classes needing to be reassigned the merged account. --- app/models/concerns/account_merging.rb | 7 ++-- lib/mastodon/maintenance_cli.rb | 45 +++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/account_merging.rb b/app/models/concerns/account_merging.rb index 45050c269a..c3b7018f2c 100644 --- a/app/models/concerns/account_merging.rb +++ b/app/models/concerns/account_merging.rb @@ -15,7 +15,7 @@ module AccountMerging Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite, Follow, FollowRequest, Block, Mute, AccountIdentityProof, AccountModerationNote, AccountPin, AccountStat, ListAccount, - PollVote, Mention + PollVote, Mention, AccountDeletionRequest, AccountNote ] owned_classes.each do |klass| @@ -28,7 +28,10 @@ module AccountMerging end end - target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin] + target_classes = [ + Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin, + AccountNote + ] target_classes.each do |klass| klass.where(target_account_id: other_account.id).find_each do |record| diff --git a/lib/mastodon/maintenance_cli.rb b/lib/mastodon/maintenance_cli.rb index 547238ec6e..99d13f43da 100644 --- a/lib/mastodon/maintenance_cli.rb +++ b/lib/mastodon/maintenance_cli.rb @@ -55,8 +55,8 @@ module Mastodon belongs_to :account, inverse_of: :account_stat end + # Dummy class, to make migration possible across version changes class Account < ApplicationRecord - # Dummy class, to make migration possible across version changes has_one :user, inverse_of: :account has_one :account_stat, inverse_of: :account @@ -69,6 +69,49 @@ module Mastodon def acct local? ? username : "#{username}@#{domain}" end + + # This is a duplicate of the AccountMerging concern because we need it to + # be independent from code version. + def merge_with!(other_account) + # Since it's the same remote resource, the remote resource likely + # already believes we are following/blocking, so it's safe to + # re-attribute the relationships too. However, during the presence + # of the index bug users could have *also* followed the reference + # account already, therefore mass update will not work and we need + # to check for (and skip past) uniqueness errors + + owned_classes = [ + Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite, + Follow, FollowRequest, Block, Mute, AccountIdentityProof, + AccountModerationNote, AccountPin, AccountStat, ListAccount, + PollVote, Mention + ] + owned_classes << AccountDeletionRequest if ActiveRecord::Base.connection.table_exists?(:account_deletion_requests) + owned_classes << AccountNote if ActiveRecord::Base.connection.table_exists?(:account_notes) + + owned_classes.each do |klass| + klass.where(account_id: other_account.id).find_each do |record| + begin + record.update_attribute(:account_id, id) + rescue ActiveRecord::RecordNotUnique + next + end + end + end + + target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin] + target_classes << AccountNote if ActiveRecord::Base.connection.table_exists?(:account_notes) + + target_classes.each do |klass| + klass.where(target_account_id: other_account.id).find_each do |record| + begin + record.update_attribute(:target_account_id, id) + rescue ActiveRecord::RecordNotUnique + next + end + end + end + end end class User < ApplicationRecord From 44d5c6bc8ffd92cd201380dabe35748e50b6af68 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Fri, 4 Dec 2020 12:22:35 +0900 Subject: [PATCH 19/19] Fix incorrect conditions for suspended accounts in Get API for account featured tags (#15270) --- app/controllers/api/v1/accounts/featured_tags_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v1/accounts/featured_tags_controller.rb b/app/controllers/api/v1/accounts/featured_tags_controller.rb index 014d719567..dc01b577c1 100644 --- a/app/controllers/api/v1/accounts/featured_tags_controller.rb +++ b/app/controllers/api/v1/accounts/featured_tags_controller.rb @@ -17,6 +17,6 @@ class Api::V1::Accounts::FeaturedTagsController < Api::BaseController end def set_featured_tags - @featured_tags = @account.suspended? ? @account.featured_tags : [] + @featured_tags = @account.suspended? ? [] : @account.featured_tags end end