From e09f9f885e3d2859f495d5e5e6107bba9bde3b5a Mon Sep 17 00:00:00 2001 From: Michael Stanclift Date: Tue, 10 Sep 2024 12:33:55 -0500 Subject: [PATCH 01/36] Fix alt text modal styling (#31844) --- app/javascript/styles/mastodon-light/diff.scss | 17 +++++++---------- app/javascript/styles/mastodon/components.scss | 16 +++++++++------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 1df556b42a4e97..c0cabf837c4ef1 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -159,8 +159,8 @@ .error-modal, .onboarding-modal, .compare-history-modal, -.report-modal__comment .setting-text__wrapper, -.report-modal__comment .setting-text, +.report-modal__comment, +.report-modal__comment, .announcements, .picture-in-picture__header, .picture-in-picture__footer, @@ -169,6 +169,11 @@ border: 1px solid var(--background-border-color); } +.setting-text__wrapper, +.setting-text { + border: 1px solid var(--background-border-color); +} + .reactions-bar__item:hover, .reactions-bar__item:focus, .reactions-bar__item:active { @@ -198,14 +203,6 @@ color: $white; } -.report-modal__comment { - border-right-color: lighten($ui-base-color, 8%); -} - -.report-modal__container { - border-top-color: lighten($ui-base-color, 8%); -} - .column-settings__hashtags .column-select__option { color: $white; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 570c006faa8eeb..382491eb743949 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3911,7 +3911,7 @@ $ui-header-logo-wordmark-width: 99px; &__wrapper { background: $white; - border: 1px solid $ui-secondary-color; + border: 1px solid var(--background-border-color); margin-bottom: 10px; border-radius: 4px; @@ -6298,9 +6298,10 @@ a.status-card { .report-modal, .actions-modal, .compare-history-modal { - background: lighten($ui-secondary-color, 8%); - color: $inverted-text-color; - border-radius: 8px; + background: var(--background-color); + color: $primary-text-color; + border-radius: 4px; + border: 1px solid var(--background-border-color); overflow: hidden; max-width: 90vw; width: 480px; @@ -6344,6 +6345,7 @@ a.status-card { .report-modal { width: 90vw; max-width: 700px; + border: 1px solid var(--background-border-color); } .report-dialog-modal { @@ -6567,7 +6569,7 @@ a.status-card { .report-modal__container { display: flex; - border-top: 1px solid $ui-secondary-color; + border-top: 1px solid var(--background-border-color); @media screen and (width <= 480px) { flex-wrap: wrap; @@ -6625,7 +6627,7 @@ a.status-card { .report-modal__comment { padding: 20px; - border-inline-end: 1px solid $ui-secondary-color; + border-inline-end: 1px solid var(--background-border-color); max-width: 320px; p { @@ -6636,7 +6638,7 @@ a.status-card { .setting-text-label { display: block; - color: $inverted-text-color; + color: $secondary-text-color; font-size: 14px; font-weight: 500; margin-bottom: 10px; From e6f5b36a12396daf0a8166d0d2ea8865cd589ee2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 19:45:16 +0200 Subject: [PATCH 02/36] Update dependency express to v4.20.0 (#31836) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 90 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/yarn.lock b/yarn.lock index 332f6d012ffec3..90e764f49c6bdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5470,9 +5470,9 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.2": - version: 1.20.2 - resolution: "body-parser@npm:1.20.2" +"body-parser@npm:1.20.3": + version: 1.20.3 + resolution: "body-parser@npm:1.20.3" dependencies: bytes: "npm:3.1.2" content-type: "npm:~1.0.5" @@ -5482,11 +5482,11 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" on-finished: "npm:2.4.1" - qs: "npm:6.11.0" + qs: "npm:6.13.0" raw-body: "npm:2.5.2" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: 10c0/06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 + checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 languageName: node linkType: hard @@ -7499,6 +7499,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -8336,41 +8343,41 @@ __metadata: linkType: hard "express@npm:^4.17.1, express@npm:^4.18.2": - version: 4.19.2 - resolution: "express@npm:4.19.2" + version: 4.20.0 + resolution: "express@npm:4.20.0" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.2" + body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" cookie: "npm:0.6.0" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" - encodeurl: "npm:~1.0.2" + encodeurl: "npm:~2.0.0" escape-html: "npm:~1.0.3" etag: "npm:~1.8.1" finalhandler: "npm:1.2.0" fresh: "npm:0.5.2" http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.1" + merge-descriptors: "npm:1.0.3" methods: "npm:~1.1.2" on-finished: "npm:2.4.1" parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.7" + path-to-regexp: "npm:0.1.10" proxy-addr: "npm:~2.0.7" qs: "npm:6.11.0" range-parser: "npm:~1.2.1" safe-buffer: "npm:5.2.1" - send: "npm:0.18.0" - serve-static: "npm:1.15.0" + send: "npm:0.19.0" + serve-static: "npm:1.16.0" setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10c0/e82e2662ea9971c1407aea9fc3c16d6b963e55e3830cd0ef5e00b533feda8b770af4e3be630488ef8a752d7c75c4fcefb15892868eeaafe7353cb9e3e269fdcb + checksum: 10c0/626e440e9feffa3f82ebce5e7dc0ad7a74fa96079994f30048cce450f4855a258abbcabf021f691aeb72154867f0d28440a8498c62888805faf667a829fb65aa languageName: node linkType: hard @@ -11808,10 +11815,10 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec +"merge-descriptors@npm:1.0.3": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 languageName: node linkType: hard @@ -12930,10 +12937,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 +"path-to-regexp@npm:0.1.10": + version: 0.1.10 + resolution: "path-to-regexp@npm:0.1.10" + checksum: 10c0/34196775b9113ca6df88e94c8d83ba82c0e1a2063dd33bfe2803a980da8d49b91db8104f49d5191b44ea780d46b8670ce2b7f4a5e349b0c48c6779b653f1afe4 languageName: node linkType: hard @@ -14335,12 +14342,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.0": - version: 6.11.2 - resolution: "qs@npm:6.11.2" +"qs@npm:6.13.0, qs@npm:^6.11.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" dependencies: - side-channel: "npm:^1.0.4" - checksum: 10c0/4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 + side-channel: "npm:^1.0.6" + checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 languageName: node linkType: hard @@ -15614,6 +15621,27 @@ __metadata: languageName: node linkType: hard +"send@npm:0.19.0": + version: 0.19.0 + resolution: "send@npm:0.19.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 + languageName: node + linkType: hard + "serialize-javascript@npm:^5.0.1": version: 5.0.1 resolution: "serialize-javascript@npm:5.0.1" @@ -15647,15 +15675,15 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" +"serve-static@npm:1.16.0": + version: 1.16.0 + resolution: "serve-static@npm:1.16.0" dependencies: encodeurl: "npm:~1.0.2" escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" send: "npm:0.18.0" - checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + checksum: 10c0/d7a5beca08cc55f92998d8b87c111dd842d642404231c90c11f504f9650935da4599c13256747b0a988442a59851343271fe8e1946e03e92cd79c447b5f3ae01 languageName: node linkType: hard From 9e12fa254e8956f1f8765a76b2c6ea54e47cfdae Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:45:32 +0000 Subject: [PATCH 03/36] Update dependency propshaft to v1 (#31832) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index de541edfbd4247..1f4e042f2bc8c9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -601,7 +601,7 @@ GEM actionmailer (>= 3) net-smtp premailer (~> 1.7, >= 1.7.9) - propshaft (0.9.1) + propshaft (1.0.0) actionpack (>= 7.0.0) activesupport (>= 7.0.0) rack @@ -691,7 +691,7 @@ GEM redlock (1.3.2) redis (>= 3.0.0, < 6.0) regexp_parser (2.9.2) - reline (0.5.9) + reline (0.5.10) io-console (~> 0.5) request_store (1.6.0) rack (>= 1.4) From a3215c0f88bb5f436bed665ad26175923544d9d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 11 Sep 2024 09:29:18 +0200 Subject: [PATCH 04/36] Change inner borders in media galleries in web UI (#31852) --- .../mastodon/components/media_gallery.jsx | 2 +- .../styles/mastodon/components.scss | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/components/media_gallery.jsx b/app/javascript/mastodon/components/media_gallery.jsx index 9a8f85212826fb..ba54b7f903645a 100644 --- a/app/javascript/mastodon/components/media_gallery.jsx +++ b/app/javascript/mastodon/components/media_gallery.jsx @@ -327,7 +327,7 @@ class MediaGallery extends PureComponent { } return ( -
+
{(!visible || uncached) && (
{spoilerButton} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 382491eb743949..5a8fa3e5c0a3ab 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6953,6 +6953,64 @@ a.status-card { grid-template-columns: 50% 50%; grid-template-rows: 50% 50%; gap: 2px; + + &--layout-2 { + .media-gallery__item:nth-child(1) { + border-end-end-radius: 0; + border-start-end-radius: 0; + } + + .media-gallery__item:nth-child(2) { + border-start-start-radius: 0; + border-end-start-radius: 0; + } + } + + &--layout-3 { + .media-gallery__item:nth-child(1) { + border-end-end-radius: 0; + border-start-end-radius: 0; + } + + .media-gallery__item:nth-child(2) { + border-start-start-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; + } + + .media-gallery__item:nth-child(3) { + border-start-start-radius: 0; + border-end-start-radius: 0; + border-start-end-radius: 0; + } + } + + &--layout-4 { + .media-gallery__item:nth-child(1) { + border-end-end-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + } + + .media-gallery__item:nth-child(2) { + border-start-start-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; + } + + .media-gallery__item:nth-child(3) { + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; + } + + .media-gallery__item:nth-child(4) { + border-start-start-radius: 0; + border-end-start-radius: 0; + border-start-end-radius: 0; + } + } } .media-gallery__item { From cee71b9892d14d934f4f14e91c4d7d7843fc13d9 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 11 Sep 2024 03:47:16 -0400 Subject: [PATCH 05/36] Remove `fa_` prefix from status visibility icon method (#31846) --- app/helpers/statuses_helper.rb | 20 +++++++++---------- app/views/admin/reports/_status.html.haml | 2 +- .../filters/statuses/_status_filter.html.haml | 2 +- spec/helpers/statuses_helper_spec.rb | 18 ++++++++--------- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index d956e4fcd8fb29..bba6d64a4783a3 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -4,6 +4,13 @@ module StatusesHelper EMBEDDED_CONTROLLER = 'statuses' EMBEDDED_ACTION = 'embed' + VISIBLITY_ICONS = { + public: 'globe', + unlisted: 'lock_open', + private: 'lock', + direct: 'alternate_email', + }.freeze + def nothing_here(extra_classes = '') content_tag(:div, class: "nothing-here #{extra_classes}") do t('accounts.nothing_here') @@ -57,17 +64,8 @@ def stream_link_target embedded_view? ? '_blank' : nil end - def fa_visibility_icon(status) - case status.visibility - when 'public' - material_symbol 'globe' - when 'unlisted' - material_symbol 'lock_open' - when 'private' - material_symbol 'lock' - when 'direct' - material_symbol 'alternate_email' - end + def visibility_icon(status) + VISIBLITY_ICONS[status.visibility.to_sym] end def embedded_view? diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index 11be38ef845106..e0870503d6c70c 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -33,7 +33,7 @@ = material_symbol('repeat_active') = t('statuses.boosted_from_html', acct_link: admin_account_inline_link_to(status.proper.account)) - else - = fa_visibility_icon(status) + = material_symbol visibility_icon(status) = t("statuses.visibilities.#{status.visibility}") - if status.proper.sensitive? · diff --git a/app/views/filters/statuses/_status_filter.html.haml b/app/views/filters/statuses/_status_filter.html.haml index 31aa9ec23772c1..d0d04638d2aad8 100644 --- a/app/views/filters/statuses/_status_filter.html.haml +++ b/app/views/filters/statuses/_status_filter.html.haml @@ -29,7 +29,7 @@ · = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')) · - = fa_visibility_icon(status) + = material_symbol visibility_icon(status) = t("statuses.visibilities.#{status.visibility}") - if status.sensitive? · diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb index 8809d0afaeb303..edd3e8f2f7ff5a 100644 --- a/spec/helpers/statuses_helper_spec.rb +++ b/spec/helpers/statuses_helper_spec.rb @@ -36,14 +36,14 @@ end end - describe 'fa_visibility_icon' do + describe 'visibility_icon' do context 'with a status that is public' do let(:status) { Status.new(visibility: 'public') } it 'returns the correct fa icon' do - result = helper.fa_visibility_icon(status) + result = helper.visibility_icon(status) - expect(result).to match('material-globe') + expect(result).to match('globe') end end @@ -51,9 +51,9 @@ let(:status) { Status.new(visibility: 'unlisted') } it 'returns the correct fa icon' do - result = helper.fa_visibility_icon(status) + result = helper.visibility_icon(status) - expect(result).to match('material-lock_open') + expect(result).to match('lock_open') end end @@ -61,9 +61,9 @@ let(:status) { Status.new(visibility: 'private') } it 'returns the correct fa icon' do - result = helper.fa_visibility_icon(status) + result = helper.visibility_icon(status) - expect(result).to match('material-lock') + expect(result).to match('lock') end end @@ -71,9 +71,9 @@ let(:status) { Status.new(visibility: 'direct') } it 'returns the correct fa icon' do - result = helper.fa_visibility_icon(status) + result = helper.visibility_icon(status) - expect(result).to match('material-alternate_email') + expect(result).to match('alternate_email') end end end From 9769ffdcc2d93fbb33b5daec52ea02854dbb1574 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:47:37 +0200 Subject: [PATCH 06/36] Update dependency aws-sdk-s3 to v1.161.0 (#31853) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1f4e042f2bc8c9..1564c267b8f154 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -100,16 +100,16 @@ GEM attr_required (1.0.2) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.970.0) - aws-sdk-core (3.203.0) + aws-partitions (1.973.0) + aws-sdk-core (3.204.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.89.0) + aws-sdk-kms (1.90.0) aws-sdk-core (~> 3, >= 3.203.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.160.0) + aws-sdk-s3 (1.161.0) aws-sdk-core (~> 3, >= 3.203.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) From cdcd834f3c08f12eb1b7cbf66aec3c716b232663 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 11 Sep 2024 04:01:32 -0400 Subject: [PATCH 07/36] Add coverage for `AnnualReport::*` source child classes (#31849) --- .../commonly_interacted_with_accounts_spec.rb | 41 +++++++++++++++ .../most_reblogged_accounts_spec.rb | 41 +++++++++++++++ spec/lib/annual_report/most_used_apps_spec.rb | 40 +++++++++++++++ spec/lib/annual_report/percentiles_spec.rb | 44 ++++++++++++++++ spec/lib/annual_report/time_series_spec.rb | 46 +++++++++++++++++ spec/lib/annual_report/top_hashtags_spec.rb | 43 ++++++++++++++++ spec/lib/annual_report/top_statuses_spec.rb | 50 +++++++++++++++++++ .../annual_report/type_distribution_spec.rb | 48 ++++++++++++++++++ 8 files changed, 353 insertions(+) create mode 100644 spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb create mode 100644 spec/lib/annual_report/most_reblogged_accounts_spec.rb create mode 100644 spec/lib/annual_report/most_used_apps_spec.rb create mode 100644 spec/lib/annual_report/percentiles_spec.rb create mode 100644 spec/lib/annual_report/time_series_spec.rb create mode 100644 spec/lib/annual_report/top_hashtags_spec.rb create mode 100644 spec/lib/annual_report/top_statuses_spec.rb create mode 100644 spec/lib/annual_report/type_distribution_spec.rb diff --git a/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb new file mode 100644 index 00000000000000..e99d3cb4a78495 --- /dev/null +++ b/spec/lib/annual_report/commonly_interacted_with_accounts_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::CommonlyInteractedWithAccounts do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + commonly_interacted_with_accounts: be_an(Array).and(be_empty) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:other_account) { Fabricate :account } + + before do + _other = Fabricate :status + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: other_account).id + Fabricate :status, account: account, reply: true, in_reply_to_id: Fabricate(:status, account: other_account).id + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + commonly_interacted_with_accounts: contain_exactly( + include(account_id: other_account.id, count: 2) + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/most_reblogged_accounts_spec.rb b/spec/lib/annual_report/most_reblogged_accounts_spec.rb new file mode 100644 index 00000000000000..0280ba19928755 --- /dev/null +++ b/spec/lib/annual_report/most_reblogged_accounts_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::MostRebloggedAccounts do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + most_reblogged_accounts: be_an(Array).and(be_empty) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:other_account) { Fabricate :account } + + before do + _other = Fabricate :status + Fabricate :status, account: account, reblog: Fabricate(:status, account: other_account) + Fabricate :status, account: account, reblog: Fabricate(:status, account: other_account) + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + most_reblogged_accounts: contain_exactly( + include(account_id: other_account.id, count: 2) + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/most_used_apps_spec.rb b/spec/lib/annual_report/most_used_apps_spec.rb new file mode 100644 index 00000000000000..d2fcecc4d8130c --- /dev/null +++ b/spec/lib/annual_report/most_used_apps_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::MostUsedApps do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + most_used_apps: be_an(Array).and(be_empty) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:application) { Fabricate :application } + + before do + _other = Fabricate :status + Fabricate.times 2, :status, account: account, application: application + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + most_used_apps: contain_exactly( + include(name: application.name, count: 2) + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/percentiles_spec.rb b/spec/lib/annual_report/percentiles_spec.rb new file mode 100644 index 00000000000000..1d1df3166b78e9 --- /dev/null +++ b/spec/lib/annual_report/percentiles_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::Percentiles do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + percentiles: include( + followers: 0, + statuses: 0 + ) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + before do + Fabricate.times 2, :status # Others as `account` + Fabricate.times 2, :follow # Others as `target_account` + Fabricate.times 2, :status, account: account + Fabricate.times 2, :follow, target_account: account + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + percentiles: include( + followers: 50, + statuses: 50 + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/time_series_spec.rb b/spec/lib/annual_report/time_series_spec.rb new file mode 100644 index 00000000000000..219d6c08347a28 --- /dev/null +++ b/spec/lib/annual_report/time_series_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::TimeSeries do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + time_series: match( + include(followers: 0, following: 0, month: 1, statuses: 0) + ) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:month_one_date) { DateTime.new(Time.zone.now.year, 1, 1, 12, 12, 12) } + + let(:tag) { Fabricate :tag } + + before do + _other = Fabricate :status + Fabricate :status, account: account, created_at: month_one_date + Fabricate :follow, account: account, created_at: month_one_date + Fabricate :follow, target_account: account, created_at: month_one_date + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + time_series: match( + include(followers: 1, following: 1, month: 1, statuses: 1) + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/top_hashtags_spec.rb b/spec/lib/annual_report/top_hashtags_spec.rb new file mode 100644 index 00000000000000..58a915218467de --- /dev/null +++ b/spec/lib/annual_report/top_hashtags_spec.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::TopHashtags do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + top_hashtags: be_an(Array).and(be_empty) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:tag) { Fabricate :tag } + + before do + _other = Fabricate :status + first = Fabricate :status, account: account + first.tags << tag + last = Fabricate :status, account: account + last.tags << tag + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + top_hashtags: contain_exactly( + include(name: tag.name, count: 2) + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/top_statuses_spec.rb b/spec/lib/annual_report/top_statuses_spec.rb new file mode 100644 index 00000000000000..b956b039735786 --- /dev/null +++ b/spec/lib/annual_report/top_statuses_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::TopStatuses do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + top_statuses: include( + by_reblogs: be_nil, + by_favourites: be_nil, + by_replies: be_nil + ) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + let(:reblogged_status) { Fabricate :status, account: account } + let(:favourited_status) { Fabricate :status, account: account } + let(:replied_status) { Fabricate :status, account: account } + + before do + _other = Fabricate :status + reblogged_status.status_stat.update(reblogs_count: 123) + favourited_status.status_stat.update(favourites_count: 123) + replied_status.status_stat.update(replies_count: 123) + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + top_statuses: include( + by_reblogs: reblogged_status.id, + by_favourites: favourited_status.id, + by_replies: replied_status.id + ) + ) + end + end + end +end diff --git a/spec/lib/annual_report/type_distribution_spec.rb b/spec/lib/annual_report/type_distribution_spec.rb new file mode 100644 index 00000000000000..89a31fb20718de --- /dev/null +++ b/spec/lib/annual_report/type_distribution_spec.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AnnualReport::TypeDistribution do + describe '#generate' do + subject { described_class.new(account, Time.zone.now.year) } + + context 'with an inactive account' do + let(:account) { Fabricate :account } + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + type_distribution: include( + total: 0, + reblogs: 0, + replies: 0, + standalone: 0 + ) + ) + end + end + + context 'with an active account' do + let(:account) { Fabricate :account } + + before do + _other = Fabricate :status + Fabricate :status, reblog: Fabricate(:status), account: account + Fabricate :status, in_reply_to_id: Fabricate(:status).id, account: account, reply: true + Fabricate :status, account: account + end + + it 'builds a report for an account' do + expect(subject.generate) + .to include( + type_distribution: include( + total: 3, + reblogs: 1, + replies: 1, + standalone: 1 + ) + ) + end + end + end +end From 2babfafaffd56ff69b6213f3a550c7d0b3d3283c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 10:18:10 +0200 Subject: [PATCH 08/36] New Crowdin Translations (automated) (#31855) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/an.json | 1 - app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/ast.json | 1 - app/javascript/mastodon/locales/be.json | 1 - app/javascript/mastodon/locales/bg.json | 1 - app/javascript/mastodon/locales/bn.json | 1 - app/javascript/mastodon/locales/br.json | 1 - app/javascript/mastodon/locales/ca.json | 2 +- app/javascript/mastodon/locales/ckb.json | 1 - app/javascript/mastodon/locales/co.json | 1 - app/javascript/mastodon/locales/cs.json | 1 - app/javascript/mastodon/locales/cy.json | 1 - app/javascript/mastodon/locales/da.json | 2 +- app/javascript/mastodon/locales/de.json | 2 +- app/javascript/mastodon/locales/el.json | 1 - app/javascript/mastodon/locales/en-GB.json | 4 +- app/javascript/mastodon/locales/eo.json | 1 - app/javascript/mastodon/locales/es-AR.json | 1 - app/javascript/mastodon/locales/es-MX.json | 1 - app/javascript/mastodon/locales/es.json | 1 - app/javascript/mastodon/locales/et.json | 1 - app/javascript/mastodon/locales/eu.json | 1 - app/javascript/mastodon/locales/fa.json | 1 - app/javascript/mastodon/locales/fi.json | 2 +- app/javascript/mastodon/locales/fo.json | 4 +- app/javascript/mastodon/locales/fr-CA.json | 1 - app/javascript/mastodon/locales/fr.json | 1 - app/javascript/mastodon/locales/fy.json | 1 - app/javascript/mastodon/locales/ga.json | 1 - app/javascript/mastodon/locales/gd.json | 1 - app/javascript/mastodon/locales/gl.json | 6 +-- app/javascript/mastodon/locales/he.json | 2 +- app/javascript/mastodon/locales/hi.json | 1 + app/javascript/mastodon/locales/hr.json | 1 - app/javascript/mastodon/locales/hu.json | 2 +- app/javascript/mastodon/locales/hy.json | 1 - app/javascript/mastodon/locales/ia.json | 3 +- app/javascript/mastodon/locales/id.json | 1 - app/javascript/mastodon/locales/ie.json | 1 - app/javascript/mastodon/locales/io.json | 1 - app/javascript/mastodon/locales/is.json | 4 +- app/javascript/mastodon/locales/it.json | 2 +- app/javascript/mastodon/locales/ja.json | 1 - app/javascript/mastodon/locales/ka.json | 1 - app/javascript/mastodon/locales/kab.json | 1 - app/javascript/mastodon/locales/kk.json | 1 - app/javascript/mastodon/locales/ko.json | 22 +++++------ app/javascript/mastodon/locales/ku.json | 1 - app/javascript/mastodon/locales/kw.json | 1 - app/javascript/mastodon/locales/la.json | 1 - app/javascript/mastodon/locales/lad.json | 1 - app/javascript/mastodon/locales/lt.json | 2 +- app/javascript/mastodon/locales/lv.json | 1 - app/javascript/mastodon/locales/ms.json | 1 - app/javascript/mastodon/locales/my.json | 1 - app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/nn.json | 4 +- app/javascript/mastodon/locales/no.json | 1 - app/javascript/mastodon/locales/oc.json | 1 - app/javascript/mastodon/locales/pl.json | 2 +- app/javascript/mastodon/locales/pt-BR.json | 4 +- app/javascript/mastodon/locales/pt-PT.json | 1 - app/javascript/mastodon/locales/ro.json | 1 - app/javascript/mastodon/locales/ru.json | 1 - app/javascript/mastodon/locales/sa.json | 1 - app/javascript/mastodon/locales/sc.json | 1 - app/javascript/mastodon/locales/sco.json | 1 - app/javascript/mastodon/locales/sk.json | 1 - app/javascript/mastodon/locales/sl.json | 1 - app/javascript/mastodon/locales/sq.json | 4 +- app/javascript/mastodon/locales/sr-Latn.json | 1 - app/javascript/mastodon/locales/sr.json | 1 - app/javascript/mastodon/locales/sv.json | 2 +- app/javascript/mastodon/locales/ta.json | 1 - app/javascript/mastodon/locales/te.json | 1 - app/javascript/mastodon/locales/th.json | 1 - app/javascript/mastodon/locales/tok.json | 1 - app/javascript/mastodon/locales/tr.json | 2 +- app/javascript/mastodon/locales/uk.json | 5 ++- app/javascript/mastodon/locales/uz.json | 1 - app/javascript/mastodon/locales/vi.json | 1 - app/javascript/mastodon/locales/zgh.json | 1 - app/javascript/mastodon/locales/zh-CN.json | 2 +- app/javascript/mastodon/locales/zh-HK.json | 1 - app/javascript/mastodon/locales/zh-TW.json | 2 +- config/locales/activerecord.ca.yml | 6 +++ config/locales/activerecord.da.yml | 6 +++ config/locales/activerecord.de.yml | 6 +++ config/locales/activerecord.en-GB.yml | 6 +++ config/locales/activerecord.fi.yml | 6 +++ config/locales/activerecord.fo.yml | 6 +++ config/locales/activerecord.gl.yml | 6 +++ config/locales/activerecord.he.yml | 6 +++ config/locales/activerecord.hu.yml | 6 +++ config/locales/activerecord.ia.yml | 5 +++ config/locales/activerecord.is.yml | 6 +++ config/locales/activerecord.it.yml | 6 +++ config/locales/activerecord.lt.yml | 6 +++ config/locales/activerecord.nl.yml | 6 +++ config/locales/activerecord.nn.yml | 6 +++ config/locales/activerecord.pl.yml | 6 +++ config/locales/activerecord.pt-BR.yml | 6 +++ config/locales/activerecord.sv.yml | 2 + config/locales/activerecord.tr.yml | 6 +++ config/locales/activerecord.uk.yml | 6 +++ config/locales/activerecord.zh-CN.yml | 6 +++ config/locales/activerecord.zh-TW.yml | 6 +++ config/locales/ca.yml | 20 ++++++++++ config/locales/da.yml | 7 ++++ config/locales/de.yml | 8 ++++ config/locales/en-GB.yml | 41 ++++++++++++++++++++ config/locales/fi.yml | 5 +++ config/locales/fo.yml | 8 ++++ config/locales/gl.yml | 7 ++++ config/locales/he.yml | 8 ++++ config/locales/hu.yml | 10 ++++- config/locales/ia.yml | 6 +++ config/locales/is.yml | 8 ++++ config/locales/it.yml | 7 ++++ config/locales/lt.yml | 8 ++++ config/locales/nl.yml | 7 ++++ config/locales/nn.yml | 10 +++++ config/locales/pl.yml | 8 ++++ config/locales/pt-BR.yml | 11 ++++++ config/locales/simple_form.ca.yml | 2 + config/locales/simple_form.da.yml | 2 + config/locales/simple_form.de.yml | 2 + config/locales/simple_form.en-GB.yml | 3 ++ config/locales/simple_form.fi.yml | 1 + config/locales/simple_form.fo.yml | 2 + config/locales/simple_form.gl.yml | 2 + config/locales/simple_form.he.yml | 2 + config/locales/simple_form.hu.yml | 2 + config/locales/simple_form.ia.yml | 1 + config/locales/simple_form.is.yml | 2 + config/locales/simple_form.it.yml | 2 + config/locales/simple_form.lt.yml | 2 + config/locales/simple_form.nl.yml | 2 + config/locales/simple_form.nn.yml | 3 ++ config/locales/simple_form.pl.yml | 2 + config/locales/simple_form.pt-BR.yml | 3 ++ config/locales/simple_form.tr.yml | 2 + config/locales/simple_form.uk.yml | 2 + config/locales/simple_form.zh-CN.yml | 2 + config/locales/simple_form.zh-TW.yml | 2 + config/locales/sq.yml | 1 + config/locales/sv.yml | 4 ++ config/locales/tr.yml | 9 ++++- config/locales/uk.yml | 8 ++++ config/locales/zh-CN.yml | 7 ++++ config/locales/zh-TW.yml | 7 ++++ 151 files changed, 435 insertions(+), 99 deletions(-) diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index 7974cea6404b57..893882fe7a3a8d 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -308,7 +308,6 @@ "lists.search": "Buscar entre la chent a la quala sigues", "lists.subheading": "Las tuyas listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", - "media_gallery.toggle_visible": "{number, plural, one {Amaga la imachen} other {Amaga las imáchens}}", "moved_to_account_banner.text": "La tuya cuenta {disabledAccount} ye actualment deshabilitada perque t'has mudau a {movedToAccount}.", "navigation_bar.about": "Sobre", "navigation_bar.blocks": "Usuarios blocaus", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 722f2bc98b9648..0dbeb0a1902dad 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -443,7 +443,6 @@ "lists.subheading": "قوائمك", "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}", "loading_indicator.label": "جاري التحميل…", - "media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}", "moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.", "mute_modal.hide_from_notifications": "إخفاء من قائمة الإشعارات", "mute_modal.hide_options": "إخفاء الخيارات", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 74eb7021d34e05..507703023c2bb7 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -268,7 +268,6 @@ "lists.search": "Buscar ente los perfiles que sigues", "lists.subheading": "Les tos llistes", "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}", - "media_gallery.toggle_visible": "{number, plural, one {Anubrir la imaxe} other {Anubrir les imáxenes}}", "navigation_bar.about": "Tocante a", "navigation_bar.blocks": "Perfiles bloquiaos", "navigation_bar.bookmarks": "Marcadores", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 57431b0a5731f6..412eae14818f80 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -437,7 +437,6 @@ "lists.subheading": "Вашыя спісы", "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}", "loading_indicator.label": "Загрузка…", - "media_gallery.toggle_visible": "{number, plural, one {Схаваць відарыс} other {Схаваць відарысы}}", "moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.", "mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў", "mute_modal.hide_options": "Схаваць опцыі", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 828092d43033a3..b89b539dcfb039 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -444,7 +444,6 @@ "lists.subheading": "Вашите списъци", "load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}", "loading_indicator.label": "Зареждане…", - "media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}", "moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.", "mute_modal.hide_from_notifications": "Скриване от известията", "mute_modal.hide_options": "Скриване на възможностите", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 584bf303b126ac..df97abdff5109b 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -288,7 +288,6 @@ "lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন", "lists.subheading": "আপনার তালিকা", "load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}", - "media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান", "navigation_bar.about": "পরিচিতি", "navigation_bar.blocks": "বন্ধ করা ব্যবহারকারী", "navigation_bar.bookmarks": "বুকমার্ক", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index c8bb4975dedf10..226ff756ffe9d3 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -360,7 +360,6 @@ "lists.subheading": "Ho listennoù", "load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}", "loading_indicator.label": "O kargañ…", - "media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}", "navigation_bar.about": "Diwar-benn", "navigation_bar.blocks": "Implijer·ezed·ien berzet", "navigation_bar.bookmarks": "Sinedoù", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5981c1df843b1c..91f28bd1514d97 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -457,7 +457,7 @@ "lists.subheading": "Les teves llistes", "load_pending": "{count, plural, one {# element nou} other {# elements nous}}", "loading_indicator.label": "Es carrega…", - "media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}", + "media_gallery.hide": "Amaga", "moved_to_account_banner.text": "El teu compte {disabledAccount} està desactivat perquè l'has mogut a {movedToAccount}.", "mute_modal.hide_from_notifications": "Amaga de les notificacions", "mute_modal.hide_options": "Amaga les opcions", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 9def7533aea657..61b81c9f312595 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -355,7 +355,6 @@ "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", "lists.subheading": "لیستەکانت", "load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}", - "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}", "moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.", "navigation_bar.about": "دەربارە", "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 3a72ecd3fb111b..180616b782ec08 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -214,7 +214,6 @@ "lists.search": "Circà indè i vostr'abbunamenti", "lists.subheading": "E vo liste", "load_pending": "{count, plural, one {# entrata nova} other {# entrate nove}}", - "media_gallery.toggle_visible": "Piattà {number, plural, one {ritrattu} other {ritratti}}", "navigation_bar.blocks": "Utilizatori bluccati", "navigation_bar.bookmarks": "Segnalibri", "navigation_bar.community_timeline": "Linea pubblica lucale", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 116a9c01482d40..8dd8f31fa82686 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -435,7 +435,6 @@ "lists.subheading": "Vaše seznamy", "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}", "loading_indicator.label": "Načítání…", - "media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}", "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně deaktivován, protože jste se přesunul/a na {movedToAccount}.", "mute_modal.hide_from_notifications": "Skrýt z notifikací", "mute_modal.hide_options": "Skrýt možnosti", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 158f31aeb3a6bf..d34b7a970d7a8a 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -457,7 +457,6 @@ "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}", "loading_indicator.label": "Yn llwytho…", - "media_gallery.toggle_visible": "{number, plural, one {Cuddio delwedd} other {Cuddio delwedd}}", "moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.", "mute_modal.hide_from_notifications": "Cuddio rhag hysbysiadau", "mute_modal.hide_options": "Cuddio'r dewis", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 4155dc9fc5cf3f..dea313ffed4ce3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -457,7 +457,7 @@ "lists.subheading": "Dine lister", "load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}", "loading_indicator.label": "Indlæser…", - "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}", + "media_gallery.hide": "Skjul", "moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.", "mute_modal.hide_from_notifications": "Skjul fra notifikationer", "mute_modal.hide_options": "Skjul valgmuligheder", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index e37a5954698fa5..46bb08d7cb5938 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -457,7 +457,7 @@ "lists.subheading": "Deine Listen", "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}", "loading_indicator.label": "Wird geladen …", - "media_gallery.toggle_visible": "{number, plural, one {Medium ausblenden} other {Medien ausblenden}}", + "media_gallery.hide": "Ausblenden", "moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.", "mute_modal.hide_from_notifications": "Benachrichtigungen ausblenden", "mute_modal.hide_options": "Einstellungen ausblenden", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index a3adaaf9d11573..64a603923ecc36 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -452,7 +452,6 @@ "lists.subheading": "Οι λίστες σου", "load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}", "loading_indicator.label": "Φόρτωση…", - "media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}", "moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.", "mute_modal.hide_from_notifications": "Απόκρυψη από ειδοποιήσεις", "mute_modal.hide_options": "Απόκρυψη επιλογών", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index e9007c8654fc27..c727b8e49faf3d 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -457,7 +457,7 @@ "lists.subheading": "Your lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Loading…", - "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", + "media_gallery.hide": "Hide", "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.", "mute_modal.hide_from_notifications": "Hide from notifications", "mute_modal.hide_options": "Hide options", @@ -780,6 +780,7 @@ "status.bookmark": "Bookmark", "status.cancel_reblog_private": "Unboost", "status.cannot_reblog": "This post cannot be boosted", + "status.continued_thread": "Continued thread", "status.copy": "Copy link to status", "status.delete": "Delete", "status.detailed_status": "Detailed conversation view", @@ -813,6 +814,7 @@ "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", "status.remove_bookmark": "Remove bookmark", + "status.replied_in_thread": "Replied in thread", "status.replied_to": "Replied to {name}", "status.reply": "Reply", "status.replyAll": "Reply to thread", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 40eee9805aff5e..d8ec27748e94f4 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -390,7 +390,6 @@ "lists.subheading": "Viaj listoj", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", "loading_indicator.label": "Ŝargado…", - "media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}", "moved_to_account_banner.text": "Via konto {disabledAccount} estas malvalidigita ĉar vi movis ĝin al {movedToAccount}.", "navigation_bar.about": "Pri", "navigation_bar.advanced_interface": "Malfermi altnivelan retpaĝan interfacon", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 20d93ed011d008..a0f91c47608a68 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -457,7 +457,6 @@ "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}", "loading_indicator.label": "Cargando…", - "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}", "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar en las notificaciones", "mute_modal.hide_options": "Ocultar opciones", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 348300f7289d59..63f3d53812ca67 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -457,7 +457,6 @@ "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", - "media_gallery.toggle_visible": "Cambiar visibilidad", "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar de las notificaciones", "mute_modal.hide_options": "Ocultar opciones", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 85b160d7a8fdbf..b01eb68222a294 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -457,7 +457,6 @@ "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "loading_indicator.label": "Cargando…", - "media_gallery.toggle_visible": "Cambiar visibilidad", "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar de las notificaciones", "mute_modal.hide_options": "Ocultar opciones", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index d0fc80e60c8b81..ca37a152fe593c 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -457,7 +457,6 @@ "lists.subheading": "Sinu nimekirjad", "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}", "loading_indicator.label": "Laadimine…", - "media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}", "moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.", "mute_modal.hide_from_notifications": "Peida teavituste hulgast", "mute_modal.hide_options": "Peida valikud", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index f169e2905b0b77..15dd63486b603b 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -457,7 +457,6 @@ "lists.subheading": "Zure zerrendak", "load_pending": "{count, plural, one {elementu berri #} other {# elementu berri}}", "loading_indicator.label": "Kargatzen…", - "media_gallery.toggle_visible": "Txandakatu ikusgaitasuna", "moved_to_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan, {movedToAccount} kontura aldatu zinelako.", "mute_modal.hide_from_notifications": "Ezkutatu jakinarazpenetatik", "mute_modal.hide_options": "Ezkutatu aukerak", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 50c376b3bd35af..d2b520e1d2e8c3 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -447,7 +447,6 @@ "lists.subheading": "سیاهه‌هایتان", "load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}", "loading_indicator.label": "در حال بارگذاری…", - "media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}", "moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.", "mute_modal.hide_from_notifications": "نهفتن از آگاهی‌ها", "mute_modal.hide_options": "گزینه‌های نهفتن", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 8f9cc5fe4d2f44..d8c5b7204050d6 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -457,7 +457,7 @@ "lists.subheading": "Omat listasi", "load_pending": "{count, plural, one {# uusi kohde} other {# uutta kohdetta}}", "loading_indicator.label": "Ladataan…", - "media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}", + "media_gallery.hide": "Piilota", "moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.", "mute_modal.hide_from_notifications": "Piilota ilmoituksista", "mute_modal.hide_options": "Piilota vaihtoehdot", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index d4e5d9ad54ebe8..6e7eb3b7c28459 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -457,7 +457,7 @@ "lists.subheading": "Tínir listar", "load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}", "loading_indicator.label": "Innlesur…", - "media_gallery.toggle_visible": "{number, plural, one {Fjal mynd} other {Fjal myndir}}", + "media_gallery.hide": "Fjal", "moved_to_account_banner.text": "Konta tín {disabledAccount} er í løtuni óvirkin, tí tú flutti til {movedToAccount}.", "mute_modal.hide_from_notifications": "Fjal boð", "mute_modal.hide_options": "Fjal valmøguleikar", @@ -780,6 +780,7 @@ "status.bookmark": "Goym", "status.cancel_reblog_private": "Strika stimbran", "status.cannot_reblog": "Tað ber ikki til at stimbra hendan postin", + "status.continued_thread": "Framhaldandi tráður", "status.copy": "Kopiera leinki til postin", "status.delete": "Strika", "status.detailed_status": "Útgreinað samrøðusýni", @@ -813,6 +814,7 @@ "status.reblogs.empty": "Eingin hevur stimbrað hendan postin enn. Tá onkur stimbrar postin, verður hann sjónligur her.", "status.redraft": "Strika & ger nýggja kladdu", "status.remove_bookmark": "Gloym", + "status.replied_in_thread": "Svaraði í tráðnum", "status.replied_to": "Svaraði {name}", "status.reply": "Svara", "status.replyAll": "Svara tráðnum", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index a1d4061ebab448..9f51aaaa7d5315 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -456,7 +456,6 @@ "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", - "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déménagé sur {movedToAccount}.", "mute_modal.hide_from_notifications": "Cacher des notifications", "mute_modal.hide_options": "Masquer les options", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 9f55634b290845..5bcc1c946b6e23 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -456,7 +456,6 @@ "lists.subheading": "Vos listes", "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", - "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}", "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.", "mute_modal.hide_from_notifications": "Cacher des notifications", "mute_modal.hide_options": "Masquer les options", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index bb409b63c19fc7..badd6a1c216d9e 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -457,7 +457,6 @@ "lists.subheading": "Jo listen", "load_pending": "{count, plural, one {# nij item} other {# nije items}}", "loading_indicator.label": "Lade…", - "media_gallery.toggle_visible": "{number, plural, one {ôfbylding ferstopje} other {ôfbyldingen ferstopje}}", "moved_to_account_banner.text": "Omdat jo nei {movedToAccount} ferhuze binne is jo account {disabledAccount} op dit stuit útskeakele.", "mute_modal.hide_from_notifications": "Meldingen ferstopje", "mute_modal.hide_options": "Opsjes ferstopje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index b51d4adf68150d..95bb2938549168 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -457,7 +457,6 @@ "lists.subheading": "Do liostaí", "load_pending": "{count, plural, one {# mír nua} two {# mír nua} few {# mír nua} many {# mír nua} other {# mír nua}}", "loading_indicator.label": "Á lódáil…", - "media_gallery.toggle_visible": "{number, plural, one {Folaigh íomhá} two {Folaigh íomhánna} few {Folaigh íomhánna} many {Folaigh íomhánna} other {Folaigh íomhánna}}", "moved_to_account_banner.text": "Tá do chuntas {disabledAccount} díchumasaithe faoi láthair toisc gur bhog tú go {movedToAccount}.", "mute_modal.hide_from_notifications": "Folaigh ó fhógraí", "mute_modal.hide_options": "Folaigh roghanna", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 1090df0881013c..e2f67bc296accc 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -457,7 +457,6 @@ "lists.subheading": "Na liostaichean agad", "load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}", "loading_indicator.label": "’Ga luchdadh…", - "media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}", "moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.", "mute_modal.hide_from_notifications": "Falaich o na brathan", "mute_modal.hide_options": "Roghainnean falaich", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index df477fe9e24d39..b0b530e88f09bd 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -315,7 +315,7 @@ "follow_suggestions.curated_suggestion": "Suxestións do Servidor", "follow_suggestions.dismiss": "Non mostrar máis", "follow_suggestions.featured_longer": "Elección persoal do equipo de {domain}", - "follow_suggestions.friends_of_friends_longer": "Popular entre as persoas que sigues", + "follow_suggestions.friends_of_friends_longer": "Popular entre as persoas que segues", "follow_suggestions.hints.featured": "Este perfil foi escollido pola administración de {domain}.", "follow_suggestions.hints.friends_of_friends": "Este perfil é popular entre as persoas que segues.", "follow_suggestions.hints.most_followed": "Este perfil é un dos máis seguidos en {domain}.", @@ -457,9 +457,9 @@ "lists.subheading": "As túas listaxes", "load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}", "loading_indicator.label": "Estase a cargar…", - "media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}", + "media_gallery.hide": "Agochar", "moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.", - "mute_modal.hide_from_notifications": "Ocultar nas notificacións", + "mute_modal.hide_from_notifications": "Agochar nas notificacións", "mute_modal.hide_options": "Opcións ao ocultar", "mute_modal.indefinite": "Ata que as reactive", "mute_modal.show_options": "Mostrar opcións", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 47fc444e88e78f..80d9f054ccee81 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -457,7 +457,7 @@ "lists.subheading": "הרשימות שלך", "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}", "loading_indicator.label": "בטעינה…", - "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}", + "media_gallery.hide": "להסתיר", "moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.", "mute_modal.hide_from_notifications": "להסתיר מהתראות", "mute_modal.hide_options": "הסתרת אפשרויות", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 0b402517300d23..58b04a20cd363f 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -367,6 +367,7 @@ "lists.replies_policy.none": "कोई नहीं", "lists.replies_policy.title": "इसके जवाब दिखाएं:", "lists.subheading": "आपकी सूचियाँ", + "media_gallery.hide": "छिपाएं", "navigation_bar.about": "विवरण", "navigation_bar.blocks": "ब्लॉक्ड यूज़र्स", "navigation_bar.bookmarks": "पुस्तकचिह्न:", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 0b42c493381dd3..9f5782767b6ff0 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -310,7 +310,6 @@ "lists.replies_policy.none": "Nitko", "lists.search": "Traži među praćenim ljudima", "lists.subheading": "Vaše liste", - "media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}", "navigation_bar.about": "O aplikaciji", "navigation_bar.advanced_interface": "Otvori u naprednom web sučelju", "navigation_bar.blocks": "Blokirani korisnici", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index f0f08ca50c18a1..1e4e02cb9de9a3 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -457,7 +457,7 @@ "lists.subheading": "Saját listák", "load_pending": "{count, plural, one {# új elem} other {# új elem}}", "loading_indicator.label": "Betöltés…", - "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}", + "media_gallery.hide": "Elrejtés", "moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.", "mute_modal.hide_from_notifications": "Elrejtés az értesítések közül", "mute_modal.hide_options": "Beállítások elrejtése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 1d82e884ff8647..d1475338fd81a1 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -289,7 +289,6 @@ "lists.search": "Փնտրել քո հետեւած մարդկանց մէջ", "lists.subheading": "Քո ցանկերը", "load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}", - "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել", "navigation_bar.about": "Մասին", "navigation_bar.blocks": "Արգելափակուած օգտատէրեր", "navigation_bar.bookmarks": "Էջանիշեր", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 8a448920c15192..9d7e3ff2c7c5cc 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -447,7 +447,7 @@ "lists.subheading": "Tu listas", "load_pending": "{count, plural, one {# nove entrata} other {# nove entratas}}", "loading_indicator.label": "Cargante…", - "media_gallery.toggle_visible": "{number, plural, one {Celar imagine} other {Celar imagines}}", + "media_gallery.hide": "Celar", "moved_to_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate perque tu ha cambiate de conto a {movedToAccount}.", "mute_modal.hide_from_notifications": "Celar in notificationes", "mute_modal.hide_options": "Celar optiones", @@ -784,6 +784,7 @@ "status.reblogs.empty": "Necuno ha ancora impulsate iste message. Quando alcuno lo face, le impulsos apparera hic.", "status.redraft": "Deler e reconciper", "status.remove_bookmark": "Remover marcapagina", + "status.replied_in_thread": "Respondite in le discussion", "status.replied_to": "Respondite a {name}", "status.reply": "Responder", "status.replyAll": "Responder al discussion", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 29f0bfda9d331d..3e2cc03145872c 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -403,7 +403,6 @@ "lists.subheading": "Daftar Anda", "load_pending": "{count, plural, other {# item baru}}", "loading_indicator.label": "Memuat…", - "media_gallery.toggle_visible": "Tampil/Sembunyikan", "moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.", "mute_modal.hide_options": "Sembunyikan opsi", "mute_modal.title": "Bisukan pengguna?", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index 4002767cf9c4e6..7a176dfbb621ee 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -419,7 +419,6 @@ "lists.subheading": "Tui listes", "load_pending": "{count, plural, one {# nov element} other {# nov elementes}}", "loading_indicator.label": "Cargant…", - "media_gallery.toggle_visible": "{number, plural, one {Celar image} other {Celar images}}", "moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.", "mute_modal.hide_from_notifications": "Celar de notificationes", "mute_modal.hide_options": "Celar optiones", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 1329875185ee90..d0ccb923bae205 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -362,7 +362,6 @@ "lists.subheading": "Vua listi", "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}", "loading_indicator.label": "Kargante…", - "media_gallery.toggle_visible": "Chanjar videbleso", "moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.", "navigation_bar.about": "Pri co", "navigation_bar.advanced_interface": "Apertez per retintervizajo", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 54fbee48e62dfd..83932f1b4ba251 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -457,7 +457,7 @@ "lists.subheading": "Listarnir þínir", "load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}", "loading_indicator.label": "Hleð inn…", - "media_gallery.toggle_visible": "Víxla sýnileika", + "media_gallery.hide": "Fela", "moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.", "mute_modal.hide_from_notifications": "Fela úr tilkynningum", "mute_modal.hide_options": "Fela valkosti", @@ -780,6 +780,7 @@ "status.bookmark": "Bókamerki", "status.cancel_reblog_private": "Taka úr endurbirtingu", "status.cannot_reblog": "Þessa færslu er ekki hægt að endurbirta", + "status.continued_thread": "Hélt samtali áfram", "status.copy": "Afrita tengil í færslu", "status.delete": "Eyða", "status.detailed_status": "Nákvæm spjallþráðasýn", @@ -813,6 +814,7 @@ "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og endurvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", + "status.replied_in_thread": "Svaraði í samtali", "status.replied_to": "Svaraði til {name}", "status.reply": "Svara", "status.replyAll": "Svara þræði", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 46d1fdd7ab328b..1c8cff5490166b 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -457,7 +457,7 @@ "lists.subheading": "Le tue liste", "load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}", "loading_indicator.label": "Caricamento…", - "media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}", + "media_gallery.hide": "Nascondi", "moved_to_account_banner.text": "Il tuo profilo {disabledAccount} è correntemente disabilitato perché ti sei spostato a {movedToAccount}.", "mute_modal.hide_from_notifications": "Nascondi dalle notifiche", "mute_modal.hide_options": "Nascondi le opzioni", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 489ff9c8e7d55e..60dd8b12ea7cd4 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -457,7 +457,6 @@ "lists.subheading": "あなたのリスト", "load_pending": "{count}件の新着", "loading_indicator.label": "読み込み中…", - "media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}", "moved_to_account_banner.text": "あなたのアカウント『{disabledAccount}』は『{movedToAccount}』に移動したため現在無効になっています。", "mute_modal.hide_from_notifications": "通知をオフにする", "mute_modal.hide_options": "オプションを閉じる", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 5713fe60ee9150..0bd86a24760564 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -153,7 +153,6 @@ "lists.new.title_placeholder": "ახალი სიის სათაური", "lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით", "lists.subheading": "თქვენი სიები", - "media_gallery.toggle_visible": "ხილვადობის ჩართვა", "navigation_bar.blocks": "დაბლოკილი მომხმარებლები", "navigation_bar.community_timeline": "ლოკალური თაიმლაინი", "navigation_bar.compose": "Compose new toot", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index a1e95fd8d17499..ae783b6c246138 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -351,7 +351,6 @@ "lists.subheading": "Tibdarin-ik·im", "load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}", "loading_indicator.label": "Yessalay-d …", - "media_gallery.toggle_visible": "{number, plural, one {Ffer tugna} other {Ffer tugniwin}}", "mute_modal.hide_from_notifications": "Ffer-it deg ulɣuten", "mute_modal.hide_options": "Ffer tinefrunin", "mute_modal.indefinite": "Alamma ssnesreɣ asgugem fell-as", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 85b2fdc005bf02..eace5d95b8c010 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -222,7 +222,6 @@ "lists.search": "Сіз іздеген адамдар арасында іздеу", "lists.subheading": "Тізімдеріңіз", "load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}", - "media_gallery.toggle_visible": "Көрінуді қосу", "navigation_bar.blocks": "Бұғатталғандар", "navigation_bar.bookmarks": "Бетбелгілер", "navigation_bar.community_timeline": "Жергілікті желі", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index b3d3476e4f782c..4c78f4332e8cbe 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -34,9 +34,9 @@ "account.follow_back": "맞팔로우 하기", "account.followers": "팔로워", "account.followers.empty": "아직 아무도 이 사용자를 팔로우하고 있지 않습니다.", - "account.followers_counter": "{count, plural, other {{counter} 팔로워}}", + "account.followers_counter": "{count, plural, other {팔로워 {counter}명}}", "account.following": "팔로잉", - "account.following_counter": "{count, plural, other {{counter} 팔로잉}}", + "account.following_counter": "{count, plural, other {팔로잉 {counter}명}}", "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", "account.go_to_profile": "프로필로 이동", "account.hide_reblogs": "@{name}의 부스트를 숨기기", @@ -62,7 +62,7 @@ "account.requested_follow": "{name} 님이 팔로우 요청을 보냈습니다", "account.share": "@{name}의 프로필 공유", "account.show_reblogs": "@{name}의 부스트 보기", - "account.statuses_counter": "{count, plural, other {{counter} 게시물}}", + "account.statuses_counter": "{count, plural, other {게시물 {counter}개}}", "account.unblock": "차단 해제", "account.unblock_domain": "도메인 {domain} 차단 해제", "account.unblock_short": "차단 해제", @@ -156,7 +156,7 @@ "compose_form.placeholder": "지금 무슨 생각을 하고 있나요?", "compose_form.poll.duration": "투표 기간", "compose_form.poll.multiple": "다중 선택", - "compose_form.poll.option_placeholder": "{option}번째 항목", + "compose_form.poll.option_placeholder": "{number}번째 옵션", "compose_form.poll.single": "단일 선택", "compose_form.poll.switch_to_multiple": "다중 선택이 가능한 투표로 변경", "compose_form.poll.switch_to_single": "단일 선택 투표로 변경", @@ -347,12 +347,12 @@ "hashtag.column_settings.tag_mode.any": "어느것이든", "hashtag.column_settings.tag_mode.none": "이것들을 제외하고", "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다", - "hashtag.counter_by_accounts": "{count, plural, other {{counter} 명의 참여자}}", - "hashtag.counter_by_uses": "{count, plural, other {{counter} 개의 게시물}}", - "hashtag.counter_by_uses_today": "오늘 {count, plural, other {{counter} 개의 게시물}}", - "hashtag.follow": "팔로우", - "hashtag.unfollow": "팔로우 해제", - "hashtags.and_other": "…그리고 {count, plural,other {# 개 더}}", + "hashtag.counter_by_accounts": "{count, plural, other {참여자 {counter}명}}", + "hashtag.counter_by_uses": "{count, plural, other {게시물 {counter}개}}", + "hashtag.counter_by_uses_today": "금일 {count, plural, other {게시물 {counter}개}}", + "hashtag.follow": "해시태그 팔로우", + "hashtag.unfollow": "해시태그 팔로우 해제", + "hashtags.and_other": "…및 {count, plural,other {#개}}", "hints.profiles.followers_may_be_missing": "이 프로필의 팔로워 목록은 일부 누락되었을 수 있습니다.", "hints.profiles.follows_may_be_missing": "이 프로필의 팔로우 목록은 일부 누락되었을 수 있습니다.", "hints.profiles.posts_may_be_missing": "이 프로필의 게시물은 일부 누락되었을 수 있습니다.", @@ -457,7 +457,7 @@ "lists.subheading": "리스트", "load_pending": "{count, plural, other {#}} 개의 새 항목", "loading_indicator.label": "불러오는 중...", - "media_gallery.toggle_visible": "이미지 숨기기", + "media_gallery.hide": "숨기기", "moved_to_account_banner.text": "당신의 계정 {disabledAccount}는 {movedToAccount}로 이동하였기 때문에 현재 비활성화 상태입니다.", "mute_modal.hide_from_notifications": "알림에서 숨기기", "mute_modal.hide_options": "옵션 숨기기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 73cfa69f424c63..d69f4b0d05e1a8 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -313,7 +313,6 @@ "lists.search": "Di navbera kesên ku te dişopînin bigere", "lists.subheading": "Lîsteyên te", "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", - "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}", "moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.", "navigation_bar.about": "Derbar", "navigation_bar.blocks": "Bikarhênerên astengkirî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 0d60d09e30a8be..046910daf8e29c 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -213,7 +213,6 @@ "lists.search": "Hwilas yn-mysk tus a holyewgh", "lists.subheading": "Agas rolyow", "load_pending": "{count, plural, one {# daklennowydh} other {# a daklennow nowydh}}", - "media_gallery.toggle_visible": "Hide {number, plural, one {aven} other {aven}}", "navigation_bar.blocks": "Devnydhyoryon lettys", "navigation_bar.bookmarks": "Folennosow", "navigation_bar.community_timeline": "Amserlin leel", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index dc0796144160bb..d894cc01c68788 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -141,7 +141,6 @@ "lists.new.create": "Addere tabella", "lists.subheading": "Tuae tabulae", "load_pending": "{count, plural, one {# novum item} other {# nova itema}}", - "media_gallery.toggle_visible": "{number, plural, one {Cēla imaginem} other {Cēla imagines}}", "moved_to_account_banner.text": "Tua ratione {disabledAccount} interdum reposita est, quod ad {movedToAccount} migrāvisti.", "mute_modal.you_wont_see_mentions": "Non videbis nuntios quī eōs commemorant.", "navigation_bar.about": "De", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 3d0bfcb4be605d..e63c22ec696f3d 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -418,7 +418,6 @@ "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# muevo elemento} other {# muevos elementos}}", "loading_indicator.label": "Eskargando…", - "media_gallery.toggle_visible": "{number, plural, one {Eskonde imaje} other {Eskonde imajes}}", "moved_to_account_banner.text": "Tu kuento {disabledAccount} esta aktualmente inkapasitado porke transferates a {movedToAccount}.", "mute_modal.hide_from_notifications": "Eskonde de avizos", "mute_modal.hide_options": "Eskonde opsyones", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 55ef2afce86ba1..cc905e3a21ca15 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -457,7 +457,7 @@ "lists.subheading": "Tavo sąrašai", "load_pending": "{count, plural, one {# naujas elementas} few {# nauji elementai} many {# naujo elemento} other {# naujų elementų}}", "loading_indicator.label": "Kraunama…", - "media_gallery.toggle_visible": "{number, plural, one {Slėpti vaizdą} few {Slėpti vaizdus} many {Slėpti vaizdo} other {Slėpti vaizdų}}", + "media_gallery.hide": "Slėpti", "moved_to_account_banner.text": "Tavo paskyra {disabledAccount} šiuo metu išjungta, nes persikėlei į {movedToAccount}.", "mute_modal.hide_from_notifications": "Slėpti nuo pranešimų", "mute_modal.hide_options": "Slėpti parinktis", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 6cd15afbec4364..37dc1d06dbfe97 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -388,7 +388,6 @@ "lists.subheading": "Tavi saraksti", "load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}", "loading_indicator.label": "Ielādē…", - "media_gallery.toggle_visible": "{number, plural, one {Slēpt attēlu} other {Slēpt attēlus}}", "moved_to_account_banner.text": "Tavs konts {disabledAccount} pašlaik ir atspējots, jo Tu pārcēlies uz kontu {movedToAccount}.", "mute_modal.hide_from_notifications": "Paslēpt paziņojumos", "mute_modal.hide_options": "Paslēpt iespējas", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 4a32b1d820d3ed..c6bc630bfefa55 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -383,7 +383,6 @@ "lists.subheading": "Senarai anda", "load_pending": "{count, plural, one {# item baharu} other {# item baharu}}", "loading_indicator.label": "Memuatkan…", - "media_gallery.toggle_visible": "{number, plural, other {Sembunyikan imej}}", "moved_to_account_banner.text": "Akaun anda {disabledAccount} kini dinyahdayakan kerana anda berpindah ke {movedToAccount}.", "navigation_bar.about": "Perihal", "navigation_bar.advanced_interface": "Buka dalam antara muka web lanjutan", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index b042ebbcced531..2127d69baa8022 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -362,7 +362,6 @@ "lists.subheading": "သင့်၏စာရင်းများ", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "လုပ်ဆောင်နေသည်…", - "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "moved_to_account_banner.text": "{movedToAccount} အကောင့်သို့ပြောင်းလဲထားသဖြင့် {disabledAccount} အကောင့်မှာပိတ်ထားသည်", "navigation_bar.about": "အကြောင်း", "navigation_bar.advanced_interface": "အဆင့်မြင့်ဝဘ်ပုံစံ ဖွင့်ပါ", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 7956435361a6a4..e5d8e8d2ebc263 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -457,7 +457,7 @@ "lists.subheading": "Jouw lijsten", "load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}", "loading_indicator.label": "Laden…", - "media_gallery.toggle_visible": "{number, plural, one {afbeelding verbergen} other {afbeeldingen verbergen}}", + "media_gallery.hide": "Verbergen", "moved_to_account_banner.text": "Omdat je naar {movedToAccount} bent verhuisd is jouw account {disabledAccount} momenteel uitgeschakeld.", "mute_modal.hide_from_notifications": "Onder meldingen verbergen", "mute_modal.hide_options": "Opties verbergen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 393946ff18fca4..d21ebffe226eb2 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -457,7 +457,7 @@ "lists.subheading": "Listene dine", "load_pending": "{count, plural, one {# nytt element} other {# nye element}}", "loading_indicator.label": "Lastar…", - "media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}", + "media_gallery.hide": "Gøym", "moved_to_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert fordi du har flytta til {movedToAccount}.", "mute_modal.hide_from_notifications": "Ikkje vis varslingar", "mute_modal.hide_options": "Gøym val", @@ -780,6 +780,7 @@ "status.bookmark": "Set bokmerke", "status.cancel_reblog_private": "Opphev framheving", "status.cannot_reblog": "Du kan ikkje framheva dette innlegget", + "status.continued_thread": "Framhald til tråden", "status.copy": "Kopier lenke til status", "status.delete": "Slett", "status.detailed_status": "Detaljert samtalevisning", @@ -813,6 +814,7 @@ "status.reblogs.empty": "Ingen har framheva dette tutet enno. Om nokon gjer, så dukkar det opp her.", "status.redraft": "Slett & skriv på nytt", "status.remove_bookmark": "Fjern bokmerke", + "status.replied_in_thread": "Svara i tråden", "status.replied_to": "Svarte {name}", "status.reply": "Svar", "status.replyAll": "Svar til tråd", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index bb41754e7d9ed9..b805b9852886bb 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -457,7 +457,6 @@ "lists.subheading": "Dine lister", "load_pending": "{count, plural,one {# ny gjenstand} other {# nye gjenstander}}", "loading_indicator.label": "Laster…", - "media_gallery.toggle_visible": "Veksle synlighet", "moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.", "mute_modal.hide_from_notifications": "Ikke varsle", "mute_modal.hide_options": "Skjul alternativer", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index a4e552ba459832..1d9008dbd1fa0a 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -319,7 +319,6 @@ "lists.subheading": "Vòstras listas", "load_pending": "{count, plural, one {# nòu element} other {# nòu elements}}", "loading_indicator.label": "Cargament…", - "media_gallery.toggle_visible": "Modificar la visibilitat", "navigation_bar.about": "A prepaus", "navigation_bar.advanced_interface": "Dobrir l’interfàcia web avançada", "navigation_bar.blocks": "Personas blocadas", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 6bf6252d70a841..2ef437ef04df5e 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -457,7 +457,7 @@ "lists.subheading": "Twoje listy", "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}", "loading_indicator.label": "Ładowanie…", - "media_gallery.toggle_visible": "Przełącz widoczność", + "media_gallery.hide": "Ukryj", "moved_to_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone, ponieważ zostało przeniesione na {movedToAccount}.", "mute_modal.hide_from_notifications": "Ukryj z powiadomień", "mute_modal.hide_options": "Ukryj opcje", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index aeff65485e0494..9978bf7644d520 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -457,7 +457,7 @@ "lists.subheading": "Suas listas", "load_pending": "{count, plural, one {# novo item} other {# novos items}}", "loading_indicator.label": "Carregando…", - "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}", + "media_gallery.hide": "Ocultar", "moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar das notificações", "mute_modal.hide_options": "Ocultar opções", @@ -780,6 +780,7 @@ "status.bookmark": "Salvar", "status.cancel_reblog_private": "Desfazer boost", "status.cannot_reblog": "Este toot não pode receber boost", + "status.continued_thread": "Continuação da conversa", "status.copy": "Copiar link", "status.delete": "Excluir", "status.detailed_status": "Visão detalhada da conversa", @@ -813,6 +814,7 @@ "status.reblogs.empty": "Nada aqui. Quando alguém der boost, o usuário aparecerá aqui.", "status.redraft": "Excluir e rascunhar", "status.remove_bookmark": "Remover do Salvos", + "status.replied_in_thread": "Respondido na discussão", "status.replied_to": "Em resposta a {name}", "status.reply": "Responder", "status.replyAll": "Responder a conversa", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index fd811d6833a757..24f59931128e58 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -444,7 +444,6 @@ "lists.subheading": "As tuas listas", "load_pending": "{count, plural, one {# novo item} other {# novos itens}}", "loading_indicator.label": "A carregar…", - "media_gallery.toggle_visible": "Alternar visibilidade", "moved_to_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada, porque você migrou para {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar das notificações", "mute_modal.hide_options": "Ocultar opções", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 5b1901fbe0ab64..18380928b34be2 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -355,7 +355,6 @@ "lists.search": "Caută printre persoanele la care ești abonat", "lists.subheading": "Listele tale", "load_pending": "{count, plural, one {# element nou} other {# elemente noi}}", - "media_gallery.toggle_visible": "{number, plural, one {Ascunde imaginea} other {Ascunde imaginile}}", "moved_to_account_banner.text": "Contul tău {disabledAccount} este în acest moment dezactivat deoarece te-ai mutat la {movedToAccount}.", "navigation_bar.about": "Despre", "navigation_bar.advanced_interface": "Deschide în interfața web avansată", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 2c55da90b7576b..ab8974346786ed 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -432,7 +432,6 @@ "lists.subheading": "Ваши списки", "load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}", "loading_indicator.label": "Загрузка…", - "media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}", "moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.", "mute_modal.hide_from_notifications": "Скрыть из уведомлений", "mute_modal.hide_options": "Скрыть параметры", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index 6ca4eafe19395f..ac715e718e88bb 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -319,7 +319,6 @@ "lists.search": "त्वया अनुसारितजनेषु अन्विष्य", "lists.subheading": "तव सूचयः", "load_pending": "{count, plural, one {# नूतनवस्तु} other {# नूतनवस्तूनि}}", - "media_gallery.toggle_visible": "{number, plural, one {चित्रं प्रच्छादय} other {चित्राणि प्रच्छादय}}", "moved_to_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतो यतोहि {movedToAccount} अस्मिन्त्वमसार्षीः।", "navigation_bar.about": "विषये", "navigation_bar.blocks": "निषिद्धभोक्तारः", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 461383191ed571..0e055716e1af82 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -370,7 +370,6 @@ "lists.subheading": "Is listas tuas", "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}", "loading_indicator.label": "Carrighende…", - "media_gallery.toggle_visible": "Cua {number, plural, one {immàgine} other {immàgines}}", "navigation_bar.about": "Informatziones", "navigation_bar.blocks": "Persones blocadas", "navigation_bar.bookmarks": "Sinnalibros", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index e8ae521ae583fa..b1b17b57db2d6c 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -304,7 +304,6 @@ "lists.search": "Seirch amang the fowk ye ken", "lists.subheading": "Yer lists", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}", "moved_to_account_banner.text": "Yer accoont {disabledAccount} is disabilt the noo acause ye flittit tae {movedToAccount}.", "navigation_bar.about": "Aboot", "navigation_bar.blocks": "Dingied uisers", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 3d7c5416c9e8eb..f89e8cf5ab0ab4 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -420,7 +420,6 @@ "lists.subheading": "Vaše zoznamy", "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položiek} other {# nových položiek}}", "loading_indicator.label": "Načítavanie…", - "media_gallery.toggle_visible": "{number, plural, one {Skryť obrázok} other {Skryť obrázky}}", "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálne deaktivovaný, pretože ste sa presunuli na {movedToAccount}.", "mute_modal.hide_from_notifications": "Ukryť z upozornení", "mute_modal.hide_options": "Skryť možnosti", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 6e8ac52df3bc35..4e83b150892cb1 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -437,7 +437,6 @@ "lists.subheading": "Vaši seznami", "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}", "loading_indicator.label": "Nalaganje …", - "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}", "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.", "mute_modal.hide_from_notifications": "Skrijte se pred obvestili", "mute_modal.hide_options": "Skrij možnosti", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 51b7a551c1cd4b..1904c186f7af81 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -457,7 +457,7 @@ "lists.subheading": "Listat tuaja", "load_pending": "{count, plural,one {# objekt i ri }other {# objekte të rinj }}", "loading_indicator.label": "Po ngarkohet…", - "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}", + "media_gallery.hide": "Fshihe", "moved_to_account_banner.text": "Llogaria juaj {disabledAccount} aktualisht është e çaktivizuar, ngaqë kaluat te {movedToAccount}.", "mute_modal.hide_from_notifications": "Fshihe prej njoftimeve", "mute_modal.hide_options": "Fshihi mundësitë", @@ -780,6 +780,7 @@ "status.bookmark": "Faqeruaje", "status.cancel_reblog_private": "Shpërforcojeni", "status.cannot_reblog": "Ky postim s’mund të përforcohet", + "status.continued_thread": "Vazhdoi rrjedhën", "status.copy": "Kopjoje lidhjen për te mesazhi", "status.delete": "Fshije", "status.detailed_status": "Pamje e hollësishme bisede", @@ -813,6 +814,7 @@ "status.reblogs.empty": "Këtë mesazh s’e ka përforcuar njeri deri tani. Kur ta bëjë dikush, kjo do të duket këtu.", "status.redraft": "Fshijeni & rihartojeni", "status.remove_bookmark": "Hiqe faqerojtësin", + "status.replied_in_thread": "U përgjigj te rrjedha", "status.replied_to": "Iu përgjigj {name}", "status.reply": "Përgjigjuni", "status.replyAll": "Përgjigjuni rrjedhës", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index d550f6517c687b..02be70f5bf2e6c 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -424,7 +424,6 @@ "lists.subheading": "Vaše liste", "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}", "loading_indicator.label": "Učitavanje…", - "media_gallery.toggle_visible": "{number, plural, one {Sakrij sliku} few {Sakrij slike} other {Sakrij slike}}", "moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.", "mute_modal.hide_from_notifications": "Sakrij iz obaveštenja", "mute_modal.hide_options": "Sakrij opcije", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index f608d46a20bcc7..dfd10579e6b65e 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -424,7 +424,6 @@ "lists.subheading": "Ваше листе", "load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}", "loading_indicator.label": "Учитавање…", - "media_gallery.toggle_visible": "{number, plural, one {Сакриј слику} few {Сакриј слике} other {Сакриј слике}}", "moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.", "mute_modal.hide_from_notifications": "Сакриј из обавештења", "mute_modal.hide_options": "Сакриј опције", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 76b46f3425d0ff..61cad916cae7f1 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -454,7 +454,7 @@ "lists.subheading": "Dina listor", "load_pending": "{count, plural, one {# nytt objekt} other {# nya objekt}}", "loading_indicator.label": "Laddar…", - "media_gallery.toggle_visible": "Växla synlighet", + "media_gallery.hide": "Dölj", "moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.", "mute_modal.hide_from_notifications": "Dölj från aviseringslistan", "mute_modal.hide_options": "Dölj alternativ", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 4bded45679020a..4f209b7e3ebb03 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -252,7 +252,6 @@ "lists.search": "நீங்கள் பின்தொடரும் நபர்கள் மத்தியில் தேடுதல்", "lists.subheading": "உங்கள் பட்டியல்கள்", "load_pending": "{count, plural,one {# புதியது}other {# புதியவை}}", - "media_gallery.toggle_visible": "நிலைமாற்று தெரியும்", "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்", "navigation_bar.bookmarks": "அடையாளக்குறிகள்", "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 52cb612d86b8b8..a6dc74b290dcf5 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -167,7 +167,6 @@ "lists.new.title_placeholder": "కొత్త జాబితా శీర్షిక", "lists.search": "మీరు అనుసరించే వ్యక్తులలో శోధించండి", "lists.subheading": "మీ జాబితాలు", - "media_gallery.toggle_visible": "దృశ్యమానతను టోగుల్ చేయండి", "navigation_bar.blocks": "బ్లాక్ చేయబడిన వినియోగదారులు", "navigation_bar.community_timeline": "స్థానిక కాలక్రమం", "navigation_bar.compose": "కొత్త టూట్ను రాయండి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 55f0fe02be06cc..81424a9490fbd9 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -457,7 +457,6 @@ "lists.subheading": "รายการของคุณ", "load_pending": "{count, plural, other {# รายการใหม่}}", "loading_indicator.label": "กำลังโหลด…", - "media_gallery.toggle_visible": "{number, plural, other {ซ่อนภาพ}}", "moved_to_account_banner.text": "มีการปิดใช้งานบัญชีของคุณ {disabledAccount} ในปัจจุบันเนื่องจากคุณได้ย้ายไปยัง {movedToAccount}", "mute_modal.hide_from_notifications": "ซ่อนจากการแจ้งเตือน", "mute_modal.hide_options": "ซ่อนตัวเลือก", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index 19e33233c07d09..0ca30c57da552c 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -270,7 +270,6 @@ "lists.subheading": "kulupu lipu sina", "load_pending": "{count, plural, other {ijo sin #}}", "loading_indicator.label": "ni li kama…", - "media_gallery.toggle_visible": "{number, plural, other {o len e sitelen}}", "mute_modal.title": "sina wile ala wile kute e jan ni?", "navigation_bar.about": "sona", "navigation_bar.blocks": "jan weka", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 4873fa943e9af1..6577737bf11c09 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -457,7 +457,7 @@ "lists.subheading": "Listeleriniz", "load_pending": "{count, plural, one {# yeni öğe} other {# yeni öğe}}", "loading_indicator.label": "Yükleniyor…", - "media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle", + "media_gallery.hide": "Gizle", "moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına taşıdığınız için şu an devre dışı.", "mute_modal.hide_from_notifications": "Bildirimlerde gizle", "mute_modal.hide_options": "Seçenekleri gizle", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index b63596037bf3e7..638a84b64f59c4 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -457,7 +457,7 @@ "lists.subheading": "Ваші списки", "load_pending": "{count, plural, one {# новий елемент} other {# нових елементів}}", "loading_indicator.label": "Завантаження…", - "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}", + "media_gallery.hide": "Сховати", "moved_to_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений, оскільки вас перенесено до {movedToAccount}.", "mute_modal.hide_from_notifications": "Сховати зі сповіщень", "mute_modal.hide_options": "Сховати опції", @@ -780,7 +780,7 @@ "status.bookmark": "Додати до закладок", "status.cancel_reblog_private": "Скасувати поширення", "status.cannot_reblog": "Цей допис не може бути поширений", - "status.continued_thread": "Continued thread", + "status.continued_thread": "Продовження у потоці", "status.copy": "Копіювати посилання на допис", "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", @@ -814,6 +814,7 @@ "status.reblogs.empty": "Ніхто ще не поширив цей допис. Коли хтось це зроблять, вони будуть зображені тут.", "status.redraft": "Видалити та виправити", "status.remove_bookmark": "Видалити закладку", + "status.replied_in_thread": "Відповідь у потоці", "status.replied_to": "Відповідь для {name}", "status.reply": "Відповісти", "status.replyAll": "Відповісти на ланцюжок", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 048f8e77570356..6dae368ffcfbd7 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -299,7 +299,6 @@ "lists.search": "Siz kuzatadigan odamlar orasidan qidiring", "lists.subheading": "Sizning ro'yxatlaringiz", "load_pending": "{count, plural, one {# yangi element} other {# yangi elementlar}}", - "media_gallery.toggle_visible": "{number, plural, one {Rasmni yashirish} other {Rasmlarni yashirish}}", "moved_to_account_banner.text": "{movedToAccount} hisobiga koʻchganingiz uchun {disabledAccount} hisobingiz hozirda oʻchirib qoʻyilgan.", "navigation_bar.about": "Haqida", "navigation_bar.blocks": "Bloklangan foydalanuvchilar", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 80a766683a0786..09f288469dc8b0 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -457,7 +457,6 @@ "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": "Đang tải…", - "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}", "moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.", "mute_modal.hide_from_notifications": "Ẩn thông báo", "mute_modal.hide_options": "Tùy chọn ẩn", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index d9367520e89d01..2fe63fe83cb348 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -118,7 +118,6 @@ "lists.replies_policy.title": "ⵙⴽⵏ ⵜⵉⵔⴰⵔⵉⵏ ⵉ:", "lists.subheading": "ⵜⵉⵍⴳⴰⵎⵉⵏ ⵏⵏⴽ", "load_pending": "{count, plural, one {# ⵓⴼⵔⴷⵉⵙ ⴰⵎⴰⵢⵏⵓ} other {# ⵉⴼⵔⴷⴰⵙ ⵉⵎⴰⵢⵏⵓⵜⵏ}}", - "media_gallery.toggle_visible": "ⴼⴼⵔ {number, plural, one {ⵜⴰⵡⵍⴰⴼⵜ} other {ⵜⵉⵡⵍⴰⴼⵉⵏ}}", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 94adc9af2d4e17..9a6076f23fb675 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -457,7 +457,7 @@ "lists.subheading": "你的列表", "load_pending": "{count} 项", "loading_indicator.label": "加载中…", - "media_gallery.toggle_visible": "{number, plural, other {隐藏图像}}", + "media_gallery.hide": "隐藏", "moved_to_account_banner.text": "您的账号 {disabledAccount} 已禁用,因为您已迁移到 {movedToAccount}。", "mute_modal.hide_from_notifications": "从通知中隐藏", "mute_modal.hide_options": "隐藏选项", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 8543090b9a64e9..2a55e6fc20a5d2 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -421,7 +421,6 @@ "lists.subheading": "列表", "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "載入中…", - "media_gallery.toggle_visible": "隱藏圖片", "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", "mute_modal.hide_from_notifications": "隱藏通知", "mute_modal.hide_options": "隱藏選項", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e671803573f0ad..cdc6c977b71aca 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -457,7 +457,7 @@ "lists.subheading": "您的列表", "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}", "loading_indicator.label": "正在載入...", - "media_gallery.toggle_visible": "切換可見性", + "media_gallery.hide": "隱藏", "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。", "mute_modal.hide_from_notifications": "於推播通知中隱藏", "mute_modal.hide_options": "隱藏選項", diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml index 021cc38b4ff1bc..9fa0f704b02176 100644 --- a/config/locales/activerecord.ca.yml +++ b/config/locales/activerecord.ca.yml @@ -15,6 +15,12 @@ ca: user/invite_request: text: Motiu errors: + attributes: + domain: + invalid: no és un nom de domini vàlid + messages: + invalid_domain_on_line: "%{value} no és un nom de domini vàlid" + too_many_lines: sobrepassa el límit de %{limit} línies models: account: attributes: diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml index fd94a6cf9aae11..35151f477d2468 100644 --- a/config/locales/activerecord.da.yml +++ b/config/locales/activerecord.da.yml @@ -15,6 +15,12 @@ da: user/invite_request: text: Årsag errors: + attributes: + domain: + invalid: er ikke et gyldigt domænenavn + messages: + invalid_domain_on_line: "%{value} er ikke et gyldigt domænenavn" + too_many_lines: overstiger grænsen på %{limit} linjer models: account: attributes: diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml index ca590bec7dba28..b4bcd660d8718b 100644 --- a/config/locales/activerecord.de.yml +++ b/config/locales/activerecord.de.yml @@ -15,6 +15,12 @@ de: user/invite_request: text: Begründung errors: + attributes: + domain: + invalid: ist kein gültiger Domain-Name + messages: + invalid_domain_on_line: "%{value} ist kein gültiger Domain-Name" + too_many_lines: übersteigt das Limit von %{limit} Zeilen models: account: attributes: diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml index 2b1cb05a6f16e8..72edf5e02f4d4b 100644 --- a/config/locales/activerecord.en-GB.yml +++ b/config/locales/activerecord.en-GB.yml @@ -15,6 +15,12 @@ en-GB: user/invite_request: text: Reason errors: + attributes: + domain: + invalid: is not a valid domain name + messages: + invalid_domain_on_line: "%{value} is not a valid domain name" + too_many_lines: is over the limit of %{limit} lines models: account: attributes: diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml index 9da69b7dbd0f8b..b4d91a5f1eb160 100644 --- a/config/locales/activerecord.fi.yml +++ b/config/locales/activerecord.fi.yml @@ -15,6 +15,12 @@ fi: user/invite_request: text: Syy errors: + attributes: + domain: + invalid: ei ole kelvollinen verkkotunnus + messages: + invalid_domain_on_line: "%{value} ei ole kelvollinen verkkotunnus" + too_many_lines: ylittää %{limit} rivin rajan models: account: attributes: diff --git a/config/locales/activerecord.fo.yml b/config/locales/activerecord.fo.yml index cf447a9dbc7b1a..61b924e5bfbbe8 100644 --- a/config/locales/activerecord.fo.yml +++ b/config/locales/activerecord.fo.yml @@ -15,6 +15,12 @@ fo: user/invite_request: text: Orsøk errors: + attributes: + domain: + invalid: er ikki eitt virkið økisnavn + messages: + invalid_domain_on_line: "%{value} er ikki eitt virkið økisnavn" + too_many_lines: er longri enn markið á %{limit} reglur models: account: attributes: diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml index 477db570e7877c..961c96edb482ce 100644 --- a/config/locales/activerecord.gl.yml +++ b/config/locales/activerecord.gl.yml @@ -15,6 +15,12 @@ gl: user/invite_request: text: Razón errors: + attributes: + domain: + invalid: non é un nome de dominio válido + messages: + invalid_domain_on_line: "%{value} non é un nome de dominio válido" + too_many_lines: superou o límite de %{limit} liñas models: account: attributes: diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml index 211d984863a3c7..1729084a4c13c4 100644 --- a/config/locales/activerecord.he.yml +++ b/config/locales/activerecord.he.yml @@ -15,6 +15,12 @@ he: user/invite_request: text: סיבה errors: + attributes: + domain: + invalid: אינו שם מתחם קביל + messages: + invalid_domain_on_line: "%{value} אינו שם מתחם קביל" + too_many_lines: מעבר למגבלה של %{limit} שורות models: account: attributes: diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml index f34ade0440cdcf..6e376dd678fe6a 100644 --- a/config/locales/activerecord.hu.yml +++ b/config/locales/activerecord.hu.yml @@ -15,6 +15,12 @@ hu: user/invite_request: text: Indoklás errors: + attributes: + domain: + invalid: nem egy érvényes domain név + messages: + invalid_domain_on_line: "%{value} nem egy érvényes domain név" + too_many_lines: túllépi a(z) %{limit} soros korlátot models: account: attributes: diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml index bf1fbc67eff547..bccfb96602b7f5 100644 --- a/config/locales/activerecord.ia.yml +++ b/config/locales/activerecord.ia.yml @@ -15,6 +15,11 @@ ia: user/invite_request: text: Motivo errors: + attributes: + domain: + invalid: non es un nomine de dominio valide + messages: + invalid_domain_on_line: "%{value} non es un nomine de dominio valide" models: account: attributes: diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index 4423cb6e47ffcd..e274cc0a9e35a6 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -15,6 +15,12 @@ is: user/invite_request: text: Ástæða errors: + attributes: + domain: + invalid: er ekki leyfilegt nafn á léni + messages: + invalid_domain_on_line: "%{value} er ekki leyfilegt nafn á léni" + too_many_lines: er yfir takmörkum á %{limit} línum models: account: attributes: diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml index f23513e34c73e5..3d5be6c258a297 100644 --- a/config/locales/activerecord.it.yml +++ b/config/locales/activerecord.it.yml @@ -15,6 +15,12 @@ it: user/invite_request: text: Motivo errors: + attributes: + domain: + invalid: non è un nome di dominio valido + messages: + invalid_domain_on_line: "%{value} non è un nome di dominio valido" + too_many_lines: è oltre il limite di %{limit} righe models: account: attributes: diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml index cb6e21d8e87a93..2e4b54c626f570 100644 --- a/config/locales/activerecord.lt.yml +++ b/config/locales/activerecord.lt.yml @@ -15,6 +15,12 @@ lt: user/invite_request: text: Priežastis errors: + attributes: + domain: + invalid: nėra tinkamas domeno vardas. + messages: + invalid_domain_on_line: "%{value} nėra tinkamas domeno vardas." + too_many_lines: yra daugiau nei %{limit} eilučių ribojimą. models: account: attributes: diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml index ce2c28a81072cb..ee3c8bf2601f7a 100644 --- a/config/locales/activerecord.nl.yml +++ b/config/locales/activerecord.nl.yml @@ -15,6 +15,12 @@ nl: user/invite_request: text: Reden errors: + attributes: + domain: + invalid: is een ongeldige domeinnaam + messages: + invalid_domain_on_line: "%{value} is een ongeldige domeinnaam" + too_many_lines: overschrijdt de limiet van %{limit} regels models: account: attributes: diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index a303af6247cd69..a34cc7cf12969c 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -15,6 +15,12 @@ nn: user/invite_request: text: Grunn errors: + attributes: + domain: + invalid: er ikkje eit gyldig domenenamn + messages: + invalid_domain_on_line: "%{value} er ikkje gyldig i eit domenenamn" + too_many_lines: er over grensa på %{limit} liner models: account: attributes: diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml index 5ae1d3778a9550..d0e6dda58d16f2 100644 --- a/config/locales/activerecord.pl.yml +++ b/config/locales/activerecord.pl.yml @@ -15,6 +15,12 @@ pl: user/invite_request: text: Powód errors: + attributes: + domain: + invalid: nie jest prawidłową nazwą domeny + messages: + invalid_domain_on_line: "%{value} nie jest prawidłową nazwą domeny" + too_many_lines: przekracza limit %{limit} linii models: account: attributes: diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml index 3199eb8e2d2e7d..52f2b6ee8704eb 100644 --- a/config/locales/activerecord.pt-BR.yml +++ b/config/locales/activerecord.pt-BR.yml @@ -15,6 +15,12 @@ pt-BR: user/invite_request: text: Razão errors: + attributes: + domain: + invalid: não é um nome de domínio válido + messages: + invalid_domain_on_line: "%{value} não é um nome de domínio válido" + too_many_lines: está acima do limite de %{limit} linhas models: account: attributes: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index a3a45705ecad37..1679dae46e0a5c 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -15,6 +15,8 @@ sv: user/invite_request: text: Anledning errors: + messages: + invalid_domain_on_line: "%{value} Är inte ett giltigt domännamn" models: account: attributes: diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml index d2b79d256cc0f6..505289470ef96b 100644 --- a/config/locales/activerecord.tr.yml +++ b/config/locales/activerecord.tr.yml @@ -15,6 +15,12 @@ tr: user/invite_request: text: Gerekçe errors: + attributes: + domain: + invalid: geçerli bir alan adı değil + messages: + invalid_domain_on_line: "%{value} geçerli bir alan adı değil" + too_many_lines: "%{limit} satır sınırının üzerinde" models: account: attributes: diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml index f16750acec50be..c9a4c8e1ec54d0 100644 --- a/config/locales/activerecord.uk.yml +++ b/config/locales/activerecord.uk.yml @@ -15,6 +15,12 @@ uk: user/invite_request: text: Причина errors: + attributes: + domain: + invalid: не є дійсним іменем домену + messages: + invalid_domain_on_line: "%{value} не є дійсним іменем домену" + too_many_lines: перевищує ліміт %{limit} рядків models: account: attributes: diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml index 1b661266ca1c99..a4edf294a37627 100644 --- a/config/locales/activerecord.zh-CN.yml +++ b/config/locales/activerecord.zh-CN.yml @@ -15,6 +15,12 @@ zh-CN: user/invite_request: text: 理由 errors: + attributes: + domain: + invalid: 不是有效的域名 + messages: + invalid_domain_on_line: "%{value} 不是有效的域名" + too_many_lines: 超出 %{limit} 行的长度限制 models: account: attributes: diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml index 24609332cd273a..7422550660217b 100644 --- a/config/locales/activerecord.zh-TW.yml +++ b/config/locales/activerecord.zh-TW.yml @@ -15,6 +15,12 @@ zh-TW: user/invite_request: text: 原因 errors: + attributes: + domain: + invalid: 並非一個有效網域 + messages: + invalid_domain_on_line: "%{value} 並非一個有效網域" + too_many_lines: 已超過行數限制 (%{limit} 行) models: account: attributes: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index e1025563ebfbff..63654ae708ffea 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -435,6 +435,7 @@ ca: attempts_over_week: one: "%{count} intent en la darrera setmana" other: "%{count} intents de registre en la darrera setmana" + created_msg: S'ha blocat el domini de correu-e delete: Elimina dns: types: @@ -444,8 +445,10 @@ ca: create: Afegir un domini resolve: Resol domini title: Blocar el nou domini de correu-e + no_email_domain_block_selected: No s'han canviat els bloqueigs de domini perquè no se n'ha seleccionat cap not_permitted: No permés resolved_through_html: Resolt mitjançant %{domain} + title: Dominis de correu-e blocats export_domain_allows: new: title: Importa dominis permesos @@ -599,6 +602,7 @@ ca: resolve_description_html: No serà presa cap acció contra el compte denunciat, no se'n registrarà res i l'informe es tancarà. silence_description_html: El compte només serà visible a qui ja el seguia o l'ha cercat manualment, limitant-ne fortament l'abast. Sempre es pot revertir. Es tancaran tots els informes contra aquest compte. suspend_description_html: Aquest compte i tots els seus continguts seran inaccessibles i finalment eliminats, i interaccionar amb ell no serà possible. Reversible en 30 dies. Tanca tots els informes contra aquest compte. + actions_description_html: Decidiu quina acció a prendre per a resoldre aquest informe. Si preneu una acció punitiva contra el compte denunciat, se li enviarà una notificació per correu-e, excepte si se selecciona la categoria Spam. actions_description_remote_html: Decideix quina acció prendre per a resoldre aquest informe. Això només afectarà com el teu servidor es comunica amb aquest compte remot i en gestiona el contingut. actions_no_posts: Aquest informe no té associada cap publicació a esborrar add_to_report: Afegir més al informe @@ -664,6 +668,7 @@ ca: delete_data_html: Esborra el perfil de @%{acct} i els seus continguts dins de 30 dies des d'ara a no ser que es desactivi la suspensió abans preview_preamble_html: "@%{acct} rebrà un avís amb el contingut següent:" record_strike_html: Registra una acció contra @%{acct} per ajudar a escalar-ho en futures violacions des d'aquest compte + send_email_html: Envia un avís per correu-e a @%{acct} warning_placeholder: Opcional raó adicional d'aquesta acció de moderació. target_origin: Origen del compte denunciat title: Informes @@ -703,6 +708,7 @@ ca: manage_appeals: Gestiona apel·lacions manage_appeals_description: Permet als usuaris revisar les apel·lacions contra les accions de moderació manage_blocks: Gestiona blocs + manage_blocks_description: Permet als usuaris blocar adreces IP i proveïdors de correu-e manage_custom_emojis: Gestiona emojis personalitzats manage_custom_emojis_description: Permet als usuaris gestionar emojis personalitzats al servidor manage_federation: Gestiona federació @@ -720,6 +726,7 @@ ca: manage_taxonomies: Gestionar taxonomies manage_taxonomies_description: Permet als usuaris revisar el contingut actual i actualitzar la configuració de l'etiqueta manage_user_access: Gestionar l'accés dels usuaris + manage_user_access_description: Permet als usuaris desactivar l'autenticació de dos factors d'altres usuaris, canviar la seva adreça de correu-e i restablir la seva contrasenya manage_users: Gestionar usuaris manage_users_description: Permet als usuaris veure els detalls d'altres usuaris i realitzar accions de moderació contra ells manage_webhooks: Gestionar Webhooks @@ -1057,7 +1064,9 @@ ca: guide_link_text: Tothom hi pot contribuir. sensitive_content: Contingut sensible application_mailer: + notification_preferences: Canviar les preferències de correu-e salutation: "%{name}," + settings: 'Canviar les preferències de correu-e: %{link}' unsubscribe: Cancel·la la subscripció view: 'Visualització:' view_profile: Mostra el perfil @@ -1077,6 +1086,7 @@ ca: hint_html: Una cosa més! Necessitem confirmar que ets una persona humana (és així com mantenim a ratlla l'spam). Resolt el CAPTCHA inferior i clica a "Segueix". title: Revisió de seguretat confirmations: + awaiting_review: S'ha confirmat la vostra adreça-e. El personal de %{domain} revisa ara el registre. Rebreu un correu si s'aprova el compte. awaiting_review_title: S'està revisant la teva inscripció clicking_this_link: en clicar aquest enllaç login_link: inici de sessió @@ -1084,6 +1094,7 @@ ca: redirect_to_app_html: Se us hauria d'haver redirigit a l'app %{app_name}. Si això no ha passat, intenteu %{clicking_this_link} o torneu manualment a l'app. registration_complete: La teva inscripció a %{domain} ja és completa. welcome_title: Hola, %{name}! + wrong_email_hint: Si aquesta adreça de correu-e no és correcta, podeu canviar-la en els ajustos del compte. delete_account: Elimina el compte delete_account_html: Si vols suprimir el compte pots fer-ho aquí. Se't demanarà confirmació. description: @@ -1126,6 +1137,7 @@ ca: security: Seguretat set_new_password: Estableix una contrasenya nova setup: + email_below_hint_html: Verifiqueu la carpeta de correu brossa o demaneu-ne un altre. Podeu corregir l'adreça de correu-e si no és correcta. email_settings_hint_html: Toca l'enllaç que t'hem enviat per a verificar %{email}. Esperarem aquí mateix. link_not_received: No has rebut l'enllaç? new_confirmation_instructions_sent: Rebràs un nou correu amb l'enllaç de confirmació en pocs minuts! @@ -1139,12 +1151,19 @@ ca: title: Configurem-te a %{domain}. status: account_status: Estat del compte + confirming: Esperant que es completi la confirmació del correu-e. functional: El teu compte està completament operatiu. redirecting_to: El teu compte és inactiu perquè actualment està redirigint a %{acct}. self_destruct: Com que %{domain} tanca, només tindreu accés limitat al vostre compte. view_strikes: Veure accions del passat contra el teu compte too_fast: Formulari enviat massa ràpid, torna a provar-ho. use_security_key: Usa clau de seguretat + author_attribution: + example_title: Text d'exemple + hint_html: Controleu com se us acredita quan els enllaços es comparteixen a Mastodon. + more_from_html: Més de %{name} + s_blog: Blog de %{name} + title: Atribució d'autor challenge: confirm: Continua hint_html: "Pista: No et preguntarem un altre cop la teva contrasenya en la pròxima hora." @@ -1930,6 +1949,7 @@ ca: instructions_html: Copieu i enganxeu el següent codi HTML al vostre lloc web. Després, afegiu l'adreça del vostre lloc web dins d'un dels camps extres del vostre perfil i deseu els canvis. verification: Verificació verified_links: Els teus enllaços verificats + website_verification: Verificació de web webauthn_credentials: add: Afegir nova clau de seguretat create: diff --git a/config/locales/da.yml b/config/locales/da.yml index 19ee9b9d817275..731c1f0b404ef7 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1161,6 +1161,12 @@ da: view_strikes: Se tidligere anmeldelser af din konto too_fast: Formularen indsendt for hurtigt, forsøg igen. use_security_key: Brug sikkerhedsnøgle + author_attribution: + example_title: Eksempeltekst + hint_html: Styrer, hvordan man krediteres, når links deles på Mastodon. + more_from_html: Flere fra %{name} + s_blog: "%{name}s blog" + title: Forfattertilskrivning challenge: confirm: Fortsæt hint_html: "Tip: Du bliver ikke anmodet om din adgangskode igen den næste time." @@ -1949,6 +1955,7 @@ da: instructions_html: Kopier og indsæt koden nedenfor i HTML på din hjemmeside. Tilføj derefter adressen på din hjemmeside i et af de ekstra felter på din profil på fanen "Redigér profil" og gem ændringer. verification: Bekræftelse verified_links: Dine bekræftede links + website_verification: Webstedsbekræftelse webauthn_credentials: add: Tilføj ny sikkerhedsnøgle create: diff --git a/config/locales/de.yml b/config/locales/de.yml index b75aada764492d..cc049c59031e88 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -25,6 +25,7 @@ de: admin: account_actions: action: Aktion ausführen + already_silenced: Dieses Konto wurde bereits eingeschränkt. already_suspended: Dieses Konto wurde bereits gesperrt. title: "@%{acct} moderieren" account_moderation_notes: @@ -1160,6 +1161,12 @@ de: view_strikes: Vorherige Verstöße deines Kontos ansehen too_fast: Formular zu schnell übermittelt. Bitte versuche es erneut. use_security_key: Sicherheitsschlüssel verwenden + author_attribution: + example_title: Beispieltext + hint_html: Bestimme, wie du Anerkennungen durch geteilte Links auf Mastodon handhaben möchtest. + more_from_html: Mehr von %{name} + s_blog: Blog von %{name} + title: Anerkennung als Autor*in challenge: confirm: Fortfahren hint_html: "Hinweis: Wir werden dich für die nächste Stunde nicht erneut nach deinem Passwort fragen." @@ -1948,6 +1955,7 @@ de: instructions_html: Kopiere den unten stehenden Code und füge ihn in das HTML deiner Website ein. Trage anschließend die Adresse deiner Website in ein Zusatzfeld auf deinem Profil ein und speichere die Änderungen. Die Zusatzfelder befinden sich im Reiter „Profil bearbeiten“. verification: Verifizierung verified_links: Deine verifizierten Links + website_verification: Website-Verifizierung webauthn_credentials: add: Sicherheitsschlüssel hinzufügen create: diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index a3036c2f96c799..dc07dcff0bbe1c 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -25,6 +25,8 @@ en-GB: admin: account_actions: action: Perform action + already_silenced: This account has already been limited. + already_suspended: This account has already been suspended. title: Perform moderation action on %{acct} account_moderation_notes: create: Leave note @@ -46,6 +48,7 @@ en-GB: title: Change email for %{username} change_role: changed_msg: Role successfully changed! + edit_roles: Manage user roles label: Change role no_role: No role title: Change role for %{username} @@ -602,6 +605,7 @@ en-GB: suspend_description_html: The account and all its contents will be inaccessible and eventually deleted, and interacting with it will be impossible. Reversible within 30 days. Closes all reports against this account. actions_description_html: Decide which action to take to resolve this report. If you take a punitive action against the reported account, an email notification will be sent to them, except when the Spam category is selected. actions_description_remote_html: Decide which action to take to resolve this report. This will only affect how your server communicates with this remote account and handle its content. + actions_no_posts: This report doesn't have any associated posts to delete add_to_report: Add more to report already_suspended_badges: local: Already suspended on this server @@ -723,6 +727,7 @@ en-GB: manage_taxonomies: Manage Taxonomies manage_taxonomies_description: Allows users to review trending content and update hashtag settings manage_user_access: Manage User Access + manage_user_access_description: Allows users to disable other users' two-factor authentication, change their email address, and reset their password manage_users: Manage Users manage_users_description: Allows users to view other users' details and perform moderation actions against them manage_webhooks: Manage Webhooks @@ -797,6 +802,7 @@ en-GB: destroyed_msg: Site upload successfully deleted! software_updates: critical_update: Critical — please update quickly + description: It is recommended to keep your Mastodon installation up to date to benefit from the latest fixes and features. Moreover, it is sometimes critical to update Mastodon in a timely manner to avoid security issues. For these reasons, Mastodon checks for updates every 30 minutes, and will notify you according to your email notification preferences. documentation_link: Learn more release_notes: Release notes title: Available updates @@ -883,16 +889,37 @@ en-GB: action: Check here for more information message_html: "Your object storage is misconfigured. The privacy of your users is at risk." tags: + moderation: + not_trendable: Not trendable + not_usable: Not usable + pending_review: Pending review + review_requested: Review requested + reviewed: Reviewed + title: Status + trendable: Trendable + unreviewed: Unreviewed + usable: Usable + name: Name + newest: Newest + oldest: Oldest + open: View Publicly + reset: Reset review: Review status + search: Search + title: Hashtags updated_msg: Hashtag settings updated successfully title: Administration trends: allow: Allow approved: Approved + confirm_allow: Are you sure you want to allow selected tags? + confirm_disallow: Are you sure you want to disallow selected tags? disallow: Disallow links: allow: Allow link allow_provider: Allow publisher + confirm_allow: Are you sure you want to allow selected links? + confirm_allow_provider: Are you sure you want to allow selected providers? confirm_disallow: Are you sure you want to disallow selected links? confirm_disallow_provider: Are you sure you want to disallow selected providers? description_html: These are links that are currently being shared a lot by accounts that your server sees posts from. It can help your users find out what's going on in the world. No links are displayed publicly until you approve the publisher. You can also allow or reject individual links. @@ -1039,7 +1066,9 @@ en-GB: guide_link_text: Everyone can contribute. sensitive_content: Sensitive content application_mailer: + notification_preferences: Change email preferences salutation: "%{name}," + settings: 'Change email preferences: %{link}' unsubscribe: Unsubscribe view: 'View:' view_profile: View profile @@ -1059,6 +1088,7 @@ en-GB: hint_html: Just one more thing! We need to confirm you're a human (this is so we can keep the spam out!). Solve the CAPTCHA below and click "Continue". title: Security check confirmations: + awaiting_review: Your email address is confirmed! The %{domain} staff is now reviewing your registration. You will receive an email if they approve your account! awaiting_review_title: Your registration is being reviewed clicking_this_link: clicking this link login_link: log in @@ -1066,6 +1096,7 @@ en-GB: redirect_to_app_html: You should have been redirected to the %{app_name} app. If that did not happen, try %{clicking_this_link} or manually return to the app. registration_complete: Your registration on %{domain} is now complete! welcome_title: Welcome, %{name}! + wrong_email_hint: If that email address is not correct, you can change it in account settings. delete_account: Delete account delete_account_html: If you wish to delete your account, you can proceed here. You will be asked for confirmation. description: @@ -1086,6 +1117,7 @@ en-GB: or_log_in_with: Or log in with privacy_policy_agreement_html: I have read and agree to the privacy policy progress: + confirm: Confirm email details: Your details review: Our review rules: Accept rules @@ -1107,6 +1139,7 @@ en-GB: security: Security set_new_password: Set new password setup: + email_below_hint_html: Check your spam folder, or request another one. You can correct your email address if it's wrong. email_settings_hint_html: Click the link we sent you to verify %{email}. We'll wait right here. link_not_received: Didn't get a link? new_confirmation_instructions_sent: You will receive a new email with the confirmation link in a few minutes! @@ -1128,6 +1161,12 @@ en-GB: view_strikes: View past strikes against your account too_fast: Form submitted too fast, try again. use_security_key: Use security key + author_attribution: + example_title: Sample text + hint_html: Control how you're credited when links are shared on Mastodon. + more_from_html: More from %{name} + s_blog: "%{name}'s Blog" + title: Author attribution challenge: confirm: Continue hint_html: "Tip: We won't ask you for your password again for the next hour." @@ -1423,6 +1462,7 @@ en-GB: media_attachments: validations: images_and_video: Cannot attach a video to a post that already contains images + not_found: Media %{ids} not found or already attached to another post not_ready: Cannot attach files that have not finished processing. Try again in a moment! too_many: Cannot attach more than 4 files migrations: @@ -1915,6 +1955,7 @@ en-GB: instructions_html: Copy and paste the code below into the HTML of your website. Then add the address of your website into one of the extra fields on your profile from the "Edit profile" tab and save changes. verification: Verification verified_links: Your verified links + website_verification: Website verification webauthn_credentials: add: Add new security key create: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 90c1e7776081b1..5c39346a9fe4e6 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1161,6 +1161,10 @@ fi: view_strikes: Näytä aiemmat tiliäsi koskevat varoitukset too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen. use_security_key: Käytä suojausavainta + author_attribution: + example_title: Esimerkkiteksti + more_from_html: Lisää tekijältä %{name} + s_blog: Käyttäjän %{name} blogi challenge: confirm: Jatka hint_html: "Vihje: Emme pyydä sinulta salasanaa uudelleen seuraavan tunnin aikana." @@ -1949,6 +1953,7 @@ fi: instructions_html: Kopioi ja liitä seuraava koodi verkkosivustosi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin profiilisi lisäkentistä ”Muokkaa profiilia” -välilehdellä ja tallenna muutokset. verification: Vahvistus verified_links: Vahvistetut linkkisi + website_verification: Verkkosivuston vahvistus webauthn_credentials: add: Lisää uusi suojausavain create: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 5bc192e9dbbd84..6d7b38e18afa68 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -25,6 +25,7 @@ fo: admin: account_actions: action: Frem atgerð + already_silenced: Hendan kontan er longu avmarkað. already_suspended: Hendan kontan er longu ógildað. title: Frem umsjónaratgerð á %{acct} account_moderation_notes: @@ -1160,6 +1161,12 @@ fo: view_strikes: Vís eldri atsóknir móti tíni kontu too_fast: Oyðublaðið innsent ov skjótt, royn aftur. use_security_key: Brúka trygdarlykil + author_attribution: + example_title: Tekstadømi + hint_html: Kanna, hvussu tú verður viðurkend/ur, tá ið onnur deila slóðir á Mastodon. + more_from_html: Meiri frá %{name} + s_blog: Bloggurin hjá %{name} + title: Ískoyti høvundans challenge: confirm: Hald á hint_html: "Góð ráð: vit spyrja teg ikki aftur um loyniorðið næsta tíman." @@ -1945,6 +1952,7 @@ fo: instructions_html: Avrita og innset koduna niðanfyri inn í HTML'ið á heimasíðuni hjá tær. Legg síðani adressuna á heimasíðuni hjá tær inn á eitt av eyka teigunum á vanganum hjá tær umvegis "Rætta vanga" teigin og goym broytingar. verification: Váttan verified_links: Tíni váttaðu leinki + website_verification: Heimasíðuváttan webauthn_credentials: add: Legg nýggjan trygdarlykil afturat create: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index c8fa1d833d92b8..d275b844fd3c0e 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1161,6 +1161,12 @@ gl: view_strikes: Ver avisos anteriores respecto da túa conta too_fast: Formulario enviado demasiado rápido, inténtao outra vez. use_security_key: Usa chave de seguridade + author_attribution: + example_title: Texto de mostra + hint_html: Controla o xeito en que te acreditan cando se comparten ligazóns en Mastodon. + more_from_html: Máis de %{name} + s_blog: Blog de %{name} + title: Atribución da autoría challenge: confirm: Continuar hint_html: "Nota: Non che pediremos o contrasinal na seguinte hora." @@ -1949,6 +1955,7 @@ gl: instructions_html: Copia e pega o código inferior no HTML do teu sitio web. Despois engade o enderezo da túa web nun dos campos de datos extra do teu perfil dispoñibles na lapela "Editar perfil" e garda os cambios. verification: Validación verified_links: As túas ligazóns verificadas + website_verification: Verificación do sitio web webauthn_credentials: add: Engadir nova chave de seguridade create: diff --git a/config/locales/he.yml b/config/locales/he.yml index 025b2de9e231ed..341e2bf0239c0d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -29,6 +29,7 @@ he: admin: account_actions: action: בצע/י פעולה + already_silenced: חשבון זה הוגבל זה מכבר. already_suspended: חשבון זה הושעה. title: ביצוע פעולות הנהלה על %{acct} account_moderation_notes: @@ -1196,6 +1197,12 @@ he: view_strikes: צפיה בעברות קודמות שנרשמו נגד חשבונך too_fast: הטופס הוגש מהר מדי, נסה/י שוב. use_security_key: שימוש במפתח אבטחה + author_attribution: + example_title: טקסט לדוגמה + hint_html: בחירה איך תקבלו קרדיטציה כאשר קישורים משותפים דרך מסטודון. + more_from_html: עוד מאת %{name} + s_blog: הבלוג של %{name} + title: ייחוס למפרסם challenge: confirm: המשך hint_html: "טיפ: לא נבקש את סיסמתך שוב בשעה הקרובה." @@ -2014,6 +2021,7 @@ he: instructions_html: יש להדביק את הקוד שלמטה אל האתר שלך. ואז להוסיף את כתובת האתר לאחד השדות הנוספים בפרופיל מתוך טאב "עריכת פרופיל" ולשמור את השינויים. verification: אימות verified_links: קישוריך המאומתים + website_verification: אימות אתר רשת webauthn_credentials: add: הוספת מפתח אבטחה חדש create: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 141f5b7d07afd5..e29472f8d83c0c 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -25,6 +25,7 @@ hu: admin: account_actions: action: Művelet végrehajtása + already_silenced: Ezt a fiókot már korlátozták. already_suspended: Ezt a fiókot már felfüggesztették. title: 'Moderálási művelet végrehajtása ezen: %{acct}' account_moderation_notes: @@ -1160,6 +1161,12 @@ hu: view_strikes: Fiókod ellen felrótt korábbi vétségek megtekintése too_fast: Túl gyorsan küldted el az űrlapot, próbáld később. use_security_key: Biztonsági kulcs használata + author_attribution: + example_title: Mintaszöveg + hint_html: Szabályozd, hogyan hivatkoznak rád, amikor linket osztanak meg Mastodonon. + more_from_html: 'Több tőle: %{name}' + s_blog: "%{name} blogja" + title: Szerző forrásmegjelölése challenge: confirm: Folytatás hint_html: "Hasznos: Nem fogjuk megint a jelszavadat kérdezni a következő órában." @@ -1946,8 +1953,9 @@ hu: here_is_how: Itt van, hogyan kell hint_html: "A személyazonosságod ellenőrizhetősége a Mastodonon mindenki számára elérhető. Ez nyílt webes szabványok alapján, most és mindörökké szabadon és ingyenesen történik. Ehhez csak egy saját weboldalra van szükséged, mely alapján mások felismernek téged. Ha a profilodról erre a weboldalra hivatkozol, mi ellenőrizzük, hogy erről az oldalról visszahivatkozol-e a profilodra, és siker esetén erről vizuális jelzést is adunk a profilodon." instructions_html: Az alábbi kódot másold be a weboldalad HTML kódjába. Ezután add hozzá a weboldalad címét a profilod egyik extra mezőjéhez a "Profil szerkesztése" fülön és mentsd a változásokat. - verification: Hitelesítés + verification: Ellenőrzés verified_links: Ellenőrzött hivatkozásaid + website_verification: Weboldal ellenőrzése webauthn_credentials: add: Biztonsági kulcs hozzáadása create: diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 073e5032b4cf0a..87789562fde7bd 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -25,6 +25,7 @@ ia: admin: account_actions: action: Exequer action + already_silenced: Iste conto jam ha essite limitate. already_suspended: Iste conto jam ha essite suspendite. title: Exequer action de moderation sur %{acct} account_moderation_notes: @@ -1146,6 +1147,10 @@ ia: view_strikes: Examinar le sanctiones passate contra tu conto too_fast: Formulario inviate troppo rapidemente. Tenta lo de novo. use_security_key: Usar clave de securitate + author_attribution: + example_title: Texto de exemplo + more_from_html: Plus de %{name} + s_blog: Blog de %{name} challenge: confirm: Continuar hint_html: "Consilio: Nos non te demandara tu contrasigno de novo in le proxime hora." @@ -1933,6 +1938,7 @@ ia: instructions_html: Copia e colla le codice hic infra in le HTML de tu sito web. Alora adde le adresse de tu sito web in un del campos supplementari sur tu profilo desde le scheda “Modificar profilo” e salva le cambiamentos. verification: Verification verified_links: Tu ligamines verificate + website_verification: Verification de sito web webauthn_credentials: add: Adder un nove clave de securitate create: diff --git a/config/locales/is.yml b/config/locales/is.yml index 1c84c45c809b34..5fa147e8dbdf78 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -25,6 +25,7 @@ is: admin: account_actions: action: Framkvæma aðgerð + already_silenced: Þessi aðgangur hefur þegar verið takmarkaður. already_suspended: Þessi aðgangur hefur þegar verið settur í frysti. title: Framkvæma umsjónaraðgerð á %{acct} account_moderation_notes: @@ -1164,6 +1165,12 @@ is: view_strikes: Skoða fyrri bönn notandaaðgangsins þíns too_fast: Innfyllingarform sent inn of hratt, prófaðu aftur. use_security_key: Nota öryggislykil + author_attribution: + example_title: Sýnitexti + hint_html: Stýrðu hvernig framlög þín birtast þegar tenglum er deilt á Mastodon. + more_from_html: Meira frá %{name} + s_blog: Bloggsvæði hjá %{name} + title: Framlag höfundar challenge: confirm: Halda áfram hint_html: "Ábending: Við munum ekki spyrja þig um lykilorðið aftur næstu klukkustundina." @@ -1952,6 +1959,7 @@ is: instructions_html: Afritaðu og límdu kóðann hér fyrir neðan inn í HTML-kóða vefsvæðisins þíns. Bættu síðan slóð vefsvæðisins þíns inn í einn af auka-reitunum í flipanum "Breyta notandasniði" og vistaðu síðan breytingarnar. verification: Sannprófun verified_links: Staðfestu tenglarnir þínir + website_verification: Staðfesting vefsvæðis webauthn_credentials: add: Bæta við nýjum öryggislykli create: diff --git a/config/locales/it.yml b/config/locales/it.yml index a429c6339b1feb..7de24fe2593be2 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1163,6 +1163,12 @@ it: view_strikes: Visualizza le sanzioni precedenti prese nei confronti del tuo account too_fast: Modulo inviato troppo velocemente, riprova. use_security_key: Usa la chiave di sicurezza + author_attribution: + example_title: Testo di esempio + hint_html: Controlla come sei viene accreditato quando i link sono condivisi su Mastodon. + more_from_html: Altro da %{name} + s_blog: Blog di %{name} + title: Attribuzione autore challenge: confirm: Continua hint_html: "Suggerimento: Non ti chiederemo di nuovo la tua password per la prossima ora." @@ -1951,6 +1957,7 @@ it: instructions_html: Copia e incolla il codice qui sotto nell'HTML del tuo sito web. Quindi, aggiungi l'indirizzo del tuo sito web in uno dei campi aggiuntivi del tuo profilo dalla scheda "Modifica profilo" e salva le modifiche. verification: Verifica verified_links: I tuoi collegamenti verificati + website_verification: Verifica del sito web webauthn_credentials: add: Aggiungi una nuova chiave di sicurezza create: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index c48b8ef93b146e..07e8ba75a21ec4 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -29,6 +29,7 @@ lt: admin: account_actions: action: Atlikti veiksmą + already_silenced: Ši paskyra jau buvo apribota. already_suspended: Ši paskyra jau sustabdyta. title: Atlikti prižiūrėjimo veiksmą %{acct} account_moderation_notes: @@ -800,6 +801,12 @@ lt: redirecting_to: Tavo paskyra yra neaktyvi, nes šiuo metu ji nukreipiama į %{acct}. self_destruct: Kadangi %{domain} uždaromas, turėsi tik ribotą prieigą prie savo paskyros. view_strikes: Peržiūrėti ankstesnius savo paskyros pažeidimus + author_attribution: + example_title: Teksto pavyzdys + hint_html: Valdyk, kaip esi nurodomas (-a), kai nuorodos bendrinamos platformoje „Mastodon“. + more_from_html: Daugiau iš %{name} + s_blog: "%{name} tinklaraštis" + title: Autoriaus (-ės) atribucija challenge: hint_html: "Patarimas: artimiausią valandą daugiau neprašysime tavo slaptažodžio." datetime: @@ -1230,6 +1237,7 @@ lt: instructions_html: Nukopijuok ir įklijuok toliau pateiktą kodą į savo svetainės HTML. Tada į vieną iš papildomų profilio laukų skirtuke Redaguoti profilį įrašyk savo svetainės adresą ir išsaugok pakeitimus. verification: Patvirtinimas verified_links: Tavo patikrintos nuorodos + website_verification: Svetainės patvirtinimas webauthn_credentials: add: Pridėti naują saugumo raktą create: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index c74bf488b578d3..63fcf1c857da2b 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1161,6 +1161,12 @@ nl: view_strikes: Bekijk de eerder door moderatoren vastgestelde overtredingen die je hebt gemaakt too_fast: Formulier is te snel ingediend. Probeer het nogmaals. use_security_key: Beveiligingssleutel gebruiken + author_attribution: + example_title: Voorbeeldtekst + hint_html: Bepaal hoe we je vermelden, wanneer jouw links op Mastodon worden gedeeld. + more_from_html: Meer van %{name} + s_blog: De weblog van %{name} + title: Auteur-attributie challenge: confirm: Doorgaan hint_html: "Tip: We vragen jou het komende uur niet meer naar jouw wachtwoord." @@ -1949,6 +1955,7 @@ nl: instructions_html: Kopieer en plak de onderstaande code in de HTML van je website. Voeg vervolgens het adres van je website toe aan een van de extra velden op je profiel op het tabblad "Profiel bewerken" en sla de wijzigingen op. verification: Verificatie verified_links: Jouw geverifieerde links + website_verification: Website-verificatie webauthn_credentials: add: Nieuwe beveiligingssleutel toevoegen create: diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 5c46a0d43e2fb8..47dcc1ac8ece86 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -26,6 +26,7 @@ nn: account_actions: action: Utfør already_silenced: Denne kontoen har allereie vorte avgrensa. + already_suspended: Denne kontoen er allereie sperra. title: Utfør moderatorhandling på %{acct} account_moderation_notes: create: Legg igjen merknad @@ -47,6 +48,7 @@ nn: title: Byt e-post for %{username} change_role: changed_msg: Rolle endra! + edit_roles: Administrer brukarroller label: Endre rolle no_role: Inga rolle title: Endre rolle for %{username} @@ -603,6 +605,7 @@ nn: suspend_description_html: Brukarkontoen og alt innhaldet vil bli utilgjengeleg og til slutt sletta, og det vil vera uråd å samhandla med brukaren. Du kan angra dette innan 30 dagar. Dette avsluttar alle rapportar om kontoen. actions_description_html: Avgjer kva som skal gjerast med denne rapporteringa. Dersom du utfører straffetiltak mot den rapporterte kontoen, vil dei motta ein e-post – så sant du ikkje har valt kategorien Spam. actions_description_remote_html: Avgjer kva du vil gjera for å løysa denne rapporten. Dette påverkar berre korleis tenaren din kommuniserer med kontoen på ein annan tenar, og korleis tenaren din handterer innhald derifrå. + actions_no_posts: Denne rapporten har ingen tilknytte innlegg å sletta add_to_report: Legg til i rapporten already_suspended_badges: local: Allereie utestengd på denne tenaren @@ -1158,6 +1161,12 @@ nn: view_strikes: Vis tidligere advarsler mot kontoen din too_fast: Skjemaet ble sendt inn for raskt, prøv på nytt. use_security_key: Bruk sikkerhetsnøkkel + author_attribution: + example_title: Eksempeltekst + hint_html: Kontroller korleis du blir kreditert når nokon deler lenker på Mastodon. + more_from_html: Meir frå %{name} + s_blog: Bloggen til %{name} + title: Forfattarkreditering challenge: confirm: Hald fram hint_html: "Tips: Vi skal ikkje spørja deg om passordet ditt igjen i laupet av den neste timen." @@ -1946,6 +1955,7 @@ nn: instructions_html: Kopier og lim inn i koden nedanfor i HTML-koden for nettsida di. Legg deretter adressa til nettsida di til i ei av ekstrafelta på profilen din frå fana "Rediger profil" og lagre endringane. verification: Stadfesting verified_links: Dine verifiserte lenker + website_verification: Stadfesting av nettside webauthn_credentials: add: Legg til ny sikkerhetsnøkkel create: diff --git a/config/locales/pl.yml b/config/locales/pl.yml index c90d448a7f9345..b710df2e78fe18 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -29,6 +29,7 @@ pl: admin: account_actions: action: Wykonaj działanie + already_silenced: To konto zostało już ograniczone. already_suspended: To konto zostało już zawieszone. title: Wykonaj działanie moderacyjne na %{acct} account_moderation_notes: @@ -1196,6 +1197,12 @@ pl: view_strikes: Zobacz dawne ostrzeżenia nałożone na twoje konto too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. use_security_key: Użyj klucza bezpieczeństwa + author_attribution: + example_title: Przykładowy tekst + hint_html: Kontroluj przypisy do twoich wpisów widoczne na Mastodonie. + more_from_html: Więcej od %{name} + s_blog: Blog %{name} + title: Przypis do autora challenge: confirm: Kontynuuj hint_html: "Informacja: Nie będziemy prosić Cię o ponowne podanie hasła przez następną godzinę." @@ -2014,6 +2021,7 @@ pl: instructions_html: Skopiuj poniższy kod HTML i wklej go na swoją stronę. Potem dodaj link do twojej strony do jednego z wolnych pól na profilu z zakładki "Edytuj profil". verification: Weryfikacja verified_links: Twoje zweryfikowane linki + website_verification: Weryfikacja strony internetowej webauthn_credentials: add: Dodaj nowy klucz bezpieczeństwa create: diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 3c14589e6c86b2..864a8b4d9188b8 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -25,6 +25,8 @@ pt-BR: admin: account_actions: action: Tomar uma atitude + already_silenced: Esta conta já foi limitada. + already_suspended: Esta conta já foi suspensa. title: Moderar %{acct} account_moderation_notes: create: Deixar nota @@ -46,6 +48,7 @@ pt-BR: title: Alterar e-mail para %{username} change_role: changed_msg: Função alterada com sucesso! + edit_roles: Gerenciar funções do usuário label: Alterar função no_role: Nenhuma função title: Alterar função para %{username} @@ -602,6 +605,7 @@ pt-BR: suspend_description_html: A conta e todo o seu conteúdo ficará inacessível e, eventualmente, excluído e interagir com ela será impossível. Reversível dentro de 30 dias. Encerra todas as denúncias contra esta conta. actions_description_html: Decida qual ação tomar para responder a essa denúncia. Se você tomar uma ação punitiva contra a conta denunciada, uma notificação por e-mail será enviada ao usuário, exceto quando a categoria Spam for selecionada. actions_description_remote_html: Decida quais medidas tomará para resolver esta denúncia. Isso só afetará como seu servidor se comunica com esta conta remota e manipula seu conteúdo. + actions_no_posts: Essa denúncia não tem nenhuma publicação associada para excluir add_to_report: Adicionar mais à denúncia already_suspended_badges: local: Já suspenso neste servidor @@ -1157,6 +1161,12 @@ pt-BR: view_strikes: Veja os avisos anteriores em relação à sua conta too_fast: O formulário foi enviado muito rapidamente, tente novamente. use_security_key: Usar chave de segurança + author_attribution: + example_title: Texto de amostra + hint_html: Controle como você é creditado quando links são compartilhados no Mastodon. + more_from_html: Mais de %{name} + s_blog: Blog do %{name} + title: Atribuição de autoria challenge: confirm: Continuar hint_html: "Dica: Não pediremos novamente sua senha pela próxima hora." @@ -1945,6 +1955,7 @@ pt-BR: instructions_html: Copie o código abaixo e cole no HTML do seu site. Em seguida, adicione o endereço do seu site em um dos campos extras em seu perfil, na aba "Editar perfil", e salve as alterações. verification: Verificação verified_links: Seus links verificados + website_verification: Verificação do site webauthn_credentials: add: Adicionar nova chave de segurança create: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index c628bebaad79fd..7b651470bfe1b6 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -3,6 +3,7 @@ ca: simple_form: hints: account: + attribution_domains_as_text: Protegeix de falses atribucions. discoverable: El teu perfil i els teus tuts públics poden aparèixer o ser recomanats en diverses àreas de Mastodon i el teu perfil pot ser suggerit a altres usuaris. display_name: El teu nom complet o el teu nom divertit. fields: La teva pàgina d'inici, pronoms, edat, el que vulguis. @@ -143,6 +144,7 @@ ca: url: On els esdeveniments seran enviats labels: account: + attribution_domains_as_text: Permet només webs específics discoverable: Permet el perfil i el tuts en els algorismes de descobriment fields: name: Etiqueta diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 8bacdc46c330e7..e7b8fe337a9701 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -3,6 +3,7 @@ da: simple_form: hints: account: + attribution_domains_as_text: Beskytter mod falske tilskrivninger. discoverable: Dine offentlige indlæg og profil kan blive fremhævet eller anbefalet i forskellige områder af Mastodon, og profilen kan blive foreslået til andre brugere. display_name: Dit fulde navn eller dit sjove navn. fields: Din hjemmeside, dine pronominer, din alder, eller hvad du har lyst til. @@ -143,6 +144,7 @@ da: url: Hvor begivenheder sendes til labels: account: + attribution_domains_as_text: Tillad kun bestemte websteder discoverable: Fremhæv profil og indlæg i opdagelsesalgoritmer fields: name: Etiket diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index ddb6621aa6ce74..f7e55f1a7bfb4b 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -3,6 +3,7 @@ de: simple_form: hints: account: + attribution_domains_as_text: Dadurch können falsche Zuschreibungen unterbunden werden. discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. @@ -143,6 +144,7 @@ de: url: Wohin Ereignisse gesendet werden labels: account: + attribution_domains_as_text: Nur ausgewählte Websites zulassen discoverable: Profil und Beiträge in Suchalgorithmen berücksichtigen fields: name: Beschriftung diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml index 18776d67d6fd64..b802fd532f5180 100644 --- a/config/locales/simple_form.en-GB.yml +++ b/config/locales/simple_form.en-GB.yml @@ -3,6 +3,7 @@ en-GB: simple_form: hints: account: + attribution_domains_as_text: Protects from false attributions. discoverable: Your public posts and profile may be featured or recommended in various areas of Mastodon and your profile may be suggested to other users. display_name: Your full name or your fun name. fields: Your homepage, pronouns, age, anything you want. @@ -130,6 +131,7 @@ en-GB: name: You can only change the casing of the letters, for example, to make it more readable user: chosen_languages: When checked, only posts in selected languages will be displayed in public timelines + role: The role controls which permissions the user has. user_role: color: Color to be used for the role throughout the UI, as RGB in hex format highlighted: This makes the role publicly visible @@ -142,6 +144,7 @@ en-GB: url: Where events will be sent to labels: account: + attribution_domains_as_text: Only allow specific websites discoverable: Feature profile and posts in discovery algorithms fields: name: Label diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index d3f0628631f22e..a2b29566f62b62 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -143,6 +143,7 @@ fi: url: Mihin tapahtumat lähetetään labels: account: + attribution_domains_as_text: Salli vain tietyt verkkosivustot discoverable: Pidä profiiliasi ja julkaisujasi esillä löytämisalgoritmeissa fields: name: Nimike diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml index 35e42f6c741f20..afcd3b39accfe2 100644 --- a/config/locales/simple_form.fo.yml +++ b/config/locales/simple_form.fo.yml @@ -3,6 +3,7 @@ fo: simple_form: hints: account: + attribution_domains_as_text: Verjir fyri følskum ískoytum. discoverable: Tínir almennu postar og tín vangi kunnu vera drigin fram og viðmæld ymsa staðni í Mastodon og vangin hjá tær kann vera viðmæltur øðrum brúkarum. display_name: Títt fulla navn og títt stuttliga navn. fields: Heimasíðan hjá tær, fornøvn, aldur ella hvat tú vil. @@ -143,6 +144,7 @@ fo: url: Hvar hendingar verða sendar til labels: account: + attribution_domains_as_text: Loyv einans ávísum heimasíðum discoverable: Framheva vanga og postar í uppdagingar-algoritmum fields: name: Spjaldur diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index abb30fa48c0c80..cddeae5cee5dd7 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -3,6 +3,7 @@ gl: simple_form: hints: account: + attribution_domains_as_text: Protéxete de falsas atribucións. discoverable: As túas publicacións públicas e perfil poden mostrarse ou recomendarse en varias zonas de Mastodon e o teu perfil ser suxerido a outras usuarias. display_name: O teu nome completo ou un nome divertido. fields: Páxina web, pronome, idade, o que ti queiras. @@ -143,6 +144,7 @@ gl: url: A onde se enviarán os eventos labels: account: + attribution_domains_as_text: Permitir só os sitios web indicados discoverable: Perfil destacado e publicacións nos algoritmos de descubrimento fields: name: Etiqueta diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 26edab3b2ea9dc..1feebb0d69ae11 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -3,6 +3,7 @@ he: simple_form: hints: account: + attribution_domains_as_text: הגנה מייחוסים שקריים. discoverable: הפוסטים והפרופיל שלך עשויים להיות מוצגים או מומלצים באזורים שונים באתר וייתכן שהפרופיל שלך יוצע למשתמשים אחרים. display_name: שמך המלא או שם הכיף שלך. fields: עמוד הבית שלך, לשון הפנייה, גיל, וכל מידע אחר לפי העדפתך האישית. @@ -143,6 +144,7 @@ he: url: היעד שאליו יישלחו אירועים labels: account: + attribution_domains_as_text: רק אתרים מסויימים יאושרו discoverable: הצג משתמש ופוסטים בעמוד התגליות fields: name: תווית diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 545fd4a8e91fd0..383bdd076054b7 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -3,6 +3,7 @@ hu: simple_form: hints: account: + attribution_domains_as_text: Megvéd a hamis forrásmegjelölésektől. discoverable: A nyilvános bejegyzéseid és a profilod kiemelhető vagy ajánlható a Mastodon különböző területein, a profilod más felhasználóknak is javasolható. display_name: Teljes neved vagy vicces neved. fields: Weboldalad, megszólításaid, korod, bármi, amit szeretnél. @@ -143,6 +144,7 @@ hu: url: Ahová az eseményket küldjük labels: account: + attribution_domains_as_text: Csak meghatározott weboldalak engedélyezése discoverable: Profil és bejegyzések szerepeltetése a felfedezési algoritmusokban fields: name: Címke diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml index 85fa74f1edd960..dc5aad57ae3957 100644 --- a/config/locales/simple_form.ia.yml +++ b/config/locales/simple_form.ia.yml @@ -142,6 +142,7 @@ ia: url: Ubi le eventos essera inviate labels: account: + attribution_domains_as_text: Solmente permitter sitos web specific discoverable: Evidentiar le profilo e messages in le algorithmos de discoperta fields: name: Etiquetta diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index d615e391ac2fc9..6f3a4fe8a561ed 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -3,6 +3,7 @@ is: simple_form: hints: account: + attribution_domains_as_text: Ver fyrir fölskum tilvísunum í höfunda. discoverable: Opinberar færslur og notandasnið þitt geta birst eða verið mælt með á hinum ýmsu svæðum í Mastodon auk þess sem hægt er að mæla með þér við aðra notendur. display_name: Fullt nafn þitt eða eitthvað til gamans. fields: Heimasíðan þín, fornöfn, aldur eða eitthvað sem þú vilt koma á framfæri. @@ -143,6 +144,7 @@ is: url: Hvert atburðir verða sendir labels: account: + attribution_domains_as_text: Einungis leyfa tiltekin vefsvæði discoverable: Hafa notandasnið og færslur með í reikniritum leitar fields: name: Skýring diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 1068b2f92772fd..7ed4c0d004c6b6 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -3,6 +3,7 @@ it: simple_form: hints: account: + attribution_domains_as_text: Protegge da false attribuzioni. discoverable: I tuoi post pubblici e il tuo profilo potrebbero essere presenti o consigliati in varie aree di Mastodon e il tuo profilo potrebbe essere suggerito ad altri utenti. display_name: Il tuo nome completo o il tuo soprannome. fields: La tua homepage, i pronomi, l'età, tutto quello che vuoi. @@ -143,6 +144,7 @@ it: url: Dove gli eventi saranno inviati labels: account: + attribution_domains_as_text: Consenti solo siti web specifici discoverable: Include il profilo e i post negli algoritmi di scoperta fields: name: Etichetta diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index 99cb269e37486b..41f55f183d4540 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -3,6 +3,7 @@ lt: simple_form: hints: account: + attribution_domains_as_text: Apsaugo nuo klaidingų atributų. discoverable: Tavo vieši įrašai ir profilis gali būti rodomi arba rekomenduojami įvairiose Mastodon vietose, o profilis gali būti siūlomas kitiems naudotojams. display_name: Tavo pilnas vardas arba smagus vardas. fields: Tavo pagrindinis puslapis, įvardžiai, amžius, bet kas, ko tik nori. @@ -104,6 +105,7 @@ lt: role: Vaidmuo valdo, kokius leidimus naudotojas turi. labels: account: + attribution_domains_as_text: Leisti tik konkrečias svetaines discoverable: Rekomenduoti profilį ir įrašus į atradimo algoritmus indexable: Įtraukti viešus įrašus į paieškos rezultatus show_collections: Rodyti sekimus ir sekėjus profilyje diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 066f6c2acb5275..7f8aaa01d6fd05 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -3,6 +3,7 @@ nl: simple_form: hints: account: + attribution_domains_as_text: Beschermt tegen onjuiste attributies. discoverable: Jouw openbare berichten kunnen worden uitgelicht op verschillende plekken binnen Mastodon en jouw account kan worden aanbevolen aan andere gebruikers. display_name: Jouw volledige naam of een leuke bijnaam. fields: Jouw website, persoonlijke voornaamwoorden, leeftijd, alles wat je maar kwijt wilt. @@ -143,6 +144,7 @@ nl: url: Waar gebeurtenissen naartoe worden verzonden labels: account: + attribution_domains_as_text: Alleen bepaalde websites toestaan discoverable: Jouw account en berichten laten uitlichten door Mastodon fields: name: Label diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 500a41c8cc12fc..ddd5ed8995d541 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -3,6 +3,7 @@ nn: simple_form: hints: account: + attribution_domains_as_text: Vernar mot falske krediteringar. discoverable: Dei offentlege innlegga dine og profilen din kan dukka opp i tilrådingar på ulike stader på Mastodon, og profilen din kan bli føreslegen for andre folk. display_name: Ditt fulle namn eller ditt tøysenamn. fields: Heimesida di, pronomen, alder, eller kva du måtte ynskje. @@ -130,6 +131,7 @@ nn: name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner + role: Rolla kontrollerer kva løyve brukaren har. user_role: color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format highlighted: Dette gjer rolla synleg offentleg @@ -142,6 +144,7 @@ nn: url: Kvar hendingar skal sendast labels: account: + attribution_domains_as_text: Tillat berre visse nettstader discoverable: Ta med profilen og innlegga i oppdagingsalgoritmar fields: name: Merkelapp diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index b113e0eed5cf39..bb404e56c93320 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -3,6 +3,7 @@ pl: simple_form: hints: account: + attribution_domains_as_text: Chroni przed fałszywym przypisaniem wpisów. discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom. display_name: Twoje imię lub pseudonim. fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek… @@ -143,6 +144,7 @@ pl: url: Dokąd będą wysłane zdarzenia labels: account: + attribution_domains_as_text: Zezwól tylko na konkretne strony discoverable: Udostępniaj profil i wpisy funkcjom odkrywania fields: name: Nazwa diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 6b0bad0f0884b3..96bc219e8eb24a 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -3,6 +3,7 @@ pt-BR: simple_form: hints: account: + attribution_domains_as_text: Protege de atribuições falsas. discoverable: Suas publicações e perfil públicos podem ser destaques ou recomendados em várias áreas de Mastodon, e seu perfil pode ser sugerido a outros usuários. display_name: Seu nome completo ou apelido. fields: Sua página inicial, pronomes, idade ou qualquer coisa que quiser. @@ -130,6 +131,7 @@ pt-BR: name: Você pode mudar a capitalização das letras, por exemplo, para torná-la mais legível user: chosen_languages: Apenas as publicações dos idiomas selecionados serão exibidas nas linhas públicas + role: A função controla quais permissões o usuário tem. user_role: color: Cor a ser usada para o cargo em toda a interface do usuário, como RGB no formato hexadecimal highlighted: Isso torna o cargo publicamente visível @@ -142,6 +144,7 @@ pt-BR: url: Aonde os eventos serão enviados labels: account: + attribution_domains_as_text: Permitir apenas sites específicos discoverable: Destacar perfil e publicações nos algoritmos de descoberta fields: name: Rótulo diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 2fcf23b1560cdd..d90b97bf9b2e61 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -3,6 +3,7 @@ tr: simple_form: hints: account: + attribution_domains_as_text: Sahte atıflardan korur. discoverable: Herkese açık gönderileriniz ve profiliniz Mastodon'un çeşitli kısımlarında öne çıkarılabilir veya önerilebilir ve profiliniz başka kullanıcılara önerilebilir. display_name: Tam adınız veya kullanıcı adınız. fields: Ana sayfanız, zamirleriniz, yaşınız, istediğiniz herhangi bir şey. @@ -143,6 +144,7 @@ tr: url: Olayların gönderileceği yer labels: account: + attribution_domains_as_text: Yalnızca belirli websitelerine izin ver discoverable: Profil ve gönderileri keşif algoritmalarında kullan fields: name: Etiket diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index e2a1562b53499e..b584a6cada12af 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -3,6 +3,7 @@ uk: simple_form: hints: account: + attribution_domains_as_text: Захищає від фальшивих атрибутів. discoverable: Ваші дописи та профіль можуть бути рекомендовані в різних частинах Mastodon і ваш профіль може бути запропонований іншим користувачам. display_name: Ваше повне ім'я або ваш псевдонім. fields: Ваша домашня сторінка, займенники, вік, все, що вам заманеться. @@ -143,6 +144,7 @@ uk: url: Куди надсилатимуться події labels: account: + attribution_domains_as_text: Дозволити лише на певних вебсайтах discoverable: Функції профілю та дописів у алгоритмах виявлення fields: name: Мітка diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index cb4341b551e6a9..419cb99abb5974 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -3,6 +3,7 @@ zh-CN: simple_form: hints: account: + attribution_domains_as_text: 保护作品免受虚假署名。 discoverable: 您的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,您的个人资料可能会被推荐给其他用户。 display_name: 你的全名或昵称。 fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。 @@ -143,6 +144,7 @@ zh-CN: url: 事件将被发往的目的地 labels: account: + attribution_domains_as_text: 仅允许特定网站 discoverable: 在发现算法中展示你的个人资料和嘟文 fields: name: 标签 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 8b4c440025767b..a5bc6836348ef1 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,6 +3,7 @@ zh-TW: simple_form: hints: account: + attribution_domains_as_text: 偽造署名保護。 discoverable: 公開嘟文及個人檔案可能於各 Mastodon 功能中被推薦,並且您的個人檔案可能被推薦至其他使用者。 display_name: 完整名稱或暱稱。 fields: 烘培雞、自我認同代稱、年齡,及任何您想分享的。 @@ -143,6 +144,7 @@ zh-TW: url: 事件會被傳送至何處 labels: account: + attribution_domains_as_text: 僅允許特定網站 discoverable: 於探索演算法中推薦個人檔案及嘟文 fields: name: 標籤 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 5e8a3c912c6ae0..dcc6ff7fb5e06a 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -25,6 +25,7 @@ sq: admin: account_actions: action: Kryeje veprimin + already_silenced: Kjo llogari është kufizuar tashmë. already_suspended: Kjo llogari është pezulluar tashmë. title: Kryeni veprim moderimi te %{acct} account_moderation_notes: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 0cc47ca92eb367..7b45f28c92c6d3 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -183,14 +183,17 @@ sv: create_custom_emoji: Skapa egen emoji create_domain_allow: Skapa tillåten domän create_domain_block: Skapa blockerad domän + create_email_domain_block: Skapa E-post domän block create_ip_block: Skapa IP-regel create_unavailable_domain: Skapa otillgänglig domän create_user_role: Skapa roll demote_user: Degradera användare destroy_announcement: Radera kungörelse + destroy_canonical_email_block: Ta bort e-post block destroy_custom_emoji: Radera egen emoji destroy_domain_allow: Ta bort tillåten domän destroy_domain_block: Ta bort blockerad domän + destroy_email_domain_block: Ta bort E-post domän block destroy_instance: Rensa domänen destroy_ip_block: Radera IP-regel destroy_status: Radera inlägg @@ -233,6 +236,7 @@ sv: assigned_to_self_report_html: "%{name} tilldelade rapporten %{target} till sig själva" change_email_user_html: "%{name} bytte e-postadress för användaren %{target}" change_role_user_html: "%{name} ändrade roll för %{target}" + confirm_user_html: "%{name} bekräftad e-post adress av användare %{target}" create_account_warning_html: "%{name} skickade en varning till %{target}" create_announcement_html: "%{name} skapade kungörelsen %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index d8f5eff6e8eba8..785be3caf46fd4 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -25,7 +25,7 @@ tr: admin: account_actions: action: Eylemi gerçekleştir - already_silenced: Bu hesap zaten askıya alınmış. + already_silenced: Bu hesap zaten sınırlanmış. already_suspended: Bu hesap zaten askıya alınmış. title: "%{acct} üzerinde denetleme eylemi gerçekleştir" account_moderation_notes: @@ -1161,6 +1161,12 @@ tr: view_strikes: Hesabınıza yönelik eski eylemleri görüntüleyin too_fast: Form çok hızlı gönderildi, tekrar deneyin. use_security_key: Güvenlik anahtarını kullan + author_attribution: + example_title: Örnek metin + hint_html: Mastodon'da bağlantılar paylaşıldığında nasıl tanınmak istediğinizi denetleyin. + more_from_html: "%{name} kişisinden daha fazlası" + s_blog: "%{name} kişisinin Günlüğü" + title: Yazar atıfı challenge: confirm: Devam et hint_html: "İpucu: Önümüzdeki saat boyunca sana parolanı sormayacağız." @@ -1949,6 +1955,7 @@ tr: instructions_html: Aşağıdaki kodu kopyalayın ve websitenizin HTML'sine yapıştırın. Daha sonra "Profil Düzenle" sekmesini kullanarak profilinizdeki ek sahalardan birine websitenizin adresini ekleyin ve değişiklikleri kaydedin. verification: Doğrulama verified_links: Doğrulanmış bağlantılarınız + website_verification: Website doğrulama webauthn_credentials: add: Yeni güvenlik anahtarı ekle create: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 600239107ef68d..f5cd40bad7977f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -29,6 +29,7 @@ uk: admin: account_actions: action: Виконати дію + already_silenced: Цей обліковий запис вже обмежено. already_suspended: Цей обліковий запис вже було призупинено. title: Здійснити модераційну дію над %{acct} account_moderation_notes: @@ -1196,6 +1197,12 @@ uk: view_strikes: Переглянути попередні попередження вашому обліковому запису too_fast: Форму подано занадто швидко, спробуйте ще раз. use_security_key: Використовувати ключ безпеки + author_attribution: + example_title: Зразок тексту + hint_html: Контроль авторства поширених посилань на Mastodon. + more_from_html: Більше від %{name} + s_blog: Блог %{name} + title: Атрибути авторства challenge: confirm: Далі hint_html: "Підказка: ми не будемо запитувати ваш пароль впродовж наступної години." @@ -2014,6 +2021,7 @@ uk: instructions_html: Скопіюйте та вставте наведений нижче код у HTML-код вашого сайту. Потім додайте адресу свого сайту в одне з додаткових полів вашого профілю на вкладці «Редагувати профіль» і збережіть зміни. verification: Підтвердження verified_links: Ваші підтверджені посилання + website_verification: Підтвердження вебсайтів webauthn_credentials: add: Додати новий ключ безпеки create: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index b97ab65f04c8c4..747dcf37385598 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1143,6 +1143,12 @@ zh-CN: view_strikes: 查看针对你账号的记录 too_fast: 表单提交过快,请重试。 use_security_key: 使用安全密钥 + author_attribution: + example_title: 示例文本 + hint_html: 控制在 Mastodon 上分享的链接如何显示你的署名。 + more_from_html: 来自 %{name} 的更多内容 + s_blog: "%{name} 的博客" + title: 作者归属 challenge: confirm: 继续 hint_html: "注意:接下来一小时内我们不会再次要求你输入密码。" @@ -1916,6 +1922,7 @@ zh-CN: instructions_html: 将下面的代码复制并粘贴到你网站的HTML中。然后在“编辑个人资料”选项卡中的附加字段之一添加你网站的地址,并保存更改。 verification: 验证 verified_links: 你已验证的链接 + website_verification: 网站验证 webauthn_credentials: add: 添加新的安全密钥 create: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 052773e3281f08..8eab176d7d7363 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1145,6 +1145,12 @@ zh-TW: view_strikes: 檢視針對您帳號過去的警示 too_fast: 送出表單的速度太快跟不上,請稍後再試。 use_security_key: 使用安全金鑰 + author_attribution: + example_title: 範例文字 + hint_html: 控制如何於 Mastodon 上分享連結時註明您的貢獻。 + more_from_html: 來自 %{name} 之更多內容 + s_blog: "%{name} 的部落格" + title: 作者署名 challenge: confirm: 繼續 hint_html: "温馨小提醒: 我們於接下來一小時內不會再要求您輸入密碼。" @@ -1918,6 +1924,7 @@ zh-TW: instructions_html: 複製及貼上以下程式碼至您個人網站之 HTML 中。接著透過「編輯個人檔案」將您網站網址加入您個人網站之額外欄位中,並儲存變更。 verification: 驗證連結 verified_links: 已驗證連結 + website_verification: 網站驗證 webauthn_credentials: add: 新增安全金鑰 create: From a27f7f4e561c9d2fe21d984059603d2f500c005b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:59:46 +0200 Subject: [PATCH 09/36] Update typescript-eslint monorepo to v8 (major) (#31231) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renaud Chaput --- .eslintrc.js | 2 +- app/javascript/mastodon/actions/markers.ts | 2 +- app/javascript/mastodon/actions/streaming.js | 2 +- app/javascript/mastodon/common.js | 2 +- .../mastodon/components/error_boundary.jsx | 4 +- .../features/interaction_modal/index.jsx | 2 +- app/javascript/mastodon/features/ui/index.jsx | 4 +- .../mastodon/locales/intl_provider.tsx | 2 +- app/javascript/mastodon/settings.js | 7 +- .../mastodon/store/middlewares/errors.ts | 2 +- .../mastodon/store/middlewares/sounds.ts | 2 +- package.json | 4 +- yarn.lock | 141 ++++++++++-------- 13 files changed, 99 insertions(+), 77 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d1182628263db2..b6e4253e61dfff 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -316,7 +316,7 @@ module.exports = defineConfig({ ], parserOptions: { - project: true, + projectService: true, tsconfigRootDir: __dirname, }, diff --git a/app/javascript/mastodon/actions/markers.ts b/app/javascript/mastodon/actions/markers.ts index 521859f6c25b42..6254e3f083ff12 100644 --- a/app/javascript/mastodon/actions/markers.ts +++ b/app/javascript/mastodon/actions/markers.ts @@ -65,7 +65,7 @@ export const synchronouslySubmitMarkers = createAppAsyncThunk( client.setRequestHeader('Content-Type', 'application/json'); client.setRequestHeader('Authorization', `Bearer ${accessToken}`); client.send(JSON.stringify(params)); - } catch (e) { + } catch { // Do not make the BeforeUnload handler error out } }, diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index bfdd894b81561d..03013110c38779 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -151,7 +151,7 @@ async function refreshHomeTimelineAndNotification(dispatch, getState) { // TODO: polling for merged notifications try { await dispatch(pollRecentGroupNotifications()); - } catch (error) { + } catch { // TODO } } else { diff --git a/app/javascript/mastodon/common.js b/app/javascript/mastodon/common.js index 28857de5346c20..c61e02250c234c 100644 --- a/app/javascript/mastodon/common.js +++ b/app/javascript/mastodon/common.js @@ -5,7 +5,7 @@ export function start() { try { Rails.start(); - } catch (e) { + } catch { // If called twice } } diff --git a/app/javascript/mastodon/components/error_boundary.jsx b/app/javascript/mastodon/components/error_boundary.jsx index 7fea08e85f6ef6..392a3ad61e26d1 100644 --- a/app/javascript/mastodon/components/error_boundary.jsx +++ b/app/javascript/mastodon/components/error_boundary.jsx @@ -60,8 +60,8 @@ export default class ErrorBoundary extends PureComponent { try { textarea.select(); document.execCommand('copy'); - } catch (e) { - + } catch { + // do nothing } finally { document.body.removeChild(textarea); } diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index 07f1e6fe5a1e31..723e27ae1c7857 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -131,7 +131,7 @@ class LoginForm extends React.PureComponent { try { new URL(url); return true; - } catch(_) { + } catch { return false; } }; diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index 657c9e9e583df0..a6e3640478464c 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -319,8 +319,8 @@ class UI extends PureComponent { try { e.dataTransfer.dropEffect = 'copy'; - } catch (err) { - + } catch { + // do nothing } return false; diff --git a/app/javascript/mastodon/locales/intl_provider.tsx b/app/javascript/mastodon/locales/intl_provider.tsx index 68d4fcbd965191..94372f95b0fc41 100644 --- a/app/javascript/mastodon/locales/intl_provider.tsx +++ b/app/javascript/mastodon/locales/intl_provider.tsx @@ -17,7 +17,7 @@ function onProviderError(error: unknown) { error && typeof error === 'object' && error instanceof Error && - error.message.match('MISSING_DATA') + /MISSING_DATA/.exec(error.message) ) { console.warn(error.message); } diff --git a/app/javascript/mastodon/settings.js b/app/javascript/mastodon/settings.js index f31aee0afc0725..f4883dc406cdb5 100644 --- a/app/javascript/mastodon/settings.js +++ b/app/javascript/mastodon/settings.js @@ -14,7 +14,7 @@ export default class Settings { const encodedData = JSON.stringify(data); localStorage.setItem(key, encodedData); return data; - } catch (e) { + } catch { return null; } } @@ -24,7 +24,7 @@ export default class Settings { try { const rawData = localStorage.getItem(key); return JSON.parse(rawData); - } catch (e) { + } catch { return null; } } @@ -35,7 +35,8 @@ export default class Settings { const key = this.generateKey(id); try { localStorage.removeItem(key); - } catch (e) { + } catch { + // ignore if the key is not found } } return data; diff --git a/app/javascript/mastodon/store/middlewares/errors.ts b/app/javascript/mastodon/store/middlewares/errors.ts index e77cec34ed9fb6..3ad3844d5b7c2f 100644 --- a/app/javascript/mastodon/store/middlewares/errors.ts +++ b/app/javascript/mastodon/store/middlewares/errors.ts @@ -30,7 +30,7 @@ function isActionWithmaybeAlertParams( return isAction(action); } -// eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged +// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- we need to use `{}` here to ensure the dispatch types can be merged export const errorsMiddleware: Middleware<{}, RootState> = ({ dispatch }) => (next) => diff --git a/app/javascript/mastodon/store/middlewares/sounds.ts b/app/javascript/mastodon/store/middlewares/sounds.ts index 91407b1ec0a1dd..bb3a4aa4740d4f 100644 --- a/app/javascript/mastodon/store/middlewares/sounds.ts +++ b/app/javascript/mastodon/store/middlewares/sounds.ts @@ -51,7 +51,7 @@ const play = (audio: HTMLAudioElement) => { }; export const soundsMiddleware = (): Middleware< - // eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged + // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- we need to use `{}` here to ensure the dispatch types can be merged {}, RootState > => { diff --git a/package.json b/package.json index ddf7ee75a2343b..ea0c0246cb7b0b 100644 --- a/package.json +++ b/package.json @@ -168,8 +168,8 @@ "@types/requestidlecallback": "^0.3.5", "@types/webpack": "^4.41.33", "@types/webpack-env": "^1.18.4", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "babel-jest": "^29.5.0", "eslint": "^8.41.0", "eslint-define-config": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 90e764f49c6bdc..f498a5560e69fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,7 +82,19 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.4, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.7.2": + version: 7.25.0 + resolution: "@babel/generator@npm:7.25.0" + dependencies: + "@babel/types": "npm:^7.25.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/d0e2dfcdc8bdbb5dded34b705ceebf2e0bc1b06795a1530e64fb6a3ccf313c189db7f60c1616effae48114e1a25adc75855bc4496f3779a396b3377bae718ce7 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.4": version: 7.25.4 resolution: "@babel/generator@npm:7.25.4" dependencies: @@ -1521,7 +1533,18 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.25.2 + resolution: "@babel/types@npm:7.25.2" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/e489435856be239f8cc1120c90a197e4c2865385121908e5edb7223cfdff3768cba18f489adfe0c26955d9e7bbb1fb10625bc2517505908ceb0af848989bd864 + languageName: node + linkType: hard + +"@babel/types@npm:^7.25.4": version: 7.25.4 resolution: "@babel/types@npm:7.25.4" dependencies: @@ -2791,8 +2814,8 @@ __metadata: "@types/requestidlecallback": "npm:^0.3.5" "@types/webpack": "npm:^4.41.33" "@types/webpack-env": "npm:^1.18.4" - "@typescript-eslint/eslint-plugin": "npm:^7.0.0" - "@typescript-eslint/parser": "npm:^7.0.0" + "@typescript-eslint/eslint-plugin": "npm:^8.0.0" + "@typescript-eslint/parser": "npm:^8.0.0" arrow-key-navigation: "npm:^1.2.0" async-mutex: "npm:^0.5.0" axios: "npm:^1.4.0" @@ -4114,44 +4137,44 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.0.0": - version: 7.18.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" +"@typescript-eslint/eslint-plugin@npm:^8.0.0": + version: 8.1.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.1.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/type-utils": "npm:7.18.0" - "@typescript-eslint/utils": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.1.0" + "@typescript-eslint/type-utils": "npm:8.1.0" + "@typescript-eslint/utils": "npm:8.1.0" + "@typescript-eslint/visitor-keys": "npm:8.1.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^1.3.0" peerDependencies: - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/2b37948fa1b0dab77138909dabef242a4d49ab93e4019d4ef930626f0a7d96b03e696cd027fa0087881c20e73be7be77c942606b4a76fa599e6b37f6985304c3 + checksum: 10c0/7bbeae588f859b59c34d6a76cac06ef0fa605921b40c5d3b65b94829984280ea84c4dd3f5cb9ce2eb326f5563e9abb4c90ebff05c47f83f4def296c2ea1fa86c languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.0.0": - version: 7.18.0 - resolution: "@typescript-eslint/parser@npm:7.18.0" +"@typescript-eslint/parser@npm:^8.0.0": + version: 8.1.0 + resolution: "@typescript-eslint/parser@npm:8.1.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/typescript-estree": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.1.0" + "@typescript-eslint/types": "npm:8.1.0" + "@typescript-eslint/typescript-estree": "npm:8.1.0" + "@typescript-eslint/visitor-keys": "npm:8.1.0" debug: "npm:^4.3.4" peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/370e73fca4278091bc1b657f85e7d74cd52b24257ea20c927a8e17546107ce04fbf313fec99aed0cc2a145ddbae1d3b12e9cc2c1320117636dc1281bcfd08059 + checksum: 10c0/b94b2d3ab5ca505484d100701fad6a04a5dc8d595029bac1b9f5b8a4a91d80fd605b0f65d230b36a97ab7e5d55eeb0c28af2ab63929a3e4ab8fdefd2a548c36b languageName: node linkType: hard @@ -4165,30 +4188,28 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/scope-manager@npm:7.18.0" +"@typescript-eslint/scope-manager@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/scope-manager@npm:8.1.0" dependencies: - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" - checksum: 10c0/038cd58c2271de146b3a594afe2c99290034033326d57ff1f902976022c8b0138ffd3cb893ae439ae41003b5e4bcc00cabf6b244ce40e8668f9412cc96d97b8e + "@typescript-eslint/types": "npm:8.1.0" + "@typescript-eslint/visitor-keys": "npm:8.1.0" + checksum: 10c0/2bcf8cd176a1819bddcae16c572e7da8fba821b995a91cd53d64d8d6b85a17f5a895522f281ba57e34929574bddd4d6684ee3e545ec4e8096be4c3198e253a9a languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/type-utils@npm:7.18.0" +"@typescript-eslint/type-utils@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/type-utils@npm:8.1.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.18.0" - "@typescript-eslint/utils": "npm:7.18.0" + "@typescript-eslint/typescript-estree": "npm:8.1.0" + "@typescript-eslint/utils": "npm:8.1.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" - peerDependencies: - eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/ad92a38007be620f3f7036f10e234abdc2fdc518787b5a7227e55fd12896dacf56e8b34578723fbf9bea8128df2510ba8eb6739439a3879eda9519476d5783fd + checksum: 10c0/62753941c4136e8d2daa72fe0410dea48e5317a6f12ece6382ca85e29912bd1b3f739b61d1060fc0a1f8c488dfc905beab4c8b8497951a21c3138a659c7271ec languageName: node linkType: hard @@ -4199,10 +4220,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/types@npm:7.18.0" - checksum: 10c0/eb7371ac55ca77db8e59ba0310b41a74523f17e06f485a0ef819491bc3dd8909bb930120ff7d30aaf54e888167e0005aa1337011f3663dc90fb19203ce478054 +"@typescript-eslint/types@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/types@npm:8.1.0" + checksum: 10c0/ceade44455f45974e68956016c4d1c6626580732f7f9675e14ffa63db80b551752b0df596b20473dae9f0dc6ed966e17417dc2cf36e1a82b6ab0edc97c5eaa50 languageName: node linkType: hard @@ -4225,12 +4246,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" +"@typescript-eslint/typescript-estree@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.1.0" dependencies: - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/types": "npm:8.1.0" + "@typescript-eslint/visitor-keys": "npm:8.1.0" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -4240,21 +4261,21 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/0c7f109a2e460ec8a1524339479cf78ff17814d23c83aa5112c77fb345e87b3642616291908dcddea1e671da63686403dfb712e4a4435104f92abdfddf9aba81 + checksum: 10c0/a7bc8275df1c79c4cb14ef086c56674316dd4907efec53eddca35d0b5220428b69c82178ce2d95138da2e398269c8bd0764cae8020a36417e411e35c3c47bc4b languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/utils@npm:7.18.0" +"@typescript-eslint/utils@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/utils@npm:8.1.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/typescript-estree": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.1.0" + "@typescript-eslint/types": "npm:8.1.0" + "@typescript-eslint/typescript-estree": "npm:8.1.0" peerDependencies: - eslint: ^8.56.0 - checksum: 10c0/a25a6d50eb45c514469a01ff01f215115a4725fb18401055a847ddf20d1b681409c4027f349033a95c4ff7138d28c3b0a70253dfe8262eb732df4b87c547bd1e + eslint: ^8.57.0 || ^9.0.0 + checksum: 10c0/c95503a6bdcd98b1ff04d1adbf46377b2036b1c510d90a4a056401f996f775f06c3108c95fb81cd6babc9c97b73b91b8e848f0337bc508de8a49c993582f0e75 languageName: node linkType: hard @@ -4285,13 +4306,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" +"@typescript-eslint/visitor-keys@npm:8.1.0": + version: 8.1.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.1.0" dependencies: - "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/types": "npm:8.1.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/538b645f8ff1d9debf264865c69a317074eaff0255e63d7407046176b0f6a6beba34a6c51d511f12444bae12a98c69891eb6f403c9f54c6c2e2849d1c1cb73c0 + checksum: 10c0/b7544dbb0eec1ddbfcd95c04b51b9a739c2e768c16d1c88508f976a2b0d1bc02fefb7491930e06e48073a5c07c6f488cd8403bba3a8b918888b93a88d5ac3869 languageName: node linkType: hard From 7d53ca56d200dc0c3c8c6491d9e25aa8965e8d52 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 09:54:53 +0200 Subject: [PATCH 10/36] New Crowdin Translations (automated) (#31878) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/cy.json | 5 ++++- app/javascript/mastodon/locales/es-AR.json | 1 + config/locales/activerecord.cy.yml | 6 ++++++ config/locales/activerecord.es-AR.yml | 6 ++++++ config/locales/activerecord.sq.yml | 6 ++++++ config/locales/activerecord.sv.yml | 4 ++++ config/locales/cy.yml | 8 ++++++++ config/locales/es-AR.yml | 7 +++++++ config/locales/simple_form.cy.yml | 2 ++ config/locales/simple_form.es-AR.yml | 2 ++ config/locales/simple_form.sq.yml | 2 ++ config/locales/sq.yml | 7 +++++++ config/locales/sv.yml | 9 +++++++++ 13 files changed, 64 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index d34b7a970d7a8a..7f058d8912faf2 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -97,7 +97,7 @@ "block_modal.title": "Blocio defnyddiwr?", "block_modal.you_wont_see_mentions": "Fyddwch chi ddim yn gweld postiadau sy'n sôn amdanyn nhw.", "boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa", - "boost_modal.reblog": "Hybu postiad", + "boost_modal.reblog": "Hybu postiad?", "boost_modal.undo_reblog": "Dad-hybu postiad?", "bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall", "bundle_column_error.error.body": "Nid oedd modd cynhyrchu'r dudalen honno. Gall fod oherwydd gwall yn ein cod neu fater cydnawsedd porwr.", @@ -457,6 +457,7 @@ "lists.subheading": "Eich rhestrau", "load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}", "loading_indicator.label": "Yn llwytho…", + "media_gallery.hide": "Cuddio", "moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.", "mute_modal.hide_from_notifications": "Cuddio rhag hysbysiadau", "mute_modal.hide_options": "Cuddio'r dewis", @@ -779,6 +780,7 @@ "status.bookmark": "Llyfrnodi", "status.cancel_reblog_private": "Dadhybu", "status.cannot_reblog": "Nid oes modd hybu'r postiad hwn", + "status.continued_thread": "Edefyn parhaus", "status.copy": "Copïo dolen i'r post", "status.delete": "Dileu", "status.detailed_status": "Golwg manwl o'r sgwrs", @@ -812,6 +814,7 @@ "status.reblogs.empty": "Does neb wedi hybio'r post yma eto. Pan y bydd rhywun yn gwneud, byddent yn ymddangos yma.", "status.redraft": "Dileu ac ailddrafftio", "status.remove_bookmark": "Tynnu nod tudalen", + "status.replied_in_thread": "Atebodd mewn edefyn", "status.replied_to": "Wedi ateb {name}", "status.reply": "Ateb", "status.replyAll": "Ateb i edefyn", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index a0f91c47608a68..dfba0fe5d97f20 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -457,6 +457,7 @@ "lists.subheading": "Tus listas", "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}", "loading_indicator.label": "Cargando…", + "media_gallery.hide": "Ocultar", "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.", "mute_modal.hide_from_notifications": "Ocultar en las notificaciones", "mute_modal.hide_options": "Ocultar opciones", diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml index 73b54d554e314f..0ad257db509707 100644 --- a/config/locales/activerecord.cy.yml +++ b/config/locales/activerecord.cy.yml @@ -15,6 +15,12 @@ cy: user/invite_request: text: Rheswm errors: + attributes: + domain: + invalid: "- nid yw'n enw parth dilys" + messages: + invalid_domain_on_line: Nid yw %{value} yn enw parth dilys + too_many_lines: "- dros y terfyn o %{limit} llinell" models: account: attributes: diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml index 71b7f9732d26d7..ba4d148c8b368f 100644 --- a/config/locales/activerecord.es-AR.yml +++ b/config/locales/activerecord.es-AR.yml @@ -15,6 +15,12 @@ es-AR: user/invite_request: text: Motivo errors: + attributes: + domain: + invalid: no es un nombre de dominio válido + messages: + invalid_domain_on_line: "%{value} no es un nombre de dominio válido" + too_many_lines: está por encima del límite de %{limit} líneas models: account: attributes: diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml index 9c548bda04f7f7..888a17a1c89bc5 100644 --- a/config/locales/activerecord.sq.yml +++ b/config/locales/activerecord.sq.yml @@ -15,6 +15,12 @@ sq: user/invite_request: text: Arsye errors: + attributes: + domain: + invalid: s’është emër i vlefshëm përkatësie + messages: + invalid_domain_on_line: "%{value} s’është emër i vlefshëm përkatësie" + too_many_lines: është tej kufirit prej %{limit} rreshta models: account: attributes: diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 1679dae46e0a5c..6ac96d9ea9a1e8 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -15,8 +15,12 @@ sv: user/invite_request: text: Anledning errors: + attributes: + domain: + invalid: är inte ett giltigt domännamn messages: invalid_domain_on_line: "%{value} Är inte ett giltigt domännamn" + too_many_lines: överskrider gränsen på %{limit} rader models: account: attributes: diff --git a/config/locales/cy.yml b/config/locales/cy.yml index d317efad3f5834..2e425bb4979c75 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -33,6 +33,7 @@ cy: admin: account_actions: action: Cyflawni gweithred + already_silenced: Mae'r cyfrif hwn eisoes wedi'i gyfyngu. already_suspended: Mae'r cyfrif hwn eisoes wedi'i atal. title: Cyflawni gweithred cymedroli ar %{acct} account_moderation_notes: @@ -1232,6 +1233,12 @@ cy: view_strikes: Gweld rybuddion y gorffennol yn erbyn eich cyfrif too_fast: Cafodd y ffurflen ei chyflwyno'n rhy gyflym, ceisiwch eto. use_security_key: Defnyddiwch allwedd diogelwch + author_attribution: + example_title: Testun enghreifftiol + hint_html: Rheolwch sut rydych chi'n cael eich canmol pan fydd dolenni'n cael eu rhannu ar Mastodon. + more_from_html: Mwy gan %{name} + s_blog: Blog %{name} + title: Priodoliad awdur challenge: confirm: Parhau hint_html: "Awgrym: Fyddwn ni ddim yn gofyn i chi am eich cyfrinair eto am yr awr nesaf." @@ -2080,6 +2087,7 @@ cy: instructions_html: Copïwch a gludo'r cod isod i HTML eich gwefan. Yna ychwanegwch gyfeiriad eich gwefan i un o'r meysydd ychwanegol ar eich proffil o'r tab "Golygu proffil" a chadw'r newidiadau. verification: Dilysu verified_links: Eich dolenni wedi'u dilysu + website_verification: Gwirio gwefan webauthn_credentials: add: Ychwanegu allwedd ddiogelwch newydd create: diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index f4d88d73237fc7..63d2adc47c64fc 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1161,6 +1161,12 @@ es-AR: view_strikes: Ver incumplimientos pasados contra tu cuenta too_fast: Formulario enviado demasiado rápido, probá de nuevo. use_security_key: Usar la llave de seguridad + author_attribution: + example_title: Texto de ejemplo + hint_html: Controlá cómo se te da crédito cuando los enlaces son compartidos en Mastodon. + more_from_html: Más de %{name} + s_blog: Blog de %{name} + title: Atribución del autor challenge: confirm: Continuar hint_html: "Dato: No volveremos a preguntarte por la contraseña durante la siguiente hora." @@ -1949,6 +1955,7 @@ es-AR: instructions_html: Copiá y pegá el siguiente código en el HTML de tu sitio web. Luego, agregá la dirección de tu sitio web en uno de los campos extras de tu perfil desde la pestaña "Editar perfil" y guardá los cambios. verification: Verificación verified_links: Tus enlaces verificados + website_verification: Verificación del sitio web webauthn_credentials: add: Agregar nueva llave de seguridad create: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 56586ecc968a11..56d1f873dcf110 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -3,6 +3,7 @@ cy: simple_form: hints: account: + attribution_domains_as_text: Yn amddiffyn rhag priodoliadau ffug. discoverable: Mae'n bosibl y bydd eich postiadau cyhoeddus a'ch proffil yn cael sylw neu'n cael eu hargymell mewn gwahanol feysydd o Mastodon ac efallai y bydd eich proffil yn cael ei awgrymu i ddefnyddwyr eraill. display_name: Eich enw llawn neu'ch enw hwyl. fields: Eich tudalen cartref, rhagenwau, oed, neu unrhyw beth. @@ -143,6 +144,7 @@ cy: url: I ble bydd digwyddiadau'n cael eu hanfon labels: account: + attribution_domains_as_text: Dim ond yn caniatáu gwefannau penodol discoverable: Proffil nodwedd a phostiadau mewn algorithmau darganfod fields: name: Label diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 70573c75f4b6e8..d06d09761ad512 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -3,6 +3,7 @@ es-AR: simple_form: hints: account: + attribution_domains_as_text: Protege de atribuciones falsas. discoverable: Tu perfil y publicaciones pueden ser destacadas o recomendadas en varias áreas de Mastodon, y tu perfil puede ser sugerido a otros usuarios. display_name: Tu nombre completo o tu pseudónimo. fields: Tu sitio web, pronombres, edad, o lo que quieras. @@ -143,6 +144,7 @@ es-AR: url: Adónde serán enviados los eventos labels: account: + attribution_domains_as_text: Solo permitir sitios web específicos discoverable: Destacar perfil y mensajes en algoritmos de descubrimiento fields: name: Nombre de campo diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 3d865572824706..169f4a02dee4c5 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -3,6 +3,7 @@ sq: simple_form: hints: account: + attribution_domains_as_text: Mbron nga atribuime të rreme. discoverable: Postimet dhe profili juaj publik mund të shfaqen, ose rekomandohen në zona të ndryshme të Mastodon-it dhe profili juaj mund të sugjerohet përdoruesve të tjerë. display_name: Emri juaj i plotë, ose emri juaj lojcak. fields: Faqja juaj hyrëse, përemra, moshë, ç’të keni qejf. @@ -143,6 +144,7 @@ sq: url: Ku do të dërgohen aktet labels: account: + attribution_domains_as_text: Lejo vetëm sajte specifikë discoverable: Profilin dhe postimet bëji objekt të algoritmeve të zbulimit fields: name: Etiketë diff --git a/config/locales/sq.yml b/config/locales/sq.yml index dcc6ff7fb5e06a..241dc08b224cfb 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1153,6 +1153,12 @@ sq: view_strikes: Shihni paralajmërime të dikurshme kundër llogarisë tuaj too_fast: Formulari u parashtrua shumë shpejt, riprovoni. use_security_key: Përdor kyç sigurie + author_attribution: + example_title: Tekst shembull + hint_html: Kontrolloni se si vlerësoheni, kur ndahen lidhje me të tjerë në Mastodon. + more_from_html: Më tepër nga %{name} + s_blog: Blogu i %{name} + title: Atribuim autorësh challenge: confirm: Vazhdo hint_html: "Ndihmëz: S’do t’ju pyesim për fjalëkalimin tuaj sërish, për një orë." @@ -1941,6 +1947,7 @@ sq: instructions_html: Kopjoni dhe ngjitni në HTML-në e sajtit tuaj kodin më poshtë. Mandej shtoni adresën e sajtit tuaj te një nga fushat shtesë në profilin tuaj, që nga skeda “Përpunoni profil” dhe ruani ndryshimet. verification: Verifikim verified_links: Lidhjet tuaja të verifikuara + website_verification: Verifikim sajti webauthn_credentials: add: Shtoni kyç të ri sigurie create: diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 7b45f28c92c6d3..c8ddc346a5faf5 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -180,6 +180,7 @@ sv: confirm_user: Bekräfta användare create_account_warning: Skapa varning create_announcement: Skapa kungörelse + create_canonical_email_block: Skapa E-post block create_custom_emoji: Skapa egen emoji create_domain_allow: Skapa tillåten domän create_domain_block: Skapa blockerad domän @@ -239,17 +240,21 @@ sv: confirm_user_html: "%{name} bekräftad e-post adress av användare %{target}" create_account_warning_html: "%{name} skickade en varning till %{target}" create_announcement_html: "%{name} skapade kungörelsen %{target}" + create_canonical_email_block_html: "%{name} blockade e-posten med %{target}" create_custom_emoji_html: "%{name} laddade upp ny emoji %{target}" create_domain_allow_html: "%{name} vitlistade domän %{target}" create_domain_block_html: "%{name} blockerade domänen %{target}" + create_email_domain_block_html: "%{name} blockerade e-post domänet%{target}" create_ip_block_html: "%{name} skapade regel för IP %{target}" create_unavailable_domain_html: "%{name} stoppade leverans till domänen %{target}" create_user_role_html: "%{name} skapade rollen %{target}" demote_user_html: "%{name} nedgraderade användare %{target}" destroy_announcement_html: "%{name} raderade kungörelsen %{target}" + destroy_canonical_email_block_html: "%{name} avblockerade e-post med hash%{target}" destroy_custom_emoji_html: "%{name} raderade emoji %{target}" destroy_domain_allow_html: "%{name} raderade domän %{target} från vitlistan" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" + destroy_email_domain_block_html: "%{name} avblockerade e-post domänet %{target}" destroy_instance_html: "%{name} rensade domän %{target}" destroy_ip_block_html: "%{name} tog bort regel för IP %{target}" destroy_status_html: "%{name} tog bort inlägget av %{target}" @@ -870,7 +875,9 @@ sv: message_html: "Din objektlagring är felkonfigurerad. Sekretessen för dina användare är i riskzonen." tags: moderation: + reviewed: Granskat title: Status + trendable: name: Namn reset: Återställ review: Granskningsstatus @@ -1112,6 +1119,8 @@ sv: view_strikes: Visa tidigare prickar på ditt konto too_fast: Formuläret har skickats för snabbt, försök igen. use_security_key: Använd säkerhetsnyckel + author_attribution: + example_title: Exempeltext challenge: confirm: Fortsätt hint_html: "Tips: Vi frågar dig inte efter ditt lösenord igen under nästkommande timme." From f2a92c2d22345568ca7f47ee1d1d70de53eb547d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 12 Sep 2024 10:16:07 +0200 Subject: [PATCH 11/36] Fix notifications re-rendering spuriously in web UI (#31879) --- .../components/notification_mention.tsx | 4 ++- .../features/notifications_v2/index.tsx | 3 ++- .../features/ui/containers/modal_container.js | 4 ++- .../ui/containers/notifications_container.js | 19 +++----------- app/javascript/mastodon/selectors/index.js | 25 ++++++++++++++----- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx index 1929446bb22f94..d53cb37a834f06 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx @@ -1,5 +1,7 @@ import { FormattedMessage } from 'react-intl'; +import { isEqual } from 'lodash'; + import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; import ReplyIcon from '@/material-icons/400-24px/reply-fill.svg?react'; import { me } from 'mastodon/initial_state'; @@ -47,7 +49,7 @@ export const NotificationMention: React.FC<{ status.get('visibility') === 'direct', status.get('in_reply_to_account_id') === me, ] as const; - }); + }, isEqual); let labelRenderer = mentionLabelRenderer; diff --git a/app/javascript/mastodon/features/notifications_v2/index.tsx b/app/javascript/mastodon/features/notifications_v2/index.tsx index 29c49e05c814a2..730d95bcd5a4e0 100644 --- a/app/javascript/mastodon/features/notifications_v2/index.tsx +++ b/app/javascript/mastodon/features/notifications_v2/index.tsx @@ -4,6 +4,7 @@ import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { Helmet } from 'react-helmet'; +import { isEqual } from 'lodash'; import { useDebouncedCallback } from 'use-debounce'; import DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react'; @@ -62,7 +63,7 @@ export const Notifications: React.FC<{ multiColumn?: boolean; }> = ({ columnId, multiColumn }) => { const intl = useIntl(); - const notifications = useAppSelector(selectNotificationGroups); + const notifications = useAppSelector(selectNotificationGroups, isEqual); const dispatch = useAppDispatch(); const isLoading = useAppSelector((s) => s.notificationGroups.isLoading); const hasMore = notifications.at(-1)?.type === 'gap'; diff --git a/app/javascript/mastodon/features/ui/containers/modal_container.js b/app/javascript/mastodon/features/ui/containers/modal_container.js index 1c3872cd50436f..63c568f8479c80 100644 --- a/app/javascript/mastodon/features/ui/containers/modal_container.js +++ b/app/javascript/mastodon/features/ui/containers/modal_container.js @@ -3,10 +3,12 @@ import { connect } from 'react-redux'; import { openModal, closeModal } from '../../../actions/modal'; import ModalRoot from '../components/modal_root'; +const defaultProps = {}; + const mapStateToProps = state => ({ ignoreFocus: state.getIn(['modal', 'ignoreFocus']), type: state.getIn(['modal', 'stack', 0, 'modalType'], null), - props: state.getIn(['modal', 'stack', 0, 'modalProps'], {}), + props: state.getIn(['modal', 'stack', 0, 'modalProps'], defaultProps), }); const mapDispatchToProps = dispatch => ({ diff --git a/app/javascript/mastodon/features/ui/containers/notifications_container.js b/app/javascript/mastodon/features/ui/containers/notifications_container.js index 3d60cfdad1b24a..b8aa9bc46142ae 100644 --- a/app/javascript/mastodon/features/ui/containers/notifications_container.js +++ b/app/javascript/mastodon/features/ui/containers/notifications_container.js @@ -4,24 +4,11 @@ import { connect } from 'react-redux'; import { NotificationStack } from 'react-notification'; -import { dismissAlert } from '../../../actions/alerts'; -import { getAlerts } from '../../../selectors'; - -const formatIfNeeded = (intl, message, values) => { - if (typeof message === 'object') { - return intl.formatMessage(message, values); - } - - return message; -}; +import { dismissAlert } from 'mastodon/actions/alerts'; +import { getAlerts } from 'mastodon/selectors'; const mapStateToProps = (state, { intl }) => ({ - notifications: getAlerts(state).map(alert => ({ - ...alert, - action: formatIfNeeded(intl, alert.action, alert.values), - title: formatIfNeeded(intl, alert.title, alert.values), - message: formatIfNeeded(intl, alert.message, alert.values), - })), + notifications: getAlerts(state, { intl }), }); const mapDispatchToProps = (dispatch) => ({ diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index bd9b53919c3a90..10e1b167cacee1 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -7,14 +7,16 @@ import { me } from '../initial_state'; export { makeGetAccount } from "./accounts"; -const getFilters = (state, { contextType }) => { - if (!contextType) return null; +const getFilters = createSelector([state => state.get('filters'), (_, { contextType }) => contextType], (filters, contextType) => { + if (!contextType) { + return null; + } - const serverSideType = toServerSideType(contextType); const now = new Date(); + const serverSideType = toServerSideType(contextType); - return state.get('filters').filter((filter) => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || filter.get('expires_at') > now)); -}; + return filters.filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || filter.get('expires_at') > now)); +}); export const makeGetStatus = () => { return createSelector( @@ -73,10 +75,21 @@ const ALERT_DEFAULTS = { style: false, }; -export const getAlerts = createSelector(state => state.get('alerts'), alerts => +const formatIfNeeded = (intl, message, values) => { + if (typeof message === 'object') { + return intl.formatMessage(message, values); + } + + return message; +}; + +export const getAlerts = createSelector([state => state.get('alerts'), (_, { intl }) => intl], (alerts, intl) => alerts.map(item => ({ ...ALERT_DEFAULTS, ...item, + action: formatIfNeeded(intl, item.action, item.values), + title: formatIfNeeded(intl, item.title, item.values), + message: formatIfNeeded(intl, item.message, item.values), })).toArray()); export const makeGetNotification = () => createSelector([ From 3d46f478174403a64bd194e8c60e11b07bbd5d2d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 12 Sep 2024 11:41:19 +0200 Subject: [PATCH 12/36] Change embedded posts to use web UI (#31766) Co-authored-by: Claire --- app/helpers/accounts_helper.rb | 8 - app/helpers/media_component_helper.rb | 36 -- app/javascript/entrypoints/embed.tsx | 74 ++++ app/javascript/entrypoints/public.tsx | 37 -- app/javascript/hooks/useRenderSignal.ts | 32 ++ app/javascript/mastodon/actions/statuses.js | 6 +- app/javascript/mastodon/components/logo.tsx | 7 + .../mastodon/components/more_from_author.jsx | 6 +- .../features/standalone/status/index.tsx | 87 ++++ .../status/components/detailed_status.jsx | 322 --------------- .../status/components/detailed_status.tsx | 390 ++++++++++++++++++ .../containers/detailed_status_container.js | 140 ------- .../mastodon/features/status/index.jsx | 2 +- app/javascript/styles/application.scss | 1 - .../styles/mastodon/components.scss | 31 +- app/javascript/styles/mastodon/statuses.scss | 152 ------- app/serializers/oembed_serializer.rb | 20 +- app/views/layouts/embedded.html.haml | 2 +- app/views/statuses/_detailed_status.html.haml | 80 ---- app/views/statuses/_poll.html.haml | 36 -- app/views/statuses/_simple_status.html.haml | 70 ---- app/views/statuses/_status.html.haml | 2 - app/views/statuses/embed.html.haml | 3 +- config/locales/af.yml | 1 - config/locales/an.yml | 12 - config/locales/ar.yml | 20 - config/locales/ast.yml | 9 - config/locales/be.yml | 16 - config/locales/bg.yml | 12 - config/locales/bn.yml | 1 - config/locales/br.yml | 4 - config/locales/ca.yml | 12 - config/locales/ckb.yml | 12 - config/locales/co.yml | 12 - config/locales/cs.yml | 16 - config/locales/cy.yml | 20 - config/locales/da.yml | 12 - config/locales/de.yml | 12 - config/locales/el.yml | 12 - config/locales/en-GB.yml | 12 - config/locales/en.yml | 12 - config/locales/eo.yml | 12 - config/locales/es-AR.yml | 12 - config/locales/es-MX.yml | 12 - config/locales/es.yml | 12 - config/locales/et.yml | 12 - config/locales/eu.yml | 12 - config/locales/fa.yml | 12 - config/locales/fi.yml | 12 - config/locales/fo.yml | 12 - config/locales/fr-CA.yml | 12 - config/locales/fr.yml | 12 - config/locales/fy.yml | 12 - config/locales/ga.yml | 18 - config/locales/gd.yml | 16 - config/locales/gl.yml | 12 - config/locales/he.yml | 16 - config/locales/hi.yml | 1 - config/locales/hr.yml | 14 - config/locales/hu.yml | 12 - config/locales/hy.yml | 12 - config/locales/ia.yml | 12 - config/locales/id.yml | 10 - config/locales/ie.yml | 12 - config/locales/io.yml | 12 - config/locales/is.yml | 12 - config/locales/it.yml | 12 - config/locales/ja.yml | 10 - config/locales/ka.yml | 3 - config/locales/kab.yml | 12 - config/locales/kk.yml | 12 - config/locales/ko.yml | 10 - config/locales/ku.yml | 12 - config/locales/la.yml | 1 - config/locales/lad.yml | 12 - config/locales/lt.yml | 6 - config/locales/lv.yml | 14 - config/locales/ml.yml | 1 - config/locales/ms.yml | 10 - config/locales/my.yml | 10 - config/locales/nl.yml | 12 - config/locales/nn.yml | 12 - config/locales/no.yml | 12 - config/locales/oc.yml | 12 - config/locales/pa.yml | 1 - config/locales/pl.yml | 16 - config/locales/pt-BR.yml | 12 - config/locales/pt-PT.yml | 12 - config/locales/ro.yml | 14 - config/locales/ru.yml | 16 - config/locales/ry.yml | 1 - config/locales/sc.yml | 12 - config/locales/sco.yml | 12 - config/locales/si.yml | 12 - config/locales/sk.yml | 16 - config/locales/sl.yml | 16 - config/locales/sq.yml | 12 - config/locales/sr-Latn.yml | 14 - config/locales/sr.yml | 14 - config/locales/sv.yml | 12 - config/locales/ta.yml | 2 - config/locales/te.yml | 1 - config/locales/th.yml | 10 - config/locales/tr.yml | 12 - config/locales/tt.yml | 7 - config/locales/uk.yml | 16 - config/locales/uz.yml | 2 - config/locales/vi.yml | 10 - config/locales/zgh.yml | 1 - config/locales/zh-CN.yml | 10 - config/locales/zh-HK.yml | 10 - config/locales/zh-TW.yml | 10 - public/embed.js | 105 +++-- spec/controllers/statuses_controller_spec.rb | 1 - spec/helpers/media_component_helper_spec.rb | 22 - 115 files changed, 710 insertions(+), 1928 deletions(-) create mode 100644 app/javascript/entrypoints/embed.tsx create mode 100644 app/javascript/hooks/useRenderSignal.ts create mode 100644 app/javascript/mastodon/features/standalone/status/index.tsx delete mode 100644 app/javascript/mastodon/features/status/components/detailed_status.jsx create mode 100644 app/javascript/mastodon/features/status/components/detailed_status.tsx delete mode 100644 app/javascript/mastodon/features/status/containers/detailed_status_container.js delete mode 100644 app/javascript/styles/mastodon/statuses.scss delete mode 100644 app/views/statuses/_detailed_status.html.haml delete mode 100644 app/views/statuses/_poll.html.haml delete mode 100644 app/views/statuses/_simple_status.html.haml delete mode 100644 app/views/statuses/_status.html.haml diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index 158a0815e123ae..d804566c935776 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -19,14 +19,6 @@ def acct(account) end end - def account_action_button(account) - return if account.memorial? || account.moved? - - link_to ActivityPub::TagManager.instance.url_for(account), class: 'button logo-button', target: '_new' do - safe_join([logo_as_symbol, t('accounts.follow')]) - end - end - def account_formatted_stat(value) number_to_human(value, precision: 3, strip_insignificant_zeros: true) end diff --git a/app/helpers/media_component_helper.rb b/app/helpers/media_component_helper.rb index fa8f34fb4d3d73..60ccdd08359038 100644 --- a/app/helpers/media_component_helper.rb +++ b/app/helpers/media_component_helper.rb @@ -57,26 +57,6 @@ def render_media_gallery_component(status, **options) end end - def render_card_component(status, **options) - component_params = { - sensitive: sensitive_viewer?(status, current_account), - card: serialize_status_card(status).as_json, - }.merge(**options) - - react_component :card, component_params - end - - def render_poll_component(status, **options) - component_params = { - disabled: true, - poll: serialize_status_poll(status).as_json, - }.merge(**options) - - react_component :poll, component_params do - render partial: 'statuses/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: prefers_autoplay? } - end - end - private def serialize_media_attachment(attachment) @@ -86,22 +66,6 @@ def serialize_media_attachment(attachment) ) end - def serialize_status_card(status) - ActiveModelSerializers::SerializableResource.new( - status.preview_card, - serializer: REST::PreviewCardSerializer - ) - end - - def serialize_status_poll(status) - ActiveModelSerializers::SerializableResource.new( - status.preloadable_poll, - serializer: REST::PollSerializer, - scope: current_user, - scope_name: :current_user - ) - end - def sensitive_viewer?(status, account) if !account.nil? && account.id == status.account_id status.sensitive diff --git a/app/javascript/entrypoints/embed.tsx b/app/javascript/entrypoints/embed.tsx new file mode 100644 index 00000000000000..f8c824d287ad31 --- /dev/null +++ b/app/javascript/entrypoints/embed.tsx @@ -0,0 +1,74 @@ +import './public-path'; +import { createRoot } from 'react-dom/client'; + +import { afterInitialRender } from 'mastodon/../hooks/useRenderSignal'; + +import { start } from '../mastodon/common'; +import { Status } from '../mastodon/features/standalone/status'; +import { loadPolyfills } from '../mastodon/polyfills'; +import ready from '../mastodon/ready'; + +start(); + +function loaded() { + const mountNode = document.getElementById('mastodon-status'); + + if (mountNode) { + const attr = mountNode.getAttribute('data-props'); + + if (!attr) return; + + const props = JSON.parse(attr) as { id: string; locale: string }; + const root = createRoot(mountNode); + + root.render(); + } +} + +function main() { + ready(loaded).catch((error: unknown) => { + console.error(error); + }); +} + +loadPolyfills() + .then(main) + .catch((error: unknown) => { + console.error(error); + }); + +interface SetHeightMessage { + type: 'setHeight'; + id: string; + height: number; +} + +function isSetHeightMessage(data: unknown): data is SetHeightMessage { + if ( + data && + typeof data === 'object' && + 'type' in data && + data.type === 'setHeight' + ) + return true; + else return false; +} + +window.addEventListener('message', (e) => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- typings are not correct, it can be null in very rare cases + if (!e.data || !isSetHeightMessage(e.data) || !window.parent) return; + + const data = e.data; + + // We use a timeout to allow for the React page to render before calculating the height + afterInitialRender(() => { + window.parent.postMessage( + { + type: 'setHeight', + id: data.id, + height: document.getElementsByTagName('html')[0]?.scrollHeight, + }, + '*', + ); + }); +}); diff --git a/app/javascript/entrypoints/public.tsx b/app/javascript/entrypoints/public.tsx index b06675c2ee2cce..d33e00d5da88ce 100644 --- a/app/javascript/entrypoints/public.tsx +++ b/app/javascript/entrypoints/public.tsx @@ -37,43 +37,6 @@ const messages = defineMessages({ }, }); -interface SetHeightMessage { - type: 'setHeight'; - id: string; - height: number; -} - -function isSetHeightMessage(data: unknown): data is SetHeightMessage { - if ( - data && - typeof data === 'object' && - 'type' in data && - data.type === 'setHeight' - ) - return true; - else return false; -} - -window.addEventListener('message', (e) => { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- typings are not correct, it can be null in very rare cases - if (!e.data || !isSetHeightMessage(e.data) || !window.parent) return; - - const data = e.data; - - ready(() => { - window.parent.postMessage( - { - type: 'setHeight', - id: data.id, - height: document.getElementsByTagName('html')[0]?.scrollHeight, - }, - '*', - ); - }).catch((e: unknown) => { - console.error('Error in setHeightMessage postMessage', e); - }); -}); - function loaded() { const { messages: localeData } = getLocale(); diff --git a/app/javascript/hooks/useRenderSignal.ts b/app/javascript/hooks/useRenderSignal.ts new file mode 100644 index 00000000000000..740df4a35a306a --- /dev/null +++ b/app/javascript/hooks/useRenderSignal.ts @@ -0,0 +1,32 @@ +// This hook allows a component to signal that it's done rendering in a way that +// can be used by e.g. our embed code to determine correct iframe height + +let renderSignalReceived = false; + +type Callback = () => void; + +let onInitialRender: Callback; + +export const afterInitialRender = (callback: Callback) => { + if (renderSignalReceived) { + callback(); + } else { + onInitialRender = callback; + } +}; + +export const useRenderSignal = () => { + return () => { + if (renderSignalReceived) { + return; + } + + renderSignalReceived = true; + + if (typeof onInitialRender !== 'undefined') { + window.requestAnimationFrame(() => { + onInitialRender(); + }); + } + }; +}; diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 340cee8024b0eb..1e4e545d8c9711 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -49,11 +49,13 @@ export function fetchStatusRequest(id, skipLoading) { }; } -export function fetchStatus(id, forceFetch = false) { +export function fetchStatus(id, forceFetch = false, alsoFetchContext = true) { return (dispatch, getState) => { const skipLoading = !forceFetch && getState().getIn(['statuses', id], null) !== null; - dispatch(fetchContext(id)); + if (alsoFetchContext) { + dispatch(fetchContext(id)); + } if (skipLoading) { return; diff --git a/app/javascript/mastodon/components/logo.tsx b/app/javascript/mastodon/components/logo.tsx index b7f8bd6695008a..fe9680d0e3a4b3 100644 --- a/app/javascript/mastodon/components/logo.tsx +++ b/app/javascript/mastodon/components/logo.tsx @@ -7,6 +7,13 @@ export const WordmarkLogo: React.FC = () => ( ); +export const IconLogo: React.FC = () => ( + + Mastodon + + +); + export const SymbolLogo: React.FC = () => ( Mastodon ); diff --git a/app/javascript/mastodon/components/more_from_author.jsx b/app/javascript/mastodon/components/more_from_author.jsx index c20e76ac459f9a..719f4dda86fa0e 100644 --- a/app/javascript/mastodon/components/more_from_author.jsx +++ b/app/javascript/mastodon/components/more_from_author.jsx @@ -2,14 +2,12 @@ import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; +import { IconLogo } from 'mastodon/components/logo'; import { AuthorLink } from 'mastodon/features/explore/components/author_link'; export const MoreFromAuthor = ({ accountId }) => (
- - - - + }} />
); diff --git a/app/javascript/mastodon/features/standalone/status/index.tsx b/app/javascript/mastodon/features/standalone/status/index.tsx new file mode 100644 index 00000000000000..d5cb7e7f40b97a --- /dev/null +++ b/app/javascript/mastodon/features/standalone/status/index.tsx @@ -0,0 +1,87 @@ +/* eslint-disable @typescript-eslint/no-unsafe-return, + @typescript-eslint/no-explicit-any, + @typescript-eslint/no-unsafe-assignment */ + +import { useEffect, useCallback } from 'react'; + +import { Provider } from 'react-redux'; + +import { useRenderSignal } from 'mastodon/../hooks/useRenderSignal'; +import { fetchStatus, toggleStatusSpoilers } from 'mastodon/actions/statuses'; +import { hydrateStore } from 'mastodon/actions/store'; +import { Router } from 'mastodon/components/router'; +import { DetailedStatus } from 'mastodon/features/status/components/detailed_status'; +import initialState from 'mastodon/initial_state'; +import { IntlProvider } from 'mastodon/locales'; +import { makeGetStatus, makeGetPictureInPicture } from 'mastodon/selectors'; +import { store, useAppSelector, useAppDispatch } from 'mastodon/store'; + +const getStatus = makeGetStatus() as unknown as (arg0: any, arg1: any) => any; +const getPictureInPicture = makeGetPictureInPicture() as unknown as ( + arg0: any, + arg1: any, +) => any; + +const Embed: React.FC<{ id: string }> = ({ id }) => { + const status = useAppSelector((state) => getStatus(state, { id })); + const pictureInPicture = useAppSelector((state) => + getPictureInPicture(state, { id }), + ); + const domain = useAppSelector((state) => state.meta.get('domain')); + const dispatch = useAppDispatch(); + const dispatchRenderSignal = useRenderSignal(); + + useEffect(() => { + dispatch(fetchStatus(id, false, false)); + }, [dispatch, id]); + + const handleToggleHidden = useCallback(() => { + dispatch(toggleStatusSpoilers(id)); + }, [dispatch, id]); + + // This allows us to calculate the correct page height for embeds + if (status) { + dispatchRenderSignal(); + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access + const permalink = status?.get('url') as string; + + return ( +
+ + + +
+ ); +}; + +export const Status: React.FC<{ id: string }> = ({ id }) => { + useEffect(() => { + if (initialState) { + store.dispatch(hydrateStore(initialState)); + } + }, []); + + return ( + + + + + + + + ); +}; diff --git a/app/javascript/mastodon/features/status/components/detailed_status.jsx b/app/javascript/mastodon/features/status/components/detailed_status.jsx deleted file mode 100644 index 8ee1ec9b9bd40d..00000000000000 --- a/app/javascript/mastodon/features/status/components/detailed_status.jsx +++ /dev/null @@ -1,322 +0,0 @@ -import PropTypes from 'prop-types'; - -import { FormattedDate, FormattedMessage } from 'react-intl'; - -import classNames from 'classnames'; -import { Link, withRouter } from 'react-router-dom'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; - -import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; -import { AnimatedNumber } from 'mastodon/components/animated_number'; -import { ContentWarning } from 'mastodon/components/content_warning'; -import EditedTimestamp from 'mastodon/components/edited_timestamp'; -import { getHashtagBarForStatus } from 'mastodon/components/hashtag_bar'; -import { Icon } from 'mastodon/components/icon'; -import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; -import { VisibilityIcon } from 'mastodon/components/visibility_icon'; -import { WithRouterPropTypes } from 'mastodon/utils/react_router'; - -import { Avatar } from '../../../components/avatar'; -import { DisplayName } from '../../../components/display_name'; -import MediaGallery from '../../../components/media_gallery'; -import StatusContent from '../../../components/status_content'; -import Audio from '../../audio'; -import scheduleIdleTask from '../../ui/util/schedule_idle_task'; -import Video from '../../video'; - -import Card from './card'; - -class DetailedStatus extends ImmutablePureComponent { - - static propTypes = { - status: ImmutablePropTypes.map, - onOpenMedia: PropTypes.func.isRequired, - onOpenVideo: PropTypes.func.isRequired, - onToggleHidden: PropTypes.func.isRequired, - onTranslate: PropTypes.func.isRequired, - measureHeight: PropTypes.bool, - onHeightChange: PropTypes.func, - domain: PropTypes.string.isRequired, - compact: PropTypes.bool, - showMedia: PropTypes.bool, - pictureInPicture: ImmutablePropTypes.contains({ - inUse: PropTypes.bool, - available: PropTypes.bool, - }), - onToggleMediaVisibility: PropTypes.func, - ...WithRouterPropTypes, - }; - - state = { - height: null, - }; - - handleAccountClick = (e) => { - if (e.button === 0 && !(e.ctrlKey || e.metaKey) && this.props.history) { - e.preventDefault(); - this.props.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`); - } - - e.stopPropagation(); - }; - - handleOpenVideo = (options) => { - this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options); - }; - - handleExpandedToggle = () => { - this.props.onToggleHidden(this.props.status); - }; - - _measureHeight (heightJustChanged) { - if (this.props.measureHeight && this.node) { - scheduleIdleTask(() => this.node && this.setState({ height: Math.ceil(this.node.scrollHeight) + 1 })); - - if (this.props.onHeightChange && heightJustChanged) { - this.props.onHeightChange(); - } - } - } - - setRef = c => { - this.node = c; - this._measureHeight(); - }; - - componentDidUpdate (prevProps, prevState) { - this._measureHeight(prevState.height !== this.state.height); - } - - handleModalLink = e => { - e.preventDefault(); - - let href; - - if (e.target.nodeName !== 'A') { - href = e.target.parentNode.href; - } else { - href = e.target.href; - } - - window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes'); - }; - - handleTranslate = () => { - const { onTranslate, status } = this.props; - onTranslate(status); - }; - - _properStatus () { - const { status } = this.props; - - if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { - return status.get('reblog'); - } else { - return status; - } - } - - getAttachmentAspectRatio () { - const attachments = this._properStatus().get('media_attachments'); - - if (attachments.getIn([0, 'type']) === 'video') { - return `${attachments.getIn([0, 'meta', 'original', 'width'])} / ${attachments.getIn([0, 'meta', 'original', 'height'])}`; - } else if (attachments.getIn([0, 'type']) === 'audio') { - return '16 / 9'; - } else { - return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2'; - } - } - - render () { - const status = this._properStatus(); - const outerStyle = { boxSizing: 'border-box' }; - const { compact, pictureInPicture } = this.props; - - if (!status) { - return null; - } - - let media = ''; - let applicationLink = ''; - let reblogLink = ''; - let favouriteLink = ''; - - if (this.props.measureHeight) { - outerStyle.height = `${this.state.height}px`; - } - - const language = status.getIn(['translation', 'language']) || status.get('language'); - - if (pictureInPicture.get('inUse')) { - media = ; - } else if (status.get('media_attachments').size > 0) { - if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { - const attachment = status.getIn(['media_attachments', 0]); - const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); - - media = ( - {status.getIn(['application', 'name'])}; - } - - const visibilityLink = <>·; - - if (['private', 'direct'].includes(status.get('visibility'))) { - reblogLink = ''; - } else if (this.props.history) { - reblogLink = ( - - - - - - - ); - } else { - reblogLink = ( - - - - - - - ); - } - - if (this.props.history) { - favouriteLink = ( - - - - - - - ); - } else { - favouriteLink = ( - - - - - - - ); - } - - const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status); - const expanded = !status.get('hidden') || status.get('spoiler_text').length === 0; - - return ( -
-
- {status.get('visibility') === 'direct' && ( -
-
- -
- )} - -
- -
- - {status.get('spoiler_text').length > 0 && } - - {expanded && ( - <> - - - {media} - {hashtagBar} - - )} - -
-
- - - - - {visibilityLink} - - {applicationLink} -
- - {status.get('edited_at') &&
} - -
- {reblogLink} - {reblogLink && <>·} - {favouriteLink} -
-
-
-
- ); - } - -} - -export default withRouter(DetailedStatus); diff --git a/app/javascript/mastodon/features/status/components/detailed_status.tsx b/app/javascript/mastodon/features/status/components/detailed_status.tsx new file mode 100644 index 00000000000000..fa843122fbce8a --- /dev/null +++ b/app/javascript/mastodon/features/status/components/detailed_status.tsx @@ -0,0 +1,390 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access, + @typescript-eslint/no-unsafe-call, + @typescript-eslint/no-explicit-any, + @typescript-eslint/no-unsafe-assignment */ + +import type { CSSProperties } from 'react'; +import { useState, useRef, useCallback } from 'react'; + +import { FormattedDate, FormattedMessage } from 'react-intl'; + +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; +import { AnimatedNumber } from 'mastodon/components/animated_number'; +import { ContentWarning } from 'mastodon/components/content_warning'; +import EditedTimestamp from 'mastodon/components/edited_timestamp'; +import type { StatusLike } from 'mastodon/components/hashtag_bar'; +import { getHashtagBarForStatus } from 'mastodon/components/hashtag_bar'; +import { Icon } from 'mastodon/components/icon'; +import { IconLogo } from 'mastodon/components/logo'; +import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; +import { VisibilityIcon } from 'mastodon/components/visibility_icon'; + +import { Avatar } from '../../../components/avatar'; +import { DisplayName } from '../../../components/display_name'; +import MediaGallery from '../../../components/media_gallery'; +import StatusContent from '../../../components/status_content'; +import Audio from '../../audio'; +import scheduleIdleTask from '../../ui/util/schedule_idle_task'; +import Video from '../../video'; + +import Card from './card'; + +interface VideoModalOptions { + startTime: number; + autoPlay?: boolean; + defaultVolume: number; + componentIndex: number; +} + +export const DetailedStatus: React.FC<{ + status: any; + onOpenMedia?: (status: any, index: number, lang: string) => void; + onOpenVideo?: (status: any, lang: string, options: VideoModalOptions) => void; + onTranslate?: (status: any) => void; + measureHeight?: boolean; + onHeightChange?: () => void; + domain: string; + showMedia?: boolean; + withLogo?: boolean; + pictureInPicture: any; + onToggleHidden?: (status: any) => void; + onToggleMediaVisibility?: () => void; +}> = ({ + status, + onOpenMedia, + onOpenVideo, + onTranslate, + measureHeight, + onHeightChange, + domain, + showMedia, + withLogo, + pictureInPicture, + onToggleMediaVisibility, + onToggleHidden, +}) => { + const properStatus = status?.get('reblog') ?? status; + const [height, setHeight] = useState(0); + const nodeRef = useRef(); + + const handleOpenVideo = useCallback( + (options: VideoModalOptions) => { + const lang = (status.getIn(['translation', 'language']) || + status.get('language')) as string; + if (onOpenVideo) + onOpenVideo(status.getIn(['media_attachments', 0]), lang, options); + }, + [onOpenVideo, status], + ); + + const handleExpandedToggle = useCallback(() => { + if (onToggleHidden) onToggleHidden(status); + }, [onToggleHidden, status]); + + const _measureHeight = useCallback( + (heightJustChanged?: boolean) => { + if (measureHeight && nodeRef.current) { + scheduleIdleTask(() => { + if (nodeRef.current) + setHeight(Math.ceil(nodeRef.current.scrollHeight) + 1); + }); + + if (onHeightChange && heightJustChanged) { + onHeightChange(); + } + } + }, + [onHeightChange, measureHeight, setHeight], + ); + + const handleRef = useCallback( + (c: HTMLDivElement) => { + nodeRef.current = c; + _measureHeight(); + }, + [_measureHeight], + ); + + const handleTranslate = useCallback(() => { + if (onTranslate) onTranslate(status); + }, [onTranslate, status]); + + if (!properStatus) { + return null; + } + + let media; + let applicationLink; + let reblogLink; + let attachmentAspectRatio; + + if (properStatus.get('media_attachments').getIn([0, 'type']) === 'video') { + attachmentAspectRatio = `${properStatus.get('media_attachments').getIn([0, 'meta', 'original', 'width'])} / ${properStatus.get('media_attachments').getIn([0, 'meta', 'original', 'height'])}`; + } else if ( + properStatus.get('media_attachments').getIn([0, 'type']) === 'audio' + ) { + attachmentAspectRatio = '16 / 9'; + } else { + attachmentAspectRatio = + properStatus.get('media_attachments').size === 1 && + properStatus + .get('media_attachments') + .getIn([0, 'meta', 'small', 'aspect']) + ? properStatus + .get('media_attachments') + .getIn([0, 'meta', 'small', 'aspect']) + : '3 / 2'; + } + + const outerStyle = { boxSizing: 'border-box' } as CSSProperties; + + if (measureHeight) { + outerStyle.height = height; + } + + const language = + status.getIn(['translation', 'language']) || status.get('language'); + + if (pictureInPicture.get('inUse')) { + media = ; + } else if (status.get('media_attachments').size > 0) { + if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { + const attachment = status.getIn(['media_attachments', 0]); + const description = + attachment.getIn(['translation', 'description']) || + attachment.get('description'); + + media = ( +