From 72b0c9e20bbd2f9089b02671042da462f2120410 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 19 Feb 2024 08:35:13 -0500 Subject: [PATCH 01/19] Re-enable fixed `Style/Semicolon` cop (#29212) --- .rubocop.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index dce33eab30..d968346f6b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -210,11 +210,6 @@ Style/RedundantBegin: Style/RescueStandardError: EnforcedStyle: implicit -# Reason: Simplify some spec layouts -# https://docs.rubocop.org/rubocop/cops_style.html#stylesemicolon -Style/Semicolon: - AllowAsExpressionSeparator: true - # Reason: Originally disabled for CodeClimate, and no config consensus has been found # https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray Style/SymbolArray: From 86627ea2e449cd9413abf252249d8d6961a3f0ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Fourn=C3=A8s?= Date: Mon, 19 Feb 2024 14:35:58 +0100 Subject: [PATCH 02/19] Add a missing thread example to the statuses spec (#29278) --- spec/requests/api/v1/statuses_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/spec/requests/api/v1/statuses_spec.rb b/spec/requests/api/v1/statuses_spec.rb index 201674fccd..a3b84afa26 100644 --- a/spec/requests/api/v1/statuses_spec.rb +++ b/spec/requests/api/v1/statuses_spec.rb @@ -167,6 +167,16 @@ describe '/api/v1/statuses' do expect(response.headers['X-RateLimit-Remaining']).to eq '0' end end + + context 'with missing thread' do + let(:params) { { status: 'Hello world', in_reply_to_id: 0 } } + + it 'returns http not found' do + subject + + expect(response).to have_http_status(404) + end + end end describe 'DELETE /api/v1/statuses/:id' do From 64f9939e397c6b0b0dbcbc0a29380b544de91329 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 19 Feb 2024 10:57:47 -0500 Subject: [PATCH 03/19] Use `capture_emails` helper to improve email assertions in specs (#29245) --- .../admin/disputes/appeals_controller_spec.rb | 25 +++++++++----- .../admin/resets_controller_spec.rb | 10 +++--- .../auth/sessions_controller_spec.rb | 34 ++++++++++++------- .../disputes/appeals_controller_spec.rb | 14 +++++--- spec/models/user_spec.rb | 18 +++++----- spec/rails_helper.rb | 1 + spec/requests/api/v1/reports_spec.rb | 10 ++++-- spec/services/notify_service_spec.rb | 16 ++++++--- spec/services/report_service_spec.rb | 5 +-- spec/workers/backup_worker_spec.rb | 11 ++++-- 10 files changed, 97 insertions(+), 47 deletions(-) diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb index d365233167..bf7f9bd704 100644 --- a/spec/controllers/admin/disputes/appeals_controller_spec.rb +++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb @@ -35,7 +35,7 @@ RSpec.describe Admin::Disputes::AppealsController do let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } it 'redirects back to the strike page and notifies target account about approved appeal', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(disputes_strike_path(appeal.strike)) @@ -43,9 +43,13 @@ RSpec.describe Admin::Disputes::AppealsController do expect(target_account.reload) .to_not be_suspended - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(target_account.user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.appeal_approved.subject', date: I18n.l(appeal.created_at))) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(target_account.user.email), + subject: eq(I18n.t('user_mailer.appeal_approved.subject', date: I18n.l(appeal.created_at))) + ) end end @@ -55,14 +59,19 @@ RSpec.describe Admin::Disputes::AppealsController do let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } it 'redirects back to the strike page and notifies target account about rejected appeal', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(disputes_strike_path(appeal.strike)) - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(target_account.user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.appeal_rejected.subject', date: I18n.l(appeal.created_at))) + expect(emails.size) + .to eq(1) + + expect(emails.first) + .to have_attributes( + to: contain_exactly(target_account.user.email), + subject: eq(I18n.t('user_mailer.appeal_rejected.subject', date: I18n.l(appeal.created_at))) + ) end end end diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb index e82a3a6afa..10ed2cf969 100644 --- a/spec/controllers/admin/resets_controller_spec.rb +++ b/spec/controllers/admin/resets_controller_spec.rb @@ -5,6 +5,8 @@ require 'rails_helper' describe Admin::ResetsController do render_views + subject { post :create, params: { account_id: account.id } } + let(:account) { Fabricate(:account) } before do @@ -13,11 +15,11 @@ describe Admin::ResetsController do describe 'POST #create', :sidekiq_inline do it 'redirects to admin accounts page' do - expect do - post :create, params: { account_id: account.id } - end.to change(Devise.mailer.deliveries, :size).by(2) + emails = capture_emails { subject } - expect(Devise.mailer.deliveries).to have_attributes( + expect(emails.size) + .to eq(2) + expect(emails).to have_attributes( first: have_attributes( to: include(account.user.email), subject: I18n.t('devise.mailer.password_change.subject') diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb index dcbaf1fcbb..7adafc6f14 100644 --- a/spec/controllers/auth/sessions_controller_spec.rb +++ b/spec/controllers/auth/sessions_controller_spec.rb @@ -124,7 +124,7 @@ RSpec.describe Auth::SessionsController do end it 'logs the user in and sends suspicious email and redirects home', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(response) .to redirect_to(root_path) @@ -132,9 +132,13 @@ RSpec.describe Auth::SessionsController do expect(controller.current_user) .to eq user - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.suspicious_sign_in.subject')) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.suspicious_sign_in.subject')) + ) end end @@ -260,21 +264,27 @@ RSpec.describe Auth::SessionsController do end it 'does not log the user in, sets a flash message, and sends a suspicious sign in email', :sidekiq_inline do - Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do - post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - expect(controller.current_user).to be_nil + emails = capture_emails do + Auth::SessionsController::MAX_2FA_ATTEMPTS_PER_HOUR.times do + post :create, params: { user: { otp_attempt: '1234' } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } + expect(controller.current_user).to be_nil + end + post :create, params: { user: { otp_attempt: user.current_otp } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } end - post :create, params: { user: { otp_attempt: user.current_otp } }, session: { attempt_user_id: user.id, attempt_user_updated_at: user.updated_at.to_s } - expect(controller.current_user) .to be_nil + expect(flash[:alert]) .to match I18n.t('users.rate_limited') - expect(UserMailer.deliveries.size).to eq(1) - expect(UserMailer.deliveries.first.to.first).to eq(user.email) - expect(UserMailer.deliveries.first.subject).to eq(I18n.t('user_mailer.failed_2fa.subject')) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.failed_2fa.subject')) + ) end end diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb index d763068ebe..99d5a8b17f 100644 --- a/spec/controllers/disputes/appeals_controller_spec.rb +++ b/spec/controllers/disputes/appeals_controller_spec.rb @@ -18,9 +18,15 @@ RSpec.describe Disputes::AppealsController do let(:params) { { strike_id: strike.id, appeal: { text: 'Foo' } } } it 'notifies staff about new appeal and redirects back to strike page', :sidekiq_inline do - subject + emails = capture_emails { subject } - expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(admin.email), + subject: eq(I18n.t('admin_mailer.new_appeal.subject', username: current_user.account.acct, instance: Rails.configuration.x.local_domain)) + ) expect(response).to redirect_to(disputes_strike_path(strike.id)) end end @@ -31,9 +37,9 @@ RSpec.describe Disputes::AppealsController do let(:params) { { strike_id: strike.id, appeal: { text: '' } } } it 'does not send email and renders strike show page', :sidekiq_inline do - subject + emails = capture_emails { subject } - expect(ActionMailer::Base.deliveries.size).to eq(0) + expect(emails).to be_empty expect(response).to render_template('disputes/strikes/show') end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 1baa3ccbf9..39986f476c 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -455,18 +455,20 @@ RSpec.describe User do let!(:user) { Fabricate(:user, confirmed_at: confirmed_at) } - before { ActionMailer::Base.deliveries.clear } - - after { ActionMailer::Base.deliveries.clear } - context 'when user is new' do let(:confirmed_at) { nil } it 'confirms user and delivers welcome email', :sidekiq_inline do - subject + emails = capture_emails { subject } expect(user.confirmed_at).to be_present - expect(ActionMailer::Base.deliveries.count).to eq 1 + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('user_mailer.welcome.subject')) + ) end end @@ -474,10 +476,10 @@ RSpec.describe User do let(:confirmed_at) { Time.zone.now } it 'confirms user but does not deliver welcome email' do - subject + emails = capture_emails { subject } expect(user.confirmed_at).to be_present - expect(ActionMailer::Base.deliveries.count).to eq 0 + expect(emails).to be_empty end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index cde5a439db..3e84d68738 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -82,6 +82,7 @@ RSpec.configure do |config| config.include Devise::Test::ControllerHelpers, type: :view config.include Devise::Test::IntegrationHelpers, type: :feature config.include Devise::Test::IntegrationHelpers, type: :request + config.include ActionMailer::TestHelper config.include Paperclip::Shoulda::Matchers config.include ActiveSupport::Testing::TimeHelpers config.include Chewy::Rspec::Helpers diff --git a/spec/requests/api/v1/reports_spec.rb b/spec/requests/api/v1/reports_spec.rb index ba3d2b3060..94baf8cb98 100644 --- a/spec/requests/api/v1/reports_spec.rb +++ b/spec/requests/api/v1/reports_spec.rb @@ -35,7 +35,7 @@ RSpec.describe 'Reports' do it 'creates a report', :aggregate_failures do perform_enqueued_jobs do - subject + emails = capture_emails { subject } expect(response).to have_http_status(200) expect(body_as_json).to match( @@ -49,7 +49,13 @@ RSpec.describe 'Reports' do expect(target_account.targeted_reports).to_not be_empty expect(target_account.targeted_reports.first.comment).to eq 'reasons' - expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(admin.email), + subject: eq(I18n.t('admin_mailer.new_report.subject', instance: Rails.configuration.x.local_domain, id: target_account.targeted_reports.first.id)) + ) end end diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb index 38a33c522d..e818fadcbe 100644 --- a/spec/services/notify_service_spec.rb +++ b/spec/services/notify_service_spec.rb @@ -157,8 +157,6 @@ RSpec.describe NotifyService, type: :service do describe 'email' do before do - ActionMailer::Base.deliveries.clear - user.settings.update('notification_emails.follow': enabled) user.save end @@ -167,7 +165,15 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { true } it 'sends email', :sidekiq_inline do - expect { subject }.to change(ActionMailer::Base.deliveries, :count).by(1) + emails = capture_emails { subject } + + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(user.email), + subject: eq(I18n.t('notification_mailer.follow.subject', name: sender.acct)) + ) end end @@ -175,7 +181,9 @@ RSpec.describe NotifyService, type: :service do let(:enabled) { false } it "doesn't send email" do - expect { subject }.to_not change(ActionMailer::Base.deliveries, :count).from(0) + emails = capture_emails { subject } + + expect(emails).to be_empty end end end diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb index 39e14a6a1c..2caeb189d9 100644 --- a/spec/services/report_service_spec.rb +++ b/spec/services/report_service_spec.rb @@ -158,13 +158,14 @@ RSpec.describe ReportService, type: :service do before do Fabricate(:report, target_account: target_account) - ActionMailer::Base.deliveries.clear source_account.user.settings['notification_emails.report'] = true source_account.user.save end it 'does not send an e-mail' do - expect { subject.call }.to_not change(ActionMailer::Base.deliveries, :count).from(0) + emails = capture_emails { subject.call } + + expect(emails).to be_empty end end end diff --git a/spec/workers/backup_worker_spec.rb b/spec/workers/backup_worker_spec.rb index 987cbc7d60..74928c7ca6 100644 --- a/spec/workers/backup_worker_spec.rb +++ b/spec/workers/backup_worker_spec.rb @@ -15,12 +15,17 @@ describe BackupWorker do let!(:other_backup) { Fabricate(:backup, user: backup.user) } it 'sends the backup to the service and removes other backups', :sidekiq_inline do - expect do - worker.perform(backup.id) - end.to change(UserMailer.deliveries, :size).by(1) + emails = capture_emails { worker.perform(backup.id) } expect(service).to have_received(:call).with(backup) expect { other_backup.reload }.to raise_error(ActiveRecord::RecordNotFound) + expect(emails.size) + .to eq(1) + expect(emails.first) + .to have_attributes( + to: contain_exactly(backup.user.email), + subject: I18n.t('user_mailer.backup_ready.subject') + ) end context 'when sidekiq retries are exhausted' do From b8b2f20b16d92274fc3e576f493d19347f9421da Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 20 Feb 2024 10:10:44 +0100 Subject: [PATCH 04/19] Change explore icon from hashtag to compass in web UI (#29294) --- app/javascript/mastodon/features/explore/index.jsx | 4 ++-- .../mastodon/features/ui/components/navigation_panel.jsx | 4 ++-- app/javascript/material-icons/400-24px/explore-fill.svg | 1 + app/javascript/material-icons/400-24px/explore.svg | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 app/javascript/material-icons/400-24px/explore-fill.svg create mode 100644 app/javascript/material-icons/400-24px/explore.svg diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx index 8ebaccd013..8cc8a4b009 100644 --- a/app/javascript/mastodon/features/explore/index.jsx +++ b/app/javascript/mastodon/features/explore/index.jsx @@ -8,8 +8,8 @@ import { NavLink, Switch, Route } from 'react-router-dom'; import { connect } from 'react-redux'; +import ExploreIcon from '@/material-icons/400-24px/explore.svg?react'; import SearchIcon from '@/material-icons/400-24px/search.svg?react'; -import TagIcon from '@/material-icons/400-24px/tag.svg?react'; import Column from 'mastodon/components/column'; import ColumnHeader from 'mastodon/components/column_header'; import Search from 'mastodon/features/compose/containers/search_container'; @@ -59,7 +59,7 @@ class Explore extends PureComponent { + ) : ( )} diff --git a/app/javascript/material-icons/400-24px/explore-fill.svg b/app/javascript/material-icons/400-24px/explore-fill.svg new file mode 100644 index 0000000000..febe0a63b4 --- /dev/null +++ b/app/javascript/material-icons/400-24px/explore-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/material-icons/400-24px/explore.svg b/app/javascript/material-icons/400-24px/explore.svg new file mode 100644 index 0000000000..547a999421 --- /dev/null +++ b/app/javascript/material-icons/400-24px/explore.svg @@ -0,0 +1 @@ + \ No newline at end of file From 6e4c1e172b4fdd20864e3dac2e04c69ed83aeb7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:11:22 +0000 Subject: [PATCH 05/19] Update dependency webmock to v3.21.2 (#29290) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 79d3b1e637..fac511d026 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -793,7 +793,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.20.0) + webmock (3.21.2) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From 5d9d0d174a54bb07f9af236dc573b3f5bfa4896e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:17:41 +0100 Subject: [PATCH 06/19] Update dependency selenium-webdriver to v4.18.1 (#29287) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index fac511d026..8dd1a7ed08 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -691,7 +691,7 @@ GEM scenic (1.7.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.17.0) + selenium-webdriver (4.18.1) base64 (~> 0.2) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) From 785e2f939980803c70a1e61c8eb6c0a2d7401d2d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 20 Feb 2024 04:18:05 -0500 Subject: [PATCH 07/19] Add scope `providing_styles` to `UserRole` (#29286) --- app/controllers/custom_css_controller.rb | 2 +- app/models/user_role.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index 62f8e0d772..eb6417698a 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -16,6 +16,6 @@ class CustomCssController < ActionController::Base # rubocop:disable Rails/Appli helper_method :custom_css_styles def set_user_roles - @user_roles = UserRole.where(highlighted: true).where.not(color: [nil, '']) + @user_roles = UserRole.providing_styles end end diff --git a/app/models/user_role.rb b/app/models/user_role.rb index ed64ca0538..9115d91c24 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -97,6 +97,9 @@ class UserRole < ApplicationRecord before_validation :set_position scope :assignable, -> { where.not(id: EVERYONE_ROLE_ID).order(position: :asc) } + scope :highlighted, -> { where(highlighted: true) } + scope :with_color, -> { where.not(color: [nil, '']) } + scope :providing_styles, -> { highlighted.with_color } has_many :users, inverse_of: :role, foreign_key: 'role_id', dependent: :nullify From bde4df6be651b930e724703a398947dd18c341fa Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 20 Feb 2024 10:18:44 +0100 Subject: [PATCH 08/19] Remove CSS definitions for some unused classes (#29279) --- .../styles/mastodon-light/diff.scss | 6 ---- .../styles/mastodon/components.scss | 29 ------------------- 2 files changed, 35 deletions(-) diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 520e91e28b..e3872283e1 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -210,12 +210,6 @@ html { } } -// Change the background colors of media and video spoilers -.media-spoiler, -.video-player__spoiler { - background: $ui-base-color; -} - .account-gallery__item a { background-color: $ui-base-color; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 605b5d4b55..50b5de35df 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4325,35 +4325,6 @@ a.status-card { z-index: 100; } -.media-spoiler { - background: $base-overlay-background; - color: $darker-text-color; - border: 0; - padding: 0; - width: 100%; - height: 100%; - border-radius: 4px; - appearance: none; - - &:hover, - &:active, - &:focus { - padding: 0; - color: lighten($darker-text-color, 8%); - } -} - -.media-spoiler__warning { - display: block; - font-size: 14px; -} - -.media-spoiler__trigger { - display: block; - font-size: 11px; - font-weight: 700; -} - .spoiler-button { top: 0; inset-inline-start: 0; From e1cee84e582ce0927c9cf2af344e5a04525d777e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:19:41 +0000 Subject: [PATCH 09/19] Update dependency cocoon-js-vanilla to v1.4.0 (#29293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6ef5386d7a..f4c84110a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5606,9 +5606,9 @@ __metadata: linkType: hard "cocoon-js-vanilla@npm:^1.3.0": - version: 1.3.0 - resolution: "cocoon-js-vanilla@npm:1.3.0" - checksum: 12adec293ba625c608518ef504c24f4b5906873713092e55d28343dd12fbc9ab7940d8c2bbe02a320bd56120d3768ae90a8d8bc5a6a82e604a56c216b66027e1 + version: 1.4.0 + resolution: "cocoon-js-vanilla@npm:1.4.0" + checksum: 3a3976d325d24518317ca38536ad5f4e570c139b86082dd33c64d38c2a4b2c58fa9cc9aac4624d8fd2f4c9f0eafe681bb8872360010e6b36d9974d8abc57f520 languageName: node linkType: hard From 0ef44ee720a4d6a416de109cdc6c2fe7d528e3ba Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 20 Feb 2024 04:21:49 -0500 Subject: [PATCH 10/19] Move `AccountSuggestions::Source` subclasses default limit value to constant (#29282) --- app/models/account_suggestions/friends_of_friends_source.rb | 2 +- app/models/account_suggestions/global_source.rb | 2 +- app/models/account_suggestions/setting_source.rb | 2 +- app/models/account_suggestions/similar_profiles_source.rb | 2 +- app/models/account_suggestions/source.rb | 2 ++ 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/models/account_suggestions/friends_of_friends_source.rb b/app/models/account_suggestions/friends_of_friends_source.rb index 28d0ab99b3..93fb10f3b0 100644 --- a/app/models/account_suggestions/friends_of_friends_source.rb +++ b/app/models/account_suggestions/friends_of_friends_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::FriendsOfFriendsSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) Account.find_by_sql([<<~SQL.squish, { id: account.id, limit: limit }]).map { |row| [row.id, key] } WITH first_degree AS ( SELECT target_account_id diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb index d68f285e4f..c05bcf2ce8 100644 --- a/app/models/account_suggestions/global_source.rb +++ b/app/models/account_suggestions/global_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::GlobalSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) FollowRecommendation.localized(content_locale).joins(:account).merge(base_account_scope(account)).order(rank: :desc).limit(limit).pluck(:account_id, :reason) end diff --git a/app/models/account_suggestions/setting_source.rb b/app/models/account_suggestions/setting_source.rb index 4b7275bf7a..9f3cd7bd3d 100644 --- a/app/models/account_suggestions/setting_source.rb +++ b/app/models/account_suggestions/setting_source.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AccountSuggestions::SettingSource < AccountSuggestions::Source - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) if setting_enabled? base_account_scope(account).where(setting_to_where_condition).limit(limit).pluck(:id).zip([key].cycle) else diff --git a/app/models/account_suggestions/similar_profiles_source.rb b/app/models/account_suggestions/similar_profiles_source.rb index 733c5f0bbc..3ece20aa51 100644 --- a/app/models/account_suggestions/similar_profiles_source.rb +++ b/app/models/account_suggestions/similar_profiles_source.rb @@ -47,7 +47,7 @@ class AccountSuggestions::SimilarProfilesSource < AccountSuggestions::Source end end - def get(account, limit: 10) + def get(account, limit: DEFAULT_LIMIT) recently_followed_account_ids = account.active_relationships.recent.limit(5).pluck(:target_account_id) if Chewy.enabled? && !recently_followed_account_ids.empty? diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb index d83f5e3773..b2c3c7a3a2 100644 --- a/app/models/account_suggestions/source.rb +++ b/app/models/account_suggestions/source.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class AccountSuggestions::Source + DEFAULT_LIMIT = 10 + def get(_account, **kwargs) raise NotImplementedError end From 9a2b9d14840b640077b081fab3c98472e68f4c7e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:23:40 +0100 Subject: [PATCH 11/19] New Crowdin Translations (automated) (#29298) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ar.json | 1 - app/javascript/mastodon/locales/ast.json | 1 - app/javascript/mastodon/locales/be.json | 7 ++++- app/javascript/mastodon/locales/bg.json | 1 - app/javascript/mastodon/locales/ca.json | 7 ++++- app/javascript/mastodon/locales/cs.json | 9 +++++-- app/javascript/mastodon/locales/cy.json | 1 - app/javascript/mastodon/locales/da.json | 6 +++++ app/javascript/mastodon/locales/de.json | 7 ++++- app/javascript/mastodon/locales/en-GB.json | 1 - app/javascript/mastodon/locales/es-AR.json | 7 ++++- app/javascript/mastodon/locales/es-MX.json | 3 ++- app/javascript/mastodon/locales/es.json | 3 ++- app/javascript/mastodon/locales/eu.json | 7 ++++- app/javascript/mastodon/locales/fi.json | 7 ++++- app/javascript/mastodon/locales/fil.json | 27 ++++++++++++++++++++ app/javascript/mastodon/locales/fo.json | 7 ++++- app/javascript/mastodon/locales/fy.json | 7 ++++- app/javascript/mastodon/locales/ga.json | 1 - app/javascript/mastodon/locales/gd.json | 1 - app/javascript/mastodon/locales/gl.json | 1 - app/javascript/mastodon/locales/he.json | 7 ++++- app/javascript/mastodon/locales/hu.json | 7 ++++- app/javascript/mastodon/locales/ia.json | 1 - app/javascript/mastodon/locales/ie.json | 1 - app/javascript/mastodon/locales/is.json | 7 ++++- app/javascript/mastodon/locales/it.json | 7 ++++- app/javascript/mastodon/locales/ja.json | 10 ++++++++ app/javascript/mastodon/locales/ko.json | 7 ++++- app/javascript/mastodon/locales/lad.json | 7 ++++- app/javascript/mastodon/locales/lt.json | 5 +++- app/javascript/mastodon/locales/ms.json | 1 - app/javascript/mastodon/locales/nl.json | 7 ++++- app/javascript/mastodon/locales/pl.json | 7 ++++- app/javascript/mastodon/locales/pt-BR.json | 1 - app/javascript/mastodon/locales/pt-PT.json | 7 ++++- app/javascript/mastodon/locales/ro.json | 1 - app/javascript/mastodon/locales/ru.json | 1 - app/javascript/mastodon/locales/sk.json | 1 - app/javascript/mastodon/locales/sl.json | 7 ++++- app/javascript/mastodon/locales/sq.json | 7 ++++- app/javascript/mastodon/locales/sr-Latn.json | 1 - app/javascript/mastodon/locales/sr.json | 6 ++++- app/javascript/mastodon/locales/th.json | 1 - app/javascript/mastodon/locales/tr.json | 7 ++++- app/javascript/mastodon/locales/uk.json | 7 ++++- app/javascript/mastodon/locales/vi.json | 1 - app/javascript/mastodon/locales/zh-CN.json | 9 +++++-- app/javascript/mastodon/locales/zh-HK.json | 1 - app/javascript/mastodon/locales/zh-TW.json | 5 ++++ config/locales/cs.yml | 2 +- 51 files changed, 202 insertions(+), 49 deletions(-) diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 790a971cdf..2eebd1369c 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -277,7 +277,6 @@ "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "follow_requests.unlocked_explanation": "حتى وإن كان حسابك غير مقفل، يعتقد فريق {domain} أنك قد ترغب في مراجعة طلبات المتابعة من هذه الحسابات يدوياً.", - "follow_suggestions.curated_suggestion": "خيار المحرر", "follow_suggestions.dismiss": "لا تُظهرها مجدّدًا", "follow_suggestions.personalized_suggestion": "توصية مخصصة", "follow_suggestions.popular_suggestion": "توصية رائجة", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 18bba99117..8e69d434b4 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -199,7 +199,6 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Refugar", "follow_requests.unlocked_explanation": "Magar que la to cuenta nun seya privada, el personal del dominiu «{domain}» pensó qu'a lo meyor quies revisar manualmente les solicitúes de siguimientu d'estes cuentes.", - "follow_suggestions.curated_suggestion": "Escoyeta del sirvidor", "follow_suggestions.dismiss": "Nun volver amosar", "follow_suggestions.personalized_suggestion": "Suxerencia personalizada", "follow_suggestions.popular_suggestion": "Suxerencia popular", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 7e21703b4a..c0b744fbaf 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Аўтарызацыя", "follow_request.reject": "Адхіліць", "follow_requests.unlocked_explanation": "Ваш акаўнт не схаваны, аднак прадстаўнікі {domain} палічылі, што вы можаце захацець праглядзець запыты на падпіску з гэтых профіляў уручную.", - "follow_suggestions.curated_suggestion": "Выбар сервера", + "follow_suggestions.curated_suggestion": "Выбар адміністрацыі", "follow_suggestions.dismiss": "Не паказваць зноў", + "follow_suggestions.hints.featured": "Гэты профіль быў выбраны ўручную камандай {domain}.", + "follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх вы падпісаліся.", + "follow_suggestions.hints.most_followed": "Гэты профіль - адзін з профіляў з самай вялікай колькасцю падпісак на {domain}.", + "follow_suggestions.hints.most_interactions": "У апошні час гэты профіль прыцягвае шмат увагі на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Гэты профіль падобны на профілі, на якія вы нядаўна падпісаліся.", "follow_suggestions.personalized_suggestion": "Персаналізаваная прапанова", "follow_suggestions.popular_suggestion": "Папулярная прапанова", "follow_suggestions.view_all": "Праглядзець усё", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 3e7f6e51b2..5acee5cdd0 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", - "follow_suggestions.curated_suggestion": "Избор от редакторите", "follow_suggestions.dismiss": "Без ново показване", "follow_suggestions.personalized_suggestion": "Персонализирано предложение", "follow_suggestions.popular_suggestion": "Популярно предложение", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 42de594cdc..d50f38aa15 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoritza", "follow_request.reject": "Rebutja", "follow_requests.unlocked_explanation": "Tot i que el teu compte no està blocat, el personal de {domain} ha pensat que és possible que vulguis revisar manualment les sol·licituds de seguiment d’aquests comptes.", - "follow_suggestions.curated_suggestion": "Tria de l'editor", + "follow_suggestions.curated_suggestion": "Tria de l'equip", "follow_suggestions.dismiss": "No ho tornis a mostrar", + "follow_suggestions.hints.featured": "Aquest perfil ha estat triat per l'equip de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Aquest perfil és popular entre la gent que segueixes.", + "follow_suggestions.hints.most_followed": "Aquest perfil és un dels més seguits a {domain}.", + "follow_suggestions.hints.most_interactions": "Aquest perfil ha estat rebent un munt d'atenció recentment a {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Aquest perfil és similar a d'altres que heu seguit recentment.", "follow_suggestions.personalized_suggestion": "Suggeriment personalitzat", "follow_suggestions.popular_suggestion": "Suggeriment popular", "follow_suggestions.view_all": "Mostra-ho tot", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2856ac4a45..00b27e0521 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -276,9 +276,14 @@ "firehose.remote": "Ostatní servery", "follow_request.authorize": "Autorizovat", "follow_request.reject": "Zamítnout", - "follow_requests.unlocked_explanation": "Přestože váš účet není zamčený, administrátor {domain} usoudil, že byste mohli chtít tyto žádosti o sledování zkontrolovat ručně.", - "follow_suggestions.curated_suggestion": "Návrh serveru", + "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.", + "follow_suggestions.curated_suggestion": "Výběr personálů", "follow_suggestions.dismiss": "Znovu nezobrazovat", + "follow_suggestions.hints.featured": "Tento profil byl ručně vybrán týmem {domain}.", + "follow_suggestions.hints.friends_of_friends": "Tento profil je populární mezi lidmi, které sledujete.", + "follow_suggestions.hints.most_followed": "Tento profil je jedním z nejvíce sledovaných na {domain}.", + "follow_suggestions.hints.most_interactions": "Tento profil nedávno dostalo velkou pozornost na {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Tento profil je podobný profilům, které jste nedávno sledovali.", "follow_suggestions.personalized_suggestion": "Přizpůsobený návrh", "follow_suggestions.popular_suggestion": "Populární návrh", "follow_suggestions.view_all": "Zobrazit vše", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index f023c5a2a7..294cdde38f 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Awdurdodi", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, roedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", - "follow_suggestions.curated_suggestion": "Dewis y Golygydd", "follow_suggestions.dismiss": "Peidio â dangos hwn eto", "follow_suggestions.personalized_suggestion": "Awgrym personol", "follow_suggestions.popular_suggestion": "Awgrym poblogaidd", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 548421b3c0..b9ef82bf0c 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Godkend", "follow_request.reject": "Afvis", "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, synes {domain}-personalet, du måske bør gennemgå disse anmodninger manuelt.", + "follow_suggestions.curated_suggestion": "Personaleudvalgt", "follow_suggestions.dismiss": "Vis ikke igen", + "follow_suggestions.hints.featured": "Denne profil er håndplukket af {domain}-teamet.", + "follow_suggestions.hints.friends_of_friends": "Denne profil er populær blandt de personer, som følges.", + "follow_suggestions.hints.most_followed": "Denne profil er en af de mest fulgte på {domain}.", + "follow_suggestions.hints.most_interactions": "Denne profil har for nylig fået stor opmærksomhed på {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Denne profil svarer til de profiler, som senest er blevet fulgt.", "follow_suggestions.personalized_suggestion": "Personligt forslag", "follow_suggestions.popular_suggestion": "Populært forslag", "follow_suggestions.view_all": "Vis alle", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index f29d016b07..2c94314810 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Genehmigen", "follow_request.reject": "Ablehnen", "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.", - "follow_suggestions.curated_suggestion": "Auswahl des Herausgebers", + "follow_suggestions.curated_suggestion": "Vom Server empfohlen", "follow_suggestions.dismiss": "Nicht mehr anzeigen", + "follow_suggestions.hints.featured": "Dieses Profil wurde vom {domain}-Team ausgewählt.", + "follow_suggestions.hints.friends_of_friends": "Dieses Profil ist bei deinen Followern beliebt.", + "follow_suggestions.hints.most_followed": "Dieses Profil wird von den meisten auf {domain} gefolgt.", + "follow_suggestions.hints.most_interactions": "Dieses Profil erhielt auf {domain} in letzter Zeit viel Aufmerksamkeit.", + "follow_suggestions.hints.similar_to_recently_followed": "Dieses Profil ähnelt den Profilen, denen du in letzter Zeit gefolgt hast.", "follow_suggestions.personalized_suggestion": "Persönliche Empfehlung", "follow_suggestions.popular_suggestion": "Beliebte Empfehlung", "follow_suggestions.view_all": "Alle anzeigen", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index 84cba3092f..6232207af2 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Authorise", "follow_request.reject": "Reject", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", - "follow_suggestions.curated_suggestion": "Editors' Choice", "follow_suggestions.dismiss": "Don't show again", "follow_suggestions.personalized_suggestion": "Personalised suggestion", "follow_suggestions.popular_suggestion": "Popular suggestion", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 87ab62cda2..3b63c505e4 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Cuentas elegidas del servidor", + "follow_suggestions.curated_suggestion": "Selección del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.featured": "Este perfil fue seleccionado a mano por el equipo de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las cuentas que seguís.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil ha estado recibiendo recientemente mucha atención en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil es similar a los que comenzaste a seguir.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 95b87b26dd..9ee2cbca14 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -277,8 +277,9 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 3e4f36ba5a..5b5263b3f4 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -277,8 +277,9 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", - "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", + "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index e80e7fcf46..da7d03ce41 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskaerak agian eskuz begiratu nahiko dituzula.", - "follow_suggestions.curated_suggestion": "Zerbitzariaren iradokizunak", + "follow_suggestions.curated_suggestion": "Domeinuaren iradokizuna", "follow_suggestions.dismiss": "Ez erakutsi berriro", + "follow_suggestions.hints.featured": "Profil hau {domain} domeinuko taldeak eskuz aukeratu du.", + "follow_suggestions.hints.friends_of_friends": "Profil hau ezaguna da jarraitzen duzun jendearen artean.", + "follow_suggestions.hints.most_followed": "Profil hau {domain} domeinuan gehien jarraitzen den profiletako bat da.", + "follow_suggestions.hints.most_interactions": "Profil hau arreta handia jasotzen ari da berriki {domain} domeinuan.", + "follow_suggestions.hints.similar_to_recently_followed": "Profil hau duela gutxi jarraitu dituzun profil askoren antzekoa da.", "follow_suggestions.personalized_suggestion": "Iradokizun pertsonalizatua", "follow_suggestions.popular_suggestion": "Iradokizun ezaguna", "follow_suggestions.view_all": "Ikusi denak", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 277f0f2e72..484baae122 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Valtuuta", "follow_request.reject": "Hylkää", "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelimen {domain} ylläpito on arvioinut, että saatat olla halukas tarkistamaan nämä seuraamispyynnöt erikseen.", - "follow_suggestions.curated_suggestion": "Päätoimittajan valinta", + "follow_suggestions.curated_suggestion": "Ylläpidon valinta", "follow_suggestions.dismiss": "Älä näytä uudelleen", + "follow_suggestions.hints.featured": "Tämän profiilin on valinnut palvelimen {domain} tiimi.", + "follow_suggestions.hints.friends_of_friends": "Tämä profiili on suosittu seuraamiesi henkilöiden parissa.", + "follow_suggestions.hints.most_followed": "Tämä profiili on yksi seuratuimmista palvelimella {domain}.", + "follow_suggestions.hints.most_interactions": "Tämä profiili on viime aikoina saanut paljon huomiota palvelimella {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Tämä profiili on samankaltainen kuin profiilit, joita olet viimeksi seurannut.", "follow_suggestions.personalized_suggestion": "Personoitu ehdotus", "follow_suggestions.popular_suggestion": "Suosittu ehdotus", "follow_suggestions.view_all": "Näytä kaikki", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 938251e5f5..04208c5544 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -49,6 +49,7 @@ "account.unendorse": "Huwag itampok sa profile", "admin.dashboard.retention.cohort_size": "Mga bagong tagagamit", "alert.rate_limited.message": "Mangyaring subukan muli pagkatapos ng {retry_time, time, medium}.", + "audio.hide": "Itago ang tunog", "bundle_column_error.error.title": "Naku!", "bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.", "bundle_column_error.network.title": "Kamaliang network", @@ -100,6 +101,7 @@ "compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.", "compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.", "compose_form.placeholder": "Anong nangyari?", + "compose_form.poll.multiple": "Maraming pagpipilian", "compose_form.poll.single": "Piliin ang isa", "compose_form.reply": "Tumugon", "compose_form.spoiler.unmarked": "Idagdag ang babala sa nilalaman", @@ -109,6 +111,9 @@ "confirmations.block.message": "Sigurado ka bang gusto mong harangan si {name}?", "confirmations.cancel_follow_request.confirm": "Bawiin ang kahilingan", "confirmations.cancel_follow_request.message": "Sigurdo ka bang gusto mong bawiin ang kahilingang sundan si/ang {name}?", + "confirmations.delete.message": "Sigurado ka bang gusto mong burahin ang post na ito?", + "confirmations.delete_list.confirm": "Tanggalin", + "confirmations.delete_list.message": "Sigurado ka bang gusto mong burahin ang listahang ito?", "confirmations.discard_edit_media.confirm": "Ipagpaliban", "confirmations.domain_block.confirm": "Harangan ang buong domain", "confirmations.edit.confirm": "Baguhin", @@ -188,6 +193,7 @@ "intervals.full.minutes": "{number, plural, one {# minuto} other {# na minuto}}", "keyboard_shortcuts.description": "Paglalarawan", "keyboard_shortcuts.down": "Ilipat pababa sa talaan", + "keyboard_shortcuts.mention": "Banggitin ang may-akda", "keyboard_shortcuts.requests": "Buksan ang talaan ng mga kahilingan sa pagsunod", "keyboard_shortcuts.up": "Ilipat pataas sa talaan", "lightbox.close": "Isara", @@ -203,24 +209,35 @@ "loading_indicator.label": "Kumakarga…", "navigation_bar.about": "Tungkol dito", "navigation_bar.blocks": "Nakaharang na mga tagagamit", + "navigation_bar.direct": "Mga palihim na banggit", "navigation_bar.favourites": "Mga paborito", + "navigation_bar.follows_and_followers": "Mga sinusundan at tagasunod", "navigation_bar.lists": "Mga listahan", "navigation_bar.search": "Maghanap", "notification.admin.report": "Iniulat ni {name} si {target}", "notification.follow": "Sinundan ka ni {name}", "notification.follow_request": "Hinihiling ni {name} na sundan ka", "notification.mention": "Binanggit ka ni {name}", + "notifications.clear": "Burahin mga abiso", "notifications.column_settings.admin.report": "Mga bagong ulat:", "notifications.column_settings.favourite": "Mga paborito:", "notifications.column_settings.follow": "Mga bagong tagasunod:", + "notifications.column_settings.unread_notifications.category": "Hindi Nabasang mga Abiso", "notifications.column_settings.update": "Mga pagbago:", "notifications.filter.all": "Lahat", + "notifications.mark_as_read": "Markahan lahat ng abiso bilang nabasa na", "onboarding.action.back": "Ibalik mo ako", "onboarding.actions.back": "Ibalik mo ako", + "onboarding.profile.note_hint": "Maaari mong @bangitin ang ibang mga tao o mga #hashtag…", "onboarding.profile.save_and_continue": "Iimbak at magpatuloy", "onboarding.share.next_steps": "Mga posibleng susunod na hakbang:", + "poll.closed": "Sarado", + "poll.reveal": "Ipakita ang mga resulta", "poll.voted": "Binoto mo para sa sagot na ito", "poll_button.remove_poll": "Tanggalin ang boto", + "privacy.direct.long": "Lahat ng mga binanggit sa post", + "privacy.private.long": "Mga tagasunod mo lamang", + "privacy.private.short": "Mga tagasunod", "relative_time.days": "{number}a", "relative_time.full.days": "{number, plural, one {# araw} other {# na araw}} ang nakalipas", "relative_time.full.hours": "{number, plural, one {# oras} other {# na oras}} ang nakalipas", @@ -247,15 +264,24 @@ "report.thanks.title_actionable": "Salamat sa pag-uulat, titingnan namin ito.", "report_notification.categories.other": "Iba pa", "search_results.all": "Lahat", + "search_results.see_all": "Ipakita lahat", "server_banner.learn_more": "Matuto nang higit pa", + "server_banner.server_stats": "Katayuan ng serbiro:", + "status.block": "Harangan si @{name}", + "status.delete": "Tanggalin", + "status.direct": "Palihim na banggitin si/ang @{name}", "status.direct_indicator": "Palihim na banggit", "status.edit": "Baguhin", "status.edited": "Binago noong {date}", "status.edited_x_times": "Binago {count, plural, one {{count} beses} other {{count} na beses}}", "status.history.created": "Nilikha ni/ng {name} {date}", "status.history.edited": "Binago ni/ng {name} {date}", + "status.media.open": "Pindutin upang buksan", + "status.media.show": "Pindutin upang ipakita", "status.mention": "Banggitin ang/si @{name}", "status.more": "Higit pa", + "status.read_more": "Basahin ang higit pa", + "status.reblogs.empty": "Wala pang nagpalakas ng post na ito. Kung may sinumang nagpalakas, makikita sila rito.", "status.reply": "Tumugon", "status.report": "I-ulat si/ang @{name}", "status.sensitive_warning": "Sensitibong nilalaman", @@ -267,6 +293,7 @@ "status.translate": "Isalin", "status.translated_from_with": "Isalin mula sa {lang} gamit ang {provider}", "status.uncached_media_warning": "Hindi makuha ang paunang tigin", + "tabs_bar.notifications": "Mga abiso", "time_remaining.days": "{number, plural, one {# araw} other {# na araw}} ang natitira", "time_remaining.hours": "{number, plural, one {# oras} other {# na oras}} ang natitira", "time_remaining.minutes": "{number, plural, one {# minuto} other {# na minuto}} ang natitira", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index abd2ab2681..13e49eb314 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Veit myndugleika", "follow_request.reject": "Nokta", "follow_requests.unlocked_explanation": "Sjálvt um konta tín ikki er læst, so hugsa {domain} starvsfólkini, at tú kanska hevur hug at kanna umbønir um at fylgja frá hesum kontum við hond.", - "follow_suggestions.curated_suggestion": "Val umsjónarfólksins", + "follow_suggestions.curated_suggestion": "Val hjá ábyrgdarfólki", "follow_suggestions.dismiss": "Lat vera við at vísa", + "follow_suggestions.hints.featured": "Hesin vangin er úrvaldur av toyminum handan {domain}.", + "follow_suggestions.hints.friends_of_friends": "Hesin vangin er vælumtóktur millum tey, tú fylgir.", + "follow_suggestions.hints.most_followed": "Hesin vangin er ein av teimum, sum er mest fylgdur á {domain}.", + "follow_suggestions.hints.most_interactions": "Nýliga hava nógv lagt merki til hendan vangan á {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Hesin vangin líkist teimum, sum tú nýliga hevur fylgt.", "follow_suggestions.personalized_suggestion": "Persónligt uppskot", "follow_suggestions.popular_suggestion": "Vælumtókt uppskot", "follow_suggestions.view_all": "Vís øll", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index 9bd5327c8f..bc4fecb93d 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Goedkarre", "follow_request.reject": "Wegerje", "follow_requests.unlocked_explanation": "Ek al is jo account net besletten, de meiwurkers fan {domain} tinke dat jo miskien de folgjende folchfersiken hânmjittich kontrolearje.", - "follow_suggestions.curated_suggestion": "Kar fan de moderator", + "follow_suggestions.curated_suggestion": "Spesjaal selektearre", "follow_suggestions.dismiss": "Net mear werjaan", + "follow_suggestions.hints.featured": "Dit profyl is hânmjittich troch it {domain}-team selektearre.", + "follow_suggestions.hints.friends_of_friends": "Dit profyl is populêr ûnder de minsken dy’t jo folgje.", + "follow_suggestions.hints.most_followed": "Dit profyl is ien fan de meast folge op {domain}.", + "follow_suggestions.hints.most_interactions": "Dit profyl hat de lêste tiid in protte oandacht krigen op {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Dit profyl is hast lyk oan de profilen dy’t jo koartlyn folge hawwe.", "follow_suggestions.personalized_suggestion": "Personalisearre suggestje", "follow_suggestions.popular_suggestion": "Populêre suggestje", "follow_suggestions.view_all": "Alles werjaan", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 329286277d..a708088fbb 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -226,7 +226,6 @@ "follow_request.authorize": "Ceadaigh", "follow_request.reject": "Diúltaigh", "follow_requests.unlocked_explanation": "Cé nach bhfuil do chuntas faoi ghlas, cheap foireann {domain} gur mhaith leat súil siar ar iarratais leanúnaí as na cuntais seo.", - "follow_suggestions.curated_suggestion": "Rogha an eagarthóra", "follow_suggestions.dismiss": "Ná taispeáin arís", "follow_suggestions.personalized_suggestion": "Nod pearsantaithe", "follow_suggestions.popular_suggestion": "Nod coiteann", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 47b1e23192..d775a7b027 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Ùghdarraich", "follow_request.reject": "Diùlt", "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.", - "follow_suggestions.curated_suggestion": "Roghainn an deasaiche", "follow_suggestions.dismiss": "Na seall seo a-rithist", "follow_suggestions.personalized_suggestion": "Moladh pearsanaichte", "follow_suggestions.popular_suggestion": "Moladh air a bheil fèill mhòr", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 7512740c5e..1e83adf126 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", - "follow_suggestions.curated_suggestion": "O servidor suxíreche", "follow_suggestions.dismiss": "Non mostrar máis", "follow_suggestions.personalized_suggestion": "Suxestión personalizada", "follow_suggestions.popular_suggestion": "Suxestión popular", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index bf182a1657..2eef70f0fe 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -277,8 +277,13 @@ "follow_request.authorize": "הרשאה", "follow_request.reject": "דחיה", "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.", - "follow_suggestions.curated_suggestion": "בחירת העורכים", + "follow_suggestions.curated_suggestion": "בחירת הצוות", "follow_suggestions.dismiss": "לא להציג שוב", + "follow_suggestions.hints.featured": "החשבון הזה נבחר אישית על ידי צוות {domain}.", + "follow_suggestions.hints.friends_of_friends": "חשבון זה פופולרי בין הנעקבים שלך.", + "follow_suggestions.hints.most_followed": "חשבון זה הוא מבין הנעקבים ביותר בשרת {domain}.", + "follow_suggestions.hints.most_interactions": "חשבון זה קיבל לאחרונה הרבה תשומת לב על שרת {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "חשבון זה דומה לחשבונות אחרים שאחריהם התחלת לעקוב לאחרונה.", "follow_suggestions.personalized_suggestion": "הצעות מותאמות אישית", "follow_suggestions.popular_suggestion": "הצעה פופולרית", "follow_suggestions.view_all": "צפיה בכל", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 8f979e5558..f499e08f6d 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Hitelesítés", "follow_request.reject": "Elutasítás", "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni ezen fiókok követési kéréseit.", - "follow_suggestions.curated_suggestion": "Szerkesztői ajánlat", + "follow_suggestions.curated_suggestion": "A stáb választása", "follow_suggestions.dismiss": "Ne jelenjen meg újra", + "follow_suggestions.hints.featured": "Ezt a profilt a(z) {domain} csapata választotta ki.", + "follow_suggestions.hints.friends_of_friends": "Ez a profil népszerű az általad követett emberek körében.", + "follow_suggestions.hints.most_followed": "Ez a profil a leginkább követett a(z) {domain} oldalon.", + "follow_suggestions.hints.most_interactions": "Ez a profil mostanában sok figyelmet kap a(z) {domain} oldalon.", + "follow_suggestions.hints.similar_to_recently_followed": "Ez a profil hasonló azokhoz a profilokhoz, melyeket nemrég kezdtél el követni.", "follow_suggestions.personalized_suggestion": "Személyre szabott javaslat", "follow_suggestions.popular_suggestion": "Népszerű javaslat", "follow_suggestions.view_all": "Összes megtekintése", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 0796662851..599688cc07 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -197,7 +197,6 @@ "firehose.all": "Toto", "firehose.local": "Iste servitor", "firehose.remote": "Altere servitores", - "follow_suggestions.curated_suggestion": "Selection del editores", "follow_suggestions.dismiss": "Non monstrar novemente", "follow_suggestions.personalized_suggestion": "Suggestion personalisate", "follow_suggestions.popular_suggestion": "Suggestion personalisate", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index 0c21832ed6..c28a348dc7 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Autorisar", "follow_request.reject": "Rejecter", "follow_requests.unlocked_explanation": "Benque tu conto ne es cludet, li administratores de {domain} pensat que tu fórsan vell voler tractar seque-petitiones de tis-ci contos manualmen.", - "follow_suggestions.curated_suggestion": "Selection del Servitor", "follow_suggestions.dismiss": "Ne monstrar plu", "follow_suggestions.personalized_suggestion": "Personalisat suggestion", "follow_suggestions.popular_suggestion": "Populari suggestion", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 3c2337efd2..1f42180159 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Heimila", "follow_request.reject": "Hafna", "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.", - "follow_suggestions.curated_suggestion": "Úrval umsjónarfólks", + "follow_suggestions.curated_suggestion": "Úrval starfsfólks", "follow_suggestions.dismiss": "Ekki birta þetta aftur", + "follow_suggestions.hints.featured": "Þetta notandasnið hefur verið handvalið af {domain}-teyminu.", + "follow_suggestions.hints.friends_of_friends": "Þetta notandasnið er vinsælt hjá fólki sem þú fylgist með.", + "follow_suggestions.hints.most_followed": "Þetta notandasnið er eitt af þeim sem mest er fylgst með á {domain}.", + "follow_suggestions.hints.most_interactions": "Þetta notandasnið hefur vakið mikla athygli að undanförnu á {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Þetta notandasnið er líkt þeim sniðum sem þú hefur valið að fylgjast með að undanförnu.", "follow_suggestions.personalized_suggestion": "Persónuaðlöguð tillaga", "follow_suggestions.popular_suggestion": "Vinsæl tillaga", "follow_suggestions.view_all": "Skoða allt", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index db8e88bd2a..9e68216a33 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizza", "follow_request.reject": "Rifiuta", "follow_requests.unlocked_explanation": "Anche se il tuo profilo non è privato, lo staff di {domain} ha pensato che potresti voler revisionare manualmente le richieste di seguirti da questi profili.", - "follow_suggestions.curated_suggestion": "Scelta dell'editore", + "follow_suggestions.curated_suggestion": "Scelta personale", "follow_suggestions.dismiss": "Non visualizzare più", + "follow_suggestions.hints.featured": "Questo profilo è stato selezionato personalmente dal team di {domain}.", + "follow_suggestions.hints.friends_of_friends": "Questo profilo è popolare tra le persone che segui.", + "follow_suggestions.hints.most_followed": "Questo profilo è uno dei più seguiti su {domain}.", + "follow_suggestions.hints.most_interactions": "Recentemente, questo profilo ha ricevuto molta attenzione su {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Questo profilo è simile ai profili che hai seguito più recentemente.", "follow_suggestions.personalized_suggestion": "Suggerimenti personalizzati", "follow_suggestions.popular_suggestion": "Suggerimento frequente", "follow_suggestions.view_all": "Vedi tutto", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 180963e9e6..27ed9816a7 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -277,7 +277,17 @@ "follow_request.authorize": "許可", "follow_request.reject": "拒否", "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain}のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。", + "follow_suggestions.curated_suggestion": "サーバースタッフ公認", + "follow_suggestions.dismiss": "今後表示しない", + "follow_suggestions.hints.featured": "{domain} の運営スタッフが選んだアカウントです。", + "follow_suggestions.hints.friends_of_friends": "フォロー中のユーザーのあいだで人気のアカウントです。", + "follow_suggestions.hints.most_followed": "{domain} でもっともフォローされているアカウントのひとつです。", + "follow_suggestions.hints.most_interactions": "{domain} でいま大きな注目を集めています。", + "follow_suggestions.hints.similar_to_recently_followed": "最近フォローしたユーザーに似ているアカウントです。", + "follow_suggestions.personalized_suggestion": "フォローに基づく提案", + "follow_suggestions.popular_suggestion": "人気のアカウント", "follow_suggestions.view_all": "すべて表示", + "follow_suggestions.who_to_follow": "フォローを増やしてみませんか?", "followed_tags": "フォロー中のハッシュタグ", "footer.about": "概要", "footer.directory": "ディレクトリ", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 50d9959994..d469af5d50 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -277,8 +277,13 @@ "follow_request.authorize": "허가", "follow_request.reject": "거부", "follow_requests.unlocked_explanation": "귀하의 계정이 잠긴 계정이 아닐지라도, {domain} 스태프는 이 계정들의 팔로우 요청을 수동으로 처리해 주시면 좋겠다고 생각했습니다.", - "follow_suggestions.curated_suggestion": "중재자의 추천", + "follow_suggestions.curated_suggestion": "스태프의 추천", "follow_suggestions.dismiss": "다시 보지 않기", + "follow_suggestions.hints.featured": "이 프로필은 {domain} 팀이 손수 선택했습니다.", + "follow_suggestions.hints.friends_of_friends": "이 프로필은 내가 팔로우 하는 사람들에게서 유명합니다.", + "follow_suggestions.hints.most_followed": "이 프로필은 {domain}에서 가장 많이 팔로우 된 사람들 중 하나입니다.", + "follow_suggestions.hints.most_interactions": "이 프로필은 최근 {domain}에서 많은 관심을 받았습니다.", + "follow_suggestions.hints.similar_to_recently_followed": "이 프로필은 내가 최근에 팔로우 한 프로필들과 유사합니다.", "follow_suggestions.personalized_suggestion": "개인화된 추천", "follow_suggestions.popular_suggestion": "인기있는 추천", "follow_suggestions.view_all": "모두 보기", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 3ec3b6af1b..91540d58ca 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoriza", "follow_request.reject": "Refuza", "follow_requests.unlocked_explanation": "Aunke tu kuento no esta serrado, la taifa de {domain} kreye ke talvez keres revizar manualmente las solisitudes de segimento de estos kuentos.", - "follow_suggestions.curated_suggestion": "Sujestion del sirvidor", + "follow_suggestions.curated_suggestion": "Seleksyon de la taifa", "follow_suggestions.dismiss": "No amostra mas", + "follow_suggestions.hints.featured": "Este profil tiene sido eskojido por la taifa de {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este profil es popular entre las personas ke siges.", + "follow_suggestions.hints.most_followed": "Este profil es uno de los mas segidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este profil tiene resivido muncha atansion resientemente en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este profil es similar a otros ke tienes segido resientemente.", "follow_suggestions.personalized_suggestion": "Sujestion personalizada", "follow_suggestions.popular_suggestion": "Sujestion populara", "follow_suggestions.view_all": "Ve todos", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 0923a10065..ce72518145 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -269,8 +269,11 @@ "follow_request.authorize": "Autorizuoti", "follow_request.reject": "Atmesti", "follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo užklausas.", - "follow_suggestions.curated_suggestion": "Redaktorių pasirinkimas", "follow_suggestions.dismiss": "Daugiau nerodyti", + "follow_suggestions.hints.friends_of_friends": "Šis profilis yra populiarus tarp žmonių, kuriuos sekei.", + "follow_suggestions.hints.most_followed": "Šis profilis yra vienas iš labiausiai sekamų {domain}.", + "follow_suggestions.hints.most_interactions": "Pastaruoju metu šis profilis sulaukia daug dėmesio šiame {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Šis profilis panašus į profilius, kuriuos neseniai sekei.", "follow_suggestions.personalized_suggestion": "Suasmenintas pasiūlymas", "follow_suggestions.popular_suggestion": "Populiarus pasiūlymas", "follow_suggestions.view_all": "Peržiūrėti viską", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index c24ffc1d3a..88b4680ae0 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Benarkan", "follow_request.reject": "Tolak", "follow_requests.unlocked_explanation": "Walaupun akaun anda tidak dikunci, kakitangan {domain} merasakan anda mungkin ingin menyemak permintaan ikutan daripada akaun ini secara manual.", - "follow_suggestions.curated_suggestion": "Pilihan Editor", "follow_suggestions.dismiss": "Jangan papar lagi", "follow_suggestions.personalized_suggestion": "Cadangan peribadi", "follow_suggestions.popular_suggestion": "Cadangan terkenal", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index dc51092dd3..5155b296f7 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Goedkeuren", "follow_request.reject": "Afwijzen", "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", - "follow_suggestions.curated_suggestion": "Keuze van de moderator(en)", + "follow_suggestions.curated_suggestion": "Speciaal geselecteerd", "follow_suggestions.dismiss": "Niet meer weergeven", + "follow_suggestions.hints.featured": "Dit profiel is geselecteerd door het team van {domain}.", + "follow_suggestions.hints.friends_of_friends": "Dit profiel is populair onder de mensen die jij volgt.", + "follow_suggestions.hints.most_followed": "Dit profiel is een van de meest gevolgde op {domain}.", + "follow_suggestions.hints.most_interactions": "Dit profiel heeft de laatste tijd veel aandacht gekregen op {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Dit profiel is vergelijkbaar met de profielen die je recentelijk hebt gevolgd.", "follow_suggestions.personalized_suggestion": "Gepersonaliseerde aanbeveling", "follow_suggestions.popular_suggestion": "Populaire aanbeveling", "follow_suggestions.view_all": "Alles weergeven", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 814d0f2de0..01b88eacdc 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość obserwacji.", - "follow_suggestions.curated_suggestion": "Wybór redakcji", + "follow_suggestions.curated_suggestion": "Wybrane przez personel", "follow_suggestions.dismiss": "Nie pokazuj ponownie", + "follow_suggestions.hints.featured": "Ten profil został wybrany przez zespół {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ten profil jest popularny w gronie użytkowników, których obserwujesz.", + "follow_suggestions.hints.most_followed": "Ten profil jest jednym z najczęściej obserwowanych na {domain}.", + "follow_suggestions.hints.most_interactions": "Ten profil otrzymuje dużo interakcji na {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Ten profil jest podobny do profili ostatnio przez ciebie zaobserwowanych.", "follow_suggestions.personalized_suggestion": "Sugestia spersonalizowana", "follow_suggestions.popular_suggestion": "Sugestia popularna", "follow_suggestions.view_all": "Pokaż wszystkie", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index eced6ca7ad..8911afe946 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Aprovar", "follow_request.reject": "Recusar", "follow_requests.unlocked_explanation": "Apesar de seu perfil não ser trancado, {domain} exige que você revise a solicitação para te seguir destes perfis manualmente.", - "follow_suggestions.curated_suggestion": "Escolha dos editores", "follow_suggestions.dismiss": "Não mostrar novamente", "follow_suggestions.personalized_suggestion": "Sugestão personalizada", "follow_suggestions.popular_suggestion": "Sugestão popular", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 3674126144..26aa0f0b5f 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rejeitar", "follow_requests.unlocked_explanation": "Apesar de a sua não ser privada, a administração de {domain} pensa que poderá querer rever manualmente os pedidos de seguimento dessas contas.", - "follow_suggestions.curated_suggestion": "Escolha dos Editores", + "follow_suggestions.curated_suggestion": "Escolha da equipe", "follow_suggestions.dismiss": "Não mostrar novamente", + "follow_suggestions.hints.featured": "Este perfil foi escolhido a dedo pela equipe {domain}.", + "follow_suggestions.hints.friends_of_friends": "Este perfil é popular entre as pessoas que você segue.", + "follow_suggestions.hints.most_followed": "Este perfil é um dos mais seguidos no {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil tem recebido recentemente muita atenção no {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil é semelhante aos perfis que você seguiu mais recentemente.", "follow_suggestions.personalized_suggestion": "Sugestão personalizada", "follow_suggestions.popular_suggestion": "Sugestão popular", "follow_suggestions.view_all": "Ver tudo", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 547493af18..b8bb779f85 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -265,7 +265,6 @@ "follow_request.authorize": "Acceptă", "follow_request.reject": "Respinge", "follow_requests.unlocked_explanation": "Chiar dacă contul tău nu este blocat, personalul {domain} a considerat că ai putea prefera să consulți manual cererile de abonare de la aceste conturi.", - "follow_suggestions.curated_suggestion": "Alegerile Editorilor", "follow_suggestions.dismiss": "Nu mai afișa din nou", "follow_suggestions.personalized_suggestion": "Sugestie personalizată", "follow_suggestions.popular_suggestion": "Sugestie populară", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 623b403832..5fcca414cf 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.", - "follow_suggestions.curated_suggestion": "Выбор редакции", "follow_suggestions.dismiss": "Больше не показывать", "follow_suggestions.personalized_suggestion": "Персонализированное предложение", "follow_suggestions.popular_suggestion": "Популярное предложение", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index da76e98687..af975069b8 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", "follow_requests.unlocked_explanation": "Síce Váš učet nie je uzamknutý, ale {domain} tím si myslel že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", - "follow_suggestions.curated_suggestion": "Výber zo servera", "follow_suggestions.dismiss": "Znovu nezobrazuj", "follow_suggestions.personalized_suggestion": "Prispôsobené odporúčania", "follow_suggestions.popular_suggestion": "Populárne návrhy", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 3aae75dc36..8396e02a68 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Overi", "follow_request.reject": "Zavrni", "follow_requests.unlocked_explanation": "Čeprav vaš račun ni zaklenjen, zaposleni pri {domain} menijo, da bi morda želeli pregledati zahteve za sledenje teh računov ročno.", - "follow_suggestions.curated_suggestion": "Izbor urednikov", + "follow_suggestions.curated_suggestion": "Izbor osebja", "follow_suggestions.dismiss": "Ne pokaži več", + "follow_suggestions.hints.featured": "Ta profil so izbrali skrbniki strežnika {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ta profil je priljubljen med osebami, ki jim sledite.", + "follow_suggestions.hints.most_followed": "Ta profil na strežniku {domain} je en izmed najbolj sledenih.", + "follow_suggestions.hints.most_interactions": "Ta profil na strežniku {domain} je nedavno prejel veliko pozornosti.", + "follow_suggestions.hints.similar_to_recently_followed": "Ta profil je podoben profilom, ki ste jim nedavno začeli slediti.", "follow_suggestions.personalized_suggestion": "Osebno prilagojen predlog", "follow_suggestions.popular_suggestion": "Priljubljen predlog", "follow_suggestions.view_all": "Pokaži vse", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 496e35fe76..c388ebb865 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Autorizoje", "follow_request.reject": "Hidhe tej", "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.", - "follow_suggestions.curated_suggestion": "Zgjedhur nga Ekipi", + "follow_suggestions.curated_suggestion": "Zgjedhur nga ekipi", "follow_suggestions.dismiss": "Mos shfaq më", + "follow_suggestions.hints.featured": "Ky profil është zgjedhur nga ekipi {domain}.", + "follow_suggestions.hints.friends_of_friends": "Ky profil është popullor mes personave që ndiqni.", + "follow_suggestions.hints.most_followed": "Ky profil është një nga më të ndjekur në {domain}.", + "follow_suggestions.hints.most_interactions": "Ky profil ka tërhequr mjaft vëmendjen së fundi në {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Ky profil është i ngjashëm me profile që keni ndjekur tani afër.", "follow_suggestions.personalized_suggestion": "Sugjerim i personalizuar", "follow_suggestions.popular_suggestion": "Sugjerim popullor", "follow_suggestions.view_all": "Shihni krejt", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index d9490ef70d..e6be3f3795 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Odobri", "follow_request.reject": "Odbij", "follow_requests.unlocked_explanation": "Iako vaš nalog nije zaključan, osoblje {domain} smatra da biste možda želeli da ručno pregledate zahteve za praćenje sa ovih naloga.", - "follow_suggestions.curated_suggestion": "Izbor urednika", "follow_suggestions.dismiss": "Ne prikazuj ponovo", "follow_suggestions.personalized_suggestion": "Personalizovani predlog", "follow_suggestions.popular_suggestion": "Popularni predlog", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index fd09f5db49..3143b5215e 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -277,8 +277,12 @@ "follow_request.authorize": "Одобри", "follow_request.reject": "Одбиј", "follow_requests.unlocked_explanation": "Иако ваш налог није закључан, особље {domain} сматра да бисте можда желели да ручно прегледате захтеве за праћење са ових налога.", - "follow_suggestions.curated_suggestion": "Избор уредника", "follow_suggestions.dismiss": "Не приказуј поново", + "follow_suggestions.hints.featured": "Овај профил је ручно изабрао тим {domain}.", + "follow_suggestions.hints.friends_of_friends": "Овај профил је популаран међу људима које пратите.", + "follow_suggestions.hints.most_followed": "Овај профил је један од најпраћенијих на {domain}.", + "follow_suggestions.hints.most_interactions": "Овај профил је недавно добио велику пажњу на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Овај профил је сличан профилима које сте недавно запратили.", "follow_suggestions.personalized_suggestion": "Персонализовани предлог", "follow_suggestions.popular_suggestion": "Популарни предлог", "follow_suggestions.view_all": "Прикажи све", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index e0aa072a77..f071a86ba0 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -277,7 +277,6 @@ "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง", - "follow_suggestions.curated_suggestion": "คัดสรรโดยบรรณาธิการ", "follow_suggestions.dismiss": "ไม่ต้องแสดงอีก", "follow_suggestions.personalized_suggestion": "ข้อเสนอแนะเฉพาะบุคคล", "follow_suggestions.popular_suggestion": "ข้อเสนอแนะยอดนิยม", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 7ab370b8bc..fa728a6821 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -277,8 +277,13 @@ "follow_request.authorize": "İzin Ver", "follow_request.reject": "Reddet", "follow_requests.unlocked_explanation": "Hesabınız kilitli olmasa da, {domain} personeli bu hesaplardan gelen takip isteklerini gözden geçirmek isteyebileceğinizi düşündü.", - "follow_suggestions.curated_suggestion": "Editörün Seçimi", + "follow_suggestions.curated_suggestion": "Çalışanların seçtikleri", "follow_suggestions.dismiss": "Tekrar gösterme", + "follow_suggestions.hints.featured": "Bu profil {domain} ekibi tarafından elle seçilmiştir.", + "follow_suggestions.hints.friends_of_friends": "Bu profil takip ettiğiniz insanlar arasında popülerdir.", + "follow_suggestions.hints.most_followed": "Bu, {domain} sunucusunda en fazla izlenen profildir.", + "follow_suggestions.hints.most_interactions": "Bu, {domain} sunucusunda son zamanlarda oldukça fazla dikkat çeken bir profildir.", + "follow_suggestions.hints.similar_to_recently_followed": "Bu profil, son zamanlarda takip ettiğiniz profillere benziyor.", "follow_suggestions.personalized_suggestion": "Kişiselleşmiş öneriler", "follow_suggestions.popular_suggestion": "Popüler öneriler", "follow_suggestions.view_all": "Tümünü gör", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 0504ec60d8..d14654d17c 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -277,8 +277,13 @@ "follow_request.authorize": "Авторизувати", "follow_request.reject": "Відмовити", "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, персонал {domain} припускає, що, можливо, ви хотіли б переглянути ці запити на підписку.", - "follow_suggestions.curated_suggestion": "Вибір редакції", + "follow_suggestions.curated_suggestion": "Відібрано командою", "follow_suggestions.dismiss": "Більше не показувати", + "follow_suggestions.hints.featured": "Цей профіль був обраний командою {domain}.", + "follow_suggestions.hints.friends_of_friends": "Цей профіль популярний серед тих людей, на яких ви підписані.", + "follow_suggestions.hints.most_followed": "За цим профілем один з найпопулярніших на {domain}.", + "follow_suggestions.hints.most_interactions": "Нещодавно цей профіль отримав багато уваги на {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Цей профіль схожий на профілі, за якими ви стежили останнім часом.", "follow_suggestions.personalized_suggestion": "Персоналізована пропозиція", "follow_suggestions.popular_suggestion": "Популярна пропозиція", "follow_suggestions.view_all": "Переглянути все", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 766407183b..7f4b833f31 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -277,7 +277,6 @@ "follow_request.authorize": "Chấp nhận", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", - "follow_suggestions.curated_suggestion": "Lựa chọn của máy chủ", "follow_suggestions.dismiss": "Không hiện lại", "follow_suggestions.personalized_suggestion": "Gợi ý cá nhân hóa", "follow_suggestions.popular_suggestion": "Những người nổi tiếng", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 9d0da95c81..84c42a4aa2 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -53,7 +53,7 @@ "account.mute_notifications_short": "关闭通知", "account.mute_short": "隐藏", "account.muted": "已隐藏", - "account.mutual": "互粉好友", + "account.mutual": "互关", "account.no_bio": "未提供描述。", "account.open_original_page": "打开原始页面", "account.posts": "嘟文", @@ -277,8 +277,13 @@ "follow_request.authorize": "同意", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", - "follow_suggestions.curated_suggestion": "主编推荐", + "follow_suggestions.curated_suggestion": "管理员精选", "follow_suggestions.dismiss": "不再显示", + "follow_suggestions.hints.featured": "该个人资料已被 {domain} 管理团队精选。", + "follow_suggestions.hints.friends_of_friends": "该个人资料在您关注的人中很受欢迎。", + "follow_suggestions.hints.most_followed": "该个人资料是 {domain} 上关注度最高的个人资料之一。", + "follow_suggestions.hints.most_interactions": "该个人资料最近在 {domain} 上获得了很多关注。", + "follow_suggestions.hints.similar_to_recently_followed": "该个人资料与您最近关注的个人资料类似。", "follow_suggestions.personalized_suggestion": "个性化建议", "follow_suggestions.popular_suggestion": "热门建议", "follow_suggestions.view_all": "查看全部", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index c1a69591ff..2382e3c61c 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -277,7 +277,6 @@ "follow_request.authorize": "批准", "follow_request.reject": "拒絕", "follow_requests.unlocked_explanation": "即使您的帳號未上鎖,{domain} 的工作人員認為您可能會想手動審核來自這些帳號的追蹤請求。", - "follow_suggestions.curated_suggestion": "編輯推薦", "follow_suggestions.dismiss": "不再顯示", "follow_suggestions.personalized_suggestion": "個人化推薦", "follow_suggestions.popular_suggestion": "熱門推薦", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index d83b523d1e..0ecf1378e3 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -279,6 +279,11 @@ "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。", "follow_suggestions.curated_suggestion": "精選內容", "follow_suggestions.dismiss": "不再顯示", + "follow_suggestions.hints.featured": "這個個人檔案是 {domain} 管理團隊精心挑選。", + "follow_suggestions.hints.friends_of_friends": "這個個人檔案於您跟隨的帳號中很受歡迎。", + "follow_suggestions.hints.most_followed": "這個個人檔案是 {domain} 中最受歡迎的帳號之一。", + "follow_suggestions.hints.most_interactions": "這個個人檔案最近於 {domain} 受到非常多關注。", + "follow_suggestions.hints.similar_to_recently_followed": "這個個人檔案與您最近跟隨之帳號類似。", "follow_suggestions.personalized_suggestion": "個人化推薦", "follow_suggestions.popular_suggestion": "熱門推薦", "follow_suggestions.view_all": "檢視全部", diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 6f67aeeeaa..0c85930a4f 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1077,7 +1077,7 @@ cs: hint_html: Ještě jedna věc! Musíme potvrdit, že jste člověk (to proto, abychom drželi stranou spam!). Vyřešte CAPTCHA níže a klikněte na "Pokračovat". title: Bezpečnostní kontrola confirmations: - awaiting_review: Vaše e-mailová adresa je potvrzena! Pracovníci %{domain} nyní kontrolují vaši registraci. Pokud váš účet schválí, obdržíte e-mail! + awaiting_review: Vaše e-mailová adresa je potvrzena! Personál %{domain} nyní kontrolují vaši registraci. Pokud váš účet schválí, obdržíte e-mail! awaiting_review_title: Vaše registrace se ověřuje clicking_this_link: kliknutím na tento odkaz login_link: přihlásit se From 937dad1ee6cfe333435709dc1c88655ffc2614b1 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 20 Feb 2024 05:08:32 -0500 Subject: [PATCH 12/19] Extract ES query and filter hashes into private methods in `TagSearchService` (#29288) --- app/services/tag_search_service.rb | 54 ++++++++++++++++-------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/app/services/tag_search_service.rb b/app/services/tag_search_service.rb index d5d1974275..929cfd884f 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -16,7 +16,32 @@ class TagSearchService < BaseService private def from_elasticsearch - query = { + definition = TagsIndex.query(elastic_search_query) + definition = definition.filter(elastic_search_filter) if @options[:exclude_unreviewed] + + ensure_exact_match(definition.limit(@limit).offset(@offset).objects.compact) + rescue Faraday::ConnectionFailed, Parslet::ParseFailed + nil + end + + # Since the ElasticSearch Query doesn't guarantee the exact match will be the + # first result or that it will even be returned, patch the results accordingly + def ensure_exact_match(results) + return results unless @offset.nil? || @offset.zero? + + normalized_query = Tag.normalize(@query) + exact_match = results.find { |tag| tag.name.downcase == normalized_query } + exact_match ||= Tag.find_normalized(normalized_query) + unless exact_match.nil? + results.delete(exact_match) + results = [exact_match] + results + end + + results + end + + def elastic_search_query + { function_score: { query: { multi_match: { @@ -50,8 +75,10 @@ class TagSearchService < BaseService boost_mode: 'multiply', }, } + end - filter = { + def elastic_search_filter + { bool: { should: [ { @@ -72,29 +99,6 @@ class TagSearchService < BaseService ], }, } - - definition = TagsIndex.query(query) - definition = definition.filter(filter) if @options[:exclude_unreviewed] - - ensure_exact_match(definition.limit(@limit).offset(@offset).objects.compact) - rescue Faraday::ConnectionFailed, Parslet::ParseFailed - nil - end - - # Since the ElasticSearch Query doesn't guarantee the exact match will be the - # first result or that it will even be returned, patch the results accordingly - def ensure_exact_match(results) - return results unless @offset.nil? || @offset.zero? - - normalized_query = Tag.normalize(@query) - exact_match = results.find { |tag| tag.name.downcase == normalized_query } - exact_match ||= Tag.find_normalized(normalized_query) - unless exact_match.nil? - results.delete(exact_match) - results = [exact_match] + results - end - - results end def from_database From 36fd47ac5792fc6bb552e4a566e387dc629e6aff Mon Sep 17 00:00:00 2001 From: Wojciech Maj Date: Tue, 20 Feb 2024 11:10:58 +0100 Subject: [PATCH 13/19] Remove unused dependencies (#29289) --- package.json | 6 +----- yarn.lock | 19 +++---------------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index d0b1b2e71c..e347495585 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,6 @@ "mark-loader": "^0.1.6", "marky": "^1.2.5", "mini-css-extract-plugin": "^1.6.2", - "mkdirp": "^3.0.1", "path-complete-extname": "^1.0.0", "postcss": "^8.4.24", "postcss-loader": "^4.3.0", @@ -118,7 +117,6 @@ "redux-immutable": "^4.0.0", "regenerator-runtime": "^0.14.0", "requestidlecallback": "^0.3.0", - "rimraf": "^5.0.1", "sass": "^1.62.1", "sass-loader": "^10.2.0", "stacktrace-js": "^2.0.2", @@ -175,7 +173,6 @@ "@types/redux-immutable": "^4.0.3", "@types/requestidlecallback": "^0.3.5", "@types/webpack": "^4.41.33", - "@types/yargs": "^17.0.24", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.17.0", "babel-jest": "^29.5.0", @@ -200,8 +197,7 @@ "stylelint": "^16.0.2", "stylelint-config-standard-scss": "^13.0.0", "typescript": "^5.0.4", - "webpack-dev-server": "^3.11.3", - "yargs": "^17.7.2" + "webpack-dev-server": "^3.11.3" }, "resolutions": { "kind-of": "^6.0.3", diff --git a/yarn.lock b/yarn.lock index f4c84110a1..1f653070e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2334,7 +2334,6 @@ __metadata: "@types/redux-immutable": "npm:^4.0.3" "@types/requestidlecallback": "npm:^0.3.5" "@types/webpack": "npm:^4.41.33" - "@types/yargs": "npm:^17.0.24" "@typescript-eslint/eslint-plugin": "npm:^6.0.0" "@typescript-eslint/parser": "npm:^6.17.0" arrow-key-navigation: "npm:^1.2.0" @@ -2391,7 +2390,6 @@ __metadata: mark-loader: "npm:^0.1.6" marky: "npm:^1.2.5" mini-css-extract-plugin: "npm:^1.6.2" - mkdirp: "npm:^3.0.1" path-complete-extname: "npm:^1.0.0" postcss: "npm:^8.4.24" postcss-loader: "npm:^4.3.0" @@ -2422,7 +2420,6 @@ __metadata: redux-immutable: "npm:^4.0.0" regenerator-runtime: "npm:^0.14.0" requestidlecallback: "npm:^0.3.0" - rimraf: "npm:^5.0.1" sass: "npm:^1.62.1" sass-loader: "npm:^10.2.0" stacktrace-js: "npm:^2.0.2" @@ -2448,7 +2445,6 @@ __metadata: workbox-strategies: "npm:^7.0.0" workbox-webpack-plugin: "npm:^7.0.0" workbox-window: "npm:^7.0.0" - yargs: "npm:^17.7.2" peerDependenciesMeta: react: optional: true @@ -3653,7 +3649,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.24, @types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.8": version: 17.0.32 resolution: "@types/yargs@npm:17.0.32" dependencies: @@ -11581,15 +11577,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d - languageName: node - linkType: hard - "mousetrap@npm:^1.5.2": version: 1.6.5 resolution: "mousetrap@npm:1.6.5" @@ -14440,7 +14427,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.1, rimraf@npm:^5.0.5": +"rimraf@npm:^5.0.5": version: 5.0.5 resolution: "rimraf@npm:5.0.5" dependencies: @@ -17741,7 +17728,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: From fd2b6c29c6b7159b7a9843957913bc0240b49033 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:24:44 +0100 Subject: [PATCH 14/19] New Crowdin Translations (automated) (#29311) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 8 ++++++- app/javascript/mastodon/locales/br.json | 26 ++++++++++++---------- app/javascript/mastodon/locales/ca.json | 4 ++-- app/javascript/mastodon/locales/cy.json | 6 +++++ app/javascript/mastodon/locales/es-MX.json | 4 ++++ app/javascript/mastodon/locales/es.json | 4 ++++ app/javascript/mastodon/locales/gl.json | 6 +++++ app/javascript/mastodon/locales/lt.json | 1 + app/javascript/mastodon/locales/nl.json | 10 ++++----- app/javascript/mastodon/locales/vi.json | 6 +++++ app/javascript/mastodon/locales/zh-CN.json | 18 +++++++-------- config/locales/br.yml | 21 ++++++++++++++--- config/locales/devise.br.yml | 2 +- config/locales/devise.es-MX.yml | 1 + config/locales/devise.es.yml | 1 + config/locales/devise.ja.yml | 1 + config/locales/doorkeeper.gl.yml | 4 ++-- config/locales/simple_form.br.yml | 4 +++- config/locales/zh-CN.yml | 8 +++---- config/locales/zh-TW.yml | 2 +- 20 files changed, 96 insertions(+), 41 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 5acee5cdd0..f08ca46af8 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Упълномощаване", "follow_request.reject": "Отхвърляне", "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.", + "follow_suggestions.curated_suggestion": "Избор на персонал", "follow_suggestions.dismiss": "Без ново показване", + "follow_suggestions.hints.featured": "Този профил е ръчно подбран от отбора на {domain}.", + "follow_suggestions.hints.friends_of_friends": "Този профил е популярен измежду хората, които следвате.", + "follow_suggestions.hints.most_followed": "Този профил е един от най-следваните при {domain}.", + "follow_suggestions.hints.most_interactions": "Този профил наскоро получи много внимание при {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Този профил е подобен на профилите, които сте последвали наскоро.", "follow_suggestions.personalized_suggestion": "Персонализирано предложение", "follow_suggestions.popular_suggestion": "Популярно предложение", "follow_suggestions.view_all": "Преглед на всички", @@ -470,7 +476,7 @@ "notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.", "notifications_permission_banner.enable": "Включване на известията на работния плот", "notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.", - "notifications_permission_banner.title": "Никога не пропускате нещо", + "notifications_permission_banner.title": "Никога не пропускайте нищо", "onboarding.action.back": "Върнете ме обратно", "onboarding.actions.back": "Върнете ме обратно", "onboarding.actions.go_to_explore": "Виж тенденции", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 8cbe4591d5..5ce52d527a 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -29,7 +29,7 @@ "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", "account.featured_tags.last_status_at": "Toud diwezhañ : {date}", - "account.featured_tags.last_status_never": "Toud ebet", + "account.featured_tags.last_status_never": "Embannadur ebet", "account.featured_tags.title": "Hashtagoù pennañ {name}", "account.follow": "Heuliañ", "account.follow_back": "Heuliañ d'ho tro", @@ -62,7 +62,7 @@ "account.requested_follow": "Gant {name} eo bet goulennet ho heuliañ", "account.share": "Skignañ profil @{name}", "account.show_reblogs": "Diskouez skignadennoù @{name}", - "account.statuses_counter": "{count, plural, one {{counter} Toud} two {{counter} Doud} other {{counter} a Doudoù}}", + "account.statuses_counter": "{count, plural, one {{counter} C'hannad} two {{counter} Gannad} other {{counter} a Gannadoù}}", "account.unblock": "Diverzañ @{name}", "account.unblock_domain": "Diverzañ an domani {domain}", "account.unblock_short": "Distankañ", @@ -118,9 +118,9 @@ "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", "column.notifications": "Kemennoù", - "column.pins": "Toudoù spilhennet", + "column.pins": "Embannadurioù spilhennet", "column.public": "Red-amzer kevredet", - "column_back_button.label": "Distro", + "column_back_button.label": "Distreiñ", "column_header.hide_settings": "Kuzhat an arventennoù", "column_header.moveLeft_settings": "Dilec'hiañ ar bannad a-gleiz", "column_header.moveRight_settings": "Dilec'hiañ ar bannad a-zehou", @@ -199,9 +199,9 @@ "embed.preview": "Setu penaos e teuio war wel :", "emoji_button.activity": "Obererezh", "emoji_button.clear": "Diverkañ", - "emoji_button.custom": "Kempennet", + "emoji_button.custom": "Personelaet", "emoji_button.flags": "Bannieloù", - "emoji_button.food": "Boued hag Evaj", + "emoji_button.food": "Boued & Evajoù", "emoji_button.label": "Enlakaat un emoji", "emoji_button.nature": "Natur", "emoji_button.not_found": "Emoji ebet !! (╯°□°)╯︵ ┻━┻", @@ -211,12 +211,12 @@ "emoji_button.search": "O klask...", "emoji_button.search_results": "Disoc'hoù an enklask", "emoji_button.symbols": "Arouezioù", - "emoji_button.travel": "Lec'hioù ha Beajoù", + "emoji_button.travel": "Beajiñ & Lec'hioù", "empty_column.account_suspended": "Kont ehanet", "empty_column.account_timeline": "Toud ebet amañ !", "empty_column.account_unavailable": "Profil dihegerz", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", - "empty_column.bookmarked_statuses": "N'ho peus toud ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", + "empty_column.bookmarked_statuses": "N'ho peus embannadur ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.", "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !", "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.", "empty_column.explore_statuses": "N'eus tuadur ebet evit c'hoazh. Distroit diwezhatoc'h !", @@ -260,6 +260,7 @@ "follow_request.authorize": "Aotren", "follow_request.reject": "Nac'hañ", "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.", + "follow_suggestions.view_all": "Gwelet pep tra", "followed_tags": "Hashtagoù o heuliañ", "footer.about": "Diwar-benn", "footer.directory": "Kavlec'h ar profiloù", @@ -267,7 +268,7 @@ "footer.invite": "Pediñ tud", "footer.keyboard_shortcuts": "Berradennoù klavier", "footer.privacy_policy": "Reolennoù prevezded", - "footer.source_code": "Gwelet kod mammenn", + "footer.source_code": "Gwelet ar c'hod mammenn", "footer.status": "Statud", "generic.saved": "Enrollet", "getting_started.heading": "Loc'hañ", @@ -295,7 +296,7 @@ "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev an toudoù a embann war ho red degemer.", "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ an toud-mañ evit rannañ anezhañ gant ho heulierien·ezed.", "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'an toud-mañ.", - "interaction_modal.no_account_yet": "N'eo ket war vMastodon?", + "interaction_modal.no_account_yet": "N'emañ ket war vMastodon?", "interaction_modal.on_another_server": "War ur servijer all", "interaction_modal.on_this_server": "War ar servijer-mañ", "interaction_modal.title.favourite": "Ouzhpennañ embannadur {name} d'ar re vuiañ-karet", @@ -463,7 +464,7 @@ "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.", "onboarding.steps.setup_profile.title": "Customize your profile", "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!", - "onboarding.steps.share_profile.title": "Share your profile", + "onboarding.steps.share_profile.title": "Rannit ho kont Mastodon", "password_confirmation.mismatching": "Disheñvel eo an daou c'her-termen-se", "picture_in_picture.restore": "Adlakaat", "poll.closed": "Serret", @@ -476,7 +477,8 @@ "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}", "poll_button.add_poll": "Ouzhpennañ ur sontadeg", "poll_button.remove_poll": "Dilemel ar sontadeg", - "privacy.change": "Cheñch prevezded an toud", + "privacy.change": "Cheñch prevezded an embannadur", + "privacy.direct.short": "Tud resis", "privacy.private.short": "Heulierien", "privacy.public.short": "Publik", "privacy_policy.last_updated": "Hizivadenn ziwezhañ {date}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index d50f38aa15..2345424728 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -279,8 +279,8 @@ "follow_requests.unlocked_explanation": "Tot i que el teu compte no està blocat, el personal de {domain} ha pensat que és possible que vulguis revisar manualment les sol·licituds de seguiment d’aquests comptes.", "follow_suggestions.curated_suggestion": "Tria de l'equip", "follow_suggestions.dismiss": "No ho tornis a mostrar", - "follow_suggestions.hints.featured": "Aquest perfil ha estat triat per l'equip de {domain}.", - "follow_suggestions.hints.friends_of_friends": "Aquest perfil és popular entre la gent que segueixes.", + "follow_suggestions.hints.featured": "L'equip de {domain} ha seleccionat aquest perfil.", + "follow_suggestions.hints.friends_of_friends": "Aquest perfil és popular entre la gent que seguiu.", "follow_suggestions.hints.most_followed": "Aquest perfil és un dels més seguits a {domain}.", "follow_suggestions.hints.most_interactions": "Aquest perfil ha estat rebent un munt d'atenció recentment a {domain}.", "follow_suggestions.hints.similar_to_recently_followed": "Aquest perfil és similar a d'altres que heu seguit recentment.", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 294cdde38f..0c1472dcad 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Awdurdodi", "follow_request.reject": "Gwrthod", "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, roedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.", + "follow_suggestions.curated_suggestion": "Dewis staff", "follow_suggestions.dismiss": "Peidio â dangos hwn eto", + "follow_suggestions.hints.featured": "Mae'r proffil hwn wedi'i ddewis yn arbennig gan dîm {domain}.", + "follow_suggestions.hints.friends_of_friends": "Mae'r proffil hwn yn boblogaidd ymhlith y bobl rydych chi'n eu dilyn.", + "follow_suggestions.hints.most_followed": "Mae'r proffil hwn yn un o'r rhai sy'n cael ei ddilyn fwyaf ar {domain}.", + "follow_suggestions.hints.most_interactions": "Mae'r proffil hwn wedi bod yn cael llawer o sylw yn ddiweddar ar {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Mae'r proffil hwn yn debyg i'r proffiliau rydych chi wedi'u dilyn yn fwyaf diweddar.", "follow_suggestions.personalized_suggestion": "Awgrym personol", "follow_suggestions.popular_suggestion": "Awgrym poblogaidd", "follow_suggestions.view_all": "Gweld y cyfan", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 9ee2cbca14..aa935e410e 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -277,9 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.featured": "Este perfil ha sido elegido a mano por el equipo de {domain}.", "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil ha estado recibiendo recientemente mucha atención en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil es similar a los perfiles que has seguido recientemente.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 5b5263b3f4..b3f8e744f1 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -277,9 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.", + "follow_suggestions.curated_suggestion": "Recomendaciones del equipo", "follow_suggestions.dismiss": "No mostrar de nuevo", + "follow_suggestions.hints.featured": "Este perfil ha sido elegido a mano por el equipo de {domain}.", "follow_suggestions.hints.friends_of_friends": "Este perfil es popular entre las personas que sigues.", "follow_suggestions.hints.most_followed": "Este perfil es uno de los más seguidos en {domain}.", + "follow_suggestions.hints.most_interactions": "Este perfil ha estado recibiendo recientemente mucha atención en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil es similar a los perfiles que has seguido recientemente.", "follow_suggestions.personalized_suggestion": "Sugerencia personalizada", "follow_suggestions.popular_suggestion": "Sugerencia popular", "follow_suggestions.view_all": "Ver todo", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1e83adf126..91b6870be7 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.", + "follow_suggestions.curated_suggestion": "Suxestións do Servidor", "follow_suggestions.dismiss": "Non mostrar máis", + "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}.", + "follow_suggestions.hints.most_interactions": "Este perfil tivo moitas interaccións últimamente en {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Este perfil ten semellanzas cos perfís que ti seguiches últimamente.", "follow_suggestions.personalized_suggestion": "Suxestión personalizada", "follow_suggestions.popular_suggestion": "Suxestión popular", "follow_suggestions.view_all": "Ver todas", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index ce72518145..e8c51791ee 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -269,6 +269,7 @@ "follow_request.authorize": "Autorizuoti", "follow_request.reject": "Atmesti", "follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo užklausas.", + "follow_suggestions.curated_suggestion": "Personalo pasirinkimai", "follow_suggestions.dismiss": "Daugiau nerodyti", "follow_suggestions.hints.friends_of_friends": "Šis profilis yra populiarus tarp žmonių, kuriuos sekei.", "follow_suggestions.hints.most_followed": "Šis profilis yra vienas iš labiausiai sekamų {domain}.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 5155b296f7..df04ded166 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -279,11 +279,11 @@ "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.", "follow_suggestions.curated_suggestion": "Speciaal geselecteerd", "follow_suggestions.dismiss": "Niet meer weergeven", - "follow_suggestions.hints.featured": "Dit profiel is geselecteerd door het team van {domain}.", - "follow_suggestions.hints.friends_of_friends": "Dit profiel is populair onder de mensen die jij volgt.", - "follow_suggestions.hints.most_followed": "Dit profiel is een van de meest gevolgde op {domain}.", - "follow_suggestions.hints.most_interactions": "Dit profiel heeft de laatste tijd veel aandacht gekregen op {domain}.", - "follow_suggestions.hints.similar_to_recently_followed": "Dit profiel is vergelijkbaar met de profielen die je recentelijk hebt gevolgd.", + "follow_suggestions.hints.featured": "Deze gebruiker is geselecteerd door het team van {domain}.", + "follow_suggestions.hints.friends_of_friends": "Deze gebruiker is populair onder de mensen die jij volgt.", + "follow_suggestions.hints.most_followed": "Deze gebruiker is een van de meest gevolgde gebruikers op {domain}.", + "follow_suggestions.hints.most_interactions": "Deze gebruiker is de laatste tijd erg populair op {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Deze gebruiker is vergelijkbaar met gebruikers die je recentelijk hebt gevolgd.", "follow_suggestions.personalized_suggestion": "Gepersonaliseerde aanbeveling", "follow_suggestions.popular_suggestion": "Populaire aanbeveling", "follow_suggestions.view_all": "Alles weergeven", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 7f4b833f31..9a4182e540 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -277,7 +277,13 @@ "follow_request.authorize": "Chấp nhận", "follow_request.reject": "Từ chối", "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.", + "follow_suggestions.curated_suggestion": "Gợi ý từ máy chủ", "follow_suggestions.dismiss": "Không hiện lại", + "follow_suggestions.hints.featured": "Người này được đội ngũ {domain} đề xuất.", + "follow_suggestions.hints.friends_of_friends": "Người này nổi tiếng với những người bạn theo dõi.", + "follow_suggestions.hints.most_followed": "Người này được theo dõi nhiều nhất trên {domain}.", + "follow_suggestions.hints.most_interactions": "Người này đang thu hút sự chú ý trên {domain}.", + "follow_suggestions.hints.similar_to_recently_followed": "Người này có nét giống những người mà bạn theo dõi gần đây.", "follow_suggestions.personalized_suggestion": "Gợi ý cá nhân hóa", "follow_suggestions.popular_suggestion": "Những người nổi tiếng", "follow_suggestions.view_all": "Xem tất cả", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 84c42a4aa2..3e714987c0 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -21,7 +21,7 @@ "account.blocked": "已屏蔽", "account.browse_more_on_origin_server": "在原始个人资料页面上浏览详情", "account.cancel_follow_request": "撤回关注请求", - "account.copy": "复制资料卡链接", + "account.copy": "复制个人资料链接", "account.direct": "私下提及 @{name}", "account.disable_notifications": "当 @{name} 发布嘟文时不要通知我", "account.domain_blocked": "域名已屏蔽", @@ -53,7 +53,7 @@ "account.mute_notifications_short": "关闭通知", "account.mute_short": "隐藏", "account.muted": "已隐藏", - "account.mutual": "互关", + "account.mutual": "互相关注", "account.no_bio": "未提供描述。", "account.open_original_page": "打开原始页面", "account.posts": "嘟文", @@ -277,13 +277,13 @@ "follow_request.authorize": "同意", "follow_request.reject": "拒绝", "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。", - "follow_suggestions.curated_suggestion": "管理员精选", + "follow_suggestions.curated_suggestion": "站务人员精选", "follow_suggestions.dismiss": "不再显示", - "follow_suggestions.hints.featured": "该个人资料已被 {domain} 管理团队精选。", - "follow_suggestions.hints.friends_of_friends": "该个人资料在您关注的人中很受欢迎。", - "follow_suggestions.hints.most_followed": "该个人资料是 {domain} 上关注度最高的个人资料之一。", - "follow_suggestions.hints.most_interactions": "该个人资料最近在 {domain} 上获得了很多关注。", - "follow_suggestions.hints.similar_to_recently_followed": "该个人资料与您最近关注的个人资料类似。", + "follow_suggestions.hints.featured": "该用户已被 {domain} 管理团队精选。", + "follow_suggestions.hints.friends_of_friends": "该用户在您关注的人中很受欢迎。", + "follow_suggestions.hints.most_followed": "该用户是 {domain} 上关注度最高的用户之一。", + "follow_suggestions.hints.most_interactions": "该用户最近在 {domain} 上获得了很多关注。", + "follow_suggestions.hints.similar_to_recently_followed": "该用户与您最近关注的用户类似。", "follow_suggestions.personalized_suggestion": "个性化建议", "follow_suggestions.popular_suggestion": "热门建议", "follow_suggestions.view_all": "查看全部", @@ -447,7 +447,7 @@ "notifications.column_settings.alert": "桌面通知", "notifications.column_settings.favourite": "喜欢:", "notifications.column_settings.filter_bar.advanced": "显示所有类别", - "notifications.column_settings.filter_bar.category": "快速过滤栏", + "notifications.column_settings.filter_bar.category": "快速筛选栏", "notifications.column_settings.filter_bar.show_bar": "显示过滤栏", "notifications.column_settings.follow": "新粉丝:", "notifications.column_settings.follow_request": "新关注请求:", diff --git a/config/locales/br.yml b/config/locales/br.yml index d20609a8ce..01c6db4ef5 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -3,6 +3,7 @@ br: about: contact_missing: Andermenet contact_unavailable: N'eus ket + hosted_on: Servijer Mastodon herberc'hiet war %{domain} title: Diwar-benn accounts: follow: Heuliañ @@ -135,6 +136,9 @@ br: disputes: appeals: title: Galvoù + domain_allows: + export: Ezporzhiañ + import: Enporzhiañ domain_blocks: domain: Domani new: @@ -151,6 +155,8 @@ br: domain: Domani new: create: Ouzhpenniñ un domani + export_domain_allows: + no_file: Restr ebet diuzet follow_recommendations: status: Statud suppressed: Dilamet @@ -265,10 +271,12 @@ br: delete_statuses: Dilamet eo bet toudoù %{target} gant %{name} trends: allow: Aotren + approved: Aprouet links: allow: Aotren al liamm preview_card_providers: title: Embannerien·ezed + rejected: Nac'het statuses: allow: Aotren ar c'hannad tags: @@ -297,6 +305,9 @@ br: title: Hashtagoù diouzh ar c'hiz appearance: discovery: Dizoloadur + localization: + body: Gant tud a-youl vat eo troet Mastodon. + guide_link: https://crowdin.com/project/mastodon application_mailer: view: 'Sellet :' view_status: Gwelet ar c'hannad @@ -373,10 +384,12 @@ br: title: Toudoù silet generic: all: Pep tra + changes_saved_msg: Enrollet eo bet ar cheñchamantoù gant berzh! copy: Eilañ delete: Dilemel none: Hini ebet order_by: Urzhiañ dre + save_changes: Enrollañ ar cheñchamantoù today: hiziv imports: modes: @@ -488,6 +501,7 @@ br: settings: account: Kont account_settings: Arventennoù ar gont + back: Distreiñ da vMastodon development: Diorren edit_profile: Kemmañ ar profil featured_tags: Hashtagoù pennañ @@ -521,13 +535,14 @@ br: '604800': 1 sizhunvezh '63113904': 2 vloavezh themes: - default: Mastodoñ (Teñval) - mastodon-light: Mastodoñ (Sklaer) + default: Mastodon (Teñval) + mastodon-light: Mastodon (Sklaer) time: formats: default: "%d a viz %b %Y, %H:%M" month: Miz %b %Y time: "%H:%M" + with_time_zone: "%d a viz %b %Y, %H:%M %Z" two_factor_authentication: add: Ouzhpennañ disable: Diweredekaat @@ -546,7 +561,7 @@ br: none: Diwall welcome: edit_profile_action: Kefluniañ ar profil - subject: Donemat e Mastodoñ + subject: Donemat e Mastodon title: Degemer mat e bourzh, %{name}! users: follow_limit_reached: N'hallit ket heulian muioc'h eget %{limit} a zen diff --git a/config/locales/devise.br.yml b/config/locales/devise.br.yml index 205e11e797..cb406e5f5e 100644 --- a/config/locales/devise.br.yml +++ b/config/locales/devise.br.yml @@ -19,7 +19,7 @@ br: mailer: confirmation_instructions: action: Gwiriekaat ar chomlec'h postel - action_with_app: Kadarnaat ha distroiñ da %{app} + action_with_app: Kadarnaat ha distreiñ da %{app} explanation: Krouet ho peus ur c'hont war %{host} gant ar chomlec'h-postel-mañ. N'eus nemet ur c'hlik evit bevaat anezhañ. Ma ne oa ket krouet ganeoc'h, dianavezit ar postel-se. explanation_when_pending: Enskrivañ ho peus d'ur c'hemennad da %{host} gant ar chomlec'h-postel-se. Pa vo kadarnaet ho chomlec'h-postel, hoc'h enskrivadur a vo asantet. Gallout a rit mont-tre evit kemmañ munudoù ho kont pe skarzhañ anezhañ, met ne c'hellit ket implijout ul lod eus an aezamantoù par ma n'eo ket asantet ho kont. Ma vefe hoc'h enskrivadur nac'het, ho keloù a vefe skarzhet, neuze ne vo ket ret deoc'h ober netra ken. Ma ne oa ket ac'hanoc'h, dianavezit ar postel-se. extra_html: Mar plij, gwiriit ivez reolennoù ar servijer ha hon divizoù-implij. diff --git a/config/locales/devise.es-MX.yml b/config/locales/devise.es-MX.yml index c4a7f319af..ac90412e85 100644 --- a/config/locales/devise.es-MX.yml +++ b/config/locales/devise.es-MX.yml @@ -12,6 +12,7 @@ es-MX: last_attempt: Tiene un intento más antes de que tu cuenta sea bloqueada. locked: Tu cuenta está bloqueada. not_found_in_database: Incorrecto %{authentication_keys} o contraseña. + omniauth_user_creation_failure: Error al crear una cuenta para esta identidad. pending: Su cuenta aun se encuentra bajo revisión. timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar. unauthenticated: Necesita iniciar sesión o registrarse antes de continuar. diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml index 642871710d..0d8fc0ac67 100644 --- a/config/locales/devise.es.yml +++ b/config/locales/devise.es.yml @@ -12,6 +12,7 @@ es: last_attempt: Tiene un intento más antes de que tu cuenta sea bloqueada. locked: Tu cuenta está bloqueada. not_found_in_database: Incorrecto %{authentication_keys} o contraseña. + omniauth_user_creation_failure: Error al crear una cuenta para esta identidad. pending: Su cuenta aun se encuentra bajo revisión. timeout: Tu sesión expiró. Por favor, inicia sesión nuevamente para continuar. unauthenticated: Necesitas iniciar sesión o registrarte antes de continuar. diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index 44a9a31839..2cd7cfa415 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -12,6 +12,7 @@ ja: last_attempt: あと1回失敗するとアカウントがロックされます。 locked: アカウントはロックされました。 not_found_in_database: "%{authentication_keys}かパスワードが誤っています。" + omniauth_user_creation_failure: 指定されたIDに対応するアカウントを作成できませんでした。 pending: あなたのアカウントはまだ承認待ちです。 timeout: セッションの有効期限が切れました。続行するには再度ログインしてください。 unauthenticated: 続行するにはログインするか、アカウントを作成してください。 diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml index 57ee4777c9..7564bc2dc6 100644 --- a/config/locales/doorkeeper.gl.yml +++ b/config/locales/doorkeeper.gl.yml @@ -151,9 +151,9 @@ gl: admin:read:accounts: ler información sensible de todas as contas admin:read:canonical_email_blocks: ler a información sensíbel de tódolos bloqueos de correos electrónicos canónicos admin:read:domain_allows: ler a información sensible de todos os dominios permitidos - admin:read:domain_blocks: ler a información sensible de tódolos bloqueos de dominio + admin:read:domain_blocks: ler a información sensible de todos os bloqueos de dominio admin:read:email_domain_blocks: ler a información sensible de tódolos dominios de correo electrónico - admin:read:ip_blocks: ler a información sensible de tódolos bloqueos de IP + admin:read:ip_blocks: ler a información sensible de todos os bloqueos de IP admin:read:reports: ler información sensible de todos os informes e contas denunciadas admin:write: modificar todos os datos no servidor admin:write:accounts: executar accións de moderación nas contas diff --git a/config/locales/simple_form.br.yml b/config/locales/simple_form.br.yml index 9e8aefad49..98a7e7e641 100644 --- a/config/locales/simple_form.br.yml +++ b/config/locales/simple_form.br.yml @@ -41,7 +41,7 @@ br: email: Chomlec'h postel expires_in: Mont war e dermen goude header: Talbenn - locale: Yezh ar c'hetal + locale: Yezh an etrefas new_password: Ger-tremen nevez note: Kinnig password: Ger-tremen @@ -49,6 +49,7 @@ br: setting_display_media_default: Dre ziouer setting_display_media_hide_all: Kuzhat pep tra setting_display_media_show_all: Diskouez pep tra + setting_theme: Neuz al lec'hienn setting_use_pending_items: Mod gorrek title: Titl username: Anv @@ -73,6 +74,7 @@ br: usable: Aotren an embannadurioù da implijout an hashtag-mañ user: role: Roll + time_zone: Gwerzhid eur user_role: name: Anv 'no': Ket diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index d1255bfefe..8ccf4c08b3 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -772,13 +772,13 @@ zh-CN: software_updates: critical_update: 紧急 — 请尽快更新 description: 建议您及时更新Mastodon实例,以便获得最新修复和功能。此外,为避免安全问题,有时候及时更新Mastodon是至关重要的。出于这些原因,Mastodon每30分钟检查一次更新,并根据您的电子邮件通知偏好向您发送通知。 - documentation_link: 了解详情 - release_notes: 更新日志 + documentation_link: 详细了解 + release_notes: 发行说明 title: 可用的更新 type: 类型 types: - major: 大版本更新 - minor: 小版本更新 + major: 重大更新 + minor: 次要更新 patch: 补丁级更新 - 修复了错误并进行了易于应用的更改 version: 版本 statuses: diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7fe60541e6..9e8044ebfc 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -779,7 +779,7 @@ zh-TW: title: 可取得的更新 type: 類型 types: - major: 主要版本更新 (major release) + major: 主要版本更新 minor: 次要版本更新 (minor release) patch: 修正版本 (patch release) — 錯誤修正及易於套用之變更 version: 版本 From 1f648fdf1ab0c709bce7974c3d2ec28a69351a42 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 21 Feb 2024 06:25:33 -0500 Subject: [PATCH 15/19] Remove erroneous service type on `TagFeed` model spec (#29302) --- spec/models/tag_feed_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/tag_feed_spec.rb b/spec/models/tag_feed_spec.rb index 6f5e1eb307..61b8d8d824 100644 --- a/spec/models/tag_feed_spec.rb +++ b/spec/models/tag_feed_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -describe TagFeed, type: :service do +describe TagFeed do describe '#get' do let(:account) { Fabricate(:account) } let(:tag_cats) { Fabricate(:tag, name: 'cats') } From 5f19e7e7993d90ef0de37c25f06122499469465a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 21 Feb 2024 11:57:45 -0500 Subject: [PATCH 16/19] Add basic coverage for `ProcessHashtagsService` class (#29320) --- spec/services/process_hashtags_service_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 spec/services/process_hashtags_service_spec.rb diff --git a/spec/services/process_hashtags_service_spec.rb b/spec/services/process_hashtags_service_spec.rb new file mode 100644 index 0000000000..a0d5ef3464 --- /dev/null +++ b/spec/services/process_hashtags_service_spec.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ProcessHashtagsService do + describe '#call' do + let(:status) { Fabricate(:status, visibility: :public, text: 'With tags #one #two') } + + it 'applies the tags from the status text' do + expect { subject.call(status) } + .to change(Tag, :count).by(2) + expect(status.reload.tags.map(&:name)) + .to contain_exactly('one', 'two') + end + end +end From b73932461f9251b39546f3a92b619ce3266680f6 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 21 Feb 2024 11:58:19 -0500 Subject: [PATCH 17/19] Add basic coverage for `CreateFeaturedTagService` class (#29321) --- .../create_featured_tag_service_spec.rb | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 spec/services/create_featured_tag_service_spec.rb diff --git a/spec/services/create_featured_tag_service_spec.rb b/spec/services/create_featured_tag_service_spec.rb new file mode 100644 index 0000000000..29a7c5b309 --- /dev/null +++ b/spec/services/create_featured_tag_service_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe CreateFeaturedTagService do + describe '#call' do + let(:tag) { 'test' } + + context 'with a local account' do + let(:account) { Fabricate(:account, domain: nil) } + + it 'creates a new featured tag and distributes' do + expect { subject.call(account, tag) } + .to change(FeaturedTag, :count).by(1) + expect(ActivityPub::AccountRawDistributionWorker) + .to have_enqueued_sidekiq_job(anything, account.id) + end + end + + context 'with a remote account' do + let(:account) { Fabricate(:account, domain: 'host.example') } + + it 'creates a new featured tag and does not distributes' do + expect { subject.call(account, tag) } + .to change(FeaturedTag, :count).by(1) + expect(ActivityPub::AccountRawDistributionWorker) + .to_not have_enqueued_sidekiq_job + end + end + end +end From 8f61e32569ca2ad68ec26b391c5c7f6ee6a333a8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 21 Feb 2024 12:12:31 -0500 Subject: [PATCH 18/19] Add basic coverage for `AppealService` class (#29322) --- spec/services/appeal_service_spec.rb | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 spec/services/appeal_service_spec.rb diff --git a/spec/services/appeal_service_spec.rb b/spec/services/appeal_service_spec.rb new file mode 100644 index 0000000000..10c0f148dc --- /dev/null +++ b/spec/services/appeal_service_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AppealService do + describe '#call' do + let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } + + context 'with an existing strike' do + let(:strike) { Fabricate(:account_warning) } + let(:text) { 'Appeal text' } + + it 'creates an appeal and notifies staff' do + emails = capture_emails { subject.call(strike, text) } + + expect(Appeal.last) + .to have_attributes( + strike: strike, + text: text, + account: strike.target_account + ) + + expect(emails.size) + .to eq(1) + + expect(emails.first) + .to have_attributes( + to: contain_exactly(admin.email), + subject: eq( + I18n.t( + 'admin_mailer.new_appeal.subject', + username: strike.target_account.acct, + instance: Rails.configuration.x.local_domain + ) + ) + ) + end + end + end +end From 08342ad40c1b92caf873282190efe8533a7d6e2e Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 21 Feb 2024 12:13:11 -0500 Subject: [PATCH 19/19] Add basic coverage for `AfterUnallowDomainService` class (#29324) --- .../after_unallow_domain_service_spec.rb | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 spec/services/after_unallow_domain_service_spec.rb diff --git a/spec/services/after_unallow_domain_service_spec.rb b/spec/services/after_unallow_domain_service_spec.rb new file mode 100644 index 0000000000..717c42b931 --- /dev/null +++ b/spec/services/after_unallow_domain_service_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AfterUnallowDomainService do + describe '#call' do + context 'with accounts for a domain' do + let!(:account) { Fabricate(:account, domain: 'host.example') } + let!(:test_account) { Fabricate(:account, domain: 'test.example') } + let(:service_double) { instance_double(DeleteAccountService, call: true) } + + before { allow(DeleteAccountService).to receive(:new).and_return(service_double) } + + it 'calls the delete service for accounts from the relevant domain' do + subject.call 'test.example' + + expect(service_double) + .to_not have_received(:call).with(account, reserve_username: false) + expect(service_double) + .to have_received(:call).with(test_account, reserve_username: false) + end + end + end +end